Prototype faster build (kind of ugly)

Review URL: http://codereview.chromium.org/2724014
This commit is contained in:
Nick Sanders 2010-06-16 03:15:17 -07:00
parent f01ea9d93e
commit 8ab729ab98
2 changed files with 21 additions and 5 deletions

View File

@ -69,6 +69,14 @@ if [ "$FLAGS_rootfs_size" -gt "$FLAGS_rootfs_partition_size" ] ; then
exit 1
fi
EMERGE_CMD="emerge"
EMERGE_BOARD_CMD="emerge-${FLAGS_board}"
TOP_SCRIPTS_DIR="$(dirname $0)"
if [ -e "${TOP_SCRIPTS_DIR}/.emerge" ]; then
echo "Using alternate emerge"
. "${TOP_SCRIPTS_DIR}/.emerge"
fi
# Determine build version.
. "${SCRIPTS_DIR}/chromeos_version.sh"
@ -233,12 +241,12 @@ create_mod_image() {
root_dev_dir="$root_fs_dir/usr/local"
# Install developer packages described in chromeos-dev.
sudo INSTALL_MASK="$INSTALL_MASK" emerge-${BOARD} \
sudo INSTALL_MASK="$INSTALL_MASK" ${EMERGE_BOARD_CMD} \
--root="$root_dev_dir" --root-deps=rdeps \
--usepkgonly chromeos-dev $EMERGE_JOBS
elif [ "$image_type" == "recovery" ]; then
# Install recovery installer
sudo emerge-${BOARD} --root=$root_fs_dir --usepkgonly \
sudo ${EMERGE_BOARD_CMD} --root=$root_fs_dir --usepkgonly \
--root-deps=rdeps --nodeps chromeos-recovery
fi
@ -406,12 +414,13 @@ sudo mkdir -p "${ROOT_FS_DIR}/usr/local"
sudo mount --bind "${DEV_IMAGE_ROOT}" "${ROOT_FS_DIR}/usr/local"
sudo mkdir -p "${ROOT_FS_DIR}/var"
sudo mount --bind "${STATEFUL_DIR}/var" "${ROOT_FS_DIR}/var"
sudo mkdir -p "${ROOT_FS_DIR}/dev"
# We "emerge --root=$ROOT_FS_DIR --root-deps=rdeps --usepkgonly" all of the
# runtime packages for chrome os. This builds up a chrome os image from binary
# packages with runtime dependencies only. We use INSTALL_MASK to trim the
# image size as much as possible.
sudo INSTALL_MASK="$INSTALL_MASK" emerge-${BOARD} \
sudo INSTALL_MASK="$INSTALL_MASK" ${EMERGE_BOARD_CMD} \
--root="$ROOT_FS_DIR" --root-deps=rdeps \
--usepkgonly chromeos $EMERGE_JOBS
@ -567,6 +576,7 @@ fi
if [ "$FLAGS_withdev" -eq "$FLAGS_TRUE" ]; then
echo "Developer image created as $DEVELOPER_IMAGE_NAME"
fi
echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:"
echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX"
echo "To convert to VMWare image, OUTSIDE the chroot, do something like:"

View File

@ -39,6 +39,12 @@ DEFINE_string build_root "/build" \
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"
EMERGE_CMD="emerge"
EMERGE_BOARD_CMD="emerge-${FLAGS_board}"
if [ -e "${TOP_SCRIPTS_DIR}/.emerge" ]; then
. "${TOP_SCRIPTS_DIR}/.emerge"
fi
# No board, no default and no image set then we can't find the image
if [ -z $FLAGS_image ] && [ -z $FLAGS_board ] ; then
setup_board_warning
@ -89,7 +95,7 @@ emerge_chromeos_test() {
# Determine the root dir for test packages.
ROOT_DEV_DIR="$ROOT_FS_DIR/usr/local"
INSTALL_MASK="$INSTALL_MASK" emerge-${FLAGS_board} \
INSTALL_MASK="$INSTALL_MASK" $EMERGE_BOARD_CMD \
--root="$ROOT_DEV_DIR" --root-deps=rdeps \
--usepkgonly chromeos-test $EMERGE_JOBS
}
@ -156,7 +162,7 @@ if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ]; then
# out of space.
# Run factory setup script to modify the image.
sudo emerge-${FLAGS_board} --root=$ROOT_FS_DIR --usepkgonly \
sudo $EMERGE_BOARD_CMD --root=$ROOT_FS_DIR --usepkgonly \
--root-deps=rdeps --nodeps chromeos-factoryinstall
# Set factory server if necessary.