setup_board: use sudo_multi in more places
This gives a side speed up and a slight clean up.
While we're here, merge a few commands (like mkdirs).
BUG=chromium-os:34519
TEST=`./setup_board --board=lumpy` output looked ok
TEST=`cbuildbot {x86,amd64,arm}-generic-full chromiumos-sdk` worked
Change-Id: I8d03448e2df549e76d320cc23ab9d36242c3b118
Reviewed-on: https://gerrit.chromium.org/gerrit/33486
Tested-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
diff --git a/setup_board b/setup_board
index 029d3aa..0249471 100755
--- a/setup_board
+++ b/setup_board
@@ -201,6 +201,7 @@
# Install all of the stuff that depends on the toolchain versions
# into the board root.
install_toolchain_in_board() {
+ local cmds
local binutils_ver=$(cross_get_version binutils)
local gcc_ver=$(cross_get_version gcc)
local libc_ver=$(cross_get_version glibc)
@@ -226,23 +227,27 @@
fi
copy_gcc_libs "${BOARD_ROOT}" "cross-$FLAGS_toolchain/gcc-$gcc_ver"
else
- sudo mkdir -p ${BOARD_ROOT}/usr/lib64
- sudo ln -sf ${BOARD_ROOT}/usr/lib64 ${BOARD_ROOT}/usr/lib
- sudo mkdir -p ${BOARD_ROOT}/lib64
- sudo ln -sf ${BOARD_ROOT}/lib64 ${BOARD_ROOT}/lib
+ cmds=(
+ "mkdir -p '${BOARD_ROOT}'{/usr,}/lib64 '${BOARD_ROOT}/usr/lib/debug'"
+ "ln -sf '${BOARD_ROOT}/usr/lib64' '${BOARD_ROOT}/usr/lib'"
+ "ln -sf '${BOARD_ROOT}/lib64' '${BOARD_ROOT}/lib'"
+ )
+ sudo_multi "${cmds[@]}"
LIBC_PATH="${PKGDIR}/sys-libs/${LIBC_TAR}"
sudo emerge --oneshot --nodeps -k --root=${BOARD_ROOT} =sys-libs/glibc-${libc_ver}
- sudo mkdir -p ${BOARD_ROOT}/usr/lib/debug
# TODO: we have no debug
GCC_PKG=sys-devel/gcc-$gcc_ver
fi
# Some header files are needed also for rpcbind (NFS support)
# TODO: Figure out a better way of doing this too?
- sudo cp -a /usr/include/rpcsvc/mount.h "${BOARD_ROOT}/usr/include/rpcsvc"
- sudo cp -a /usr/include/rpcsvc/rquota.h "${BOARD_ROOT}/usr/include/rpcsvc"
- sudo cp -a /usr/include/rpcsvc/nfs_prot.h "${BOARD_ROOT}/usr/include/rpcsvc"
- sudo cp -a /usr/include/rpcsvc/yppasswd.h "${BOARD_ROOT}/usr/include/rpcsvc"
+ cmds=(
+ "cp -a /usr/include/rpcsvc/mount.h '${BOARD_ROOT}/usr/include/rpcsvc'"
+ "cp -a /usr/include/rpcsvc/rquota.h '${BOARD_ROOT}/usr/include/rpcsvc'"
+ "cp -a /usr/include/rpcsvc/nfs_prot.h '${BOARD_ROOT}/usr/include/rpcsvc'"
+ "cp -a /usr/include/rpcsvc/yppasswd.h '${BOARD_ROOT}/usr/include/rpcsvc'"
+ )
+ sudo_multi "${cmds[@]}"
install_toolchain_in_provided "$binutils_ver" "$gcc_ver" "$libc_ver"
@@ -458,7 +463,9 @@
fi
fi
-sudo mkdir -p "${BOARD_ROOT}" "${BOARD_ETC}" "${BOARD_PROFILE}"
+cmds=(
+ "mkdir -p '${BOARD_ROOT}' '${BOARD_ETC}' '${BOARD_PROFILE}'"
+)
# Setup the make.confs. We use the following:
# make.conf <- Overall target make.conf [arm, x86, etc. version]
@@ -466,25 +473,30 @@
# make.conf.common <- Common settings across all targets
# make.conf.board <- Optional board-supplied make.conf
if ${HOST_BOARD}; then
- sudo ln -sf "${CHROMIUMOS_CONFIG}/make.conf.${BOARD}" \
- "${BOARD_ETC}/make.conf"
- sudo cp -f "/etc/make.conf.host_setup" "${BOARD_ETC}/"
+ cmds+=(
+ "ln -sf '${CHROMIUMOS_CONFIG}/make.conf.${BOARD}' \
+ '${BOARD_ETC}/make.conf'"
+ "cp -f '/etc/make.conf.host_setup' '${BOARD_ETC}/'"
- # Setting up symlinks for bootstrapping multilib.
- # See http://crosbug.com/14498
- sudo mkdir -p "${BOARD_ROOT}/usr/lib64" "${BOARD_ROOT}/lib64"
- sudo ln -sf lib64 "${BOARD_ROOT}/lib"
- sudo ln -sf lib64 "${BOARD_ROOT}/usr/lib"
+ # Setting up symlinks for bootstrapping multilib.
+ # See http://crosbug.com/14498
+ "mkdir -p '${BOARD_ROOT}'{/usr,}/lib64"
+ "ln -sf lib64 '${BOARD_ROOT}/lib'"
+ "ln -sf lib64 '${BOARD_ROOT}/usr/lib'"
- # Copying some files for bootstrapping empty chroot.
- # See http://crosbug.com/14499
- sudo mkdir -p ${BOARD_ETC}/xml/
- sudo cp /etc/xml/catalog ${BOARD_ETC}/xml/
- sudo mkdir -p ${BOARD_ETC}/init.d/
- sudo cp /etc/init.d/functions.sh ${BOARD_ETC}/init.d/
+ # Copying some files for bootstrapping empty chroot.
+ # See http://crosbug.com/14499
+ "mkdir -p '${BOARD_ETC}'/{init.d,xml}"
+ "cp /etc/xml/catalog '${BOARD_ETC}'/xml/"
+ "cp /etc/init.d/functions.sh '${BOARD_ETC}'/init.d/"
+ )
fi
-sudo ln -sf "${CHROMIUMOS_CONFIG}/make.conf.common-target" \
- "${BOARD_ETC}/make.conf.common"
+cmds+=(
+ "ln -sf '${CHROMIUMOS_CONFIG}/make.conf.common-target' \
+ '${BOARD_ETC}/make.conf.common'"
+)
+sudo_multi "${cmds[@]}"
+
sudo_clobber "${BOARD_SETUP}" <<EOF
# Created by setup_board
CHOST="${FLAGS_toolchain}"
@@ -504,9 +516,12 @@
install_toolchain_in_board
fi
# Setup make.globals and the profile.
-sudo touch /etc/make.conf.user
-sudo ln -sf /etc/make.globals "${BOARD_ROOT}/etc/make.globals"
-sudo ln -sf /etc/make.conf.user "${BOARD_ROOT}/etc/make.conf.user"
+cmds=(
+ "touch /etc/make.conf.user"
+ "ln -sf /etc/make.globals '${BOARD_ROOT}/etc/make.globals'"
+ "ln -sf /etc/make.conf.user '${BOARD_ROOT}/etc/make.conf.user'"
+)
+sudo_multi "${cmds[@]}"
# Select the profile to build based on the board and profile passed to
# setup_board. The developer can later change profiles by running