[PATCH 2/2] Use instclass.efi_dir when constructing the EFI path

David Shea dshea at redhat.com
Mon Mar 10 20:58:45 UTC 2014


Pass anaconda.instClass to Payload.setup to make the install class
available for payload methods.
---
 anaconda                            |  2 +-
 pyanaconda/bootloader.py            |  6 +++---
 pyanaconda/packaging/__init__.py    | 10 ++++++----
 pyanaconda/packaging/dnfpayload.py  |  4 ++--
 pyanaconda/packaging/livepayload.py |  8 ++++----
 pyanaconda/packaging/tarpayload.py  |  4 ++--
 pyanaconda/packaging/yumpayload.py  |  4 ++--
 7 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/anaconda b/anaconda
index 82c4f6b..f56790a 100755
--- a/anaconda
+++ b/anaconda
@@ -1113,7 +1113,7 @@ if __name__ == "__main__":
                                      args=(ksdata.timezone, anaconda.storage, anaconda.bootloader)))
 
     threadMgr.add(AnacondaThread(name=constants.THREAD_WAIT_FOR_CONNECTING_NM, target=wait_for_connecting_NM_thread, args=(ksdata,)))
-    threadMgr.add(AnacondaThread(name=constants.THREAD_PAYLOAD, target=payloadInitialize, args=(anaconda.storage, ksdata, anaconda.payload)))
+    threadMgr.add(AnacondaThread(name=constants.THREAD_PAYLOAD, target=payloadInitialize, args=(anaconda.storage, ksdata, anaconda.payload, anaconda.instClass)))
 
     # check if geolocation should be enabled for this type of installation
     use_geolocation = True
diff --git a/pyanaconda/bootloader.py b/pyanaconda/bootloader.py
index 8386b57..a765a72 100644
--- a/pyanaconda/bootloader.py
+++ b/pyanaconda/bootloader.py
@@ -2284,12 +2284,12 @@ def get_bootloader():
 
 # anaconda-specific functions
 
-def writeSysconfigKernel(storage, version):
+def writeSysconfigKernel(storage, version, instClass):
     # get the name of the default kernel package based on the version
     kernel_basename = "vmlinuz-" + version
     kernel_file = "/boot/%s" % kernel_basename
     if not os.path.isfile(ROOT_PATH + kernel_file):
-        kernel_file = "/boot/efi/EFI/redhat/%s" % kernel_basename
+        kernel_file = "/boot/efi/EFI/%s/%s" % (instClass.efi_dir, kernel_basename)
         if not os.path.isfile(ROOT_PATH + kernel_file):
             log.error("failed to recreate path to default kernel image")
             return
@@ -2365,7 +2365,7 @@ def writeBootLoader(storage, payload, instClass, ksdata):
         storage.bootloader.efi_dir = instClass.efi_dir
 
     # write out /etc/sysconfig/kernel
-    writeSysconfigKernel(storage, version)
+    writeSysconfigKernel(storage, version, instClass)
 
     if storage.bootloader.skip_bootloader:
         log.info("skipping bootloader install per user request")
diff --git a/pyanaconda/packaging/__init__.py b/pyanaconda/packaging/__init__.py
index 7058672..b677944 100644
--- a/pyanaconda/packaging/__init__.py
+++ b/pyanaconda/packaging/__init__.py
@@ -112,14 +112,16 @@ class Payload(object):
 
         self.data = data
         self.storage = None
+        self.instclass = None
         self._kernelVersionList = []
         self._rescueVersionList = []
         self._createdInitrds = False
         self.txID = None
 
-    def setup(self, storage):
+    def setup(self, storage, instClass):
         """ Do any payload-specific setup. """
         self.storage = storage
+        self.instclass = instClass
 
     def preStorage(self):
         """ Do any payload-specific work necessary before writing the storage
@@ -329,7 +331,7 @@ class Payload(object):
             cmpfunc = yum.rpmUtils.miscutils.compareVerOnly
 
         files = glob.glob(ROOT_PATH + "/boot/vmlinuz-*")
-        files.extend(glob.glob(ROOT_PATH + "/boot/efi/EFI/redhat/vmlinuz-*"))
+        files.extend(glob.glob(ROOT_PATH + "/boot/efi/EFI/%s/vmlinuz-*" % self.instclass.efi_dir))
 
         versions = [f.split("/")[-1][8:] for f in files if os.path.isfile(f)]
         versions.sort(cmp=cmpfunc)
@@ -990,7 +992,7 @@ class PackagePayload(Payload):
     def groupDescription(self, groupid):
         raise NotImplementedError()
 
-def payloadInitialize(storage, ksdata, payload):
+def payloadInitialize(storage, ksdata, payload, instClass):
     from pyanaconda.threads import threadMgr
 
     threadMgr.wait(THREAD_STORAGE)
@@ -999,7 +1001,7 @@ def payloadInitialize(storage, ksdata, payload):
     # (set and use payload.needsNetwork ?)
     threadMgr.wait(THREAD_WAIT_FOR_CONNECTING_NM)
 
-    payload.setup(storage)
+    payload.setup(storage, instClass)
 
 def show_groups(payload):
     #repo = ksdata.RepoData(name="anaconda", baseurl="http://cannonball/install/rawhide/os/")
diff --git a/pyanaconda/packaging/dnfpayload.py b/pyanaconda/packaging/dnfpayload.py
index 54d10a8..6157357 100644
--- a/pyanaconda/packaging/dnfpayload.py
+++ b/pyanaconda/packaging/dnfpayload.py
@@ -529,9 +529,9 @@ class DNFPayload(packaging.PackagePayload):
         env = self._base.comps.environment_by_pattern(environmentid)
         map(self.selectGroup, (id_.name for id_ in env.group_ids))
 
-    def setup(self, storage):
+    def setup(self, storage, instClass):
         # must end up with the base repo (and its metadata) ready
-        super(DNFPayload, self).setup(storage)
+        super(DNFPayload, self).setup(storage, instClass)
         self.updateBaseRepo()
         self.gatherRepoMetadata()
 
diff --git a/pyanaconda/packaging/livepayload.py b/pyanaconda/packaging/livepayload.py
index 6fa363a..75179c1 100644
--- a/pyanaconda/packaging/livepayload.py
+++ b/pyanaconda/packaging/livepayload.py
@@ -66,8 +66,8 @@ class LiveImagePayload(ImagePayload):
         self.pct = 0
         self.pct_lock = None
 
-    def setup(self, storage):
-        super(LiveImagePayload, self).setup(storage)
+    def setup(self, storage, instClass):
+        super(LiveImagePayload, self).setup(storage, instClass)
 
         # Mount the live device and copy from it instead of the overlay at /
         osimg = storage.devicetree.getDeviceByPath(self.data.method.partition)
@@ -221,11 +221,11 @@ class LiveImageKSPayload(LiveImagePayload):
         self._proxies = {}
         self.image_path = ROOT_PATH+"/disk.img"
 
-    def setup(self, storage):
+    def setup(self, storage, instClass):
         """ Check the availability and size of the image.
         """
         # This is on purpose, we don't want to call LiveImagePayload's setup method.
-        ImagePayload.setup(self, storage)
+        ImagePayload.setup(self, storage, instClass)
 
         self._proxies = {}
         if self.data.method.proxy:
diff --git a/pyanaconda/packaging/tarpayload.py b/pyanaconda/packaging/tarpayload.py
index 3c9ec65..b3dd2ed 100644
--- a/pyanaconda/packaging/tarpayload.py
+++ b/pyanaconda/packaging/tarpayload.py
@@ -51,8 +51,8 @@ class TarPayload(ArchivePayload):
         self.archive = None
         self.image_file = None
 
-    def setup(self, storage):
-        super(TarPayload, self).setup(storage)
+    def setup(self, storage, instClass):
+        super(TarPayload, self).setup(storage, instClass)
 
         try:
             self.archive = tarfile.open(self.image_file)
diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
index b864f12..6772b8e 100644
--- a/pyanaconda/packaging/yumpayload.py
+++ b/pyanaconda/packaging/yumpayload.py
@@ -196,8 +196,8 @@ class YumPayload(PackagePayload):
 
         self._resetYum(root=root, releasever=releasever)
 
-    def setup(self, storage):
-        super(YumPayload, self).setup(storage)
+    def setup(self, storage, instClass):
+        super(YumPayload, self).setup(storage, instClass)
 
         self._writeYumConfig()
         self._setup = True
-- 
1.8.5.3



More information about the anaconda-patches mailing list