gunnar: server/php-kolab/Kolab_Format Makefile,1.6,1.6.2.1

cvs at kolab.org cvs at kolab.org
Thu Apr 2 09:29:23 CEST 2009


Author: gunnar

Update of /kolabrepository/server/php-kolab/Kolab_Format
In directory doto:/tmp/cvs-serv2128/php-kolab/Kolab_Format

Modified Files:
      Tag: kolab_2_2_branch
	Makefile 
Log Message:
Cleaned up the generic PEAR Makefile. This version should be able to fully rely on information from the *.spec file so that it never needs any editing. It supports flexible patching of PEAR packages and allows to install the package from within CVS. It also carries some documentation so that others may understand it too. CVS HEAD should use this version for all PEAR based packages.

Index: Makefile
===================================================================
RCS file: /kolabrepository/server/php-kolab/Kolab_Format/Makefile,v
retrieving revision 1.6
retrieving revision 1.6.2.1
diff -u -d -r1.6 -r1.6.2.1
--- Makefile	12 Dec 2008 11:48:22 -0000	1.6
+++ Makefile	2 Apr 2009 07:29:21 -0000	1.6.2.1
@@ -1,40 +1,111 @@
-PACKAGE = $(shell grep "%define[ ]*V_package" *.spec | sed -e "s/.*V_package \([A-Za-z\-\_]*\).*/\1/")
-VERSION = $(shell grep "%define[ ]*V_version" *.spec | sed -e "s/.*V_version\s*\([0-9RC.]*\).*/\1/")
-RELEASE = $(shell grep "%define[ ]*V_release" *.spec | sed -e "s/.*V_release\s*\([0-9]*\).*/\1/")
+# If home is unset this Makefile assumes the Kolab server installation
+# resides in /kolab. If this is not the case this Makefile must be
+# called using
+#
+# HOME="/mykolabroot" make TARGET
+#
+ifeq "x$(HOME)" "x"
+  HOME = /kolab
+endif
 
+# If HOME is set to /root it is likely that somebody is calling this
+# Makefile as root user. In this case this Makefile assumes that the
+# Kolab server installation resides in /kolab.
+#
+# In the (hopefully) unlikely event that somebody really installed the
+# Kolab server in /root this Makefile will fail.
+ifeq "x$(HOME)" "x/root"
+  HOME = /kolab
+endif
+
+# Set the location of the rpm binary
 ifeq "x$(RPM)" "x"
   RPM = $(HOME)/bin/openpkg rpm
 endif
+
+# Set the location for rpm source package installations
 ifeq "x$(KOLABRPMSRC)" "x"
   KOLABRPMSRC = $(HOME)/RPM/SRC
 endif
+
+# Set the location for rpm packages
 ifeq "x$(KOLABRPMPKG)" "x"
   KOLABRPMPKG = $(HOME)/RPM/PKG
 endif
+
+# Set the location for the rpm temporary directory
 ifeq "x$(KOLABRPMTMP)" "x"
   KOLABRPMTMP = $(HOME)/RPM/TMP
 endif
 
-SOURCE_0=http://pear.horde.org/get/$(PACKAGE)-$(VERSION).tgz
+# Determine the suffix for binary packages on this system
+ifeq "x$(PLATTAG)" "x"
+	PLATTAG = $(shell $(RPM) -q --qf="%{ARCH}-%{OS}" openpkg)-$(HOME:/%=%)
+endif
+
+# Determine the staging area for collecting new source rpms
+ifeq "x$(STAGING)" "x"
+  STAGING = ../../stage
+endif
+
+# Determine the package name from the *.spec file
+PACKAGE = $(shell grep "%define[ ]*V_package" *.spec | sed -e "s/.*V_package \([A-Za-z\-\_]*\).*/\1/")
+
+# Determine the package version from the *.spec file
+VERSION = $(shell grep "%define[ ]*V_version" *.spec | sed -e "s/.*V_version\s*\([0-9.]*\).*/\1/")
+
+# Determine the release number from the *.spec file
+RELEASE = $(shell grep "%define[ ]*V_release" *.spec | sed -e "s/.*V_release\s*\([0-9]*\).*/\1/")
 
+# Determine the download url for the PEAR package from the *.spec file
+SOURCE_URL=$(shell grep "%define[ ]*V_sourceurl" *.spec | sed -e "s/.*V_sourceurl\s*\(.*\)/\1/")
+
+# Get the list of patches if there are any in this directory
+PATCHES = $(shell ls *.patch 2> /dev/null)
+
+# Generate the full package name
+SOURCE_0=$(PACKAGE)-$(VERSION).tgz
+
+# Generate a list of extra files for the package
+EXTRA=ChangeLog $(PATCHES)
+
+
+# Default target to generate the source rpm package
 .PHONY: all
 all: $(PACKAGE)-$(VERSION)-$(RELEASE).src.rpm
 
+# Target for placing the source rpm in the staging area
 .PHONY: dist
 dist: all
-	cp $(PACKAGE)-$(VERSION)-$(RELEASE).src.rpm ../../stage/
+	test -d $(STAGING) || mkdir $(STAGING)
+	cp $(PACKAGE)-$(VERSION)-$(RELEASE).src.rpm $(STAGING)
 
-.PHONY: clean
-clean:
-	rm -rf /kolab/RPM/TMP/$(PACKAGE)*
-	rm -rf $(PACKAGE)-$(VERSION)-$(RELEASE).src.rpm
-	rm -rf *~
+# Target for installing the binary rpm package in our current Kolab
+# server installation
+.PHONY: install
+install: $(KOLABRPMPKG)/$(PACKAGE)-$(VERSION)-$(RELEASE).$(PLATTAG).rpm
+	$(RPM) -Uhv --force $(KOLABRPMPKG)/$(PACKAGE)-$(VERSION)-$(RELEASE).$(PLATTAG).rpm
 
-$(PACKAGE)-$(VERSION)-$(RELEASE).src.rpm: Makefile $(PACKAGE).spec ChangeLog
+# Target for retrieving the source package
+$(KOLABRPMSRC)/$(PACKAGE)/$(SOURCE_0): 
 	test -d $(KOLABRPMSRC)/$(PACKAGE) || mkdir $(KOLABRPMSRC)/$(PACKAGE)
-	cd $(KOLABRPMSRC)/$(PACKAGE) && wget -c "$(SOURCE_0)"
+	cd $(KOLABRPMSRC)/$(PACKAGE) && wget -c "$(SOURCE_URL)/$(SOURCE_0)"
 
-	cp $(PACKAGE).spec $(KOLABRPMSRC)/$(PACKAGE)
+# Target for preparing the source area and building the package
+$(KOLABRPMPKG)/$(PACKAGE)-$(VERSION)-$(RELEASE).$(PLATTAG).rpm: Makefile $(PACKAGE).spec $(EXTRA) $(KOLABRPMSRC)/$(PACKAGE)/$(SOURCE_0)
+	cp $(PACKAGE).spec $(EXTRA) $(KOLABRPMSRC)/$(PACKAGE)
 	cd $(KOLABRPMSRC)/$(PACKAGE) && $(RPM) -ba $(PACKAGE).spec
 
+# Target for fetching the source rpm into the current directory
+$(PACKAGE)-$(VERSION)-$(RELEASE).src.rpm: $(KOLABRPMPKG)/$(PACKAGE)-$(VERSION)-$(RELEASE).$(PLATTAG).rpm
 	cp -p $(KOLABRPMPKG)/$(PACKAGE)-$(VERSION)-$(RELEASE).src.rpm .
+
+# Target for cleaning up the files that can be generated with this Makefile
+.PHONY: clean
+clean:
+	rm -rf $(KOLABRPMPKG)/$(PACKAGE)-$(VERSION)-$(RELEASE).$(PLATTAG).rpm
+	rm -rf $(KOLABRPMSRC)/$(PACKAGE)
+	rm -rf $(KOLABRPMTMP)/$(PACKAGE)*
+	rm -rf $(PACKAGE)-$(VERSION)-$(RELEASE).src.rpm
+	rm -rf *~
+





More information about the commits mailing list