12add0d91Sopenharmony_ci#!/usr/bin/env sh 22add0d91Sopenharmony_ci# This is intended to be used in CI only. 32add0d91Sopenharmony_ci 42add0d91Sopenharmony_ciset -ex 52add0d91Sopenharmony_ci 62add0d91Sopenharmony_ciecho "Setup toolchain" 72add0d91Sopenharmony_citoolchain= 82add0d91Sopenharmony_ciif [ -n "$TOOLCHAIN" ]; then 92add0d91Sopenharmony_ci toolchain=$TOOLCHAIN 102add0d91Sopenharmony_cielse 112add0d91Sopenharmony_ci # Pin the nightly version as newer nightly versions break CI, 122add0d91Sopenharmony_ci # https://github.com/rust-lang/rust/issues/103673 contains related information. 132add0d91Sopenharmony_ci case "$TARGET" in 142add0d91Sopenharmony_ci *android*) toolchain=nightly-2022-10-09;; 152add0d91Sopenharmony_ci *) toolchain=nightly;; 162add0d91Sopenharmony_ci esac 172add0d91Sopenharmony_cifi 182add0d91Sopenharmony_ciif [ "$OS" = "windows" ]; then 192add0d91Sopenharmony_ci : "${TARGET?The TARGET environment variable must be set.}" 202add0d91Sopenharmony_ci rustup set profile minimal 212add0d91Sopenharmony_ci rustup update --force $toolchain-"$TARGET" 222add0d91Sopenharmony_ci rustup default $toolchain-"$TARGET" 232add0d91Sopenharmony_cielse 242add0d91Sopenharmony_ci rustup set profile minimal 252add0d91Sopenharmony_ci rustup update --force $toolchain 262add0d91Sopenharmony_ci rustup default $toolchain 272add0d91Sopenharmony_cifi 282add0d91Sopenharmony_ci 292add0d91Sopenharmony_ciif [ -n "$TARGET" ]; then 302add0d91Sopenharmony_ci echo "Install target" 312add0d91Sopenharmony_ci rustup target add "$TARGET" 322add0d91Sopenharmony_cifi 332add0d91Sopenharmony_ci 342add0d91Sopenharmony_ciif [ -n "$INSTALL_RUST_SRC" ]; then 352add0d91Sopenharmony_ci echo "Install rust-src" 362add0d91Sopenharmony_ci rustup component add rust-src 372add0d91Sopenharmony_cifi 382add0d91Sopenharmony_ci 392add0d91Sopenharmony_ciif [ "$OS" = "windows" ]; then 402add0d91Sopenharmony_ci if [ "$ARCH_BITS" = "i686" ]; then 412add0d91Sopenharmony_ci echo "Install MinGW32" 422add0d91Sopenharmony_ci choco install mingw --x86 --force 432add0d91Sopenharmony_ci fi 442add0d91Sopenharmony_ci 452add0d91Sopenharmony_ci echo "Find GCC libraries" 462add0d91Sopenharmony_ci gcc -print-search-dirs 472add0d91Sopenharmony_ci /usr/bin/find "C:\ProgramData\Chocolatey" -name "crt2*" 482add0d91Sopenharmony_ci /usr/bin/find "C:\ProgramData\Chocolatey" -name "dllcrt2*" 492add0d91Sopenharmony_ci /usr/bin/find "C:\ProgramData\Chocolatey" -name "libmsvcrt*" 502add0d91Sopenharmony_ci 512add0d91Sopenharmony_ci if [ -n "$ARCH_BITS" ]; then 522add0d91Sopenharmony_ci echo "Fix MinGW" 532add0d91Sopenharmony_ci for i in crt2.o dllcrt2.o libmingwex.a libmsvcrt.a ; do 542add0d91Sopenharmony_ci cp -f "/C/ProgramData/Chocolatey/lib/mingw/tools/install/mingw$ARCH_BITS/$ARCH-w64-mingw32/lib/$i" "$(rustc --print sysroot)/lib/rustlib/$TARGET/lib" 552add0d91Sopenharmony_ci done 562add0d91Sopenharmony_ci fi 572add0d91Sopenharmony_cifi 582add0d91Sopenharmony_ci 592add0d91Sopenharmony_ciecho "Query rust and cargo versions" 602add0d91Sopenharmony_cicommand -v rustc 612add0d91Sopenharmony_cicommand -v cargo 622add0d91Sopenharmony_cicommand -v rustup 632add0d91Sopenharmony_cirustc -Vv 642add0d91Sopenharmony_cicargo -V 652add0d91Sopenharmony_cirustup -Vv 662add0d91Sopenharmony_cirustup show 672add0d91Sopenharmony_ci 682add0d91Sopenharmony_ciecho "Generate lockfile" 692add0d91Sopenharmony_ciN=5 702add0d91Sopenharmony_cin=0 712add0d91Sopenharmony_ciuntil [ $n -ge $N ] 722add0d91Sopenharmony_cido 732add0d91Sopenharmony_ci if cargo generate-lockfile; then 742add0d91Sopenharmony_ci break 752add0d91Sopenharmony_ci fi 762add0d91Sopenharmony_ci n=$((n+1)) 772add0d91Sopenharmony_ci sleep 1 782add0d91Sopenharmony_cidone 79