Added rules to build util-python package
[build.git] / Rules.mk
index 5c3ceb6..6e0da0c 100644 (file)
--- a/Rules.mk
+++ b/Rules.mk
@@ -1,38 +1,10 @@
 #
 # PlanetLab RPM generation
 #
-# Copyright (c) 2003  The Trustees of Princeton University (Trustees).
-# All Rights Reserved.
-# 
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: 
-# 
-#     * Redistributions of source code must retain the above copyright
-#       notice, this list of conditions and the following disclaimer.
-# 
-#     * Redistributions in binary form must reproduce the above
-#       copyright notice, this list of conditions and the following
-#       disclaimer in the documentation and/or other materials provided
-#       with the distribution.
-# 
-#     * Neither the name of the copyright holder nor the names of its
-#       contributors may be used to endorse or promote products derived
-#       from this software without specific prior written permission.
-# 
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE TRUSTEES OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# Mark Huang <mlhuang@cs.princeton.edu>
+# Copyright (C) 2003-2005 The Trustees of Princeton University
 #
-# $Id: Makerules,v 1.5 2004/04/09 19:37:19 alk-pl_rpm Exp $
+# $Id: Makerules,v 1.14 2005/05/04 19:13:14 mlhuang Exp $
 #
 
 # Base cvsps and rpmbuild in the current directory
@@ -49,7 +21,8 @@ $(MK): SPECS/$(notdir $(SPEC)).in
         # Substitute '$' for '%' and 'name := value' for '%define name value' or 'name: value'
        sed -n \
        -e 's/%{/$${/g' \
-       -e 's/^%define[  ]*\([^  ]*\)[   ]*\([^  ]*\)/\1 := \2/p' \
+       -e 's/%\([[:alnum:]]\+\)/$${\1}/g' \
+       -e 's/^$${define}[       ]*\([^  ]*\)[   ]*\([^  ]*\)/\1 := \2/p' \
        -e 's/^\([^      ]*\):[  ]*\([^  ]*\)/\1 := \2/p' \
        $< > $@
 ifneq ($(INITIAL),$(TAG))
@@ -80,7 +53,10 @@ Source0 := $(notdir $(if $(Source),$(Source),$(Source0)))
 SOURCES += SOURCES/$(Source0)
 
 # Get rid of .tar.bz2 or .tar.gz or .tgz
-Base0 := $(basename $(basename $(Source0)))
+Base0 := $(Source0:.tgz=)
+Base0 := $(Base0:.bz2=)
+Base0 := $(Base0:.gz=)
+Base0 := $(Base0:.tar=)
 
 # Export module
 SOURCES/$(Base0):
@@ -163,8 +139,12 @@ endif
 # Build
 #
 
-NVR := $(shell rpmquery $(RPMFLAGS) $(if $(DATE),--define "date $(DATE)") --specfile SPECS/$(notdir $(SPEC)).in 2>/dev/null | head -1)
-ARCH := $(shell rpm $(RPMFLAGS) --showrc | sed -ne 's/^build arch[      ]*:[    ]*\(.*\)/\1/p')
+ifeq ($(TAG),HEAD)
+RPMFLAGS += --define "date $(DATE)"
+endif
+PACKAGES := $(shell rpmquery $(RPMFLAGS) --specfile SPECS/$(notdir $(SPEC)).in 2>/dev/null)
+NVR := $(word 1,$(PACKAGES))
+ARCH := $(shell rpmquery $(RPMFLAGS) --queryformat '%{ARCH}\n' --specfile SPECS/$(notdir $(SPEC)).in 2>/dev/null | head -1)
 
 all: RPMS/$(ARCH)/$(NVR).$(ARCH).rpm SRPMS/$(NVR).src.rpm
 
@@ -181,15 +161,17 @@ SRPMS/$(NVR).src.rpm: SPECS/$(notdir $(SPEC)) $(SOURCES) .rpmmacros
 # Base rpmbuild in the current directory
 .rpmmacros:
        echo "%_topdir $(HOME)" > $@
+       echo "%_tmppath $(HOME)/tmp" >> $@
 
 # Remove files generated by this package
 clean:
        rm -rf \
        BUILD/$(Base0) \
-       RPMS/$(ARCH)/$(NVR).$(ARCH).rpm \
+       $(foreach subpackage,$(PACKAGES),RPMS/*/$(subpackage)*) \
        SOURCES/$(Base0)* SOURCES/$(package)* \
        SPECS/$(notdir $(SPEC)).in SPECS/$(notdir $(SPEC)) $(MK) \
        SRPMS/$(NVR).src.rpm \
+       tmp \
        .cvsps/$(subst /,#,$(CVSROOT)/$(MODULE))
 
 .PHONY: all clean