X-Git-Url: https://git.grml.org/?p=grml2usb.git;a=blobdiff_plain;f=grml2usb;h=7891339cf954ce844950c52de893ad1a68d8b6f1;hp=0ea7e291f5c01d5ec49d72b266e3a6d5ff7cdef8;hb=ad536c6777f3a634dc00288d2219d056ab18929e;hpb=5d3c18e7f0533bc44ceb3021f8e40707e70ed8b1 diff --git a/grml2usb b/grml2usb index 0ea7e29..7891339 100755 --- a/grml2usb +++ b/grml2usb @@ -1,5 +1,4 @@ #!/usr/bin/env python - #include # -*- 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 +import glob # 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 +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]> \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") -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") @@ -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 - 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)") @@ -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 - 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/') - if not path: - print filename - continue 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') @@ -1255,11 +1259,14 @@ def modify_grub_config(filename): 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 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) @@ -1366,7 +1373,7 @@ def handle_grub2_config(grml_flavour, grub_target, bootopt): 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 @@ -1440,9 +1447,12 @@ def adjust_syslinux_bootoptions(src, flavour): bootopt = options.bootoptions regexe = [] + option_re = None if options.removeoption: + option_re = re.compile(r'/boot/release/.*/initrd.gz') + 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) @@ -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) - 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() @@ -1891,6 +1902,7 @@ def main(): # finally be politely :) logging.info("Finished execution of grml2usb (%s). Have fun with your grml system.", PROG_VERSION) + if __name__ == "__main__": try: main()