[Erp5-report] r8799 - in /umigumi/trunk: README.txt umibuilder.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jul 26 15:06:19 CEST 2006


Author: chris
Date: Wed Jul 26 15:05:57 2006
New Revision: 8799

URL: http://svn.erp5.org?rev=8799&view=rev
Log:
- Updated dependency list
- Check for missing dependencies at the beginning of the execution to avoid loosing time
- added cpio initrd support (Needed by latest mdk initrd)

Modified:
    umigumi/trunk/README.txt
    umigumi/trunk/umibuilder.py

Modified: umigumi/trunk/README.txt
URL: http://svn.erp5.org/umigumi/trunk/README.txt?rev=8799&r1=8798&r2=8799&view=diff
==============================================================================
--- umigumi/trunk/README.txt (original)
+++ umigumi/trunk/README.txt Wed Jul 26 15:05:57 2006
@@ -14,8 +14,15 @@
 
 Installing Umigumi
 
-  Umigumi requires python2.2 and PyQt 3.5
+  Umigumi requires python >= 2.2 and PyQt 3.5
   It can run on Qt 2.x and Qt 3.x
+
+Dependencies
+
+ - udhcpc
+ - busybox
+ - mke2fs
+ - ash
   
 Using Umigumi
 

Modified: umigumi/trunk/umibuilder.py
URL: http://svn.erp5.org/umigumi/trunk/umibuilder.py?rev=8799&r1=8798&r2=8799&view=diff
==============================================================================
--- umigumi/trunk/umibuilder.py (original)
+++ umigumi/trunk/umibuilder.py Wed Jul 26 15:05:57 2006
@@ -407,13 +407,25 @@
     try:
       if not os.access(mdk_initrd_mount_dir, os.F_OK):
         if not dry_run: os.mkdir(mdk_initrd_mount_dir)
-      executeCommand('mount -o loop %s %s' % (decompressed_mdk_initrd_path, mdk_initrd_mount_dir), dry_run)
+      try:
+        executeCommand('mount -o loop %s %s' % (decompressed_mdk_initrd_path, mdk_initrd_mount_dir), dry_run)
+      except:
+        current_dir = os.getcwd()
+        executeCommand('mkdir -p %s'%mdk_initrd_mount_dir, dry_run)
+        executeCommand('cp -a %s %s' % (decompressed_mdk_initrd_path, mdk_initrd_mount_dir), dry_run)
+        os.chdir(mdk_initrd_mount_dir)
+        executeCommand('cpio -id < initrd', dry_run)
+        executeCommand('rm -f initrd', dry_run)
+        os.chdir(current_dir)
       createNewInitrd(config, mdk_initrd_mount_dir, dry_run)
     finally:
       if os.path.ismount(mdk_initrd_mount_dir):
-        executeCommand('umount %s' % mdk_initrd_mount_dir, dry_run)
+        try:
+          executeCommand('umount %s' % mdk_initrd_mount_dir, dry_run)
+        except:
+          pass
       if os.access(mdk_initrd_mount_dir, os.F_OK):
-        if not dry_run: os.rmdir(mdk_initrd_mount_dir)
+        executeCommand('rm -rf %s'%mdk_initrd_mount_dir, dry_run)
   finally:
     if os.access(decompressed_mdk_initrd_path, os.F_OK):
       if not dry_run: os.remove(decompressed_mdk_initrd_path)
@@ -522,10 +534,9 @@
   bin_dir = os.path.join(new_initrd_mount_dir, 'bin')
   lib_dir = os.path.join(new_initrd_mount_dir, 'lib')
   tls_dir = os.path.join(lib_dir, 'tls')
-  # Copy sda device to dev directory (because device is not created kernel
+  # Copy sda device to dev directory (because device is not created by kernel)
   abs_build_dir = os.path.abspath(config.build_dir)
   executeCommand('cp -ax %s/dev/sda* %s/dev/' % (abs_build_dir, new_initrd_mount_dir), dry_run)
-  # Search each program in a list of paths and copy it.
   for program in program_list:
     for path in search_path_list:
       src = os.path.join(path, program)
@@ -963,6 +974,21 @@
     print "Unknown target %s." % target
     print "Try ``umibuilder --help'' for more information."
     sys.exit(2)
+  
+  if target[:2] == "tc":
+    # Check for missing dependencies
+    program_list = [ 'busybox', 'mke2fs', 'sfdisk', 'udevstart', 'udev', 'mount', 'umount', 'insmod', 'ifconfig','udhcpc', 'ash', 'route', 'cp', ]
+    missing_dep = []
+    search_path_list = ['/usr/sbin', '/sbin', '/usr/bin', '/bin']
+    for program in program_list:
+      for path in search_path_list:
+        src = os.path.join(path, program)
+        if os.access(src, os.F_OK):
+          break
+      else:
+        missing_dep.append(program)
+    if len(missing_dep) != 0:
+      raise RuntimeError, 'Missing dependencies: %s' % repr(missing_dep)
   if target[:3] == "dls" :
     # generation of tc pxe image
     if 'a' in stage_list or 'p' in stage_list:




More information about the Erp5-report mailing list