[PATCH 2/2] Update templates to use installimg for product and updates

Brian C. Lane bcl at redhat.com
Wed Nov 5 03:23:32 UTC 2014


With these templates if a package has installed files in
/usr/share/lorax/product or /usr/share/lorax/updates/ they will be used
to create product.img and/or updates.img which will be included in the
images/ directory of the iso and of the final output tree.

These can be used to customize the installation environment or provide
updates. See README.product for current documentation.
---
 README.product      | 17 +++++++++++++++++
 lorax.spec          |  2 +-
 share/aarch64.tmpl  | 10 ++++++++++
 share/live/ppc.tmpl | 12 +++++++++++-
 share/live/x86.tmpl | 12 +++++++++++-
 share/ppc.tmpl      | 13 ++++++++++++-
 share/ppc64le.tmpl  | 14 ++++++++++++--
 share/x86.tmpl      | 12 +++++++++++-
 8 files changed, 85 insertions(+), 7 deletions(-)
 create mode 100644 README.product

diff --git a/README.product b/README.product
new file mode 100644
index 0000000..fde376c
--- /dev/null
+++ b/README.product
@@ -0,0 +1,17 @@
+Lorax now supports creation of product.img and updates.img as part of the build
+process.  This is implemented using the installimg command which will take the
+contents of a directory and create a compressed archive from it. The x86, ppc,
+ppc64le and aarch64 templates all look for /usr/share/lorax/product/ and
+/usr/share/lorax/updates/ directories while creating the final install tree. If
+there are files in those directories lorax will create images/product.img
+and/or images/updates.img
+
+These archives are just like an anaconda updates image -- they are copied over
+the top of the filesystem at boot time so that you can drop in files to add to
+or replace anything on the filesystem.
+
+For example, to add an installclass to Anaconda you would put a file in:
+
+/usr/lib64/python2.7/site-packages/pyanaconda/installclasses/custom.py
+
+
diff --git a/lorax.spec b/lorax.spec
index f0cc8f9..e291403 100644
--- a/lorax.spec
+++ b/lorax.spec
@@ -86,7 +86,7 @@ make DESTDIR=$RPM_BUILD_ROOT mandir=%{_mandir} install
 
 %files
 %defattr(-,root,root,-)
-%doc COPYING AUTHORS README.livemedia-creator
+%doc COPYING AUTHORS README.livemedia-creator README.product
 %doc docs/*ks
 %{python_sitelib}/pylorax
 %{python_sitelib}/*.egg-info
diff --git a/share/aarch64.tmpl b/share/aarch64.tmpl
index 66af43f..c073b10 100644
--- a/share/aarch64.tmpl
+++ b/share/aarch64.tmpl
@@ -4,6 +4,7 @@ configdir="tmp/config_files/aarch64"
 PXEBOOTDIR="images/pxeboot"
 KERNELDIR=PXEBOOTDIR
 LIVEDIR="LiveOS"
+LORAXDIR="usr/share/lorax/"
 %>
 
 mkdir ${LIVEDIR}
@@ -37,3 +38,12 @@ mkdir ${KERNELDIR}
     <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch=efiarch, isolabel=isolabel"/>
 %endif
 
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+    %if exists("%s/%s/" % (LORAXDIR, img)):
+        installimg ${LORAXDIR}/${img}/ images/${img}.img
+        <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+    %endif
+%endfor
+
diff --git a/share/live/ppc.tmpl b/share/live/ppc.tmpl
index 80c0383..af6373e 100644
--- a/share/live/ppc.tmpl
+++ b/share/live/ppc.tmpl
@@ -6,6 +6,7 @@ GRUBDIR="boot/grub"
 LIVEDIR="LiveOS"
 MACDIR=BOOTDIR+"/mac"
 NETBOOTDIR="images/netboot"
+LORAXDIR="usr/share/lorax/"
 
 WRAPPER="usr/sbin/wrapper"
 WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper"
@@ -80,6 +81,15 @@ install ${configdir}/magic ${BOOTDIR}
     %endif
 %endfor
 
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+    %if exists("%s/%s/" % (LORAXDIR, img)):
+        installimg ${LORAXDIR}/${img}/ images/${img}.img
+        <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+    %endif
+%endfor
+
 ## make boot.iso
 runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
         ${prepboot} -part -hfs -T -r -l -J \
@@ -91,7 +101,7 @@ runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
         ${BOOTDIR}=${outroot}/${BOOTDIR} \
         ${GRUBDIR}=${outroot}/${GRUBDIR} \
         ${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \
-        ${LIVEDIR}=${outroot}/${LIVEDIR}
+        ${LIVEDIR}=${outroot}/${LIVEDIR} ${imggraft}
 
 %for kernel in kernels:
     treeinfo images-${kernel.arch} boot.iso images/boot.iso
diff --git a/share/live/x86.tmpl b/share/live/x86.tmpl
index 3d5b2c5..f60b80d 100644
--- a/share/live/x86.tmpl
+++ b/share/live/x86.tmpl
@@ -6,6 +6,7 @@ PXEBOOTDIR="images/pxeboot"
 BOOTDIR="isolinux"
 KERNELDIR=PXEBOOTDIR
 LIVEDIR="LiveOS"
+LORAXDIR="usr/share/lorax/"
 
 ## Don't allow spaces or escape characters in the iso label
 def valid_label(ch):
@@ -73,6 +74,15 @@ hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
     <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch=efiarch, isolabel=isolabel"/>
 %endif
 
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+    %if exists("%s/%s/" % (LORAXDIR, img)):
+        installimg ${LORAXDIR}/${img}/ images/${img}.img
+        <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+    %endif
+%endfor
+
 ## make boot.iso
 runcmd mkisofs -o ${outroot}/images/boot.iso \
        -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
@@ -81,6 +91,6 @@ runcmd mkisofs -o ${outroot}/images/boot.iso \
        ${BOOTDIR}=${outroot}/${BOOTDIR} \
        ${KERNELDIR}=${outroot}/${KERNELDIR} \
        ${LIVEDIR}=${outroot}/${LIVEDIR} \
-       ${efigraft}
+       ${efigraft} ${imggraft}
 runcmd isohybrid ${efihybrid} ${outroot}/images/boot.iso
 treeinfo images-${basearch} boot.iso images/boot.iso
diff --git a/share/ppc.tmpl b/share/ppc.tmpl
index 6deb6e8..ddc368a 100644
--- a/share/ppc.tmpl
+++ b/share/ppc.tmpl
@@ -6,6 +6,7 @@ GRUBDIR="boot/grub"
 LIVEDIR="LiveOS"
 MACDIR=GRUBDIR+"/powerpc-ieee1275"
 NETBOOTDIR="images/netboot"
+LORAXDIR="usr/share/lorax/"
 
 WRAPPER="usr/sbin/wrapper"
 WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper"
@@ -88,6 +89,15 @@ install ${configdir}/magic ${BOOTDIR}
     %endif
 %endfor
 
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+    %if exists("%s/%s/" % (LORAXDIR, img)):
+        installimg ${LORAXDIR}/${img}/ images/${img}.img
+        <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+    %endif
+%endfor
+
 ## make boot.iso
 runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
         ${prepboot} -part -hfs -T -r -l -J \
@@ -99,7 +109,8 @@ runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
         ${BOOTDIR}=${outroot}/${BOOTDIR} \
         ${GRUBDIR}=${outroot}/${GRUBDIR} \
         ${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \
-        ${LIVEDIR}=${outroot}/${LIVEDIR}
+        ${LIVEDIR}=${outroot}/${LIVEDIR} ${imggraft}
+
 
 %for kernel in kernels:
     treeinfo images-${kernel.arch} boot.iso images/boot.iso
diff --git a/share/ppc64le.tmpl b/share/ppc64le.tmpl
index 8fa15b0..c161889 100644
--- a/share/ppc64le.tmpl
+++ b/share/ppc64le.tmpl
@@ -4,6 +4,7 @@ configdir="tmp/config_files/ppc"
 BOOTDIR="ppc"
 GRUBDIR="boot/grub"
 LIVEDIR="LiveOS"
+LORAXDIR="usr/share/lorax/"
 
 ## NOTE: yaboot freaks out and stops parsing its config if it sees a '\',
 ## so we can't use the udev escape sequences in the root arg.
@@ -63,8 +64,17 @@ install ${configdir}/magic ${BOOTDIR}
     treeinfo images-${kernel.arch} zimage
 %endfor
 
-## make boot.iso
 mkdir images/
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+    %if exists("%s/%s/" % (LORAXDIR, img)):
+        installimg ${LORAXDIR}/${img}/ images/${img}.img
+        <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+    %endif
+%endfor
+
+## make boot.iso
 runcmd mkisofs -v -U -J -R -T \
         -o ${outroot}/images/boot.iso \
         -part -hfs -r -l -sysid PPC \
@@ -75,7 +85,7 @@ runcmd mkisofs -v -U -J -R -T \
         -no-desktop -allow-multidot -graft-points \
         ${BOOTDIR}=${outroot}/${BOOTDIR} \
         ${GRUBDIR}=${outroot}/${GRUBDIR} \
-        ${LIVEDIR}=${outroot}/${LIVEDIR}
+        ${LIVEDIR}=${outroot}/${LIVEDIR} ${imggraft}
 
 %for kernel in kernels:
     treeinfo images-${kernel.arch} boot.iso images/boot.iso
diff --git a/share/x86.tmpl b/share/x86.tmpl
index 02117cd..145e209 100644
--- a/share/x86.tmpl
+++ b/share/x86.tmpl
@@ -6,6 +6,7 @@ PXEBOOTDIR="images/pxeboot"
 BOOTDIR="isolinux"
 KERNELDIR=PXEBOOTDIR
 LIVEDIR="LiveOS"
+LORAXDIR="usr/share/lorax/"
 
 ## Don't allow spaces or escape characters in the iso label
 def valid_label(ch):
@@ -87,6 +88,15 @@ hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
     <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch=efiarch, isolabel=isolabel"/>
 %endif
 
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+    %if exists("%s/%s/" % (LORAXDIR, img)):
+        installimg ${LORAXDIR}/${img}/ images/${img}.img
+        <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+    %endif
+%endfor
+
 ## make boot.iso
 runcmd mkisofs -o ${outroot}/images/boot.iso \
        -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
@@ -95,6 +105,6 @@ runcmd mkisofs -o ${outroot}/images/boot.iso \
        ${BOOTDIR}=${outroot}/${BOOTDIR} \
        ${KERNELDIR}=${outroot}/${KERNELDIR} \
        ${LIVEDIR}=${outroot}/${LIVEDIR} \
-       ${efigraft}
+       ${efigraft} ${imggraft}
 runcmd isohybrid ${efihybrid} ${outroot}/images/boot.iso
 treeinfo images-${basearch} boot.iso images/boot.iso
-- 
1.9.3



More information about the anaconda-patches mailing list