Skip to content

Commit f4796a2

Browse files
committed
Add Debian package (.deb) build infrastructure for ARM AppImages
Adds CI steps and packaging scripts to produce .deb packages from the ARM64/armhf AppImage builds, including debian control files, templates, configs, and a build script that repackages the AppImage into a proper Debian package. Signed-off-by: Nicu Siderias <nicu.siderias@analog.com>
1 parent 9be851f commit f4796a2

File tree

15 files changed

+8814
-2
lines changed

15 files changed

+8814
-2
lines changed

.github/workflows/appimage-arm64.yml

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ on:
66
docker_tag:
77
required: true
88
type: string
9+
secrets:
10+
CLOUDSMITH_SERVICE_SLUG:
11+
required: true
912

1013
env:
1114
BUILD_HOST: ubuntu-22.04
@@ -15,6 +18,8 @@ env:
1518
jobs:
1619
make_arm64_appimage:
1720
runs-on: ubuntu-22.04
21+
permissions:
22+
id-token: write
1823
steps:
1924

2025
- name: check storage space
@@ -60,5 +65,38 @@ jobs:
6065
name: scopy-arm64-appimage-${{ env.commit_sha }}
6166
path: ${{ github.workspace }}/Scopy-arm64.AppImage
6267

68+
- name: Build Debian package
69+
shell: bash
70+
run: |
71+
sudo apt-get install -y dpkg-dev debhelper devscripts rsync crossbuild-essential-arm64
72+
./ci/packaging/scopy-deb-build.sh scopy64 $GITHUB_WORKSPACE/Scopy-arm64.AppImage
73+
74+
- uses: actions/upload-artifact@v4
75+
with:
76+
name: scopy-arm64-deb-${{ env.commit_sha }}
77+
path: |
78+
${{ github.workspace }}/scopy_*_arm64.deb
79+
${{ github.workspace }}/scopy_*.dsc
80+
${{ github.workspace }}/scopy_*.orig.tar.gz
81+
${{ github.workspace }}/scopy_*.debian.tar.xz
82+
if-no-files-found: error
83+
84+
- name: Authenticate with Cloudsmith via OIDC
85+
if: success()
86+
uses: cloudsmith-io/cloudsmith-cli-action@v2.0.2
87+
with:
88+
oidc-namespace: adi
89+
oidc-service-slug: ${{ secrets.CLOUDSMITH_SERVICE_SLUG }}
90+
91+
- name: Upload debian package to Cloudsmith
92+
if: success() && env.CLOUDSMITH_API_KEY != ''
93+
run: |
94+
pip install cloudsmith-cli
95+
for f in scopy_*.dsc scopy_*.orig.tar.gz scopy_*.debian.tar.xz; do
96+
[ -f "$f" ] || continue
97+
cloudsmith push raw -SW --republish adi/kuiper-internal "$f"
98+
done
99+
cloudsmith push deb -SW --republish "adi/kuiper-internal/debian/trixie" scopy_*.deb
100+
63101
- name: check storage space
64-
run: df -h
102+
run: df -h

.github/workflows/appimage-armhf.yml

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ on:
66
docker_tag:
77
required: true
88
type: string
9+
secrets:
10+
CLOUDSMITH_SERVICE_SLUG:
11+
required: true
912

1013
env:
1114
BUILD_HOST: ubuntu-22.04
@@ -15,6 +18,8 @@ env:
1518
jobs:
1619
make_armhf_appimage:
1720
runs-on: ubuntu-22.04
21+
permissions:
22+
id-token: write
1823
steps:
1924

2025
- name: check storage space
@@ -60,5 +65,38 @@ jobs:
6065
name: scopy-armhf-appimage-${{ env.commit_sha }}
6166
path: ${{ github.workspace }}/Scopy-armhf.AppImage
6267

68+
- name: Build Debian package
69+
shell: bash
70+
run: |
71+
sudo apt-get install -y dpkg-dev debhelper devscripts rsync crossbuild-essential-armhf
72+
./ci/packaging/scopy-deb-build.sh scopy32 $GITHUB_WORKSPACE/Scopy-armhf.AppImage
73+
74+
- uses: actions/upload-artifact@v4
75+
with:
76+
name: scopy-armhf-deb-${{ env.commit_sha }}
77+
path: |
78+
${{ github.workspace }}/scopy_*_armhf.deb
79+
${{ github.workspace }}/scopy_*.dsc
80+
${{ github.workspace }}/scopy_*.orig.tar.gz
81+
${{ github.workspace }}/scopy_*.debian.tar.xz
82+
if-no-files-found: error
83+
84+
- name: Authenticate with Cloudsmith via OIDC
85+
if: success()
86+
uses: cloudsmith-io/cloudsmith-cli-action@v2.0.2
87+
with:
88+
oidc-namespace: adi
89+
oidc-service-slug: ${{ secrets.CLOUDSMITH_SERVICE_SLUG }}
90+
91+
- name: Upload debian package to Cloudsmith
92+
if: success() && env.CLOUDSMITH_API_KEY != ''
93+
run: |
94+
pip install cloudsmith-cli
95+
for f in scopy_*.dsc scopy_*.orig.tar.gz scopy_*.debian.tar.xz; do
96+
[ -f "$f" ] || continue
97+
cloudsmith push raw -SW --republish adi/kuiper-internal "$f"
98+
done
99+
cloudsmith push deb -SW --republish "adi/kuiper-internal/debian/trixie" scopy_*.deb
100+
63101
- name: check storage space
64-
run: df -h
102+
run: df -h

.github/workflows/ci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ permissions:
5050
artifact-metadata: write
5151
checks: write
5252
actions: write
53+
id-token: write # Needed for OIDC authentication to Cloudsmith in appimage-arm64 and appimage-armhf jobs.
5354

5455
jobs:
5556
docker_tag:
@@ -70,13 +71,17 @@ jobs:
7071
uses: ./.github/workflows/appimage-arm64.yml
7172
with:
7273
docker_tag: ${{ inputs.docker_tag || needs.docker_tag.outputs.docker_tag }}
74+
secrets:
75+
CLOUDSMITH_SERVICE_SLUG: ${{ secrets.CLOUDSMITH_SERVICE_SLUG }}
7376

7477
appimage-armhf:
7578
needs: docker_tag
7679
if: always() && (needs.docker_tag.result == 'success' || needs.docker_tag.result == 'skipped')
7780
uses: ./.github/workflows/appimage-armhf.yml
7881
with:
7982
docker_tag: ${{ inputs.docker_tag || needs.docker_tag.outputs.docker_tag }}
83+
secrets:
84+
CLOUDSMITH_SERVICE_SLUG: ${{ secrets.CLOUDSMITH_SERVICE_SLUG }}
8085

8186
mingw:
8287
needs: docker_tag

ci/packaging/configs/scopy32.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Package metadata
2+
PACKAGE=scopy
3+
ARCHITECTURE=armhf
4+
DEPENDS="libfuse2t64, libxcb-icccm4, libxcb-image0, libxcb-keysyms1, libxcb-render-util0, libxcb-xinerama0, libxkbcommon-x11-0, libxcb-xkb1"
5+
MAINTAINER="Adrian Suciu <adrian.suciu@analog.com>"
6+
HOMEPAGE="https://github.com/analogdevicesinc/scopy"
7+
DESCRIPTION="Scopy for 32-bit architecture"
8+
LONG_DESCRIPTION="This package contains the Scopy software oscilloscope and signal analysis toolset from Analog Devices for 32-bit architecture."

ci/packaging/configs/scopy64.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Package metadata
2+
PACKAGE=scopy
3+
ARCHITECTURE=arm64
4+
DEPENDS="libfuse2t64, libxcb-icccm4, libxcb-image0, libxcb-keysyms1, libxcb-render-util0, libxcb-xinerama0, libxkbcommon-x11-0, libxcb-xkb1"
5+
MAINTAINER="Adrian Suciu <adrian.suciu@analog.com>"
6+
HOMEPAGE="https://github.com/analogdevicesinc/scopy"
7+
DESCRIPTION="Scopy for 64-bit architecture"
8+
LONG_DESCRIPTION="This package contains the Scopy software oscilloscope and signal analysis toolset from Analog Devices for 64-bit architecture."
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
${PACKAGE} (${VERSION}-1) stable; urgency=medium
2+
3+
${RELEASE_NOTES}
4+
5+
-- ${MAINTAINER} ${DATE}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Source: ${PACKAGE}
2+
Section: science
3+
Priority: optional
4+
Maintainer: ${MAINTAINER}
5+
Build-Depends: debhelper-compat (= 13), wget, unzip
6+
Standards-Version: 4.6.2
7+
Homepage: ${HOMEPAGE}
8+
9+
Package: ${PACKAGE}
10+
Architecture: any
11+
Depends: ${shlibs:Depends}, ${misc:Depends}, ${DEPENDS}
12+
Description: ${DESCRIPTION}
13+
${LONG_DESCRIPTION}

0 commit comments

Comments
 (0)