blob: 1389b30006b9db3d4299f262e95ad63ccb8b5c00 [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2018 The Fuchsia Authors
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT
set -eo pipefail
declare -r LINUX_GUEST_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
declare -r FUCHSIA_DIR=$(git rev-parse --show-toplevel)
declare -r CIPD="${FUCHSIA_DIR}/.jiri_root/bin/cipd"
declare -r SOURCE_DIR="/tmp/linux_guest"
declare -r LINUX_VERSION="4.18"
case "${1}" in
arm64)
ARCH=${1};;
x64)
ARCH=${1};;
*)
echo "usage: ${0} {arm64, x64}"
exit 1;;
esac
if [[ -z "$(which cargo)" ]]; then
if [[ -f "$HOME/.cargo/env" ]]; then
source "$HOME/.cargo/env"
else
echo "you must have rust installed on your host - see https://www.rust-lang.org/tools/install"
exit 2
fi
fi
if [[ "$(${CIPD} acl-check fuchsia_internal/ -writer)" == *"doesn't"* ]]; then
${CIPD} auth-login
fi
# Clean the existing source checkout.
rm -rf "${SOURCE_DIR}"
# Clean the existing images.
declare -r IMAGE_DIR="${FUCHSIA_DIR}/prebuilt/virtualization/packages/linux_guest/images/${ARCH}"
rm -rf "${IMAGE_DIR}/Image"
rm -rf "${IMAGE_DIR}/tests.img"
rm -rf "${IMAGE_DIR}/disk.img"
${LINUX_GUEST_DIR}/mklinux.sh \
-b "machina-${LINUX_VERSION}" \
-d "machina_defconfig" \
-l "${SOURCE_DIR}/linux" \
-o "${IMAGE_DIR}/Image" \
${ARCH}
LINUX_GIT_HASH="$( cd ${SOURCE_DIR}/linux && git rev-parse --verify HEAD )"
${LINUX_GUEST_DIR}/mktests.sh \
-d "${SOURCE_DIR}/linux-tests" \
-o "${IMAGE_DIR}/tests.img" \
-u \
${ARCH}
TESTS_GIT_HASH="$( cd ${SOURCE_DIR}/linux-tests && git rev-parse --verify HEAD )"
${LINUX_GUEST_DIR}/mksysroot.sh \
-d "${SOURCE_DIR}/toybox-${ARCH}" \
-s "${SOURCE_DIR}/dash" \
-o "${IMAGE_DIR}/disk.img" \
-u \
${ARCH}
TOYBOX_GIT_HASH="$( cd ${SOURCE_DIR}/toybox-${ARCH} && git rev-parse --verify HEAD )"
DASH_GIT_HASH="$( cd ${SOURCE_DIR}/dash && git rev-parse --verify HEAD )"
declare -r CIPD_PATH="fuchsia_internal/linux/linux_guest-${LINUX_VERSION}-${ARCH}"
${CIPD} create \
-in "${IMAGE_DIR}" \
-name "${CIPD_PATH}" \
-install-mode copy \
-tag "kernel_git_revision:${LINUX_GIT_HASH}" \
-tag "tests_git_revision:${TESTS_GIT_HASH}" \
-tag "toybox_git_revision:${TOYBOX_GIT_HASH}" \
-tag "dash_git_revision:${DASH_GIT_HASH}"
INSTANCE_ID=$(${CIPD} describe \
"${CIPD_PATH}" \
-version "kernel_git_revision:${LINUX_GIT_HASH}" \
-version "tests_git_revision:${TESTS_GIT_HASH}" \
-version "toybox_git_revision:${TOYBOX_GIT_HASH}" \
-version "dash_git_revision:${DASH_GIT_HASH}" \
| grep -oP "Instance ID: *\K\w+(?=$)" )
echo "Kernel git revision: ${LINUX GIT HASH}"
echo "Tests git revision: ${TESTS GIT HASH}"
echo "Toybox git revision: ${TOYBOX GIT HASH}"
echo "Dash git revision: ${DASH GIT HASH}"
echo "Instance ID: ${INSTANCE_ID}"