Fix setting of PORTAGE_USERNAME.
PORTAGE_USERNAME was being set to "$USER" instead of $USER, causing Portage
to think that the specified username doesn't exist. This causes
/var/cache/edb to be created with the wrong permissions.
Also add PORTAGE_USERNAME to sudoers so that it persists even if a user
or script runs 'sudo emerge'.
BUG=chromium-os:15234
TEST=Verify chroot is now created with correct permissions.
Reviewed-on: http://gerrit.chromium.org/gerrit/742
Reviewed-by: Jim Hebert <jimhebert@chromium.org>
Tested-by: David James <davidjames@chromium.org>
(cherry picked from commit b3a2362551525912a9c81e9f1286f05a03a337de)
Use arrays to pass variables around in make_chroot.
It turns out that bash expects arrays to be quoted differently from strings.
Oops.
BUG=chromium-os:15251
TEST=Test that CROS_WORKON_SRCROOT is set properly and so is PORTAGE_USERNAME.
Test that cases with spaces in paths are also handled properly (even
though those should never happen.)
Reviewed-on: http://gerrit.chromium.org/gerrit/799
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Tested-by: David James <davidjames@chromium.org>
(cherry picked from commit 3cf69fdb1ea74b20e8f6a7764e9053e3f16805cb)
Change-Id: I471c165a74626ae28f9a0fbba1098131f6800d1f
Reviewed-on: http://gerrit.chromium.org/gerrit/776
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Tested-by: David James <davidjames@chromium.org>
diff --git a/chromeos/scripts/make_chroot b/chromeos/scripts/make_chroot
index 1d02584..1a1f2c4 100755
--- a/chromeos/scripts/make_chroot
+++ b/chromeos/scripts/make_chroot
@@ -94,7 +94,7 @@
function bash_chroot {
# Use $* not $@ since 'bash -c' needs a single arg
# Use -l to force source of /etc/profile (login shell)
- sudo chroot "$FLAGS_chroot" env ${CHROOT_PASSTHRU} bash -l -c "$*"
+ sudo "${CHROOT_PASSTHRU[@]}" chroot "$FLAGS_chroot" bash -l -c "$*"
}
function cleanup {
@@ -153,6 +153,7 @@
# the user's already typed in one sudo password...)
bash_chroot "echo Defaults env_keep += CROS_WORKON_SRCROOT >> /etc/sudoers"
bash_chroot "echo Defaults env_keep += CHROMEOS_OFFICIAL >> /etc/sudoers"
+ bash_chroot "echo Defaults env_keep += PORTAGE_USERNAME >> /etc/sudoers"
bash_chroot "echo Defaults env_keep += http_proxy >> /etc/sudoers"
bash_chroot "echo Defaults env_keep += ftp_proxy >> /etc/sudoers"
bash_chroot "echo Defaults env_keep += all_proxy >> /etc/sudoers"
@@ -262,13 +263,13 @@
CHROOT_CONFIG="${CHROOT_TRUNK}/src/third_party/chromiumos-overlay/chromeos/config"
CHROOT_OVERLAY="/usr/local/portage/chromiumos"
CHROOT_STATE="${FLAGS_chroot}/etc/debian_chroot"
-CHROOT_PASSTHRU="CROS_WORKON_SRCROOT=\"${CHROOT_TRUNK}\" PORTAGE_USERNAME=\"$USER\""
+CHROOT_PASSTHRU=(CROS_WORKON_SRCROOT="$CHROOT_TRUNK" PORTAGE_USERNAME="$USER")
# Pass proxy variables into the environment.
for type in http ftp all; do
value=$(env | grep ${type}_proxy || true)
if [ -n "${value}" ]; then
- CHROOT_PASSTHRU="${CHROOT_PASSTHRU} ${value}"
+ CHROOT_PASSTHRU=("${CHROOT_PASSTHRU[@]}" "$value")
fi
done