6777135 X builds should record version info in ELF comments
authorAlan Coopersmith <Alan.Coopersmith@Sun.COM>
Wed, 26 Nov 2008 16:23:15 -0800
changeset 591 a2c6b61a92aa
parent 590 923763de5bba
child 592 6a0eff2e591f
6777135 X builds should record version info in ELF comments
open-src/README
open-src/app/Makefile.inc
open-src/app/rss-glx/Makefile
open-src/app/xpm/Makefile
open-src/app/xscreensaver/Makefile
open-src/common/Makefile.inc
open-src/common/set-elf-comments.pl
open-src/doc/docbook-utils/Makefile
open-src/driver/Makefile.inc
open-src/lib/Makefile.inc
open-src/lib/fontconfig/Makefile
open-src/lib/freetype/Makefile
open-src/util/Makefile.inc
open-src/xserver/xorg/Makefile
open-src/xserver/xvnc/Makefile
--- a/open-src/README	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/README	Wed Nov 26 16:23:15 2008 -0800
@@ -202,6 +202,11 @@
 MODULE_BUILD_DEPS, MODULE_INSTALL_DEPS
  - Makefile targets/rules that the default_* rules list as dependencies
 
+MODULE_ADD_SOURCE_TARGETS, MODULE_ADD_CONFIGURE_TARGETS, 
+MODULE_ADD_BUILD_TARGETS, MODULE_ADD_INSTALL_TARGETS
+ - Additional targets/rules run by "make source", "make configure", etc.
+   in addition to default_* if *_TARGETS is not overridden.
+
 MODULE_CONFIG_OPTS
  - Additional arguments passed to configure script by default_config rule
 
@@ -339,6 +344,8 @@
  - Makefile targets/rules to run for "make source", "make configure",
    "make build", and "make install"
    Defaults: default_source, default_configure, default_build, default_install
+   The *_TARGETS may be appended to by setting the MODTYPE_ADD_*_TARGETS 
+   and/or MODULE_ADD_*_TARGETS variables.
 
 AUTOCONF_TARGET
  - File created by running the default_configure rule.   If this file exists,
@@ -385,6 +392,10 @@
 	- MODTYPE_CONFIGURE_DEPS
 	- MODTYPE_BUILD_DEPS
 	- MODTYPE_INSTALL_DEPS
+	- MODTYPE_ADD_SOURCE_TARGETS
+	- MODTYPE_ADD_CONFIGURE_TARGETS
+	- MODTYPE_ADD_BUILD_TARGETS
+	- MODTYPE_ADD_INSTALL_TARGETS
 	- MODTYPE_CONFIG_OPTS
 	- MODTYPE_CONFIG_ENV
 	- MODTYPE_CFLAGS
--- a/open-src/app/Makefile.inc	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/app/Makefile.inc	Wed Nov 26 16:23:15 2008 -0800
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.11	08/08/08
+# @(#)Makefile.inc	1.12	08/11/26
 #
 
 PWD:sh=pwd
@@ -54,6 +54,9 @@
 # libXaw mess straightened out
 MODTYPE_LD_OPTIONS = $(XAW_LD_OPTIONS)
 
+# Set comments in ELF binaries to help identify versions/builds
+MODTYPE_ADD_BUILD_TARGETS=set-elf-comments
+
 ### Include common rulesets
 include $(TOP)/common/Makefile.inc
 
--- a/open-src/app/rss-glx/Makefile	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/app/rss-glx/Makefile	Wed Nov 26 16:23:15 2008 -0800
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.2	08/08/08
+# @(#)Makefile	1.3	08/11/26
 #
 
 # Package name used in tarballs
@@ -103,6 +103,7 @@
 
 install_gen:: $(RSS_GLX_BIN) $(XSS_AD)
 	$(PROTODIR)$(XSS_DIR)/hacks/rss-glx_install.pl $(XSS_AD)
+	mkdir -p $(PROTODIR)$(X11_DIR)/share/man/man6
 	-case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac;
 	(cd $(SOURCE_DIR) ; \
 	 for m in $(SUNTOUCHED_MANPAGES) ; do \
--- a/open-src/app/xpm/Makefile	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/app/xpm/Makefile	Wed Nov 26 16:23:15 2008 -0800
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.9	08/08/08
+# @(#)Makefile	1.10	08/11/26
 #
 
 # Package name used in tarballs
@@ -50,10 +50,6 @@
 SUN_PACKAGE=SUNWxwplt
 MODULE_STABILITY=Uncommitted
 
-# Binaries built in tree
-BUILD_TARGETS=SOURCE_DIR/cxpm/cxpm SOURCE_DIR/sxpm/sxpm 
-BUILD_TARGETS_SET=yes
-
 INSTALL_TARGETS=install_xpm_apps
 INSTALL_TARGETS_SET=yes
 
@@ -65,8 +61,6 @@
 
 include ../Makefile.inc
 
-$(BUILD_TARGETS): default_build
-
 install_xpm_apps:: $(BUILD_TARGETS)
 	(cd $(SOURCE_DIR)/cxpm ; $(MAKE) $(MAKEFLAGS) -e DESTDIR=$(PROTODIR) install)
 	(cd $(SOURCE_DIR)/sxpm ; $(MAKE) $(MAKEFLAGS) -e DESTDIR=$(PROTODIR) install)
--- a/open-src/app/xscreensaver/Makefile	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/app/xscreensaver/Makefile	Wed Nov 26 16:23:15 2008 -0800
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.97	08/08/08
+# @(#)Makefile	1.98	08/11/26
 #
 
 # Package name used in tarballs
@@ -109,9 +109,6 @@
 
 MODULE_LDFLAGS="-R/usr/X11/lib"
 
-# BINARY built in tree
-XS_BIN=$(SOURCE_DIR)/xscreensaver
-
 # Messages for translation
 XS_POT=$(SOURCE_DIR)/po/xscreensaver.pot
 POT_DEST=$(PROTODIR)/usr/X11/share/locale/C/LC_MESSAGES
@@ -145,10 +142,9 @@
 
 MODULE_MAKEFLAGS=-e install_prefix=$(PROTODIR) 
 
-BUILD_TARGETS=$(XS_BIN) $(XS_MAN) $(XS_POT)
-BUILD_TARGETS_SET=yes
+MODULE_ADD_BUILD_TARGETS=$(XS_MAN) $(XS_POT) set-install-perms
 
-INSTALL_TARGETS=install_xs
+INSTALL_TARGETS=set-install-perms default_install install_xs
 INSTALL_TARGETS_SET=yes
 
 include ../Makefile.inc
@@ -169,8 +165,6 @@
 	    fi ; \
 	done
 
-$(XS_BIN): default_build
-
 $(XS_POT): $(CONFIGURE_TARGET)
 	(cd $(SOURCE_DIR)/po ; \
 	 PATH=/opt/jdsbld/bin:/opt/sfw/bin:$(PATH) ; export PATH ; \
@@ -198,13 +192,14 @@
 	    -a '{Availability, SUNWxscreensaver-hacks-gl} {Interface Stability, Private}' \
 		-p /usr/X11/lib/xscreensaver/hacks/ $(SOURCE_DIR)/hacks/glx/*.man
 
-install_xs:: $(XS_BIN) $(XS_MAN) $(XS_POT)
-	chmod +w $(SOURCE_DIR)/hacks/vidwhacker \
-		$(SOURCE_DIR)/hacks/webcollage \
-		$(SOURCE_DIR)/driver/xscreensaver-getimage-file \
-		$(SOURCE_DIR)/driver/xscreensaver-getimage-video
-	(cd $(SOURCE_DIR) ; chmod a+x install-sh intltool-*; \
-	 $(MAKE) $(MODULE_MAKEFLAGS) install )
+set-install-perms:
+	(cd $(SOURCE_DIR) ; \
+	 chmod a+x install-sh intltool-*; \
+	 chmod +w hacks/vidwhacker hacks/webcollage \
+		driver/xscreensaver-getimage-file \
+		driver/xscreensaver-getimage-video )
+
+install_xs:: $(BUILD_TARGETS)
 	mkdir -p $(POT_DEST)
 	cp -pf $(XS_POT) $(POT_DEST)/xscreensaver.pot
 	mkdir -p $(LOGO_DEST)
--- a/open-src/common/Makefile.inc	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/common/Makefile.inc	Wed Nov 26 16:23:15 2008 -0800
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.95	08/11/18
+# @(#)Makefile.inc	1.96	08/11/26
 #
 
 ### Default rules
@@ -84,16 +84,24 @@
 
 # Set default rules if not set in module/modtype Makefile
 SOURCE_TARGETS_DEFAULT		= $(SOURCE_TARGETS_SET:yes=$(POUND_SIGN))
-$(SOURCE_TARGETS_DEFAULT)	SOURCE_TARGETS=default_source
+$(SOURCE_TARGETS_DEFAULT)	SOURCE_TARGETS=default_source \
+					$(MODTYPE_ADD_SOURCE_TARGETS) \
+					$(MODULE_ADD_SOURCE_TARGETS)
 
 CONFIGURE_TARGETS_DEFAULT	= $(CONFIGURE_TARGETS_SET:yes=$(POUND_SIGN))
-$(CONFIGURE_TARGETS_DEFAULT)	CONFIGURE_TARGETS=default_configure
+$(CONFIGURE_TARGETS_DEFAULT)	CONFIGURE_TARGETS=default_configure \
+					$(MODTYPE_ADD_CONFIGURE_TARGETS) \
+					$(MODULE_ADD_CONFIGURE_TARGETS)
 
 BUILD_TARGETS_DEFAULT		= $(BUILD_TARGETS_SET:yes=$(POUND_SIGN))
-$(BUILD_TARGETS_DEFAULT)	BUILD_TARGETS=default_build
+$(BUILD_TARGETS_DEFAULT)	BUILD_TARGETS=default_build \
+					$(MODTYPE_ADD_BUILD_TARGETS) \
+					$(MODULE_ADD_BUILD_TARGETS)
 
 INSTALL_TARGETS_DEFAULT		= $(INSTALL_TARGETS_SET:yes=$(POUND_SIGN))
-$(INSTALL_TARGETS_DEFAULT)	INSTALL_TARGETS=default_install
+$(INSTALL_TARGETS_DEFAULT)	INSTALL_TARGETS=default_install \
+					$(MODTYPE_ADD_INSTALL_TARGETS) \
+					$(MODULE_ADD_INSTALL_TARGETS)
 
 # Additional flags to pass to make in 32-bit & 64-bit builds
 BUILD_32_FLAGS= BUILD_DIR=$(BUILD_DIR_32) ARCH_FLAGS="$(ARCH32_FLAGS)" \
@@ -397,7 +405,10 @@
 	$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
 	$(MODTYPE_INSTALL_MAKEFLAGS) $(MODULE_INSTALL_MAKEFLAGS) \
 
-default_install:: $(BUILD_TARGETS)
+# Dependencies for make install step
+INSTALL_DEPS = $(BUILD_TARGETS) $(MODTYPE_INSTALL_DEPS) $(MODULE_INSTALL_DEPS)
+
+default_install:: $(INSTALL_DEPS)
 	(cd $(SOURCE_DIR) ; \
 	 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS) \
 	 install)
@@ -412,6 +423,14 @@
 	 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS) \
 	 $(subdir_cmd))
 
+# Set comments in ELF binaries to help identify versions/builds
+ELF_COMMENTS = $(MODULE_NAME) $(MODULE_VERSION)
+ELF_COMMENTS += $(MODTYPE_ELF_COMMENTS)$(MODULE_ELF_COMMENTS)
+
+set-elf-comments:
+	$(TOP)/common/set-elf-comments.pl -B $(TOP)/../packages/pkgversion \
+	 -M '$(ELF_COMMENTS)' $(SOURCE_DIR)
+
 
 ### Other tools/dependencies needed to build
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/common/set-elf-comments.pl	Wed Nov 26 16:23:15 2008 -0800
@@ -0,0 +1,105 @@
+#! /usr/perl5/bin/perl
+#
+# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+# ident	"@(#)set-elf-comments.pl	1.1	08/11/26 SMI"
+#
+
+#
+# Set version information in ELF files to give hints to help in troubleshooting
+#
+# Usage: set-elf-comments.pl -B <path/to/pkgversion> -M "module version" <path>
+#
+
+use strict;
+use warnings;
+use Getopt::Std;
+use POSIX qw(strftime);
+use File::Find;
+
+my %opts;
+getopts('B:M:', \%opts);
+
+my $module_version_info = '@(#)';
+if (exists($opts{'M'})) {
+  $module_version_info .= $opts{'M'};
+} else {
+  die qq(Must specify -M "module version");
+}
+
+my $build_info = strftime("%e %b %Y", localtime);
+
+if (exists($opts{'B'})) {
+  my $build_version_file = $opts{'B'};
+  open my $VERS, '<', $build_version_file
+      or die "Can't open $build_version_file for reading: $!\n";
+
+  while ($_ = <$VERS>) {
+    if ($_ =~ m/^BUILD="(.*)"/) {
+      my $v = $1 / 100.0;
+      if ($v >= 1.0) {
+	$build_info = "build $v - " . $build_info;
+      }
+    }
+  }
+  close $VERS;
+}
+
+$module_version_info .= " ($build_info)";
+$module_version_info =~ s/\s+$//ms;
+
+sub scan_file {
+  # skip sources & intermediate build files that we don't ship
+  return if $_ =~ m/\.[acho]$/ims;
+
+  # skip the *.uc files used by xf86-video-rendition for firmware
+  return if $_ =~ m/\.uc$/ms;
+
+  # If the file is not a symlink, is a regular file, and is at least 256 bytes
+  if ((! -l $_) && (-f _) && (-s _ > 256)) {
+    open my $IN, '<', $_ 
+      or die "Can't open $_ for reading: $!\n";
+
+    my $magic_number;
+    sysread($IN, $magic_number, 4)
+      or die "Can't read from $_: $!\n";
+
+    close $IN;
+
+    if ($magic_number eq "\177ELF") {
+      my @cmd = ('/usr/bin/mcs', '-a', $module_version_info, '-c', $_);
+
+      print join(' ', @cmd), "\n";
+      system(@cmd) == 0
+	or die "*** mcs $File::Find::name failed: $?\n";
+    }
+  }
+}
+
+
+find(\&scan_file, @ARGV);
--- a/open-src/doc/docbook-utils/Makefile	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/doc/docbook-utils/Makefile	Wed Nov 26 16:23:15 2008 -0800
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.5	08/08/08
+# @(#)Makefile	1.6	08/11/26
 #
 
 # Package name used in tarballs
@@ -59,7 +59,7 @@
 MODULE_MAKE_SET=yes
 
 # What to build
-BUILD_TARGETS = $(GNUMAKE) default_build catalog_build
+MODULE_ADD_BUILD_TARGETS = catalog_build
 
 ### Include common rulesets
 include ../Makefile.inc
--- a/open-src/driver/Makefile.inc	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/driver/Makefile.inc	Wed Nov 26 16:23:15 2008 -0800
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.12	08/08/10
+# @(#)Makefile.inc	1.13	08/11/26
 #
 
 PWD:sh=pwd
@@ -52,6 +52,9 @@
 MODTYPE_BUILD_32_FLAGS=ARCHBINSUBDIR="$(SUBDIR32)"
 MODTYPE_BUILD_64_FLAGS=ARCHBINSUBDIR="$(SUBDIR64)"
 
+# Set comments in ELF binaries to help identify versions/builds
+MODTYPE_ADD_BUILD_TARGETS=set-elf-comments
+
 MODTYPE_CPPFLAGS= \
 	-I$(PROTODIR)/usr/X11/include/xorg	\
 	-I$(PROTODIR)/usr/X11/include/drm	\
--- a/open-src/lib/Makefile.inc	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/lib/Makefile.inc	Wed Nov 26 16:23:15 2008 -0800
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.11	08/08/08
+# @(#)Makefile.inc	1.12	08/11/26
 #
 
 PWD:sh=pwd
@@ -64,6 +64,9 @@
 # Additional environment variables to GNU autoconf configure script
 MODTYPE_CONFIG_ENV = LIB_MAN_SUFFIX=$(LIB_MAN_SUFFIX)
 
+# Set comments in ELF binaries to help identify versions/builds
+MODTYPE_ADD_BUILD_TARGETS=set-elf-comments
+
 # Additional arguments to pass to make when running make install
 MODTYPE_INSTALL_MAKEFLAGS = \
 	libdir=$(MODULE_PREFIX)/lib$(MODULE_ADD_LIB_SUBDIR)$(ARCHLIBSUBDIR)
--- a/open-src/lib/fontconfig/Makefile	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/lib/fontconfig/Makefile	Wed Nov 26 16:23:15 2008 -0800
@@ -30,12 +30,9 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.77	08/08/08
+# @(#)Makefile	1.78	08/11/26
 #
 
-PWD:sh=pwd
-TOP=$(PWD)/../..
-
 # Package name used in tarballs
 MODULE_NAME=fontconfig
 
@@ -60,8 +57,13 @@
 # Library name (used for specfiles/mapfiles)
 LIBNAME=fontconfig
 
-# Directory created by unpacking source
-SOURCE_DIR=$(BUILD_DIR)/$(MODULE_NAME)-$(MODULE_VERSION)
+# Man pages to apply Sun footer to & attributes to list
+SUNTOUCHED_MANPAGES=*/*.1 doc/*.3 doc/*.5
+SUN_PACKAGE=SUNWfontconfig
+MODULE_STABILITY=Volatile
+LIB_MAN_SUFFIX=3fontconfig
+MODULE_MTLEVEL=Unknown
+MODULE_MTLEVEL_set=yes
 
 # Install to /usr, not /usr/X11
 MODULE_PREFIX=/usr
@@ -78,8 +80,7 @@
 MODULE_MAKE_SET=yes
 
 # What to build
-BUILD_TARGETS=$(GNUMAKE) default_build $(SOURCE_DIR)/fonts.conf-SUNW
-BUILD_TARGETS_SET=yes
+MODULE_ADD_BUILD_TARGETS = $(SOURCE_DIR)/fonts.conf-SUNW
 
 # Paths to find libraries
 MODULE_BUILD_ENV = LD_LIBRARY_PATH=$(PROTODIR)/usr/lib$(LIBSUBDIR) \
@@ -94,6 +95,10 @@
 FONTCONFIG_SMF_METHOD_dir=$(PROTODIR)/lib/svc/method
 FONTCONFIG_SMF_METHOD=$(FONTCONFIG_SMF_METHOD_dir)/fc-cache
 
+# Additional targets to install beyond the default_install
+MODULE_ADD_INSTALL_TARGETS = fontconfig-sunman-install \
+	$(FONTCONFIG_SMF_MANIFEST) $(FONTCONFIG_SMF_METHOD)
+
 # Include common rulesets
 include ../Makefile.inc
 
@@ -102,64 +107,32 @@
 
 $(SOURCE_DIR)/fonts.conf: $(UNPACK_TARGET) $(CONFIGURE_TARGETS)
 
-install_gen:: $(LIB_BUILT) $(SOURCE_DIR)/fonts.conf-SUNW $(FONTCONFIG_SMF_MANIFEST) $(FONTCONFIG_SMF_METHOD)
+install_gen:: $(SOURCE_DIR)/fonts.conf-SUNW
 	rm $(PROTODIR)/etc/fonts/fonts.conf
 	cp $(SOURCE_DIR)/fonts.conf-SUNW $(PROTODIR)/etc/fonts/fonts.conf
-	$(MAKE) $(MAKEFLAGS) fontconfig-sunman-install
 
 $(FONTCONFIG_SMF_MANIFEST): fc-cache.xml
 	/usr/sbin/svccfg validate fc-cache.xml
 	mkdir -p $(FONTCONFIG_SMF_MANIFEST_dir)
-	if [ -f $@ ] ; then /bin/rm -f $@ ; fi
-	cp fc-cache.xml $@
+	$(INSTALL_SCRIPT) -c -m 0444 fc-cache.xml $@
 
 $(FONTCONFIG_SMF_METHOD): fc-cache.sh
 	mkdir -p $(FONTCONFIG_SMF_METHOD_dir)
-	if [ -f $@ ] ; then /bin/rm -f $@ ; fi
-	cp fc-cache.sh $@
-	chmod 755 $@
-
-# Quick inline perl script to fix up fc-cache & fc-list man pages
-FC_MAN_FIX=perl -n -MPOSIX=strftime -e \
-  'BEGIN { \
-	$$date=strftime("%e %b %Y",localtime((stat($$ARGV[0]))[9])); \
-	print "\047\\\" t\n"; \
-   } \
-   { \
-	s|__vendorversion__|"$$date"| ; \
-	s|__package__|SUNWfontconfig| ; \
-	s|fontconfig\(3\)|libfontconfig\(3lib\)|; \
-	s%^\\\|\.%.IR \\|.%; \
-	print \
-   }'
+	$(INSTALL_SCRIPT) -c -m 0755 fc-cache.sh $@
 
 FC_MAN_DIR=$(PROTODIR)/usr/share/man
 
 fontconfig-sunman-install:
-	mkdir -p $(FC_MAN_DIR)/man1 $(FC_MAN_DIR)/man4 $(FC_MAN_DIR)/man3lib
-	$(FC_MAN_FIX) $(FC_MAN_DIR)/man5/fonts-conf.5 sunman-notes-fonts.conf $(TOP)/common/sunman-stability | sed -e 's/.TH "FONTS-CONF" "5"/.TH "fonts.conf" "4"/' -e 's/SUNWfontconfig/SUNWfontconfig-root/' > $(FC_MAN_DIR)/man4/fonts.conf.4
-	-if [ -f $(FC_MAN_DIR)/man3lib/libfontconfig.3lib ] ; then \
-		rm -f $(FC_MAN_DIR)/man3lib/libfontconfig.3lib ; \
-	fi
-	perl -p -e 's/^$$/.LP/;' -e 's/\251/\\(co/;' libfontconfig.3lib $(SOURCE_DIR)/COPYING >> $(FC_MAN_DIR)/man3lib/libfontconfig.3lib
-	@case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; set -x ;	\
-	for i in fc-cache fc-list fc-match fc-cat ; do 		\
-	    if [ -f $(FC_MAN_DIR)/man1/$$i.1 ] ; then 	\
-		rm -f $(FC_MAN_DIR)/man1/$$i.1 ; 		\
-	    fi ;						\
-	    if [ -f sunman-notes-$$i ] ; then			\
-		APPEND="sunman-notes-$$i $(TOP)/common/sunman-stability" ; \
-		else						\
-		APPEND=$(TOP)/common/sunman-stability ;		\
-	    fi ;						\
-	    if [ -f $(SOURCE_DIR)/$$i/$$i.1 ] ; then \
-	    $(FC_MAN_FIX) $(SOURCE_DIR)/$$i/$$i.1 $$APPEND > \
-		$(FC_MAN_DIR)/man1/$$i.1 ;		\
-	    else						\
-		$(FC_MAN_FIX) $$i.man $$APPEND > \
-		$(FC_MAN_DIR)/man1/$$i.1 ;		\
-		fi ;						\
-	done
+	mkdir -p $(FC_MAN_DIR)/man4 $(FC_MAN_DIR)/man3lib
+	sed -e 's/.TH "FONTS-CONF" "5"/.TH "fonts.conf" "4"/' 	\
+	    -e 's/SUNWfontconfig/SUNWfontconfig-root/' 		\
+	  $(FC_MAN_DIR)/man5/fonts-conf.5 > $(FC_MAN_DIR)/man4/fonts.conf.4
+	-rm -f $(FC_MAN_DIR)/man3lib/libfontconfig.3lib
+	perl -p -e 's/^$$/.LP/;' -e 's/\251/\\(co/;' 		\
+		libfontconfig.3lib $(SOURCE_DIR)/COPYING >> 	\
+		$(FC_MAN_DIR)/man3lib/libfontconfig.3lib
+	-rm -f $(FC_MAN_DIR)/man1/fc-cache.1
+	cat $(SOURCE_DIR)/fc-cache/fc-cache.1 sunman-notes-fc-cache >> \
+		$(FC_MAN_DIR)/man1/fc-cache.1
 
 
-
--- a/open-src/lib/freetype/Makefile	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/lib/freetype/Makefile	Wed Nov 26 16:23:15 2008 -0800
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.77	08/10/06
+# @(#)Makefile	1.78	08/11/26
 #
 
 PWD:sh=pwd
@@ -75,12 +75,6 @@
 	--with-zlib \
 	--with-pic
 
-
-FT_LIB=$(FT_DIR)/objs/.libs/libfreetype.so.6.3.17
-
-# What to build
-BUILD_TARGETS=$(GNUMAKE) $(FT_LIB)
-
 # pkg-config files that need to have -R added
 FIX_PC_FILES=builds/unix/freetype2.in
 
@@ -92,14 +86,26 @@
 MODULE_MAKE=$(GNUMAKE)
 MODULE_MAKE_SET=yes
 
-# Don't run normal configure/build/install rules - freetype is different
+# Don't run normal configure/install rules - freetype is different
 CONFIGURE_TARGETS=$(SOURCE_DIR)/config.mk
 CONFIGURE_TARGETS_SET=yes
-BUILD_TARGETS=$(FT_LIB)
-BUILD_TARGETS_SET=yes
-INSTALL_TARGETS=
+INSTALL_TARGETS=install_freetype
 INSTALL_TARGETS_SET=yes
 
+# Environment variables to pass to configure & build steps
+MODULE_ENV = \
+    SHELL="/bin/bash" \
+    MAKESHELL="/bin/bash" \
+    CONFIG_SHELL="/bin/bash" \
+    CPP="$(CC) -E $(LIB_CFLAGS)" \
+    CXXCPP="$(CXX) -E $(CXXFLAGS)" \
+    MAKE=$(GNUMAKE) GNUMAKE=$(GNUMAKE) CFG="$(CONFIG_OPTS)"
+
+MODULE_CONFIG_ENV = $(MODULE_ENV)
+MODULE_BUILD_ENV = $(CONFIG_ENV)
+
+MODULE_INSTALL_MAKEFLAGS=bindir=$(MODULE_PREFIX)/bin$(ARCHLIBSUBDIR)
+
 ### Include common rulesets
 include ../Makefile.inc
 
@@ -110,46 +116,14 @@
 $(SOURCE_DIR)/config.mk: $(UNPACK_TARGET)
 	(cd $(SOURCE_DIR) ; \
 	chmod a+x builds/unix/configure builds/unix/mkinstalldirs builds/unix/install-sh ; \
-	    SHELL="/bin/bash" \
-	    MAKESHELL="/bin/bash" \
-	    CONFIG_SHELL="/bin/bash" \
-	    CC="$(CC)" \
-	    CXX="$(CXX)" \
-	    CPP="$(CC) -E $(LIB_CFLAGS)" \
-	    CXXCPP="$(CXX) -E $(CXXFLAGS)" \
-	    CFLAGS="$(LIB_CFLAGS)" \
-	    CXXFLAGS="$(LIB_CXXFLAGS)" \
-	    LDFLAGS="$(LIB_LDFLAGS)" \
-	    CFG="$(FT_CFG)" \
-	    LD="$(CC) $(LIB_CFLAGS) $(LIB_LDFLAGS)" \
-	    MAKE=$(GNUMAKE) GNUMAKE=$(GNUMAKE) CFG="$(CONFIG_OPTS)" \
-	    INSTALL="$(TOP)/common/install-sh -c" CPPROG="cp -p" \
-	    $(GNUMAKE) )
-
-# Build Freetype
-$(FT_LIB): $(CONFIGURE_TARGETS)
-	(cd $(SOURCE_DIR) ; \
-	    SHELL="/bin/bash" \
-	    MAKESHELL="/bin/bash" \
-	    CONFIG_SHELL="/bin/bash" \
-	    CC="$(CC)" \
-	    CXX="$(CXX)" \
-	    CPP="$(CC) -E $(LIB_CFLAGS)" \
-	    CXXCPP="$(CXX) -E $(CXXFLAGS)" \
-	    CFLAGS="$(LIB_CFLAGS)" \
-	    CXXFLAGS="$(LIB_CXXFLAGS)" \
-	    LDFLAGS="$(LIB_LDFLAGS)" \
-	    MAKE=$(GNUMAKE) GNUMAKE=$(GNUMAKE) \
-	    LDFLAGS="$(LIB_LDFLAGS)" \
-	    CFG="$(FT_CFG)" \
-	    LD="$(CC) $(LIB_CFLAGS) $(LIB_LDFLAGS)" \
-	    INSTALL="$(TOP)/common/install-sh -c" \
-	    $(GNUMAKE) )
+	$(CONFIG_ENV) $(GNUMAKE) )
 
 FT_bindir=$(MODULE_PREFIX)/bin$(ARCHLIBSUBDIR)
 FT_libdir=$(MODULE_PREFIX)/lib$(ARCHLIBSUBDIR)
 
-install_gen:: $(FT_LIB)
+# Have to override default_install since the -e causes our BUILD_DIR to
+# clash with the one in freetype's Makefiles
+install_freetype:: $(BUILD_TARGETS)
 	mkdir -p $(PROTODIR)/usr/bin$(ARCHLIBSUBDIR)
 	( cd $(SOURCE_DIR)/builds/unix ; \
 	    ./config.status --file ftconfig ; \
--- a/open-src/util/Makefile.inc	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/util/Makefile.inc	Wed Nov 26 16:23:15 2008 -0800
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.1	08/08/08
+# @(#)Makefile.inc	1.2	08/11/26
 #
 
 PWD:sh=pwd
@@ -50,6 +50,9 @@
 MODTYPE_LDFLAGS=$(PROG_LDFLAGS)
 MODTYPE_LD_OPTIONS=
 
+# Set comments in ELF binaries to help identify versions/builds
+MODTYPE_ADD_BUILD_TARGETS=set-elf-comments
+
 ### Include common rulesets
 include $(TOP)/common/Makefile.inc
 
--- a/open-src/xserver/xorg/Makefile	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/xserver/xorg/Makefile	Wed Nov 26 16:23:15 2008 -0800
@@ -30,7 +30,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.70	08/11/18
+# @(#)Makefile	1.71	08/11/26
 #
 
 # Build 32-bit or 64-bit?
@@ -75,7 +75,8 @@
 # Binary built in tree
 XORGSERVER_BIN=$(SOURCE_DIR)/hw/xfree86/Xorg
 
-BUILD_TARGETS=fix-xf1bpp $(XORGSERVER_BIN) $(BUILD_DIR)/mapfile-Xorg-externs
+BUILD_TARGETS=fix-xf1bpp $(XORGSERVER_BIN) set-elf-comments \
+	$(BUILD_DIR)/mapfile-Xorg-externs
 BUILD_TARGETS_SET=yes
 
 # Additional license files to install
@@ -102,6 +103,11 @@
 	-I$(PROTODIR)$(X11_INCLUDES_DIR)/drm \
 	-I$(PROTODIR)$(X11_INCLUDES_DIR)/X11/dri
 
+# Additional install targets beyond the defaults
+EXTRA_INSTALL_sparc=install_pc
+EXTRA_INSTALL_i386=
+MODULE_ADD_INSTALL_TARGETS=install_extras $(EXTRA_INSTALL_$(MACH))
+
 include ../Makefile.inc
 
 # Merge in additional sources from sun-src directory
@@ -119,11 +125,7 @@
 
 $(XORGSERVER_BIN): default_build
 
-EXTRA_INSTALL_sparc=install_pc
-EXTRA_INSTALL_i386=
-EXTRA_INSTALL=$(EXTRA_INSTALL_$(MACH))
-
-install_gen:: default_install $(EXTRA_INSTALL)
+install_extras: default_install
 	sed -e 's%#define XF86DRI 1%/* #define XF86DRI 1 */%' \
 	    -e 's%^.* _XSERVER64 .*$$%#include <sys/isa_defs.h>\
 #ifdef _LP64\
--- a/open-src/xserver/xvnc/Makefile	Wed Nov 26 15:13:40 2008 -0800
+++ b/open-src/xserver/xvnc/Makefile	Wed Nov 26 16:23:15 2008 -0800
@@ -32,7 +32,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile	1.14 08/11/26
+# @(#)Makefile	1.15 08/11/26
 #
 
 # Package name used in tarballs
@@ -92,7 +92,7 @@
 # the mixed codebases and unusual directory layout
 CONFIGURE_TARGETS=$(SOURCE_DIR)/unix/Makefile $(XORG_BUILD_DIR)/Makefile
 CONFIGURE_TARGETS_SET=yes
-BUILD_TARGETS=Xvnc_build
+BUILD_TARGETS=Xvnc_build set-elf-comments
 BUILD_TARGETS_SET=yes
 INSTALL_TARGETS=Xvnc_install
 INSTALL_TARGETS_SET=yes