Merge branch 'chrootscripts'
authorMichael Prokop <mika@grml.org>
Thu, 20 Nov 2008 13:39:21 +0000 (14:39 +0100)
committerMichael Prokop <mika@grml.org>
Thu, 20 Nov 2008 13:39:21 +0000 (14:39 +0100)
1  2 
grml-debootstrap

diff --combined grml-debootstrap
@@@ -45,34 -45,37 +45,37 @@@ Bootstrap options
        --debopt=params    Extra parameters passed to the debootstrap.
        --interactive      Use interactive mode (frontend).
        --nodebootstrap    Skip debootstrap, only do configuration to the target.
- Configuration options:
-   -c, --config=file      Use specified configuration file, defaults to
-                            /etc/debootstrap/config
-   -d, --confdir=path     Place of config files for debootstrap, defaults to
-                            /etc/debootstrap
-       --packages[=f]     Install packages defined in <confdir>/packages. Option
-                            arg: alternative package list file.
-       --debconf[=f]      Pre-seed packages using <confdir>/debconf-selections.
-                            Option arg: alternative pre-seed db file.
-       --keep_src_list    Do not overwrite user provided apt sources.list.
-       --hostname=name    Hostname of Debian system.
-       --password=pwd     Use specified password as password for user root.
-       --bootappend=line  Add specified appendline to kernel whilst booting.
        --groot=device     Root device for usage in grub, corresponds with
-                            $TARGET in grub syntax, like hd0,0 for /dev/sda1.
+                            \$TARGET in grub syntax, like hd0,0 for /dev/sda1.
        --grub=device      Target for grub installation. Use grub syntax for
                             specifying, like hd0 for /dev/sda.
  
+ Configuration options:
+   -c, --config=file        Use specified configuration file, defaults to
+                              /etc/debootstrap/config
+   -d, --confdir=path       Place of config files for debootstrap, defaults
+                              to /etc/debootstrap
+       --packages[=f]       Install packages defined in <confdir>/packages.
+                              Option arg: alternative package list file.
+       --debconf[=f]        Pre-seed packages using <confdir>/debconf-selections.
+                              Option arg: alternative pre-seed db file.
+       --keep_src_list      Do not overwrite user provided apt sources.list.
+       --hostname=name      Hostname of Debian system.
+       --password=pwd       Use specified password as password for user root.
+       --bootappend=line    Add specified appendline to kernel whilst booting.
+       --chroot-scripts[=f] Execute scripts from <confdir>/chroot-scripts/
+                              Option arg: alternative chroot-scripts directory.
+       --scripts[=d]        Execute scripts from <confdir>/scripts/.
+                              Option arg: alternative scripts directory.
  Other options:
  
    -v, --verbose          Increase verbosity.
    -h, --help             Print this usage information and exit.
    -V, --version          Show summary of options and exit.
  
+ Usage examples can be found in the grml-debootstrap manpage.
  Send bugreports to the grml-team: bugs@grml.org || http://grml.org/bugs/
  "
  }
  
  # cmdline handling {{{
  # source external command line parameter-processing script
- . /usr/share/grml-debootstrap/functions/cmdlineopts.clp
+ if [ -r /usr/share/grml-debootstrap/functions/cmdlineopts.clp ] ; then
+    . /usr/share/grml-debootstrap/functions/cmdlineopts.clp
+ elif [ -r ./cmdlineopts.clp ] ; then
+    . ./cmdlineopts.clp
+ else
+    echo "Error: cmdline function file not found, exiting.">&2
+    exit 1
+ fi
  
  # == business-logic of command line parameter-processing
  
  [ "$_opt_config" ]            && CONFIGFILE=$_opt_config
  [ "$_opt_packages_set" ]      && PACKAGES='yes'
  [ "$_opt_debconf_set" ]               && DEBCONF='yes'
+ [ "$_opt_scripts_set" ]         && SCRIPTS='yes'
+ [ "$_opt_chroot_scripts_set" ]  && CHROOT_SCRIPTS='yes'
  [ "$_opt_keep_src_list" ]     && KEEP_SRC_LIST='yes'
  [ "$_opt_hostname" ]          && HOSTNAME=$_opt_hostname
  [ "$_opt_password" ]          && ROOTPASSWORD=$_opt_password
@@@ -729,7 -741,6 +741,7 @@@ preparechroot() 
    [ -n "$MIRROR" ]       && echo "CHROOTMIRROR=$MIRROR"       >> $CHROOT_VARIABLES
    [ -n "$MIRROR" ]       && echo "MIRROR=$MIRROR"             >> $CHROOT_VARIABLES
    [ -n "$KEEP_SRC_LIST" ] && echo "KEEP_SRC_LIST=$KEEP_SRC_LIST" >> $CHROOT_VARIABLES
 +  [ -n "$PACKAGES" ]     && echo "PACKAGES=$PACKAGES"         >> $CHROOT_VARIABLES
    [ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD=$ROOTPASSWORD" >> $CHROOT_VARIABLES
    [ -n "$TARGET" ]       && echo "TARGET=$TARGET"             >> $CHROOT_VARIABLES
    [ -n "$TARGET_UUID" ]  && echo "TARGET_UUID=$TARGET_UUID"   >> $CHROOT_VARIABLES
    sed -i "s#GRUB=.*#GRUB=\"$GRUB\"#"          $MNTPOINT/etc/debootstrap/config
    sed -i "s#GROOT=.*#GROOT=\"$GROOT\"#"       $MNTPOINT/etc/debootstrap/config
  
+   # package selection:
    cp $VERBOSE ${_opt_packages:-$CONFFILES/packages} \
      $MNTPOINT/etc/debootstrap/packages
+   # debconf preseeding:
    _opt_debconf=${_opt_debconf:-$CONFFILES/debconf-selections}
    [ -f $_opt_debconf -a "$DEBCONF" = 'yes' ] && \
      cp $VERBOSE $_opt_debconf $MNTPOINT/etc/debootstrap/debconf-selections
  
+   # copy scripts that should be executed inside the chroot:
+   _opt_chroot_scripts=${_opt_chroot_scripts:-$CONFFILES/chroot_scripts/}
+   [ -f $_opt_chroot_scripts -a "$CHROOT_SCRIPTS" = 'yes' ] && \
+     cp -a $VERBOSE $_opt_chroot_scripts $MNTPOINT/etc/debootstrap/
    # notice: do NOT use $CHROOT_VARIABLES inside chroot but statically file instead!
-   cp $VERBOSE $CHROOT_VARIABLES          $MNTPOINT/etc/debootstrap/variables
+   cp $VERBOSE $CHROOT_VARIABLES  $MNTPOINT/etc/debootstrap/variables
  
    cp $VERBOSE -a -L $CONFFILES/extrapackages/ $MNTPOINT/etc/debootstrap/
  
  }
  # }}}
  
+ # execute all scripts in /etc/debootstrap/scripts/ {{{
+ execute_scripts() {
+    if [ -f $_opt_scripts -a "$SCRIPTS" = 'yes' ] ; then
+       for script in /etc/debootstrap/scripts/* ; do
+          if [ -x "$script" ] ; then
+             einfo "Executing script $script"
+             $script ; eend $?
+          fi
+       done
+    fi
+ }
+ # }}}
  # execute chroot-script {{{
  chrootscript() {
    if ! [ -r "$MNTPOINT/bin/chroot-script" ] ; then
@@@ -864,7 -896,8 +897,8 @@@ fscktool() 
  
  # now execute all the functions {{{
  for i in mkfs tunefs mount_target debootstrap_system preparechroot \
-          chrootscript grub_install umount_chroot fscktool ; do
+          chrootscript execute_scripts grub_install umount_chroot   \
+          fscktool ; do
      if stage "${i}" ; then
         $i && ( stage "${i}" done && rm -f "${STAGES}/${i}" ) || bailout 2 "i"
      fi