Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: common.sh

Issue 6240018: This starts to fix the scripts so that they load from /usr/lib/crosutils (Closed) Base URL: http://git.chromium.org/git/crosutils.git@master
Patch Set: fixing bad merge Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « clean_loopback_devices ('k') | create_esp.sh » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 # Common constants for build scripts 5 # Common constants for build scripts
6 # This must evaluate properly for both /bin/bash and /bin/sh 6 # This must evaluate properly for both /bin/bash and /bin/sh
7 7
8 # All scripts should die on error unless commands are specifically excepted 8 # All scripts should die on error unless commands are specifically excepted
9 # by prefixing with '!' or surrounded by 'set +e' / 'set -e'. 9 # by prefixing with '!' or surrounded by 'set +e' / 'set -e'.
10 # TODO: Re-enable this once shflags is less prone to dying. 10 # TODO: Re-enable this once shflags is less prone to dying.
11 #set -e 11 #set -e
12 12
13 # The number of jobs to pass to tools that can run in parallel (such as make 13 # The number of jobs to pass to tools that can run in parallel (such as make
14 # and dpkg-buildpackage 14 # and dpkg-buildpackage
15 NUM_JOBS=`grep -c "^processor" /proc/cpuinfo` 15 NUM_JOBS=$(grep -c "^processor" /proc/cpuinfo)
16 16
17 # Store location of the calling script. 17 # Make sure we have the location and name of the calling script, using
18 TOP_SCRIPT_DIR="${TOP_SCRIPT_DIR:-$(dirname $0)}" 18 # the current value if it is already set.
19 SCRIPT_LOCATION=${SCRIPT_LOCATION:-$(dirname "$(readlink -f "$0")")}
20 SCRIPT_NAME=${SCRIPT_NAME:-$(basename "$0")}
19 21
20 # Detect whether we're inside a chroot or not 22 # Detect whether we're inside a chroot or not
21 if [ -e /etc/debian_chroot ] 23 if [ -e /etc/debian_chroot ]
22 then 24 then
23 INSIDE_CHROOT=1 25 INSIDE_CHROOT=1
24 else 26 else
25 INSIDE_CHROOT=0 27 INSIDE_CHROOT=0
26 fi 28 fi
27 29
28 # Construct a list of possible locations for the source tree. This list is 30 # Construct a list of possible locations for the source tree. This list is
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 72
71 # Find root of source tree 73 # Find root of source tree
72 get_gclient_root 74 get_gclient_root
73 75
74 # Canonicalize the directories for the root dir and the calling script. 76 # Canonicalize the directories for the root dir and the calling script.
75 # readlink is part of coreutils and should be present even in a bare chroot. 77 # readlink is part of coreutils and should be present even in a bare chroot.
76 # This is better than just using 78 # This is better than just using
77 # FOO = "$(cd $FOO ; pwd)" 79 # FOO = "$(cd $FOO ; pwd)"
78 # since that leaves symbolic links intact. 80 # since that leaves symbolic links intact.
79 # Note that 'realpath' is equivalent to 'readlink -f'. 81 # Note that 'realpath' is equivalent to 'readlink -f'.
80 TOP_SCRIPT_DIR=`readlink -f $TOP_SCRIPT_DIR` 82 SCRIPT_LOCATION=$(readlink -f $SCRIPT_LOCATION)
81 GCLIENT_ROOT=`readlink -f $GCLIENT_ROOT` 83 GCLIENT_ROOT=$(readlink -f $GCLIENT_ROOT)
82 84
83 # Other directories should always be pathed down from GCLIENT_ROOT. 85 # Other directories should always be pathed down from GCLIENT_ROOT.
84 SRC_ROOT="$GCLIENT_ROOT/src" 86 SRC_ROOT="$GCLIENT_ROOT/src"
85 SRC_INTERNAL="$GCLIENT_ROOT/src-internal" 87 SRC_INTERNAL="$GCLIENT_ROOT/src-internal"
86 SCRIPTS_DIR="$SRC_ROOT/scripts" 88 SCRIPTS_DIR="$SRC_ROOT/scripts"
87 89
88 # Load developer's custom settings. Default location is in scripts dir, 90 # Load developer's custom settings. Default location is in scripts dir,
89 # since that's available both inside and outside the chroot. By convention, 91 # since that's available both inside and outside the chroot. By convention,
90 # settings from this file are variables starting with 'CHROMEOS_' 92 # settings from this file are variables starting with 'CHROMEOS_'
91 CHROMEOS_DEV_SETTINGS="${CHROMEOS_DEV_SETTINGS:-$SCRIPTS_DIR/.chromeos_dev}" 93 CHROMEOS_DEV_SETTINGS="${CHROMEOS_DEV_SETTINGS:-$SCRIPTS_DIR/.chromeos_dev}"
92 if [ -f $CHROMEOS_DEV_SETTINGS ] 94 if [ -f $CHROMEOS_DEV_SETTINGS ]; then
93 then
94 # Turn on exit-on-error during custom settings processing 95 # Turn on exit-on-error during custom settings processing
95 SAVE_OPTS=`set +o` 96 SAVE_OPTS=$(set +o)
96 set -e 97 set -e
97 98
98 # Read settings 99 # Read settings
99 . $CHROMEOS_DEV_SETTINGS 100 . $CHROMEOS_DEV_SETTINGS
100 101
101 # Restore previous state of exit-on-error 102 # Restore previous state of exit-on-error
102 eval "$SAVE_OPTS" 103 eval "$SAVE_OPTS"
103 fi 104 fi
104 105
105 # Load shflags 106 # Load shflags
106 if [[ -f /usr/lib/shflags ]]; then 107 if [[ -f /usr/lib/shflags ]]; then
107 . /usr/lib/shflags 108 . /usr/lib/shflags
108 elif [ -f ./lib/shflags/shflags ]; then 109 elif [ -f ./lib/shflags/shflags ]; then
109 . "./lib/shflags/shflags" 110 . ./lib/shflags/shflags
110 else 111 else
111 . "${SRC_ROOT}/scripts/lib/shflags/shflags" 112 . "${SRC_ROOT}/scripts/lib/shflags/shflags"
112 fi 113 fi
113 114
114 # Our local mirror 115 # Our local mirror
115 DEFAULT_CHROMEOS_SERVER=${CHROMEOS_SERVER:-"http://build.chromium.org/mirror"} 116 DEFAULT_CHROMEOS_SERVER=${CHROMEOS_SERVER:-"http://build.chromium.org/mirror"}
116 117
117 # Upstream mirrors and build suites come in 2 flavors 118 # Upstream mirrors and build suites come in 2 flavors
118 # DEV - development chroot, used to build the chromeos image 119 # DEV - development chroot, used to build the chromeos image
119 # IMG - bootable image, to run on actual hardware 120 # IMG - bootable image, to run on actual hardware
(...skipping 15 matching lines...) Expand all
135 if [ -d $SRC_ROOT/overlays ]; then 136 if [ -d $SRC_ROOT/overlays ]; then
136 ALL_BOARDS=$(cd $SRC_ROOT/overlays;ls -1d overlay-* 2>&-|sed 's,overlay-,,g') 137 ALL_BOARDS=$(cd $SRC_ROOT/overlays;ls -1d overlay-* 2>&-|sed 's,overlay-,,g')
137 fi 138 fi
138 # Strip CR 139 # Strip CR
139 ALL_BOARDS=$(echo $ALL_BOARDS) 140 ALL_BOARDS=$(echo $ALL_BOARDS)
140 # Set a default BOARD 141 # Set a default BOARD
141 #DEFAULT_BOARD=x86-generic # or... 142 #DEFAULT_BOARD=x86-generic # or...
142 DEFAULT_BOARD=$(echo $ALL_BOARDS | awk '{print $NF}') 143 DEFAULT_BOARD=$(echo $ALL_BOARDS | awk '{print $NF}')
143 144
144 # Enable --fast by default. 145 # Enable --fast by default.
145 DEFAULT_FAST="${FLAGS_TRUE}" 146 DEFAULT_FAST=${FLAGS_TRUE}
146 147
147 # Directory locations inside the dev chroot 148 # Directory locations inside the dev chroot
148 CHROOT_TRUNK_DIR="/home/$USER/trunk" 149 CHROOT_TRUNK_DIR="/home/$USER/trunk"
149 150
150 # Install make for portage ebuilds. Used by build_image and gmergefs. 151 # Install make for portage ebuilds. Used by build_image and gmergefs.
151 # TODO: Is /usr/local/autotest-chrome still used by anyone? 152 # TODO: Is /usr/local/autotest-chrome still used by anyone?
152 DEFAULT_INSTALL_MASK=" 153 DEFAULT_INSTALL_MASK="
153 *.a 154 *.a
154 *.la 155 *.la
155 /etc/init.d 156 /etc/init.d
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 case "$(basename $0)" in 210 case "$(basename $0)" in
210 build_image.sh|build_platform_packages.sh|customize_rootfs.sh|make_chroot.sh) 211 build_image.sh|build_platform_packages.sh|customize_rootfs.sh|make_chroot.sh)
211 echo 212 echo
212 echo "$V_REVERSE============================================================" 213 echo "$V_REVERSE============================================================"
213 echo "=========================== WARNING ======================" 214 echo "=========================== WARNING ======================"
214 echo "============================================================$V_VIDOFF" 215 echo "============================================================$V_VIDOFF"
215 echo 216 echo
216 echo "RUNNING OLD BUILD SYSTEM SCRIPTS. RUN THE PORTAGE-BASED BUILD HERE:" 217 echo "RUNNING OLD BUILD SYSTEM SCRIPTS. RUN THE PORTAGE-BASED BUILD HERE:"
217 echo "http://www.chromium.org/chromium-os/building-chromium-os/portage-based-b uild" 218 echo "http://www.chromium.org/chromium-os/building-chromium-os/portage-based-b uild"
218 echo 219 echo
219 if [ "$USER" != "chrome-bot" ] 220 if [ "$USER" != "chrome-bot" ]; then
220 then
221 read -n1 -p "Press any key to continue using the OLD build system..." 221 read -n1 -p "Press any key to continue using the OLD build system..."
222 echo 222 echo
223 echo 223 echo
224 fi 224 fi
225 ;; 225 ;;
226 esac 226 esac
227 227
228 # ----------------------------------------------------------------------------- 228 # -----------------------------------------------------------------------------
229 # Functions 229 # Functions
230 230
231 function setup_board_warning { 231 function setup_board_warning {
232 echo 232 echo
233 echo "$V_REVERSE================= WARNING ======================$V_VIDOFF" 233 echo "$V_REVERSE================= WARNING ======================$V_VIDOFF"
234 echo 234 echo
235 echo "*** No default board detected in " \ 235 echo "*** No default board detected in " \
236 "$GCLIENT_ROOT/src/scripts/.default_board" 236 "$GCLIENT_ROOT/src/scripts/.default_board"
237 echo "*** Either run setup_board with default flag set" 237 echo "*** Either run setup_board with default flag set"
238 echo "*** or echo |board_name| > $GCLIENT_ROOT/src/scripts/.default_board" 238 echo "*** or echo |board_name| > $GCLIENT_ROOT/src/scripts/.default_board"
239 echo 239 echo
240 } 240 }
241 241
242 242
243 # Sets the default board variable for calling script 243 # Sets the default board variable for calling script
244 function get_default_board { 244 function get_default_board {
245 DEFAULT_BOARD= 245 DEFAULT_BOARD=
246 246
247 if [ -f "$GCLIENT_ROOT/src/scripts/.default_board" ] ; then 247 if [ -f "$GCLIENT_ROOT/src/scripts/.default_board" ] ; then
248 DEFAULT_BOARD=`cat "$GCLIENT_ROOT/src/scripts/.default_board"` 248 DEFAULT_BOARD=$(cat "$GCLIENT_ROOT/src/scripts/.default_board")
249 fi 249 fi
250 } 250 }
251 251
252 252
253 # Make a package 253 # Make a package
254 function make_pkg_common { 254 function make_pkg_common {
255 # Positional parameters from calling script. :? means "fail if unset". 255 # Positional parameters from calling script. :? means "fail if unset".
256 set -e 256 set -e
257 PKG_BASE=${1:?} 257 PKG_BASE=${1:?}
258 shift 258 shift
259 set +e 259 set +e
260 260
261 # All packages are built in the chroot 261 # All packages are built in the chroot
262 assert_inside_chroot 262 assert_inside_chroot
263 263
264 # Command line options 264 # Command line options
265 DEFINE_string build_root "$DEFAULT_BUILD_ROOT" "Root of build output" 265 DEFINE_string build_root "$DEFAULT_BUILD_ROOT" "Root of build output"
266 266
267 # Parse command line and update positional args 267 # Parse command line and update positional args
268 FLAGS "$@" || exit 1 268 FLAGS "$@" || exit 1
269 eval set -- "${FLAGS_ARGV}" 269 eval set -- "${FLAGS_ARGV}"
270 270
271 # Die on any errors 271 # Die on any errors
272 set -e 272 set -e
273 273
274 # Make output dir 274 # Make output dir
275 OUT_DIR="$FLAGS_build_root/x86/local_packages" 275 local out_dir="$FLAGS_build_root/x86/local_packages"
276 mkdir -p "$OUT_DIR" 276 mkdir -p "$out_dir"
277 277
278 # Remove previous package from output dir 278 # Remove previous package from output dir
279 rm -f "$OUT_DIR"/${PKG_BASE}_*.deb 279 rm -f "$out_dir"/${PKG_BASE}_*.deb
280 280
281 # Rebuild the package 281 # Rebuild the package
282 pushd "$TOP_SCRIPT_DIR" 282 pushd "$SCRIPT_LOCATION"
283 rm -f ../${PKG_BASE}_*.deb 283 rm -f ../${PKG_BASE}_*.deb
284 dpkg-buildpackage -b -tc -us -uc -j$NUM_JOBS 284 dpkg-buildpackage -b -tc -us -uc -j$NUM_JOBS
285 mv ../${PKG_BASE}_*.deb "$OUT_DIR" 285 mv ../${PKG_BASE}_*.deb "$out_dir"
286 rm ../${PKG_BASE}_*.changes 286 rm ../${PKG_BASE}_*.changes
287 popd 287 popd
288 } 288 }
289 289
290 # Enter a chroot and restart the current script if needed 290 # Enter a chroot and restart the current script if needed
291 function restart_in_chroot_if_needed { 291 function restart_in_chroot_if_needed {
292 # NB: Pass in ARGV: restart_in_chroot_if_needed "$@" 292 # NB: Pass in ARGV: restart_in_chroot_if_needed "$@"
293 if [ $INSIDE_CHROOT -ne 1 ] 293 if [ $INSIDE_CHROOT -ne 1 ]; then
294 then 294 local abspath=$(readlink -f "$0")
295 # Equivalent to enter_chroot.sh -- <current command> 295 # strip everything up to (and including) /scripts/ from abspath
296 local path_from_scripts="${abspath##*/scripts/}"
296 exec $SCRIPTS_DIR/enter_chroot.sh -- \ 297 exec $SCRIPTS_DIR/enter_chroot.sh -- \
297 $CHROOT_TRUNK_DIR/src/scripts/$(basename $0) "$@" 298 "$CHROOT_TRUNK_DIR/src/scripts/$path_from_scripts" "$@"
298 fi 299 fi
299 } 300 }
300 301
301 # Fail unless we're inside the chroot. This guards against messing up your 302 # Fail unless we're inside the chroot. This guards against messing up your
302 # workstation. 303 # workstation.
303 function assert_inside_chroot { 304 function assert_inside_chroot {
304 if [ $INSIDE_CHROOT -ne 1 ] 305 if [ $INSIDE_CHROOT -ne 1 ]; then
305 then
306 echo "This script must be run inside the chroot. Run this first:" 306 echo "This script must be run inside the chroot. Run this first:"
307 echo " $SCRIPTS_DIR/enter_chroot.sh" 307 echo " $SCRIPTS_DIR/enter_chroot.sh"
308 exit 1 308 exit 1
309 fi 309 fi
310 } 310 }
311 311
312 # Fail if we're inside the chroot. This guards against creating or entering 312 # Fail if we're inside the chroot. This guards against creating or entering
313 # nested chroots, among other potential problems. 313 # nested chroots, among other potential problems.
314 function assert_outside_chroot { 314 function assert_outside_chroot {
315 if [ $INSIDE_CHROOT -ne 0 ] 315 if [ $INSIDE_CHROOT -ne 0 ]; then
316 then
317 echo "This script must be run outside the chroot." 316 echo "This script must be run outside the chroot."
318 exit 1 317 exit 1
319 fi 318 fi
320 } 319 }
321 320
322 function assert_not_root_user { 321 function assert_not_root_user {
323 if [ `id -u` = 0 ]; then 322 if [ $(id -u) = 0 ]; then
324 echo "This script must be run as a non-root user." 323 echo "This script must be run as a non-root user."
325 exit 1 324 exit 1
326 fi 325 fi
327 } 326 }
328 327
329 # Install a package if it's not already installed
330 function install_if_missing {
331 # Positional parameters from calling script. :? means "fail if unset".
332 PKG_NAME=${1:?}
333 shift
334
335 if [ -z `which $PKG_NAME` ]
336 then
337 echo "Can't find $PKG_NAME; attempting to install it."
338 sudo apt-get --yes --force-yes install $PKG_NAME
339 fi
340 }
341
342 # Returns true if the input file is whitelisted. 328 # Returns true if the input file is whitelisted.
343 # 329 #
344 # $1 - The file to check 330 # $1 - The file to check
345 is_whitelisted() { 331 is_whitelisted() {
346 local file=$1 332 local file=$1
347 local whitelist="$FLAGS_whitelist" 333 local whitelist="$FLAGS_whitelist"
348 test -f "$whitelist" || (echo "Whitelist file missing ($whitelist)" && exit 1) 334 test -f "$whitelist" || (echo "Whitelist file missing ($whitelist)" && exit 1)
349 335
350 local checksum=$(md5sum "$file" | awk '{ print $1 }') 336 local checksum=$(md5sum "$file" | awk '{ print $1 }')
351 local count=$(sed -e "s/#.*$//" "${whitelist}" | grep -c "$checksum" \ 337 local count=$(sed -e "s/#.*$//" "${whitelist}" | grep -c "$checksum" \
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 } 381 }
396 382
397 function die { 383 function die {
398 error "$1" 384 error "$1"
399 exit 1 385 exit 1
400 } 386 }
401 387
402 # Retry an emerge command according to $FLAGS_retries 388 # Retry an emerge command according to $FLAGS_retries
403 # The $EMERGE_JOBS flags will only be added the first time the command is run 389 # The $EMERGE_JOBS flags will only be added the first time the command is run
404 function eretry () { 390 function eretry () {
405 local i= 391 local i
406 for i in $(seq $FLAGS_retries); do 392 for i in $(seq $FLAGS_retries); do
407 echo Retrying $* 393 echo "Retrying $@"
408 $* $EMERGE_JOBS && return 0 394 "$@" $EMERGE_JOBS && return 0
409 done 395 done
410 $* && return 0 396 "$@" && return 0
411 return 1 397 return 1
412 } 398 }
413 399
414 # Removes single quotes around parameter 400 # Removes single quotes around parameter
415 # Arguments: 401 # Arguments:
416 # $1 - string which optionally has surrounding quotes 402 # $1 - string which optionally has surrounding quotes
417 # Returns: 403 # Returns:
418 # None, but prints the string without quotes. 404 # None, but prints the string without quotes.
419 function remove_quotes() { 405 function remove_quotes() {
420 echo "$1" | sed -e "s/^'//; s/'$//" 406 echo "$1" | sed -e "s/^'//; s/'$//"
(...skipping 27 matching lines...) Expand all
448 sudo umount -d -l "${path}" || die "Failed to lazily unmount ${path}" 434 sudo umount -d -l "${path}" || die "Failed to lazily unmount ${path}"
449 fi 435 fi
450 } 436 }
451 437
452 # Fixes symlinks that are incorrectly prefixed with the build root ${1} 438 # Fixes symlinks that are incorrectly prefixed with the build root ${1}
453 # rather than the real running root '/'. 439 # rather than the real running root '/'.
454 # TODO(sosa) - Merge setup - cleanup below with this method. 440 # TODO(sosa) - Merge setup - cleanup below with this method.
455 fix_broken_symlinks() { 441 fix_broken_symlinks() {
456 local build_root="${1}" 442 local build_root="${1}"
457 local symlinks=$(find "${build_root}/usr/local" -lname "${build_root}/*") 443 local symlinks=$(find "${build_root}/usr/local" -lname "${build_root}/*")
444 local symlink
458 for symlink in ${symlinks}; do 445 for symlink in ${symlinks}; do
459 echo "Fixing ${symlink}" 446 echo "Fixing ${symlink}"
460 local target=$(ls -l "${symlink}" | cut -f 2 -d '>') 447 local target=$(ls -l "${symlink}" | cut -f 2 -d '>')
461 # Trim spaces from target (bashism). 448 # Trim spaces from target (bashism).
462 target=${target/ /} 449 target=${target/ /}
463 # Make new target (removes rootfs prefix). 450 # Make new target (removes rootfs prefix).
464 new_target=$(echo ${target} | sed "s#${build_root}##") 451 new_target=$(echo ${target} | sed "s#${build_root}##")
465 452
466 echo "Fixing symlink ${symlink}" 453 echo "Fixing symlink ${symlink}"
467 sudo unlink "${symlink}" 454 sudo unlink "${symlink}"
(...skipping 16 matching lines...) Expand all
484 471
485 # If our var target is actually the standard var, we are cleaning up the 472 # If our var target is actually the standard var, we are cleaning up the
486 # symlinks (could also check for /usr/local for the dev_image_target). 473 # symlinks (could also check for /usr/local for the dev_image_target).
487 if [ ${var_target} = "/var" ]; then 474 if [ ${var_target} = "/var" ]; then
488 echo "Cleaning up /usr/local symlinks for ${dev_image_root}" 475 echo "Cleaning up /usr/local symlinks for ${dev_image_root}"
489 else 476 else
490 echo "Setting up symlinks for /usr/local for ${dev_image_root}" 477 echo "Setting up symlinks for /usr/local for ${dev_image_root}"
491 fi 478 fi
492 479
493 # Set up symlinks that should point to ${dev_image_target}. 480 # Set up symlinks that should point to ${dev_image_target}.
481 local path
494 for path in usr local; do 482 for path in usr local; do
495 if [ -h "${dev_image_root}/${path}" ]; then 483 if [ -h "${dev_image_root}/${path}" ]; then
496 sudo unlink "${dev_image_root}/${path}" 484 sudo unlink "${dev_image_root}/${path}"
497 elif [ -e "${dev_image_root}/${path}" ]; then 485 elif [ -e "${dev_image_root}/${path}" ]; then
498 die "${dev_image_root}/${path} should be a symlink if exists" 486 die "${dev_image_root}/${path} should be a symlink if exists"
499 fi 487 fi
500 sudo ln -s ${dev_image_target} "${dev_image_root}/${path}" 488 sudo ln -s ${dev_image_target} "${dev_image_root}/${path}"
501 done 489 done
502 490
503 # Setup var symlink. 491 # Setup var symlink.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 printf '\000' | 537 printf '\000' |
550 sudo dd of="$rootfs" seek=$((offset + ro_compat_offset)) \ 538 sudo dd of="$rootfs" seek=$((offset + ro_compat_offset)) \
551 conv=notrunc count=1 bs=1 539 conv=notrunc count=1 bs=1
552 } 540 }
553 541
554 # Get current timestamp. Assumes common.sh runs at startup. 542 # Get current timestamp. Assumes common.sh runs at startup.
555 start_time=$(date +%s) 543 start_time=$(date +%s)
556 544
557 # Print time elsapsed since start_time. 545 # Print time elsapsed since start_time.
558 print_time_elapsed() { 546 print_time_elapsed() {
559 end_time=$(date +%s) 547 local end_time=$(date +%s)
560 elapsed_seconds="$(( $end_time - $start_time ))" 548 local elapsed_seconds=$(($end_time - $start_time))
561 minutes="$(( $elapsed_seconds / 60 ))" 549 local minutes=$(($elapsed_seconds / 60))
562 seconds="$(( $elapsed_seconds % 60 ))" 550 local seconds=$(($elapsed_seconds % 60))
563 echo "Elapsed time: ${minutes}m${seconds}s" 551 echo "Elapsed time: ${minutes}m${seconds}s"
564 } 552 }
565 553
566 # This function is a place to put code to incrementally update the 554 # This function is a place to put code to incrementally update the
567 # chroot so that users don't need to fully re-make it. It should 555 # chroot so that users don't need to fully re-make it. It should
568 # be called from scripts that are run _outside_ the chroot. 556 # be called from scripts that are run _outside_ the chroot.
569 # 557 #
570 # Please put date information so it's easy to keep track of when 558 # Please put date information so it's easy to keep track of when
571 # old hacks can be retired and so that people can detect when a 559 # old hacks can be retired and so that people can detect when a
572 # hack triggered when it shouldn't have. 560 # hack triggered when it shouldn't have.
573 # 561 #
574 # ${1} specifies the location of the chroot. 562 # ${1} specifies the location of the chroot.
575 chroot_hacks_from_outside() { 563 chroot_hacks_from_outside() {
576 # Give args better names. 564 # Give args better names.
577 local chroot_dir="${1}" 565 local chroot_dir=$1
578 566
579 # Add root as a sudoer if not already done. 567 # Add root as a sudoer if not already done.
580 if ! sudo grep -q '^root ALL=(ALL) ALL$' "${chroot_dir}/etc/sudoers" ; then 568 if ! sudo grep -q '^root ALL=(ALL) ALL$' "${chroot_dir}/etc/sudoers" ; then
581 info "Upgrading old chroot (pre 2010-10-19) - adding root to sudoers" 569 info "Upgrading old chroot (pre 2010-10-19) - adding root to sudoers"
582 sudo bash -c "echo root ALL=\(ALL\) ALL >> \"${chroot_dir}/etc/sudoers\"" 570 sudo bash -c "echo root ALL=\(ALL\) ALL >> \"${chroot_dir}/etc/sudoers\""
583 fi 571 fi
584 } 572 }
585 573
586 # The board and variant command line options can be used in a number of ways 574 # The board and variant command line options can be used in a number of ways
587 # to specify the board and variant. The board can encode both pieces of 575 # to specify the board and variant. The board can encode both pieces of
588 # information separated by underscores. Or the variant can be passed using 576 # information separated by underscores. Or the variant can be passed using
589 # the separate variant option. This function extracts the canonical board and 577 # the separate variant option. This function extracts the canonical board and
590 # variant information and provides it in the BOARD, VARIANT and BOARD_VARIANT 578 # variant information and provides it in the BOARD, VARIANT and BOARD_VARIANT
591 # variables. 579 # variables.
592 get_board_and_variant() { 580 get_board_and_variant() {
593 local flags_board="${1}" 581 local flags_board="${1}"
594 local flags_variant="${2}" 582 local flags_variant="${2}"
595 583
596 BOARD=$(echo "$flags_board" | cut -d '_' -f 1) 584 BOARD=$(echo "$flags_board" | cut -d '_' -f 1)
597 VARIANT=${flags_variant:-$(echo "$flags_board" | cut -s -d '_' -f 2)} 585 VARIANT=${flags_variant:-$(echo "$flags_board" | cut -s -d '_' -f 2)}
598 586
599 if [ -n "$VARIANT" ]; then 587 if [ -n "$VARIANT" ]; then
600 BOARD_VARIANT="${BOARD}_${VARIANT}" 588 BOARD_VARIANT="${BOARD}_${VARIANT}"
601 else 589 else
602 BOARD_VARIANT="${BOARD}" 590 BOARD_VARIANT="${BOARD}"
603 fi 591 fi
604 } 592 }
OLDNEW
« no previous file with comments | « clean_loopback_devices ('k') | create_esp.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698