| #!/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}" |