[Fedora-livecd-list] 3 commits - imgcreate/creator.py imgcreate/live.py imgcreate/yuminst.py

Jeremy Katz katzj at fedoraproject.org
Tue Aug 5 22:06:31 UTC 2008


 imgcreate/creator.py |   20 ++++++++++++--------
 imgcreate/live.py    |    4 ++--
 imgcreate/yuminst.py |    3 +++
 3 files changed, 17 insertions(+), 10 deletions(-)

New commits:
commit 2a57a06e1c6d43a7d4d55dccda4270ff63a7b44d
Author: Jeremy Katz <katzj at redhat.com>
Date:   Tue Aug 5 18:04:09 2008 -0400

    And make --base-on really work
    
    --base-on still wasn't quite working for the livecd case.  This makes it so
    that we actually pass the iso to base on as well as call the implementation's
    method

diff --git a/imgcreate/creator.py b/imgcreate/creator.py
index 846373d..e63e96d 100644
--- a/imgcreate/creator.py
+++ b/imgcreate/creator.py
@@ -895,7 +895,7 @@ class LoopImageCreator(ImageCreator):
         """
         return self.__instloop.resparse(size)
 
-    def __base_on(self, base_on):
+    def _base_on(self, base_on):
         shutil.copyfile(base_on, self._image)
         
     #
@@ -905,8 +905,7 @@ class LoopImageCreator(ImageCreator):
         self.__imgdir = self._mkdtemp()
 
         if not base_on is None:
-            self.__base_on(base_on)
-            shutil.copyfile(base_on, self._image)
+            self._base_on(base_on)
 
         self.__instloop = SparseExtLoopbackMount(self._image,
                                                  self._instroot,
diff --git a/imgcreate/live.py b/imgcreate/live.py
index e0bac09..49d524b 100644
--- a/imgcreate/live.py
+++ b/imgcreate/live.py
@@ -129,7 +129,7 @@ class LiveImageCreatorBase(LoopImageCreator):
     #
     # Actual implementation
     #
-    def __base_on(self, base_on):
+    def _base_on(self, base_on):
         """helper function to extract ext3 file system from a live CD ISO"""
         isoloop = LoopbackMount(base_on, self._mkdtemp())
 
@@ -175,7 +175,7 @@ class LiveImageCreatorBase(LoopImageCreator):
             isoloop.cleanup()
 
     def _mount_instroot(self, base_on = None):
-        LoopImageCreator._mount_instroot(self)
+        LoopImageCreator._mount_instroot(self, base_on)
         self.__write_initrd_conf(self._instroot + "/etc/sysconfig/mkinitrd")
 
     def _unmount_instroot(self):


commit 305eaabc1c4329ad4ad17bf3a665be4f6a84aaa6
Author: Jeremy Katz <katzj at redhat.com>
Date:   Tue Aug 5 18:02:26 2008 -0400

    Don't fail if devices already exist
    
    When in base-on mode, we could already have the device nodes created, so we
    should only create them if they don't already exist

diff --git a/imgcreate/creator.py b/imgcreate/creator.py
index e61f034..846373d 100644
--- a/imgcreate/creator.py
+++ b/imgcreate/creator.py
@@ -414,12 +414,17 @@ class ImageCreator(object):
                    ('ptmx',   5, 2, 0666),
                    ('tty',    5, 0, 0666),
                    ('zero',   1, 5, 0666))
+        links = (("/proc/self/fd", "/dev/fd"),
+                 ("/proc/self/fd/0", "/dev/stdin"),
+                 ("/proc/self/fd/1", "/dev/stdout"),
+                 ("/proc/self/fd/2", "/dev/stderr"))
+
         for (node, major, minor, perm) in devices:
-            os.mknod(self._instroot + "/dev/" + node, perm | stat.S_IFCHR, os.makedev(major,minor))
-        os.symlink('/proc/self/fd',   self._instroot + "/dev/fd")
-        os.symlink('/proc/self/fd/0', self._instroot + "/dev/stdin")
-        os.symlink('/proc/self/fd/1', self._instroot + "/dev/stdout")
-        os.symlink('/proc/self/fd/2', self._instroot + "/dev/stderr")
+            if not os.path.exists(self._instroot + "/dev/" + node):
+                os.mknod(self._instroot + "/dev/" + node, perm | stat.S_IFCHR, os.makedev(major,minor))
+        for (src, dest) in links:
+            if not os.path.exists(self._instroot + dest):
+                os.symlink(src, self._instroot + dest)
         os.umask(origumask)
 
     def __create_selinuxfs(self):


commit 985092a541cbafbc91bccb73fd9d1bede2c4d283
Author: Jeremy Katz <katzj at redhat.com>
Date:   Tue Aug 5 18:00:58 2008 -0400

    Ensure we don't have (stale) rpmdb locks
    
    If we're basing on a previous ISO, we may have rpmdb locks left in the
    image which could be from a different version of rpm than the version
    we're using.  So remove any before trying to open the rpmdb

diff --git a/imgcreate/yuminst.py b/imgcreate/yuminst.py
index dd5b189..a7b04b6 100644
--- a/imgcreate/yuminst.py
+++ b/imgcreate/yuminst.py
@@ -16,6 +16,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
+import glob
 import os
 import sys
 import logging
@@ -70,6 +71,8 @@ class LiveCDYum(yum.YumBase):
 
     def setup(self, confpath, installroot):
         self._writeConf(confpath, installroot)
+        for f in glob.glob(installroot + "/var/lib/rpm/__db*"):
+            os.unlink(f)
         self.doConfigSetup(fn = confpath, root = installroot)
         self.conf.cache = 0
         self.doTsSetup()





More information about the Fedora-livecd-list mailing list