setup_board: move all wrapper gen code into one func
Makes the code flow easier to follow, and makes it easier to skip
wrapper generation if we so desire.
BUG=chromium-os:34519
TEST=`./setup_board --board=lumpy` output looked ok
TEST=`cbuildbot {x86,amd64,arm}-generic-full chromiumos-sdk` worked
Change-Id: Ie7a1d387fb21a495c6a2da2c9147587743240929
Reviewed-on: https://gerrit.chromium.org/gerrit/33485
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/setup_board b/setup_board
index ae25629..029d3aa 100755
--- a/setup_board
+++ b/setup_board
@@ -89,15 +89,18 @@
export ROOT="$BOARD_ROOT"
exec sudo -E ${command} ${extra_args} "\$@"
EOF
- sudo chmod +rx ${target}
- sudo chown root:root ${target}
+ local cmds=(
+ "chmod a+rx '${target}'"
+ "chown root:root '${target}'"
+ )
+ sudo_multi "${cmds[@]}"
eval ${command^^}_WRAPPER="${target}" # ${foo^^} returns toupper($foo)
echo created wrapper ${target}
}
-generate_pkgconfig_wrapper() {
- local target="/usr/local/bin/pkg-config-${BOARD_VARIANT}"
- sudo_clobber "${target}" <<EOF
+generate_all_wrappers() {
+ local wrapper="/usr/local/bin/pkg-config-${BOARD_VARIANT}"
+ sudo_clobber "${wrapper}" <<EOF
#!/bin/bash
PKG_CONFIG_LIBDIR="${BOARD_ROOT}/usr/lib/pkgconfig:\
@@ -109,9 +112,32 @@
exec pkg-config "\$@"
EOF
- sudo chmod a+rx ${target}
- sudo chown root:root ${target}
+ local cmds=(
+ "chmod a+rx '${wrapper}'"
+ "chown root:root '${wrapper}'"
+ )
+ sudo_multi "${cmds[@]}"
echo created wrapper pkg-config
+
+ for wrapper in 'emerge --root-deps' ebuild eclean equery portageq \
+ qcheck qfile qlist; do
+ generate_wrapper $wrapper
+ done
+
+ if [ "${CHOST}" != "$FLAGS_toolchain" ] ; then
+ # TODO(cmasone): Do this more cleanly, if we figure out what "cleanly"
+ # means. Set up wrapper for pkg-config. Point a board-specific wrapper
+ # at the generic wrapper script created by crossdev-wrapper.
+ sudo ln -sf "/usr/bin/cross-pkg-config" \
+ "/usr/bin/${FLAGS_toolchain}-pkg-config"
+ fi
+
+ wrapper="/usr/local/bin/cros_workon-${BOARD_VARIANT}"
+ sudo_clobber "${wrapper}" <<EOF
+#!/bin/bash
+exec cros_workon --board ${BOARD_VARIANT} "\$@"
+EOF
+ sudo chmod +x "${wrapper}"
}
# Checks whether the libc version installed in the board
@@ -434,14 +460,6 @@
sudo mkdir -p "${BOARD_ROOT}" "${BOARD_ETC}" "${BOARD_PROFILE}"
-if [ "${CHOST}" != "$FLAGS_toolchain" ] ; then
- # TODO(cmasone): Do this more cleanly, if we figure out what "cleanly" means.
- # Set up wrapper for pkg-config. Point a board-specific wrapper at the
- # generic wrapper script created by crossdev-wrapper
- sudo ln -sf "/usr/bin/cross-pkg-config" \
- "/usr/bin/${FLAGS_toolchain}-pkg-config"
-fi
-
# Setup the make.confs. We use the following:
# make.conf <- Overall target make.conf [arm, x86, etc. version]
# make.conf.board_setup <- Declares CHOST, ROOT, etc.
@@ -467,7 +485,7 @@
fi
sudo ln -sf "${CHROMIUMOS_CONFIG}/make.conf.common-target" \
"${BOARD_ETC}/make.conf.common"
-cat <<EOF | sudo dd of="${BOARD_SETUP}" > /dev/null 2>&1
+sudo_clobber "${BOARD_SETUP}" <<EOF
# Created by setup_board
CHOST="${FLAGS_toolchain}"
ROOT="${BOARD_ROOT}/"
@@ -503,20 +521,7 @@
exit 1
fi
-
-for wrapper in 'emerge --root-deps' ebuild eclean equery portageq \
- qcheck qfile qlist ; do
- generate_wrapper $wrapper
-done
-
-generate_pkgconfig_wrapper
-
-CROS_WORKON_WRAPPER="/usr/local/bin/cros_workon-${BOARD_VARIANT}"
-cat <<EOF | sudo dd of="$CROS_WORKON_WRAPPER" > /dev/null 2>&1
-#!/bin/bash
-exec cros_workon --board ${BOARD_VARIANT} "\$@"
-EOF
-sudo chmod +x "$CROS_WORKON_WRAPPER"
+generate_all_wrappers
if ${HOST_BOARD}; then
EMERGE_CMD="emerge"