OLD | NEW |
| (Empty) |
1 #!/bin/bash | |
2 | |
3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | |
4 # Use of this source code is governed by a BSD-style license that can be | |
5 # found in the LICENSE file. | |
6 | |
7 # This script is a wrapper around every part of the build system that corrupts | |
8 # the pristine image for various purposes. | |
9 | |
10 # The purpose of this script is to allow a smooth transition from the old | |
11 # build system, where random corruptions of the pipelined approach to image | |
12 # creation happen in random places, to the new build system, where we keep all | |
13 # of them in one place. | |
14 | |
15 # To avoid code duplication and preservation of the old build system until the | |
16 # release of chromite, we need to import all the "corrupting" code into here, | |
17 # but provide "legacy" interfaces to this code so that it can be used in | |
18 # exactly identical way. This is done in 2 phases: | |
19 # 1) Wrapping around various other scripts, providing a way to call them from | |
20 # this script. | |
21 # 2) Make this script consume the wrapped scripts and provide legacy symlinks, | |
22 # that do exactly the same thing as the old scripts. | |
23 | |
24 #------ These are the scripts we're trying to kill --------# | |
25 | |
26 # --- BEGIN COMMON.SH BOILERPLATE --- | |
27 # Load common CrOS utilities. Inside the chroot this file is installed in | |
28 # /usr/lib/crosutils. Outside the chroot we find it relative to the script's | |
29 # location. | |
30 find_common_sh() { | |
31 local common_paths=(/usr/lib/crosutils $(dirname "$(readlink -f "$0")")) | |
32 local path | |
33 | |
34 SCRIPT_ROOT= | |
35 for path in "${common_paths[@]}"; do | |
36 if [ -r "${path}/common.sh" ]; then | |
37 SCRIPT_ROOT=${path} | |
38 break | |
39 fi | |
40 done | |
41 } | |
42 | |
43 find_common_sh | |
44 . "${SCRIPT_ROOT}/common.sh" || (echo "Unable to load common.sh" && exit 1) | |
45 # --- END COMMON.SH BOILERPLATE --- | |
46 | |
47 function mod_image_for_test() { | |
48 "${SCRIPTS_DIR}/mod_image_for_test.sh" "$@" || return $? | |
49 } | |
50 | |
51 function mod_image_for_recovery() { | |
52 "${SCRIPTS_DIR}/mod_image_for_recovery.sh" "$@" || return $? | |
53 } | |
54 | |
55 function mod_image_for_dev_recovery() { | |
56 "${SCRIPTS_DIR}/mod_image_for_dev_recovery.sh" "$@" || return $? | |
57 } | |
58 | |
59 function customize_rootfs() { | |
60 "${SCRIPTS_DIR}/customize_rootfs" "$@" || return $? | |
61 } | |
62 | |
63 #-------------------------- Tools -------------------------# | |
64 | |
65 function board_to_arch() { | |
66 . "/build/${1}/etc/make.conf.board_setup" || return 1 | |
67 TC_ARCH=$(echo "${CHOST}" | awk -F'-' '{ print $1 }') | |
68 case "${TC_ARCH}" in | |
69 (arm*) echo "arm";; | |
70 (*86) echo "x86";; | |
71 (*) error "Unable to determine ARCH from toolchain: ${CHOST}"; return 1;; | |
72 esac | |
73 } | |
74 | |
75 #--------------------------- Main -------------------------# | |
76 | |
77 function corrupt_for_recovery() { | |
78 : | |
79 } | |
80 function corrupt_for_dev_recovery() { | |
81 : | |
82 } | |
83 function corrupt_for_dev_install() { | |
84 : | |
85 } | |
86 function corrupt_for_factory_installer_shim() { | |
87 : | |
88 } | |
89 function corrupt_for_factory_test() { | |
90 : | |
91 } | |
92 function corrupt_for_test() { | |
93 : | |
94 } | |
95 | |
96 function main() { | |
97 get_default_board | |
98 | |
99 # Flag definitions: | |
100 DEFINE_string corruption_type "" \ | |
101 "The type of corruption to invoke upon the slashfs." | |
102 DEFINE_string board "${DEFAULT_BOARD}" \ | |
103 "The board to build an image for." | |
104 DEFINE_string slashfs "" \ | |
105 "The path to root file system to corrupt." | |
106 | |
107 # Parse command line. | |
108 FLAGS "$@" || return 1 | |
109 | |
110 # Sanity checking. | |
111 if [ -z "${FLAGS_corruption_type}" ]; then | |
112 echo "Please specify corruption type"; return 1 | |
113 fi | |
114 if [ -z "${FLAGS_board}" ]; then | |
115 echo "You must specify board"; return 1 | |
116 fi | |
117 | |
118 # Customize_rootfs needs arch, we need to get it somehow. | |
119 ARCH="$(board_to_arch ${FLAGS_board})" || return 1 | |
120 | |
121 ################################################### | |
122 # Parametric corruption of the slashfs starts here. | |
123 ################################################### | |
124 #customize_rootfs --board="${FLAGS_board}" --target="${ARCH}" \ | |
125 # --root="${FLAGS_slashroot}" | |
126 | |
127 case ${FLAGS_corruption_type} in | |
128 (recovery) corrupt_for_recovery ;; | |
129 (dev_recovery) corrupt_for_dev_recovery ;; | |
130 (dev_install) corrupt_for_dev_install ;; | |
131 (factory_installer_shim) corrupt_for_factory_installer_shim ;; | |
132 (factory_test) corrupt_for_factory_test ;; | |
133 (test) corrupt_for_test ;; | |
134 esac | |
135 return $? | |
136 } | |
137 | |
138 case "$(basename $0)" in | |
139 # (mod_image_for_test.sh) mod_image_for_test "$@" || return $?;; | |
140 # (mod_image_for_recovery.sh) mod_image_for_recovery "$@" || return $?;; | |
141 # (mod_image_for_dev_recovery.sh) mod_image_for_dev_recovery "$@" || return $?;
; | |
142 # (customize_rootfs) customize_rootfs "$@" || return $?;; | |
143 (image_hacks.sh) main "$@" || return $?;; # normal invocation | |
144 (*) echo "$0: Unknown invocation!"; exit 1 ;; | |
145 esac | |
OLD | NEW |