From d21d6c1301d2a3fd06faf17f0ca411e8d6d83d0f Mon Sep 17 00:00:00 2001
From: Austin <vidplace7@gmail.com>
Date: Sun, 5 Jan 2025 14:24:05 -0500
Subject: [PATCH] meshtasticd-debian: Build multiple series (#5756)

---
 .github/workflows/build_debian_src.yml |  9 ++++++++-
 .github/workflows/main_matrix.yml      |  6 ++++++
 .github/workflows/package_ppa.yml      | 11 +++++++++--
 debian/ci_pack_sdeb.sh                 |  7 +++++++
 4 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/build_debian_src.yml b/.github/workflows/build_debian_src.yml
index dfd8b66fb..1424774b0 100644
--- a/.github/workflows/build_debian_src.yml
+++ b/.github/workflows/build_debian_src.yml
@@ -5,6 +5,11 @@ on:
     secrets:
       PPA_GPG_PRIVATE_KEY:
         required: true
+    inputs:
+      series:
+        description: 'Ubuntu series to target'
+        required: true
+        type: string
 
 permissions:
   contents: write
@@ -42,7 +47,9 @@ jobs:
         working-directory: meshtasticd
         run: debian/ci_pack_sdeb.sh
         env:
+          SERIES: ${{ inputs.series }}
           GPG_KEY_ID: ${{ steps.gpg.outputs.keyid }}
+          REVISION: ${{ github.sha }}
 
       - name: Get release version string
         working-directory: meshtasticd
@@ -54,7 +61,7 @@ jobs:
       - name: Store binaries as an artifact
         uses: actions/upload-artifact@v4
         with:
-          name: firmware-debian-${{ steps.version.outputs.long }}-src
+          name: firmware-debian-${{ steps.version.outputs.long }}-${{ inputs.series }}-src
           overwrite: true
           path: |
             meshtasticd_${{ steps.version.outputs.short }}*
diff --git a/.github/workflows/main_matrix.yml b/.github/workflows/main_matrix.yml
index f4c5de228..be8cddaf3 100644
--- a/.github/workflows/main_matrix.yml
+++ b/.github/workflows/main_matrix.yml
@@ -129,7 +129,13 @@ jobs:
       board: ${{ matrix.board }}
 
   package-ppa:
+    strategy:
+      fail-fast: false
+      matrix:
+        series: [plucky, oracular, noble, jammy]
     uses: ./.github/workflows/package_ppa.yml
+    with:
+      series: ${{ matrix.series }}
     secrets: inherit
 
   package-raspbian:
diff --git a/.github/workflows/package_ppa.yml b/.github/workflows/package_ppa.yml
index 9d59df472..d630e8092 100644
--- a/.github/workflows/package_ppa.yml
+++ b/.github/workflows/package_ppa.yml
@@ -5,6 +5,11 @@ on:
     secrets:
       PPA_GPG_PRIVATE_KEY:
         required: true
+    inputs:
+      series:
+        description: 'Ubuntu series to target'
+        required: true
+        type: string
   workflow_dispatch:
 
 permissions:
@@ -15,6 +20,8 @@ jobs:
   build-debian-src:
     uses: ./.github/workflows/build_debian_src.yml
     secrets: inherit
+    with:
+      series: ${{ inputs.series }}
 
   package-ppa:
     runs-on: ubuntu-24.04
@@ -50,11 +57,11 @@ jobs:
       - name: Download artifacts
         uses: actions/download-artifact@v4
         with:
-          name: firmware-debian-${{ steps.version.outputs.long }}-src
+          name: firmware-debian-${{ steps.version.outputs.long }}-${{ inputs.series }}-src
           merge-multiple: true
 
       - name: Display structure of downloaded files
-        run: ls -R
+        run: ls -lah
 
       - name: Publish with dput
         if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
diff --git a/debian/ci_pack_sdeb.sh b/debian/ci_pack_sdeb.sh
index 79b484a35..acab2683f 100755
--- a/debian/ci_pack_sdeb.sh
+++ b/debian/ci_pack_sdeb.sh
@@ -1,9 +1,16 @@
 #!/usr/bin/bash
+export DEBEMAIL="github-actions[bot]@users.noreply.github.com"
 export PLATFORMIO_LIBDEPS_DIR=pio/libdeps
 export PLATFORMIO_PACKAGES_DIR=pio/packages
 
 # Download libraries to `libdeps`
 platformio pkg install -e native
 
+package=$(dpkg-parsechangelog --show-field Source)
+pkg_version=$(dpkg-parsechangelog --show-field Version | cut -d- -f1)
+
+dch --create --distribution $SERIES --package $package --newversion $pkg_version-ppa${REVISION::7}~$SERIES \
+	"GitHub Actions Automatic packaging for $SERIES"
+
 # Build the source deb
 debuild -S -k$GPG_KEY_ID