\r
if args.pack_to is not None:\r
configmgr.create['pack_to'] = args.pack_to\r
+ if args.cpio:\r
+ configmgr.create['cpio'] = args.cpio \r
\r
if args.copy_kernel:\r
configmgr.create['copy_kernel'] = args.copy_kernel\r
"extrarepos": {},
"ignore_ksrepo": False,
"strict_mode": False,
+ "cpio":False,
},
'chroot': {
"saveto": None,
self.pack_to = None
self.repourl = {}
self.multiple_partitions = False
+ self.cpio = False
# If the kernel is save to the destdir when copy_kernel cmd is called.
self._need_copy_kernel = False
pass
self._instloops.remove(item)
+ def create_cpio_image(self):
+ if self.cpio:
+ cpiomountdir = self._instroot + '/mnt/initrd'
+ if os.path.exists(cpiomountdir):
+ msger.info("Create image by cpio.")
+ imgfile = os.path.join(self._imgdir, 'ramdisk.img')
+ if imgfile:
+ os.remove(imgfile)
+ try:
+ cpiocmd = fs.find_binary_path('cpio')
+ if cpiocmd:
+ oldoutdir = os.getcwd()
+ os.chdir(cpiomountdir)
+ # find . | cpio --create --'format=newc' | gzip > ../ramdisk.img
+ runner.show('find . | cpio -o -H newc | gzip > %s' % imgfile)
+ shutil.rmtree(cpiomountdir, ignore_errors=True)
+ fs.makedirs(cpiomountdir)
+ os.chdir(oldoutdir)
+ except OSError, (errno, msg):
+ raise errors.KsError("Create image by cpio error: %s" % msg)
+ else:
+ msger.warning("Do not create image by cpio. There is no directory '/mnt/initrd'.")
+
def package(self, destdir = "."):
"""Prepares the created image for final delivery.
tz_source = "/usr/share/zoneinfo/%s" % (tz)
tz_dest = "/etc/localtime"
try:
- cpcmd = fs.find_binary_inchroot('ln', self.instroot)
- if cpcmd:
- self.call([cpcmd, "-s", tz_source, tz_dest])
+ lncmd = fs.find_binary_inchroot('ln', self.instroot)
+ if lncmd:
+ self.call([lncmd, "-s", tz_source, tz_dest])
else:
- cpcmd = fs.find_binary_path('ln')
- subprocess.call([cpcmd, "-s",
+ lncmd = fs.find_binary_path('ln')
+ subprocess.call([lncmd, "-s",
self.path(tz_source),
self.path(tz_dest)])
except (IOError, OSError), (errno, msg):
creator.configure(creatoropts["repomd"])
creator.copy_kernel()
+ if creatoropts['cpio']:
+ creator.create_cpio_image()
creator.unmount()
creator.package(creatoropts["destdir"])
creator.create_manifest()
creator.install()
creator.configure(creatoropts["repomd"])
creator.copy_kernel()
+ if creatoropts['cpio']:
+ creator.create_cpio_image()
creator.unmount()
creator.package(creatoropts["destdir"])
creator.create_manifest()
creator.install()
creator.configure(creatoropts["repomd"])
creator.copy_kernel()
+ if creatoropts['cpio']:
+ creator.create_cpio_image()
creator.unmount()
creator.package(creatoropts["destdir"])
creator.create_manifest()
creator.install()
creator.configure(creatoropts["repomd"])
creator.copy_kernel()
+ if creatoropts['cpio']:
+ creator.create_cpio_image()
creator.unmount()
creator.generate_bmap()
creator.package(creatoropts["destdir"])
help = "command which will be executed in chroot environment")
parser.set_defaults(alias="ch")
return parser
-
+
@subparser
def create_parser(parser):
"""create an image
"""
parent_parser = ArgumentParser(add_help=False)
- parent_parser.add_argument('ksfile', help='Path of ksfile');
+ parent_parser.add_argument('--cpio', action='store_true',
+ dest='cpio', default=False,
+ help='Use cpio to generate image')
+ parent_parser.add_argument('ksfile', help='Path of ksfile')
parent_parser.add_argument('--logfile', dest='logfile', default=None,
help='Path of logfile')
parent_parser.add_argument('-c', '--config', dest='config', default=None,
- help='Specify config file for mic')
+ help='Specify config file for mic')
parent_parser.add_argument('-k', '--cachedir', action='store',
dest='cachedir', default=None,
help='Cache directory to store the downloaded')
- parent_parser.add_argument('-o', '--outdir', action='store', dest='outdir',
+ parent_parser.add_argument('-o', '--outdir', action='store', dest='outdir',
default=None, help='Output directory')
parent_parser.add_argument('-A', '--arch', dest='arch', default=None,
help='Specify repo architecture')