diff --git a/.github/workflows/CI-linux.yml b/.github/workflows/CI-linux.yml index bd19d425..294007ee 100644 --- a/.github/workflows/CI-linux.yml +++ b/.github/workflows/CI-linux.yml @@ -13,6 +13,15 @@ on: builder-target: required: true type: string + target-vendor: + required: true + type: string + target-os: + required: true + type: string + rust-toolchain-abi: + required: true + type: string distro-image: required: true type: string @@ -105,14 +114,16 @@ jobs: || [ "${{ inputs.builder-target }}" = "s390x" ] \ || [ "${{ inputs.builder-target }}" = "armv7" ]; then - RUST_TARGET=${{ inputs.builder-target }} + RUST_TARGET_ARCH=${{ inputs.builder-target }} elif [ "${{ inputs.builder-target }}" = "armv6" ]; then - RUST_TARGET=arm + RUST_TARGET_ARCH=arm elif [ "${{ inputs.builder-target }}" = "riscv64" ]; then - RUST_TARGET=riscv64gc + RUST_TARGET_ARCH=riscv64gc else exit 1 fi + echo "RUST_TARGET_ARCH=$(echo ${RUST_TARGET_ARCH})" >> $GITHUB_ENV + RUST_TARGET=${RUST_TARGET_ARCH}-${{ inputs.target-vendor }}-${{ inputs.target-os }}-${{ inputs.rust-toolchain-abi }} echo "RUST_TARGET=$(echo ${RUST_TARGET})" >> $GITHUB_ENV if [ "${{ inputs.builder-target }}" = "i686" ]; then LIBC6_ARCH=i386 @@ -136,14 +147,6 @@ jobs: GCC_ARCH=${{ inputs.builder-target }} fi echo "GCC_ARCH=$(echo ${GCC_ARCH})" >> $GITHUB_ENV - if [ "${{ inputs.builder-target }}" = "armv6" ]; then - ABI=gnueabi - elif [ "${{ inputs.builder-target }}" = "armv7" ]; then - ABI=gnueabihf - else - ABI=gnu - fi - echo "ABI=$(echo ${ABI})" >> $GITHUB_ENV if [ "${{ inputs.builder-target }}" = "s390x" ] \ || [ "${{ inputs.builder-target }}" = "powerpc64" ]; then @@ -166,6 +169,7 @@ jobs: . "$HOME/.cargo/env" eatmydata rustup toolchain install ${{ inputs.rust-toolchain-name }} --allow-downgrade --profile minimal eatmydata rustup default ${{ inputs.rust-toolchain-name }} + eatmydata rustup target add ${{ env.RUST_TARGET }} if [ "${{ inputs.flavor }}" = "RustFmt" ]; then eatmydata rustup component add rustfmt elif [ "${{ inputs.flavor }}" = "doc" ]; then @@ -191,32 +195,46 @@ jobs: else exit 1 fi - - name: Install necessary packages for cross-compilation + - name: Install necessary packages for same-os cross-arch compilation timeout-minutes: 2 - if: (inputs.flavor == 'dev' || inputs.flavor == 'release') && inputs.builder-host != inputs.builder-target + if: (inputs.flavor == 'dev' || inputs.flavor == 'release') && inputs.target-os == 'linux' && inputs.builder-host != inputs.builder-target run: | set -xe . "$HOME/.cargo/env" eatmydata apt install \ - gcc-${{ env.GCC_ARCH }}-linux-${{ env.ABI }} \ + gcc-${{ env.GCC_ARCH }}-${{ inputs.target-os }}-${{ inputs.rust-toolchain-abi }} \ libc6-dev-${{ env.LIBC6_ARCH }}-cross \ qemu-user \ qemu-user-binfmt \ ; - ln -s /usr/local/bin/clang /usr/local/bin/${{ inputs.builder-target }}-unknown-linux-${{ env.ABI }}-clang - ln -s /usr/local/bin/clang++ /usr/local/bin/${{ inputs.builder-target }}-unknown-linux-${{ env.ABI }}-clang++ - ln -s /usr/local/bin/ld /usr/local/bin/${{ inputs.builder-target }}-unknown-linux-${{ env.ABI }}-ld - rustup target add ${{ env.RUST_TARGET }}-unknown-linux-${{ env.ABI }} - LINKER="${{ inputs.builder-target }}-unknown-linux-${{ env.ABI }}-clang" + ln -s /usr/local/bin/clang /usr/local/bin/${{ inputs.builder-target }}-${{ inputs.target-vendor }}-${{ inputs.target-os }}-${{ inputs.rust-toolchain-abi }}-clang + ln -s /usr/local/bin/clang++ /usr/local/bin/${{ inputs.builder-target }}-${{ inputs.target-vendor }}-${{ inputs.target-os }}-${{ inputs.rust-toolchain-abi }}-clang++ + ln -s /usr/local/bin/ld /usr/local/bin/${{ inputs.builder-target }}-${{ inputs.target-vendor }}-${{ inputs.target-os }}-${{ inputs.rust-toolchain-abi }}-ld + LINKER="${{ inputs.builder-target }}-${{ inputs.target-vendor }}-${{ inputs.target-os }}-${{ inputs.rust-toolchain-abi }}-clang" if [ "${{ inputs.builder-target }}" = "powerpc64" ]; then # LLD/clang does not support powerpc64 ELFv1 ABI - LINKER="${{ env.GCC_ARCH }}-linux-${{ env.ABI }}-gcc" + LINKER="${{ env.GCC_ARCH }}-${{ inputs.target-os }}-${{ inputs.rust-toolchain-abi }}-gcc" fi tee -a "$HOME/.cargo/config.toml" > /dev/null < /dev/null <