From 7bbe2011576cec2f4b9e28f4447c6c198143e3a2 Mon Sep 17 00:00:00 2001 From: vidplace7 Date: Sun, 5 Jan 2025 06:31:16 -0500 Subject: [PATCH] meshtasticd debian: split libs for PPA --- .github/workflows/build_debian_src.yml | 41 ++++++++++++++ .github/workflows/main_matrix.yml | 8 +++ .github/workflows/package_ppa.yml | 54 +++++++++++++++++++ .gitignore | 1 + .../{update_changelog.sh => ci_changelog.sh} | 1 + debian/ci_pack_sdeb.sh | 9 ++++ debian/control | 5 +- debian/rules | 15 +++--- debian/source/include-binaries | 2 + debian/source/options | 1 + 10 files changed, 128 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/build_debian_src.yml create mode 100644 .github/workflows/package_ppa.yml rename debian/{update_changelog.sh => ci_changelog.sh} (99%) mode change 100644 => 100755 create mode 100755 debian/ci_pack_sdeb.sh create mode 100644 debian/source/include-binaries create mode 100644 debian/source/options diff --git a/.github/workflows/build_debian_src.yml b/.github/workflows/build_debian_src.yml new file mode 100644 index 0000000000..59e9258381 --- /dev/null +++ b/.github/workflows/build_debian_src.yml @@ -0,0 +1,41 @@ +name: Build Debian Source Package + +on: workflow_call + +permissions: + contents: write + packages: write + +jobs: + build-debian-src: + runs-on: ubuntu-24.04 + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - name: Install deps + shell: bash + run: | + sudo apt-get update -y --fix-missing + sudo apt-get install -y devscripts equivs + + - name: Fetch libdeps, package debian source + run: debian/ci_pack_sdeb.sh + + - name: Get release version string + run: | + echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + echo "short=$(./bin/buildinfo.py short)" >> $GITHUB_OUTPUT + id: version + + - name: Store binaries as an artifact + uses: actions/upload-artifact@v4 + with: + name: firmware-debian-${{ steps.version.outputs.long }}-src.zip + overwrite: true + path: | + ../meshtasticd_${{ steps.version.outputs.short }}* diff --git a/.github/workflows/main_matrix.yml b/.github/workflows/main_matrix.yml index a437411b54..9685ff91fc 100644 --- a/.github/workflows/main_matrix.yml +++ b/.github/workflows/main_matrix.yml @@ -128,6 +128,9 @@ jobs: with: board: ${{ matrix.board }} + package-ppa: + uses: ./.github/workflows/package_ppa.yml + package-raspbian: uses: ./.github/workflows/package_raspbian.yml @@ -332,12 +335,17 @@ jobs: run: >- bin/bump_version.py + - name: Update debian changelog + run: >- + debian/ci_changelog.sh + - name: Create version.properties pull request uses: peter-evans/create-pull-request@v7 with: title: Bump version.properties add-paths: | version.properties + debian/changelog release-firmware: strategy: diff --git a/.github/workflows/package_ppa.yml b/.github/workflows/package_ppa.yml new file mode 100644 index 0000000000..12c9eadd02 --- /dev/null +++ b/.github/workflows/package_ppa.yml @@ -0,0 +1,54 @@ +name: Package Launchpad PPA + +on: + workflow_call: + workflow_dispatch: + +permissions: + contents: write + packages: write + +jobs: + build-debian-src: + uses: ./.github/workflows/build_debian_src.yml + + package-ppa: + runs-on: ubuntu-24.04 + needs: build-debian-src + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{github.event.pull_request.head.ref}} + repository: ${{github.event.pull_request.head.repo.full_name}} + + - name: Get release version string + run: | + echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT + echo "short=$(./bin/buildinfo.py short)" >> $GITHUB_OUTPUT + id: version + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: firmware-debian-${{ steps.version.outputs.long }}-src.zip + merge-multiple: true + + - name: Install deps + shell: bash + run: | + sudo apt-get update -y --fix-missing + sudo apt-get install -y dput + + - name: Display structure of downloaded files + run: ls -R + + - name: Publish PPA + uses: yuezk/publish-ppa-package@v2 + with: + repository: "meshtastic/meshtastic-daily" + gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }} + tarball: "meshtasticd_${{ steps.version.outputs.short }}.tar.xz" + deb_email: "github-actions[bot]@users.noreply.github.com" + deb_fullname: "github-actions[bot]" diff --git a/.gitignore b/.gitignore index 28f9a24cc9..8998b60d6a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .pio +pio # ignore vscode IDE settings files .vscode/* diff --git a/debian/update_changelog.sh b/debian/ci_changelog.sh old mode 100644 new mode 100755 similarity index 99% rename from debian/update_changelog.sh rename to debian/ci_changelog.sh index 60af345112..56688f99bd --- a/debian/update_changelog.sh +++ b/debian/ci_changelog.sh @@ -1,5 +1,6 @@ #!/usr/bin/bash export DEBEMAIL="github-actions[bot]@users.noreply.github.com" + dch --newversion "$(python3 bin/buildinfo.py short)-1" \ --distribution unstable \ "GitHub Actions Automatic version bump" diff --git a/debian/ci_pack_sdeb.sh b/debian/ci_pack_sdeb.sh new file mode 100755 index 0000000000..97f1022094 --- /dev/null +++ b/debian/ci_pack_sdeb.sh @@ -0,0 +1,9 @@ +#!/usr/bin/bash +export PLATFORMIO_LIBDEPS_DIR=pio/libdeps +export PLATFORMIO_PACKAGES_DIR=pio/packages + +# Download libraries to `libdeps` +platformio pkg install -e native + +# Build the source deb +debuild -S diff --git a/debian/control b/debian/control index b00c6d78ea..9814933e37 100644 --- a/debian/control +++ b/debian/control @@ -3,8 +3,9 @@ Section: misc Priority: optional Maintainer: Austin Lane Build-Depends: debhelper-compat (= 13), - python3-pip, - python3-venv, + platformio, + python3-protobuf, + python3-grpcio, git, g++, pkg-config, diff --git a/debian/rules b/debian/rules index c60d611a42..f535ad6eb1 100755 --- a/debian/rules +++ b/debian/rules @@ -1,17 +1,18 @@ #!/usr/bin/make -f +# export DH_VERBOSE = 1 # Use the "dh" sequencer %: dh $@ +# https://docs.platformio.org/en/latest/envvars.html +PIO_ENV:=\ + PLATFORMIO_LIBDEPS_DIR=pio/libdeps \ + PLATFORMIO_PACKAGES_DIR=pio/packages + override_dh_auto_build: - # Terrible hack to use modern platformio to build the native version - # python3 -m venv venv - # . venv/bin/activate - pip install platformio --break-system-packages - platformio run -e native - # deactivate - # rm -rf venv + # Build with platformio + $(PIO_ENV) platformio run -e native # Move the binary and default config to the correct name mv .pio/build/native/program .pio/build/native/meshtasticd cp bin/config-dist.yaml bin/config.yaml diff --git a/debian/source/include-binaries b/debian/source/include-binaries new file mode 100644 index 0000000000..1632328ca2 --- /dev/null +++ b/debian/source/include-binaries @@ -0,0 +1,2 @@ +pio/libdeps +pio/packages \ No newline at end of file diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 0000000000..0553b485d0 --- /dev/null +++ b/debian/source/options @@ -0,0 +1 @@ +extend-diff-ignore = "\.pio" \ No newline at end of file