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>
This commit is contained in:
Mike Frysinger 2012-09-17 22:44:34 -04:00 committed by Gerrit
parent 80c426856a
commit 70c8db6806

View File

@ -89,15 +89,18 @@ fi
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 @@ export PKG_CONFIG_SYSROOT_DIR="${BOARD_ROOT}"
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 @@ fi
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 @@ if ${HOST_BOARD}; then
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 @@ if ! cros_choose_profile \
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"