Revision: 16623
          http://gar.svn.sourceforge.net/gar/?rev=16623&view=rev
Author:   guengel
Date:     2011-12-30 14:52:42 +0000 (Fri, 30 Dec 2011)
Log Message:
-----------
postgresql/branches/postgresql-8.3-raos: Included postmsg in -server, -client, 
-contrib, and -dev. All parts of the -dev package do not feature 
$(BASE_VERSION_NODOT) anymore. Improved/simplified creation of alternatives. 
Added a test target to catch missing/superfluous SO_NAMES_* and BIN_NAMES_*.

Modified Paths:
--------------
    csw/mgar/pkg/postgresql/branches/postgresql-8.3-raos/Makefile

Modified: csw/mgar/pkg/postgresql/branches/postgresql-8.3-raos/Makefile
===================================================================
--- csw/mgar/pkg/postgresql/branches/postgresql-8.3-raos/Makefile       
2011-12-30 14:46:26 UTC (rev 16622)
+++ csw/mgar/pkg/postgresql/branches/postgresql-8.3-raos/Makefile       
2011-12-30 14:52:42 UTC (rev 16623)
@@ -34,7 +34,8 @@
 # Note 3: Alternatives
 # ------
 #
-# I was unable to get the alternatives system to work with using
+# I was unable to get the alternatives system to work with using, for
+# instance,
 #
 #  ALTERNATIVES_CSWpostgresql83-server = server_amd64 server_pentium_pro
 #
@@ -86,8 +87,6 @@
 # amount of effort.
 
 
-# This BUILD is NOT READY!  It needs work before it's usable.
-
 NAME = postgresql
 BASE_VERSION = 8.3
 VERSION_NODOT = $(subst .,_,$(BASE_VERSION))
@@ -183,13 +182,20 @@
 
 # These are the alternatives provided for the packages.  I use them in the
 # recipe to iterate over all possible alternatives (see 'post-merge:')
-myALTERNATIVES= server client dev contrib
+#
+# Please note that these should correspond to the package suffices.
+myALTERNATIVES = server client dev contrib
 
-POSTMSG = $(foreach 
n,$(myALTERNATIVES),$(docdir)/$(NAME)$(BASE_VERSION_NODOT)_$(n)/CSW$(NAME)$(BASE_VERSION_NODOT)-$(n).postmsg)
+POSTMSG = $(foreach n,$(myALTERNATIVES),\
+       $(if $(subst dev,,$(n)),\
+               
$(docdir)/$(NAME)$(BASE_VERSION_NODOT)_$(n)/CSW$(NAME)$(BASE_VERSION_NODOT)-$(n).postmsg,\
+               $(docdir)/$(NAME)_$(n)/CSW$(NAME)-$(n).postmsg \
+       )\
+)
 
 MASTER_SITES = http://ftp.postgresql.org/pub/source/v$(VERSION)/
 DISTFILES  = $(NAME)-$(VERSION).tar.bz2
-DISTFILES += README-CSW.txt
+DISTFILES += README.CSW
 DISTFILES += $(SERVERPOSTINSTTMPL)
 DISTFILES += $(INITSCRIPTFILETMPL)
 DISTFILES += $(USERGROUPFILETMPL)
@@ -202,6 +208,7 @@
 EXPANDVARS += $(CSWPGSQLCONFFILETMPL)
 EXPANDVARS += $(SERVERPOSTINSTTMPL)
 EXPANDVARS += $(USERGROUPFILETMPL)
+EXPANDVARS += README.CSW
 
 # This patch will replace /usr/local/include by /opt/csw/include in
 # ecpg.c and thus silence a checkpkg error.
@@ -253,6 +260,8 @@
 PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-server += .*$(sysconfdir)/init\.d/.*
 PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-server += 
.*$(sysconfdir)/$(CSWPGSQLCONFFILE_VERSIONED).CSW
 PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-server += 
.*/alternatives/$(NAME)$(BASE_VERSION_NODOT)_server.*
+PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-server += 
.*/CSW$(NAME)$(BASE_VERSION_NODOT)-server.postmsg
+PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-server += 
.*$(docdir)/$(NAME)$(BASE_VERSION_NODOT)_server/README.CSW
 RUNTIME_DEP_PKGS_CSW$(NAME)$(BASE_VERSION_NODOT)-server += CSWlibreadline6
 RUNTIME_DEP_PKGS_CSW$(NAME)$(BASE_VERSION_NODOT)-server += CSWosslrt
 RUNTIME_DEP_PKGS_CSW$(NAME)$(BASE_VERSION_NODOT)-server += CSWlibz1
@@ -272,6 +281,8 @@
 PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-client += $(foreach 
n,$(BIN_NAMES_CLIENT),.*/man1/$(n)-$(BASE_VERSION_NODOT)\.1$$)
 PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-client += $(MISC_NAMES_CLIENT)
 PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-client += 
.*/alternatives/$(NAME)$(BASE_VERSION_NODOT)_client.*
+PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-client += 
.*/CSW$(NAME)$(BASE_VERSION_NODOT)-client.postmsg
+PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-client += 
.*$(docdir)/$(NAME)$(BASE_VERSION_NODOT)_client/README.CSW
 RUNTIME_DEP_PKGS_CSW$(NAME)$(BASE_VERSION_NODOT)-client += CSWlibreadline6
 RUNTIME_DEP_PKGS_CSW$(NAME)$(BASE_VERSION_NODOT)-client += CSWosslrt
 RUNTIME_DEP_PKGS_CSW$(NAME)$(BASE_VERSION_NODOT)-client += CSWlibz1
@@ -289,6 +300,8 @@
 PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-contrib += $(foreach 
n,$(SO_NAMES_CONTRIB),.*/$(NAME)/$(BASE_VERSION_NODOT)/*$(n)$$)
 PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-contrib += 
.*/$(NAME)/$(BASE_VERSION_NODOT)/contrib.*
 PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-contrib += 
.*/alternatives/$(NAME)$(BASE_VERSION_NODOT)_contrib.*
+PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-contrib += 
.*/CSW$(NAME)$(BASE_VERSION_NODOT)-contrib.postmsg
+PKGFILES_CSW$(NAME)$(BASE_VERSION_NODOT)-contrib += 
.*$(docdir)/$(NAME)$(BASE_VERSION_NODOT)_contrib/README.CSW
 RUNTIME_DEP_PKGS_CSW$(NAME)$(BASE_VERSION_NODOT)-contrib += CSWosslrt
 RUNTIME_DEP_PKGS_CSW$(NAME)$(BASE_VERSION_NODOT)-contrib += CSWlibz1
 RUNTIME_DEP_PKGS_CSW$(NAME)$(BASE_VERSION_NODOT)-contrib += CSWlibpq5
@@ -308,7 +321,10 @@
 PKGFILES_CSW$(NAME)-dev += $(foreach n,$(BIN_NAMES_DEVEL),.*$(n)$$)
 PKGFILES_CSW$(NAME)-dev += $(foreach 
n,$(BIN_NAMES_DEVEL),.*/man1/$(n)-$(BASE_VERSION_NODOT)\.1$$)
 PKGFILES_CSW$(NAME)-dev += .*/man5/.*
-PKGFILES_CSW$(NAME)-dev += .*/alternatives/$(NAME)$(BASE_VERSION_NODOT)_dev.*
+# Alternatives for -dev have no version appended
+PKGFILES_CSW$(NAME)-dev += .*/alternatives/$(NAME)_dev.*
+PKGFILES_CSW$(NAME)-dev += .*/CSW$(NAME)-dev.postmsg
+PKGFILES_CSW$(NAME)-dev += .*$(docdir)/$(NAME)_dev/README.CSW
 RUNTIME_DEP_PKGS_CSW$(NAME)-dev += CSWlibecpg-compat3
 RUNTIME_DEP_PKGS_CSW$(NAME)-dev += CSWlibecpg6
 RUNTIME_DEP_PKGS_CSW$(NAME)-dev += CSWlibpq5
@@ -395,24 +411,53 @@
 #SKIPTEST ?= 1
 
 include gar/category.mk
-# This variable will be increased in the course of the following foreach loops
+# This will generate the ALTERNATIVEs for the binaries in
+# $(libexecdir)/postgresql/XY.
+#
+# The uppercase_* variables are used to translate the lowercase
+# $(myALTERNATIVES) to uppercase.
+#
+# -dev is handled separately further below
+#
+# How it does create the alternatives:
+#
+# for pkg in $(myALTERNATIVES)
+#   -- set alternative priority to 20
+#   for alt in $(NEEDED_ISAS)
+#     -- increment alternative priority by 10
+#     -- create master alternative for pkg, remove default isa from path,
+#       store alternative in $(ALTERNATIVE_$(pkg)_$(alt)
+#     -- create slave alternatives for pkg, remove default isa from path,
+#       append slave alternative to $(ALTERNATIVE_$(pkg)_$(alt)
+#   end alt
+# end pkg
+#
+# The same approach is used for -dev, but the enclosing outer loop is
+# not used, and the alternatives are not having the BASE_VERSION_NODOT
+# to their file names appended.
+#
+# In the post-merge target, the alternatives are written to their
+# respective files
+
+uppercase_server = SERVER
+uppercase_client = CLIENT
+uppercase_contrib = CONTRIB
+$(foreach pkg,$(filter-out dev,$(myALTERNATIVES)),\
+       $(eval alt_priority = 20) \
+       $(foreach alt,$(NEEDED_ISAS), \
+               $(eval alt_priority=$(shell expr $(alt_priority) + 10)) \
+               $(eval ALTERNATIVE_$(pkg)_$(alt) = $(subst 
/$(ISA_DEFAULT)/,/,$(foreach n,$(firstword 
$(BIN_NAMES_$(uppercase_$(pkg)))),$(bindir)/$(n)-$(BASE_VERSION_NODOT) 
$(NAME)$(BASE_VERSION_NODOT)-$(pkg) 
$(libexecdir)/$(alt)/$(NAME)/$(BASE_VERSION_NODOT)/$(n))) $(alt_priority)) \
+               $(eval ALTERNATIVE_$(pkg)_$(alt) += $(subst 
/$(ISA_DEFAULT)/,/,$(foreach n,$(wordlist 2,$(words 
$(BIN_NAMES_$(uppercase_$(pkg)))),$(BIN_NAMES_$(uppercase_$(pkg)))),$(bindir)/$(n)-$(BASE_VERSION_NODOT)
 $(NAME)$(BASE_VERSION_NODOT)-$(pkg) 
$(libexecdir)/$(alt)/$(NAME)/$(BASE_VERSION_NODOT)/$(n)))) \
+       )\
+)
+# Devel is handled separately, since it does not use
+# $(BASE_VERSION_NODOT)
 alt_priority = 20
-# This will generate the ALTERNATIVEs for the binaries in 
$(libexecdir)/postgresql/XY.
-# I consider this bad voodoo.
-## Server
-$(foreach alt,$(NEEDED_ISAS), $(eval alt_priority=$(shell expr $(alt_priority) 
+ 10)) $(eval ALTERNATIVE_server_$(alt) = $(subst /$(ISA_DEFAULT)/,/,$(foreach 
n,$(firstword $(BIN_NAMES_SERVER)),$(bindir)/$(n)-$(BASE_VERSION_NODOT) 
$(NAME)$(BASE_VERSION_NODOT)-server $(libexecdir)/$(subst 
server_,,$(alt))/$(NAME)/$(BASE_VERSION_NODOT)/$(n))) $(alt_priority)) $(eval 
ALTERNATIVE_server_$(alt) += $(subst /$(ISA_DEFAULT)/,/,$(foreach n,$(wordlist 
2,$(words 
$(BIN_NAMES_SERVER)),$(BIN_NAMES_SERVER)),$(bindir)/$(n)-$(BASE_VERSION_NODOT) 
$(NAME)$(BASE_VERSION_NODOT) $(libexecdir)/$(subst 
server_,,$(alt))/$(NAME)/$(BASE_VERSION_NODOT)/$(n)))) )
-## Client
-# reset priority
-alt_priority = 20
-$(foreach alt,$(NEEDED_ISAS), $(eval alt_priority=$(shell expr $(alt_priority) 
+ 10)) $(eval ALTERNATIVE_client_$(alt) = $(subst /$(ISA_DEFAULT)/,/,$(foreach 
n,$(firstword $(BIN_NAMES_CLIENT)),$(bindir)/$(n)-$(BASE_VERSION_NODOT) 
$(NAME)$(BASE_VERSION_NODOT)-client $(libexecdir)/$(subst 
client_,,$(alt))/$(NAME)/$(BASE_VERSION_NODOT)/$(n))) $(alt_priority)) $(eval 
ALTERNATIVE_client_$(alt) += $(subst /$(ISA_DEFAULT)/,/,$(foreach n,$(wordlist 
2,$(words 
$(BIN_NAMES_CLIENT)),$(BIN_NAMES_CLIENT)),$(bindir)/$(n)-$(BASE_VERSION_NODOT) 
$(NAME)$(BASE_VERSION_NODOT) $(libexecdir)/$(subst 
client_,,$(alt))/$(NAME)/$(BASE_VERSION_NODOT)/$(n)))) )
-## Contrib
-# reset priority
-alt_priority = 20
-$(foreach alt,$(NEEDED_ISAS), $(eval alt_priority=$(shell expr $(alt_priority) 
+ 10)) $(eval ALTERNATIVE_contrib_$(alt) = $(subst /$(ISA_DEFAULT)/,/,$(foreach 
n,$(firstword $(BIN_NAMES_CONTRIB)),$(bindir)/$(n)-$(BASE_VERSION_NODOT) 
$(NAME)$(BASE_VERSION_NODOT)-contrib $(libexecdir)/$(subst 
contrib_,,$(alt))/$(NAME)/$(BASE_VERSION_NODOT)/$(n))) $(alt_priority)) $(eval 
ALTERNATIVE_contrib_$(alt) += $(subst /$(ISA_DEFAULT)/,/,$(foreach n,$(wordlist 
2,$(words 
$(BIN_NAMES_CONTRIB)),$(BIN_NAMES_CONTRIB)),$(bindir)/$(n)-$(BASE_VERSION_NODOT)
 $(NAME)$(BASE_VERSION_NODOT) $(libexecdir)/$(subst 
contrib_,,$(alt))/$(NAME)/$(BASE_VERSION_NODOT)/$(n)))) )
-## Devel
-# reset priority
-alt_priority = 20
-$(foreach alt,$(NEEDED_ISAS), $(eval alt_priority=$(shell expr $(alt_priority) 
+ 10)) $(eval ALTERNATIVE_dev_$(alt) = $(subst /$(ISA_DEFAULT)/,/,$(foreach 
n,$(firstword $(BIN_NAMES_DEVEL)),$(bindir)/$(n)-$(BASE_VERSION_NODOT) 
$(NAME)$(BASE_VERSION_NODOT)-dev $(libexecdir)/$(subst 
dev_,,$(alt))/$(NAME)/$(BASE_VERSION_NODOT)/$(n))) $(alt_priority)) $(eval 
ALTERNATIVE_dev_$(alt) += $(subst /$(ISA_DEFAULT)/,/,$(foreach n,$(wordlist 
2,$(words 
$(BIN_NAMES_DEVEL)),$(BIN_NAMES_DEVEL)),$(bindir)/$(n)-$(BASE_VERSION_NODOT) 
$(NAME)$(BASE_VERSION_NODOT) $(libexecdir)/$(subst 
dev_,,$(alt))/$(NAME)/$(BASE_VERSION_NODOT)/$(n)))) )
+$(foreach alt,$(NEEDED_ISAS),\
+       $(eval alt_priority=$(shell expr $(alt_priority) + 10)) \
+       $(eval ALTERNATIVE_dev_$(alt) = $(subst /$(ISA_DEFAULT)/,/,$(foreach 
n,$(firstword $(BIN_NAMES_DEVEL)),$(bindir)/$(n) $(NAME)-dev 
$(libexecdir)/$(alt)/$(NAME)/$(BASE_VERSION_NODOT)/$(n))) $(alt_priority)) \
+       $(eval ALTERNATIVE_dev_$(alt) += $(subst /$(ISA_DEFAULT)/,/,$(foreach 
n,$(wordlist 2,$(words $(BIN_NAMES_DEVEL)),$(BIN_NAMES_DEVEL)),$(bindir)/$(n) 
$(NAME)-dev $(libexecdir)/$(alt)/$(NAME)/$(BASE_VERSION_NODOT)/$(n))))\
+)
 
 # We adjust the $(pkglibdir) found in $(WORKSRC)/src/Makefile.global.in, so
 # that it should be possible to install 8.x and 8.y concurrently
@@ -430,9 +475,10 @@
        $(INSTALL_ENV) gmake -C $(WORKSRC)/contrib DESTDIR=$(DESTDIR) install
        @$(MAKECOOKIE)
 
-post-merge:
-# Create my alternatives files
-       $(foreach a,$(myALTERNATIVES), $(foreach i,$(NEEDED_ISAS), $(shell 
ginstall -d $(PKGROOT)$(sharedstatedir)/alternatives ; echo 
"$(ALTERNATIVE_$(a)_$(i))" > 
$(PKGROOT)$(sharedstatedir)/alternatives/$(NAME)$(BASE_VERSION_NODOT)_$(a)_$(i))))
+post-merge:  $(foreach n,$(POSTMSG),$(PKGROOT)/$(n)) test-installation
+# Create my alternatives files. Development alternatives have stripped
+# off the version
+       $(foreach a,$(myALTERNATIVES), $(foreach i,$(NEEDED_ISAS), $(shell 
ginstall -d $(PKGROOT)$(sharedstatedir)/alternatives ; echo 
"$(ALTERNATIVE_$(a)_$(i))" > $(if $(subst 
dev,,$(a)),$(PKGROOT)$(sharedstatedir)/alternatives/$(NAME)$(BASE_VERSION_NODOT)_$(a)_$(i),$(PKGROOT)$(sharedstatedir)/alternatives/$(NAME)_$(a)_$(i))
 ) ) )
 # Create the PGDATA directory
        ginstall -d $(PKGROOT)$(PGDATA)
 # Adjust the man page names for man1
@@ -463,19 +509,75 @@
        chmod 0755 $(PKGROOT)$(sysconfdir)/init.d/$(INITSCRIPTFILE_VERSIONED)
 # The init script config
        ginstall $(WORKDIR)/$(CSWPGSQLCONFFILETMPL) 
$(PKGROOT)$(sysconfdir)/$(CSWPGSQLCONFFILE_VERSIONED).CSW
+# Remove all the README.CSW, since they have not expanded the
+# variables, and copy only the one's we're interested in
+       for f in $(PKGROOT)$(docdir)/*/README.CSW ; do \
+               rm $$f ; \
+       done
+       for d in $(foreach n,$(subst 
dev,,$(myALTERNATIVES)),$(NAME)$(BASE_VERSION_NODOT)_$(n)) 
$(NAME)$(BASE_VERSION_NODOT) ; do \
+               ginstall $(WORKDIR)/README.CSW $(PKGROOT)$(docdir)/$$d/ ; \
+       done
        @$(MAKECOOKIE)
-       @$(MAKECOOKIE)
 
+$(foreach n,$(POSTMSG),$(PKGROOT)/$(n)):
+       ginstall -d $(dir $@)
+       @echo "Linking Post Messages"
+       ln $(DOWNLOADDIR)/$(notdir $@) $@
+
 $(foreach n,$(POSTMSG),$(DOWNLOADDIR)/$(notdir $(n))):
        @echo " ==> Generating $(notdir $@)"
-       @(exec >$@; \
-               echo "There are 32bit and 64bit versions of $(NAME) $(VERSION) 
binaries on the system installed:"; \
-               echo; \
-               echo "You can easily select between the versions with the 
alternatives(8)"; \
-               echo "system by executing"; \
-               echo; \
-               echo "  /opt/csw/sbin/alternatives --config $(subst 
.postmsg,,$(subst CSW,,$(notdir $@)))"; \
-               echo; \
-               echo "See http://www.opencsw.org/packages/alternatives for 
details." ; \
-       )
+       echo "" > $@
+       echo "---" >> $@
+       echo "" >> $@
+       echo "There are 32bit and 64bit versions of $(NAME) $(VERSION) binaries 
on the system installed:" >> $@
+       echo "" >> $@
+       echo "You can easily select between the versions with the 
alternatives(8)" >> $@
+       echo "system by executing" >> $@
+       echo "" >> $@
+       echo "  /opt/csw/sbin/alternatives --config $(subst .postmsg,,$(subst 
CSW,,$(notdir $@)))" >> $@
+       echo "" >> $@
+       echo "See http://www.opencsw.org/packages/alternatives for details." >> 
$@
+       echo "" >> $@
+       echo "---" >> $@
+       echo "" >> $@
        @$(MAKECOOKIE)
+
+test-installation:
+# Check if all binaries and libraries defined in the variables
+# BIN_NAMES_* and SO_NAMES_* are there
+       for n in $(BIN_NAMES_SERVER) $(BIN_NAMES_DEVEL) $(BIN_NAMES_CLIENT) 
$(BIN_NAMES_CONTRIB) ; do \
+               if [ -f $(PKGROOT)$(PGBINDIR)/$$n ] ; then\
+                       : ; \
+               else \
+                       echo "Extra binary defined $$n" ; \
+                       exit 1 ; \
+               fi ; \
+       done
+       for n in $(SO_NAMES_SERVER) $(SO_NAMES_CONTRIB) ; do \
+               if [ -f $(PKGROOT)$(libdir)/$(NAME)/$(BASE_VERSION_NODOT)/$$n ] 
; then\
+                       : ; \
+               else \
+                       echo "Extra library defined $$n" ; \
+                       exit 1 ; \
+               fi ; \
+       done
+# Check if all binaries and libraries in the pkgroot are contained in
+# the respective recipe variables.
+       for n in `gfind $(PKGROOT)$(PGBINDIR) -maxdepth 1 -type f` ; do \
+               echo "$(BIN_NAMES_SERVER) $(BIN_NAMES_DEVEL) 
$(BIN_NAMES_CLIENT) $(BIN_NAMES_CONTRIB)" | grep `basename $$n` >/dev/null 2>&1 
; \
+               if [ $$? -eq 0 ] ; then \
+                       : ; \
+               else \
+                       echo "Binary `basename $$n` not defined" ; \
+                       exit 1 ; \
+               fi ; \
+       done
+       for n in `gfind $(PKGROOT)$(libdir)/$(NAME)/$(BASE_VERSION_NODOT) 
-maxdepth 1 -type f` ; do \
+               echo "$(SO_NAMES_SERVER) $(SO_NAMES_CONTRIB)" | grep `basename 
$$n` >/dev/null 2>&1 ; \
+               if [ $$? -eq 0 ] ; then \
+                       : ; \
+               else \
+                       echo "Library `basename $$n` not defined" ; \
+                       exit 1 ; \
+               fi ; \
+       done

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

_______________________________________________
devel mailing list
[email protected]
https://lists.opencsw.org/mailman/listinfo/devel

Reply via email to