mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	 fcc7824b88
			
		
	
	
		fcc7824b88
		
	
	
	
	
		
			
			This includes a qemu update from 8.2.2 to 9.2.1 which should hopefully fix some bugs we have encountered. PowerPC64LE is skipped for now because the new version seems to cause a number of new SIGILLs.
		
			
				
	
	
		
			112 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Small script to run tests for a target (or all targets) inside all the
 | |
| # respective docker images.
 | |
| 
 | |
| set -euxo pipefail
 | |
| 
 | |
| host_arch="$(uname -m | sed 's/arm64/aarch64/')"
 | |
| 
 | |
| # Directories and files that do not yet exist need to be created before
 | |
| # calling docker, otherwise docker will create them but they will be owned
 | |
| # by root.
 | |
| mkdir -p target
 | |
| cargo generate-lockfile
 | |
| cargo generate-lockfile --manifest-path builtins-test-intrinsics/Cargo.toml
 | |
| 
 | |
| run() {
 | |
|     local target="$1"
 | |
| 
 | |
|     echo "testing target: $target"
 | |
| 
 | |
|     emulated=""
 | |
|     target_arch="$(echo "$target" | cut -d'-' -f1)"
 | |
|     if [ "$target_arch" != "$host_arch" ]; then
 | |
|         emulated=1
 | |
|         echo "target is emulated"
 | |
|     fi
 | |
| 
 | |
|     run_cmd="HOME=/tmp"
 | |
| 
 | |
|     if [ "${GITHUB_ACTIONS:-}" = "true" ]; then
 | |
|         # Enable Docker image caching on GHA
 | |
|         build_cmd=("buildx" "build")
 | |
|         build_args=(
 | |
|             "--cache-from" "type=local,src=/tmp/.buildx-cache"
 | |
|             "--cache-to" "type=local,dest=/tmp/.buildx-cache-new"
 | |
|             # This is the beautiful bash syntax for expanding an array but neither
 | |
|             # raising an error nor returning an empty string if the array is empty.
 | |
|             "${build_args[@]:+"${build_args[@]}"}"
 | |
|             "--load"
 | |
|         )
 | |
|     fi
 | |
| 
 | |
|     if [ "$(uname -s)" = "Linux" ] && [ -z "${DOCKER_BASE_IMAGE:-}" ]; then
 | |
|         # Share the host rustc and target. Do this only on Linux and if the image
 | |
|         # isn't overridden
 | |
|         run_args=(
 | |
|             --user "$(id -u):$(id -g)"
 | |
|             -e "CARGO_HOME=/cargo"
 | |
|             -v "${HOME}/.cargo:/cargo"
 | |
|             -v "$(pwd)/target:/builtins-target"
 | |
|             -v "$(rustc --print sysroot):/rust:ro"
 | |
|         )
 | |
|         run_cmd="$run_cmd PATH=\$PATH:/rust/bin:/cargo/bin"
 | |
|     else
 | |
|         # Use rustc provided by a docker image
 | |
|         docker volume create compiler-builtins-cache
 | |
|         build_args=(
 | |
|             "--build-arg"
 | |
|             "IMAGE=${DOCKER_BASE_IMAGE:-rustlang/rust:nightly}"
 | |
|         )
 | |
|         run_args=(-v "compiler-builtins-cache:/builtins-target")
 | |
|         run_cmd="$run_cmd HOME=/tmp" "USING_CONTAINER_RUSTC=1"
 | |
|     fi
 | |
| 
 | |
|     if [ -d compiler-rt ]; then
 | |
|         export RUST_COMPILER_RT_ROOT="/checkout/compiler-rt"
 | |
|     fi
 | |
| 
 | |
|     run_cmd="$run_cmd ci/run.sh $target"
 | |
| 
 | |
|     docker "${build_cmd[@]:-build}" \
 | |
|         -t "builtins-$target" \
 | |
|         "${build_args[@]:-}" \
 | |
|         "ci/docker/$target"
 | |
|     docker run \
 | |
|         --rm \
 | |
|         -e CI \
 | |
|         -e CARGO_TARGET_DIR=/builtins-target \
 | |
|         -e CARGO_TERM_COLOR \
 | |
|         -e MAY_SKIP_LIBM_CI \
 | |
|         -e RUSTFLAGS \
 | |
|         -e RUST_BACKTRACE \
 | |
|         -e RUST_COMPILER_RT_ROOT \
 | |
|         -e "EMULATED=$emulated" \
 | |
|         -v "$(pwd):/checkout:ro" \
 | |
|         -w /checkout \
 | |
|         "${run_args[@]:-}" \
 | |
|         --init \
 | |
|         "builtins-$target" \
 | |
|         sh -c "$run_cmd"
 | |
| }
 | |
| 
 | |
| if [ "${1:-}" = "--help" ] || [ "$#" -gt 1 ]; then
 | |
|     set +x
 | |
|     echo "\
 | |
|     usage: ./ci/run-docker.sh [target]
 | |
| 
 | |
|     you can also set DOCKER_BASE_IMAGE to use something other than the default
 | |
|     ubuntu:25.04 (or rustlang/rust:nightly).
 | |
|     "
 | |
|     exit
 | |
| fi
 | |
| 
 | |
| if [ -z "${1:-}" ]; then
 | |
|     for d in ci/docker/*; do
 | |
|         run $(basename "$d")
 | |
|     done
 | |
| else
 | |
|     run "$1"
 | |
| fi
 |