[Ovirt-devel] [PATCH] Move building of PXE image into RPM build step

Perry Myers pmyers at redhat.com
Thu Jul 3 14:26:11 UTC 2008


Old ovirt-host-image rpm used to store a copy of the ISO and the
tftpboot directory.  This is redundant.  Source file for RPM is now
just the ISO and build step uses ovirt-pxe script to build the tftpboot
directory from the ISO

ovirt-pxe, ovirt-flash and ovirt-flash-static are now all part
of the ISO RPM so that users can easily deploy the ISO image onto
these media types.

Signed-off-by: Perry Myers <pmyers at redhat.com>
---
 ovirt-host-creator/.gitignore                      |    2 +-
 ovirt-host-creator/Makefile                        |    9 ++---
 ovirt-host-creator/{ovirt-cd.sh => ovirt-cd}       |   16 ++++------
 ovirt-host-creator/ovirt-common.sh                 |   16 ----------
 ovirt-host-creator/{ovirt-flash.sh => ovirt-flash} |   23 +++++----------
 .../{ovirt-flash-static.sh => ovirt-flash-static}  |   26 ++++++----------
 ovirt-host-creator/ovirt-host-image.spec           |   30 +++++++++++++++----
 ovirt-host-creator/{ovirt-pxe.sh => ovirt-pxe}     |   20 ++++--------
 8 files changed, 59 insertions(+), 83 deletions(-)
 rename ovirt-host-creator/{ovirt-cd.sh => ovirt-cd} (82%)
 delete mode 100644 ovirt-host-creator/ovirt-common.sh
 rename ovirt-host-creator/{ovirt-flash.sh => ovirt-flash} (77%)
 rename ovirt-host-creator/{ovirt-flash-static.sh => ovirt-flash-static} (83%)
 rename ovirt-host-creator/{ovirt-pxe.sh => ovirt-pxe} (79%)

diff --git a/ovirt-host-creator/.gitignore b/ovirt-host-creator/.gitignore
index 455b5f7..dee1a01 100644
--- a/ovirt-host-creator/.gitignore
+++ b/ovirt-host-creator/.gitignore
@@ -2,5 +2,5 @@ iso-file
 *.iso
 tftpboot
 rpm-build
-ovirt-pxe.log
+ovirt-cd.log
 repos.ks
diff --git a/ovirt-host-creator/Makefile b/ovirt-host-creator/Makefile
index 6f862f3..6ebdfbd 100644
--- a/ovirt-host-creator/Makefile
+++ b/ovirt-host-creator/Makefile
@@ -4,22 +4,21 @@ all: rpms
 include ../common/release.mk
 
 clean:
-	rm -rf ovirt-host-image-* ovirt-pxe.log
+	rm -rf ovirt-host-image-* ovirt-cd.log
 
 distclean: clean
-	rm -rf *.iso tftpboot repos.ks rpm-build iso-file
+	rm -rf *.iso repos.ks rpm-build iso-file
 
 repos.ks: repos.ks.in
 	sed "s/@@ARCH@@/$(ARCH)/" repos.ks.in > repos.ks
 
 build: ovirt.ks common-install.ks common-pkgs.ks common-post.ks repos.ks
-	rm -rf tftpboot/
-	./ovirt-pxe.sh > ovirt-pxe.log 2>&1
+	./ovirt-cd > ovirt-cd.log 2>&1
 
 tar: clean build
 	mv $$(cat iso-file) ovirt.iso
 	mkdir -p $(NV)
-	cp -a ovirt-host-image.spec ovirt.iso tftpboot/* $(NV)
+	cp -a ovirt-host-image.spec ovirt-pxe ovirt-flash ovirt-flash-static ovirt.iso $(NV)
 	mkdir -p rpm-build
 	tar zcvf rpm-build/$(NV).tar $(NV)
 	cp version rpm-build/
diff --git a/ovirt-host-creator/ovirt-cd.sh b/ovirt-host-creator/ovirt-cd
similarity index 82%
rename from ovirt-host-creator/ovirt-cd.sh
rename to ovirt-host-creator/ovirt-cd
index a4e4cff..5678f14 100755
--- a/ovirt-host-creator/ovirt-cd.sh
+++ b/ovirt-host-creator/ovirt-cd
@@ -17,15 +17,11 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-. ./ovirt-common.sh
+PATH=/sbin:/bin:/usr/bin
 
-if [ $# -eq 0 ]; then
-    ISO=
-elif [ $# -eq 1 ]; then
-    ISO=$1
-else
-    echo "Usage: ovirt-cd.sh [iso-image]"
-    exit 1
-fi
+KICKSTART=ovirt.ks
 
-ISO=`create_iso $ISO`
+LABEL=ovirt-`date +%Y%m%d%H%M`
+livecd-creator --skip-minimize -c $KICKSTART -f $LABEL 1>&2 &&
+
+echo $LABEL.iso > iso-file
diff --git a/ovirt-host-creator/ovirt-common.sh b/ovirt-host-creator/ovirt-common.sh
deleted file mode 100644
index 62d2e93..0000000
--- a/ovirt-host-creator/ovirt-common.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-PATH=/sbin:/bin:/usr/bin
-export PATH
-
-create_iso() {
-    KICKSTART=ovirt.ks
-    if [ $# -eq 0 ]; then
-        LABEL=ovirt-`date +%Y%m%d%H%M`
-        livecd-creator --skip-minimize -c $KICKSTART -f $LABEL 1>&2 &&
-        echo $LABEL.iso
-    elif [ $# -eq 1 ]; then
-        livecd-creator --skip-minimize -c $KICKSTART -b $1 1>&2 &&
-        echo $1
-    else
-        return 1
-    fi
-}
diff --git a/ovirt-host-creator/ovirt-flash.sh b/ovirt-host-creator/ovirt-flash
similarity index 77%
rename from ovirt-host-creator/ovirt-flash.sh
rename to ovirt-host-creator/ovirt-flash
index 621972c..bb5b9be 100755
--- a/ovirt-host-creator/ovirt-flash.sh
+++ b/ovirt-host-creator/ovirt-flash
@@ -17,25 +17,18 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-. ./ovirt-common.sh
+ME=$(basename "$0")
+warn() { printf "$ME: $@\n" >&2; }
+die() { warn "$@"; exit 1; }
 
-if [ $# -eq 1 ]; then
-    ISO=
-elif [ $# -eq 2 ]; then
-    ISO=$2
-else
-    echo "Usage: ovirt-flash.sh <usbdevice> [iso-image]"
-    exit 1
-fi
+test $# != 2 && die "Usage: $ME <usbdevice> <iso-image>"
 
 USBDEVICE=$1
+ISO=$2
 
-if [ ! -b "$USBDEVICE" ]; then
-    echo "USB device $USBDEVICE doesn't seem to exist"
-    exit 2
-fi
-
-ISO=`create_iso $ISO` || exit 1
+test ! -r $ISO && die "$ISO is not a readable file"
+test ! -b $USBDEVICE && die "$USBDEVICE is not a valid block device"
+test $( id -u ) -ne 0 && die "$ME must run as root"
 
 # clear out the old partition table
 dd if=/dev/zero of=$USBDEVICE bs=4096 count=1
diff --git a/ovirt-host-creator/ovirt-flash-static.sh b/ovirt-host-creator/ovirt-flash-static
similarity index 83%
rename from ovirt-host-creator/ovirt-flash-static.sh
rename to ovirt-host-creator/ovirt-flash-static
index 12e3d14..be9c7c9 100755
--- a/ovirt-host-creator/ovirt-flash-static.sh
+++ b/ovirt-host-creator/ovirt-flash-static
@@ -17,29 +17,23 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-. ./ovirt-common.sh
+ME=$(basename "$0")
+warn() { printf "$ME: $@\n" >&2; }
+die() { warn "$@"; exit 1; }
 
-if [ $# -eq 1 ]; then
-    ISO=
-elif [ $# -eq 2 ]; then
-    ISO=$2
-else
-    echo "Usage: ovirt-flash.sh <usbdevice> [iso-image]"
-    exit 1
-fi
+test $# != 2 && die "Usage: $ME <usbdevice> <iso-image>"
 
 USBDEVICE=$1
+ISO=$2
+
+test ! -r $ISO && die "$ISO is not a readable file"
+test ! -b $USBDEVICE && die "$USBDEVICE is not a valid block device"
+test $( id -u ) -ne 0 && die "$ME must run as root"
+
 IMGTMP=/var/tmp/ovirt-$$
 SQUASHTMP=/var/tmp/ovirt-squash-$$
 USBTMP=/var/tmp/ovirt-usb-$$
 
-if [ ! -b "$USBDEVICE" ]; then
-    echo "USB device $USBDEVICE doesn't seem to exist"
-    exit 2
-fi
-
-ISO=`create_iso $ISO` || exit 1
-
 # do setup
 mkdir -p $IMGTMP $SQUASHTMP $USBTMP
 mount -o loop $ISO $IMGTMP
diff --git a/ovirt-host-creator/ovirt-host-image.spec b/ovirt-host-creator/ovirt-host-image.spec
index 91ca6af..0475cab 100644
--- a/ovirt-host-creator/ovirt-host-image.spec
+++ b/ovirt-host-creator/ovirt-host-image.spec
@@ -8,6 +8,8 @@ License: Fedora
 Group: Applications/System
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
 URL: http://ovirt.org/
+Requires: livecd-tools >= 017
+Requires: syslinux
 
 %define app_root %{_datadir}/%{name}
 %define tftpboot %{_var}/lib/tftpboot
@@ -22,15 +24,16 @@ At the moment, this RPM just packages prebuilt ISO.
 %package pxe
 Summary: oVirt Managed Node boot PXE image
 Group: Applications/System
+BuildRequires: livecd-tools >= 017
 
 %description pxe
 The PXE boot image for oVirt Managed Node network boot from oVirt Admin Node.
-At the moment, this RPM just packages prebuilt tftpboot folder.
 
 %prep
 %setup -q
 
 %build
+./ovirt-pxe ovirt.iso
 
 %install
 %{__rm} -rf %{buildroot}
@@ -38,27 +41,40 @@ mkdir %{buildroot}
 
 %{__install} -d -m0755 %{buildroot}%{tftpboot}
 %{__install} -d -m0755 %{buildroot}%{tftpboot}/pxelinux.cfg
-%{__install} -p -m0644 pxelinux.cfg/default %{buildroot}%{tftpboot}/pxelinux.cfg/default
-%{__install} -p -m0644 pxelinux.0 %{buildroot}%{tftpboot}
-%{__install} -p -m0644 initrd0.img %{buildroot}%{tftpboot}
-%{__install} -p -m0644 vmlinuz0 %{buildroot}%{tftpboot}
+%{__install} -p -m0644 tftpboot/pxelinux.cfg/default %{buildroot}%{tftpboot}/pxelinux.cfg/default
+%{__install} -p -m0644 tftpboot/pxelinux.0 %{buildroot}%{tftpboot}
+%{__install} -p -m0644 tftpboot/initrd0.img %{buildroot}%{tftpboot}
+%{__install} -p -m0644 tftpboot/vmlinuz0 %{buildroot}%{tftpboot}
 %{__install} -d -m0755 %{buildroot}%{app_root}
 %{__install} -p -m0644 ovirt.iso %{buildroot}%{app_root}
+%{__install} -d -m0755 %{buildroot}%{_sbindir}
+%{__install} -p -m0755 ovirt-pxe %{buildroot}%{_sbindir}
+%{__install} -p -m0755 ovirt-flash %{buildroot}%{_sbindir}
+%{__install} -p -m0755 ovirt-flash-static %{buildroot}%{_sbindir}
 
 %clean
 %{__rm} -rf %{buildroot}
 
 %files
-%defattr(-,root,root)
+%defattr(-,root,root,0644)
 %{app_root}/ovirt.iso
+%defattr(-,root,root,0755)
+%{_sbindir}/ovirt-pxe
+%{_sbindir}/ovirt-flash
+%{_sbindir}/ovirt-flash-static
 
 %files pxe
-%defattr(-,root,root)
+%defattr(-,root,root,0644)
 %config(noreplace) %{tftpboot}/pxelinux.cfg/default
 %{tftpboot}/pxelinux.0
 %{tftpboot}/initrd0.img
 %{tftpboot}/vmlinuz0
 
 %changelog
+* Thu Jul 03 2008 Perry Myers <pmyers at redhat.com> 0.92-0
+- Only store ISO in SRPM, and generate PXE from that during build
+
 * Tue Jun 03 2008 Alan Pevec <apevec at redhat.com>  0.0.5-1
 - Initial build.
+
+
diff --git a/ovirt-host-creator/ovirt-pxe.sh b/ovirt-host-creator/ovirt-pxe
similarity index 79%
rename from ovirt-host-creator/ovirt-pxe.sh
rename to ovirt-host-creator/ovirt-pxe
index 624ac78..facca5b 100755
--- a/ovirt-host-creator/ovirt-pxe.sh
+++ b/ovirt-host-creator/ovirt-pxe
@@ -17,24 +17,18 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-. ./ovirt-common.sh
+ME=$(basename "$0")
+warn() { printf "$ME: $@\n" >&2; }
+die() { warn "$@"; exit 1; }
 
-if [ $# -eq 0 ]; then
-    ISO=
-elif [ $# -eq 1 ]; then
-    ISO=$1
-else
-    echo "Usage: ovirt-pxe.sh [iso-image]"
-    exit 1
-fi
+test $# != 1 && die "Usage: $ME <iso-image>"
 
-rm -f iso-file
-ISO=`create_iso $ISO` || exit 1
+ISO=$1
+test ! -r $ISO && die "$ISO is not a readable file"
+test $( id -u ) -ne 0 && die "$ME must run as root"
 
 livecd-iso-to-pxeboot $ISO
 
 # append BOOTIF with PXE MAC info
 f=tftpboot/pxelinux.cfg/default
 grep -q 'IPAPPEND 2' $f || sed -i '/KERNEL/a \\tIPAPPEND 2' $f
-
-echo $ISO > iso-file
-- 
1.5.5.1




More information about the ovirt-devel mailing list