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