From 4e1cb0fdcf7b4c223a4bfb2da134e25ac2fd79c4 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Mon, 30 May 2022 17:13:57 +1000 Subject: [PATCH 01/15] Compile prebuilt binaries using musl target So that it is statically linked and does not depend on any dynamic library and can be run anywhere. Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index e9188a6b..baac949a 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false matrix: include: - - target: x86_64-unknown-linux-gnu + - target: x86_64-unknown-linux-musl os: ubuntu-latest output: cargo-binstall archive: tgz @@ -27,7 +27,7 @@ jobs: os: macos-latest output: cargo-binstall archive: zip - - target: armv7-unknown-linux-gnueabihf + - target: armv7-unknown-linux-musleabihf os: ubuntu-20.04 output: cargo-binstall archive: tgz @@ -48,7 +48,7 @@ jobs: override: true - name: Install openssl (apt armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} + if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} uses: ryankurte/action-apt@v0.3.0 with: arch: armhf @@ -65,15 +65,23 @@ jobs: target - name: Install cross toolchain (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} - run: sudo apt install gcc-arm-linux-gnueabihf + if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} + run: sudo apt install gcc-arm-linux-musleabihf - name: Enable cross compilation (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} + if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} run: | echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV echo "LZMA_API_STATIC=1" >> $GITHUB_ENV + - name: Install musl-tools + if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} + run: sudo apt-get install -y musl-tools + + - name: Install musl-tools + if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }} + run: sudo apt-get install -y musl-tools + - name: Build release uses: actions-rs/cargo@v1 with: From cba8a05c822163900c0aec93ec2fda62fdb6edbc Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Mon, 30 May 2022 17:18:42 +1000 Subject: [PATCH 02/15] Fix job "Install cross toolchain (armv7)" Install "gcc-arm-linux-gnueabihf" as "gcc-arm-linux-musleabihf" does not exist. Also use `apt-get` instead of `apt`. Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index baac949a..250798ef 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -66,7 +66,7 @@ jobs: - name: Install cross toolchain (armv7) if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} - run: sudo apt install gcc-arm-linux-musleabihf + run: sudo apt-get install gcc-arm-linux-gnueabihf - name: Enable cross compilation (armv7) if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} From bcc8057705c09ab8ce3da9b54e96fd22ab90f8bb Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 00:35:03 +1000 Subject: [PATCH 03/15] Add back `{x86_64, armv7}unknown-linux-gnu{eabihf}` targets Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 250798ef..99cd5039 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false matrix: include: - - target: x86_64-unknown-linux-musl + - target: x86_64-unknown-linux-gnu os: ubuntu-latest output: cargo-binstall archive: tgz @@ -27,7 +27,7 @@ jobs: os: macos-latest output: cargo-binstall archive: zip - - target: armv7-unknown-linux-musleabihf + - target: armv7-unknown-linux-gnueabihf os: ubuntu-20.04 output: cargo-binstall archive: tgz @@ -35,6 +35,14 @@ jobs: os: windows-latest output: cargo-binstall.exe archive: zip + - target: x86_64-unknown-linux-musl + os: ubuntu-latest + output: cargo-binstall + archive: tgz + - target: armv7-unknown-linux-musleabihf + os: ubuntu-20.04 + output: cargo-binstall + archive: tgz steps: - uses: actions/checkout@v2 @@ -47,6 +55,13 @@ jobs: target: ${{ matrix.target }} override: true + - name: Install openssl (apt armv7) + if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} + uses: ryankurte/action-apt@v0.3.0 + with: + arch: armhf + packages: libssl-dev:armhf libssl1.1:armhf zlib1g-dev:armhf zlib1g:armhf libc-dev:armhf + - name: Install openssl (apt armv7) if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} uses: ryankurte/action-apt@v0.3.0 @@ -64,10 +79,20 @@ jobs: ${{ env.HOME }}/.cargo" target + - name: Install cross toolchain (armv7) + if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} + run: sudo apt-get install gcc-arm-linux-gnueabihf + - name: Install cross toolchain (armv7) if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} run: sudo apt-get install gcc-arm-linux-gnueabihf + - name: Enable cross compilation (armv7) + if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} + run: | + echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV + echo "LZMA_API_STATIC=1" >> $GITHUB_ENV + - name: Enable cross compilation (armv7) if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} run: | From 74550371901b2913245c2b18b117a8bbc1031cd5 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 00:36:36 +1000 Subject: [PATCH 04/15] Add `x86_64-unknown-linux-musl` as target to job `test` Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 99cd5039..165be219 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -164,6 +164,10 @@ jobs: os: windows-latest output: cargo-binstall.exe archive: zip + - target: x86_64-unknown-linux-musl + os: ubuntu-latest + output: cargo-binstall + archive: tgz steps: - uses: actions/checkout@v2 From 38849734b211896fda91d3bc5b857739180ce69e Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 12:36:22 +1000 Subject: [PATCH 05/15] Remove steps to install libssl in job `build` Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 165be219..f4d85ef2 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -54,20 +54,6 @@ jobs: toolchain: nightly target: ${{ matrix.target }} override: true - - - name: Install openssl (apt armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} - uses: ryankurte/action-apt@v0.3.0 - with: - arch: armhf - packages: libssl-dev:armhf libssl1.1:armhf zlib1g-dev:armhf zlib1g:armhf libc-dev:armhf - - - name: Install openssl (apt armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} - uses: ryankurte/action-apt@v0.3.0 - with: - arch: armhf - packages: libssl-dev:armhf libssl1.1:armhf zlib1g-dev:armhf zlib1g:armhf libc-dev:armhf - name: Configure caching uses: actions/cache@v2 From 37ddf3c435083bc1afd99af4219fcca40fd3c715 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 12:37:49 +1000 Subject: [PATCH 06/15] Merge duplicate steps with different `if` using `||` Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index f4d85ef2..59962d71 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -66,31 +66,17 @@ jobs: target - name: Install cross toolchain (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} - run: sudo apt-get install gcc-arm-linux-gnueabihf - - - name: Install cross toolchain (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} + if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} || ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} run: sudo apt-get install gcc-arm-linux-gnueabihf - name: Enable cross compilation (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} - run: | - echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - echo "LZMA_API_STATIC=1" >> $GITHUB_ENV - - - name: Enable cross compilation (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} + if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} || ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} run: | echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV echo "LZMA_API_STATIC=1" >> $GITHUB_ENV - name: Install musl-tools - if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} - run: sudo apt-get install -y musl-tools - - - name: Install musl-tools - if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }} + if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} || ${{ matrix.target == 'x86_64-unknown-linux-musl' }} run: sudo apt-get install -y musl-tools - name: Build release From 7796f8760a4713013ca5ebca5e863fe5cacc74f6 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 12:40:48 +1000 Subject: [PATCH 07/15] Enable `use-cross` for job "Build release for arm musl target" Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 59962d71..674f6e96 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -80,11 +80,20 @@ jobs: run: sudo apt-get install -y musl-tools - name: Build release + if: ${{ matrix.target != 'armv7-unknown-linux-musleabihf' }} uses: actions-rs/cargo@v1 with: command: build args: --target ${{ matrix.target }} --release + - name: Build release for armv7 musl target + if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} + uses: actions-rs/cargo@v1 + with: + command: build + args: --target ${{ matrix.target }} --release + use-cross: true + - name: Copy and rename utility run: cp target/${{ matrix.target }}/release/${{ matrix.output }} ${{ matrix.output }} From ec5ab955b32d2b5f24f2c4fe4c2a2017c692d874 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 12:44:18 +1000 Subject: [PATCH 08/15] Fix use of `||` in `if` in steps Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 674f6e96..5ea16613 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -66,17 +66,17 @@ jobs: target - name: Install cross toolchain (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} || ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} + if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' || matrix.target == 'armv7-unknown-linux-musleabihf' }} run: sudo apt-get install gcc-arm-linux-gnueabihf - name: Enable cross compilation (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} || ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} + if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' || matrix.target == 'armv7-unknown-linux-musleabihf' }} run: | echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV echo "LZMA_API_STATIC=1" >> $GITHUB_ENV - name: Install musl-tools - if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} || ${{ matrix.target == 'x86_64-unknown-linux-musl' }} + if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' || matrix.target == 'x86_64-unknown-linux-musl' }} run: sudo apt-get install -y musl-tools - name: Build release From d1c6a07a4840b605fabc927a1a3c88f6da311be8 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 12:47:02 +1000 Subject: [PATCH 09/15] Fix typo in path of step "Configure caching" Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 5ea16613..d5da7aa9 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -62,7 +62,7 @@ jobs: with: key: ${{ matrix.os }}-${{ matrix.target }} path: | - ${{ env.HOME }}/.cargo" + ${{ env.HOME }}/.cargo target - name: Install cross toolchain (armv7) From feb03e37d2a9039e3d26bebbc1d3b2c8470274af Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 12:58:35 +1000 Subject: [PATCH 10/15] Fix job `test` for `x86_64-unknown-linux-musl` Install corresponding rustup target and musl-tools Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index d5da7aa9..79970b88 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -154,6 +154,16 @@ jobs: - uses: actions/checkout@v2 - uses: FranzDiebold/github-env-vars-action@v1.2.1 + - name: Configure toolchain + if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }} + uses: actions-rs/toolchain@v1 + with: + target: ${{ matrix.target }} + + - name: Install musl-tools + if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }} + run: sudo apt-get install -y musl-tools + - uses: actions/download-artifact@v2 with: name: cargo-binstall-${{ matrix.target }}.${{ matrix.archive }} From 6172bcb126c18dab01e6907d8212cc88ebb07977 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 13:08:13 +1000 Subject: [PATCH 11/15] Fix step "Configure toolchain" in job test Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 79970b88..7bbdeec8 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -158,7 +158,9 @@ jobs: if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }} uses: actions-rs/toolchain@v1 with: + toolchain: stable target: ${{ matrix.target }} + override: true - name: Install musl-tools if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }} From 187ac2d20ebbf646528d6cbbb05012ebadb84e9f Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 13:53:03 +1000 Subject: [PATCH 12/15] Refactor: Avoid duplicate job for building release Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 7bbdeec8..a94ddd50 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -23,26 +23,32 @@ jobs: os: ubuntu-latest output: cargo-binstall archive: tgz + use-cross: false - target: x86_64-apple-darwin os: macos-latest output: cargo-binstall archive: zip + use-cross: false - target: armv7-unknown-linux-gnueabihf os: ubuntu-20.04 output: cargo-binstall archive: tgz + use-cross: false - target: x86_64-pc-windows-msvc os: windows-latest output: cargo-binstall.exe archive: zip + use-cross: false - target: x86_64-unknown-linux-musl os: ubuntu-latest output: cargo-binstall archive: tgz + use-cross: false - target: armv7-unknown-linux-musleabihf os: ubuntu-20.04 output: cargo-binstall archive: tgz + use-cross: true steps: - uses: actions/checkout@v2 @@ -80,19 +86,11 @@ jobs: run: sudo apt-get install -y musl-tools - name: Build release - if: ${{ matrix.target != 'armv7-unknown-linux-musleabihf' }} uses: actions-rs/cargo@v1 with: command: build args: --target ${{ matrix.target }} --release - - - name: Build release for armv7 musl target - if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' }} - uses: actions-rs/cargo@v1 - with: - command: build - args: --target ${{ matrix.target }} --release - use-cross: true + use-cross: ${{ matrix.use-cross }} - name: Copy and rename utility run: cp target/${{ matrix.target }}/release/${{ matrix.output }} ${{ matrix.output }} From 9c9b8e55b3090b81e9380bfd254b49fe82a3c172 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 14:08:51 +1000 Subject: [PATCH 13/15] Use `cross` to for target `armv7-unknown-linux-gnueabihf` in job `build` Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a94ddd50..32fae3e7 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -33,7 +33,7 @@ jobs: os: ubuntu-20.04 output: cargo-binstall archive: tgz - use-cross: false + use-cross: true - target: x86_64-pc-windows-msvc os: windows-latest output: cargo-binstall.exe @@ -71,18 +71,8 @@ jobs: ${{ env.HOME }}/.cargo target - - name: Install cross toolchain (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' || matrix.target == 'armv7-unknown-linux-musleabihf' }} - run: sudo apt-get install gcc-arm-linux-gnueabihf - - - name: Enable cross compilation (armv7) - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' || matrix.target == 'armv7-unknown-linux-musleabihf' }} - run: | - echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - echo "LZMA_API_STATIC=1" >> $GITHUB_ENV - - name: Install musl-tools - if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' || matrix.target == 'x86_64-unknown-linux-musl' }} + if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }} run: sudo apt-get install -y musl-tools - name: Build release From aabf5c75a2709278148c12340ac07408221c9dbd Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 14:24:08 +1000 Subject: [PATCH 14/15] Add target `aarch64` to job `build` Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 32fae3e7..cccb90c5 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -49,6 +49,16 @@ jobs: output: cargo-binstall archive: tgz use-cross: true + - target: aarch64-unknown-linux-gnu + os: ubuntu-latest + output: cargo-binstall + archive: tgz + use-cross: true + - target: aarch64-unknown-linux-musl + os: ubuntu-latest + output: cargo-binstall + archive: tgz + use-cross: true steps: - uses: actions/checkout@v2 From 9ed7dc69706c590f95c4c59bbe2feb4f98a013f8 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Tue, 31 May 2022 14:40:45 +1000 Subject: [PATCH 15/15] Rm step for installing `musl-tool` in job `test` The job `test` for target `x86_64-unknown-linux-musl` requires `musl-tool` since there is no pre-built binary present for that target and thus `cargo-binstall` automatically fall back to `cargo-build`. Currently, the test for it also failed because `libssl-1.1` is not present. However, since this will be fixed once a new release of `cargo-binstall` is published, this step should not be present. Signed-off-by: Jiahao XU --- .github/workflows/rust.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index cccb90c5..2cbb0324 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -160,10 +160,6 @@ jobs: target: ${{ matrix.target }} override: true - - name: Install musl-tools - if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }} - run: sudo apt-get install -y musl-tools - - uses: actions/download-artifact@v2 with: name: cargo-binstall-${{ matrix.target }}.${{ matrix.archive }}