Use GitHub actions to generate aarch64 AppImages
authorColin Clark <colin.clark@cclark.uk>
Mon, 28 Aug 2023 14:13:01 +0000 (15:13 +0100)
committerColin Clark <colin.clark@cclark.uk>
Mon, 28 Aug 2023 14:13:01 +0000 (15:13 +0100)
.github/workflows/appimage-aarch64.yml [new file with mode: 0644]
.github/workflows/appimage-minimal-aarch64.yml [new file with mode: 0644]
.github/workflows/appimage-minimal-x86_64.yml [moved from .github/workflows/appimage-minimal.yml with 89% similarity]
.github/workflows/appimage-x86_64.yml [moved from .github/workflows/appimage.yml with 91% similarity]
AppImageBuilder-aarch64.yml [new file with mode: 0644]
AppImageBuilder-x86_64.yml [moved from AppImageBuilder.yml with 100% similarity]
AppImageBuilderMinimal-aarch64.yml [new file with mode: 0644]
AppImageBuilderMinimal-x86_64.yml [moved from AppImageBuilderMinimal.yml with 100% similarity]

diff --git a/.github/workflows/appimage-aarch64.yml b/.github/workflows/appimage-aarch64.yml
new file mode 100644 (file)
index 0000000..e281bd0
--- /dev/null
@@ -0,0 +1,70 @@
+name: Geeqie aarch64 AppImage build
+run-name: ${{ github.actor }} is running Geeqie aarch64 AppImage build
+on: [push]
+jobs:
+  Build-AppImage:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        arch: [aarch64]
+        include:
+        - arch: aarch64
+          cpu: cortex-a53
+          base_image: raspios_lite_arm64:latest
+    steps:
+    - uses: actions/checkout@v2
+    - uses: pguyot/arm-runner-action@v2
+      with:
+        base_image: ${{ matrix.base_image }}
+        cpu: ${{ matrix.cpu }}
+        cpu_info: ${{ matrix.cpu_info }}
+        image_additional_mb: 1000
+        bind_mount_repository: false
+        import_github_env: true
+        export_github_env: true
+        copy_artifact_path: geeqie.gz
+        commands: |
+            yes | sudo apt-get update
+            yes | sudo apt-get install build-essential libgtk-3-dev libgtk-3-bin
+            yes | sudo apt-get update
+            yes | sudo apt-get install build-essential libgtk-3-dev libgtk-3-bin
+            yes | sudo apt-get install evince
+            yes | sudo apt-get install libarchive-dev
+            yes | sudo apt-get install libchamplain-0.12-dev libchamplain-gtk-0.12-dev
+            yes | sudo apt-get install libgexiv2-dev
+            yes | sudo apt-get install libgspell-1-dev
+            yes | sudo apt-get install libheif-dev
+            yes | sudo apt-get install liblua5.3-dev
+            yes | sudo apt-get install libpoppler-glib-dev
+            yes | sudo apt-get install libraw-dev libomp-dev
+            yes | sudo apt-get install git
+            yes | sudo apt-get install python3 python3-pip python3-setuptools  python3-wheel ninja-build
+            yes | sudo apt-get install meson
+            yes | sudo apt-get install gettext
+            mkdir -p $GITHUB_WORKSPACE/AppDir
+            mkdir -p $GITHUB_WORKSPACE/AppDir/usr
+            meson setup -Ddevel=disabled -Ddoxygen=disabled -Dgit=disabled -Dyelp-build=disabled -Dprefix=$GITHUB_WORKSPACE/AppDir/usr build
+            ninja -C build install
+            tar -czvf geeqie.gz $GITHUB_WORKSPACE/
+
+    - run: tar -xvf geeqie.gz
+    - run: mkdir -p AppDir
+    - run: cp -var  ./home/runner/work/geeqie/geeqie/AppDir/ .
+    - uses: AppImageCrafters/build-appimage-action@master
+      with:
+        recipe: AppImageBuilder-aarch64.yml
+
+    - uses: ncipollo/release-action@v1
+      with:
+        allowUpdates: true
+        tag: continuous
+        name: Continuous build
+        prerelease: true
+        artifacts: "*.AppImage"
+
+    - uses: actions/upload-artifact@v2
+      if: always()
+      with:
+        name: logs-all-build-appimage
+        path: /home/runner/work/geeqie/geeqie/build/meson-logs/*.txt
+        retention-days: 5
diff --git a/.github/workflows/appimage-minimal-aarch64.yml b/.github/workflows/appimage-minimal-aarch64.yml
new file mode 100644 (file)
index 0000000..420057f
--- /dev/null
@@ -0,0 +1,59 @@
+name: Geeqie minimal aarch64 AppImage build
+run-name: ${{ github.actor }} is running Geeqie minimal aarch64 AppImage build
+on: [push]
+jobs:
+  Build-AppImage:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        arch: [aarch64]
+        include:
+        - arch: aarch64
+          cpu: cortex-a53
+          base_image: raspios_lite_arm64:latest
+    steps:
+    - uses: actions/checkout@v2
+    - uses: pguyot/arm-runner-action@v2
+      with:
+        base_image: ${{ matrix.base_image }}
+        cpu: ${{ matrix.cpu }}
+        cpu_info: ${{ matrix.cpu_info }}
+        image_additional_mb: 400
+        bind_mount_repository: false
+        import_github_env: true
+        export_github_env: true
+        copy_artifact_path: geeqie.gz
+        commands: |
+            yes | sudo apt-get update
+            yes | sudo apt-get install build-essential libgtk-3-dev libgtk-3-bin
+            yes | sudo apt-get install git
+            yes | sudo apt-get install python3 python3-pip python3-setuptools  python3-wheel ninja-build
+            yes | sudo apt-get install meson
+            yes | sudo apt-get install gettext
+            mkdir -p $GITHUB_WORKSPACE/AppDir
+            mkdir -p $GITHUB_WORKSPACE/AppDir/usr
+            meson setup -Darchive=disabled -Dcms=disabled -Ddevel=disabled -Ddoxygen=disabled -Ddjvu=disabled -Devince=disabled -Dexecinfo=disabled -Dexiv2=disabled -Dgit=disabled -Dgps-map=disabled -Dheif=disabled -Dj2k=disabled -Djpeg=disabled -Djpegxl=disabled -Dlibraw=disabled -Dlua=disabled -Dpandoc=disabled -Dpdf=disabled -Dspell=disabled -Dtiff=disabled -Dvideothumbnailer=disabled -Dyelp-build=disabled -Dprefix=$GITHUB_WORKSPACE/AppDir/usr build
+            ninja -C build install
+            tar -czvf geeqie.gz $GITHUB_WORKSPACE/
+
+    - run: tar -xvf geeqie.gz
+    - run: mkdir -p AppDir
+    - run: cp -var  ./home/runner/work/geeqie/geeqie/AppDir/ .
+    - uses: AppImageCrafters/build-appimage-action@master
+      with:
+        recipe: AppImageBuilderMinimal-aarch64.yml
+
+    - uses: ncipollo/release-action@v1
+      with:
+        allowUpdates: true
+        tag: continuous
+        name: Continuous build
+        prerelease: true
+        artifacts: "*.AppImage"
+
+    - uses: actions/upload-artifact@v2
+      if: always()
+      with:
+        name: logs-all-build-appimage
+        path: /home/runner/work/geeqie/geeqie/build/meson-logs/*.txt
+        retention-days: 5
similarity index 89%
rename from .github/workflows/appimage-minimal.yml
rename to .github/workflows/appimage-minimal-x86_64.yml
index ce29734..6674ff7 100644 (file)
@@ -1,5 +1,5 @@
-name: Geeqie minimal AppImage build
-run-name: ${{ github.actor }} is running Geeqie minimal AppImage build
+name: Geeqie minimal x86_64 AppImage build
+run-name: ${{ github.actor }} is running Geeqie minimal x86_64 AppImage build
 on: [push]
 jobs:
   Build-AppImage:
@@ -23,7 +23,7 @@ jobs:
     - name: build AppImage
       uses: AppImageCrafters/build-appimage-action@master
       with:
-        recipe: AppImageBuilderMinimal.yml
+        recipe: AppImageBuilderMinimal-x86_64.yml
 
     - name: Create Release
       uses: ncipollo/release-action@v1
similarity index 91%
rename from .github/workflows/appimage.yml
rename to .github/workflows/appimage-x86_64.yml
index 79cd6fc..452c701 100644 (file)
@@ -1,5 +1,5 @@
-name: Geeqie AppImage build
-run-name: ${{ github.actor }} is running Geeqie AppImage build
+name: Geeqie x86_64 AppImage build
+run-name: ${{ github.actor }} is running Geeqie x86_64 AppImage build
 on: [push]
 jobs:
   Build-AppImage:
@@ -33,7 +33,7 @@ jobs:
     - name: build AppImage
       uses: AppImageCrafters/build-appimage-action@master
       with:
-        recipe: AppImageBuilder.yml
+        recipe: AppImageBuilder-x86_64.yml
 
     - name: Create Release
       uses: ncipollo/release-action@v1
diff --git a/AppImageBuilder-aarch64.yml b/AppImageBuilder-aarch64.yml
new file mode 100644 (file)
index 0000000..ad54434
--- /dev/null
@@ -0,0 +1,56 @@
+# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
+version: 1
+
+script:
+  # Refer to https://github.com/AppImageCrafters/appimage-builder/issues/271
+  - which mksquashfs || apt install squashfs-tools
+
+AppDir:
+  path: ./AppDir
+  app_info:
+    id: geeqie
+    name: Geeqie
+    icon: geeqie
+    version: latest
+    exec: usr/bin/geeqie
+    exec_args: $@
+  apt:
+    arch:
+    - arm64
+    allow_unauthenticated: true
+    sources:
+    - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy main restricted
+    - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates main restricted
+    - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy universe
+    - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates universe
+    include:
+    - evince
+    - libarchive13
+    - libchamplain-0.12
+    - libchamplain-gtk-0.12-0
+    - libdjvulibre21
+    - libgexiv2-2
+    - libgspell-1-2
+    - libheif1
+    - libjpeg8
+    - liblcms2-2
+    - liblua5.3-0
+    - libopenjp2-7
+    - libraw20
+    - librsvg2-common
+    - libtiff5
+
+  files:
+    include: []
+    exclude:
+    - usr/share/man
+    - usr/share/doc/*/README.*
+    - usr/share/doc/*/changelog.*
+    - usr/share/doc/*/NEWS.*
+    - usr/share/doc/*/TODO.*
+    - usr/lib/libuim-scm.so.0
+    - usr/lib/gtk-3.0/3.0.0/immodules/im-uim.so
+    - usr/lib/im-uim.so
+    - usr/lib/libuim.so.8
+AppImage:
+  arch: aarch64
diff --git a/AppImageBuilderMinimal-aarch64.yml b/AppImageBuilderMinimal-aarch64.yml
new file mode 100644 (file)
index 0000000..7296ae0
--- /dev/null
@@ -0,0 +1,42 @@
+# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
+version: 1
+
+script:
+  # Refer to https://github.com/AppImageCrafters/appimage-builder/issues/271
+  - which mksquashfs || apt install squashfs-tools
+
+AppDir:
+  path: ./AppDir
+  app_info:
+    id: geeqie
+    name: Geeqie
+    icon: geeqie
+    version: minimal-latest
+    exec: usr/bin/geeqie
+    exec_args: $@
+  apt:
+    arch:
+    - arm64
+    allow_unauthenticated: true
+    sources:
+    - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy main restricted
+    - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates main restricted
+    - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy universe
+    - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates universe
+    include:
+    - libtiff5
+
+  files:
+    include: []
+    exclude:
+    - usr/share/man
+    - usr/share/doc/*/README.*
+    - usr/share/doc/*/changelog.*
+    - usr/share/doc/*/NEWS.*
+    - usr/share/doc/*/TODO.*
+    - usr/lib/libuim-scm.so.0
+    - usr/lib/gtk-3.0/3.0.0/immodules/im-uim.so
+    - usr/lib/im-uim.so
+    - usr/lib/libuim.so.8
+AppImage:
+  arch: aarch64