Update for new release
[grml2usb.git] / grml2usb
index 0ea7e29..7891339 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -1,5 +1,4 @@
 #!/usr/bin/env python
 #!/usr/bin/env python
-       #include <stdlib.h>
 # -*- coding: utf-8 -*-
 """
 grml2usb
 # -*- coding: utf-8 -*-
 """
 grml2usb
@@ -18,15 +17,21 @@ from optparse import OptionParser
 from inspect import isroutine, isclass
 import datetime, logging, os, re, subprocess, sys, tempfile, time, os.path
 import fileinput
 from inspect import isroutine, isclass
 import datetime, logging, os, re, subprocess, sys, tempfile, time, os.path
 import fileinput
+import glob
 
 # global variables
 
 # global variables
-PROG_VERSION = "0.9.13"
+PROG_VERSION = "0.9.15"
 MOUNTED = set()  # register mountpoints
 TMPFILES = set() # register tmpfiles
 DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg
 GRML_FLAVOURS = set() # which flavours are being installed?
 global GRML_DEFAULT
 
 MOUNTED = set()  # register mountpoints
 TMPFILES = set() # register tmpfiles
 DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg
 GRML_FLAVOURS = set() # which flavours are being installed?
 global GRML_DEFAULT
 
+def syslinux_warning(option, opt, value, parser):
+    sys.stderr.write("Note: the --syslinux option is deprecated as syslinux " +
+            "is grml2usb's default. Continuing anyway.\n")
+    setattr(parser.values, option.dest, True)
+
 # cmdline parsing
 USAGE = "Usage: %prog [options] <[ISO[s] | /live/image]> </dev/sdX#>\n\
 \n\
 # cmdline parsing
 USAGE = "Usage: %prog [options] <[ISO[s] | /live/image]> </dev/sdX#>\n\
 \n\
@@ -71,7 +76,8 @@ parser.add_option("--skip-mbr", dest="skipmbr", action="store_true",
                   help="do not install a master boot record (MBR) on the device")
 parser.add_option("--skip-syslinux-config", dest="skipsyslinuxconfig", action="store_true",
                   help="skip generation of syslinux configuration files")
                   help="do not install a master boot record (MBR) on the device")
 parser.add_option("--skip-syslinux-config", dest="skipsyslinuxconfig", action="store_true",
                   help="skip generation of syslinux configuration files")
-parser.add_option("--syslinux", dest="syslinux", action="store_true",
+parser.add_option("--syslinux", dest="syslinux", action="callback", default=True,
+                  callback=syslinux_warning,
                   help="install syslinux bootloader (deprecated as it's the default)")
 parser.add_option("--syslinux-mbr", dest="syslinuxmbr", action="store_true",
                   help="install syslinux master boot record (MBR) instead of default")
                   help="install syslinux bootloader (deprecated as it's the default)")
 parser.add_option("--syslinux-mbr", dest="syslinuxmbr", action="store_true",
                   help="install syslinux master boot record (MBR) instead of default")
@@ -650,9 +656,6 @@ def install_bootloader(device):
     @device: partition where bootloader should be installed to"""
 
     # by default we use grub, so install syslinux only on request
     @device: partition where bootloader should be installed to"""
 
     # by default we use grub, so install syslinux only on request
-    if options.syslinux:
-        logging.info("Note: the --syslinux option is deprecated as syslinux is grml2usb's default. Continuing anyway.")
-
     if options.grub:
         if not which("grub-install"):
             logging.critical("Fatal: grub-install not available (please install the grub package or use the --syslinux option)")
     if options.grub:
         if not which("grub-install"):
             logging.critical("Fatal: grub-install not available (please install the grub package or use the --syslinux option)")
@@ -1143,16 +1146,17 @@ def copy_bootloader_files(iso_mount, target):
         logging.critical("       Please visit http://grml.org/grml2usb/#grml2usb-compat for further information.")
         raise
 
         logging.critical("       Please visit http://grml.org/grml2usb/#grml2usb-compat for further information.")
         raise
 
-    for filename in 'addons.cfg', 'default.cfg', 'distri.cfg', \
+    for filename in 'default.cfg', 'distri.cfg', \
                     'grml.cfg', 'grml.png', 'hd.cfg', 'isolinux.cfg', 'isolinux.bin', \
                     'isoprompt.cfg', 'options.cfg', \
                     'prompt.cfg', 'vesamenu.c32', 'vesamenu.cfg', 'grml.png':
         path = search_file(filename, iso_mount + '/boot/isolinux/')
                     'grml.cfg', 'grml.png', 'hd.cfg', 'isolinux.cfg', 'isolinux.bin', \
                     'isoprompt.cfg', 'options.cfg', \
                     'prompt.cfg', 'vesamenu.c32', 'vesamenu.cfg', 'grml.png':
         path = search_file(filename, iso_mount + '/boot/isolinux/')
-        if not path:
-            print filename
-            continue
         exec_rsync(path, syslinux_target + filename)
 
         exec_rsync(path, syslinux_target + filename)
 
+    # copy the addons_*.cfg file to the new syslinux directory
+    for filename in glob.glob(iso_mount + '/boot/isolinux/' + 'addon*.cfg'):
+        exec_rsync(filename, syslinux_target)
+
     path = search_file('hidden.cfg', iso_mount + '/boot/isolinux/')
     exec_rsync(path, syslinux_target + "new_" + 'hidden.cfg')
 
     path = search_file('hidden.cfg', iso_mount + '/boot/isolinux/')
     exec_rsync(path, syslinux_target + "new_" + 'hidden.cfg')
 
@@ -1255,11 +1259,14 @@ def modify_grub_config(filename):
     if options.removeoption:
         regexe = []
         for regex in options.removeoption:
     if options.removeoption:
         regexe = []
         for regex in options.removeoption:
-            regexe.append(re.compile(r'(.*/boot/release/.*linux26.*)(%s)(.*)' % regex))
+            regexe.append(re.compile(r'%s' % regex))
+
+        option_re = re.compile(r'(.*/boot/release/.*linux26.*)')
 
         for line in fileinput.input(filename, inplace=1):
 
         for line in fileinput.input(filename, inplace=1):
-            for regex in regexe:
-                line = regex.sub( r'\1 \3', line)
+            if regexe and option_re.search(line):
+                for regex in regexe:
+                    line = regex.sub(' ', line)
 
             sys.stdout.write(line)
 
 
             sys.stdout.write(line)
 
@@ -1366,7 +1373,7 @@ def handle_grub2_config(grml_flavour, grub_target, bootopt):
 
 
 def handle_grub_config(grml_flavour, device, target):
 
 
 def handle_grub_config(grml_flavour, device, target):
-    """Main handler for generati3g grub (v1 and v2) configuration
+    """Main handler for generating grub (v1 and v2) configuration
 
     @grml_flavour: name of grml flavour the configuration should be generated for
     @device: device/partition where grub should be installed to
 
     @grml_flavour: name of grml flavour the configuration should be generated for
     @device: device/partition where grub should be installed to
@@ -1440,9 +1447,12 @@ def adjust_syslinux_bootoptions(src, flavour):
         bootopt = options.bootoptions
 
     regexe = []
         bootopt = options.bootoptions
 
     regexe = []
+    option_re = None
     if options.removeoption:
     if options.removeoption:
+        option_re = re.compile(r'/boot/release/.*/initrd.gz')
+
         for regex in options.removeoption:
         for regex in options.removeoption:
-            regexe.append(re.compile(r'(.*/boot/release/.*/initrd.gz.*)(%s)(.*)' % regex))
+            regexe.append(re.compile(r'%s' % regex))
 
     for line in fileinput.input(src, inplace=1):
         line = boot_re.sub(r'/boot/release/%s/\2 ' % flavour.replace('-', ''), line)
 
     for line in fileinput.input(src, inplace=1):
         line = boot_re.sub(r'/boot/release/%s/\2 ' % flavour.replace('-', ''), line)
@@ -1450,8 +1460,9 @@ def adjust_syslinux_bootoptions(src, flavour):
         line = default_re.sub(r'%s-\1' % flavour, line)
         line = append_re.sub(r'\1 live-media-path=/live/%s/ ' % flavour, line)
         line = append_re.sub(r'\1 boot=live %s ' % bootopt, line)
         line = default_re.sub(r'%s-\1' % flavour, line)
         line = append_re.sub(r'\1 live-media-path=/live/%s/ ' % flavour, line)
         line = append_re.sub(r'\1 boot=live %s ' % bootopt, line)
-        for regex in regexe:
-            line = regex.sub( r'\1 \3', line)
+        if option_re and option_re.search(line):
+            for regex in regexe:
+                line = regex.sub(' ', line)
         sys.stdout.write(line)
     fileinput.close()
 
         sys.stdout.write(line)
     fileinput.close()
 
@@ -1891,6 +1902,7 @@ def main():
     # finally be politely :)
     logging.info("Finished execution of grml2usb (%s). Have fun with your grml system.", PROG_VERSION)
 
     # finally be politely :)
     logging.info("Finished execution of grml2usb (%s). Have fun with your grml system.", PROG_VERSION)
 
+
 if __name__ == "__main__":
     try:
         main()
 if __name__ == "__main__":
     try:
         main()