diff --git a/common.sh b/common.sh index 19bd0c2777..b562e0f4d6 100644 --- a/common.sh +++ b/common.sh @@ -460,3 +460,23 @@ print_time_elapsed() { seconds="$(( $elapsed_seconds % 60 ))" echo "Elapsed time: ${minutes}m${seconds}s" } + +# This function is a place to put code to incrementally update the +# chroot so that users don't need to fully re-make it. It should +# be called from scripts that are run _outside_ the chroot. +# +# Please put date information so it's easy to keep track of when +# old hacks can be retired and so that people can detect when a +# hack triggered when it shouldn't have. +# +# ${1} specifies the location of the chroot. +chroot_hacks_from_outside() { + # Give args better names. + local chroot_dir="${1}" + + # Add root as a sudoer if not already done. + if ! sudo grep -q '^root ALL=(ALL) ALL$' "${chroot_dir}/etc/sudoers" ; then + info "Upgrading old chroot (pre 2010-10-19) - adding root to sudoers" + sudo bash -c "echo root ALL=\(ALL\) ALL >> \"${chroot_dir}/etc/sudoers\"" + fi +} diff --git a/enter_chroot.sh b/enter_chroot.sh index c0e45ba2ab..3ca59bf9e7 100755 --- a/enter_chroot.sh +++ b/enter_chroot.sh @@ -254,6 +254,10 @@ then exit 0 fi +# Apply any hacks needed to update the chroot. +chroot_hacks_from_outside "${FLAGS_chroot}" + + # Make sure we unmount before exiting trap teardown_env EXIT setup_env