[csw-devel] SF.net SVN: gar:[2471] csw/mgar/gar/v2

dmichelsen at users.sourceforge.net dmichelsen at users.sourceforge.net
Sun Dec 7 17:45:33 CET 2008


Revision: 2471
          http://gar.svn.sourceforge.net/gar/?rev=2471&view=rev
Author:   dmichelsen
Date:     2008-12-07 16:45:33 +0000 (Sun, 07 Dec 2008)

Log Message:
-----------
mGAR v2: Adjust ISA installation pathes and other fixes

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

Modified: csw/mgar/gar/v2/gar.conf.mk
===================================================================
--- csw/mgar/gar/v2/gar.conf.mk	2008-12-07 16:35:37 UTC (rev 2470)
+++ csw/mgar/gar/v2/gar.conf.mk	2008-12-07 16:45:33 UTC (rev 2471)
@@ -17,7 +17,6 @@
 DOWNLOADDIR ?= download
 PARTIALDIR ?= $(DOWNLOADDIR)/partial
 WORKROOTDIR ?= work
-#WORKDIR ?= $(WORKROOTDIR)/build-$(ISA)
 WORKDIR ?= $(WORKROOTDIR)/build-$(MODULATION)
 COOKIEROOTDIR ?= cookies
 COOKIEDIR ?= $(COOKIEROOTDIR)/$(MODULATION)
@@ -31,8 +30,8 @@
 LOGDIR ?= log
 
 # Outbound proxies
-http_proxy ?= http://svn:8080
-ftp_proxy  ?= http://svn:8080
+http_proxy ?= 
+ftp_proxy  ?= 
 export http_proxy ftp_proxy
 
 # Don't do full-dependency builds by default
@@ -41,10 +40,10 @@
 # A directory containing cached files. It can be created
 # manually, or with 'make garchive' once you've started
 # downloading required files (say with 'make paranoid-checksum'.
-GARCHIVEDIR ?= /export/medusa/src
+GARCHIVEDIR ?= /home/src
 
 # Space separated list of paths to search for DISTFILES.
-GARCHIVEPATH ?= /export/medusa/src
+GARCHIVEPATH ?= $(GARCHIVEDIR)
 
 # Select compiler
 # GARCOMPILER can be either GNU/SUN which selects the default
@@ -78,30 +77,34 @@
 # These are the standard directory name variables from all GNU
 # makefiles.  They're also used by autoconf, and can be adapted
 # for a variety of build systems.
-BUILD_PREFIX     ?= /opt/csw
+BUILD_PREFIX       ?= /opt/csw
 
-prefix           ?= $(BUILD_PREFIX)
-exec_prefix      ?= $(prefix)
-bindir           ?= $(exec_prefix)/bin
-gnudir           ?= $(exec_prefix)/gnu
-sbindir          ?= $(exec_prefix)/sbin
-libexecdir       ?= $(exec_prefix)/libexec
-datadir          ?= $(prefix)/share
-sysconfdir       ?= $(prefix)/etc
-sharedstatedir   ?= $(prefix)/share
-localstatedir    ?= $(prefix)/var
-libdir           ?= $(exec_prefix)/lib
-infodir          ?= $(sharedstatedir)/info
-lispdir          ?= $(sharedstatedir)/emacs/site-lisp
-includedir       ?= $(prefix)/include
-mandir           ?= $(sharedstatedir)/man
-docdir           ?= $(sharedstatedir)/doc
-sourcedir        ?= $(prefix)/src
-licensedir       ?= $(prefix)/licenses
-sharedperl       ?= $(sharedstatedir)/perl
-perllib          ?= $(libdir)/perl
-perlcswlib       ?= $(perllib)/csw
-perlpackroot     ?= $(perlcswlib)/auto
+prefix             ?= $(BUILD_PREFIX)
+exec_prefix        ?= $(prefix)
+bindir_install     ?= $(exec_prefix)/bin
+bindir             ?= $(abspath $(bindir_install)/$(MM_BINDIR))
+gnudir             ?= $(exec_prefix)/gnu
+sbindir_install    ?= $(exec_prefix)/sbin
+sbindir            ?= $(abspath $(sbindir_install)/$(MM_BINDIR))
+libexecdir_install ?= $(exec_prefix)/libexec
+libexecdir         ?= $(abspath $(libexecdir_install)/$(MM_BINDIR))
+datadir            ?= $(prefix)/share
+sysconfdir         ?= $(prefix)/etc
+sharedstatedir     ?= $(prefix)/share
+localstatedir      ?= $(prefix)/var
+libdir_install     ?= $(exec_prefix)/lib
+libdir             ?= $(abspath $(libdir_install)/$(MM_LIBDIR))
+infodir            ?= $(sharedstatedir)/info
+lispdir            ?= $(sharedstatedir)/emacs/site-lisp
+includedir         ?= $(prefix)/include
+mandir             ?= $(sharedstatedir)/man
+docdir             ?= $(sharedstatedir)/doc
+sourcedir          ?= $(prefix)/src
+licensedir         ?= $(prefix)/licenses
+sharedperl         ?= $(sharedstatedir)/perl
+perllib            ?= $(libdir)/perl
+perlcswlib         ?= $(perllib)/csw
+perlpackroot       ?= $(perlcswlib)/auto
 
 # DESTDIR is used at INSTALL TIME ONLY to determine what the
 # filesystem root should be.
@@ -415,14 +418,16 @@
 # the links 32 and 64.
 ifeq ($(origin LINKER_FLAGS), undefined)
 ifdef NOISALIST
-LINKER_FLAGS = $(foreach ELIB,$(libdir) $(EXTRA_LIB),-L$(abspath $(ELIB)/$(MM_LIBDIR)) -R$(abspath $(ELIB)/$(MM_LIBDIR))
+LINKER_FLAGS = $(foreach ELIB,$(libdir_install) $(EXTRA_LIB),-L$(abspath $(ELIB)/$(MM_LIBDIR)) -R$(abspath $(ELIB)/$(MM_LIBDIR))
 else
 # If we use $ISALIST it is a good idea to also add $MM_LIBDIR as there
 # may not be a subdirectory for the 32-bit standard case (this would normally
 # be a symlink of the form lib/sparcv8 -> . and lib/i386 -> .). This is most likely
 # the case for libraries in $(EXTRA_LIBS) for which no links generated in CSWcommon.
-LINKER_FLAGS = $(foreach ELIB,$(libdir) $(EXTRA_LIB),-L$(abspath $(ELIB)/$(MM_LIBDIR)) -R$(ELIB)/\\\\\\\$$\$$ISALIST -R$(abspath $(ELIB)/$(MM_LIBDIR)))
-#LINKER_FLAGS = $(foreach ELIB,$(libdir) $(EXTRA_LIB),-L$(abspath $(ELIB)/$(MM_LIBDIR)) -R'$(abspath $(ELIB)/\$$ISALIST)' -R$(abspath $(ELIB)/$(MM_LIBDIR)))
+# The quoting of $ISALIST is unfortunately dependend on how often the linker flags
+# are expanded until execution. The definition here is suitable for autotools.
+# For other buildtools it may be suitable to add definitions with other quotings.
+LINKER_FLAGS = $(foreach ELIB,$(libdir_install) $(EXTRA_LIB),-L$(abspath $(ELIB)/$(MM_LIBDIR)) -R$(ELIB)/\\\\\\\$$\$$ISALIST -R$(abspath $(ELIB)/$(MM_LIBDIR)))
 endif
 endif
 
@@ -454,12 +459,11 @@
 # 1. Make sure everything works fine for SOS12
 # 2. Allow us to use programs we just built. This is a bit complicated,
 #    but we want PATH to be a recursive variable, or 'gmake isaenv' won't work
-PATH = $(if $(filter SOS12,$(GARCOMPILER)),$(abspath $(GARBIN)/sos12-wrappers):)$(if $(IGNORE_DESTDIR),,$(abspath $(DESTDIR)$(bindir)/$(MM_BINDIR)):$(DESTDIR)$(bindir):$(abspath $(DESTDIR)$(sbindir)/$(MM_BINDIR)):$(DESTDIR)$(sbindir):)$(abspath $(bindir)/$(MM_BINDIR)):$(bindir):$(abspath $(sbindir)/$(MM_BINDIR)):$(sbindir):$(CC_HOME)/bin:$(abspath $(GARBIN)):/usr/bin:/usr/sbin:/usr/java/bin:/usr/ccs/bin
+PATH = $(if $(filter SOS12,$(GARCOMPILER)),$(abspath $(GARBIN)/sos12-wrappers):)$(if $(IGNORE_DESTDIR),,$(abspath $(DESTDIR)$(bindir_install)/$(MM_BINDIR)):$(DESTDIR)$(bindir_install):$(abspath $(DESTDIR)$(sbindir_install)/$(MM_BINDIR)):$(DESTDIR)$(sbindir_install):)$(abspath $(bindir_install)/$(MM_BINDIR)):$(bindir_install):$(abspath $(sbindir_install)/$(MM_BINDIR)):$(sbindir_install):$(CC_HOME)/bin:$(abspath $(GARBIN)):/usr/bin:/usr/sbin:/usr/java/bin:/usr/ccs/bin
 
 # This is for foo-config chaos
-#PKG_CONFIG_PATH := $(abspath $(libdir)/$(MM_LIBDIR)/pkgconfig):$(libdir)/pkgconfig:$(PKG_CONFIG_PATH)
-PKG_CONFIG_DIRS ?= $(libdir) $(EXTRA_PKG_CONFIG_DIRS)
-PKG_CONFIG_PATH ?= $(foreach D,$(PKG_CONFIG_DIRS),$(abspath $D/$(MM_LIBDIR)/pkgconfig))
+PKG_CONFIG_DIRS ?= $(libdir_install) $(EXTRA_PKG_CONFIG_DIRS)
+PKG_CONFIG_PATH ?= $(call MAKEPATH,$(foreach D,$(PKG_CONFIG_DIRS),$(abspath $D/$(MM_LIBDIR)/pkgconfig)) $(EXTRA_PKGCONFIG_PATH))
 
 #
 # Mirror Sites
@@ -521,6 +525,9 @@
 
 COMMON_EXPORTS ?= $(DIRECTORY_EXPORTS) $(COMPILER_EXPORTS) $(GARPKG_EXPORTS) $(EXTRA_COMMON_EXPORTS)
 
+# LD_OPTIONS = $(LINKER_FLAGS)
+# COMMON_EXPORTS += LD_OPTIONS
+
 CONFIGURE_EXPORTS ?= $(COMMON_EXPORTS) $(EXTRA_CONFIGURE_EXPORTS) PKG_CONFIG_PATH DESTDIR
 BUILD_EXPORTS     ?= $(COMMON_EXPORTS) $(EXTRA_BUILD_EXPORTS)
 TEST_EXPORTS      ?= $(COMMON_EXPORTS) $(EXTRA_TEST_EXPORTS)
@@ -531,6 +538,7 @@
 TEST_ENV      ?= $(foreach TTT,$(TEST_EXPORTS),$(TTT)="$($(TTT))")
 INSTALL_ENV   ?= $(foreach TTT,$(INSTALL_EXPORTS),$(TTT)="$($(TTT))")
 
+
 # Standard Scripts
 CONFIGURE_SCRIPTS ?= $(WORKSRC)/configure
 BUILD_CHECK_SCRIPTS ?= modulated-check
@@ -544,7 +552,8 @@
 INSTALL_SCRIPTS   ?= $(WORKSRC)/Makefile
 
 # Global environment
-export PATH PKG_CONFIG_PATH
+#export PATH PKG_CONFIG_PATH
+export PATH
 
 # prepend the local file listing
 FILE_SITES = $(foreach DIR,$(FILEDIR) $(GARCHIVEPATH),file://$(DIR)/)
@@ -599,11 +608,11 @@
 _isaenv:
 	@echo;								\
 	echo "* ISA $(ISA)";						\
-	echo "       PATH = $(PATH)";					\
-	echo "     CFLAGS = $(CFLAGS)";					\
-	echo "   CXXFLAGS = $(CXXFLAGS)";				\
-	echo "   CPPFLAGS = $(CPPFLAGS)";				\
-	echo "    LDFLAGS = $(LDFLAGS)";				\
-	#echo " LD_OPTIONS = $(LD_OPTIONS)";				\
-	echo "    ASFLAGS = $(ASFLAGS)";				\
-	echo "   OPTFLAGS = $(OPTFLAGS)"
+	echo "           PATH = $(PATH)";				\
+	echo "PKG_CONFIG_PATH = $(PKG_CONFIG_PATH)";			\
+	echo "         CFLAGS = $(CFLAGS)";				\
+	echo "       CXXFLAGS = $(CXXFLAGS)";				\
+	echo "       CPPFLAGS = $(CPPFLAGS)";				\
+	echo "        LDFLAGS = $(LDFLAGS)";				\
+	echo "        ASFLAGS = $(ASFLAGS)";				\
+	echo "       OPTFLAGS = $(OPTFLAGS)"

Modified: csw/mgar/gar/v2/gar.mk
===================================================================
--- csw/mgar/gar/v2/gar.mk	2008-12-07 16:35:37 UTC (rev 2470)
+++ csw/mgar/gar/v2/gar.mk	2008-12-07 16:45:33 UTC (rev 2471)
@@ -546,6 +546,24 @@
 # Replace files by itself terminating on first match
 _INC_EXT_RULE += $(foreach F,$(_MERGE_INCLUDE_FILES),-s ",^\(\.$F\)\$,\1,")
 
+# These are used during merge phase to determine the base installation directory
+MERGEBASE_$(bindir)     ?= $(bindir_install)
+MERGEBASE_$(sbindir)    ?= $(sbindir_install)
+MERGEBASE_$(libexecdir) ?= $(libexecdir_install)
+MERGEBASE_$(libdir)     ?= $(libdir_install)
+
+define mergebase
+$(if $(MERGEBASE_$(1)),$(MERGEBASE_$(1)),$(1))
+endef
+
+# A package is compiled for the pathes defined in $(bindir), $(libdir), etc.
+# These may not be the standard pathes, because specific ISA compilation
+# could have appended e. g. /64 for .pc-pathes to be correct. Anyway these
+# pathes may need to be rewritten e. g. from lib/64 to lib/amd64. Here,
+# $(libdir) has the memorymodel-directory appended, whereas $(libdir_install)
+# has not, so we use this one for appending.
+
+
 _PAX_ARGS = $(_INC_EXT_RULE) $(EXTRA_PAX_ARGS)
 
 # The basic merge merges the compiles for all ISAs on the current architecture
@@ -558,13 +576,15 @@
 
 # Copy the whole tree verbatim
 merge-copy-all: $(PKGROOT) $(INSTALLISADIR)
-	@(cd $(INSTALLISADIR); pax -r -w -v $(_PAX_ARGS) . $(PKGROOT))
+	@(cd $(INSTALLISADIR); pax -r -w -v $(_PAX_ARGS) \
+		$(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),.$(call mergebase,$(DIR))/,p") \
+		. $(PKGROOT))
 	@$(MAKECOOKIE)
 
 # Copy only the merge directories
 merge-copy-only: $(PKGROOT)
 	@(cd $(INSTALLISADIR); pax -r -w -v $(_PAX_ARGS) \
-		$(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),\1,p") -s ",.*,," \
+		$(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),.$(call mergebase,$(DIR))/,p") -s ",.*,," \
 		. $(PKGROOT) \
 	)
 	@$(MAKECOOKIE)
@@ -572,7 +592,7 @@
 # Copy the whole tree and relocate the directories in $(MERGE_DIRS)
 merge-copy-relocate: $(PKGROOT) $(INSTALLISADIR)
 	@(cd $(INSTALLISADIR); pax -r -w -v $(_PAX_ARGS) \
-		$(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),\1$(ISA)/,p") \
+		$(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),.$(call mergebase,$(DIR))/$(ISA)/,p") \
 		. $(PKGROOT) \
 	)
 	@$(MAKECOOKIE)
@@ -580,7 +600,7 @@
 # Copy only the relocated directories
 merge-copy-relocated-only: $(PKGROOT) $(INSTALLISADIR)
 	@(cd $(INSTALLISADIR); pax -r -w -v $(_PAX_ARGS) \
-		$(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),\1$(ISA)/,p") -s ",.*,," \
+		$(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),.$(call mergebase,$(DIR))/$(ISA)/,p") -s ",.*,," \
 		 . $(PKGROOT) \
 	)
 	@$(MAKECOOKIE)

Modified: csw/mgar/gar/v2/gar.pkg.mk
===================================================================
--- csw/mgar/gar/v2/gar.pkg.mk	2008-12-07 16:35:37 UTC (rev 2470)
+++ csw/mgar/gar/v2/gar.pkg.mk	2008-12-07 16:45:33 UTC (rev 2471)
@@ -132,6 +132,9 @@
 # This can be used to automatically distribute the files to different packages
 #
 
+$(foreach SPEC,$(_PKG_SPECS),$(eval _PROTOTYPE_FILTER_$(SPEC) ?= | $(PROTOTYPE_FILTER_$(SPEC))))
+$(foreach SPEC,$(_PKG_SPECS),$(eval _PROTOTYPE_FILTER_$(SPEC) ?= | $(PROTOTYPE_FILTER)))
+
 # This file contains all installed pathes. This can be used as a starting point
 # for distributing files to individual packages.
 PROTOTYPE = $(WORKDIR)/prototype
@@ -154,14 +157,19 @@
 	               ) \
 	              <$(PROTOTYPE); \
 	   if [ -n "$(EXTRA_PKGFILES_$*)" ]; then echo "$(EXTRA_PKGFILES_$*)"; fi \
-	  ) >$@; \
+	  ) $(_PROTOTYPE_FILTER_$*) >$@; \
 	else \
-	  cp $(PROTOTYPE) $@; \
+	  cat $(PROTOTYPE) $(_PROTOTYPE_FILTER_$*) >$@; \
 	fi
 
 $(WORKDIR)/%.prototype-$(GARCH): | $(WORKDIR)/%.prototype
-	@cp $(WORKDIR)/$*.prototype $@
+	@cat $(WORKDIR)/$*.prototype $(_PROTOTYPE_FILTER_$*) >$@
 
+# This is a target used to generate all prototypes for debugging purposes.
+# On a normal packaging workflow this is not used.
+prototypes: extract merge $(SPKG_DESTDIRS) pre-package $(foreach S,$(_PKG_SPECS),$(WORKDIR)/$S.prototype-$(GARCH))
+	@$(DONADA)
+
 # $_EXTRA_GAR_PKGS is for dynamic dependencies added by GAR itself (like CSWisaexec or CSWcswclassutils)
 .PRECIOUS: $(WORKDIR)/%.depend
 $(WORKDIR)/%.depend:


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



More information about the devel mailing list