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