Index: common.sh |
diff --git a/common.sh b/common.sh |
index 7235f23ce92723d9dc6b18e95358a65e99988ab2..5f3495fdbb5dd942d6ee75a39547d282b014b3a1 100644 |
--- a/common.sh |
+++ b/common.sh |
@@ -12,10 +12,12 @@ |
# The number of jobs to pass to tools that can run in parallel (such as make |
# and dpkg-buildpackage |
-NUM_JOBS=`grep -c "^processor" /proc/cpuinfo` |
+NUM_JOBS=$(grep -c "^processor" /proc/cpuinfo) |
-# Store location of the calling script. |
-TOP_SCRIPT_DIR="${TOP_SCRIPT_DIR:-$(dirname $0)}" |
+# Make sure we have the location and name of the calling script, using |
+# the current value if it is already set. |
+SCRIPT_LOCATION=${SCRIPT_LOCATION:-$(dirname "$(readlink -f "$0")")} |
+SCRIPT_NAME=${SCRIPT_NAME:-$(basename "$0")} |
# Detect whether we're inside a chroot or not |
if [ -e /etc/debian_chroot ] |
@@ -77,8 +79,8 @@ get_gclient_root |
# FOO = "$(cd $FOO ; pwd)" |
# since that leaves symbolic links intact. |
# Note that 'realpath' is equivalent to 'readlink -f'. |
-TOP_SCRIPT_DIR=`readlink -f $TOP_SCRIPT_DIR` |
-GCLIENT_ROOT=`readlink -f $GCLIENT_ROOT` |
+SCRIPT_LOCATION=$(readlink -f $SCRIPT_LOCATION) |
+GCLIENT_ROOT=$(readlink -f $GCLIENT_ROOT) |
# Other directories should always be pathed down from GCLIENT_ROOT. |
SRC_ROOT="$GCLIENT_ROOT/src" |
@@ -89,10 +91,9 @@ SCRIPTS_DIR="$SRC_ROOT/scripts" |
# since that's available both inside and outside the chroot. By convention, |
# settings from this file are variables starting with 'CHROMEOS_' |
CHROMEOS_DEV_SETTINGS="${CHROMEOS_DEV_SETTINGS:-$SCRIPTS_DIR/.chromeos_dev}" |
-if [ -f $CHROMEOS_DEV_SETTINGS ] |
-then |
+if [ -f $CHROMEOS_DEV_SETTINGS ]; then |
# Turn on exit-on-error during custom settings processing |
- SAVE_OPTS=`set +o` |
+ SAVE_OPTS=$(set +o) |
set -e |
# Read settings |
@@ -106,7 +107,7 @@ fi |
if [[ -f /usr/lib/shflags ]]; then |
. /usr/lib/shflags |
elif [ -f ./lib/shflags/shflags ]; then |
- . "./lib/shflags/shflags" |
+ . ./lib/shflags/shflags |
else |
. "${SRC_ROOT}/scripts/lib/shflags/shflags" |
fi |
@@ -142,7 +143,7 @@ ALL_BOARDS=$(echo $ALL_BOARDS) |
DEFAULT_BOARD=$(echo $ALL_BOARDS | awk '{print $NF}') |
# Enable --fast by default. |
-DEFAULT_FAST="${FLAGS_TRUE}" |
+DEFAULT_FAST=${FLAGS_TRUE} |
# Directory locations inside the dev chroot |
CHROOT_TRUNK_DIR="/home/$USER/trunk" |
@@ -216,8 +217,7 @@ case "$(basename $0)" in |
echo "RUNNING OLD BUILD SYSTEM SCRIPTS. RUN THE PORTAGE-BASED BUILD HERE:" |
echo "http://www.chromium.org/chromium-os/building-chromium-os/portage-based-build" |
echo |
- if [ "$USER" != "chrome-bot" ] |
- then |
+ if [ "$USER" != "chrome-bot" ]; then |
read -n1 -p "Press any key to continue using the OLD build system..." |
echo |
echo |
@@ -245,7 +245,7 @@ function get_default_board { |
DEFAULT_BOARD= |
if [ -f "$GCLIENT_ROOT/src/scripts/.default_board" ] ; then |
- DEFAULT_BOARD=`cat "$GCLIENT_ROOT/src/scripts/.default_board"` |
+ DEFAULT_BOARD=$(cat "$GCLIENT_ROOT/src/scripts/.default_board") |
fi |
} |
@@ -272,17 +272,17 @@ function make_pkg_common { |
set -e |
# Make output dir |
- OUT_DIR="$FLAGS_build_root/x86/local_packages" |
- mkdir -p "$OUT_DIR" |
+ local out_dir="$FLAGS_build_root/x86/local_packages" |
+ mkdir -p "$out_dir" |
# Remove previous package from output dir |
- rm -f "$OUT_DIR"/${PKG_BASE}_*.deb |
+ rm -f "$out_dir"/${PKG_BASE}_*.deb |
# Rebuild the package |
- pushd "$TOP_SCRIPT_DIR" |
+ pushd "$SCRIPT_LOCATION" |
rm -f ../${PKG_BASE}_*.deb |
dpkg-buildpackage -b -tc -us -uc -j$NUM_JOBS |
- mv ../${PKG_BASE}_*.deb "$OUT_DIR" |
+ mv ../${PKG_BASE}_*.deb "$out_dir" |
rm ../${PKG_BASE}_*.changes |
popd |
} |
@@ -290,19 +290,19 @@ function make_pkg_common { |
# Enter a chroot and restart the current script if needed |
function restart_in_chroot_if_needed { |
# NB: Pass in ARGV: restart_in_chroot_if_needed "$@" |
- if [ $INSIDE_CHROOT -ne 1 ] |
- then |
- # Equivalent to enter_chroot.sh -- <current command> |
+ if [ $INSIDE_CHROOT -ne 1 ]; then |
+ local abspath=$(readlink -f "$0") |
+ # strip everything up to (and including) /scripts/ from abspath |
+ local path_from_scripts="${abspath##*/scripts/}" |
exec $SCRIPTS_DIR/enter_chroot.sh -- \ |
- $CHROOT_TRUNK_DIR/src/scripts/$(basename $0) "$@" |
+ "$CHROOT_TRUNK_DIR/src/scripts/$path_from_scripts" "$@" |
fi |
} |
# Fail unless we're inside the chroot. This guards against messing up your |
# workstation. |
function assert_inside_chroot { |
- if [ $INSIDE_CHROOT -ne 1 ] |
- then |
+ if [ $INSIDE_CHROOT -ne 1 ]; then |
echo "This script must be run inside the chroot. Run this first:" |
echo " $SCRIPTS_DIR/enter_chroot.sh" |
exit 1 |
@@ -312,33 +312,19 @@ function assert_inside_chroot { |
# Fail if we're inside the chroot. This guards against creating or entering |
# nested chroots, among other potential problems. |
function assert_outside_chroot { |
- if [ $INSIDE_CHROOT -ne 0 ] |
- then |
+ if [ $INSIDE_CHROOT -ne 0 ]; then |
echo "This script must be run outside the chroot." |
exit 1 |
fi |
} |
function assert_not_root_user { |
- if [ `id -u` = 0 ]; then |
+ if [ $(id -u) = 0 ]; then |
echo "This script must be run as a non-root user." |
exit 1 |
fi |
} |
-# Install a package if it's not already installed |
-function install_if_missing { |
- # Positional parameters from calling script. :? means "fail if unset". |
- PKG_NAME=${1:?} |
- shift |
- |
- if [ -z `which $PKG_NAME` ] |
- then |
- echo "Can't find $PKG_NAME; attempting to install it." |
- sudo apt-get --yes --force-yes install $PKG_NAME |
- fi |
-} |
- |
# Returns true if the input file is whitelisted. |
# |
# $1 - The file to check |
@@ -402,12 +388,12 @@ function die { |
# Retry an emerge command according to $FLAGS_retries |
# The $EMERGE_JOBS flags will only be added the first time the command is run |
function eretry () { |
- local i= |
+ local i |
for i in $(seq $FLAGS_retries); do |
- echo Retrying $* |
- $* $EMERGE_JOBS && return 0 |
+ echo "Retrying $@" |
+ "$@" $EMERGE_JOBS && return 0 |
done |
- $* && return 0 |
+ "$@" && return 0 |
return 1 |
} |
@@ -455,6 +441,7 @@ function safe_umount { |
fix_broken_symlinks() { |
local build_root="${1}" |
local symlinks=$(find "${build_root}/usr/local" -lname "${build_root}/*") |
+ local symlink |
for symlink in ${symlinks}; do |
echo "Fixing ${symlink}" |
local target=$(ls -l "${symlink}" | cut -f 2 -d '>') |
@@ -491,6 +478,7 @@ setup_symlinks_on_root() { |
fi |
# Set up symlinks that should point to ${dev_image_target}. |
+ local path |
for path in usr local; do |
if [ -h "${dev_image_root}/${path}" ]; then |
sudo unlink "${dev_image_root}/${path}" |
@@ -556,10 +544,10 @@ start_time=$(date +%s) |
# Print time elsapsed since start_time. |
print_time_elapsed() { |
- end_time=$(date +%s) |
- elapsed_seconds="$(( $end_time - $start_time ))" |
- minutes="$(( $elapsed_seconds / 60 ))" |
- seconds="$(( $elapsed_seconds % 60 ))" |
+ local end_time=$(date +%s) |
+ local elapsed_seconds=$(($end_time - $start_time)) |
+ local minutes=$(($elapsed_seconds / 60)) |
+ local seconds=$(($elapsed_seconds % 60)) |
echo "Elapsed time: ${minutes}m${seconds}s" |
} |
@@ -574,7 +562,7 @@ print_time_elapsed() { |
# ${1} specifies the location of the chroot. |
chroot_hacks_from_outside() { |
# Give args better names. |
- local chroot_dir="${1}" |
+ local chroot_dir=$1 |
# Add root as a sudoer if not already done. |
if ! sudo grep -q '^root ALL=(ALL) ALL$' "${chroot_dir}/etc/sudoers" ; then |