summaryrefslogtreecommitdiff
path: root/php-kolab/Kolab_Format
diff options
context:
space:
mode:
authorGunnar Wrobel <wrobel@pardus.de>2009-04-02 07:29:21 (GMT)
committerGunnar Wrobel <wrobel@pardus.de>2009-04-02 07:29:21 (GMT)
commitcd791fc5fa79f4aabd54e237f7045feb57458682 (patch)
treea532901f82b81e3c121e81ae19e8b53c676ea5f9 /php-kolab/Kolab_Format
parentd3b7c4d9a93294a2df6d7994773997eafd8f37cd (diff)
downloadserver-cd791fc5fa79f4aabd54e237f7045feb57458682.tar.gz
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.
Diffstat (limited to 'php-kolab/Kolab_Format')
-rw-r--r--php-kolab/Kolab_Format/Makefile97
1 files changed, 84 insertions, 13 deletions
diff --git a/php-kolab/Kolab_Format/Makefile b/php-kolab/Kolab_Format/Makefile
index 84b59f5..25b92ef 100644
--- a/php-kolab/Kolab_Format/Makefile
+++ b/php-kolab/Kolab_Format/Makefile
@@ -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 *~
+