From 0e01e73bea21e7dae1e5f35d6e7403aac0fe4d59 Mon Sep 17 00:00:00 2001 From: Nissim Karpenstein Date: Mon, 28 Apr 2025 09:14:17 -0400 Subject: [PATCH 01/11] ci: get github ci to build arm64 linux deb and rpm release packages --- .github/workflows/release.yml | 23 +++++++++++++------ .../linux_distribution/deb/build_deb.sh | 14 +++++++++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 85883647d1c41..8f7ae626bd349 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -323,13 +323,13 @@ jobs: needs: create-release env: LINUX_APP_RELEASE_PATH: frontend/appflowy_flutter/product/${{ github.ref_name }}/linux/Release - LINUX_ZIP_NAME: AppFlowy-${{ matrix.job.target }}-x86_64.tar.gz - LINUX_PACKAGE_DEB_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.deb - LINUX_PACKAGE_RPM_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.rpm - LINUX_PACKAGE_TMP_RPM_NAME: AppFlowy-${{ github.ref_name }}-2.x86_64.rpm - LINUX_PACKAGE_TMP_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}-x86_64.AppImage - LINUX_PACKAGE_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.AppImage - LINUX_PACKAGE_ZIP_NAME: AppFlowy-${{ github.ref_name }}-linux-x86_64.tar.gz + LINUX_ZIP_NAME: AppFlowy-${{ matrix.job.target }}-${{ matrix.job.arch }}.tar.gz + LINUX_PACKAGE_DEB_NAME: AppFlowy-${{ github.ref_name }}-linux--${{ matrix.job.arch }}.deb + LINUX_PACKAGE_RPM_NAME: AppFlowy-${{ github.ref_name }}-linux--${{ matrix.job.arch }}.rpm + LINUX_PACKAGE_TMP_RPM_NAME: AppFlowy-${{ github.ref_name }}-2.-${{ matrix.job.arch }}.rpm + LINUX_PACKAGE_TMP_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}--${{ matrix.job.arch }}.AppImage + LINUX_PACKAGE_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}-linux--${{ matrix.job.arch }}.AppImage + LINUX_PACKAGE_ZIP_NAME: AppFlowy-${{ github.ref_name }}-linux--${{ matrix.job.arch }}.tar.gz strategy: fail-fast: false @@ -342,6 +342,13 @@ jobs: extra-build-args: "", flutter_profile: production-linux-x86_64, } + - { + arch: arm64, + target: arm64-unknown-linux-gnu, + os: ubuntu-22.04-arm, + extra-build-args: "", + flutter_profile: production-linux-arm64, + } steps: - name: Checkout source code uses: actions/checkout@v4 @@ -403,6 +410,7 @@ jobs: cp -r ${{ env.LINUX_PACKAGE_TMP_RPM_NAME }} ${{ env.LINUX_PACKAGE_RPM_NAME }} - name: Build Linux package (.AppImage) + if: ${{ matrix.job.target == 'x86_64-unknown-linux-gnu' }} working-directory: frontend continue-on-error: true run: | @@ -444,6 +452,7 @@ jobs: asset_content_type: application/octet-stream - name: Upload AppImage package + if: ${{ matrix.job.target == 'x86_64-unknown-linux-gnu' }} id: upload-release-asset-install-package-appimage uses: actions/upload-release-asset@v1 env: diff --git a/frontend/scripts/linux_distribution/deb/build_deb.sh b/frontend/scripts/linux_distribution/deb/build_deb.sh index 42fbf7346d524..cb1ca674243b3 100644 --- a/frontend/scripts/linux_distribution/deb/build_deb.sh +++ b/frontend/scripts/linux_distribution/deb/build_deb.sh @@ -3,6 +3,19 @@ LINUX_RELEASE_PRODUCTION=$1 VERSION=$2 PACKAGE_NAME=$3 +ARCHITECTURE=$4 + +if [-z $ARCHITECTURE] || ["$ARCHITECTURE" = "amd64"] ; then + ARCHITECTURE=amd64 + ALT_ARCHITECTURE=arm64 +elif ["$ARCHITECTURE" = "arm64"] + ALT_ARCHITECTURE=amd64 +else + echo "Supported architectures are only amd64 and arm64." + exit 1 +fi + + # Define package folders PACKAGE=$LINUX_RELEASE_PRODUCTION/package @@ -24,6 +37,7 @@ cp -R ./scripts/linux_distribution/deb/DEBIAN $PACKAGE chmod 0755 $DEBIAN/postinst chmod 0755 $DEBIAN/postrm grep -rl "\[CHANGE_THIS\]" $DEBIAN/control | xargs sed -i "s/\[CHANGE_THIS\]/$VERSION/" +grep -rl "$ALT_ARCHITECTURE" $DEBIAN/control | xargs sed -i "s/$ALT_ARCHITECTURE/$ARCHITECTURE/" cp -fR $LINUX_RELEASE_PRODUCTION/AppFlowy $LIB cp ./scripts/linux_distribution/deb/AppFlowy.desktop $APPLICATIONS From 6482c09baed6866c17456570296392dd928154ce Mon Sep 17 00:00:00 2001 From: Nissim Karpenstein Date: Tue, 29 Apr 2025 07:03:19 -0400 Subject: [PATCH 02/11] ci: fix bugs in script --- frontend/scripts/linux_distribution/deb/build_deb.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/scripts/linux_distribution/deb/build_deb.sh b/frontend/scripts/linux_distribution/deb/build_deb.sh index cb1ca674243b3..b589d1ec70e9e 100644 --- a/frontend/scripts/linux_distribution/deb/build_deb.sh +++ b/frontend/scripts/linux_distribution/deb/build_deb.sh @@ -5,10 +5,10 @@ VERSION=$2 PACKAGE_NAME=$3 ARCHITECTURE=$4 -if [-z $ARCHITECTURE] || ["$ARCHITECTURE" = "amd64"] ; then +if [ -z "$ARCHITECTURE" ] || [ "$ARCHITECTURE" = "amd64" ]; then ARCHITECTURE=amd64 ALT_ARCHITECTURE=arm64 -elif ["$ARCHITECTURE" = "arm64"] +elif [ "$ARCHITECTURE" = "arm64" ]; then ALT_ARCHITECTURE=amd64 else echo "Supported architectures are only amd64 and arm64." From 559b575364972fd649b64ffb0ef73e002ebbbd16 Mon Sep 17 00:00:00 2001 From: Nissim Karpenstein Date: Thu, 8 May 2025 09:13:44 -0400 Subject: [PATCH 03/11] ci: attempt to add arm architecture to flutter_ci.yaml --- .github/workflows/flutter_ci.yaml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flutter_ci.yaml b/.github/workflows/flutter_ci.yaml index 8ac44ffbcfaf6..3b8ca99930e11 100644 --- a/.github/workflows/flutter_ci.yaml +++ b/.github/workflows/flutter_ci.yaml @@ -40,11 +40,14 @@ jobs: strategy: fail-fast: true matrix: - os: [ ubuntu-latest ] + os: [ ubuntu-latest, ubuntu-24.04-arm ] include: - os: ubuntu-latest flutter_profile: development-linux-x86_64 target: x86_64-unknown-linux-gnu + - os: ubuntu-24.04-arm + flutter-profile: development-linux-arm64 + target: arm64-unknown-linux-gnu runs-on: ${{ matrix.os }} steps: @@ -128,11 +131,14 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest ] + os: [ ubuntu-latest, ubuntu-24.04-arm ] include: - os: ubuntu-latest flutter_profile: development-linux-x86_64 target: x86_64-unknown-linux-gnu + - os: ubuntu-24.04-arm + flutter-profile: development-linux-arm64 + target: arm64-unknown-linux-gnu runs-on: ${{ matrix.os }} steps: @@ -221,11 +227,14 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest ] + os: [ ubuntu-latest, ubuntu-24.04-arm ] include: - os: ubuntu-latest flutter_profile: development-linux-x86_64 target: x86_64-unknown-linux-gnu + - os: ubuntu-24.04-arm + flutter-profile: development-linux-arm64 + target: arm64-unknown-linux-gnu runs-on: ${{ matrix.os }} steps: @@ -345,11 +354,13 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest ] + os: [ ubuntu-latest, ubuntu-24.04-arm ] test_number: [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] include: - os: ubuntu-latest target: "x86_64-unknown-linux-gnu" + - os: ubuntu-24.04-arm + target: "arm64-unknown-linux-gnu" runs-on: ${{ matrix.os }} steps: - name: Checkout source code From e64d70308da4c0e796b53a31009363ef8be375a0 Mon Sep 17 00:00:00 2001 From: Nissim Karpenstein Date: Tue, 29 Apr 2025 16:23:20 -0400 Subject: [PATCH 04/11] ci: remove extra dashes and change like the bot suggested --- .github/workflows/release.yml | 12 ++++++------ .../scripts/linux_distribution/deb/DEBIAN/control | 2 +- frontend/scripts/linux_distribution/deb/build_deb.sh | 7 ++----- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8f7ae626bd349..6b7ea4c96c405 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -324,12 +324,12 @@ jobs: env: LINUX_APP_RELEASE_PATH: frontend/appflowy_flutter/product/${{ github.ref_name }}/linux/Release LINUX_ZIP_NAME: AppFlowy-${{ matrix.job.target }}-${{ matrix.job.arch }}.tar.gz - LINUX_PACKAGE_DEB_NAME: AppFlowy-${{ github.ref_name }}-linux--${{ matrix.job.arch }}.deb - LINUX_PACKAGE_RPM_NAME: AppFlowy-${{ github.ref_name }}-linux--${{ matrix.job.arch }}.rpm - LINUX_PACKAGE_TMP_RPM_NAME: AppFlowy-${{ github.ref_name }}-2.-${{ matrix.job.arch }}.rpm - LINUX_PACKAGE_TMP_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}--${{ matrix.job.arch }}.AppImage - LINUX_PACKAGE_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}-linux--${{ matrix.job.arch }}.AppImage - LINUX_PACKAGE_ZIP_NAME: AppFlowy-${{ github.ref_name }}-linux--${{ matrix.job.arch }}.tar.gz + LINUX_PACKAGE_DEB_NAME: AppFlowy-${{ github.ref_name }}-linux-${{ matrix.job.arch }}.deb + LINUX_PACKAGE_RPM_NAME: AppFlowy-${{ github.ref_name }}-linux-${{ matrix.job.arch }}.rpm + LINUX_PACKAGE_TMP_RPM_NAME: AppFlowy-${{ github.ref_name }}-2.${{ matrix.job.arch }}.rpm + LINUX_PACKAGE_TMP_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}-${{ matrix.job.arch }}.AppImage + LINUX_PACKAGE_APPIMAGE_NAME: AppFlowy-${{ github.ref_name }}-linux-${{ matrix.job.arch }}.AppImage + LINUX_PACKAGE_ZIP_NAME: AppFlowy-${{ github.ref_name }}-linux-${{ matrix.job.arch }}.tar.gz strategy: fail-fast: false diff --git a/frontend/scripts/linux_distribution/deb/DEBIAN/control b/frontend/scripts/linux_distribution/deb/DEBIAN/control index bcdd830fe6215..eb463c46cda67 100644 --- a/frontend/scripts/linux_distribution/deb/DEBIAN/control +++ b/frontend/scripts/linux_distribution/deb/DEBIAN/control @@ -1,7 +1,7 @@ Package: AppFlowy Version: [CHANGE_THIS] Depends: libkeybinder-3.0-0 -Architecture: amd64 +Architecture: [ARCHITECTURE] Essential: no Priority: optional Maintainer: AppFlowy diff --git a/frontend/scripts/linux_distribution/deb/build_deb.sh b/frontend/scripts/linux_distribution/deb/build_deb.sh index b589d1ec70e9e..5b43e5a3667a2 100644 --- a/frontend/scripts/linux_distribution/deb/build_deb.sh +++ b/frontend/scripts/linux_distribution/deb/build_deb.sh @@ -7,10 +7,7 @@ ARCHITECTURE=$4 if [ -z "$ARCHITECTURE" ] || [ "$ARCHITECTURE" = "amd64" ]; then ARCHITECTURE=amd64 - ALT_ARCHITECTURE=arm64 -elif [ "$ARCHITECTURE" = "arm64" ]; then - ALT_ARCHITECTURE=amd64 -else +elif [ "$ARCHITECTURE" != "arm64" ]; then echo "Supported architectures are only amd64 and arm64." exit 1 fi @@ -37,7 +34,7 @@ cp -R ./scripts/linux_distribution/deb/DEBIAN $PACKAGE chmod 0755 $DEBIAN/postinst chmod 0755 $DEBIAN/postrm grep -rl "\[CHANGE_THIS\]" $DEBIAN/control | xargs sed -i "s/\[CHANGE_THIS\]/$VERSION/" -grep -rl "$ALT_ARCHITECTURE" $DEBIAN/control | xargs sed -i "s/$ALT_ARCHITECTURE/$ARCHITECTURE/" +grep -rl "\[ARCHITECTURE\]" $DEBIAN/control | xargs sed -i "s/\[ARCHITECTURE\]/$ARCHITECTURE/" cp -fR $LINUX_RELEASE_PRODUCTION/AppFlowy $LIB cp ./scripts/linux_distribution/deb/AppFlowy.desktop $APPLICATIONS From 33a58053068bf813814824de5e4917af49d86b7d Mon Sep 17 00:00:00 2001 From: Nissim Karpenstein Date: Tue, 13 May 2025 15:02:45 -0400 Subject: [PATCH 05/11] ci: change arm64 to aarch64 --- .github/workflows/flutter_ci.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/flutter_ci.yaml b/.github/workflows/flutter_ci.yaml index 3b8ca99930e11..f1f48dd076dfa 100644 --- a/.github/workflows/flutter_ci.yaml +++ b/.github/workflows/flutter_ci.yaml @@ -46,8 +46,8 @@ jobs: flutter_profile: development-linux-x86_64 target: x86_64-unknown-linux-gnu - os: ubuntu-24.04-arm - flutter-profile: development-linux-arm64 - target: arm64-unknown-linux-gnu + flutter-profile: development-linux-aarch64 + target: aarch64-unknown-linux-gnu runs-on: ${{ matrix.os }} steps: @@ -137,8 +137,8 @@ jobs: flutter_profile: development-linux-x86_64 target: x86_64-unknown-linux-gnu - os: ubuntu-24.04-arm - flutter-profile: development-linux-arm64 - target: arm64-unknown-linux-gnu + flutter-profile: development-linux-aarch64 + target: aarch64-unknown-linux-gnu runs-on: ${{ matrix.os }} steps: @@ -233,8 +233,8 @@ jobs: flutter_profile: development-linux-x86_64 target: x86_64-unknown-linux-gnu - os: ubuntu-24.04-arm - flutter-profile: development-linux-arm64 - target: arm64-unknown-linux-gnu + flutter-profile: development-linux-aarch64 + target: aarch64-unknown-linux-gnu runs-on: ${{ matrix.os }} steps: From e74a65c0f3e16c82dcadff17c339d4be459ddb10 Mon Sep 17 00:00:00 2001 From: Nissim K Date: Sat, 17 May 2025 10:44:29 -0400 Subject: [PATCH 06/11] ci: try using master for arm flutter install --- .github/actions/flutter_build/action.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/actions/flutter_build/action.yml b/.github/actions/flutter_build/action.yml index 1af02a0ae3d8f..ba414a46a61ad 100644 --- a/.github/actions/flutter_build/action.yml +++ b/.github/actions/flutter_build/action.yml @@ -37,7 +37,8 @@ runs: override: true profile: minimal - - name: Install flutter + - name: Install flutter non-arm + if: ${{ flutter-profile != "development-linux-aarch64" }} id: flutter uses: subosito/flutter-action@v2 with: @@ -45,6 +46,15 @@ runs: flutter-version: ${{ inputs.flutter_version }} cache: true + - name: Install flutter arm + if: ${{ flutter-profile == "development-linux-aarch64" }} + id: flutter + uses: subosito/flutter-action@v2 + with: + channel: "master" + flutter-version: ${{ inputs.flutter_version }} + cache: true + - uses: Swatinem/rust-cache@v2 with: prefix-key: ${{ inputs.os }} From 3ad1d089ab7f0f778b6738aaf231866230e32232 Mon Sep 17 00:00:00 2001 From: Nissim K Date: Sat, 17 May 2025 10:49:11 -0400 Subject: [PATCH 07/11] ci: try using master for arm flutter install again --- .github/actions/flutter_build/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/flutter_build/action.yml b/.github/actions/flutter_build/action.yml index ba414a46a61ad..fc9a47a893303 100644 --- a/.github/actions/flutter_build/action.yml +++ b/.github/actions/flutter_build/action.yml @@ -38,7 +38,7 @@ runs: profile: minimal - name: Install flutter non-arm - if: ${{ flutter-profile != "development-linux-aarch64" }} + if: flutter-profile != "development-linux-aarch64" id: flutter uses: subosito/flutter-action@v2 with: @@ -47,7 +47,7 @@ runs: cache: true - name: Install flutter arm - if: ${{ flutter-profile == "development-linux-aarch64" }} + if: flutter-profile == "development-linux-aarch64" id: flutter uses: subosito/flutter-action@v2 with: From 164ddd0cc5d303471661e05f13299928b4183b98 Mon Sep 17 00:00:00 2001 From: Nissim K Date: Sat, 17 May 2025 11:16:23 -0400 Subject: [PATCH 08/11] ci: try using master for arm flutter install try3 --- .github/actions/flutter_build/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/flutter_build/action.yml b/.github/actions/flutter_build/action.yml index fc9a47a893303..549a47fd66a06 100644 --- a/.github/actions/flutter_build/action.yml +++ b/.github/actions/flutter_build/action.yml @@ -38,7 +38,7 @@ runs: profile: minimal - name: Install flutter non-arm - if: flutter-profile != "development-linux-aarch64" + if: inputs.flutter_profile != "development-linux-aarch64" id: flutter uses: subosito/flutter-action@v2 with: @@ -47,7 +47,7 @@ runs: cache: true - name: Install flutter arm - if: flutter-profile == "development-linux-aarch64" + if: inputs.flutter_profile == "development-linux-aarch64" id: flutter uses: subosito/flutter-action@v2 with: From 88882b159d6153d01496115bb54868dbc2571e51 Mon Sep 17 00:00:00 2001 From: Nissim K Date: Sat, 17 May 2025 11:22:51 -0400 Subject: [PATCH 09/11] ci: try using master for arm flutter install try4 --- .github/actions/flutter_build/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/flutter_build/action.yml b/.github/actions/flutter_build/action.yml index 549a47fd66a06..e84870b66ea98 100644 --- a/.github/actions/flutter_build/action.yml +++ b/.github/actions/flutter_build/action.yml @@ -38,7 +38,7 @@ runs: profile: minimal - name: Install flutter non-arm - if: inputs.flutter_profile != "development-linux-aarch64" + if: inputs.flutter_profile != 'development-linux-aarch64' id: flutter uses: subosito/flutter-action@v2 with: @@ -47,7 +47,7 @@ runs: cache: true - name: Install flutter arm - if: inputs.flutter_profile == "development-linux-aarch64" + if: inputs.flutter_profile == 'development-linux-aarch64' id: flutter uses: subosito/flutter-action@v2 with: From 5421cf7452c3c5dee03214568d637e7555c661cc Mon Sep 17 00:00:00 2001 From: Nissim K Date: Sat, 17 May 2025 11:23:54 -0400 Subject: [PATCH 10/11] ci: try using master for arm flutter install try5 --- .github/actions/flutter_build/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/flutter_build/action.yml b/.github/actions/flutter_build/action.yml index e84870b66ea98..17fa7b595afc4 100644 --- a/.github/actions/flutter_build/action.yml +++ b/.github/actions/flutter_build/action.yml @@ -39,7 +39,7 @@ runs: - name: Install flutter non-arm if: inputs.flutter_profile != 'development-linux-aarch64' - id: flutter + id: flutter-non-arm uses: subosito/flutter-action@v2 with: channel: "stable" @@ -48,7 +48,7 @@ runs: - name: Install flutter arm if: inputs.flutter_profile == 'development-linux-aarch64' - id: flutter + id: flutter-arm uses: subosito/flutter-action@v2 with: channel: "master" From 993881c8def2a128a1274e064b9d1717b1fb59f1 Mon Sep 17 00:00:00 2001 From: Nissim K Date: Sat, 17 May 2025 11:32:27 -0400 Subject: [PATCH 11/11] ci: try using master for arm flutter install try6 --- .github/actions/flutter_build/action.yml | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/.github/actions/flutter_build/action.yml b/.github/actions/flutter_build/action.yml index 17fa7b595afc4..bc1b0054058cd 100644 --- a/.github/actions/flutter_build/action.yml +++ b/.github/actions/flutter_build/action.yml @@ -37,18 +37,8 @@ runs: override: true profile: minimal - - name: Install flutter non-arm - if: inputs.flutter_profile != 'development-linux-aarch64' - id: flutter-non-arm - uses: subosito/flutter-action@v2 - with: - channel: "stable" - flutter-version: ${{ inputs.flutter_version }} - cache: true - - - name: Install flutter arm - if: inputs.flutter_profile == 'development-linux-aarch64' - id: flutter-arm + - name: Install flutter + id: flutter uses: subosito/flutter-action@v2 with: channel: "master"