import struct
# global variables
-PROG_VERSION = "0.9.27~git"
+PROG_VERSION = "0.9.28~git"
MOUNTED = set() # register mountpoints
TMPFILES = set() # register tmpfiles
DATESTAMP = time.mktime(datetime.datetime.now().timetuple()) # unique identifier for syslinux.cfg
@target: path of the target mount point
"""
grml_target = target + '/grml/'
- new_grml_version = search_file('grml-version', grml_target)
- if new_grml_version:
- orig_grml_version = search_file('grml-version', iso_mount)
- if not orig_grml_version:
- logging.warn("Warning: %s could not be found - can not install it", orig_grml_version)
+ target_grml_version_file = search_file('grml-version', grml_target)
+ if target_grml_version_file:
+ iso_grml_version_file = search_file('grml-version', iso_mount)
+ if not iso_grml_version_file:
+ logging.warn("Warning: %s could not be found - can not install it", iso_grml_version_file)
return False
try:
- new_file = open(new_grml_version, 'a+')
- new_flavours = [ get_flavour(l) for l in new_file.readlines() ]
-
- old_file = open(orig_grml_version, 'r')
- old_lines = old_file.readlines()
- for line in old_lines:
- if not get_flavour(line) in new_flavours:
- new_file.write(line)
+ iso_versions = {}
+ iso_file = open(iso_grml_version_file, 'r')
+ for line in iso_file:
+ iso_versions[get_flavour(line)] = line.strip()
+
+ for line in fileinput.input([target_grml_version_file], inplace=1):
+ flavour = get_flavour(line)
+ if flavour in iso_versions.keys():
+ print iso_versions[flavour]
+ else:
+ print line.strip()
except IOError:
logging.warn("Warning: Could not write file")
finally:
- new_file.close()
- old_file.close()
+ iso_file.close()
+ fileinput.close()
return True
else:
return False
except CriticalException, error:
logging.critical("Fatal: %s", error)
raise
- global GRML_FLAVOURS
try:
grml_flavours = identify_grml_flavour(mountpoint)
for flavour in set(grml_flavours):
sys.exit(1)
+def check_programs():
+ """check if all needed programs are installed"""
+ if options.grub:
+ if not which("grub-install"):
+ logging.critical("Fatal: grub-install not available (please install the "
+ + "grub package or drop the --grub option)")
+ sys.exit(1)
+
+ if options.syslinux:
+ if not which("syslinux"):
+ logging.critical("Fatal: syslinux not available (please install the "
+ + "syslinux package or use the --grub option)")
+ sys.exit(1)
+
+ if not which("rsync"):
+ logging.critical("Fatal: rsync not available, can not continue - sorry.")
+ sys.exit(1)
+
def main():
"""Main function [make pylint happy :)]"""
if options.dryrun:
logging.info("Running in simulation mode as requested via option dry-run.")
+ check_programs()
+
# specified arguments
device = args[len(args) - 1]
isos = args[0:len(args) - 1]
logging.critical("Fatal: installation on raw device not supported. (BIOS won't support it.)")
sys.exit(1)
- if options.grub:
- if not which("grub-install"):
- logging.critical("Fatal: grub-install not available (please install the "
- + "grub package or drop the --grub option)")
- sys.exit(1)
-
- if options.syslinux:
- if not which("syslinux"):
- logging.critical("Fatal: syslinux not available (please install the "
- + "syslinux package or use the --grub option)")
- sys.exit(1)
-
- if not which("rsync"):
- logging.critical("Fatal: rsync not available, can not continue - sorry.")
- sys.exit(1)
# provide upgrade path
handle_compat_warning(device)