diff options
author | Dieter Plaetinck <dieter@plaetinck.be> | 2009-04-08 22:34:17 +0200 |
---|---|---|
committer | Dieter Plaetinck <dieter@plaetinck.be> | 2009-04-08 22:34:17 +0200 |
commit | dc1d9fd59ed758a09383c4b4f839f42a0bc85570 (patch) | |
tree | c0911acab353baa424a7dead2196bc07e640182a /src/core | |
parent | ef2290b0e31c285267bba9dde3634b628df0ebf0 (diff) | |
parent | 31f0417d93ece43cbddb8ada12301f8112d5e351 (diff) |
Merge branch 'experimental'2009.04.08
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/libs/lib-blockdevices-filesystems.sh | 2 | ||||
-rw-r--r-- | src/core/libs/lib-misc.sh | 21 | ||||
-rw-r--r-- | src/core/libs/lib-ui-interactive.sh | 60 | ||||
-rw-r--r-- | src/core/libs/lib-ui.sh | 91 | ||||
-rw-r--r-- | src/core/procedures/base | 1 |
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" |