From 6cf3485d07db7fb3a97b5b90a6801e4404117f28 Mon Sep 17 00:00:00 2001 From: Austin Date: Tue, 7 Jan 2025 18:16:56 -0500 Subject: [PATCH 1/5] meshtasticd-debian: Fix versioning compliance, add OBS (#5785) --- .github/workflows/build_debian_src.yml | 8 +- .github/workflows/nightly.yml | 10 --- .github/workflows/nightly_debian.yml | 37 +++++++++ .github/workflows/package_obs.yml | 103 +++++++++++++++++++++++++ .github/workflows/package_ppa.yml | 6 +- .github/workflows/release_channels.yml | 9 ++- bin/readprops.py | 9 ++- debian/changelog | 2 +- debian/ci_changelog.sh | 2 +- 9 files changed, 166 insertions(+), 20 deletions(-) create mode 100644 .github/workflows/nightly_debian.yml create mode 100644 .github/workflows/package_obs.yml diff --git a/.github/workflows/build_debian_src.yml b/.github/workflows/build_debian_src.yml index b2fcb5262..714542047 100644 --- a/.github/workflows/build_debian_src.yml +++ b/.github/workflows/build_debian_src.yml @@ -7,7 +7,11 @@ on: required: true inputs: series: - description: Ubuntu series to target + description: Ubuntu/Debian series to target + required: true + type: string + build_location: + description: Location where build will execute required: true type: string @@ -47,6 +51,8 @@ jobs: working-directory: meshtasticd run: | echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT + env: + BUILD_LOCATION: ${{ inputs.build_location }} id: version - name: Fetch libdeps, package debian source diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index b7cf4bfc6..e249823a7 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -17,13 +17,3 @@ jobs: uses: trunk-io/trunk-action@782e83f803ca6e369f035d64c6ba2768174ba61b with: trunk-token: ${{ secrets.TRUNK_TOKEN }} - package-ppa: - strategy: - fail-fast: false - matrix: - series: [plucky, oracular, noble, jammy] - uses: ./.github/workflows/package_ppa.yml - with: - ppa_repo: daily - series: ${{ matrix.series }} - secrets: inherit diff --git a/.github/workflows/nightly_debian.yml b/.github/workflows/nightly_debian.yml new file mode 100644 index 000000000..63d977beb --- /dev/null +++ b/.github/workflows/nightly_debian.yml @@ -0,0 +1,37 @@ +name: Nightly Debian Packaging +on: + schedule: + - cron: 0 9 * * * + workflow_dispatch: + push: + branches: + - master + paths: + - debian/** + - .github/workflows/nightly_debian.yml + - .github/workflows/build_debian_src.yml + - .github/workflows/package_ppa.yml + - .github/workflows/package_obs.yml + +permissions: + contents: write + packages: write + +jobs: + package-ppa: + strategy: + fail-fast: false + matrix: + series: [plucky, oracular, noble, jammy] + uses: ./.github/workflows/package_ppa.yml + with: + ppa_repo: daily + series: ${{ matrix.series }} + secrets: inherit + + package-obs: + uses: ./.github/workflows/package_obs.yml + with: + obs_repo: meshtasticd + series: unstable + secrets: inherit diff --git a/.github/workflows/package_obs.yml b/.github/workflows/package_obs.yml new file mode 100644 index 000000000..11f2b87bf --- /dev/null +++ b/.github/workflows/package_obs.yml @@ -0,0 +1,103 @@ +name: Package for OpenSUSE Build Service + +on: + workflow_call: + secrets: + PPA_GPG_PRIVATE_KEY: + required: true + inputs: + obs_repo: + description: Meshtastic OBS repo to target + required: true + type: string + series: + description: Debian series to target + required: true + type: string + +permissions: + contents: write + packages: write + +jobs: + build-debian-src: + uses: ./.github/workflows/build_debian_src.yml + secrets: inherit + with: + series: ${{ inputs.series }} + build_location: obs + + package-obs: + runs-on: ubuntu-24.04 + needs: build-debian-src + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + path: meshtasticd + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - name: Install OpenSUSE Build Service deps + shell: bash + run: | + echo 'deb http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/openSUSE:Tools.list + curl -fsSL https://download.opensuse.org/repositories/openSUSE:Tools/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/openSUSE_Tools.gpg > /dev/null + sudo apt-get update -y --fix-missing + sudo apt-get install -y osc + + - name: Get release version string + working-directory: meshtasticd + run: | + echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT + env: + BUILD_LOCATION: obs + id: version + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src + merge-multiple: true + + - name: Display structure of downloaded files + run: ls -lah + + # - name: Configure osc + # shell: bash + # env: + # OBS_USERNAME: ${{ secrets.OBS_USERNAME }} + # OBS_PASSWORD: ${{ secrets.OBS_PASSWORD }} + # run: | + # mkdir -p ~/.config/osc + # echo -e "[https://api.opensuse.org]\n" > ~/.config/osc/oscrc + # echo -e "user = $OBS_USERNAME" >> ~/.config/osc/oscrc + # echo -e "pass = $OBS_PASSWORD" >> ~/.config/osc/oscrc + # echo -e "aliases = obs" >> ~/.config/osc/oscrc + # # Authenticate to OBS + # osc meta prj -v + + # - name: Upload Package to OBS + # shell: bash + # run: | + # # Define your OBS project and repository + # OBS_PROJECT="application:meshtastic" + # OBS_REPO="${{ inputs.obs_repo }}" + + # # Create a temporary directory for osc + # mkdir -p /tmp/osc/$OBS_PROJECT/$OBS_REPO + # cd /tmp/osc/$OBS_PROJECT/$OBS_REPO + + # # Initialize the package directory + # osc checkout $OBS_PROJECT $OBS_REPO + + # # Copy package files to the osc directory + # cp $GITHUB_WORKSPACE/*.dsc . + # cp $GITHUB_WORKSPACE/*.tar.xz . + + # # Add files to osc + # osc addremove + + # # Commit and push the changes + # osc commit -m "Automated upload from GitHub Actions" diff --git a/.github/workflows/package_ppa.yml b/.github/workflows/package_ppa.yml index 5705c6d49..340087d1d 100644 --- a/.github/workflows/package_ppa.yml +++ b/.github/workflows/package_ppa.yml @@ -1,4 +1,4 @@ -name: Package Launchpad PPA +name: Package for Launchpad PPA on: workflow_call: @@ -14,7 +14,6 @@ on: description: Ubuntu series to target required: true type: string - workflow_dispatch: permissions: contents: write @@ -26,6 +25,7 @@ jobs: secrets: inherit with: series: ${{ inputs.series }} + build_location: ppa package-ppa: runs-on: ubuntu-24.04 @@ -55,6 +55,8 @@ jobs: working-directory: meshtasticd run: | echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT + env: + BUILD_LOCATION: ppa id: version - name: Download artifacts diff --git a/.github/workflows/release_channels.yml b/.github/workflows/release_channels.yml index d572568de..cdde74b2e 100644 --- a/.github/workflows/release_channels.yml +++ b/.github/workflows/release_channels.yml @@ -2,7 +2,7 @@ name: Trigger release workflows upon Publish on: release: - types: [published] + types: [published, released] permissions: read-all @@ -18,3 +18,10 @@ jobs: ${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }} series: ${{ matrix.series }} secrets: inherit + + # package-obs: + # uses: ./.github/workflows/package_obs.yml + # with: + # obs_repo: meshtasticd + # series: ${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }} + # secrets: inherit diff --git a/bin/readprops.py b/bin/readprops.py index 8a1d3dc47..731a3d0d3 100644 --- a/bin/readprops.py +++ b/bin/readprops.py @@ -2,6 +2,7 @@ import configparser import subprocess import os run_number = os.getenv('GITHUB_RUN_NUMBER', '0') +build_location = os.getenv('BUILD_LOCATION', 'local') def readProps(prefsLoc): """Read the version of our project as a string""" @@ -11,8 +12,8 @@ def readProps(prefsLoc): version = dict(config.items("VERSION")) verObj = dict( short="{}.{}.{}".format(version["major"], version["minor"], version["build"]), - deb="unset", long="unset", + deb="unset", ) # Try to find current build SHA if if the workspace is clean. This could fail if git is not installed @@ -30,15 +31,15 @@ def readProps(prefsLoc): # # short for 'dirty', we want to keep our verstrings source for protobuf reasons # suffix = sha + "-d" verObj["long"] = "{}.{}".format(verObj["short"], suffix) - verObj["deb"] = "{}-{}~ppa{}".format(verObj["short"], run_number, sha) + verObj["deb"] = "{}.{}~{}{}".format(verObj["short"], run_number, build_location, sha) except: # print("Unexpected error:", sys.exc_info()[0]) # traceback.print_exc() verObj["long"] = verObj["short"] - verObj["deb"] = "{}-{}~ppa".format(verObj["short"], run_number) + verObj["deb"] = "{}.{}~{}".format(verObj["short"], run_number, build_location) # print("firmware version " + verStr) return verObj -# print("path is" + ','.join(sys.path)) +# print("path is" + ','.join(sys.path)) \ No newline at end of file diff --git a/debian/changelog b/debian/changelog index 79c444aca..035d5f034 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -meshtasticd (2.5.19) UNRELEASED; urgency=medium +meshtasticd (2.5.19.0) UNRELEASED; urgency=medium * Initial packaging diff --git a/debian/ci_changelog.sh b/debian/ci_changelog.sh index 7925ad5eb..f7e875977 100755 --- a/debian/ci_changelog.sh +++ b/debian/ci_changelog.sh @@ -2,6 +2,6 @@ export DEBEMAIL="github-actions[bot]@users.noreply.github.com" PKG_VERSION=$(python3 bin/buildinfo.py short) -dch --newversion "$PKG_VERSION-1" \ +dch --newversion "$PKG_VERSION.0" \ --distribution UNRELEASED \ "GitHub Actions Automatic version bump" From 33e5a04508b37e2b430d84b74a38f48abb2336f5 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 7 Jan 2025 20:02:47 -0600 Subject: [PATCH 2/5] Don't update to the latest ref on non-master branches --- .github/workflows/update_protobufs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/update_protobufs.yml b/.github/workflows/update_protobufs.yml index 2732ab760..e7b3c1f40 100644 --- a/.github/workflows/update_protobufs.yml +++ b/.github/workflows/update_protobufs.yml @@ -12,6 +12,7 @@ jobs: submodules: true - name: Update submodule + if: ${{ github.ref == 'refs/heads/master' }} run: | git submodule update --remote protobufs From 8aac9f2e8ec14c95c90c975c4d36aacda99aa591 Mon Sep 17 00:00:00 2001 From: Austin Date: Wed, 8 Jan 2025 21:43:24 -0500 Subject: [PATCH 3/5] GH Actions: Update `Release` action, clarify versioning (#5794) --- .github/actions/build-variant/action.yml | 4 +- .github/workflows/build_docker.yml | 4 +- .github/workflows/build_native.yml | 4 +- .github/workflows/build_raspbian.yml | 4 +- .github/workflows/build_raspbian_armv7l.yml | 4 +- .github/workflows/main_matrix.yml | 97 ++++++------------- .github/workflows/package_amd64.yml | 8 +- .github/workflows/package_raspbian.yml | 8 +- .github/workflows/package_raspbian_armv7l.yml | 8 +- .github/workflows/test_native.yml | 18 ++-- .github/workflows/trunk_format_pr.yml | 6 +- 11 files changed, 67 insertions(+), 98 deletions(-) diff --git a/.github/actions/build-variant/action.yml b/.github/actions/build-variant/action.yml index b3303d393..d003459d6 100644 --- a/.github/actions/build-variant/action.yml +++ b/.github/actions/build-variant/action.yml @@ -83,13 +83,13 @@ runs: - name: Get release version string shell: bash - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Store binaries as an artifact uses: actions/upload-artifact@v4 with: - name: firmware-${{ inputs.arch }}-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip + name: firmware-${{ inputs.arch }}-${{ inputs.board }}-${{ steps.version.outputs.long }}.zip overwrite: true path: | ${{ inputs.artifact-paths }} diff --git a/.github/workflows/build_docker.yml b/.github/workflows/build_docker.yml index 13817a8cf..18787f16a 100644 --- a/.github/workflows/build_docker.yml +++ b/.github/workflows/build_docker.yml @@ -18,7 +18,7 @@ jobs: repository: ${{github.event.pull_request.head.repo.full_name}} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Docker login @@ -39,7 +39,7 @@ jobs: context: . file: ./Dockerfile push: true - tags: meshtastic/meshtasticd:${{ steps.version.outputs.version }} + tags: meshtastic/meshtasticd:${{ steps.version.outputs.long }} - name: Docker build and push if: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }} diff --git a/.github/workflows/build_native.yml b/.github/workflows/build_native.yml index 11ba09ad7..cca839328 100644 --- a/.github/workflows/build_native.yml +++ b/.github/workflows/build_native.yml @@ -25,13 +25,13 @@ jobs: run: bin/build-native.sh - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Store binaries as an artifact uses: actions/upload-artifact@v4 with: - name: firmware-native-${{ steps.version.outputs.version }}.zip + name: firmware-native-${{ steps.version.outputs.long }}.zip overwrite: true path: | release/meshtasticd_linux_x86_64 diff --git a/.github/workflows/build_raspbian.yml b/.github/workflows/build_raspbian.yml index ac63dfea4..646c6c9f3 100644 --- a/.github/workflows/build_raspbian.yml +++ b/.github/workflows/build_raspbian.yml @@ -39,13 +39,13 @@ jobs: run: bin/build-native.sh - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Store binaries as an artifact uses: actions/upload-artifact@v4 with: - name: firmware-raspbian-${{ steps.version.outputs.version }}.zip + name: firmware-raspbian-${{ steps.version.outputs.long }}.zip overwrite: true path: | release/meshtasticd_linux_aarch64 diff --git a/.github/workflows/build_raspbian_armv7l.yml b/.github/workflows/build_raspbian_armv7l.yml index 565d9a0dc..21b1aea79 100644 --- a/.github/workflows/build_raspbian_armv7l.yml +++ b/.github/workflows/build_raspbian_armv7l.yml @@ -39,13 +39,13 @@ jobs: run: bin/build-native.sh - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Store binaries as an artifact uses: actions/upload-artifact@v4 with: - name: firmware-raspbian-armv7l-${{ steps.version.outputs.version }}.zip + name: firmware-raspbian-armv7l-${{ steps.version.outputs.long }}.zip overwrite: true path: | release/meshtasticd_linux_armv7l diff --git a/.github/workflows/main_matrix.yml b/.github/workflows/main_matrix.yml index 267e34a94..20ffecb76 100644 --- a/.github/workflows/main_matrix.yml +++ b/.github/workflows/main_matrix.yml @@ -192,7 +192,7 @@ jobs: run: ls -R - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Move files up @@ -201,7 +201,7 @@ jobs: - name: Repackage in single firmware zip uses: actions/upload-artifact@v4 with: - name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }} + name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }} overwrite: true path: | ./firmware-*.bin @@ -218,7 +218,7 @@ jobs: - uses: actions/download-artifact@v4 with: - name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }} + name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }} merge-multiple: true path: ./output @@ -232,12 +232,12 @@ jobs: chmod +x ./output/device-update.sh - name: Zip firmware - run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip ./output + run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./output - name: Repackage in single elfs zip uses: actions/upload-artifact@v4 with: - name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip + name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip overwrite: true path: ./*.elf retention-days: 30 @@ -245,8 +245,8 @@ jobs: - uses: scruplelesswizard/comment-artifact@main if: ${{ github.event_name == 'pull_request' }} with: - name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }} - description: "Download firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip. This artifact will be available for 90 days from creation" + name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }} + description: "Download firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip. This artifact will be available for 90 days from creation" github-token: ${{ secrets.GITHUB_TOKEN }} release-artifacts: @@ -271,26 +271,24 @@ jobs: python-version: 3.x - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Create release - uses: actions/create-release@v1 + uses: softprops/action-gh-release@v2 id: create_release with: draft: true prerelease: true - release_name: Meshtastic Firmware ${{ steps.version.outputs.version }} Alpha - tag_name: v${{ steps.version.outputs.version }} + name: Meshtastic Firmware ${{ steps.version.outputs.long }} Alpha + tag_name: v${{ steps.version.outputs.long }} body: | Autogenerated by github action, developer should edit as required before publishing... - env: - GITHUB_TOKEN: ${{ github.token }} - name: Download deb files uses: actions/download-artifact@v4 with: - pattern: meshtasticd_${{ steps.version.outputs.version }}_*.deb + pattern: meshtasticd_${{ steps.version.outputs.long }}_*.deb merge-multiple: true path: ./output @@ -298,35 +296,14 @@ jobs: - name: Display structure of downloaded files run: ls -lR - - name: Add raspbian aarch64 .deb - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} + - name: Add deb files to release + uses: softprops/action-gh-release@v2 with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./output/meshtasticd_${{ steps.version.outputs.version }}_arm64.deb - asset_name: meshtasticd_${{ steps.version.outputs.version }}_arm64.deb - asset_content_type: application/vnd.debian.binary-package - - - name: Add raspbian armv7l .deb - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./output/meshtasticd_${{ steps.version.outputs.version }}_armhf.deb - asset_name: meshtasticd_${{ steps.version.outputs.version }}_armhf.deb - asset_content_type: application/vnd.debian.binary-package - - - name: Add raspbian amd64 .deb - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./output/meshtasticd_${{ steps.version.outputs.version }}_amd64.deb - asset_name: meshtasticd_${{ steps.version.outputs.version }}_amd64.deb - asset_content_type: application/vnd.debian.binary-package + tag_name: v${{ steps.version.outputs.long }} + files: | + ./output/meshtasticd_${{ steps.version.outputs.long }}_arm64.deb + ./output/meshtasticd_${{ steps.version.outputs.long }}_armhf.deb + ./output/meshtasticd_${{ steps.version.outputs.long }}_amd64.deb - name: Bump version.properties run: >- @@ -362,12 +339,12 @@ jobs: python-version: 3.x - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - uses: actions/download-artifact@v4 with: - pattern: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }} + pattern: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }} merge-multiple: true path: ./output @@ -380,37 +357,25 @@ jobs: chmod +x ./output/device-update.sh - name: Zip firmware - run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip ./output + run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./output - uses: actions/download-artifact@v4 with: - name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip + name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip merge-multiple: true path: ./elfs - - name: Zip firmware - run: zip -j -9 -r ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip ./elfs + - name: Zip debug elfs + run: zip -j -9 -r ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./elfs # For diagnostics - name: Display structure of downloaded files run: ls -lR - - name: Add bins to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} + - name: Add bins and debug elfs to release + uses: softprops/action-gh-release@v2 with: - upload_url: ${{needs.release-artifacts.outputs.upload_url}} - asset_path: ./firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip - asset_name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip - asset_content_type: application/zip - - - name: Add debug elfs to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{needs.release-artifacts.outputs.upload_url}} - asset_path: ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip - asset_name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip - asset_content_type: application/zip + tag_name: v${{ steps.version.outputs.long }} + files: | + ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip + ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip diff --git a/.github/workflows/package_amd64.yml b/.github/workflows/package_amd64.yml index c6e82e1be..d9f041736 100644 --- a/.github/workflows/package_amd64.yml +++ b/.github/workflows/package_amd64.yml @@ -32,13 +32,13 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Download artifacts uses: actions/download-artifact@v4 with: - name: firmware-native-${{ steps.version.outputs.version }}.zip + name: firmware-native-${{ steps.version.outputs.long }}.zip merge-multiple: true - name: Display structure of downloaded files @@ -77,14 +77,14 @@ jobs: package: meshtasticd package_root: .debpkg maintainer: Jonathan Bennett - version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.* + version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.* arch: amd64 depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0 desc: Native Linux Meshtastic binary. - uses: actions/upload-artifact@v4 with: - name: meshtasticd_${{ steps.version.outputs.version }}_amd64.deb + name: meshtasticd_${{ steps.version.outputs.long }}_amd64.deb overwrite: true path: | ./*.deb diff --git a/.github/workflows/package_raspbian.yml b/.github/workflows/package_raspbian.yml index a4cd49573..62613f85f 100644 --- a/.github/workflows/package_raspbian.yml +++ b/.github/workflows/package_raspbian.yml @@ -32,13 +32,13 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Download artifacts uses: actions/download-artifact@v4 with: - name: firmware-raspbian-${{ steps.version.outputs.version }}.zip + name: firmware-raspbian-${{ steps.version.outputs.long }}.zip merge-multiple: true - name: Display structure of downloaded files @@ -77,14 +77,14 @@ jobs: package: meshtasticd package_root: .debpkg maintainer: Jonathan Bennett - version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.* + version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.* arch: arm64 depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0 desc: Native Linux Meshtastic binary. - uses: actions/upload-artifact@v4 with: - name: meshtasticd_${{ steps.version.outputs.version }}_arm64.deb + name: meshtasticd_${{ steps.version.outputs.long }}_arm64.deb overwrite: true path: | ./*.deb diff --git a/.github/workflows/package_raspbian_armv7l.yml b/.github/workflows/package_raspbian_armv7l.yml index c4cc5c673..8a9df1710 100644 --- a/.github/workflows/package_raspbian_armv7l.yml +++ b/.github/workflows/package_raspbian_armv7l.yml @@ -32,13 +32,13 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Download artifacts uses: actions/download-artifact@v4 with: - name: firmware-raspbian-armv7l-${{ steps.version.outputs.version }}.zip + name: firmware-raspbian-armv7l-${{ steps.version.outputs.long }}.zip merge-multiple: true - name: Display structure of downloaded files @@ -77,14 +77,14 @@ jobs: package: meshtasticd package_root: .debpkg maintainer: Jonathan Bennett - version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.* + version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.* arch: armhf depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0 desc: Native Linux Meshtastic binary. - uses: actions/upload-artifact@v4 with: - name: meshtasticd_${{ steps.version.outputs.version }}_armhf.deb + name: meshtasticd_${{ steps.version.outputs.long }}_armhf.deb overwrite: true path: | ./*.deb diff --git a/.github/workflows/test_native.yml b/.github/workflows/test_native.yml index d016635ef..8e8ff68e4 100644 --- a/.github/workflows/test_native.yml +++ b/.github/workflows/test_native.yml @@ -55,14 +55,14 @@ jobs: - name: Get release version string if: always() # run this step even if previous step failed - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Save coverage information uses: actions/upload-artifact@v4 if: always() # run this step even if previous step failed with: - name: lcov-coverage-info-native-simulator-test-${{ steps.version.outputs.version }}.zip + name: lcov-coverage-info-native-simulator-test-${{ steps.version.outputs.long }}.zip overwrite: true path: ./coverage_*.info @@ -81,7 +81,7 @@ jobs: uses: ./.github/actions/setup-native - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version # Disable (comment-out) BUILD_EPOCH. It causes a full rebuild between tests and resets the @@ -96,7 +96,7 @@ jobs: if: always() # run this step even if previous step failed uses: actions/upload-artifact@v4 with: - name: platformio-test-report-${{ steps.version.outputs.version }}.zip + name: platformio-test-report-${{ steps.version.outputs.long }}.zip overwrite: true path: ./testreport.xml @@ -111,7 +111,7 @@ jobs: uses: actions/upload-artifact@v4 if: always() # run this step even if previous step failed with: - name: lcov-coverage-info-native-platformio-tests-${{ steps.version.outputs.version }}.zip + name: lcov-coverage-info-native-platformio-tests-${{ steps.version.outputs.long }}.zip overwrite: true path: ./coverage_*.info @@ -133,13 +133,13 @@ jobs: repository: ${{github.event.pull_request.head.repo.full_name}} - name: Get release version string - run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT id: version - name: Download test artifacts uses: actions/download-artifact@v4 with: - name: platformio-test-report-${{ steps.version.outputs.version }}.zip + name: platformio-test-report-${{ steps.version.outputs.long }}.zip merge-multiple: true - name: Test Report @@ -152,7 +152,7 @@ jobs: - name: Download coverage artifacts uses: actions/download-artifact@v4 with: - pattern: lcov-coverage-info-native-*-${{ steps.version.outputs.version }}.zip + pattern: lcov-coverage-info-native-*-${{ steps.version.outputs.long }}.zip path: code-coverage-report merge-multiple: true @@ -165,5 +165,5 @@ jobs: - name: Save Code Coverage Report uses: actions/upload-artifact@v4 with: - name: code-coverage-report-${{ steps.version.outputs.version }}.zip + name: code-coverage-report-${{ steps.version.outputs.long }}.zip path: code-coverage-report diff --git a/.github/workflows/trunk_format_pr.yml b/.github/workflows/trunk_format_pr.yml index c5c20b465..0d6eb6041 100644 --- a/.github/workflows/trunk_format_pr.yml +++ b/.github/workflows/trunk_format_pr.yml @@ -22,12 +22,16 @@ jobs: - name: Run Trunk Fmt run: trunk fmt + - name: Get release version string + run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + id: version + - name: Commit and push changes run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git add . - git commit -m "Add firmware version ${{ steps.version.outputs.version }}" + git commit -m "Add firmware version ${{ steps.version.outputs.long }}" git push - name: Comment on PR From 1d756ae574101b2a6372fedbfe8f9bd2b6d0dcdf Mon Sep 17 00:00:00 2001 From: Eric Severance Date: Thu, 9 Jan 2025 16:25:25 -0800 Subject: [PATCH 4/5] Fix potential memory leak in AtakPluginModule (#5803) --- src/modules/AtakPluginModule.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/AtakPluginModule.cpp b/src/modules/AtakPluginModule.cpp index d242e5501..a51ef54c3 100644 --- a/src/modules/AtakPluginModule.cpp +++ b/src/modules/AtakPluginModule.cpp @@ -131,7 +131,6 @@ void AtakPluginModule::alterReceivedProtobuf(meshtastic_MeshPacket &mp, meshtast } // Decompress for Phone (EUD) - auto decompressedCopy = packetPool.allocCopy(mp); auto uncompressed = cloneTAKPacketData(t); uncompressed.is_compressed = false; if (t->has_contact) { @@ -188,6 +187,7 @@ void AtakPluginModule::alterReceivedProtobuf(meshtastic_MeshPacket &mp, meshtast LOG_DEBUG("Decompressed chat to_callsign: %d bytes", length); } } + auto decompressedCopy = packetPool.allocCopy(mp); decompressedCopy->decoded.payload.size = pb_encode_to_bytes(decompressedCopy->decoded.payload.bytes, sizeof(decompressedCopy->decoded.payload), meshtastic_TAKPacket_fields, &uncompressed); From 2e44de262e2be2fcdb8a11044a47099dc8799ba4 Mon Sep 17 00:00:00 2001 From: Bernd Giesecke Date: Fri, 10 Jan 2025 09:20:38 +0800 Subject: [PATCH 5/5] Add GPS capability to RAK2560 (RAKwireless WisMesh Hub) (#5797) * Add GPS to RAK2560 * Add GPS to RAK2560 --- src/gps/GPS.cpp | 4 ++++ variants/rak2560/platformio.ini | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gps/GPS.cpp b/src/gps/GPS.cpp index e88e774bd..863f956cf 100644 --- a/src/gps/GPS.cpp +++ b/src/gps/GPS.cpp @@ -35,7 +35,11 @@ template std::size_t array_count(const T (&)[N]) } #if defined(NRF52840_XXAA) || defined(NRF52833_XXAA) || defined(ARCH_ESP32) || defined(ARCH_PORTDUINO) +#if defined(RAK2560) +HardwareSerial *GPS::_serial_gps = &Serial2; +#else HardwareSerial *GPS::_serial_gps = &Serial1; +#endif #elif defined(ARCH_RP2040) SerialUART *GPS::_serial_gps = &Serial1; #else diff --git a/variants/rak2560/platformio.ini b/variants/rak2560/platformio.ini index 93c7acf71..96c1bfa92 100644 --- a/variants/rak2560/platformio.ini +++ b/variants/rak2560/platformio.ini @@ -6,7 +6,6 @@ board_check = true build_flags = ${nrf52840_base.build_flags} -Ivariants/rak2560 -D RAK_4631 -L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m4/fpv4-sp-d16-hard" -DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely. - -DMESHTASTIC_EXCLUDE_GPS=1 -DHAS_RAKPROT=1 ; Define if RAk OneWireSerial is used (disables GPS) build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak2560> + + + lib_deps =