Add the ability to specify a full path to the .iso to be mounted instead of just the path to a directory with the single iso in it. This also changes findFirstIsoImage to return the full path instead of just the filename. Resolves: rhbz#707846 NOTE: This is against master, not f15 as the previous one was --- pyanaconda/image.py | 28 ++++++++++++++++++++-------- 1 files changed, 20 insertions(+), 8 deletions(-) diff --git a/pyanaconda/image.py b/pyanaconda/image.py index 90a264b..a2b1e49 100644 --- a/pyanaconda/image.py +++ b/pyanaconda/image.py @@ -30,10 +30,21 @@ log = logging.getLogger("anaconda") _arch = iutil.getArch() def findFirstIsoImage(path, messageWindow): + """ + Find the first iso image in path + This also supports specifying a specific .iso image + + Returns the full path to the image + """ flush = os.stat(path) - files = os.listdir(path) arch = _arch + if os.path.isfile(path) and path.endswith(".iso"): + files = [os.path.basename(path)] + path = os.path.dirname(path) + else: + files = os.listdir(path) + for fn in files: what = path + '/' + fn log.debug("Checking %s" % (what)) @@ -87,7 +98,7 @@ def findFirstIsoImage(path, messageWindow): log.info("Found disc at %s" % fn) isys.umount("/mnt/install/cdimage", removeDir=False) - return fn + return what return None @@ -104,6 +115,10 @@ def getMediaId(path): # This mounts the directory containing the iso images, and places the # mount point in /mnt/install/isodir. def mountDirectory(methodstr, messageWindow): + # No need to mount it again. + if os.path.ismount("/mnt/install/isodir"): + return + if methodstr.startswith("hd:"): method = methodstr[3:] options = '' @@ -118,15 +133,13 @@ def mountDirectory(methodstr, messageWindow): device = "/dev/%s" % device elif methodstr.startswith("nfsiso:"): (options, host, path) = iutil.parseNfsUrl(methodstr) + if path.endswith(".iso"): + path = os.path.dirname(path) device = "%s:%s" % (host, path) fstype = "nfs" else: return - # No need to mount it again. - if os.path.ismount("/mnt/install/isodir"): - return - while True: try: isys.mount(device, "/mnt/install/isodir", fstype=fstype, options=options) @@ -156,8 +169,7 @@ def mountImage(isodir, tree, messageWindow): while True: try: - isoImage = "%s/%s" % (isodir, image) - isys.mount(isoImage, tree, fstype = 'iso9660', readOnly = True) + isys.mount(image, tree, fstype = 'iso9660', readOnly = True) break except SystemError: ans = messageWindow(_("Missing ISO 9660 Image"), -- 1.7.4.4 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list