# Makefile for virt-p2v # @configure_input@ # # Copyright (C) 2007-2008 Red Hat Inc. # Written by Richard W.M. Jones # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #---------------------------------------------------------------------- # General configuration PACKAGE := @PACKAGE_NAME@ VERSION := @PACKAGE_VERSION@ INSTALL := @INSTALL@ HAVE_PERLDOC := @HAVE_PERLDOC@ HAVE_QEMU := @HAVE_QEMU@ HAVE_QEMU_KVM := @HAVE_QEMU_KVM@ HAVE_LIVECD_CREATOR := @HAVE_LIVECD_CREATOR@ HAVE_LIVECD_ISO_TO_PXEBOOT := @HAVE_LIVECD_ISO_TO_PXEBOOT@ LABEL := $(PACKAGE)-$(VERSION) ISO := $(LABEL).iso PXE_TAR := $(PACKAGE)-$(VERSION)-pxeboot.tar VIRTP2V_RPM := $(PACKAGE)-$(VERSION)-1.noarch.rpm #---------------------------------------------------------------------- all: @echo "make rpm Build the virt-p2v RPM" @echo "make build Build the live CD ISO" @echo "make boot [HDA=hda.img] [HDB=hdb.img] [ISO=livecd.iso] [SERIAL=yes]" @echo " Boot built/named ISO (uses qemu)" @echo "make update Update an existing live CD ISO with new" @echo " virt-p2v script, without doing full rebuild" @echo "make pxe Build a PXE image (in tftpboot/ subdirectory)" @echo "make man Make man pages (needs POD)" # Build live CD. ifeq ($(HAVE_LIVECD_CREATOR),livecd-creator) build: checkroot checkrpm checkscript rm -f $(ISO) livecd-creator --config=p2v.ks --fslabel=$(LABEL) ls -lhtr *.iso endif # Build RPM of virt-p2v. rpm: checknotroot p2vrepo/$(VIRTP2V_RPM) RPM_FLAGS := --define "_topdir %(pwd)/rpmbuild" \ --define "_builddir %{_topdir}/BUILD" \ --define "_rpmdir %{_topdir}/RPMS" \ --define "_srcrpmdir %{_topdir}/SRPMS" \ --define "_specdir %{_topdir}/SPECS" \ --define "_sourcedir %(pwd)" p2vrepo/$(VIRTP2V_RPM): \ virt-p2v.spec \ virt-p2v virt-p2v-update-wrapper iso-attach \ inittab tty1 $(MAKE) dist rm -rf rpmbuild mkdir rpmbuild rpmbuild/{RPMS,BUILD,SRPMS,SPECS} rpmbuild/RPMS/noarch rpmbuild $(RPM_FLAGS) -ba $< mkdir -p p2vrepo cp rpmbuild/RPMS/noarch/$(VIRTP2V_RPM) p2vrepo createrepo p2vrepo # Run live CD under qemu. ifeq ($(HAVE_QEMU_KVM),qemu-kvm) QEMU := qemu-kvm else ifeq ($(HAVE_QEMU),qemu) QEMU := qemu endif endif ifneq ($(QEMU),) HDA := HDB := QEMU_ARGS := -m 512 -cdrom $(ISO) -boot d ifneq ($(HDA),) QEMU_ARGS += -hda $(HDA) endif ifneq ($(HDB),) QEMU_ARGS += -hdb $(HDB) endif SERIAL = none QEMU_ARGS += -serial $(SERIAL) boot: $(QEMU) $(QEMU_ARGS) endif # Update an existing ISO. update: checkroot checkscript -./iso-attach delete $(ISO) 2>/dev/null ./iso-attach add $(ISO) virt-p2v # PXE boot. ifeq ($(HAVE_LIVECD_ISO_TO_PXEBOOT),livecd-iso-to-pxeboot) pxe: checkroot checkscript livecd-iso-to-pxeboot $(ISO) endif # Check that we are root. checkroot: @if [ `id -u` -ne 0 ]; then \ echo "You must be root to perform this operation."; \ exit 1; \ fi # Check that we are not root. checknotroot: @if [ `id -u` -eq 0 ]; then \ echo "You must not perform this step as root."; \ exit 1; \ fi # Check that the script compiles. checkscript: test -x virt-p2v ./virt-p2v --test # Check that the RPM has been built. checkrpm: test -f p2vrepo/$(VIRTP2V_RPM) # Clean. clean: rm -f core *~ pod2htm* distclean: clean rm -rf autom4te.cache config.log config.status configure \ p2v.ks Makefile po/Makefile virt-p2v.spec reallyreallyclean: distclean rm -f virt-p2v-*.tar.gz virt-p2v-*.iso # Manifest. dist: $(MAKE) check-manifest rm -rf $(PACKAGE)-$(VERSION) mkdir $(PACKAGE)-$(VERSION) tar -cf - -T MANIFEST | tar -C $(PACKAGE)-$(VERSION) -xf - $(INSTALL) -m 0755 configure $(PACKAGE)-$(VERSION)/ tar zcf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) ls -l $(PACKAGE)-$(VERSION).tar.gz check-manifest: @hg manifest | sort > .check-manifest; \ sort MANIFEST > .orig-manifest; \ diff -u .orig-manifest .check-manifest; rv=$$?; \ rm -f .orig-manifest .check-manifest; \ exit $$rv # Manual page. ifeq ($(HAVE_PERLDOC),perldoc) MAN_SECTION := Virtualization Support man: virt-p2v.1 virt-p2v.1.txt virt-p2v.1.html virt-p2v.1: virt-p2v.pod pod2man -c "$(MAN_SECTION)" --release "$(PACKAGE)-$(VERSION)" $< > $@ virt-p2v.1.txt: virt-p2v.pod pod2text $< > $@ virt-p2v.1.html: virt-p2v.pod pod2html -css virt-p2v.1.css $< > $@ endif # Website. WEBSITE_DIR := ../redhat/et-website/virt-p2v website: man dist cp virt-p2v.1.html $(WEBSITE_DIR) cp virt-p2v.1.css $(WEBSITE_DIR) cp $(PACKAGE)-$(VERSION).tar.gz $(WEBSITE_DIR) # Upload everything. upload: upload_iso upload_pxe # Upload ISO. upload_iso: scp -l 300 $(ISO) et.redhat.com:public_html/tmp/ # Upload PXE image. upload_pxe: tar cf $(PXE_TAR) tftpboot scp -l 300 $(PXE_TAR) et.redhat.com:public_html/tmp/ # rm $(PXE_TAR) .PHONY: build boot checkroot