[Ovirt-devel] [PATCH appliance] Move appliance creation out of spec file to Makefile

Perry Myers pmyers at redhat.com
Sun Nov 9 07:49:12 UTC 2008


The appliance-creator RPM is now just used to store the
create-ovirt-appliance script and contains dependencies for
installing and running the appliance.

The appliance is also modified to be packaged in zip format.
Qcow2 format for the disks is used until appliance-tools support
tar.

Signed-off-by: Perry Myers <pmyers at redhat.com>
---
 Makefile.am             |  105 ++++++++++++++++++++++++++++++++++++++++-------
 ovirt-appliance.spec.in |   70 ++-----------------------------
 2 files changed, 95 insertions(+), 80 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index b464da0..61df672 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,16 +16,28 @@
 # also available at http://www.gnu.org/copyleft/gpl.html.
 
 OVIRT_CACHE_DIR	?= $(HOME)/ovirt-cache
+OVIRT_LOCAL_REPO	?= file://$(OVIRT_CACHE_DIR)/ovirt
+OVIRT_URL		?= http://ovirt.org/repos/ovirt
+THINCRUST_URL	?= http://thincrust.org/repo
+PKG_FMT			= zip
+DISK_FMT		?= qcow2
+
+FEDORA			= $(shell rpm --eval '%{fedora}')
+ARCH			= $(shell rpm --eval '%{_arch}')
+
+NVR				= $(PACKAGE)-$(VERSION)-$(ARCH)
 
 EXTRA_DIST =				\
   .gitignore				\
-  create-ovirt-appliance	\
+  create-$(PACKAGE)			\
   gettree.sh				\
-  ovirt-appliance.ks		\
-  ovirt-appliance.spec		\
-  ovirt-appliance.spec.in
+  $(PACKAGE).ks				\
+  $(PACKAGE).spec			\
+  $(PACKAGE).spec.in
 
-DISTCLEANFILES = $(PACKAGE)-$(VERSION).tar.gz
+DISTCLEANFILES = $(PACKAGE)-$(VERSION).tar.gz \
+  $(NVR).$(PKG_FMT) \
+  $(NVR).$(PKG_FMT).md5sum
 
 # For Release: 0..., set _ovirt_dev=1 so that we get extra_release.GIT-
 # annotated rpm version strings.
@@ -38,15 +50,78 @@ GIT_RELEASE	= $$(date --utc +%Y%m%d%H%M%S)git$(git_head)
 RPMDIR		= $$(rpm --eval '%{_rpmdir}')
 RPM_FLAGS	= --define "ovirt_cache_dir $(OVIRT_CACHE_DIR)"
 RPM_FLAGS	+= $(if $(_ovirt_dev),--define "extra_release .$(GIT_RELEASE)")
-# FEDORA_URL env var can be set to the root of a fedora mirror
-RPM_FLAGS	+= $(if $(FEDORA_URL),--define "fedora_url $(FEDORA_URL)")
-# OVIRT_URL env var can be set to the root of an ovirt.org mirror
-RPM_FLAGS	+= $(if $(OVIRT_URL),--define "ovirt_url $(OVIRT_URL)")
-# THINCRUST_URL env var can be set to the root of an thincrust.net mirror
-# FIXME: This is temporary until thincrust RPMS are in Fedora 9 Updates
-RPM_FLAGS	+= $(if $(THINCRUST_URL),--define "thincrust_url $(THINCRUST_URL)")
-
-rpms: dist
+
+FEDORA_MIRROR	= http://mirrors.fedoraproject.org/mirrorlist
+FEDORA_URL_DEF	= http://download.fedoraproject.org/pub/fedora/linux
+CUR_RAWHIDE		= 10
+
+repos.ks:
+	( \
+	    if [ 0$(FEDORA) == 0$(CUR_RAWHIDE) ]; then \
+	        FEDORA_REPO=rawhide ;\
+	        FEDORA_REPO_LOC="$(if $(FEDORA_URL),--baseurl=$(FEDORA_URL)/development/$(ARCH)/os,--mirrorlist=$(FEDORA_MIRROR)?repo=rawhide&arch=$(ARCH))" ;\
+	        OVIRT_DISTRO=development ;\
+	    else \
+	        FEDORA_REPO=f$(FEDORA) ;\
+	        FEDORA_REPO_LOC="$(if $(FEDORA_URL),--baseurl=$(FEDORA_URL)/releases/$(FEDORA)/Everything/$(ARCH)/os,--mirrorlist=$(FEDORA_MIRROR)?repo=fedora-$(FEDORA)&arch=$(ARCH))" ;\
+	        OVIRT_DISTRO=$(FEDORA) ;\
+	        UPDATE_REPO_LINE="repo --name=$${FEDORA_REPO}-updates-newkey $(if $(FEDORA_URL),--baseurl=$(FEDORA_URL)/updates/$(FEDORA)/$(ARCH).newkey,--mirrorlist=$(FEDORA_MIRROR)?repo=updates-released-f$(FEDORA).newkey&arch=$(ARCH))" ;\
+	    fi ;\
+	    echo "repo --name=$${FEDORA_REPO} $${FEDORA_REPO_LOC}" > $@ ;\
+	    echo "repo --name=ovirt-org --baseurl=$(OVIRT_URL)/$${OVIRT_DISTRO}/$(ARCH)" >> $@ ;\
+	    echo "repo --name=thincrust-org --baseurl=$(THINCRUST_URL)/noarch" >> $@ ;\
+	    echo "$${UPDATE_REPO_LINE}" >> $@ ;\
+	    echo "repo --name=ovirt-local --baseurl=$(OVIRT_LOCAL_REPO)" >> $@ \
+	)
+
+SELINUX_ENFORCING=$(shell /usr/sbin/getenforce)
+$(NVR).$(PKG_FMT): repos.ks
+	mkdir -p $(OVIRT_CACHE_DIR)/$(PACKAGE)-tmp/tree
+	mkdir -p $(OVIRT_CACHE_DIR)/yum
+	( \
+	    case $(SELINUX_ENFORCING) in \
+	        Enforcing) sudo /usr/sbin/setenforce Permissive ;; \
+	        Permissive) ;; \
+	        *) if ksflatten $(PACKAGE).ks 2>/dev/null \
+	               | grep -q '^selinux --disabled'; then \
+	               echo WARNING: SELinux disabled in kickstart ;\
+	           else \
+	               echo ERROR: SELinux enabled in kickstart, \
+	                   but disabled on the build machine ;\
+	               exit 1 ;\
+	           fi ;; \
+	    esac ;\
+	    if [ 0$(FEDORA) == 0$(CUR_RAWHIDE) ]; then \
+	        FEDORA_TREE_URL="$(if $(FEDORA_URL),$(FEDORA_URL)/development/$(ARCH)/os,$(FEDORA_URL_DEF)/development/$(ARCH)/os)" ;\
+	    else \
+	        FEDORA_TREE_URL="$(if $(FEDORA_URL),$(FEDORA_URL)/releases/$(FEDORA)/Fedora/$(ARCH)/os,$(FEDORA_URL_DEF)/releases/$(FEDORA)/Fedora/$(ARCH)/os)" ;\
+	    fi ;\
+	    ./gettree.sh $${FEDORA_TREE_URL} $(OVIRT_CACHE_DIR)/$(PACKAGE)-tmp/tree ;\
+	)
+
+	ln -s $(OVIRT_CACHE_DIR)/$(PACKAGE)-tmp tmp
+	sudo -E appliance-creator --config $(PACKAGE).ks \
+	    --name $(PACKAGE) -f $(DISK_FMT) -p $(PKG_FMT) -d -v \
+	    --tmpdir='$(OVIRT_CACHE_DIR)/$(PACKAGE)-tmp' \
+	    --cache='$(OVIRT_CACHE_DIR)/yum' \
+	    --vmem=768
+	sudo chown $${USER} $(PACKAGE).$(PKG_FMT)
+	( \
+	    if [ $(SELINUX_ENFORCING) = Enforcing ]; then \
+	        sudo /usr/sbin/setenforce Enforcing || exit 1 ;\
+	    fi \
+	)
+
+	mv $(PACKAGE).$(PKG_FMT) $(NVR).$(PKG_FMT)
+	zip -u $(NVR).$(PKG_FMT) create-$(PACKAGE) create-ovirt-nodes \
+	  create-ovirt-network $(PACKAGE)-functions get-$(PACKAGE)
+
+$(NVR).$(PKG_FMT).md5sum: $(NVR).$(PKG_FMT)
+	md5sum $(NVR).$(PKG_FMT) > $(NVR).$(PKG_FMT).md5sum
+
+appliance: $(NVR).$(PKG_FMT).md5sum
+
+rpms: dist appliance
 	rpmbuild $(RPM_FLAGS) -ta $(distdir).tar.gz
 
 publish: rpms
@@ -55,4 +130,4 @@ publish: rpms
 	rsync -aq $(shell rpm --eval '%{_srcrpmdir}')/ $(OVIRT_CACHE_DIR)/ovirt/src/
 	createrepo $(OVIRT_CACHE_DIR)/ovirt
 
-.PHONY: rpms publish
+.PHONY: rpms publish $(NVR).$(PKG_FMT).md5sum $(NVR).$(PKG_FMT)
diff --git a/ovirt-appliance.spec.in b/ovirt-appliance.spec.in
index fdf942f..df02a85 100644
--- a/ovirt-appliance.spec.in
+++ b/ovirt-appliance.spec.in
@@ -1,12 +1,3 @@
-%{!?ovirt_cache_dir: %define ovirt_cache_dir /var/tmp/ovirt-cache}
-%{!?ovirt_local_repo: %define ovirt_local_repo file://%{ovirt_cache_dir}/ovirt}
-%{!?ovirt_url: %define ovirt_url http://ovirt.org/repos/ovirt}
-%{!?thincrust_url: %define thincrust_url http://www.thincrust.net/repo}
-%{?fedora_url: %define fedora_tree_url %{fedora_url}/releases/%{fedora}/Fedora/%{_arch}/os}
-%{!?fedora_tree_url: %define fedora_tree_url http://download.fedoraproject.org/pub/fedora/linux/releases/%{fedora}/Fedora/%{_arch}/os}
-%{!?bad_pkgs: %define bad_pkgs ""}
-%define fedora_mirror http://mirrors.fedoraproject.org/mirrorlist
-
 Summary: oVirt Appliance
 Name: ovirt-appliance
 Version: @VERSION@
@@ -15,12 +6,8 @@ Source0: %{name}-%{version}.tar.gz
 License: GPLv2+
 Group: Applications/System
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+BuildArch: noarch
 URL: http://ovirt.org/
-BuildRequires: appliance-tools appliance-os
-BuildRequires: livecd-tools >= 017
-BuildRequires: syslinux
-BuildRequires: qemu-img
-BuildRequires: wget
 # FIXME: libvirt and kvm require ovirt specific patches presently due to
 # the fact that migration has not been fixed upstream.  Once upstream migration
 # is fixed, these Requires should be fixed.
@@ -35,59 +22,12 @@ Requires: augeas
 %define debug_package %{nil}
 
 %description
-The oVirt Appliance image and scripts to install on a Fedora Host
+The oVirt Appliance scripts to install on a Fedora Host
 
 %prep
 %setup -q
 
 %build
-%if 0%{?fedora} == 010
- # XXX current rawhide
- %if "%{?fedora_url}" == ""
-cat > repos.ks << EOF
-repo --name=rawhide --mirrorlist=%{fedora_mirror}?repo=rawhide&arch=%{_arch}
-EOF
- %else
-cat > repos.ks << EOF
-repo --name=rawhide --baseurl=%{fedora_url}/development/%{_arch}/os
-EOF
- %endif
-cat >> repos.ks << EOF
-repo --name=ovirt-org --baseurl=%{ovirt_url}/development/%{_arch}
-EOF
-%else
- %if "%{?fedora_url}" == ""
-cat > repos.ks << EOF
-repo --name=f%{fedora} --mirrorlist=%{fedora_mirror}?repo=fedora-%{fedora}&arch=%{_arch}
-repo --name=f%{fedora}-updates-newkey --mirrorlist=%{fedora_mirror}?repo=updates-released-f%{fedora}.newkey&arch=%{_arch} --excludepkgs=%{bad_pkgs}
-EOF
- %else
-cat > repos.ks << EOF
-repo --name=f%{fedora} --baseurl=%{fedora_url}/releases/%{fedora}/Everything/%{_arch}/os
-repo --name=f%{fedora}-updates-newkey --baseurl=%{fedora_url}/updates/%{fedora}/%{_arch}.newkey --excludepkgs=%{bad_pkgs}
-EOF
- %endif
-cat >> repos.ks << EOF
-repo --name=ovirt-org --baseurl=%{ovirt_url}/%{fedora}/%{_arch}
-EOF
-%endif
-
-cat >> repos.ks << EOF
-repo --name=ovirt-local --baseurl=%{ovirt_local_repo}
-repo --name=thincrust-org --baseurl=%{thincrust_url}/noarch
-
-EOF
-
-mkdir -p %{ovirt_cache_dir}/appliance-tmp/tree
-mkdir -p %{ovirt_cache_dir}/yum
-./gettree.sh %{fedora_tree_url} %{ovirt_cache_dir}/appliance-tmp/tree
-ln -s %{ovirt_cache_dir}/appliance-tmp tmp
-sudo su - -c "cd $(pwd) && appliance-creator --config ovirt-appliance.ks \
-                  --name %{name} -f qcow2 -d -v \
-                  --tmpdir='%{ovirt_cache_dir}/appliance-tmp' \
-                  --cache='%{ovirt_cache_dir}/yum'"
-sudo su - -c "cd $(pwd) && chown -R $USER ."
-mv %{name}-sda.qcow2 %{name}.img
 
 %install
 %{__rm} -rf %{buildroot}
@@ -95,8 +35,6 @@ mkdir %{buildroot}
 
 %{__install} -d -m0755 %{buildroot}%{app_root}
 %{__install} -p -m0644 COPYING %{buildroot}%{app_root}
-%{__install} -d -m0755 %{buildroot}%{_localstatedir}/lib/libvirt/images
-%{__install} -p -m0644 %{name}.img %{buildroot}%{_localstatedir}/lib/libvirt/images
 %{__install} -d -m0755 %{buildroot}%{_sbindir}
 %{__install} -p -m0755 create-%{name} %{buildroot}%{_sbindir}
 
@@ -106,11 +44,13 @@ mkdir %{buildroot}
 %files
 %defattr(-,root,root,0644)
 %{app_root}/COPYING
-%{_localstatedir}/lib/libvirt/images/%{name}.img
 %defattr(-,root,root,0755)
 %{_sbindir}/create-%{name}
 
 %changelog
+* Wed Nov 05 2008 Perry Myers <pmyers at redhat.com> 0.96
+- Removed appliance building from rpm.  RPM now just contains tools to
+  download image and install it
 * Sun Sep 14 2008 Perry Myers <pmyers at redhat.com> 0.92-1
 - Added Requires on libvirt/kvm
 * Fri Sep 05 2008 Perry Myers <pmyers at redhat.com> 0.92-1
-- 
1.6.0.3




More information about the ovirt-devel mailing list