From fa214a2aabd7f4d364f149de059078200767c494 Mon Sep 17 00:00:00 2001 From: "sijie.sun" Date: Fri, 10 May 2024 22:41:08 +0800 Subject: [PATCH] move shared code into script --- .github/workflows/core.yml | 54 +--------------------- .github/workflows/gui.yml | 68 +--------------------------- .github/workflows/install_rust.sh | 75 +++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 120 deletions(-) create mode 100644 .github/workflows/install_rust.sh diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index ad331b97..194b253a 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -74,59 +74,7 @@ jobs: key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Install rust target - run: | - # dependencies are only needed on ubuntu as that's the only place where - # we make cross-compilation - if [[ $OS =~ ^ubuntu.*$ ]]; then - sudo apt-get update && sudo apt-get install -qq crossbuild-essential-arm64 crossbuild-essential-armhf musl-tools - # curl -s musl.cc | grep mipsel - case $TARGET in - mipsel-unknown-linux-musl) - MUSL_URI=mipsel-linux-muslsf - ;; - aarch64-unknown-linux-musl) - MUSL_URI=aarch64-linux-musl - ;; - armv7-unknown-linux-musleabihf) - MUSL_URI=armv7l-linux-musleabihf - ;; - arm-unknown-linux-musleabihf) - MUSL_URI=arm-linux-musleabihf - ;; - mips-unknown-linux-musl) - MUSL_URI=mips-linux-muslsf - ;; - esac - - if [ -n "$MUSL_URI" ]; then - mkdir -p ./musl_gcc - wget -c https://musl.cc/${MUSL_URI}-cross.tgz -P ./musl_gcc/ - tar zxf ./musl_gcc/${MUSL_URI}-cross.tgz -C ./musl_gcc/ - sudo ln -s $(pwd)/musl_gcc/${MUSL_URI}-cross/bin/*gcc /usr/bin/ - fi - fi - - # see https://github.com/rust-lang/rustup/issues/3709 - rustup set auto-self-update disable - rustup install 1.75 - rustup default 1.75 - - # mips/mipsel cannot add target from rustup, need compile by ourselves - if [[ $OS =~ ^ubuntu.*$ && $TARGET =~ ^mips.*$ ]]; then - cd "$PWD/musl_gcc/${MUSL_URI}-cross/lib/gcc/${MUSL_URI}/11.2.1" || exit 255 - # for panic-abort - cp libgcc_eh.a libunwind.a - - # for mimalloc - ar x libgcc.a _ctzsi2.o _clz.o _bswapsi2.o - ar rcs libctz.a _ctzsi2.o _clz.o _bswapsi2.o - - rustup toolchain install nightly-x86_64-unknown-linux-gnu - rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu - cd - - else - rustup target add $TARGET - fi + run: bash ./.github/workflows/install_rust.sh - name: Setup protoc uses: arduino/setup-protoc@v2 diff --git a/.github/workflows/gui.yml b/.github/workflows/gui.yml index 5b44e77a..42ac4b41 100644 --- a/.github/workflows/gui.yml +++ b/.github/workflows/gui.yml @@ -100,73 +100,7 @@ jobs: key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Install rust target - run: | - # dependencies are only needed on ubuntu as that's the only place where - # we make cross-compilation - if [[ $OS =~ ^ubuntu.*$ ]]; then - sudo apt-get update && sudo apt-get install -qq crossbuild-essential-arm64 crossbuild-essential-armhf musl-tools - # for easytier-gui - if [[ $GUI_TARGET != '' ]]; then - sudo apt install libwebkit2gtk-4.0-dev \ - build-essential \ - curl \ - wget \ - file \ - libssl-dev \ - libgtk-3-dev \ - libayatana-appindicator3-dev \ - librsvg2-dev \ - patchelf - fi - # curl -s musl.cc | grep mipsel - case $TARGET in - mipsel-unknown-linux-musl) - MUSL_URI=mipsel-linux-muslsf - ;; - aarch64-unknown-linux-musl) - MUSL_URI=aarch64-linux-musl - ;; - armv7-unknown-linux-musleabihf) - MUSL_URI=armv7l-linux-musleabihf - ;; - arm-unknown-linux-musleabihf) - MUSL_URI=arm-linux-musleabihf - ;; - mips-unknown-linux-musl) - MUSL_URI=mips-linux-muslsf - ;; - esac - - if [ -n "$MUSL_URI" ]; then - mkdir -p ./musl_gcc - wget -c https://musl.cc/${MUSL_URI}-cross.tgz -P ./musl_gcc/ - tar zxf ./musl_gcc/${MUSL_URI}-cross.tgz -C ./musl_gcc/ - sudo ln -s $(pwd)/musl_gcc/${MUSL_URI}-cross/bin/*gcc /usr/bin/ - fi - fi - - # see https://github.com/rust-lang/rustup/issues/3709 - rustup set auto-self-update disable - rustup install 1.75 - rustup default 1.75 - - # mips/mipsel cannot add target from rustup, need compile by ourselves - if [[ $OS =~ ^ubuntu.*$ && $TARGET =~ ^mips.*$ ]]; then - cd "$PWD/musl_gcc/${MUSL_URI}-cross/lib/gcc/${MUSL_URI}/11.2.1" || exit 255 - # for panic-abort - cp libgcc_eh.a libunwind.a - - # for mimalloc - ar x libgcc.a _ctzsi2.o _clz.o _bswapsi2.o - ar rcs libctz.a _ctzsi2.o _clz.o _bswapsi2.o - - rustup toolchain install nightly-x86_64-unknown-linux-gnu - rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu - cd - - else - rustup target add $TARGET - rustup target add $GUI_TARGET - fi + run: bash ./.github/workflows/install_rust.sh - name: Setup protoc uses: arduino/setup-protoc@v2 diff --git a/.github/workflows/install_rust.sh b/.github/workflows/install_rust.sh new file mode 100644 index 00000000..c764d093 --- /dev/null +++ b/.github/workflows/install_rust.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +# env needed: +# - TARGET +# - GUI_TARGET +# - OS + +# dependencies are only needed on ubuntu as that's the only place where +# we make cross-compilation +if [[ $OS =~ ^ubuntu.*$ ]]; then + sudo apt-get update && sudo apt-get install -qq crossbuild-essential-arm64 crossbuild-essential-armhf musl-tools + # for easytier-gui + if [[ $GUI_TARGET != '' ]]; then + sudo apt install libwebkit2gtk-4.0-dev \ + build-essential \ + curl \ + wget \ + file \ + libssl-dev \ + libgtk-3-dev \ + libayatana-appindicator3-dev \ + librsvg2-dev \ + patchelf + fi + # curl -s musl.cc | grep mipsel + case $TARGET in + mipsel-unknown-linux-musl) + MUSL_URI=mipsel-linux-muslsf + ;; + aarch64-unknown-linux-musl) + MUSL_URI=aarch64-linux-musl + ;; + armv7-unknown-linux-musleabihf) + MUSL_URI=armv7l-linux-musleabihf + ;; + arm-unknown-linux-musleabihf) + MUSL_URI=arm-linux-musleabihf + ;; + mips-unknown-linux-musl) + MUSL_URI=mips-linux-muslsf + ;; + esac + + if [ -n "$MUSL_URI" ]; then + mkdir -p ./musl_gcc + wget -c https://musl.cc/${MUSL_URI}-cross.tgz -P ./musl_gcc/ + tar zxf ./musl_gcc/${MUSL_URI}-cross.tgz -C ./musl_gcc/ + sudo ln -s $(pwd)/musl_gcc/${MUSL_URI}-cross/bin/*gcc /usr/bin/ + fi +fi + +# see https://github.com/rust-lang/rustup/issues/3709 +rustup set auto-self-update disable +rustup install 1.75 +rustup default 1.75 + +# mips/mipsel cannot add target from rustup, need compile by ourselves +if [[ $OS =~ ^ubuntu.*$ && $TARGET =~ ^mips.*$ ]]; then + cd "$PWD/musl_gcc/${MUSL_URI}-cross/lib/gcc/${MUSL_URI}/11.2.1" || exit 255 + # for panic-abort + cp libgcc_eh.a libunwind.a + + # for mimalloc + ar x libgcc.a _ctzsi2.o _clz.o _bswapsi2.o + ar rcs libctz.a _ctzsi2.o _clz.o _bswapsi2.o + + rustup toolchain install nightly-x86_64-unknown-linux-gnu + rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu + cd - +else + rustup target add $TARGET + if [[ $GUI_TARGET != '' ]]; then + rustup target add $GUI_TARGET + fi +fi