mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-08 05:26:58 +02:00
from within the chroot. It also fixes a number of style issues. It changes the meaning of cros_workon "list-all" to list all available packages, and adds "list-live" to list all live packages. It changes things that load chromeos-common.sh from the installer to load it from /usr/lib/installer. BUG=chromium-os:4230 TEST=synced, rebuilt chroot, made packages, made images, built chrome from source, and wrote an image to a USB stick. Review URL: http://codereview.chromium.org/6240018 Change-Id: I90c34420af1a64020402bafef8e9e77f56837c02
146 lines
4.4 KiB
Bash
Executable File
146 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright (c) 2009 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.
|
|
|
|
# This script is a wrapper around every part of the build system that corrupts
|
|
# the pristine image for various purposes.
|
|
|
|
# The purpose of this script is to allow a smooth transition from the old
|
|
# build system, where random corruptions of the pipelined approach to image
|
|
# creation happen in random places, to the new build system, where we keep all
|
|
# of them in one place.
|
|
|
|
# To avoid code duplication and preservation of the old build system until the
|
|
# release of chromite, we need to import all the "corrupting" code into here,
|
|
# but provide "legacy" interfaces to this code so that it can be used in
|
|
# exactly identical way. This is done in 2 phases:
|
|
# 1) Wrapping around various other scripts, providing a way to call them from
|
|
# this script.
|
|
# 2) Make this script consume the wrapped scripts and provide legacy symlinks,
|
|
# that do exactly the same thing as the old scripts.
|
|
|
|
#------ These are the scripts we're trying to kill --------#
|
|
|
|
# --- BEGIN COMMON.SH BOILERPLATE ---
|
|
# Load common CrOS utilities. Inside the chroot this file is installed in
|
|
# /usr/lib/crosutils. Outside the chroot we find it relative to the script's
|
|
# location.
|
|
find_common_sh() {
|
|
local common_paths=(/usr/lib/crosutils $(dirname "$(readlink -f "$0")"))
|
|
local path
|
|
|
|
SCRIPT_ROOT=
|
|
for path in "${common_paths[@]}"; do
|
|
if [ -r "${path}/common.sh" ]; then
|
|
SCRIPT_ROOT=${path}
|
|
break
|
|
fi
|
|
done
|
|
}
|
|
|
|
find_common_sh
|
|
. "${SCRIPT_ROOT}/common.sh" || (echo "Unable to load common.sh" && exit 1)
|
|
# --- END COMMON.SH BOILERPLATE ---
|
|
|
|
function mod_image_for_test() {
|
|
"${SCRIPTS_DIR}/mod_image_for_test.sh" "$@" || return $?
|
|
}
|
|
|
|
function mod_image_for_recovery() {
|
|
"${SCRIPTS_DIR}/mod_image_for_recovery.sh" "$@" || return $?
|
|
}
|
|
|
|
function mod_image_for_dev_recovery() {
|
|
"${SCRIPTS_DIR}/mod_image_for_dev_recovery.sh" "$@" || return $?
|
|
}
|
|
|
|
function customize_rootfs() {
|
|
"${SCRIPTS_DIR}/customize_rootfs" "$@" || return $?
|
|
}
|
|
|
|
#-------------------------- Tools -------------------------#
|
|
|
|
function board_to_arch() {
|
|
. "/build/${1}/etc/make.conf.board_setup" || return 1
|
|
TC_ARCH=$(echo "${CHOST}" | awk -F'-' '{ print $1 }')
|
|
case "${TC_ARCH}" in
|
|
(arm*) echo "arm";;
|
|
(*86) echo "x86";;
|
|
(*) error "Unable to determine ARCH from toolchain: ${CHOST}"; return 1;;
|
|
esac
|
|
}
|
|
|
|
#--------------------------- Main -------------------------#
|
|
|
|
function corrupt_for_recovery() {
|
|
:
|
|
}
|
|
function corrupt_for_dev_recovery() {
|
|
:
|
|
}
|
|
function corrupt_for_dev_install() {
|
|
:
|
|
}
|
|
function corrupt_for_factory_installer_shim() {
|
|
:
|
|
}
|
|
function corrupt_for_factory_test() {
|
|
:
|
|
}
|
|
function corrupt_for_test() {
|
|
:
|
|
}
|
|
|
|
function main() {
|
|
get_default_board
|
|
|
|
# Flag definitions:
|
|
DEFINE_string corruption_type "" \
|
|
"The type of corruption to invoke upon the slashfs."
|
|
DEFINE_string board "${DEFAULT_BOARD}" \
|
|
"The board to build an image for."
|
|
DEFINE_string slashfs "" \
|
|
"The path to root file system to corrupt."
|
|
|
|
# Parse command line.
|
|
FLAGS "$@" || return 1
|
|
|
|
# Sanity checking.
|
|
if [ -z "${FLAGS_corruption_type}" ]; then
|
|
echo "Please specify corruption type"; return 1
|
|
fi
|
|
if [ -z "${FLAGS_board}" ]; then
|
|
echo "You must specify board"; return 1
|
|
fi
|
|
|
|
# Customize_rootfs needs arch, we need to get it somehow.
|
|
ARCH="$(board_to_arch ${FLAGS_board})" || return 1
|
|
|
|
###################################################
|
|
# Parametric corruption of the slashfs starts here.
|
|
###################################################
|
|
#customize_rootfs --board="${FLAGS_board}" --target="${ARCH}" \
|
|
# --root="${FLAGS_slashroot}"
|
|
|
|
case ${FLAGS_corruption_type} in
|
|
(recovery) corrupt_for_recovery ;;
|
|
(dev_recovery) corrupt_for_dev_recovery ;;
|
|
(dev_install) corrupt_for_dev_install ;;
|
|
(factory_installer_shim) corrupt_for_factory_installer_shim ;;
|
|
(factory_test) corrupt_for_factory_test ;;
|
|
(test) corrupt_for_test ;;
|
|
esac
|
|
return $?
|
|
}
|
|
|
|
case "$(basename $0)" in
|
|
# (mod_image_for_test.sh) mod_image_for_test "$@" || return $?;;
|
|
# (mod_image_for_recovery.sh) mod_image_for_recovery "$@" || return $?;;
|
|
# (mod_image_for_dev_recovery.sh) mod_image_for_dev_recovery "$@" || return $?;;
|
|
# (customize_rootfs) customize_rootfs "$@" || return $?;;
|
|
(image_hacks.sh) main "$@" || return $?;; # normal invocation
|
|
(*) echo "$0: Unknown invocation!"; exit 1 ;;
|
|
esac
|