Add --iso-only option to --make-iso
This option removes all the extra build artifacts from --make-iso, leaving only the boot.iso It also supports naming of the final iso with --image-name
This commit is contained in:
parent
33d008d9f2
commit
059e40a64b
@ -5,7 +5,7 @@ livemedia-creator \- Create live install media
|
|||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
livemedia-creator [-h]
|
livemedia-creator [-h]
|
||||||
(--make-iso | --make-disk | --make-fsimage | --make-appliance | --make-ami | --make-tar | --make-pxe-live | --make-ostree-live)
|
(--make-iso | --make-disk | --make-fsimage | --make-appliance | --make-ami | --make-tar | --make-pxe-live | --make-ostree-live)
|
||||||
[--iso ISO] [--disk-image DISK_IMAGE]
|
[--iso ISO] [--iso-only] [--disk-image DISK_IMAGE]
|
||||||
[--fs-image FS_IMAGE] [--ks KS]
|
[--fs-image FS_IMAGE] [--ks KS]
|
||||||
[--image-name IMAGE_NAME] [--image-only]
|
[--image-name IMAGE_NAME] [--image-only]
|
||||||
[--fs-label FS_LABEL]
|
[--fs-label FS_LABEL]
|
||||||
@ -85,6 +85,10 @@ Build a live pxe boot squashfs image of Atomic Host
|
|||||||
\fB\-\-iso ISO\fR
|
\fB\-\-iso ISO\fR
|
||||||
Anaconda installation .iso path to use for virt-install
|
Anaconda installation .iso path to use for virt-install
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\fB\-\-iso-only\fR
|
||||||
|
Remove all iso creation artifacts except the boot.iso, combine with --image-name to rename the boot.iso
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-disk\-image DISK_IMAGE\fR
|
\fB\-\-disk\-image DISK_IMAGE\fR
|
||||||
Path to disk image to use for creating final image
|
Path to disk image to use for creating final image
|
||||||
|
@ -101,6 +101,12 @@ Currently the standard lorax templates are used to make a bootable iso, but
|
|||||||
it should be possible to modify them to output other results. They are
|
it should be possible to modify them to output other results. They are
|
||||||
written using the Mako template system which is very flexible.
|
written using the Mako template system which is very flexible.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The output from --make-iso includes the artifacts used to create the boot.iso;
|
||||||
|
the kernel, initrd, the squashfs filesystem, etc. If you only want the
|
||||||
|
boot.iso you can pass ``--iso-only`` and the other files will be removed. You
|
||||||
|
can also name the iso by using ``--image-name my-live.iso``.
|
||||||
|
|
||||||
|
|
||||||
Kickstarts
|
Kickstarts
|
||||||
----------
|
----------
|
||||||
|
@ -1052,6 +1052,9 @@ def main():
|
|||||||
|
|
||||||
parser.add_argument("--iso", type=os.path.abspath,
|
parser.add_argument("--iso", type=os.path.abspath,
|
||||||
help="Anaconda installation .iso path to use for virt-install")
|
help="Anaconda installation .iso path to use for virt-install")
|
||||||
|
parser.add_argument("--iso-only", action="store_true",
|
||||||
|
help="Remove all iso creation artifacts except the boot.iso, "
|
||||||
|
"combine with --image-name to rename the boot.iso")
|
||||||
parser.add_argument("--ks", action="append", type=os.path.abspath,
|
parser.add_argument("--ks", action="append", type=os.path.abspath,
|
||||||
help="Kickstart file defining the install.")
|
help="Kickstart file defining the install.")
|
||||||
parser.add_argument("--image-only", action="store_true",
|
parser.add_argument("--image-only", action="store_true",
|
||||||
@ -1074,7 +1077,8 @@ def main():
|
|||||||
|
|
||||||
parser.add_argument("--logfile", default="./livemedia.log",
|
parser.add_argument("--logfile", default="./livemedia.log",
|
||||||
type=os.path.abspath,
|
type=os.path.abspath,
|
||||||
help="Path to logfile")
|
help="Name and path for primary logfile, other logs will "
|
||||||
|
"be created in the same directory.")
|
||||||
parser.add_argument("--lorax-templates", default="/usr/share/lorax/",
|
parser.add_argument("--lorax-templates", default="/usr/share/lorax/",
|
||||||
type=os.path.abspath,
|
type=os.path.abspath,
|
||||||
help="Path to mako templates for lorax")
|
help="Path to mako templates for lorax")
|
||||||
@ -1205,6 +1209,10 @@ def main():
|
|||||||
errors.append("The results_dir (%s) should not exist, please delete or "
|
errors.append("The results_dir (%s) should not exist, please delete or "
|
||||||
"move its contents" % opts.result_dir)
|
"move its contents" % opts.result_dir)
|
||||||
|
|
||||||
|
# Default to putting results under tmp
|
||||||
|
if not opts.result_dir:
|
||||||
|
opts.result_dir = opts.tmp
|
||||||
|
|
||||||
if opts.iso and not os.path.exists(opts.iso):
|
if opts.iso and not os.path.exists(opts.iso):
|
||||||
errors.append("The iso %s is missing." % opts.iso)
|
errors.append("The iso %s is missing." % opts.iso)
|
||||||
|
|
||||||
@ -1285,10 +1293,7 @@ def main():
|
|||||||
list(log.error(e) for e in errors)
|
list(log.error(e) for e in errors)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Default to putting results under tmp
|
if not os.path.exists(opts.result_dir):
|
||||||
if not opts.result_dir:
|
|
||||||
opts.result_dir = opts.tmp
|
|
||||||
else:
|
|
||||||
os.makedirs(opts.result_dir)
|
os.makedirs(opts.result_dir)
|
||||||
|
|
||||||
# AMI image is just a fsimage with an AMI label
|
# AMI image is just a fsimage with an AMI label
|
||||||
@ -1390,6 +1395,18 @@ def main():
|
|||||||
make_runtime(opts, img_mount.mount_dir, work_dir)
|
make_runtime(opts, img_mount.mount_dir, work_dir)
|
||||||
result_dir = make_livecd(opts, img_mount.mount_dir, work_dir)
|
result_dir = make_livecd(opts, img_mount.mount_dir, work_dir)
|
||||||
|
|
||||||
|
# --iso-only removes the extra build artifacts, keeping only the boot.iso
|
||||||
|
if opts.iso_only and result_dir:
|
||||||
|
boot_iso = joinpaths(result_dir, "images/boot.iso")
|
||||||
|
if not os.path.exists(boot_iso):
|
||||||
|
log.error("%s is missing, skipping --iso-only.", boot_iso)
|
||||||
|
else:
|
||||||
|
iso_dir = tempfile.mkdtemp(prefix="lmc-result-")
|
||||||
|
dest_file = joinpaths(iso_dir, opts.image_name or "boot.iso")
|
||||||
|
shutil.move(boot_iso, dest_file)
|
||||||
|
shutil.rmtree(result_dir)
|
||||||
|
result_dir = iso_dir
|
||||||
|
|
||||||
# cleanup the mess
|
# cleanup the mess
|
||||||
# cleanup work_dir?
|
# cleanup work_dir?
|
||||||
if disk_img and not (opts.keep_image or opts.disk_image or opts.fs_image):
|
if disk_img and not (opts.keep_image or opts.disk_image or opts.fs_image):
|
||||||
@ -1435,8 +1452,9 @@ def main():
|
|||||||
umount(mounted_sysroot_boot_dir)
|
umount(mounted_sysroot_boot_dir)
|
||||||
|
|
||||||
if opts.result_dir != opts.tmp and result_dir:
|
if opts.result_dir != opts.tmp and result_dir:
|
||||||
copytree(result_dir, opts.result_dir)
|
copytree(result_dir, opts.result_dir, preserve=False)
|
||||||
shutil.rmtree(result_dir)
|
shutil.rmtree(result_dir)
|
||||||
|
result_dir = None
|
||||||
|
|
||||||
log.info("SUMMARY")
|
log.info("SUMMARY")
|
||||||
log.info("-------")
|
log.info("-------")
|
||||||
@ -1445,7 +1463,7 @@ def main():
|
|||||||
log.info("Disk image is at %s", disk_img)
|
log.info("Disk image is at %s", disk_img)
|
||||||
if opts.make_appliance:
|
if opts.make_appliance:
|
||||||
log.info("Appliance description is in %s", opts.app_file)
|
log.info("Appliance description is in %s", opts.app_file)
|
||||||
log.info("Results are in %s", opts.result_dir)
|
log.info("Results are in %s", result_dir or opts.result_dir)
|
||||||
|
|
||||||
sys.exit( 0 )
|
sys.exit( 0 )
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user