blob: 0c1b20345da5e18fbca4f8f5bd47e1b13b61854c [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
set -eo pipefail
usage() {
echo "usage: ${0} [options] {arm64, x64}"
echo
echo " -f [fuchsia-dir] Fuchsia directory (required)"
echo
exit 1
}
while getopts "f:" OPT; do
case $OPT in
f) FUCHSIA_DIR="${OPTARG}";;
esac
done
shift $((OPTIND - 1))
case "${1}" in
arm64)
ARCH="arm64"
TARGET="aarch64-unknown-linux-musl";;
x64)
ARCH="x64"
TARGET="x86_64-unknown-linux-musl";;
*)
usage;;
esac
declare -r OUT_DIR="out/${ARCH}"
declare -r IMAGE_FILE="out/linux-tests-${ARCH}.img"
if [ ! -d "rust_crates" ]; then
if [ ! -d "${FUCHSIA_DIR}" ]; then
echo "Must specifiy Fuchsia directory on first run."
usage
fi
ln -s ${FUCHSIA_DIR}/third_party/rust_crates/ rust_crates
fi
cargo build --target=${TARGET}
mkdir -p ${OUT_DIR}
cp target/${TARGET}/debug/virtio_block_test_util ${OUT_DIR}
cp target/${TARGET}/debug/virtio_net_test_util ${OUT_DIR}
cp target/${TARGET}/debug/virtio_rng_test_util ${OUT_DIR}
declare -r BLOCK_SIZE=4096
declare -r ADDITIONAL_BLOCKS=1024
declare -r SIZE=$(du -sb ${OUT_DIR} | grep -o '^[0-9]*')
declare -r BLOCKS=$(($((${SIZE}/${BLOCK_SIZE}))+${ADDITIONAL_BLOCKS}))
rm -f "${IMAGE_FILE}"
mke2fs -q -d "${OUT_DIR}" -t ext2 -b ${BLOCK_SIZE} "${IMAGE_FILE}" ${BLOCKS}