OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 | 2 |
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 # Script to archive build results. Used by the buildbots. | 7 # Script to archive build results. Used by the buildbots. |
8 | 8 |
9 # --- BEGIN COMMON.SH BOILERPLATE --- | 9 # --- BEGIN COMMON.SH BOILERPLATE --- |
10 # Load common CrOS utilities. Inside the chroot this file is installed in | 10 # Load common CrOS utilities. Inside the chroot this file is installed in |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 echo "Modifying image for test" | 144 echo "Modifying image for test" |
145 ./enter_chroot.sh -- ./mod_image_for_test.sh --board $FLAGS_board \ | 145 ./enter_chroot.sh -- ./mod_image_for_test.sh --board $FLAGS_board \ |
146 --noinplace --yes | 146 --noinplace --yes |
147 | 147 |
148 pushd "${FLAGS_chroot}/build/${FLAGS_board}/usr/local" | 148 pushd "${FLAGS_chroot}/build/${FLAGS_board}/usr/local" |
149 echo "Archiving autotest build artifacts" | 149 echo "Archiving autotest build artifacts" |
150 tar cjf "${FLAGS_from}/autotest.tar.bz2" --checkpoint=1000 autotest | 150 tar cjf "${FLAGS_from}/autotest.tar.bz2" --checkpoint=1000 autotest |
151 popd | 151 popd |
152 fi | 152 fi |
153 | 153 |
154 if [ $FLAGS_factory_test_mod -eq $FLAGS_TRUE ]; then | |
155 echo "Modifying image for factory test" | |
156 ./enter_chroot.sh -- ./mod_image_for_test.sh --board $FLAGS_board \ | |
157 --yes --noinplace --factory | |
158 fi | |
159 | |
160 # Modify for recovery | 154 # Modify for recovery |
161 if [ $FLAGS_official_build -eq $FLAGS_TRUE ]; then | 155 if [ $FLAGS_official_build -eq $FLAGS_TRUE ]; then |
162 BUILDVER="$(readlink ${IMAGES_DIR}/${FLAGS_board}/latest)" | 156 BUILDVER="$(readlink ${IMAGES_DIR}/${FLAGS_board}/latest)" |
163 CHROOT_IMAGE_DIR=/home/$USER/trunk/src/build/images/$FLAGS_board/$BUILDVER | 157 CHROOT_IMAGE_DIR=/home/$USER/trunk/src/build/images/$FLAGS_board/$BUILDVER |
164 ./enter_chroot.sh -- ./mod_image_for_recovery.sh --board $FLAGS_board \ | 158 ./enter_chroot.sh -- ./mod_image_for_recovery.sh --board $FLAGS_board \ |
165 --image $CHROOT_IMAGE_DIR/chromiumos_base_image.bin | 159 --image $CHROOT_IMAGE_DIR/chromiumos_base_image.bin |
166 fi | 160 fi |
167 | 161 |
168 # Remove the developer build if test image is also built. | 162 # Remove the developer build if test image is also built. |
169 if [ $FLAGS_remove_dev -eq $FLAGS_TRUE ]; then | 163 if [ $FLAGS_remove_dev -eq $FLAGS_TRUE ]; then |
170 rm -f "${FLAGS_from}/${CHROMEOS_IMAGE_NAME}" | 164 rm -f "${FLAGS_from}/${CHROMEOS_IMAGE_NAME}" |
171 fi | 165 fi |
172 | 166 |
| 167 if [ $FLAGS_factory_test_mod -eq $FLAGS_TRUE ]; then |
| 168 echo "Generating image for factory test" |
| 169 # HACK: The build system can't currently handle more than one image size |
| 170 # at a time. Therefore it's necessary to do another round of build after |
| 171 # archiving the original build. This should be fixed in Chromite. |
| 172 |
| 173 # HACK: cbuild has a special case when running on chrome-bot that |
| 174 # zeroes out the current revision, which makes calling build_image directly |
| 175 # fail. You must explictly call replace and specify a unique name numerically |
| 176 # using build_attempt. |
| 177 ./enter_chroot.sh -- ./build_image --board $FLAGS_board \ |
| 178 --replace --noenable_rootfs_verification --build_attempt 4 |
| 179 |
| 180 ./enter_chroot.sh -- ./mod_image_for_test.sh --board $FLAGS_board \ |
| 181 --yes --noinplace --factory |
| 182 |
| 183 # Get the factory test dir: It is the newest build. |
| 184 # This is the output dir for the factory shim, the factory test and |
| 185 # release images will remain in IMG_DIR, defined previously. |
| 186 FACTORY_DIR="$(readlink ${IMAGES_DIR}/${FLAGS_board}/latest)" |
| 187 |
| 188 echo "Factory image dir: ${FACTORY_DIR}" |
| 189 fi |
| 190 |
173 # Build differently sized shims. Currently only factory install shim is | 191 # Build differently sized shims. Currently only factory install shim is |
174 # supported, TODO(tgao): Add developer shim. | 192 # supported, TODO(tgao): Add developer shim. |
175 if [ $FLAGS_factory_install_mod -eq $FLAGS_TRUE ]; then | 193 if [ $FLAGS_factory_install_mod -eq $FLAGS_TRUE ]; then |
176 echo "Building factory install shim." | 194 echo "Building factory install shim." |
177 # HACK: The build system can't currently handle more than one image size | 195 # HACK: The build system can't currently handle more than one image size |
178 # at a time. Therefor eit's necessary to do another round of build after | 196 # at a time. Therefore it's necessary to do another round of build after |
179 # archiving the original build. This should be fixed in Chromite. | 197 # archiving the original build. This should be fixed in Chromite. |
180 | 198 |
181 # HACK: cbuild has a special case when running on chrome-bot that | 199 # HACK: cbuild has a special case when running on chrome-bot that |
182 # zeroes out the current revision, which makes calling build_image directly | 200 # zeroes out the current revision, which makes calling build_image directly |
183 # fail. You must explictly call replace and specify a unique name numerically | 201 # fail. You must explictly call replace and specify a unique name numerically |
184 # using build_attempt. | 202 # using build_attempt. |
185 ./enter_chroot.sh -- ./build_image --board $FLAGS_board --factory_install \ | 203 ./enter_chroot.sh -- ./build_image --board $FLAGS_board --factory_install \ |
186 --replace --build_attempt 7 | 204 --replace --build_attempt 7 |
187 | 205 |
188 # Get the install shim dir: It is the newest build. | 206 # Get the install shim dir: It is the newest build. |
189 # This is the output dir for the factory shim, the factory test and | 207 # This is the output dir for the factory shim, the factory test and |
190 # release images will remain in IMG_DIR, defined previously. | 208 # release images will remain in IMG_DIR, defined previously. |
191 SHIM_DIR="$(readlink ${IMAGES_DIR}/${FLAGS_board}/latest)" | 209 SHIM_DIR="$(readlink ${IMAGES_DIR}/${FLAGS_board}/latest)" |
192 | 210 |
193 echo "Factory image dir: ${IMG_DIR}" | |
194 echo "Factory install shim dir: ${SHIM_DIR}" | 211 echo "Factory install shim dir: ${SHIM_DIR}" |
195 fi | 212 fi |
196 | 213 |
197 # Zip the build | 214 # Zip the build |
198 echo "Compressing and archiving build..." | 215 echo "Compressing and archiving build..." |
199 cd "$FLAGS_from" | 216 cd "$FLAGS_from" |
200 MANIFEST=`ls | grep -v factory` | 217 MANIFEST=`ls | grep -v factory` |
201 zip -r "${ZIPFILE}" ${MANIFEST} | 218 zip -r "${ZIPFILE}" ${MANIFEST} |
202 | 219 |
203 if [ $FLAGS_factory_test_mod -eq $FLAGS_TRUE ] || \ | 220 if [ $FLAGS_factory_test_mod -eq $FLAGS_TRUE ] || \ |
204 [ $FLAGS_factory_install_mod -eq $FLAGS_TRUE ]; then | 221 [ $FLAGS_factory_install_mod -eq $FLAGS_TRUE ]; then |
205 # We need to have directory structure for factory package, as | 222 # We need to have directory structure for factory package, as |
206 # signing and packaging utilities need unpack_partitions.sh. | 223 # signing and packaging utilities need unpack_partitions.sh. |
207 echo "Compressing factory software" | 224 echo "Compressing factory software" |
208 pushd .. | 225 pushd .. |
209 [ -n "${SHIM_DIR}" ] && rm -f factory_shim && ln -s "${SHIM_DIR}" factory_shim | 226 [ -n "${SHIM_DIR}" ] && rm -f factory_shim && \ |
210 [ -n "${IMG_DIR}" ] && rm -f factory_test && ln -s "${IMG_DIR}" factory_test | 227 ln -s "${SHIM_DIR}" factory_shim |
| 228 [ -n "${FACTORY_DIR}" ] && rm -f factory_test && \ |
| 229 ln -s "${FACTORY_DIR}" factory_test |
211 | 230 |
212 # Restore "latest" status to the original image. | 231 # Restore "latest" status to the original image. |
213 # The "latest" symlink and latest timestamp are used extensively | 232 # The "latest" symlink and latest timestamp are used extensively |
214 # throughout the build scripts rather than explicitly specifying an image. | 233 # throughout the build scripts rather than explicitly specifying an image. |
215 touch "${IMG_DIR}" | 234 touch "${IMG_DIR}" |
216 [ -n "${IMG_DIR}" ] && rm -f latest && ln -s "${IMG_DIR}" latest | 235 [ -n "${IMG_DIR}" ] && rm -f latest && ln -s "${IMG_DIR}" latest |
217 FACTORY_MANIFEST=`find factory_shim factory_test -follow \ | 236 FACTORY_MANIFEST=`find factory_shim factory_test -follow \ |
218 -type f | grep -E "(factory_image|factory_install|partition)"` | 237 -type f | grep -E "(factory_image|factory_install|partition)"` |
219 zip "${FACTORY_ZIPFILE}" ${FACTORY_MANIFEST} | 238 zip "${FACTORY_ZIPFILE}" ${FACTORY_MANIFEST} |
220 echo "Zipped" | 239 echo "Zipped" |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 # Purge old builds if necessary | 341 # Purge old builds if necessary |
323 if [ $FLAGS_keep_max -gt 0 ]; then | 342 if [ $FLAGS_keep_max -gt 0 ]; then |
324 echo "Deleting old builds (all but the newest ${FLAGS_keep_max})..." | 343 echo "Deleting old builds (all but the newest ${FLAGS_keep_max})..." |
325 cd "$FLAGS_to" | 344 cd "$FLAGS_to" |
326 # +2 because line numbers start at 1 and need to skip LATEST file | 345 # +2 because line numbers start at 1 and need to skip LATEST file |
327 rm -rf `ls -t1 | tail --lines=+$(($FLAGS_keep_max + 2))` | 346 rm -rf `ls -t1 | tail --lines=+$(($FLAGS_keep_max + 2))` |
328 cd - | 347 cd - |
329 fi | 348 fi |
330 | 349 |
331 echo "Done." | 350 echo "Done." |
OLD | NEW |