From: Michael Prokop Date: Mon, 21 Sep 2009 16:33:58 +0000 (+0200) Subject: Merge debian/changelog X-Git-Tag: v0.8.31~3 X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=commitdiff_plain;h=f9f92864d1e46ceeb77297fe8f13405c1a6c8d2f;hp=a83a9b65c777df57422e5e9d915e2425f0d1ef89 Merge debian/changelog --- diff --git a/autoconfig b/autoconfig index 10ea222..2cfb247 100644 --- a/autoconfig +++ b/autoconfig @@ -1,11 +1,17 @@ # Filename: /etc/grml/autoconfig -# Purpose: configuration for grml-autoconfig +# Purpose: global configuration for grml-autoconfig # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. ################################################################################ ################################################################################ +# Notice: Please do not edit this file! Use grml-autoconfig or +# /etc/grml/autoconfig.local instead! +################################################################################ + + +################################################################################ # Notice: you can configure grml-autoconfig via adjusting the following values. # Set them to 'yes' to activate them and to 'no' to deactivate them. # But please notice that some options might require an additional bootparam @@ -117,4 +123,12 @@ CONFIG_VMWARE='yes' # vmware specific stuff (use xorg.conf.vmware) CONFIG_WELCOME='yes' # play welcome sound (audio) CONFIG_WONDERSHAPER='yes' # start wondershaper with options provided via bootparam CONFIG_XSTARTUP='yes' # start X window system via grml-x [only in live-mode] + + +# config for local configuration file + +CONFIG_AUTOCONFIG_LOCAL='/etc/grml/autoconfig.local' + +[ -e ${CONFIG_AUTOCONFIG_LOCAL} ] && . ${CONFIG_AUTOCONFIG_LOCAL} + ## END OF FILE ################################################################# diff --git a/autoconfig.functions b/autoconfig.functions index b1f8933..c9e4ff5 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -10,6 +10,7 @@ export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin" DEBUG="/dev/null" KERNEL="$(uname -r)" +ARCH="$(uname -m)" umask 022 # old linuxrc version: @@ -1795,7 +1796,7 @@ config_services(){ # {{{ remote files get_remote_file() { [ "$#" -eq 2 ] || ( echo "Error: wrong parameter for get_remote_file()" ; return 1 ) - SOURCE="$1" + SOURCE=$(eval echo "$1") TARGET="$2" getconfig() { wget --timeout=10 --dns-timeout=10 --connect-timeout=10 --tries=1 \ diff --git a/autoconfig.local b/autoconfig.local new file mode 100644 index 0000000..11ffbba --- /dev/null +++ b/autoconfig.local @@ -0,0 +1,6 @@ +# Filename: /etc/grml/autoconfig.local +# Purpose: local configuration for grml-autoconfig +# Authors: grml-team (grml.org), (c) Michael Prokop +# Bug-Reports: see http://grml.org/bugs/ +# License: This file is licensed under the GPL v2. +################################################################################ diff --git a/debian/changelog b/debian/changelog index 7ce84ee..9d1ff5b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,14 @@ -grml-autoconfig (0.8.30) unstable; urgency=low +grml-autoconfig (0.8.30) UNRELEASED; urgency=low [ Ulrich Dangel ] - * added new bootparameter netscript: introduced new bootoption - for downloading and running a executable from a remote host - [Closes: issue734] - - -- Michael Prokop Sat, 12 Sep 2009 09:44:30 +0200 + * Introduced autconfig.local for local modifications + [Closes: issue326] + * Added ARCH as predefinded variable to autoconfig.functions + * Extended netconfig/netscript to expand variables in url. + Example: netscript=server/script-$ARCH.sh + * Added unittest for finddcsdir + + -- Ulrich Dangel Sun, 13 Sep 2009 00:06:02 +0200 grml-autoconfig (0.8.29) unstable; urgency=low diff --git a/debian/rules b/debian/rules index 2026dce..834d890 100755 --- a/debian/rules +++ b/debian/rules @@ -13,7 +13,7 @@ build: build-stamp build-stamp: dh_testdir - (cd tests && ./test_parameters.sh) + (cd tests && ./run_tests.sh) (cd doc && $(MAKE)) touch build-stamp @@ -35,6 +35,7 @@ install: build # Add here commands to install the package into debian/grml-autoconfig. install -m 755 grml-autoconfig debian/grml-autoconfig/etc/init.d/grml-autoconfig install -m 644 autoconfig debian/grml-autoconfig/etc/grml/autoconfig + install -m 644 autoconfig.local debian/grml-autoconfig/etc/grml/autoconfig.local install -m 755 autoconfig.functions debian/grml-autoconfig/etc/grml/autoconfig.functions install -m 644 language-functions debian/grml-autoconfig/etc/grml/language-functions install -m 755 sbin/grml-autoconfig debian/grml-autoconfig/usr/sbin/grml-autoconfig diff --git a/doc/grml-autoconfig.1.txt b/doc/grml-autoconfig.1.txt index 86c9c5c..e042f23 100644 --- a/doc/grml-autoconfig.1.txt +++ b/doc/grml-autoconfig.1.txt @@ -52,244 +52,10 @@ to deal with this config framework. Visit link:http://wiki.grml.org/doku.php?id=persistency for further information. [[up-to-200905]] -Behavior up to grml 2009.05 ---------------------------- - -This section applies to all Grml versions older than and including release 2009.05. - -Autoconfiguration -~~~~~~~~~~~~~~~~~ - -By default the booting process tries to mount a device labeled 'GRMLCFG'. This -provides the possibility to restore a configuration (named config.tbz) and -execute a script (named grml.sh) without the need to specify any bootparams. If -you want to disable this feature please take a look at the 'noautoconfig' -bootparam. - -Boot parameters -~~~~~~~~~~~~~~~ - -As you probably know you can adjust boot parameters on the bootprompt. You want -to set some boot parameters permanently? That's possible via adding a directory -named 'bootparams' to the Grml-ISO which has to be located at the root-directory -/bootparams/ (note: the directory is known as /live/image/bootparams/ on a -_running_ grml system then). Place a textfile inside the directory containing -the boot parameters which should be appended to default ones (this corresponds -to booting without any special parameters). If you want to be able to boot from -your Grml-CD you have to create a multisession CD. See the <> for more details how to use it or consider booting from a USB device -(checkout grml2usb). - -The following boot parameters are supported. Use them at the (isolinux) -bootprompt as documented here. - -myconfig:: - - This parameter is for restoring configuration using the file config.tbz - on the specified device. Usage examples: - - myconfig=/dev/sda1 => use file config.tbz from usb-device - myconfig=/dev/fd0 => use file config.tbz from floppy-disk - myconfig=/dev/sda1 file=config_foobar.tbz => use file config_foobar.tbz from usb-device - -home:: - - This parameter is for setting a specific partition as home directory. - Usage examples: - - home=/dev/sda3 => use /dev/sda3 as the homepartition - home=scan => scan through the available partitions and search - for file grml.img - -partconf:: - - This parameter mounts the specified device in read-only mode and tries to - copy all files specified in /etc/grml/partconf to the Grml system. This - provides the possibility to use the configuration of a harddisk - installation. For example using the network configuration (which is - specified in /etc/network) is possible using this boot parameter. Usage - example: - - partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified - in /etc/grml/partconf to the booted Grml system - -netconfig:: - - Use this parameter to restore configuration using wget to download a - configuration file from specified destination. Usage example: - - netconfig=server.tld/path/to/config.tbz => restore configuration using wget to download file config.tbz - -netscript:: - Use this parameter to download and run a script from specified - destination: Usage example: - - netcript=server.tld/path/to/script => download and run script/executable from server - -extract:: - - Extract specific directories from configuration archive. Notice: This - bootparam is useful only with bootparams which are able to extract - configuration archives. - - extract=/home/grml => extract only /home/grml from archive - extract=/etc => extract only /etc from archive - extract=/home/grml/config => extract only $HOME/config from archive - -scripts:: - - This parameter executes a script located in the root-directory /scripts/ on - the Grml media/ISO (note: the directory is known as /live/image/scripts/ on - a _running_ Grml system then). Usage examples: - - scripts => run script [/live/image]/scripts/grml.sh - scripts=foobar.sh => run script foobar.sh in [/live/image]/scripts/ - -config:: - - This parameter restores a configuration using root-directory /config/ on the - Grml media/ISO (note: the directory is known as /live/image/config on a - _running_ Grml system then). Usage examples: - - config => restore configuration using file config.tbz from directory [/live/image]/config/ - config=config_foobar.tbz => restore configuration using file config_foobar.tbz from directory [/live/image]/config/ - -debs:: - - This parameter allows automatic installation of deb packages while booting. - The debian packages have to be located in the root-directory /debs/ on the - Grml media/ISO (note: the directory is known as /live/image/debs/ on a - _running_ Grml system then). Usage examples: - - debs => install all debian packages (suffix .deb) from directory [/live/image]/debs/ - debs=01 => install all debian packages (suffix .deb) starting with 01 in the filename from directory [/live/image]/debs/ - - -noautoconfig:: - - Deactivate automounting. By default the command 'mount' tries to mount a - device with label 'GRMLCFG'. If you specify the noautoconfig bootparam the - automounting will be deactivated. - - noautoconfig => disables auto mounting of label 'GRMLCFG' +include::grml-autoconfig.200905.txt[] [[current-versions]] -Behavior in current Grml versions ---------------------------------- - -This section applies to all Grml versions newer than release 2009.05. - -The central concept of grml-autoconfig is the DCS directory which holds debs, -configuration and scripts which are used during system startup. - -Determination of DCS directory -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The DCS directory defaults to the root directory of the GRML live image. If a -file system labeled GRMLCFG is found, the DCS directory is the root directory of -that file system. Alternatively, the myconfig boot parameter can be used to -directly specify a device which is then taken as DCS directory -(myconfig=/dev/sda1, for example). - -Without any additional boot parameters, the GCA at DCSDIR/config.tbz is -automatically unpacked and DCSDIR/scrips/grml.sh is automaitcally executed on -system startup. The 'noautoconfig' boot parameter disables this automatic -behavior. - -Boot Parameters -~~~~~~~~~~~~~~~ - -The following boot parameters are supported. Use them at the (isolinux) -bootprompt as documented here. - -myconfig:: - - This parameter directly sets DCSDIR to the root directory of the specified - device. Usage examples: - - myconfig=/dev/sda1 => read DCS from usb-device - myconfig=/dev/fd0 => read DCS from floppy-disk - -home:: - - This parameter is for setting a specific partition as home directory. Usage - examples: - - home=/dev/sda3 => use /dev/sda3 as the homepartition - home=scan => scan through the available partitions and search - for file grml.img - -partconf:: - - This parameter mounts the specified device in read-only mode and tries to - copy all files specified in /etc/grml/partconf to the Grml system. This - provides the possibility to use the configuration of a harddisk - installation. For example using the network configuration (which is - specified in /etc/network) is possible using this boot parameter. Usage - example: - - partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified - in /etc/grml/partconf to the booted Grml system - -netconfig:: - - Use this parameter to restore configuration using wget to download a GCA - from the specified destination. Usage example: - - netconfig=server.tld/path/to/config.tbz => restore configuration using wget to download file config.tbz - -extract:: - - Extract specific directories from the GCA which needs to be specified by - other means. - - extract=/home/grml => extract only /home/grml from archive - extract=/etc => extract only /etc from archive - extract=/home/grml/config => extract only $HOME/config from archive - -scripts:: - - This parameter executes scripts. If an optional path is given, it is - relative to DCSDIR. If it points to a directory, all scripts inside this - directory are executed. If the path points to a file, this single file is - executed. If no path is given, it defaults to scripts/grml.sh. Usage - examples: - - scripts => run script DCSDIR/scripts/grml.sh - scripts=foobar.sh => run script foobar.sh in DCSDIR - scripts=foobar => run all scripts inside DCSDIR/foobar directory - -config:: - - This parameter restores a configuration using a GCA. If an optional path is - given, it is relative to DCSDIR. If no path is given, it defaults to - DCSDIR/config.tbz. Usage examples: - - config => restore configuration using file DCSDIR/config.tbz - config=config_foobar.tbz => restore configuration using file DCSDIR/config_foobar.tbz - -debs:: - - This parameter allows automatic installation of deb packages while booting. - The path is relative to DCSDIR, not optional and is a shell wildcard. All - Files matching the wildcard are installed in a single dpkg --install call. - For backwards compatibility, if no slash is contained in the path, it is - taken relative to DCSDIR/debs. - - Usage examples: - - debs=*.deb => install all debian packages (suffix .deb) from directory DCSDIR/debs/ - debs=foo/01*.deb => install all debian packages (suffix .deb) starting with 01 in the filename from directory DCSDIR/foo - - -noautoconfig:: - - Deactivate automounting. By default the scripts try to mount a device with - label 'GRMLCFG'. If you specify the noautoconfig bootparam this automounting - will be deactivated. - - noautoconfig => disables auto mounting of label 'GRMLCFG' - +include::grml-autoconfig.current.txt[] Permanently adjust boot parameters ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/grml-autoconfig.200905.txt b/doc/grml-autoconfig.200905.txt new file mode 100644 index 0000000..453a928 --- /dev/null +++ b/doc/grml-autoconfig.200905.txt @@ -0,0 +1,116 @@ +Behavior up to grml 2009.05 +--------------------------- + +This section applies to all Grml versions older than and including release 2009.05. + +Autoconfiguration +~~~~~~~~~~~~~~~~~ + +By default the booting process tries to mount a device labeled 'GRMLCFG'. This +provides the possibility to restore a configuration (named config.tbz) and +execute a script (named grml.sh) without the need to specify any bootparams. If +you want to disable this feature please take a look at the 'noautoconfig' +bootparam. + +Boot parameters +~~~~~~~~~~~~~~~ + +As you probably know you can adjust boot parameters on the bootprompt. You want +to set some boot parameters permanently? That's possible via adding a directory +named 'bootparams' to the Grml-ISO which has to be located at the root-directory +/bootparams/ (note: the directory is known as /live/image/bootparams/ on a +_running_ grml system then). Place a textfile inside the directory containing +the boot parameters which should be appended to default ones (this corresponds +to booting without any special parameters). If you want to be able to boot from +your Grml-CD you have to create a multisession CD. See the <> for more details how to use it or consider booting from a USB device +(checkout grml2usb). + +The following boot parameters are supported. Use them at the (isolinux) +bootprompt as documented here. + +myconfig:: + + This parameter is for restoring configuration using the file config.tbz + on the specified device. Usage examples: + + myconfig=/dev/sda1 => use file config.tbz from usb-device + myconfig=/dev/fd0 => use file config.tbz from floppy-disk + myconfig=/dev/sda1 file=config_foobar.tbz => use file config_foobar.tbz from usb-device + +home:: + + This parameter is for setting a specific partition as home directory. + Usage examples: + + home=/dev/sda3 => use /dev/sda3 as the homepartition + home=scan => scan through the available partitions and search + for file grml.img + +partconf:: + + This parameter mounts the specified device in read-only mode and tries to + copy all files specified in /etc/grml/partconf to the Grml system. This + provides the possibility to use the configuration of a harddisk + installation. For example using the network configuration (which is + specified in /etc/network) is possible using this boot parameter. Usage + example: + + partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified + in /etc/grml/partconf to the booted Grml system + +netconfig:: + + Use this parameter to restore configuration using wget to download a + configuration file from specified destination. Usage example: + + netconfig=server.tld/path/to/config.tbz => restore configuration using wget to download file config.tbz + +extract:: + + Extract specific directories from configuration archive. Notice: This + bootparam is useful only with bootparams which are able to extract + configuration archives. + + extract=/home/grml => extract only /home/grml from archive + extract=/etc => extract only /etc from archive + extract=/home/grml/config => extract only $HOME/config from archive + +scripts:: + + This parameter executes a script located in the root-directory /scripts/ on + the Grml media/ISO (note: the directory is known as /live/image/scripts/ on + a _running_ Grml system then). Usage examples: + + scripts => run script [/live/image]/scripts/grml.sh + scripts=foobar.sh => run script foobar.sh in [/live/image]/scripts/ + +config:: + + This parameter restores a configuration using root-directory /config/ on the + Grml media/ISO (note: the directory is known as /live/image/config on a + _running_ Grml system then). Usage examples: + + config => restore configuration using file config.tbz from directory [/live/image]/config/ + config=config_foobar.tbz => restore configuration using file config_foobar.tbz from directory [/live/image]/config/ + +debs:: + + This parameter allows automatic installation of deb packages while booting. + The debian packages have to be located in the root-directory /debs/ on the + Grml media/ISO (note: the directory is known as /live/image/debs/ on a + _running_ Grml system then). Usage examples: + + debs => install all debian packages (suffix .deb) from directory [/live/image]/debs/ + debs=01 => install all debian packages (suffix .deb) starting with 01 in the filename from directory [/live/image]/debs/ + + +noautoconfig:: + + Deactivate automounting. By default the command 'mount' tries to mount a + device with label 'GRMLCFG'. If you specify the noautoconfig bootparam the + automounting will be deactivated. + + noautoconfig => disables auto mounting of label 'GRMLCFG' + + diff --git a/doc/grml-autoconfig.8.txt b/doc/grml-autoconfig.8.txt index ef53e16..9a582a6 100644 --- a/doc/grml-autoconfig.8.txt +++ b/doc/grml-autoconfig.8.txt @@ -61,10 +61,15 @@ Dialog interface to the configuration file /etc/grml/autoconfig. */etc/grml/autoconfig*:: -Configuration file for grml-autoconfig framework. You can either edit this -configuration file manually of use the dialog interface +Default configuration file for grml-autoconfig framework. You can override +settings via /etc/grml/autoconfig.local or use the dialog interface /usr/sbin/grml-autoconfig. + */etc/grml/autoconfig.local*:: +User specific configuration file for grml-autoconfig. You can edit it directly +or use the dialog interface /usr/sbin/grml-autoconfig. + + */etc/grml/autoconfig.functions*:: Main functions of the grml-autoconfig. You do not need to configure or execute diff --git a/doc/grml-autoconfig.current.txt b/doc/grml-autoconfig.current.txt new file mode 100644 index 0000000..3266839 --- /dev/null +++ b/doc/grml-autoconfig.current.txt @@ -0,0 +1,159 @@ +Behavior in current Grml versions +--------------------------------- + +This section applies to all Grml versions newer than release 2009.05. + +The central concept of grml-autoconfig is the DCS directory which holds debs, +configuration and scripts which are used during system startup. + +Determination of DCS directory +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The DCS directory defaults to the root directory of the GRML live image. If a +file system labeled GRMLCFG is found, the DCS directory is the root directory of +that file system. Alternatively, the myconfig boot parameter can be used to +directly specify a device which is then taken as DCS directory +(myconfig=/dev/sda1, for example). + +Without any additional boot parameters, the GCA at DCSDIR/config.tbz is +automatically unpacked and DCSDIR/scrips/grml.sh is automaitcally executed on +system startup. The 'noautoconfig' boot parameter disables this automatic +behavior. + +Boot Parameters +~~~~~~~~~~~~~~~ + +The following boot parameters are supported. Use them at the (isolinux) +bootprompt as documented here. + +myconfig:: + + This parameter directly sets DCSDIR to the root directory of the specified + device. Usage examples: + + myconfig=/dev/sda1 => read DCS from usb-device + myconfig=/dev/fd0 => read DCS from floppy-disk + +home:: + + This parameter is for setting a specific partition as home directory. Usage + examples: + + home=/dev/sda3 => use /dev/sda3 as the homepartition + home=scan => scan through the available partitions and search + for file grml.img + +partconf:: + + This parameter mounts the specified device in read-only mode and tries to + copy all files specified in /etc/grml/partconf to the Grml system. This + provides the possibility to use the configuration of a harddisk + installation. For example using the network configuration (which is + specified in /etc/network) is possible using this boot parameter. Usage + example: + + partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified + in /etc/grml/partconf to the booted Grml system + +netconfig:: + + Use this parameter to restore configuration using wget to download a GCA + from the specified destination. You can also add variables to change the + file name depending on the host configuration. Predefined and useful + variables are $ARCH, $HOSTNAME and $KERNEL. Usage example: + + netconfig=server.tld/path/to/config.tbz => restore configuration using wget to download file config.tbz + netconfig=server.tld/config-$ARCH.tbz => download config for specified architecture + +netscript:: + Use this parameter to download and run a script from specified destination: + You can also add variables to change the file name depending on the host + configuration. Predefined and useful variables are $ARCH, $HOSTNAME and + $KERNEL. Usage example: + + netcript=server.tld/path/to/script => download and run script/executable from server + netscript=server.tld/script-$HOSTNAME => download and run script/executable for specific host + +extract:: + + Extract specific directories from the GCA which needs to be specified by + other means. + + extract=/home/grml => extract only /home/grml from archive + extract=/etc => extract only /etc from archive + extract=/home/grml/config => extract only $HOME/config from archive + +scripts:: + + This parameter executes scripts. If an optional path is given, it is + relative to DCSDIR. If it points to a directory, all scripts inside this + directory are executed. If the path points to a file, this single file is + executed. If no path is given, it defaults to scripts/grml.sh. Usage + examples: + + scripts => run script DCSDIR/scripts/grml.sh + scripts=foobar.sh => run script foobar.sh in DCSDIR + scripts=foobar => run all scripts inside DCSDIR/foobar directory + +config:: + + This parameter restores a configuration using a GCA. If an optional path is + given, it is relative to DCSDIR. If no path is given, it defaults to + DCSDIR/config.tbz. Usage examples: + + config => restore configuration using file DCSDIR/config.tbz + config=config_foobar.tbz => restore configuration using file DCSDIR/config_foobar.tbz + +debs:: + + This parameter allows automatic installation of deb packages while booting. + The path is relative to DCSDIR, not optional and is a shell wildcard. All + Files matching the wildcard are installed in a single dpkg --install call. + For backwards compatibility, if no slash is contained in the path, it is + taken relative to DCSDIR/debs. + + Usage examples: + + debs=*.deb => install all debian packages (suffix .deb) from directory DCSDIR/debs/ + debs=foo/01*.deb => install all debian packages (suffix .deb) starting with 01 in the filename from directory DCSDIR/foo + + +noautoconfig:: + + Deactivate automounting. By default the scripts try to mount a device with + label 'GRMLCFG'. If you specify the noautoconfig bootparam this automounting + will be deactivated. + + noautoconfig => disables auto mounting of label 'GRMLCFG' + + +Permanently adjust boot parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +As you probably know you can adjust boot parameters on the bootprompt. You want +to set some boot parameters permanently? That's possible via adding a directory +named 'bootparams' to the Grml ISO which has to be located at the root-directory +/bootparams/ (note: the directory is known as /live/image/bootparams/ on a +_running_ Grml system then). Place a textfile inside the directory containing +the boot parameters which should be appended to default ones (this corresponds +to booting without any special parameters). + + mkdir bootparams + echo lang=de > bootparams/my_bootparams + +Then burn a multisession CD where directory bootparams is located in the root +directory of the CD. + +[NOTE] +Not all boot parameters can be used via /bootparams/. This is a limitation of +the way the kernel and userspace retrieve boot parameters. Boot parameter +regarding the kernel definitely do *NOT* work. Boot parameter related to +grml-autoconfig (the main part of the boot process in Grml running in userspace, +being all the stuff after startup of udev) are expected to work. Boot parameter +related to initrd/initramfs (the part between 'Searching for GRML file' and +startup of udev) are *NOT* covered by /bootparams/ as well yet. + +TIP: the application k3b (not available on the live-CD but available through the +Debian repositories) provides an easy to use interface for doing the +multisession task. + diff --git a/sbin/grml-autoconfig b/sbin/grml-autoconfig index 0abc8f8..9806ac3 100755 --- a/sbin/grml-autoconfig +++ b/sbin/grml-autoconfig @@ -18,15 +18,19 @@ TMPFILE="$(mktemp)" AUTOCONFIG=/etc/grml/autoconfig [ -r $AUTOCONFIG ] || exit 1 +. $AUTOCONFIG + # helper functions activate_value() { - sed -i "s/$1.*/$1'yes'/" $AUTOCONFIG + check_entry $1 + sed -i "s/$1.*/$1'yes'/" ${CONFIG_AUTOCONFIG_LOCAL} } deactivate_value() { - sed -i "s/$1.*/$1'no'/" $AUTOCONFIG + check_entry $1 + sed -i "s/$1.*/$1'no'/" ${CONFIG_AUTOCONFIG_LOCAL} } check_setting() @@ -34,17 +38,28 @@ check_setting() grep -q $* $TMPFILE && return 0 || return 1 } +check_entry() +{ + if ! grep -q ${1} ${CONFIG_AUTOCONFIG_LOCAL} 2>/dev/null ; then + grep $1 ${AUTOCONFIG} >> ${CONFIG_AUTOCONFIG_LOCAL} + fi +} + +is_set() +{ + [ $1 = 'yes' ] && return 0 || return 1 +} check_current_state() { - grep -q '^CONFIG_DHCP=.*yes' $AUTOCONFIG && DHCPSTATUS=ON || DHCPSTATUS=OFF + is_set $CONFIG_DHCP && DHCPSTATUS=ON || DHCPSTATUS=OFF if [ "$(grep '^auto' /etc/network/interfaces | sed 's/ lo// ; s/auto// ; s/ //g')" != "" ] ; then DHCPSTATUS=OFF fi - grep -q '^CONFIG_FSTAB=.*yes' $AUTOCONFIG && FSTABSTATUS=ON || FSTABSTATUS=OFF - grep -q '^CONFIG_CPU=.*yes' $AUTOCONFIG && CPUSTATUS=ON || CPUSTATUS=OFF - grep -q '^CONFIG_ACPI_APM=.*yes' $AUTOCONFIG && ACPI_APMSTATUS=ON || ACPI_APMSTATUS=OFF - grep -q '^CONFIG_SYSLOG=.*yes' $AUTOCONFIG && SYSLOGSTATUS=ON || SYSLOGSTATUS=OFF - grep -q '^CONFIG_GPM=.*yes' $AUTOCONFIG && GPMSTATUS=ON || GPMSTATUS=OFF + is_set $CONFIG_FSTAB && FSTABSTATUS=ON || FSTABSTATUS=OFF + is_set $CONFIG_CPU && CPUSTATUS=ON || CPUSTATUS=OFF + is_set $CONFIG_ACPI_APM && ACPI_APMSTATUS=ON || ACPI_APMSTATUS=OFF + is_set $CONFIG_SYSLOG && SYSLOGSTATUS=ON || SYSLOGSTATUS=OFF + is_set $CONFIG_GPM && GPMSTATUS=ON || GPMSTATUS=OFF } # main program @@ -57,7 +72,7 @@ interface to activate or deactivate some features. If you do not know what to do at this stage just leave it untouched, the defaults are the recommended values. -All the configuration happens in the file /etc/grml/autoconfig - you can +All the configuration happens in the file /etc/grml/autoconfig.local - you can edit it manually as well. " 0 0 0 \ dhcp "check for network devices and run pump (get ip-address via DHCP)" $DHCPSTATUS \ diff --git a/tests/common_tests b/tests/common_tests new file mode 100644 index 0000000..576b7fc --- /dev/null +++ b/tests/common_tests @@ -0,0 +1,15 @@ +#!/bin/zsh + +setopt shwordsplit + +oneTimeSetUp() { + OLDPATH=$PATH + + . ../autoconfig.functions + + export PATH=$OLDPATH +} + + +SHUNIT_PARENT=$1 +. ./shunit2 diff --git a/tests/run_tests.sh b/tests/run_tests.sh new file mode 100755 index 0000000..46c4645 --- /dev/null +++ b/tests/run_tests.sh @@ -0,0 +1,29 @@ +#!/bin/zsh +# Filename: run_tests +# Purpose: run unit tests for grml-autoconfig +# Authors: grml-team (grml.org), (c) Ulrich Dangel +# Bug-Reports: see http://grml.org/bugs/ +# License: This file is licensed under the GPL v2. +################################################################################ + + +GLOBRETVAL=0 + +for FILE in test_*.sh ; do + if [ -x ${FILE} ] ; then + pretty_name="${FILE##test_}" + pretty_name="${pretty_name/.sh/}" + + echo "Running test for: ${pretty_name}" + + ./${FILE} + RETVAL=$? + + [ "$RETVAL" -ne 0 ] && GLOBRETVAL=$RETVAL + fi +done + +exit $GLOBRETVAL + +## END OF FILE ################################################################# +# vim:foldmethod=marker expandtab ai ft=zsh shiftwidth=3 diff --git a/tests/test_parameters.sh b/tests/test_bootparameters.sh similarity index 90% rename from tests/test_parameters.sh rename to tests/test_bootparameters.sh index 5d08f8a..7e61c86 100755 --- a/tests/test_parameters.sh +++ b/tests/test_bootparameters.sh @@ -1,6 +1,5 @@ #!/bin/zsh -setopt shwordsplit test_checkbootparam() { CMDLINE='foo=dingens bar foobar=blub' @@ -51,14 +50,4 @@ test_getbootparam() { } -oneTimeSetUp() { - OLDPATH=$PATH - - . ../autoconfig.functions - - export PATH=$OLDPATH -} - -SHUNIT_PARENT=$0 - -. ./shunit2 +. ./common_tests $0 diff --git a/tests/test_dcsdir.sh b/tests/test_dcsdir.sh new file mode 100755 index 0000000..0f012e8 --- /dev/null +++ b/tests/test_dcsdir.sh @@ -0,0 +1,16 @@ +#!/bin/zsh + + +test_finddcsdir() { + CMDLINE='' + INSTALLED='' + + EXPECTED_PATH='/live/image' + + config_finddcsdir &>/dev/null + + assertEquals 'dcsdir is wrong' ${EXPECTED_PATH} ${DCSDIR} + +} + +. ./common_tests $0