From aa6b130ad4a6647f5ca9f9de48c185960fc723aa Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Tue, 15 Oct 2024 23:39:12 +0200 Subject: [PATCH 01/29] feat: workflow file --- .github/workflows/build.yml | 78 +++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..30b4d9b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,78 @@ +name: Build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: + inputs: + version: + description: 'Version to build (e.g., 1.0.0)' + required: true + default: '0.0.0' + +jobs: + build: + strategy: + fail-fast: false + matrix: + include: + - os: macos-latest + target: x86_64-apple-darwin + - os: macos-latest + target: aarch64-apple-darwin + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: '16' + + - name: Install Rust stable + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: ${{ matrix.target }} + override: true + + - name: Install dependencies (ubuntu only) + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf + + - name: Install dependencies (macOS only) + if: matrix.os == 'macos-latest' + run: | + brew install gtk+3 webkit2gtk3 libappindicator + + - name: Install app dependencies and build web + run: yarn && yarn build + + - name: Build Tauri app + uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tagName: v__VERSION__ + releaseName: "App v__VERSION__" + releaseBody: "See the assets to download this version and install." + releaseDraft: true + prerelease: false + args: --target ${{ matrix.target }} + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: meroctl-${{ matrix.target }} + path: | + src-tauri/target/${{ matrix.target }}/release/bundle/dmg/* + src-tauri/target/${{ matrix.target }}/release/bundle/deb/* + src-tauri/target/${{ matrix.target }}/release/bundle/appimage/* \ No newline at end of file From 33ec4c8d1c500b5cb602d7ac4746cb56a50fc45c Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Tue, 15 Oct 2024 23:45:38 +0200 Subject: [PATCH 02/29] fix: updated rules for triggering process --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 30b4d9b..846ee83 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,9 +2,9 @@ name: Build on: push: - branches: [ main ] + branches: [ '**' ] # To run on any branch pull_request: - branches: [ main ] + branches: [ '**' ] # To run on any branch workflow_dispatch: inputs: version: From 91896821860e421296c3fc55edaa888d588bdb36 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Tue, 15 Oct 2024 23:48:28 +0200 Subject: [PATCH 03/29] fix: bumped github action to v3 --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 846ee83..d430627 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,10 +28,10 @@ jobs: runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Setup Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: '16' @@ -61,17 +61,17 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tagName: v__VERSION__ - releaseName: "App v__VERSION__" + tagName: v${{ github.event.inputs.version || '__VERSION__' }} + releaseName: "App v${{ github.event.inputs.version || '__VERSION__' }}" releaseBody: "See the assets to download this version and install." releaseDraft: true prerelease: false args: --target ${{ matrix.target }} - name: Upload artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: - name: meroctl-${{ matrix.target }} + name: meroctl-${{ matrix.target }}-${{ github.event.inputs.version || 'latest' }} path: | src-tauri/target/${{ matrix.target }}/release/bundle/dmg/* src-tauri/target/${{ matrix.target }}/release/bundle/deb/* From ff338e422d1dc6483b14d3c88624bd8b0a5d8602 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 09:57:10 +0200 Subject: [PATCH 04/29] fix: switched to official workflow from Tauri documentation --- .github/workflows/build.yml | 114 ++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 65 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d430627..87928fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,78 +1,62 @@ -name: Build +name: 'publish' on: push: branches: [ '**' ] # To run on any branch pull_request: - branches: [ '**' ] # To run on any branch + branches: [ '**' ] workflow_dispatch: - inputs: - version: - description: 'Version to build (e.g., 1.0.0)' - required: true - default: '0.0.0' jobs: - build: + publish-tauri: + permissions: + contents: write strategy: fail-fast: false matrix: include: - - os: macos-latest - target: x86_64-apple-darwin - - os: macos-latest - target: aarch64-apple-darwin - - os: ubuntu-latest - target: x86_64-unknown-linux-gnu - - runs-on: ${{ matrix.os }} - + - platform: 'macos-latest' # for Arm based macs (M1 and above). + args: '--target aarch64-apple-darwin' + - platform: 'macos-latest' # for Intel based macs. + args: '--target x86_64-apple-darwin' + - platform: 'ubuntu-22.04' # for Tauri v1 you could replace this with ubuntu-20.04. + args: '--target x86_64-unknown-linux-gnu' + - platform: 'ubuntu-22.04' # for Tauri v1 you could replace this with ubuntu-20.04. + args: '--target aarch64-unknown-linux-gnu' + + runs-on: ${{ matrix.platform }} steps: - - uses: actions/checkout@v3 - - - name: Setup Node.js - uses: actions/setup-node@v3 - with: - node-version: '16' - - - name: Install Rust stable - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - target: ${{ matrix.target }} - override: true - - - name: Install dependencies (ubuntu only) - if: matrix.os == 'ubuntu-latest' - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf - - - name: Install dependencies (macOS only) - if: matrix.os == 'macos-latest' - run: | - brew install gtk+3 webkit2gtk3 libappindicator - - - name: Install app dependencies and build web - run: yarn && yarn build - - - name: Build Tauri app - uses: tauri-apps/tauri-action@v0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tagName: v${{ github.event.inputs.version || '__VERSION__' }} - releaseName: "App v${{ github.event.inputs.version || '__VERSION__' }}" - releaseBody: "See the assets to download this version and install." - releaseDraft: true - prerelease: false - args: --target ${{ matrix.target }} - - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: - name: meroctl-${{ matrix.target }}-${{ github.event.inputs.version || 'latest' }} - path: | - src-tauri/target/${{ matrix.target }}/release/bundle/dmg/* - src-tauri/target/${{ matrix.target }}/release/bundle/deb/* - src-tauri/target/${{ matrix.target }}/release/bundle/appimage/* \ No newline at end of file + - uses: actions/checkout@v4 + + - name: setup node + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. + targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} + + - name: install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above. + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. + # You can remove the one that doesn't apply to your app to speed up the workflow a bit. + + - name: install frontend dependencies + run: pnpm install # change this to npm, pnpm or bun depending on which one you use. + + - uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version. + releaseName: 'App v__VERSION__' + releaseBody: 'See the assets to download this version and install.' + releaseDraft: true + prerelease: false + args: ${{ matrix.args }} \ No newline at end of file From cb820f7dedc37fa6a6e01be5444fd67d834aa349 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 10:05:05 +0200 Subject: [PATCH 05/29] fix: added installation for pnpm --- .github/workflows/build.yml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 87928fb..9af166f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,18 +28,23 @@ jobs: steps: - uses: actions/checkout@v4 - - name: setup node + - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: lts/* + node-version: 'lts/*' - - name: install Rust stable + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + + - name: Install Rust stable uses: dtolnay/rust-toolchain@stable with: # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - - name: install dependencies (ubuntu only) + - name: Install dependencies (ubuntu only) if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above. run: | sudo apt-get update @@ -47,10 +52,11 @@ jobs: # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. # You can remove the one that doesn't apply to your app to speed up the workflow a bit. - - name: install frontend dependencies + - name: Install frontend dependencies run: pnpm install # change this to npm, pnpm or bun depending on which one you use. - - uses: tauri-apps/tauri-action@v0 + - name: Build Tauri app + uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -59,4 +65,4 @@ jobs: releaseBody: 'See the assets to download this version and install.' releaseDraft: true prerelease: false - args: ${{ matrix.args }} \ No newline at end of file + args: ${{ matrix.args }} From 8b5b782d51350dd2b2ffc97247406a8d8c93be54 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 10:51:53 +0200 Subject: [PATCH 06/29] fix: added missing dependecy for aarch64 linux --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9af166f..19e9e72 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,6 +44,10 @@ jobs: # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} + - name: Add aarch64-unknown-linux-gnu target + if: matrix.args == '--target aarch64-unknown-linux-gnu' + run: rustup target add aarch64-unknown-linux-gnu + - name: Install dependencies (ubuntu only) if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above. run: | From 611c7d5414e8a06f8d9e57952b0b94c110d508dd Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 10:52:18 +0200 Subject: [PATCH 07/29] fix: changed setting up of autolaunch for linux platforms --- src-tauri/src/utils/setup.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/utils/setup.rs b/src-tauri/src/utils/setup.rs index bade1e7..03b4678 100644 --- a/src-tauri/src/utils/setup.rs +++ b/src-tauri/src/utils/setup.rs @@ -120,7 +120,15 @@ fn get_auto_launch(app: &AppHandle) -> Result Date: Wed, 16 Oct 2024 11:43:34 +0200 Subject: [PATCH 08/29] fix: added missing dependecies for aarch64 linux build --- .github/workflows/build.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 19e9e72..38379e2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,6 +55,15 @@ jobs: sudo apt-get install -y libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. # You can remove the one that doesn't apply to your app to speed up the workflow a bit. + + - name: Setup cross-compilation for aarch64 + if: matrix.args == '--target aarch64-unknown-linux-gnu' + run: | + sudo apt-get update + sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + sudo apt-get install -y libgtk-3-dev:arm64 libwebkit2gtk-4.0-dev:arm64 libappindicator3-dev:arm64 librsvg2-dev:arm64 + echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV + echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - name: Install frontend dependencies run: pnpm install # change this to npm, pnpm or bun depending on which one you use. From 60b69506f9480fc5817bb806fa10307f190b5f64 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 12:14:32 +0200 Subject: [PATCH 09/29] fix: added packages for cross-compilation --- .github/workflows/build.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 38379e2..65e69b7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,14 +59,18 @@ jobs: - name: Setup cross-compilation for aarch64 if: matrix.args == '--target aarch64-unknown-linux-gnu' run: | + sudo dpkg --add-architecture arm64 sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu sudo apt-get install -y libgtk-3-dev:arm64 libwebkit2gtk-4.0-dev:arm64 libappindicator3-dev:arm64 librsvg2-dev:arm64 echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV + echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV + echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV + echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV - name: Install frontend dependencies - run: pnpm install # change this to npm, pnpm or bun depending on which one you use. + run: pnpm install - name: Build Tauri app uses: tauri-apps/tauri-action@v0 From cda45b2df0a68e815af10b24acf0c63a57bcf44f Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 12:17:53 +0200 Subject: [PATCH 10/29] fix: implemented cross-compilation toolchain for aarch64 linux --- .github/workflows/build.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 65e69b7..0bf1d17 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,27 +48,25 @@ jobs: if: matrix.args == '--target aarch64-unknown-linux-gnu' run: rustup target add aarch64-unknown-linux-gnu - - name: Install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above. - run: | - sudo apt-get update - sudo apt-get install -y libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. - # You can remove the one that doesn't apply to your app to speed up the workflow a bit. - - name: Setup cross-compilation for aarch64 if: matrix.args == '--target aarch64-unknown-linux-gnu' run: | - sudo dpkg --add-architecture arm64 sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - sudo apt-get install -y libgtk-3-dev:arm64 libwebkit2gtk-4.0-dev:arm64 libappindicator3-dev:arm64 librsvg2-dev:arm64 - echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV - echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV + echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV + echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV + - name: Install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-22.04' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. + # You can remove the one that doesn't apply to your app to speed up the workflow a bit. + - name: Install frontend dependencies run: pnpm install From 1c14193440d872642cbf0e3fb2020ac3cff453db Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 12:25:14 +0200 Subject: [PATCH 11/29] fix: added openssl config for linux deployment --- .github/workflows/build.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0bf1d17..a7db43b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,31 +51,34 @@ jobs: - name: Setup cross-compilation for aarch64 if: matrix.args == '--target aarch64-unknown-linux-gnu' run: | + sudo dpkg --add-architecture arm64 sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + sudo apt-get install -y libssl-dev:arm64 echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV + echo "OPENSSL_DIR=/usr/include/aarch64-linux-gnu" >> $GITHUB_ENV + echo "OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu" >> $GITHUB_ENV + echo "OPENSSL_INCLUDE_DIR=/usr/include/aarch64-linux-gnu" >> $GITHUB_ENV - name: Install dependencies (ubuntu only) if: matrix.platform == 'ubuntu-22.04' run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. - # You can remove the one that doesn't apply to your app to speed up the workflow a bit. - - - name: Install frontend dependencies - run: pnpm install - name: Build Tauri app uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OPENSSL_DIR: /usr/include/aarch64-linux-gnu + OPENSSL_LIB_DIR: /usr/lib/aarch64-linux-gnu + OPENSSL_INCLUDE_DIR: /usr/include/aarch64-linux-gnu with: - tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version. + tagName: app-v__VERSION__ releaseName: 'App v__VERSION__' releaseBody: 'See the assets to download this version and install.' releaseDraft: true From 230d26b1de9ca1faf5ed4084bbbd3234d907c6a4 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 12:28:28 +0200 Subject: [PATCH 12/29] fix: removed unused packages --- .github/workflows/build.yml | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a7db43b..62b83c7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,35 +48,36 @@ jobs: if: matrix.args == '--target aarch64-unknown-linux-gnu' run: rustup target add aarch64-unknown-linux-gnu + - name: Install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-22.04' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf libssl-dev + - name: Setup cross-compilation for aarch64 if: matrix.args == '--target aarch64-unknown-linux-gnu' run: | - sudo dpkg --add-architecture arm64 sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - sudo apt-get install -y libssl-dev:arm64 echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - echo "OPENSSL_DIR=/usr/include/aarch64-linux-gnu" >> $GITHUB_ENV - echo "OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu" >> $GITHUB_ENV - echo "OPENSSL_INCLUDE_DIR=/usr/include/aarch64-linux-gnu" >> $GITHUB_ENV + echo "OPENSSL_DIR=/usr/include" >> $GITHUB_ENV + echo "OPENSSL_LIB_DIR=/usr/lib" >> $GITHUB_ENV + echo "OPENSSL_INCLUDE_DIR=/usr/include" >> $GITHUB_ENV - - name: Install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-22.04' - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + - name: Install frontend dependencies + run: pnpm install # change this to npm, pnpm or bun depending on which one you use. - name: Build Tauri app uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - OPENSSL_DIR: /usr/include/aarch64-linux-gnu - OPENSSL_LIB_DIR: /usr/lib/aarch64-linux-gnu - OPENSSL_INCLUDE_DIR: /usr/include/aarch64-linux-gnu + OPENSSL_DIR: /usr/include + OPENSSL_LIB_DIR: /usr/lib + OPENSSL_INCLUDE_DIR: /usr/include with: tagName: app-v__VERSION__ releaseName: 'App v__VERSION__' From 31ca2a05d778cd940d34439224b2b25e80bae906 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 12:35:56 +0200 Subject: [PATCH 13/29] fix: add openssl only for aarch64 linux build --- .github/workflows/build.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 62b83c7..fb8efbd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,21 +52,22 @@ jobs: if: matrix.platform == 'ubuntu-22.04' run: | sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf libssl-dev + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - name: Setup cross-compilation for aarch64 if: matrix.args == '--target aarch64-unknown-linux-gnu' run: | sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + sudo apt-get install -y libssl-dev pkg-config echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV - echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV - echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - echo "OPENSSL_DIR=/usr/include" >> $GITHUB_ENV + echo "OPENSSL_DIR=/usr" >> $GITHUB_ENV echo "OPENSSL_LIB_DIR=/usr/lib" >> $GITHUB_ENV echo "OPENSSL_INCLUDE_DIR=/usr/include" >> $GITHUB_ENV + echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV + echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - name: Install frontend dependencies run: pnpm install # change this to npm, pnpm or bun depending on which one you use. @@ -75,9 +76,6 @@ jobs: uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - OPENSSL_DIR: /usr/include - OPENSSL_LIB_DIR: /usr/lib - OPENSSL_INCLUDE_DIR: /usr/include with: tagName: app-v__VERSION__ releaseName: 'App v__VERSION__' From f7136378f28e6ded890f615e1173d8c68a4d452b Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 12:44:40 +0200 Subject: [PATCH 14/29] fix: updated openssl configuration for aarch64 --- .github/workflows/build.yml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fb8efbd..ef0d50b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,16 +59,26 @@ jobs: run: | sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - sudo apt-get install -y libssl-dev pkg-config + sudo apt-get install -y libssl-dev:amd64 libssl-dev:arm64 echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV - echo "OPENSSL_DIR=/usr" >> $GITHUB_ENV - echo "OPENSSL_LIB_DIR=/usr/lib" >> $GITHUB_ENV - echo "OPENSSL_INCLUDE_DIR=/usr/include" >> $GITHUB_ENV echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV + - name: Install OpenSSL for aarch64 + if: matrix.args == '--target aarch64-unknown-linux-gnu' + run: | + wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz + tar xzf openssl-1.1.1k.tar.gz + cd openssl-1.1.1k + ./Configure linux-aarch64 --prefix=$HOME/openssl --openssldir=$HOME/openssl no-shared + make -j$(nproc) + make install_sw + echo "OPENSSL_DIR=$HOME/openssl" >> $GITHUB_ENV + echo "OPENSSL_INCLUDE_DIR=$HOME/openssl/include" >> $GITHUB_ENV + echo "OPENSSL_LIB_DIR=$HOME/openssl/lib" >> $GITHUB_ENV + - name: Install frontend dependencies run: pnpm install # change this to npm, pnpm or bun depending on which one you use. From 36c1afb504e845f88fee570e902e83a9764cecd9 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 12:49:03 +0200 Subject: [PATCH 15/29] fix: removed non existing package --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ef0d50b..321d595 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,7 +59,6 @@ jobs: run: | sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - sudo apt-get install -y libssl-dev:amd64 libssl-dev:arm64 echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV From 588c34e1d6fc11441e40cb116de1d1464800eb81 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 13:02:27 +0200 Subject: [PATCH 16/29] fix: openssl config --- .github/workflows/build.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 321d595..8f595d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -68,15 +68,15 @@ jobs: - name: Install OpenSSL for aarch64 if: matrix.args == '--target aarch64-unknown-linux-gnu' run: | - wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz - tar xzf openssl-1.1.1k.tar.gz - cd openssl-1.1.1k - ./Configure linux-aarch64 --prefix=$HOME/openssl --openssldir=$HOME/openssl no-shared - make -j$(nproc) - make install_sw - echo "OPENSSL_DIR=$HOME/openssl" >> $GITHUB_ENV - echo "OPENSSL_INCLUDE_DIR=$HOME/openssl/include" >> $GITHUB_ENV - echo "OPENSSL_LIB_DIR=$HOME/openssl/lib" >> $GITHUB_ENV + sudo apt-get update + sudo apt-get install -y libssl-dev:amd64 + wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl-dev_1.1.1f-1ubuntu2.19_arm64.deb + wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.19_arm64.deb + sudo dpkg -i --force-all libssl1.1_1.1.1f-1ubuntu2.19_arm64.deb + sudo dpkg -i --force-all libssl-dev_1.1.1f-1ubuntu2.19_arm64.deb + echo "OPENSSL_DIR=/usr/include/aarch64-linux-gnu" >> $GITHUB_ENV + echo "OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu" >> $GITHUB_ENV + echo "OPENSSL_INCLUDE_DIR=/usr/include/aarch64-linux-gnu" >> $GITHUB_ENV - name: Install frontend dependencies run: pnpm install # change this to npm, pnpm or bun depending on which one you use. From 2d5e0252a3b553131c7da39e86b10cbb6ceabd18 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 13:09:33 +0200 Subject: [PATCH 17/29] fix: updated openssl config --- .github/workflows/build.yml | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8f595d9..709b424 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,24 +59,15 @@ jobs: run: | sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + sudo apt-get install -y libssl-dev pkg-config echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - - - name: Install OpenSSL for aarch64 - if: matrix.args == '--target aarch64-unknown-linux-gnu' - run: | - sudo apt-get update - sudo apt-get install -y libssl-dev:amd64 - wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl-dev_1.1.1f-1ubuntu2.19_arm64.deb - wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.19_arm64.deb - sudo dpkg -i --force-all libssl1.1_1.1.1f-1ubuntu2.19_arm64.deb - sudo dpkg -i --force-all libssl-dev_1.1.1f-1ubuntu2.19_arm64.deb - echo "OPENSSL_DIR=/usr/include/aarch64-linux-gnu" >> $GITHUB_ENV + echo "OPENSSL_DIR=/usr" >> $GITHUB_ENV echo "OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu" >> $GITHUB_ENV - echo "OPENSSL_INCLUDE_DIR=/usr/include/aarch64-linux-gnu" >> $GITHUB_ENV + echo "OPENSSL_INCLUDE_DIR=/usr/include" >> $GITHUB_ENV - name: Install frontend dependencies run: pnpm install # change this to npm, pnpm or bun depending on which one you use. From c6c8597e5a5b1bbabaf48a89883dc26f013fe201 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 13:19:56 +0200 Subject: [PATCH 18/29] fix: trying to configure correctly openssl --- .github/workflows/build.yml | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 709b424..d30d0cd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,7 +42,7 @@ jobs: uses: dtolnay/rust-toolchain@stable with: # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. - targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} + targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || matrix.args == '--target aarch64-unknown-linux-gnu' && 'aarch64-unknown-linux-gnu' || '' }} - name: Add aarch64-unknown-linux-gnu target if: matrix.args == '--target aarch64-unknown-linux-gnu' @@ -63,11 +63,24 @@ jobs: echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV - echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV + + - name: Download and set up OpenSSL for cross-compilation + if: matrix.args == '--target aarch64-unknown-linux-gnu' + run: | + wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz + tar -xzf openssl-1.1.1k.tar.gz + cd openssl-1.1.1k + ./Configure linux-aarch64 --prefix=$HOME/openssl-aarch64 --cross-compile-prefix=aarch64-linux-gnu- + make -j$(nproc) + make install_sw + cd .. + echo "OPENSSL_DIR=$HOME/openssl-aarch64" >> $GITHUB_ENV + echo "OPENSSL_LIB_DIR=$HOME/openssl-aarch64/lib" >> $GITHUB_ENV + echo "OPENSSL_INCLUDE_DIR=$HOME/openssl-aarch64/include" >> $GITHUB_ENV + echo "PKG_CONFIG_PATH=$HOME/openssl-aarch64/lib/pkgconfig" >> $GITHUB_ENV echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - echo "OPENSSL_DIR=/usr" >> $GITHUB_ENV - echo "OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu" >> $GITHUB_ENV - echo "OPENSSL_INCLUDE_DIR=/usr/include" >> $GITHUB_ENV + echo "PKG_CONFIG_SYSROOT_DIR=/" >> $GITHUB_ENV + echo "OPENSSL_STATIC=1" >> $GITHUB_ENV - name: Install frontend dependencies run: pnpm install # change this to npm, pnpm or bun depending on which one you use. @@ -76,6 +89,13 @@ jobs: uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OPENSSL_DIR: ${{ env.OPENSSL_DIR }} + OPENSSL_LIB_DIR: ${{ env.OPENSSL_LIB_DIR }} + OPENSSL_INCLUDE_DIR: ${{ env.OPENSSL_INCLUDE_DIR }} + PKG_CONFIG_PATH: ${{ env.PKG_CONFIG_PATH }} + PKG_CONFIG_ALLOW_CROSS: ${{ env.PKG_CONFIG_ALLOW_CROSS }} + PKG_CONFIG_SYSROOT_DIR: ${{ env.PKG_CONFIG_SYSROOT_DIR }} + OPENSSL_STATIC: ${{ env.OPENSSL_STATIC }} with: tagName: app-v__VERSION__ releaseName: 'App v__VERSION__' From 3db6969f33a25e2ae6dcea7829d38a06ae825ad9 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Wed, 16 Oct 2024 13:28:11 +0200 Subject: [PATCH 19/29] fix: implemented zig for cross-compilation to aarch linux build --- .github/workflows/build.yml | 46 +++++++++++++++---------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d30d0cd..a555b7f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,10 +44,6 @@ jobs: # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || matrix.args == '--target aarch64-unknown-linux-gnu' && 'aarch64-unknown-linux-gnu' || '' }} - - name: Add aarch64-unknown-linux-gnu target - if: matrix.args == '--target aarch64-unknown-linux-gnu' - run: rustup target add aarch64-unknown-linux-gnu - - name: Install dependencies (ubuntu only) if: matrix.platform == 'ubuntu-22.04' run: | @@ -64,38 +60,32 @@ jobs: echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV - - name: Download and set up OpenSSL for cross-compilation + - name: Install and configure Zig for aarch64 cross-compilation if: matrix.args == '--target aarch64-unknown-linux-gnu' run: | - wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz - tar -xzf openssl-1.1.1k.tar.gz - cd openssl-1.1.1k - ./Configure linux-aarch64 --prefix=$HOME/openssl-aarch64 --cross-compile-prefix=aarch64-linux-gnu- - make -j$(nproc) - make install_sw - cd .. - echo "OPENSSL_DIR=$HOME/openssl-aarch64" >> $GITHUB_ENV - echo "OPENSSL_LIB_DIR=$HOME/openssl-aarch64/lib" >> $GITHUB_ENV - echo "OPENSSL_INCLUDE_DIR=$HOME/openssl-aarch64/include" >> $GITHUB_ENV - echo "PKG_CONFIG_PATH=$HOME/openssl-aarch64/lib/pkgconfig" >> $GITHUB_ENV - echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - echo "PKG_CONFIG_SYSROOT_DIR=/" >> $GITHUB_ENV - echo "OPENSSL_STATIC=1" >> $GITHUB_ENV + wget https://ziglang.org/download/0.11.0/zig-linux-x86_64-0.11.0.tar.xz + tar -xf zig-linux-x86_64-0.11.0.tar.xz + echo "ZIG_PATH=$PWD/zig-linux-x86_64-0.11.0/zig" >> $GITHUB_ENV + echo "$PWD/zig-linux-x86_64-0.11.0" >> $GITHUB_PATH + zig-linux-x86_64-0.11.0/zig version + echo "CARGO_ZIGBUILD_ZIG=$PWD/zig-linux-x86_64-0.11.0/zig" >> $GITHUB_ENV + cargo install cargo-zigbuild - name: Install frontend dependencies - run: pnpm install # change this to npm, pnpm or bun depending on which one you use. + run: pnpm install - - name: Build Tauri app + - name: Build Tauri app for AArch64 + if: matrix.args == '--target aarch64-unknown-linux-gnu' + env: + RUSTFLAGS: "-C target-feature=+crt-static" + run: | + cargo zigbuild --release --target aarch64-unknown-linux-gnu + + - name: Build Tauri app for other targets + if: matrix.args != '--target aarch64-unknown-linux-gnu' uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - OPENSSL_DIR: ${{ env.OPENSSL_DIR }} - OPENSSL_LIB_DIR: ${{ env.OPENSSL_LIB_DIR }} - OPENSSL_INCLUDE_DIR: ${{ env.OPENSSL_INCLUDE_DIR }} - PKG_CONFIG_PATH: ${{ env.PKG_CONFIG_PATH }} - PKG_CONFIG_ALLOW_CROSS: ${{ env.PKG_CONFIG_ALLOW_CROSS }} - PKG_CONFIG_SYSROOT_DIR: ${{ env.PKG_CONFIG_SYSROOT_DIR }} - OPENSSL_STATIC: ${{ env.OPENSSL_STATIC }} with: tagName: app-v__VERSION__ releaseName: 'App v__VERSION__' From 9ecb361cbe506b73e9108873c384b9d6e59a0b82 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Thu, 17 Oct 2024 10:50:31 +0200 Subject: [PATCH 20/29] fix: added openssl-dev package for linux distribution --- .github/workflows/build.yml | 45 +++++++++++++------------------------ 1 file changed, 16 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a555b7f..53085b6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,54 +42,41 @@ jobs: uses: dtolnay/rust-toolchain@stable with: # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. - targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || matrix.args == '--target aarch64-unknown-linux-gnu' && 'aarch64-unknown-linux-gnu' || '' }} + targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - - name: Install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-22.04' - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + - name: Add aarch64-unknown-linux-gnu target + if: matrix.args == '--target aarch64-unknown-linux-gnu' + run: rustup target add aarch64-unknown-linux-gnu - name: Setup cross-compilation for aarch64 if: matrix.args == '--target aarch64-unknown-linux-gnu' run: | sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - sudo apt-get install -y libssl-dev pkg-config echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV - - - name: Install and configure Zig for aarch64 cross-compilation - if: matrix.args == '--target aarch64-unknown-linux-gnu' + echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV + echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV + - name: Install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-22.04' run: | - wget https://ziglang.org/download/0.11.0/zig-linux-x86_64-0.11.0.tar.xz - tar -xf zig-linux-x86_64-0.11.0.tar.xz - echo "ZIG_PATH=$PWD/zig-linux-x86_64-0.11.0/zig" >> $GITHUB_ENV - echo "$PWD/zig-linux-x86_64-0.11.0" >> $GITHUB_PATH - zig-linux-x86_64-0.11.0/zig version - echo "CARGO_ZIGBUILD_ZIG=$PWD/zig-linux-x86_64-0.11.0/zig" >> $GITHUB_ENV - cargo install cargo-zigbuild - + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf pkg-config libssl-dev + # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. + # You can remove the one that doesn't apply to your app to speed up the workflow a bit. + - name: Install frontend dependencies run: pnpm install - - name: Build Tauri app for AArch64 - if: matrix.args == '--target aarch64-unknown-linux-gnu' - env: - RUSTFLAGS: "-C target-feature=+crt-static" - run: | - cargo zigbuild --release --target aarch64-unknown-linux-gnu - - - name: Build Tauri app for other targets - if: matrix.args != '--target aarch64-unknown-linux-gnu' + - name: Build Tauri app uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tagName: app-v__VERSION__ + tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version. releaseName: 'App v__VERSION__' releaseBody: 'See the assets to download this version and install.' releaseDraft: true prerelease: false - args: ${{ matrix.args }} + args: ${{ matrix.args }} \ No newline at end of file From 3e8e8da06c62cb7d94d2e4c72075fa90ffef5754 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Thu, 17 Oct 2024 10:59:35 +0200 Subject: [PATCH 21/29] fix: removed extra env vars --- .github/workflows/build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 53085b6..acd774e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,8 +56,7 @@ jobs: echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV - echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV - echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV + - name: Install dependencies (ubuntu only) if: matrix.platform == 'ubuntu-22.04' run: | From d74ad7f04e13f3712a18bd375c511e50cfb25293 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Thu, 17 Oct 2024 11:17:31 +0200 Subject: [PATCH 22/29] fix: manually set openssl config variables for aarch64 --- .github/workflows/build.yml | 47 ++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index acd774e..efdfc14 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,6 +56,26 @@ jobs: echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV + echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV + echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV + + - name: Download and set up OpenSSL for cross-compilation + if: matrix.args == '--target aarch64-unknown-linux-gnu' + run: | + wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz + tar -xzf openssl-1.1.1k.tar.gz + cd openssl-1.1.1k + ./Configure linux-aarch64 --prefix=$HOME/openssl-aarch64 --cross-compile-prefix=aarch64-linux-gnu- + make -j$(nproc) + make install_sw + cd .. + echo "OPENSSL_DIR=$HOME/openssl-aarch64" >> $GITHUB_ENV + echo "OPENSSL_LIB_DIR=$HOME/openssl-aarch64/lib" >> $GITHUB_ENV + echo "OPENSSL_INCLUDE_DIR=$HOME/openssl-aarch64/include" >> $GITHUB_ENV + echo "PKG_CONFIG_PATH=$HOME/openssl-aarch64/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV + echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV + echo "PKG_CONFIG_SYSROOT_DIR=/" >> $GITHUB_ENV + echo "OPENSSL_STATIC=1" >> $GITHUB_ENV - name: Install dependencies (ubuntu only) if: matrix.platform == 'ubuntu-22.04' @@ -64,16 +84,37 @@ jobs: sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf pkg-config libssl-dev # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. # You can remove the one that doesn't apply to your app to speed up the workflow a bit. - + - name: Install frontend dependencies run: pnpm install - - name: Build Tauri app + - name: Build Tauri app (aarch64) + if: matrix.args == '--target aarch64-unknown-linux-gnu' + uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OPENSSL_DIR: ${{ env.OPENSSL_DIR }} + OPENSSL_LIB_DIR: ${{ env.OPENSSL_LIB_DIR }} + OPENSSL_INCLUDE_DIR: ${{ env.OPENSSL_INCLUDE_DIR }} + PKG_CONFIG_PATH: ${{ env.PKG_CONFIG_PATH }} + PKG_CONFIG_ALLOW_CROSS: ${{ env.PKG_CONFIG_ALLOW_CROSS }} + PKG_CONFIG_SYSROOT_DIR: ${{ env.PKG_CONFIG_SYSROOT_DIR }} + OPENSSL_STATIC: ${{ env.OPENSSL_STATIC }} + with: + tagName: app-v__VERSION__ + releaseName: 'App v__VERSION__' + releaseBody: 'See the assets to download this version and install.' + releaseDraft: true + prerelease: false + args: ${{ matrix.args }} + + - name: Build Tauri app (non-aarch64) + if: matrix.args != '--target aarch64-unknown-linux-gnu' uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version. + tagName: app-v__VERSION__ releaseName: 'App v__VERSION__' releaseBody: 'See the assets to download this version and install.' releaseDraft: true From c488ea7cda41820ef926c33bb5a7613db018350e Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Thu, 17 Oct 2024 11:35:40 +0200 Subject: [PATCH 23/29] fix: added missing dependecies for aarch64 linux --- .github/workflows/build.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index efdfc14..a94618f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,7 +52,16 @@ jobs: if: matrix.args == '--target aarch64-unknown-linux-gnu' run: | sudo apt-get update - sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + sudo apt-get install -y \ + gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \ + libstdc++-11-dev-arm64-cross \ + zlib1g-dev \ + libsnappy-dev \ + libbz2-dev \ + liblz4-dev \ + libzstd-dev \ + clang \ + libc6-dev-arm64-cross echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV @@ -92,6 +101,8 @@ jobs: if: matrix.args == '--target aarch64-unknown-linux-gnu' uses: tauri-apps/tauri-action@v0 env: + C_INCLUDE_PATH: /usr/lib/gcc-cross/aarch64-linux-gnu/11/include + CXX_INCLUDE_PATH: /usr/lib/gcc-cross/aarch64-linux-gnu/11/include/c++ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} OPENSSL_DIR: ${{ env.OPENSSL_DIR }} OPENSSL_LIB_DIR: ${{ env.OPENSSL_LIB_DIR }} @@ -100,6 +111,7 @@ jobs: PKG_CONFIG_ALLOW_CROSS: ${{ env.PKG_CONFIG_ALLOW_CROSS }} PKG_CONFIG_SYSROOT_DIR: ${{ env.PKG_CONFIG_SYSROOT_DIR }} OPENSSL_STATIC: ${{ env.OPENSSL_STATIC }} + RUSTFLAGS: "-C link-arg=-lstdc++ -C link-arg=-lpthread -C link-arg=-lc" with: tagName: app-v__VERSION__ releaseName: 'App v__VERSION__' From 34650973943fb13ed34b823c97f608ad3a4716f5 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Sat, 19 Oct 2024 14:19:30 +0200 Subject: [PATCH 24/29] fix: removed aarch64 build from initial file, changed logic and created new file for aarch64 --- .github/workflows/build.yml | 72 +---------------------------- .github/workflows/build_aarch64.yml | 53 +++++++++++++++++++++ 2 files changed, 55 insertions(+), 70 deletions(-) create mode 100644 .github/workflows/build_aarch64.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a94618f..52c5047 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,8 +21,6 @@ jobs: args: '--target x86_64-apple-darwin' - platform: 'ubuntu-22.04' # for Tauri v1 you could replace this with ubuntu-20.04. args: '--target x86_64-unknown-linux-gnu' - - platform: 'ubuntu-22.04' # for Tauri v1 you could replace this with ubuntu-20.04. - args: '--target aarch64-unknown-linux-gnu' runs-on: ${{ matrix.platform }} steps: @@ -44,84 +42,18 @@ jobs: # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - - name: Add aarch64-unknown-linux-gnu target - if: matrix.args == '--target aarch64-unknown-linux-gnu' - run: rustup target add aarch64-unknown-linux-gnu - - - name: Setup cross-compilation for aarch64 - if: matrix.args == '--target aarch64-unknown-linux-gnu' - run: | - sudo apt-get update - sudo apt-get install -y \ - gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \ - libstdc++-11-dev-arm64-cross \ - zlib1g-dev \ - libsnappy-dev \ - libbz2-dev \ - liblz4-dev \ - libzstd-dev \ - clang \ - libc6-dev-arm64-cross - echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV - echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV - echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV - echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV - echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - - - name: Download and set up OpenSSL for cross-compilation - if: matrix.args == '--target aarch64-unknown-linux-gnu' - run: | - wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz - tar -xzf openssl-1.1.1k.tar.gz - cd openssl-1.1.1k - ./Configure linux-aarch64 --prefix=$HOME/openssl-aarch64 --cross-compile-prefix=aarch64-linux-gnu- - make -j$(nproc) - make install_sw - cd .. - echo "OPENSSL_DIR=$HOME/openssl-aarch64" >> $GITHUB_ENV - echo "OPENSSL_LIB_DIR=$HOME/openssl-aarch64/lib" >> $GITHUB_ENV - echo "OPENSSL_INCLUDE_DIR=$HOME/openssl-aarch64/include" >> $GITHUB_ENV - echo "PKG_CONFIG_PATH=$HOME/openssl-aarch64/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV - echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - echo "PKG_CONFIG_SYSROOT_DIR=/" >> $GITHUB_ENV - echo "OPENSSL_STATIC=1" >> $GITHUB_ENV - - name: Install dependencies (ubuntu only) if: matrix.platform == 'ubuntu-22.04' run: | sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf pkg-config libssl-dev + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. # You can remove the one that doesn't apply to your app to speed up the workflow a bit. - name: Install frontend dependencies run: pnpm install - - name: Build Tauri app (aarch64) - if: matrix.args == '--target aarch64-unknown-linux-gnu' - uses: tauri-apps/tauri-action@v0 - env: - C_INCLUDE_PATH: /usr/lib/gcc-cross/aarch64-linux-gnu/11/include - CXX_INCLUDE_PATH: /usr/lib/gcc-cross/aarch64-linux-gnu/11/include/c++ - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - OPENSSL_DIR: ${{ env.OPENSSL_DIR }} - OPENSSL_LIB_DIR: ${{ env.OPENSSL_LIB_DIR }} - OPENSSL_INCLUDE_DIR: ${{ env.OPENSSL_INCLUDE_DIR }} - PKG_CONFIG_PATH: ${{ env.PKG_CONFIG_PATH }} - PKG_CONFIG_ALLOW_CROSS: ${{ env.PKG_CONFIG_ALLOW_CROSS }} - PKG_CONFIG_SYSROOT_DIR: ${{ env.PKG_CONFIG_SYSROOT_DIR }} - OPENSSL_STATIC: ${{ env.OPENSSL_STATIC }} - RUSTFLAGS: "-C link-arg=-lstdc++ -C link-arg=-lpthread -C link-arg=-lc" - with: - tagName: app-v__VERSION__ - releaseName: 'App v__VERSION__' - releaseBody: 'See the assets to download this version and install.' - releaseDraft: true - prerelease: false - args: ${{ matrix.args }} - - - name: Build Tauri app (non-aarch64) - if: matrix.args != '--target aarch64-unknown-linux-gnu' + - name: Build Tauri app uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml new file mode 100644 index 0000000..a17a6d1 --- /dev/null +++ b/.github/workflows/build_aarch64.yml @@ -0,0 +1,53 @@ +name: AArch64 compile and build +on: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: pguyot/arm-runner-action@v2.5.2 + with: + base_image: https://dietpi.com/downloads/images/DietPi_RPi-ARMv8-Bullseye.img.xz + cpu: cortex-a53 + bind_mount_repository: true + image_additional_mb: 10240 + optimize_image: false + commands: | + # Rust complains (rightly) that $HOME doesn't match eid home + export HOME=/root + # Workaround to CI worker being stuck on Updating crates.io index + export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse + # Install setup prerequisites + apt-get update -y --allow-releaseinfo-change + apt-get upgrade -y + apt-get autoremove -y + apt-get install curl + curl https://sh.rustup.rs -sSf | sh -s -- -y + . "$HOME/.cargo/env" + curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash + # Install framework specific packages + apt-get install -y nodejs + npm install next@latest react@latest react-dom@latest eslint-config-next@latest + # Install build tools and tauri-cli requirements + apt-get install -y libwebkit2gtk-4.0-dev build-essential wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev + cargo install tauri-cli + # Install frontend dependencies + npm install + # Build the application + cargo tauri build + + - name: Get application name and version + id: get_info + run: | + APP_NAME=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "your_crate_name") | .name') + APP_VERSION=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "your_crate_name") | .version') + echo "APP_NAME=$APP_NAME" >> $GITHUB_ENV + echo "APP_VERSION=$APP_VERSION" >> $GITHUB_ENV + + - name: Upload deb bundle + uses: actions/upload-artifact@v3 + with: + name: Debian Bundle + path: ${{ github.workspace }}/target/release/bundle/deb/${{ env.APP_NAME }}_${{ env.APP_VERSION }}_arm64.deb From 59fb18b724de3ec9c3621b58eea895c6903549c1 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Sat, 19 Oct 2024 14:26:48 +0200 Subject: [PATCH 25/29] fix: added correct triggers --- .github/workflows/build.yml | 10 +++++++--- .github/workflows/build_aarch64.yml | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 52c5047..a0dc0f1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,11 +1,15 @@ name: 'publish' on: + workflow_dispatch: push: - branches: [ '**' ] # To run on any branch + branches: + - master # Explicitly set to master + paths: + - 'node-ui/**' pull_request: - branches: [ '**' ] - workflow_dispatch: + types: + - closed jobs: publish-tauri: diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index a17a6d1..bca6847 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -1,6 +1,14 @@ name: AArch64 compile and build on: workflow_dispatch: + push: + branches: + - master # Explicitly set to master + paths: + - 'node-ui/**' + pull_request: + types: + - closed jobs: build: From 093b6ff2bc66fb20b4cb1479ef5a83ffd90730ae Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Sat, 19 Oct 2024 14:29:34 +0200 Subject: [PATCH 26/29] fix: removed condition for node-ui --- .github/workflows/build.yml | 2 -- .github/workflows/build_aarch64.yml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a0dc0f1..b1042c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,8 +5,6 @@ on: push: branches: - master # Explicitly set to master - paths: - - 'node-ui/**' pull_request: types: - closed diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index bca6847..9d27233 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -4,8 +4,6 @@ on: push: branches: - master # Explicitly set to master - paths: - - 'node-ui/**' pull_request: types: - closed From d7cf86318172f70393fd604e6594aee8a7f58eff Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Tue, 22 Oct 2024 11:22:09 +0200 Subject: [PATCH 27/29] fix: updated workflow file for aarch64 linux build --- .github/workflows/build_aarch64.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index 9d27233..a9c7e5c 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -35,14 +35,16 @@ jobs: curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash # Install framework specific packages apt-get install -y nodejs - npm install next@latest react@latest react-dom@latest eslint-config-next@latest + # Use pnpm instead of npm + npm install -g pnpm + pnpm install next@latest react@latest react-dom@latest eslint-config-next@latest # Install build tools and tauri-cli requirements - apt-get install -y libwebkit2gtk-4.0-dev build-essential wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev - cargo install tauri-cli + apt-get install -y libwebkit2gtk-4.0-dev build-essential wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf + cargo install tauri-cli --version 1.6.2 # Install frontend dependencies - npm install + pnpm install # Build the application - cargo tauri build + cargo tauri build --target aarch64-unknown-linux-gnu --bundles deb,rpm - name: Get application name and version id: get_info From 50f72455d7e0079901e74575a93de1d94dde47b8 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Sun, 27 Oct 2024 09:08:27 +0100 Subject: [PATCH 28/29] fix: enabled prod release --- .github/workflows/build.yml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b1042c8..8639a04 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - master # Explicitly set to master + - master pull_request: types: - closed @@ -17,11 +17,11 @@ jobs: fail-fast: false matrix: include: - - platform: 'macos-latest' # for Arm based macs (M1 and above). + - platform: 'macos-latest' args: '--target aarch64-apple-darwin' - - platform: 'macos-latest' # for Intel based macs. + - platform: 'macos-latest' args: '--target x86_64-apple-darwin' - - platform: 'ubuntu-22.04' # for Tauri v1 you could replace this with ubuntu-20.04. + - platform: 'ubuntu-22.04' args: '--target x86_64-unknown-linux-gnu' runs-on: ${{ matrix.platform }} @@ -41,7 +41,6 @@ jobs: - name: Install Rust stable uses: dtolnay/rust-toolchain@stable with: - # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - name: Install dependencies (ubuntu only) @@ -49,20 +48,22 @@ jobs: run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - # webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2. - # You can remove the one that doesn't apply to your app to speed up the workflow a bit. - name: Install frontend dependencies run: pnpm install + - name: Get version + id: get_version + run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV + - name: Build Tauri app uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tagName: app-v__VERSION__ - releaseName: 'App v__VERSION__' + tagName: app-v${{ env.VERSION }} + releaseName: 'App v${{ env.VERSION }}' releaseBody: 'See the assets to download this version and install.' - releaseDraft: true + releaseDraft: false # Change to true if you want to keep it as a draft prerelease: false - args: ${{ matrix.args }} \ No newline at end of file + args: ${{ matrix.args }} From e9fdd1b806eedc62eb9b296a376fd7599e33ae07 Mon Sep 17 00:00:00 2001 From: alenmestrov Date: Thu, 12 Dec 2024 09:00:13 +0100 Subject: [PATCH 29/29] fix: fixed CI script and downloading of binaries --- .github/workflows/build_aarch64.yml | 18 ++++++-- src-tauri/Cargo.lock | 10 +++-- src-tauri/Cargo.toml | 5 ++- src-tauri/build.rs | 65 ++++++++++++++++++++++++++++- src-tauri/shared_utils/src/lib.rs | 10 ++--- src-tauri/src/utils/mod.rs | 8 ++-- 6 files changed, 97 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build_aarch64.yml b/.github/workflows/build_aarch64.yml index a9c7e5c..bff9eb8 100644 --- a/.github/workflows/build_aarch64.yml +++ b/.github/workflows/build_aarch64.yml @@ -45,12 +45,18 @@ jobs: pnpm install # Build the application cargo tauri build --target aarch64-unknown-linux-gnu --bundles deb,rpm + + # Debug: Print current directory and list files + pwd + echo "=== Listing build artifacts ===" + find . -name "*.deb" -o -name "*.rpm" - name: Get application name and version id: get_info run: | - APP_NAME=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "your_crate_name") | .name') - APP_VERSION=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "your_crate_name") | .version') + cd src-tauri + APP_NAME=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[0].name') + APP_VERSION=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[0].version') echo "APP_NAME=$APP_NAME" >> $GITHUB_ENV echo "APP_VERSION=$APP_VERSION" >> $GITHUB_ENV @@ -58,4 +64,10 @@ jobs: uses: actions/upload-artifact@v3 with: name: Debian Bundle - path: ${{ github.workspace }}/target/release/bundle/deb/${{ env.APP_NAME }}_${{ env.APP_VERSION }}_arm64.deb + path: ${{ github.workspace }}/src-tauri/target/aarch64-unknown-linux-gnu/release/bundle/deb/calimero-node-manager_0.1.0_arm64.deb + + - name: Upload rpm bundle + uses: actions/upload-artifact@v3 + with: + name: RPM Bundle + path: ${{ github.workspace }}/src-tauri/target/aarch64-unknown-linux-gnu/release/bundle/rpm/calimero-node-manager-0.1.0-1.aarch64.rpm diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 2e7f019..a5b4a06 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" [[package]] name = "arrayref" @@ -1985,6 +1985,7 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" name = "node-multiplatform-tauri" version = "0.1.0" dependencies = [ + "anyhow", "auto-launch", "chrono", "eyre", @@ -2000,6 +2001,7 @@ dependencies = [ "tauri", "tauri-build", "tauri-plugin-store", + "tokio", "toml 0.8.19", ] @@ -3695,9 +3697,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 56d2acb..2f72682 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -13,8 +13,10 @@ tauri = { version = "1" } flate2 = "1.0.34" eyre = "0.6.12" tar = "0.4.42" -reqwest = "0.12.8" +reqwest = { version = "0.12.8", features = ["json"] } shared_utils = { path = "./shared_utils" } +serde_json = "1" +tokio = "1.42.0" [dependencies] auto-launch = "0.5.0" @@ -32,6 +34,7 @@ flate2 = "1.0.34" tar = "0.4.42" reqwest = "0.12.8" shared_utils = { path = "./shared_utils" } +anyhow = "1.0.94" [features] # This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!! diff --git a/src-tauri/build.rs b/src-tauri/build.rs index 28eb3a6..b9d17d4 100644 --- a/src-tauri/build.rs +++ b/src-tauri/build.rs @@ -9,6 +9,7 @@ use std::io::BufReader; use std::io::Read; use std::path::Path; use tar::Archive; +use std::time::Duration; fn main() { tauri::async_runtime::block_on(setup_binary()).unwrap(); @@ -17,14 +18,20 @@ fn main() { async fn setup_binary() -> Result<()> { let (os, arch, target) = determine_bin_data(); - let binary_name = "meroctl"; + let binary_name = "merod"; let cache_dir = std::env::temp_dir().join(binary_name); std::fs::create_dir_all(&cache_dir).expect("Failed to create cache directory"); + // Get the latest merod release tag + let latest_release = get_latest_merod_release().await?; + let url = format!( - "https://github.com/calimero-network/core/releases/latest/download/{}.tar.gz", + "https://github.com/calimero-network/core/releases/download/{}/{}.tar.gz", + latest_release, target ); + println!("Downloading from URL: {}", url); + let cache_bin_path = cache_dir.join(format!("{}.tar.gz", binary_name)); let bin_dir = std::env::current_dir()?.join("bin").join(os).join(arch); let resource_path = bin_dir.join(binary_name); @@ -63,3 +70,57 @@ async fn download_and_extract(url: &str, cache_bin_path: &Path, bin_dir: &Path) Ok(()) } + +async fn get_latest_merod_release() -> Result { + let client = reqwest::Client::new(); + let github_token = std::env::var("GITHUB_TOKEN").ok(); + + // Maximum number of retries + let max_retries = 3; + let mut retry_count = 0; + + loop { + let mut request = client + .get("https://api.github.com/repos/calimero-network/core/releases") + .header("User-Agent", "calimero-node-manager-build"); + + if let Some(token) = &github_token { + request = request.header("Authorization", format!("token {}", token)); + } + + let response = request.send().await?; + + match response.status() { + status if status.is_success() => { + let releases: Vec = response.json().await?; + + if let Some(latest_merod) = releases.iter().find(|release| { + release["tag_name"] + .as_str() + .map_or(false, |tag| tag.starts_with("merod")) + }) { + if let Some(tag_name) = latest_merod["tag_name"].as_str() { + return Ok(tag_name.to_string()); + } + } + bail!("No merod release found in the response"); + }, + status if status.as_u16() == 403 => { + if retry_count >= max_retries { + let error_text = response.text().await?; + bail!("GitHub API rate limit exceeded after {} retries: {}", max_retries, error_text); + } + + // Exponential backoff: wait longer between each retry + let wait_time = Duration::from_secs(2u64.pow(retry_count as u32)); + tokio::time::sleep(wait_time).await; + retry_count += 1; + continue; + }, + status => { + let error_text = response.text().await?; + bail!("GitHub API error: {} - {}", status, error_text); + } + } + } +} diff --git a/src-tauri/shared_utils/src/lib.rs b/src-tauri/shared_utils/src/lib.rs index 10eb5a0..821f21d 100644 --- a/src-tauri/shared_utils/src/lib.rs +++ b/src-tauri/shared_utils/src/lib.rs @@ -6,7 +6,7 @@ pub fn determine_bin_data() -> (String, String, String) { let parts: Vec<&str> = target.split('-').collect(); let os = parts[2]; let arch = parts[0]; - let binary_name = format!("meroctl_{}", target); + let binary_name = format!("merod_{}", target); (os.to_string(), arch.to_string(), binary_name) } else { let os = match OS { @@ -21,10 +21,10 @@ pub fn determine_bin_data() -> (String, String, String) { pub fn map_os_arch_to_binary_name(os: &str, arch: &str) -> String { match (os, arch) { - ("windows", "x86_64") => "meroctl-x86_64-pc-windows-msvc", - ("darwin", "x86_64") => "meroctl_x86_64-apple-darwin", - ("darwin", "aarch64") => "meroctl_aarch64-apple-darwin", - ("linux", "x86_64") => "meroctl_x86_64-unknown-linux-gnu", + ("windows", "x86_64") => "merod-x86_64-pc-windows-msvc", + ("darwin", "x86_64") => "merod_x86_64-apple-darwin", + ("darwin", "aarch64") => "merod_aarch64-apple-darwin", + ("linux", "x86_64") => "merod_x86_64-unknown-linux-gnu", // Add more combinations as needed _ => panic!("Unsupported OS/architecture combination: {}/{}", os, arch), } diff --git a/src-tauri/src/utils/mod.rs b/src-tauri/src/utils/mod.rs index 273620f..264de6c 100644 --- a/src-tauri/src/utils/mod.rs +++ b/src-tauri/src/utils/mod.rs @@ -44,9 +44,9 @@ pub fn get_binary_path(app_handle: &AppHandle) -> Result { .join("bin") .join(os) .join(arch) - .join("meroctl")) + .join("merod")) } else { - let relative_path = format!("bin/{}/{}/meroctl", os, arch); + let relative_path = format!("bin/{}/{}/merod", os, arch); app_handle .path_resolver() .resolve_resource(&relative_path) @@ -60,7 +60,7 @@ pub fn is_node_process_running(app_handle: &AppHandle, node_name: &str) -> Resul ); let pattern = format!( - r"meroctl.*--node-name\s+\b{}\b.*run", + r"merod.*--node-name\s+\b{}\b.*run", regex_escape(node_name) ); let re = Regex::new(&pattern).map_err(|e| eyre!("Failed to create regex: {}", e))?; @@ -170,7 +170,7 @@ pub fn check_ports_availability(config: &NodeConfig) -> Result<()> { // Kill the node process pub fn kill_node_process(node_name: &str) -> std::io::Result<()> { let output = Command::new("pkill") - .args(&["-f", &format!("meroctl.*--node-name {}.*run", node_name)]) + .args(&["-f", &format!("merod.*--node-name {}.*run", node_name)]) .output()?; if !output.status.success() {