Page MenuHomeFreeBSD

D42281.diff
No OneTemporary

D42281.diff

diff --git a/usr.sbin/bsdinstall/scripts/auto b/usr.sbin/bsdinstall/scripts/auto
--- a/usr.sbin/bsdinstall/scripts/auto
+++ b/usr.sbin/bsdinstall/scripts/auto
@@ -34,6 +34,14 @@
############################################################ GLOBALS
+#
+# List of environment variables that may be defined by the user, but modified
+# during the installation process. They are then restored when restarting this
+# script.
+#
+user_env_vars_prefix="ORIG_"
+user_env_vars="BSDINSTALL_DISTSITE DISTRIBUTIONS WORKAROUND_GPTACTIVE WORKAROUND_LENOVO ZFSBOOT_PARTITION_SCHEME"
+
#
# Strings that should be moved to an i18n file and loaded with f_include_lang()
#
@@ -90,6 +98,7 @@
--yes-label "$msg_restart" \
--yesno "$prompt" $height $width
then
+ environment_restore
exec $0
# NOTREACHED
fi
@@ -138,10 +147,35 @@
--yesno "$prompt" $height $width
}
+# environment_restore
+#
+# Restore a list of environment variables when this script is restarted.
+#
+environment_restore()
+{
+ for var in $user_env_vars; do
+ eval "if [ -n \"\${$user_env_vars_prefix$var}\" -o -z \"\${$user_env_vars_prefix$var-z}\" ]; then $var=\${$user_env_vars_prefix$var}; else unset $var; fi"
+ done
+}
+
+# environment_save
+#
+# Save any user-defined environment variable that may be modified during the
+# installation process. They are then restored when restarting this script.
+#
+environment_save()
+{
+ for var in $user_env_vars; do
+ eval "if [ -n \"\${$var}\" -o -z \"\${$var-z}\" ]; then $user_env_vars_prefix$var=\${$var}; else unset $user_env_vars_prefix$var; fi"
+ done
+}
+
############################################################ MAIN
f_dprintf "Began Installation at %s" "$( date )"
+environment_save
+
rm -rf $BSDINSTALL_TMPETC
mkdir $BSDINSTALL_TMPETC
diff --git a/usr.sbin/bsdinstall/scripts/jail b/usr.sbin/bsdinstall/scripts/jail
--- a/usr.sbin/bsdinstall/scripts/jail
+++ b/usr.sbin/bsdinstall/scripts/jail
@@ -31,12 +31,24 @@
BSDCFG_SHARE="/usr/share/bsdconfig"
. $BSDCFG_SHARE/common.subr || exit 1
-############################################################ MAIN
+############################################################ GLOBALS
-: ${BSDDIALOG_OK=0}
+#
+# List of environment variables that may be defined by the user, but modified
+# during the installation process. They are then restored when restarting this
+# script.
+#
+user_env_vars_prefix="ORIG_"
+user_env_vars="BSDINSTALL_DISTSITE DISTRIBUTIONS"
-f_dprintf "Began Installation at %s" "$( date )"
+############################################################ FUNCTIONS
+# error [$msg]
+#
+# Display generic error message when a script fails. An optional message
+# argument can preceed the generic message. User is given the choice of
+# restarting the installer or exiting.
+#
error() {
local msg
if [ -n "$1" ]; then
@@ -48,16 +60,47 @@
if [ $? -ne $BSDDIALOG_OK ]; then
exit
else
- [ -z "$MIRROR_BUTTON" ] || unset BSDINSTALL_DISTSITE
+ environment_restore
exec $0 $BSDINSTALL_CHROOT
fi
}
+# environment_restore
+#
+# Restore a list of environment variables when this script is restarted.
+#
+environment_restore()
+{
+ for var in $user_env_vars; do
+ eval "if [ -n \"\${$user_env_vars_prefix$var}\" -o -z \"\${$user_env_vars_prefix$var-z}\" ]; then $var=\${$user_env_vars_prefix$var}; else unset $var; fi"
+ done
+}
+
+# environment_save
+#
+# Save any user-defined environment variable that may be modified during the
+# installation process. They are then restored when restarting this script.
+#
+environment_save()
+{
+ for var in $user_env_vars; do
+ eval "if [ -n \"\${$var}\" -o -z \"\${$var-z}\" ]; then $user_env_vars_prefix$var=\${$var}; else unset $user_env_vars_prefix$var; fi"
+ done
+}
+
+############################################################ MAIN
+
+: ${BSDDIALOG_OK=0}
+
+f_dprintf "Began Installation at %s" "$( date )"
+
if [ -z "$1" ]; then
error "Directory can not be empty\n\nUsage:\nbsdinstall jail directory"
fi
export BSDINSTALL_CHROOT=$1
+environment_save
+
rm -rf $BSDINSTALL_TMPETC
mkdir $BSDINSTALL_TMPETC
mkdir -p $1 || error "mkdir failed for $1"

File Metadata

Mime Type
text/plain
Expires
Thu, May 1, 10:02 AM (10 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17879144
Default Alt Text
D42281.diff (4 KB)

Event Timeline