summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorDieter Plaetinck <dieter@plaetinck.be>2009-04-08 22:34:17 +0200
committerDieter Plaetinck <dieter@plaetinck.be>2009-04-08 22:34:17 +0200
commitdc1d9fd59ed758a09383c4b4f839f42a0bc85570 (patch)
treec0911acab353baa424a7dead2196bc07e640182a /src/core
parentef2290b0e31c285267bba9dde3634b628df0ebf0 (diff)
parent31f0417d93ece43cbddb8ada12301f8112d5e351 (diff)
Merge branch 'experimental'2009.04.08
Diffstat (limited to 'src/core')
-rw-r--r--src/core/libs/lib-blockdevices-filesystems.sh2
-rw-r--r--src/core/libs/lib-misc.sh21
-rw-r--r--src/core/libs/lib-ui-interactive.sh60
-rw-r--r--src/core/libs/lib-ui.sh91
-rw-r--r--src/core/procedures/base1
5 files changed, 96 insertions, 79 deletions
diff --git a/src/core/libs/lib-blockdevices-filesystems.sh b/src/core/libs/lib-blockdevices-filesystems.sh
index c1316f0..7cdd477 100644
--- a/src/core/libs/lib-blockdevices-filesystems.sh
+++ b/src/core/libs/lib-blockdevices-filesystems.sh
@@ -207,7 +207,7 @@ findpartitions() {
# taken from setup
get_grub_map() {
- rm $TMP_DEV_MAP #TODO: this doesn't exist? is this a problem? ASKDEV
+ rm $TMP_DEV_MAP &>/dev/null #TODO: this doesn't exist? is this a problem? ASKDEV
infofy "Generating GRUB device map...\nThis could take a while.\n\n Please be patient."
$var_TARGET_DIR/sbin/grub --no-floppy --device-map $TMP_DEV_MAP >/tmp/grub.log 2>&1 <<EOF
quit
diff --git a/src/core/libs/lib-misc.sh b/src/core/libs/lib-misc.sh
index 1acebac..1e8df8e 100644
--- a/src/core/libs/lib-misc.sh
+++ b/src/core/libs/lib-misc.sh
@@ -102,19 +102,22 @@ cleanup_runtime ()
}
+# $1 UTC or localtime (hardwareclock)
+# $2 direction (systohc or hctosys)
dohwclock() {
- infofy "Syncing hardwareclock to systemclock ..."
- if [ "$HARDWARECLOCK" = "UTC" ]; then
- HWCLOCK_PARAMS="$HWCLOCK_PARAMS --utc"
- else
- HWCLOCK_PARAMS="$HWCLOCK_PARAMS --localtime"
- fi
-
+ # TODO: we probably only need to do this once and then actually use adjtime on next invocations
+ infofy "Resetting hardware clock adjustment file"
[ ! -d /var/lib/hwclock ] && mkdir -p /var/lib/hwclock
if [ ! -f /var/lib/hwclock/adjtime ]; then
- echo "0.0 0 0.0" > /var/lib/hwclock/adjtime # what the hell is this for???
+ echo "0.0 0 0.0" > /var/lib/hwclock/adjtime
+ fi
+
+ infofy "Syncing clocks ($2), hc being $1 ..."
+ if [ "$1" = "UTC" ]; then
+ hwclock --$2 --utc
+ else
+ hwclock --$2 --localtime
fi
- hwclock $HWCLOCK_PARAMS #tpowa does it without, but i would add --noadjtime here
}
target_configure_initial_keymap_font ()
diff --git a/src/core/libs/lib-ui-interactive.sh b/src/core/libs/lib-ui-interactive.sh
index cb80c11..8beb6fb 100644
--- a/src/core/libs/lib-ui-interactive.sh
+++ b/src/core/libs/lib-ui-interactive.sh
@@ -76,42 +76,56 @@ interactive_timezone () {
ask_timezone || return 1
TIMEZONE=$ANSWER_TIMEZONE
infofy "Setting Timezone to $TIMEZONE"
- [ -e /etc/localtime ] && rm -f /etc/localtime #why do we do this?? tpowa?
- dohwclock
}
interactive_time () {
# utc or localtime?
- ask_option no "Clock configuration" "Is your hardware clock in UTC or local time?" required "UTC" " " "localtime" " " || return 1
+ ask_option UTC "Clock configuration" "Is your hardware clock in UTC or local time? UTC is recommended" required "UTC" " " "localtime" " " || return 1
HARDWARECLOCK=$ANSWER_OPTION
-
- dohwclock
-
- if which ntpdate >/dev/null && ask_yesno "'ntpdate' was detected on your system.\n\nDo you want to use 'ntpdate' for syncing your clock,\nby using the internet clock pool?\n(You need a working internet connection for doing this!)" yes #TODO: only propose if network ok.
- then
- if ntpdate pool.ntp.org >/dev/null
+ [ -e /etc/localtime ] && rm -f /etc/localtime
+
+ NEXTITEM=
+ while true; do
+ dohwclock $HARDWARECLOCK hctosys
+ current=`date`
+ default=no
+ [ -n "$NEXTITEM" ] && default="$NEXTITEM"
+ #TODO: only propose if network ok
+ EXTRA=()
+ type ntpdate &>/dev/null && EXTRA=('ntp' 'Set time and date using ntp')
+
+ ask_option $default "Date/time configuration" "According to your settings and your hardwareclock, the date should now be $current. If this is incorrect, you can correct this now" required \
+ "${EXTRA[@]}" "manual" "Set time and date manually" "return" "Looks good. back to main menu"
+ if [ "$ANSWER_OPTION" = ntp ]
then
- notify "Synced clock with internet pool successfully.\n\nYour current time is now:\n$(date)"
- else
- show_warning 'Ntp failure' "An error has occured, time was not changed!"
- fi
- fi
-
- # display and ask to set date/time
- ask_datetime
-
+ if ntpdate pool.ntp.org >/dev/null
+ then
+ notify "Synced clock with internet pool successfully."
+ dohwclock $HARDWARECLOCK systohc && NEXTITEM=3
+ else
+ show_warning 'Ntp failure' "An error has occured, time was not changed!"
+ fi
+ fi
+ if [ "$ANSWER_OPTION" = manual ]
+ then
+ ask_datetime
+ if date -s "$ANSWER_DATETIME"
+ then
+ dohwclock $HARDWARECLOCK systohc && NEXTITEM=3
+ else
+ show_warning "Date/time setting failed" "Something went wrong when doing date -s $ANSWER_DATETIME"
+ fi
+ fi
+ [ "$ANSWER_OPTION" = return ] && break
+ done
if [ "$TIMEZONE" != "" -a -e "/usr/share/zoneinfo/$TIMEZONE" ]
then
/bin/rm -f /etc/localtime
/bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime
fi
-
- # save the time
- date -s "$ANSWER_DATETIME" || show_warning "Date/time setting failed" "Something went wrong when doing date -s $ANSWER_DATETIME"
- dohwclock
}
@@ -778,7 +792,7 @@ EOF
# ...
notify "Before installing GRUB, you must review the configuration file. You will now be put into the editor. After you save your changes and exit the editor, you can install GRUB."
- [ "$EDITOR" ] || interactive_get_editor
+ [ -n "$EDITOR" ] || interactive_get_editor
$EDITOR $grubmenu
DEVS=$(finddisks 1 _)
diff --git a/src/core/libs/lib-ui.sh b/src/core/libs/lib-ui.sh
index 50d087a..c039a71 100644
--- a/src/core/libs/lib-ui.sh
+++ b/src/core/libs/lib-ui.sh
@@ -50,7 +50,7 @@ show_warning ()
debug 'UI' "show_warning '$1': $2 ($type)"
if [ "$var_UI_TYPE" = dia ]
then
- _dia_DIALOG --title "$1" --exit-label "Continue" --${type}box "$2" 0 0 || die_error "dialog could not show --${type}box $2. often this means a file does not exist"
+ _dia_dialog --title "$1" --exit-label "Continue" --${type}box "$2" 0 0 || die_error "dialog could not show --${type}box $2. often this means a file does not exist"
else
echo "WARNING: $1"
[ "${type}" = msg ] && echo -e "$2"
@@ -67,7 +67,7 @@ notify ()
debug 'UI' "notify: $@"
if [ "$var_UI_TYPE" = dia ]
then
- _dia_DIALOG --msgbox "$@" 0 0
+ _dia_dialog --msgbox "$@" 0 0
else
echo -e "$@"
fi
@@ -94,7 +94,7 @@ infofy () #TODO: when using successive things, the screen can become full and yo
str=`cat $DIA_SUCCESSIVE_ITEMS-$successive`
fi
[ "$succ_last" = 1 ] && rm $DIA_SUCCESSIVE_ITEMS-$successive
- _dia_DIALOG --infobox "$str" 0 0
+ _dia_dialog --infobox "$str" 0 0
else
echo -e "$1"
fi
@@ -160,6 +160,30 @@ _getavaildisks()
}
+# ask for a timezone.
+# this is pretty similar to how tzselect looks, but we support dia+cli + we don't actually change the clock + we don't show a date/time and ask whether it's okay. that comes later.
+ask_timezone ()
+{
+ REGIONS=""
+ for i in $(grep '^[A-Z]' /usr/share/zoneinfo/zone.tab | cut -f 3 | sed -e 's#/.*##g'| sort -u); do
+ REGIONS="$REGIONS $i -"
+ done
+ while true; do
+ ask_option no "Please select a region" '' required $REGIONS
+ region=$ANSWER_OPTION
+ if [ $? -eq 0 ]; then
+ ZONES=""
+ for i in $(grep '^[A-Z]' /usr/share/zoneinfo/zone.tab | grep $region/ | cut -f 3 | sed -e "s#$region/##g"| sort -u); do
+ ZONES="$ZONES $i -"
+ done
+ ask_option no "Please select a timezone" '' required $ZONES
+ zone=$ANSWER_OPTION
+ [ $? -eq 0 ] && ANSWER_TIMEZONE="$region/$zone" && return
+ fi
+ done
+}
+
+
# ask the user to make a selection from a certain group of things
# $1 question
# shift;shift; $@ list of options. first tag, then item then ON/OFF. if item == ^ or - it will not be shown in cli mode.
@@ -237,13 +261,6 @@ ask_string ()
}
-ask_timezone ()
-{
- [ "$var_UI_TYPE" = dia ] && { _dia_ask_timezone "$@" ; return $? ; }
- [ "$var_UI_TYPE" = cli ] && { _cli_ask_timezone "$@" ; return $? ; }
-}
-
-
# ask a yes/no question.
# $1 question
# $2 default answer yes/no (optional)
@@ -285,7 +302,7 @@ follow_progress ()
#
# parameters: see dialog(1)
# returns: whatever dialog did
-_dia_DIALOG()
+_dia_dialog()
{
dialog --backtitle "$TITLE" --aspect 15 "$@"
return $?
@@ -305,7 +322,7 @@ _dia_ask_checklist ()
list="$list $1 $2 $3"
shift 3
done
- _dia_DIALOG --checklist "$str" 0 0 0 $list 2>$ANSWER
+ _dia_dialog --checklist "$str" 0 0 0 $list 2>$ANSWER
ret=$?
ANSWER_CHECKLIST=`cat $ANSWER`
debug 'UI' "_dia_ask_checklist: user checked ON: $ANSWER_CHECKLIST"
@@ -338,7 +355,7 @@ _dia_ask_number ()
[ -n $2 ] && str2="min $2"
[ -n $3 -a $3 != '0' ] && str2="$str2 max $3"
[ -n "$str2" ] && str="$str ( $str2 )"
- _dia_DIALOG --inputbox "$str" 0 0 $4 2>$ANSWER
+ _dia_dialog --inputbox "$str" 0 0 $4 2>$ANSWER
ret=$?
ANSWER_NUMBER=`cat $ANSWER`
if [[ $ANSWER_NUMBER = *[^0-9]* ]] #TODO: handle exit state
@@ -377,7 +394,7 @@ _dia_ask_option ()
shift 4
CANCEL_LABEL=Cancel
[ $TYPE == optional ] && CANCEL_LABEL='Skip'
- _dia_DIALOG $DEFAULT --cancel-label $CANCEL_LABEL --colors --title " $DIA_MENU_TITLE " --menu "$DIA_MENU_TEXT $EXTRA_INFO" 0 0 0 "$@" 2>$ANSWER
+ _dia_dialog $DEFAULT --cancel-label $CANCEL_LABEL --colors --title " $DIA_MENU_TITLE " --menu "$DIA_MENU_TEXT $EXTRA_INFO" 0 0 0 "$@" 2>$ANSWER
ret=$?
ANSWER_OPTION=`cat $ANSWER`
debug 'UI' "dia_ask_option: ANSWER_OPTION: $ANSWER_OPTION, returncode (skip/cancel): $ret ($DIA_MENU_TITLE)"
@@ -397,7 +414,7 @@ _dia_ask_password ()
type_u=
fi
- _dia_DIALOG --passwordbox "Enter your $type_l password" 8 65 "$2" 2>$ANSWER
+ _dia_dialog --passwordbox "Enter your $type_l password" 8 65 "$2" 2>$ANSWER
ret=$?
[ -n "$type_u" ] && read ${type_u}_PASSWORD < $ANSWER
[ -z "$type_u" ] && read PASSWORD < $ANSWER
@@ -410,7 +427,7 @@ _dia_ask_password ()
_dia_ask_string ()
{
exitcode=${3:-1}
- _dia_DIALOG --inputbox "$1" 0 0 "$2" 2>$ANSWER
+ _dia_dialog --inputbox "$1" 0 0 "$2" 2>$ANSWER
ret=$?
ANSWER_STRING=`cat $ANSWER`
debug 'UI' "_dia_ask_string: user entered $ANSWER_STRING"
@@ -419,29 +436,6 @@ _dia_ask_string ()
}
-_dia_ask_timezone ()
-{
- REGIONS=""
- SET_ZONE=""
- for i in $(grep ^[A-Z] /usr/share/zoneinfo/zone.tab | cut -f 3 | sed -e 's#/.*##g'| sort -u); do
- REGIONS="$REGIONS $i -"
- done
- while [ "$SET_ZONE" != "1" ]; do
- SET_REGION=""
- ask_option no "Please select a region" '' required $REGIONS
- region=ANSWER_OPTION
- if [ $? -eq 0 ]; then
- ZONES=""
- for i in $(grep ^[A-Z] /usr/share/zoneinfo/zone.tab | grep $region/ | cut -f 3 | sed -e "s#$region/##g"| sort -u); do
- ZONES="$ZONES $i -"
- done
- ask_option no "Please select a timezone" '' required $ZONES
- zone=$ANSWER_OPTION
- [ $? -gt 0 ] && ANSWER_TIMEZONE="$region/$zone" && return
- fi
- done
-}
-
_dia_ask_yesno ()
{
@@ -461,7 +455,18 @@ _dia_follow_progress ()
{
title=$1
logfile=$2
- FOLLOW_PID=`_dia_DIALOG --title "$1" --no-kill --tailboxbg "$2" 0 0 2>&1 >/dev/null`
+
+ _dia_dialog --title "$1" --no-kill --tailboxbg "$2" 0 0 2>$RUNTIME_DIR/aif-follow-pid
+ FOLLOW_PID=`cat $RUNTIME_DIR/aif-follow-pid`
+ rm $RUNTIME_DIR/aif-follow-pid
+
+ # I wish something like this would work. anyone who can explain me why it doesn't get's to be aif contributor of the month.
+ # FOLLOW_PID=`_dia_dialog --title "$1" --no-kill --tailboxbg "$2" 0 0 2>&1 >/dev/null | head -n 1`
+
+ # Also this doesn't work:
+ # _dia_dialog --title "$1" --no-kill --tailboxbg "$2" 0 0 &>/dev/null &
+ # FOLLOW_PID=$!
+
}
@@ -611,12 +616,6 @@ _cli_ask_string ()
}
-_cli_ask_timezone ()
-{
- ANSWER_TIMEZONE=`tzselect`
-}
-
-
_cli_ask_yesno ()
{
[ -z "$2" ] && echo -n "$1 (y/n): "
diff --git a/src/core/procedures/base b/src/core/procedures/base
index 6d99421..e3ff45c 100644
--- a/src/core/procedures/base
+++ b/src/core/procedures/base
@@ -102,6 +102,7 @@ worker_runtime_packages ()
worker_set_clock ()
{
+ NEXTITEM=
while true; do
default=no
[ -n "$NEXTITEM" ] && default="$NEXTITEM"