Skip to content
Snippets Groups Projects
Commit dc1d9fd5 authored by Dieter Plaetinck's avatar Dieter Plaetinck
Browse files

Merge branch 'experimental'

parents ef2290b0 31f0417d
No related branches found
Tags 2009.04.08
No related merge requests found
......@@ -3,25 +3,36 @@
* an installation cd is in essence just an arch system, it just has the aif package installed. you can install aif on any system without problems.
* install cd's from 2009.02 and up have aif on board, so probably you don't need to do anything at all.
* there is a "binary" package in extra, containing a recent release
* there are 2 source packages in AUR, one for each branch in git. ( see http://aur.archlinux.org/packages.php?K=aif )
- aif-git: latest code from the git master (stable) branch: recommended!
- aif-experimental-git: latest development code. Code is tested here and if ok, merged into master. Use at own risk!!
There are 3 aif packages available:
> supported:
* aif (extra repo): "binary" package, containing latest stable release. this is used by default on the official arch media
> unsupported: there are 2 source packages in AUR, one for each branch in git. ( see http://aur.archlinux.org/packages.php?K=aif )
* aif-git: latest code from the git master (stable) branch: recommended for power users.
* aif-experimental-git: latest development code. Code is tested here and if ok, merged into master. Use at own risk!!
So, assuming you want to upgrade the aif package on an installation cd, to say aif-experimental-git from AUR, you would:
So, if you want to upgrade the aif package on an installation cd..
> aif package from extra:
----------------------
* pacman -Sy aif
> aif git package from AUR: (for example aif-experimental-git. aif-git is the same procedure)
------------------------------------------------------------------------------------------
1) Boot from the installcd
2) Open 2 shells, one as user root, one as regular user (arch)
3) Copy paste the code below.
3) Execute the code below.
# root shell:
/arch/setup. # fake ftp install so it lets you run the network configure script
Alternatively, if you have a recent version of AIF installed and it comes with the partial-network procedure, you can execute that to set up your network.
aif -p partial-configure-network # if you have a recent enough aif version installed that comes with this procedure.
/arch/setup. # alternatively, use the old installer. fake ftp install so it lets you run the network configure script, then exit the installer
# when network works, quit installer
pacman -Sy git fakeroot # You need about 192MB ram for this! 128MB is not enough.
# arch shell
......@@ -41,4 +52,4 @@ aif -p <procedurename> #you can skip networking.
Notes:
* For more info see README or aif -h.
* Since you configured the network before starting aif, you need to reconfigure it in aif if you want the 'auto-update rc.conf' functionality.
\ No newline at end of file
* Since you configured the network before starting aif, you need to reconfigure it in aif if you want the 'auto-update rc.conf' functionality.
See also the FIXME's and TODO's in the code, and http://bugs.archlinux.org/toplevel/proj6
CURRENT ISSUES:
* consider syslog as logging backend
* add support for TARGET_PACKAGES_EXCLUDE to filter out packages from a group
* more vars for automatic profile: hostname (check that adding to /etc/hosts can be done procedure-independently),
LOCALE, HARDWARECLOCK, TIMEZONE, KEYMAP, MODULES, DAEMONS, network config? (or take the config from runtime)
* what to do with /etc/groups, passwd, modprobe.conf, mkinitcpio.conf, rc.local etc with automatic procedure? configure through automatic profile or let user check out files from svn or so?
* depend statements for automatic profiles (+ example)
* use traps and initiate rollback when user wants to abort. see also http://www.davidpashley.com/articles/writing-robust-shell-scripts.html
* differentiate between framework and installer in src/aif.sh, some things should be in base
* check everywhere that if users cancels something, we return 1, empty string behavior etc
......@@ -41,7 +47,7 @@ CURRENT ISSUES:
skip that check or something. Alternatively, maybe just show which steps are done successfully in the main menu
* support maybe ntp to set clock
* auto-configure mkinitcpio.conf for dm_crypt and lvm
* core/quickinst: figure out what needs to be done and do it.
* support setting mount options for fs'es (to go into fstab) in at least automatic procedures. interactive > you can edit fstab right..
* right at the end of package installation something happens :/ also at configure system, before generation of locales
......
......@@ -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
......
......@@ -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 ()
......
......@@ -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 _)
......
......@@ -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): "
......
......@@ -102,6 +102,7 @@ worker_runtime_packages ()
worker_set_clock ()
{
NEXTITEM=
while true; do
default=no
[ -n "$NEXTITEM" ] && default="$NEXTITEM"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment