Revision: 3219
          http://gar.svn.sourceforge.net/gar/?rev=3219&view=rev
Author:   dmichelsen
Date:     2009-02-18 17:02:18 +0000 (Wed, 18 Feb 2009)

Log Message:
-----------
mGAR v2: Write pkginfo only for dynamic gspec files

Modified Paths:
--------------
    csw/mgar/gar/v2/gar.pkg.mk

Modified: csw/mgar/gar/v2/gar.pkg.mk
===================================================================
--- csw/mgar/gar/v2/gar.pkg.mk  2009-02-18 16:33:07 UTC (rev 3218)
+++ csw/mgar/gar/v2/gar.pkg.mk  2009-02-18 17:02:18 UTC (rev 3219)
@@ -24,7 +24,7 @@
 # You can use either PACKAGES with dynamic gspec-files or explicitly add 
gspec-files to DISTFILES.
 # Do "PACKAGES = CSWmypkg" when you build a package whose GARNAME is not the 
package name.
 # If no explicit gspec-files have been defined the default name for the 
package is CSW$(GARNAME).
-# The whole processing is done from _SPKG_SPECS, which includes all packages 
to be build.
+# The whole processing is done from _PKG_SPECS, which includes all packages to 
be build.
 ifeq ($(origin PACKAGES), undefined)
 SPKG_SPECS     ?= $(if $(filter %.gspec,$(DISTFILES)),$(basename $(filter 
%.gspec,$(DISTFILES))),CSW$(GARNAME))
 else
@@ -97,7 +97,7 @@
 SPKG_PACKAGER  ?= Unknown
 SPKG_VENDOR    ?= $(SPKG_SOURCEURL) packaged for CSW by $(SPKG_PACKAGER)
 SPKG_EMAIL     ?= Unknown
-#SPKG_PSTAMP    ?= $(LOGNAME)@$(shell hostname)-$(call _REVISION)-$(shell date 
'+%Y%m%d%H%M%S')
+SPKG_PSTAMP    ?= $(LOGNAME)@$(shell hostname)-$(call _REVISION)-$(shell date 
'+%Y%m%d%H%M%S')
 SPKG_BASEDIR   ?= $(prefix)
 SPKG_CLASSES   ?= none
 SPKG_OSNAME    ?= $(shell uname -s)$(shell uname -r)
@@ -183,22 +183,26 @@
 # PKGFILES_DOC selects files beloging to a documentation package
 PKGFILES_DOC  = $(docdir)/.*
 
-# _PKGFILES_EXCLUDE_<spec> contains the files to be excluded from that package
-$(foreach SPEC,$(_PKG_SPECS), \
-  $(eval _PKGFILES_EXCLUDE_$(SPEC)=$(strip \
-    $(foreach S,$(filter-out $(SPEC),$(_PKG_SPECS)), \
-      $(PKGFILES_$(S)) \
-      $(call licensedir,$(S))/.* \
-      $(EXTRA_PKGFILES_EXCLUDED) \
-      $(EXTRA_PKGFILES_EXCLUDED_$(SPEC)) \
-      $(_EXTRA_PKGFILES_EXCLUDED) \
-    ) \
-  )) \
-  $(eval _PKGFILES_INCLUDE_$(SPEC)=$(strip \
-    $(call licensedir,$(SPEC))/.* \
-  )) \
+# This function computes the files to be excluded from the package specified
+# as argument
+define _pkgfiles_exclude
+$(strip 
+  $(foreach S,$(filter-out $(1),$(_PKG_SPECS)), 
+    $(PKGFILES_$(S)) 
+    $(call licensedir,$(S))/.* 
+    $(EXTRA_PKGFILES_EXCLUDED) 
+    $(EXTRA_PKGFILES_EXCLUDED_$(1)) 
+    $(_EXTRA_PKGFILES_EXCLUDED) 
+  ) 
 )
+endef
 
+define _pkgfiles_include
+$(strip 
+  $(call licensedir,$(1))/.* 
+)
+endef
+
 #
 # Targets
 #
@@ -222,15 +226,17 @@
        $(_DBG)cswproto -r $(PKGROOT) $(PKGROOT)=/ >$@
 
 .PRECIOUS: $(WORKDIR)/%.prototype $(WORKDIR)/%.prototype-$(GARCH)
+$(WORKDIR)/%.prototype: _PKGFILES_EXCLUDE=$(call _pkgfiles_exclude,$*)
+$(WORKDIR)/%.prototype: _PKGFILES_INCLUDE=$(call _pkgfiles_include,$*)
 $(WORKDIR)/%.prototype: | $(PROTOTYPE)
        $(_DBG)if [ -n "$(PKGFILES_$*_SHARED)" -o \
              -n "$(PKGFILES_$*)" -o \
-             -n "$(_PKGFILES_EXCLUDE_$*)" -o \
+             -n "$(_PKGFILES_EXCLUDE)" -o \
              -n "$(ISAEXEC_FILES_$*)" -o \
              -n "$(ISAEXEC_FILES)" ]; then \
-         (pathfilter $(foreach FILE,$(if $(or 
$(PKGFILES_$*_SHARED),$(PKGFILES_$*)),$(_PKGFILES_INCLUDE_$*)) \
+         (pathfilter $(foreach FILE,$(if $(or 
$(PKGFILES_$*_SHARED),$(PKGFILES_$*)),$(_PKGFILES_INCLUDE)) \
                        $(PKGFILES_$*_SHARED) $(PKGFILES_$*),-i '$(FILE)') \
-                     $(foreach FILE,$(_PKGFILES_EXCLUDE_$*), -x '$(FILE)') \
+                     $(foreach FILE,$(_PKGFILES_EXCLUDE), -x '$(FILE)') \
                      $(foreach IE,$(abspath $(ISAEXEC_FILES_$*) 
$(ISAEXEC_FILES)), \
                          -e '$(IE)=$(dir $(IE))$(ISA_DEFAULT)/$(notdir $(IE))' 
\
                       ) \
@@ -332,7 +338,9 @@
 endef
 
 # XXX: It is possible that a package is flagged as /isaexec, even
-# if the isaexec'ed files are in another package created from the Makefile
+# if the isaexec'ed files are in another package created from the Makefile.
+# There should be a warning issued if there is more than one package build and
+# it has not explicitly been set.
 define mode64
 $(shell echo 
   $(if $(MODE64_$(1)),$(MODE64_$(1)), 
@@ -425,7 +433,8 @@
 package: extract merge $(SPKG_DESTDIRS) pre-package $(PACKAGE_TARGETS) 
post-package
        $(DONADA)
 
-package-%: $(WORKDIR)/%.gspec $(WORKDIR)/%.pkginfo 
$(WORKDIR)/%.prototype-$(GARCH) $(WORKDIR)/%.depend
+# The dynamic pkginfo is only generated for dynamic gspec-files
+package-%: $(WORKDIR)/%.gspec $(if $(filter 
%.gspec,$(DISTFILES)),,$(WORKDIR)/%.pkginfo) $(WORKDIR)/%.prototype-$(GARCH) 
$(WORKDIR)/%.depend
        @echo " ==> Processing $*.gspec"
        $(_DBG)( $(call _PKG_ENV,$*) mkpackage --spec $(WORKDIR)/$*.gspec \
                                                 --spooldir $(SPKG_SPOOLDIR) \


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.
_______________________________________________
devel mailing list
devel@lists.opencsw.org
https://lists.opencsw.org/mailman/listinfo/devel

Reply via email to