Merge pull request #31 from marineam/toolchain

Script updates
This commit is contained in:
Michael Marineau 2013-07-10 17:08:17 -07:00
commit c707f8ed92
2 changed files with 26 additions and 21 deletions

View File

@ -4,6 +4,7 @@
GSUTIL_OPTS= GSUTIL_OPTS=
UPLOAD_ROOT="gs://storage.core-os.net/coreos" UPLOAD_ROOT="gs://storage.core-os.net/coreos"
UPLOAD_PATH=
UPLOAD_DEFAULT=${FLAGS_FALSE} UPLOAD_DEFAULT=${FLAGS_FALSE}
if [[ ${COREOS_OFFICIAL:-0} -eq 1 ]]; then if [[ ${COREOS_OFFICIAL:-0} -eq 1 ]]; then
UPLOAD_DEFAULT=${FLAGS_TRUE} UPLOAD_DEFAULT=${FLAGS_TRUE}
@ -16,6 +17,8 @@ DEFINE_boolean parallel ${FLAGS_TRUE} \
"Enable parallelism in gsutil." "Enable parallelism in gsutil."
DEFINE_boolean upload ${UPLOAD_DEFAULT} \ DEFINE_boolean upload ${UPLOAD_DEFAULT} \
"Upload all packages/images via gsutil." "Upload all packages/images via gsutil."
DEFINE_string upload_path "" \
"Upload files to an alternative location. Must be a full gs:// URL."
check_gsutil_opts() { check_gsutil_opts() {
[[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]] || return 0 [[ ${FLAGS_upload} -eq ${FLAGS_TRUE} ]] || return 0
@ -24,6 +27,11 @@ check_gsutil_opts() {
GSUTIL_OPTS="-m" GSUTIL_OPTS="-m"
fi fi
if [[ -n "${FLAGS_upload_path}" ]]; then
# Make sure the path doesn't end with a slash
UPLOAD_PATH="${FLAGS_upload_path%%/}"
fi
if [[ ! -f "$HOME/.boto" ]]; then if [[ ! -f "$HOME/.boto" ]]; then
die_notrace "Please run gsutil config to create ~/.boto" die_notrace "Please run gsutil config to create ~/.boto"
fi fi
@ -34,9 +42,10 @@ upload_packages() {
[[ -n "${BOARD}" ]] || die "board_options.sh must be sourced first" [[ -n "${BOARD}" ]] || die "board_options.sh must be sourced first"
local BOARD_PACKAGES="${1:-"${BOARD_ROOT}/packages"}" local BOARD_PACKAGES="${1:-"${BOARD_ROOT}/packages"}"
local UPLOAD_PATH="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}/pkgs/" : ${UPLOAD_PATH:="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}"}
info "Uploading packages" info "Uploading packages"
gsutil ${GSUTIL_OPTS} cp -R "${BOARD_PACKAGES}"/* "${UPLOAD_PATH}" gsutil ${GSUTIL_OPTS} cp -R "${BOARD_PACKAGES}"/* "${UPLOAD_PATH}/pkgs/"
} }
make_digests() { make_digests() {
@ -57,7 +66,7 @@ upload_image() {
[[ -n "${BOARD}" ]] || die "board_options.sh must be sourced first" [[ -n "${BOARD}" ]] || die "board_options.sh must be sourced first"
local BUILT_IMAGE="$1" local BUILT_IMAGE="$1"
local UPLOAD_PATH="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}/" : ${UPLOAD_PATH:="${UPLOAD_ROOT}/${BOARD}/${COREOS_VERSION_STRING}"}
if [[ ! -f "${BUILT_IMAGE}" ]]; then if [[ ! -f "${BUILT_IMAGE}" ]]; then
die "Image '${BUILT_IMAGE}' does not exist!" die "Image '${BUILT_IMAGE}' does not exist!"
@ -76,5 +85,5 @@ upload_image() {
info "Uploading ${BUILT_IMAGE##*/}" info "Uploading ${BUILT_IMAGE##*/}"
gsutil ${GSUTIL_OPTS} cp "${BUILT_IMAGE}" \ gsutil ${GSUTIL_OPTS} cp "${BUILT_IMAGE}" \
"${BUILT_IMAGE}.DIGESTS" "${UPLOAD_PATH}" "${BUILT_IMAGE}.DIGESTS" "${UPLOAD_PATH}/"
} }

View File

@ -3,32 +3,28 @@
source /tmp/chroot-functions.sh source /tmp/chroot-functions.sh
# Build cross toolchains # Build cross toolchains
# crossdev only does full bootstraps so if all of the packages are already
# installed (i.e. we are updating an existing stage4) then use emerge
for cross_chost in x86_64-cros-linux-gnu; do for cross_chost in x86_64-cros-linux-gnu; do
echo "Installing toolchain for ${cross_chost}" echo "Installing toolchain for ${cross_chost}"
cross_pkgs=( cross-${cross_chost}/{binutils,gcc,gdb,glibc,linux-headers} ) cross_pkgs=( cross-${cross_chost}/{binutils,gcc,gdb,glibc,linux-headers} )
cross_bootstrap=0 crossdev --ov-output "/usr/local/portage/crossdev" \
for pkg in "${cross_pkgs[@]}"; do --env 'FEATURES=splitdebug' \
if ! portageq match / "$pkg" | grep .; then --stable --ex-gdb --init-target \
cross_bootstrap=1 --target "${cross_chost}" || exit 1
break
fi
done
if [[ "${cross_bootstrap}" -eq 1 ]]; then # If PKGCACHE is enabled check to see if binary packages are available
# or (due to --noreplace) the packages are already installed. If so then
# we don't need to perform a full bootstrap and just call emerge instead.
if [[ -n "${clst_PKGCACHE}" ]] && \
emerge ${clst_myemergeopts} --usepkgonly --binpkg-respect-use=y \
--noreplace "${cross_pkgs[@]}" &>/dev/null
then
run_merge -u "${cross_pkgs[@]}"
else
crossdev --ov-output "/usr/local/portage/crossdev" \ crossdev --ov-output "/usr/local/portage/crossdev" \
--portage "${clst_myemergeopts}" \ --portage "${clst_myemergeopts}" \
--env 'FEATURES=splitdebug' \ --env 'FEATURES=splitdebug' \
--stable --ex-gdb --stage4 \ --stable --ex-gdb --stage4 \
--target "${cross_chost}" || exit 1 --target "${cross_chost}" || exit 1
else
# Still run --init-target to ensure config is correct
crossdev --ov-output "/usr/local/portage/crossdev" \
--env 'FEATURES=splitdebug' \
--stable --ex-gdb --init-target \
--target "${cross_chost}" || exit 1
run_merge -u "${cross_pkgs[@]}"
fi fi
done done