mirror of
https://github.com/flatcar/scripts.git
synced 2026-05-05 12:16:41 +02:00
Add support for using local binary packages.
This CL adds the --reuse_pkgs_from_local_boards flag to setup_board and
build_packages. With this flag, binary packages are shared between boards
that are built locally, so that the total time required to build several
boards is reduced.
This flag is only useful when you are not able to use remote binary packages,
since remote binary packages are usually more up to date than anything you have
locally. For this reason it is typically only used by buildbots which build
multiple similar full builds on the same machine.
BUG=chromium-os:26232
TEST=Test build using only local binary packages from a different
board.
CQ-DEPEND=I0353dd34f63f1b5c9c1a08882322279c6c4d82f5
Change-Id: I8a1d2687bd0d177de4464a80703b8b5a0b6c9f52
Reviewed-on: https://gerrit.chromium.org/gerrit/15775
Commit-Ready: David James <davidjames@chromium.org>
Reviewed-by: David James <davidjames@chromium.org>
Tested-by: David James <davidjames@chromium.org>
This commit is contained in:
parent
d6e32cd9c1
commit
17c622a380
@ -73,6 +73,14 @@ DEFINE_boolean oldchromebinary "${FLAGS_FALSE}" \
|
||||
DEFINE_boolean skip_toolchain_update "${FLAGS_FALSE}" \
|
||||
"Don't update toolchain automatically."
|
||||
|
||||
# The --reuse_pkgs_from_local_boards flag tells Portage to share binary
|
||||
# packages between boards that are built locally, so that the total time
|
||||
# required to build several boards is reduced. This flag is only useful
|
||||
# when you are not able to use remote binary packages, since remote binary
|
||||
# packages are usually more up to date than anything you have locally.
|
||||
DEFINE_boolean reuse_pkgs_from_local_boards $FLAGS_FALSE \
|
||||
"Bootstrap from local packages instead of remote packages."
|
||||
|
||||
|
||||
# Parse command line
|
||||
FLAGS_HELP="usage: $0 [flags]"
|
||||
@ -103,7 +111,8 @@ if [[ -n "${EXTRA_BOARD_FLAGS}" ]]; then
|
||||
EMERGE_BOARD_CMD="${EMERGE_BOARD_CMD} ${EXTRA_BOARD_FLAGS}"
|
||||
fi
|
||||
|
||||
if [[ "${FLAGS_usepkg}" -eq "${FLAGS_TRUE}" ]]; then
|
||||
if [[ "${FLAGS_usepkg}" -eq "${FLAGS_TRUE}" ||
|
||||
"${FLAGS_reuse_pkgs_from_local_boards}" -eq "${FLAGS_TRUE}" ]]; then
|
||||
# Use binary packages. Include all build-time dependencies,
|
||||
# so as to avoid unnecessary differences between source
|
||||
# and binary builds.
|
||||
@ -135,6 +144,9 @@ fi
|
||||
if [[ "${FLAGS_jobs}" -ne -1 ]]; then
|
||||
UPDATE_ARGS+=" --jobs=${FLAGS_jobs}"
|
||||
fi
|
||||
if [ "${FLAGS_reuse_pkgs_from_local_boards}" -eq "${FLAGS_TRUE}" ]; then
|
||||
UPDATE_ARGS+=" --reuse_pkgs_from_local_boards"
|
||||
fi
|
||||
if [ "${FLAGS_skip_toolchain_update}" -eq "${FLAGS_TRUE}" ]; then
|
||||
UPDATE_ARGS+=" --skip_toolchain_update"
|
||||
fi
|
||||
|
||||
48
setup_board
48
setup_board
@ -74,6 +74,15 @@ DEFINE_boolean skip_chroot_upgrade $FLAGS_FALSE \
|
||||
This should only be called by version hook scripts that need to call \
|
||||
setup_board."
|
||||
|
||||
# The --reuse_pkgs_from_local_boards flag tells Portage to share binary
|
||||
# packages between boards that are built locally, so that the total time
|
||||
# required to build several boards is reduced. This flag is only useful
|
||||
# when you are not able to use remote binary packages, since remote binary
|
||||
# packages are usually more up to date than anything you have locally.
|
||||
DEFINE_boolean reuse_pkgs_from_local_boards $FLAGS_FALSE \
|
||||
"Bootstrap from local packages instead of remote packages."
|
||||
|
||||
|
||||
# builds wrappers like equery-arm-generic.
|
||||
# args:
|
||||
# $1: command to wrap
|
||||
@ -394,7 +403,15 @@ print_board_make_conf() {
|
||||
echo
|
||||
}
|
||||
|
||||
print_board_binhost_config() {
|
||||
print_binhost_config() {
|
||||
if [ "$1" == "--local" ]; then
|
||||
cros_generate_local_binhosts --board "${BOARD_VARIANT}"
|
||||
echo 'PORTAGE_BINHOST="$LOCAL_BINHOST"'
|
||||
return 0
|
||||
elif [ $# -ne 0 ]; then
|
||||
die "Invalid arguments for print_binhost_config: $@"
|
||||
fi
|
||||
|
||||
local binhost_dir="$CHROMIUMOS_OVERLAY/chromeos/binhost/target"
|
||||
local preflight_binhost="$binhost_dir/$BOARD-PREFLIGHT_BINHOST.conf"
|
||||
local chrome_binhost_suffix="LATEST_RELEASE_CHROME_BINHOST.conf"
|
||||
@ -452,6 +469,14 @@ EOF
|
||||
fi
|
||||
}
|
||||
|
||||
print_board_binhost_config() {
|
||||
if [ "${FLAGS_reuse_pkgs_from_local_boards}" -eq "${FLAGS_TRUE}" ]; then
|
||||
print_binhost_config --local
|
||||
else
|
||||
print_binhost_config
|
||||
fi
|
||||
}
|
||||
|
||||
# Parse command line flags
|
||||
FLAGS "$@" || exit 1
|
||||
eval set -- "${FLAGS_ARGV}"
|
||||
@ -571,8 +596,8 @@ if [ -d "$BOARD_ROOT" ] ; then
|
||||
sudo rm -rf $TEMP_DIR &
|
||||
else
|
||||
if ! $HOST_BOARD; then
|
||||
print_board_make_conf | sudo_clobber $BOARD_ETC/make.conf.board
|
||||
print_board_binhost_config | sudo_append $BOARD_ETC/make.conf.board
|
||||
{ print_board_make_conf; print_board_binhost_config; } | \
|
||||
sudo_clobber $BOARD_ETC/make.conf.board
|
||||
fi
|
||||
if [[ $FLAGS_quiet -eq $FLAGS_FALSE ]]; then
|
||||
warn "Board output directory '$BOARD_ROOT' already exists."
|
||||
@ -631,7 +656,6 @@ if ! ${HOST_BOARD}; then
|
||||
sudo ln -sf "${CHROMIUMOS_CONFIG}/make.conf.${ARCH}-target" \
|
||||
"${BOARD_ETC}/make.conf"
|
||||
print_board_make_conf | sudo_clobber $BOARD_ETC/make.conf.board
|
||||
print_board_binhost_config | sudo_append $BOARD_ETC/make.conf.board
|
||||
|
||||
# We install the toolchain related bits after the BOARD_ROOT, BOARD_PROFILE
|
||||
# and BOARD_ETC directories have been created.
|
||||
@ -728,15 +752,23 @@ if ${HOST_BOARD}; then
|
||||
sudo find $BOARD_ROOT -type f -name '*.la' | xargs sudo \
|
||||
sed -i -e "s|$BOARD_ROOT/|/|g"
|
||||
else
|
||||
# Now that the portageq-* wrappers have been created, we can add the binhost
|
||||
# config to make.conf.board.
|
||||
print_board_binhost_config | sudo_append $BOARD_ETC/make.conf.board
|
||||
|
||||
#
|
||||
# Emerge the kernel headers into the board build root.
|
||||
#
|
||||
EMERGE_FLAGS="--select --quiet"
|
||||
if [[ $FLAGS_usepkg -eq $FLAGS_TRUE ]]; then
|
||||
EMERGE_FLAGS+=" --getbinpkg --usepkg"
|
||||
KERNEL_EMERGE_FLAGS="--select --quiet"
|
||||
if [[ "${FLAGS_usepkg}" -eq "${FLAGS_TRUE}" ||
|
||||
"${FLAGS_reuse_pkgs_from_local_boards}" -eq "${FLAGS_TRUE}" ]]; then
|
||||
KERNEL_EMERGE_FLAGS+=" --getbinpkg --usepkg"
|
||||
fi
|
||||
|
||||
sudo -E "${EMERGE_WRAPPER}" ${EMERGE_FLAGS} chromeos-base/kernel-headers
|
||||
sudo -E "${EMERGE_WRAPPER}" ${KERNEL_EMERGE_FLAGS} \
|
||||
chromeos-base/kernel-headers
|
||||
|
||||
unset KERNEL_EMERGE_FLAGS
|
||||
fi
|
||||
|
||||
if [ $FLAGS_default -eq $FLAGS_TRUE ] ; then
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user