mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-07 21:16:57 +02:00
Using these flags directly was deprecated a while back and is causing confusion which way is the right way. This CL removes all these FLAGS from build_image (though keeps support of them in mod_image_for_test/image_to_usb invocations in common.sh). In this change I've also defaulted build_image to build the developer image (and only the developer image). BUG=chromium-os:27362 TEST=Been busy testing. Have built the following combinations and verified them: build_image base build_image build_image base dev test build_image dev build_image dev factory_test build_image factory_install Change-Id: Ie534c276a9ec571926964320ac176daa91b12a81 Reviewed-on: https://gerrit.chromium.org/gerrit/17386 Tested-by: Chris Sosa <sosa@chromium.org> Reviewed-by: Richard Barnette <jrbarnette@chromium.org> Commit-Ready: Chris Sosa <sosa@chromium.org>
102 lines
3.8 KiB
Bash
Executable File
102 lines
3.8 KiB
Bash
Executable File
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# Shell function library for functions specific to creating dev
|
|
# images from base images. The main function for export in this
|
|
# library is 'install_dev_packages'.
|
|
|
|
|
|
# Modifies an existing image to add development packages.
|
|
# Takes as an arg the name of the image to be created.
|
|
install_dev_packages() {
|
|
local image_name=$1
|
|
|
|
info "Adding developer packages to ${image_name}"
|
|
|
|
trap "unmount_image ; delete_prompt" EXIT
|
|
|
|
mount_image "${BUILD_DIR}/${image_name}" "${ROOT_FS_DIR}" \
|
|
"${STATEFUL_FS_DIR}" "${ESP_FS_DIR}"
|
|
|
|
# Determine the root dir for developer packages.
|
|
local root_dev_dir="${ROOT_FS_DIR}"
|
|
[ ${FLAGS_statefuldev} -eq ${FLAGS_TRUE} ] &&
|
|
root_dev_dir="${ROOT_FS_DIR}/usr/local"
|
|
|
|
# Install developer packages described in chromeos-dev.
|
|
emerge_to_image --root="${root_dev_dir}" chromeos-dev
|
|
|
|
# Copy over the libc debug info so that gdb
|
|
# works with threads and also for a better debugging experience.
|
|
sudo mkdir -p "${ROOT_FS_DIR}/usr/local/lib/debug"
|
|
sudo tar jxpf "${LIBC_PATH}" -C "${ROOT_FS_DIR}/usr/local/lib/debug" \
|
|
./usr/lib/debug/usr/${CHOST} --strip-components=6
|
|
|
|
# Install the bare necessary files so that the "emerge" command works
|
|
if [ ${FLAGS_statefuldev} -eq ${FLAGS_TRUE} ]; then
|
|
sudo cp -a ${root_dev_dir}/share/portage ${ROOT_FS_DIR}/usr/share
|
|
sudo sed -i s,/usr/bin/wget,wget, \
|
|
${ROOT_FS_DIR}/usr/share/portage/config/make.globals
|
|
fi
|
|
sudo mkdir -p ${ROOT_FS_DIR}/etc/make.profile
|
|
|
|
# Re-run ldconfig to fix /etc/ldconfig.so.cache.
|
|
sudo /sbin/ldconfig -r "${ROOT_FS_DIR}"
|
|
|
|
# Mark the image as a developer image (input to chromeos_startup).
|
|
# TODO(arkaitzr): Remove this file when applications no longer rely on it
|
|
# (crosbug.com/16648). The preferred way of determining developer mode status
|
|
# is via crossystem cros_debug?1 (checks boot args for "cros_debug").
|
|
sudo mkdir -p "${ROOT_FS_DIR}/root"
|
|
sudo touch "${ROOT_FS_DIR}/root/.dev_mode"
|
|
|
|
# Additional changes to developer image.
|
|
|
|
# Leave core files for developers to inspect.
|
|
sudo touch "${ROOT_FS_DIR}/root/.leave_core"
|
|
|
|
# This hack is only needed for devs who have old versions of glibc, which
|
|
# filtered out ldd when cross-compiling. TODO(davidjames): Remove this hack
|
|
# once everybody has upgraded to a new version of glibc.
|
|
if [[ ! -x "${ROOT_FS_DIR}/usr/bin/ldd" ]]; then
|
|
sudo cp -a "$(which ldd)" "${ROOT_FS_DIR}/usr/bin"
|
|
fi
|
|
|
|
# If vim is installed, then a vi symlink would probably help.
|
|
if [[ -x "${ROOT_FS_DIR}/usr/local/bin/vim" ]]; then
|
|
sudo ln -sf vim "${ROOT_FS_DIR}/usr/local/bin/vi"
|
|
fi
|
|
|
|
# If pygtk is installed in stateful-dev, then install a path.
|
|
if [[ -d \
|
|
"${ROOT_FS_DIR}/usr/local/lib/python2.6/site-packages/gtk-2.0" ]]; then
|
|
sudo bash -c "\
|
|
echo gtk-2.0 > \
|
|
${ROOT_FS_DIR}/usr/local/lib/python2.6/site-packages/pygtk.pth"
|
|
fi
|
|
|
|
# If python is installed on stateful-dev, fix python symlinks.
|
|
local python_path="/usr/local/bin/python2.6"
|
|
if [ -e "${ROOT_FS_DIR}${python_path}" ]; then
|
|
info "Fixing python symlinks for developer and test images."
|
|
local python_paths="/usr/bin/python /usr/local/bin/python \
|
|
/usr/bin/python2 /usr/local/bin/python2"
|
|
for path in ${python_paths}; do
|
|
sudo rm -f "${ROOT_FS_DIR}${path}"
|
|
sudo ln -s ${python_path} "${ROOT_FS_DIR}${path}"
|
|
done
|
|
fi
|
|
|
|
info "Developer image built and stored at ${image_name}"
|
|
|
|
unmount_image
|
|
trap - EXIT
|
|
|
|
if should_build_image ${image_name}; then
|
|
${SCRIPTS_DIR}/bin/cros_make_image_bootable "${BUILD_DIR}" \
|
|
${image_name} \
|
|
--force_developer_mode
|
|
fi
|
|
}
|