build: Updated development utilities for AArch64

Updated Dockerfile to work with multiple architectures.
Updated dev_cli.sh to:
1. Build container image before AArch64 image is ready in public.
2. Adjust default feature collection on AArch64.
3. Workaround a build problem with musl on AArch64.

Signed-off-by: Michael Zhao <michael.zhao@arm.com>
This commit is contained in:
Michael Zhao 2020-04-16 10:02:42 +08:00 committed by Rob Bradford
parent af8292b623
commit 0090ec2dda
2 changed files with 36 additions and 12 deletions

View file

@ -200,6 +200,13 @@ cmd_build() {
cargo_args=("$@")
[ $build = "release" ] && cargo_args+=("--release")
cargo_args+=(--target "$target")
[ $(uname -m) = "aarch64" ] && cargo_args+=("--no-default-features")
[ $(uname -m) = "aarch64" ] && cargo_args+=(--features "mmio")
rustflags=""
if [ $(uname -m) = "aarch64" ] && [ $libc = "musl" ] ; then
rustflags="-C link-arg=-lgcc"
fi
$DOCKER_RUNTIME run \
--user "$(id -u):$(id -g)" \
@ -207,6 +214,7 @@ cmd_build() {
--rm \
--volume /dev:/dev \
--volume "$CLH_ROOT_DIR:$CTR_CLH_ROOT_DIR" \
--env RUSTFLAGS="$rustflags" \
"$CTR_IMAGE" \
cargo build \
--target-dir "$CTR_CLH_CARGO_TARGET" \
@ -336,6 +344,7 @@ cmd_build-container() {
--target $container_type \
-t $CTR_IMAGE \
-f $BUILD_DIR/Dockerfile \
--build-arg TARGETARCH="$(uname -m)" \
$BUILD_DIR
}
@ -365,6 +374,13 @@ cmd=cmd_$1
shift
ensure_build_dir
ensure_latest_ctr
if [ $(uname -m) = "x86_64" ]; then
ensure_latest_ctr
fi
# Before a public image for AArch64 ready, we build the container if needed.
if [ $(uname -m) = "aarch64" ]; then
cmd_build-container
fi
$cmd "$@"