8b6275a1ea
Switch over to using the do-build script, to make it easier to incorporate the native tools builds. Change-Id: I6f64642962eace37ada779f40ff2616b34254c49
68 linhas
2.5 KiB
Bash
Arquivo Executável
68 linhas
2.5 KiB
Bash
Arquivo Executável
#!/usr/bin/env bash
|
|
|
|
# Copyright 2016 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
|
|
|
|
# This script builds the Magenta toolchain and uploads it to Google Storage.
|
|
|
|
# This script is expected to be executed on Jenkins, as part of a continuous
|
|
# builds infrastructure. As such, it it organized to accept the arch target
|
|
# as an environment variable, since that is how Jenkins passes arguments from
|
|
# matrix build configurations.
|
|
|
|
# This script also assumes a directory structure based on the Magenta Jiri
|
|
# manifests. Jenkins uses these manifests to sync the code.
|
|
|
|
set -e
|
|
set -x
|
|
|
|
# We assume the following directory structure:
|
|
# ./magenta/scripts
|
|
# ./third_party/gcc_none_toolchains
|
|
readonly SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
cd "${SCRIPT_DIR}/../../third_party/gcc_none_toolchains"
|
|
|
|
# We require the ARCH variable to be set when calling this script. Passing arguments
|
|
# via environment variables is how Jenkins does things :/
|
|
if [[ -z "${ARCH}" ]]; then
|
|
echo "ARCH environment variable must be set!"
|
|
exit 99
|
|
fi
|
|
|
|
# Sanity check the value of ARCH.
|
|
if [[ "${ARCH}" != "${ARCH// /}" ]]; then
|
|
echo "ARCH appears to contain spaces; provide only one ARCH at a time"
|
|
exit 99
|
|
fi
|
|
|
|
# Build the toolchain: `do-build` will fetch source, apply patches and build gcc and friends.
|
|
./do-build --target "${ARCH}-none" -j2 --strip
|
|
|
|
# Figure out where the toolchains got generated. They end up in a directory with the
|
|
# structure $ARCH-$ABI-$VERSION-$OS-$HOSTARCH.
|
|
readonly OS="$(uname)"
|
|
readonly HOSTARCH="$(uname -m)"
|
|
readonly ABI="elf"
|
|
readonly TOOLCHAIN_DIR="$(ls -td ${ARCH}-${ABI}-*-${OS}-${HOSTARCH} | head -1)"
|
|
|
|
# Fetch the current git SHA: we upload the prebuilts with a SHA that corresponds
|
|
# to the SHA of the tree we built from.
|
|
readonly GIT_SHA="$(git log -1 --format=%H)"
|
|
readonly TARBALL="/tmp/${GIT_SHA}"
|
|
|
|
# Write the README file.
|
|
cp "${SCRIPT_DIR}/upload-toolchain.README.md" "${TOOLCHAIN_DIR}/README.md"
|
|
echo "${GIT_SHA}" >> "${TOOLCHAIN_DIR}/README.md"
|
|
|
|
# Tar up the toolchain.
|
|
tar jcvf "${TARBALL}" "${TOOLCHAIN_DIR}"
|
|
|
|
# Upload the prebuilts to Google Storage. We don't do any authentication here because
|
|
# we assume that the environment has been set up with auth already. For notes on
|
|
# how to do that, see: https://cloud.google.com/storage/docs/authentication
|
|
readonly GS_BUCKET="gs://fuchsia-build/magenta/toolchain/${ARCH}-${ABI}/${OS}-${HOSTARCH}"
|
|
gsutil cp "${TARBALL}" "${GS_BUCKET}/${GIT_SHA}"
|