diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a2c2a87..4c9bd7e 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -19,7 +19,7 @@ jobs: # steps: # - uses: actions/checkout@v2 # - name: Cargo cache - # uses: actions/cache@v2 + # uses: actions/cache@v4 # with: # path: | # ~/.cargo/registry @@ -80,9 +80,13 @@ jobs: OS: ${{ matrix.OS }} FEATURES: ${{ matrix.FEATURES }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 + + - name: Init submodules + run: git submodule update --init --recursive --remote && git submodule status + - name: Cargo cache - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: | ~/.cargo/registry @@ -95,43 +99,53 @@ jobs: # 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 + sudo apt-get update && sudo apt-get install clang llvm libc6-dev-i386 crossbuild-essential-arm64 crossbuild-essential-armhf musl-tools libboost-all-dev libc6-dev -y # curl -s musl.cc | grep mipsel case $TARGET in mipsel-unknown-linux-musl) - MUSL_URI=mipsel-linux-musl-cross + MUSL_URI=mipsel-linux-muslsf-cross + URL=mipsel-linux-muslsf ;; aarch64-unknown-linux-musl) MUSL_URI=aarch64-linux-musl-cross ;; armv7-unknown-linux-musleabihf) MUSL_URI=armv7l-linux-musleabihf-cross - ;; + ;; armv7-unknown-linux-musleabi) MUSL_URI=armv7m-linux-musleabi-cross - ;; + ;; arm-unknown-linux-musleabihf) MUSL_URI=arm-linux-musleabihf-cross ;; arm-unknown-linux-musleabi) MUSL_URI=arm-linux-musleabi-cross - ;; + ;; mips-unknown-linux-musl) - MUSL_URI=mips-linux-musl-cross + MUSL_URI=mips-linux-muslsf-cross + URL=mips-linux-muslsf ;; esac - if [[ $TARGET =~ ^mips.*$ ]]; then - # mips平台使用1.71.1版本 - rustup install 1.71.1 - rustup default 1.71.1 - fi + + if [ -n "$MUSL_URI" ]; then mkdir -p ./musl_gcc - wget -c https://musl.cc/$MUSL_URI.tgz -P ./musl_gcc/ - tar zxf ./musl_gcc/$MUSL_URI.tgz -C ./musl_gcc/ - sudo ln -s $(pwd)/musl_gcc/$MUSL_URI/bin/*gcc /usr/bin/ + wget -c https://github.com/rustp2p/musl-cross/releases/download/0.0.1/$MUSL_URI.tgz -P /opt/musl_gcc/ + tar zxf /opt/musl_gcc/$MUSL_URI.tgz -C /opt/musl_gcc/ + sudo ln -s /opt/musl_gcc/$MUSL_URI/bin/*gcc /usr/bin/ fi fi + if [[ $TARGET =~ ^mips.*$ ]]; then + cd /opt/musl_gcc/${URL}-cross/lib/gcc/${URL}/11.2.1 + cp libgcc_eh.a libunwind.a + rustup toolchain install nightly-x86_64-unknown-linux-gnu + rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu + RUST_LIB_SRC=$HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/ + if [[ -f $RUST_LIB_SRC/library/Cargo.lock && ! -f $RUST_LIB_SRC/Cargo.lock ]]; then + cp -f $RUST_LIB_SRC/library/Cargo.lock $RUST_LIB_SRC/Cargo.lock + fi + fi + rustup -V # some additional configuration for cross-compilation on linux cat >>~/.cargo/config <