automatically generate intercomponent dependencies for build ordering build-146
authorNorm Jacobs <Norm.Jacobs@Sun.COM>
Thu, 02 Sep 2010 11:07:22 -0500
changeset 32 280a7444e782
parent 31 90e0c3ea3281
child 33 371c8e56136d
automatically generate intercomponent dependencies for build ordering automatically generate component requirements for build environment construction add missing component dependencies add libmng for dependency validation
components/Makefile
components/bind/Makefile
components/file/Makefile
components/lcms/Makefile
components/lcms/lcms.p5m
components/libmng/Makefile
components/libmng/libmng.p5m
components/pycups/Makefile
components/rsync/Makefile
make-rules/depend.mk
make-rules/ips.mk
make-rules/shared-macros.mk
tools/bass-o-matic.py
tools/build-watch.pl
transforms/print-paths
transforms/print-pkgs
--- a/components/Makefile	Wed Aug 25 11:58:58 2010 -0700
+++ b/components/Makefile	Thu Sep 02 11:07:22 2010 -0500
@@ -28,7 +28,16 @@
 # level build, it may make different decisions and will need to include
 # appropriate dependency information.
 
-COMPONENT_DIRS =	$(shell echo */Makefile | sed -e 's;/Makefile;;g')
+# components.mk is auto-generated by the build tools.  It populates the
+# COMPONENT_DIRS macro with a list of all directories in the workspace that
+# contain a component.
+components.mk:	Makefile # $(WS_TOP)/components
+	@echo "Generating component list..."
+	@$(TOOLS)/bass-o-matic.py --workspace=$(WS_TOP) --components=paths \
+		| sed -e 's;^$(shell pwd)/;COMPONENT_DIRS += ;g' >$@
+
+include components.mk
+
 
 download:	TARGET = download
 prep:		TARGET = prep
@@ -38,7 +47,7 @@
 validate:	TARGET = validate
 clean:		TARGET = clean
 clobber:	TARGET = clobber
-prep build install publish:		LOG =	>$(WS_LOGS)/$(TARGET):[email protected] 2>&1
+prep build install publish:		LOG = >$(WS_LOGS)/$(TARGET):[email protected] 2>&1
 
 .DEFAULT:	publish
 
@@ -50,6 +59,7 @@
 ifeq ($(findstring file://, $(PKG_REPO)),file://)
 	$(RM) -r $(PKG_REPO:file://%=%) $(WS_LOGS)
 endif
+	$(RM) components.mk depends.mk
 
 setup:	$(WS_LOGS) repo tools
 
@@ -63,8 +73,15 @@
 tools:
 	@cd ../tools ; echo "building tools..." ; $(GMAKE) setup
 
-$(COMPONENT_DIRS):	FORCE
-	@cd $@ ; echo "$(TARGET) \c" ; pwd ; \
-	 $(GMAKE) $(TARGET) $(LOG)
+$(COMPONENT_DIRS):	setup FORCE
+	@cd $@ ; echo "$(TARGET) $@" ; $(GMAKE) $(TARGET) $(LOG)
+
+# depends.mk is auto-generated by the build tools, bass-o-matic.py in particular
+depends.mk:	components.mk
+	@echo "Generating component dependencies..."
+	@$(TOOLS)/bass-o-matic.py --workspace=$(WS_TOP) --components=depend \
+		| sed -e 's;$(shell pwd)/;;g' >$@
+
+include depends.mk
 
 FORCE:
--- a/components/bind/Makefile	Wed Aug 25 11:58:58 2010 -0700
+++ b/components/bind/Makefile	Thu Sep 02 11:07:22 2010 -0500
@@ -22,8 +22,6 @@
 #
 include ../../make-rules/shared-macros.mk
 
-PATH=/usr/bin:/usr/gnu/bin
-
 COMPONENT_NAME=		bind
 COMPONENT_VERSION=	9.7.0-P2
 IPS_PKG_NAME =		network/dns/bind
@@ -77,3 +75,136 @@
 install:	$(INSTALL_32_and_64)
 
 BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
+
+REQUIRED_TOOL +=	/sbin/uname
+REQUIRED_TOOL +=	/usr/bin/ar
+REQUIRED_TOOL +=	/usr/bin/arch
+REQUIRED_TOOL +=	/usr/bin/basename
+REQUIRED_TOOL +=	/usr/bin/bash
+REQUIRED_TOOL +=	/usr/bin/chmod
+REQUIRED_TOOL +=	/usr/bin/cp
+REQUIRED_TOOL +=	/usr/bin/diff
+REQUIRED_TOOL +=	/usr/bin/dirname
+REQUIRED_TOOL +=	/usr/bin/echo
+REQUIRED_TOOL +=	/usr/bin/env
+REQUIRED_TOOL +=	/usr/bin/expr
+REQUIRED_TOOL +=	/usr/bin/find
+REQUIRED_TOOL +=	/usr/bin/getconf
+REQUIRED_TOOL +=	/usr/bin/ggrep
+REQUIRED_TOOL +=	/usr/bin/gmake
+REQUIRED_TOOL +=	/usr/bin/grep
+REQUIRED_TOOL +=	/usr/bin/gsed
+REQUIRED_TOOL +=	/usr/bin/gtar
+REQUIRED_TOOL +=	/usr/bin/gzip
+REQUIRED_TOOL +=	/usr/bin/hostname
+REQUIRED_TOOL +=	/usr/bin/ksh93
+REQUIRED_TOOL +=	/usr/bin/ld
+REQUIRED_TOOL +=	/usr/bin/ln
+REQUIRED_TOOL +=	/usr/bin/ls
+REQUIRED_TOOL +=	/usr/bin/make
+REQUIRED_TOOL +=	/usr/bin/mkdir
+REQUIRED_TOOL +=	/usr/bin/mv
+REQUIRED_TOOL +=	/usr/bin/nm
+REQUIRED_TOOL +=	/usr/bin/ranlib
+REQUIRED_TOOL +=	/usr/bin/rm
+REQUIRED_TOOL +=	/usr/bin/rmdir
+REQUIRED_TOOL +=	/usr/bin/sed
+REQUIRED_TOOL +=	/usr/bin/sort
+REQUIRED_TOOL +=	/usr/bin/strip
+REQUIRED_TOOL +=	/usr/bin/touch
+REQUIRED_TOOL +=	/usr/bin/tr
+REQUIRED_TOOL +=	/usr/bin/xml2-config
+REQUIRED_TOOL +=	/usr/gnu/bin/as
+REQUIRED_TOOL +=	/usr/gnu/bin/echo
+REQUIRED_TOOL +=	/usr/gnu/bin/etags
+REQUIRED_TOOL +=	$(SPRO_ROOT)/bin/cc
+REQUIRED_TOOL +=	$(SPRO_ROOT)/bin/CC
+
+REQUIRED_FILE +=	/lib/$(MACH64)/libc.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libcrypto.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libm.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libnsl.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libpthread.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libscf.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libsocket.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libthread.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libxml2.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libz.so
+REQUIRED_FILE +=	/lib/libc.so
+REQUIRED_FILE +=	/lib/libcrypto.so
+REQUIRED_FILE +=	/lib/libm.so
+REQUIRED_FILE +=	/lib/libnsl.so
+REQUIRED_FILE +=	/lib/libpthread.so
+REQUIRED_FILE +=	/lib/libscf.so
+REQUIRED_FILE +=	/lib/libsocket.so
+REQUIRED_FILE +=	/lib/libthread.so
+REQUIRED_FILE +=	/lib/libxml2.so
+REQUIRED_FILE +=	/lib/libz.so
+REQUIRED_FILE +=	/usr/include/arpa/inet.h
+REQUIRED_FILE +=	/usr/include/assert.h
+REQUIRED_FILE +=	/usr/include/ctype.h
+REQUIRED_FILE +=	/usr/include/dirent.h
+REQUIRED_FILE +=	/usr/include/dlfcn.h
+REQUIRED_FILE +=	/usr/include/errno.h
+REQUIRED_FILE +=	/usr/include/execinfo.h
+REQUIRED_FILE +=	/usr/include/fcntl.h
+REQUIRED_FILE +=	/usr/include/float.h
+REQUIRED_FILE +=	/usr/include/grp.h
+REQUIRED_FILE +=	/usr/include/iconv.h
+REQUIRED_FILE +=	/usr/include/inttypes.h
+REQUIRED_FILE +=	/usr/include/libgen.h
+REQUIRED_FILE +=	/usr/include/libintl.h
+REQUIRED_FILE +=	/usr/include/libscf.h
+REQUIRED_FILE +=	/usr/include/libxml2/libxml/encoding.h
+REQUIRED_FILE +=	/usr/include/libxml2/libxml/xmlwriter.h
+REQUIRED_FILE +=	/usr/include/limits.h
+REQUIRED_FILE +=	/usr/include/locale.h
+REQUIRED_FILE +=	/usr/include/memory.h
+REQUIRED_FILE +=	/usr/include/net/if_dl.h
+REQUIRED_FILE +=	/usr/include/net/if.h
+REQUIRED_FILE +=	/usr/include/netdb.h
+REQUIRED_FILE +=	/usr/include/netinet/in.h
+REQUIRED_FILE +=	/usr/include/nl_types.h
+REQUIRED_FILE +=	/usr/include/openssl/bn.h
+REQUIRED_FILE +=	/usr/include/openssl/conf.h
+REQUIRED_FILE +=	/usr/include/openssl/crypto.h
+REQUIRED_FILE +=	/usr/include/openssl/dh.h
+REQUIRED_FILE +=	/usr/include/openssl/dsa.h
+REQUIRED_FILE +=	/usr/include/openssl/e_os2.h
+REQUIRED_FILE +=	/usr/include/openssl/engine.h
+REQUIRED_FILE +=	/usr/include/openssl/err.h
+REQUIRED_FILE +=	/usr/include/openssl/evp.h
+REQUIRED_FILE +=	/usr/include/openssl/objects.h
+REQUIRED_FILE +=	/usr/include/openssl/opensslv.h
+REQUIRED_FILE +=	/usr/include/openssl/rand.h
+REQUIRED_FILE +=	/usr/include/openssl/rsa.h
+REQUIRED_FILE +=	/usr/include/openssl/x509.h
+REQUIRED_FILE +=	/usr/include/pthread.h
+REQUIRED_FILE +=	/usr/include/pwd.h
+REQUIRED_FILE +=	/usr/include/regex.h
+REQUIRED_FILE +=	/usr/include/signal.h
+REQUIRED_FILE +=	/usr/include/stdarg.h
+REQUIRED_FILE +=	/usr/include/stddef.h
+REQUIRED_FILE +=	/usr/include/stdint.h
+REQUIRED_FILE +=	/usr/include/stdio.h
+REQUIRED_FILE +=	/usr/include/stdlib.h
+REQUIRED_FILE +=	/usr/include/string.h
+REQUIRED_FILE +=	/usr/include/strings.h
+REQUIRED_FILE +=	/usr/include/sys/ioctl.h
+REQUIRED_FILE +=	/usr/include/sys/param.h
+REQUIRED_FILE +=	/usr/include/sys/resource.h
+REQUIRED_FILE +=	/usr/include/sys/select.h
+REQUIRED_FILE +=	/usr/include/sys/socket.h
+REQUIRED_FILE +=	/usr/include/sys/sockio.h
+REQUIRED_FILE +=	/usr/include/sys/stat.h
+REQUIRED_FILE +=	/usr/include/sys/time.h
+REQUIRED_FILE +=	/usr/include/sys/types.h
+REQUIRED_FILE +=	/usr/include/sys/uio.h
+REQUIRED_FILE +=	/usr/include/sys/un.h
+REQUIRED_FILE +=	/usr/include/sys/wait.h
+REQUIRED_FILE +=	/usr/include/syslog.h
+REQUIRED_FILE +=	/usr/include/termios.h
+REQUIRED_FILE +=	/usr/include/time.h
+REQUIRED_FILE +=	/usr/include/unistd.h
+
+include ../../make-rules/depend.mk
--- a/components/file/Makefile	Wed Aug 25 11:58:58 2010 -0700
+++ b/components/file/Makefile	Thu Sep 02 11:07:22 2010 -0500
@@ -22,8 +22,6 @@
 #
 include ../../make-rules/shared-macros.mk
 
-PATH=/usr/bin:/usr/gnu/bin
-
 COMPONENT_NAME=		file
 COMPONENT_VERSION=	5.0.4
 IPS_PKG_NAME=		file/file
@@ -47,4 +45,96 @@
 
 install:	$(INSTALL_32_and_64)
 
-BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
+REQUIRED_TOOL +=	/sbin/uname
+REQUIRED_TOOL +=	/usr/bin/aclocal-1.10
+REQUIRED_TOOL +=	/usr/bin/ar
+REQUIRED_TOOL +=	/usr/bin/arch
+REQUIRED_TOOL +=	/usr/bin/autoconf
+REQUIRED_TOOL +=	/usr/bin/autoheader
+REQUIRED_TOOL +=	/usr/bin/autom4te
+REQUIRED_TOOL +=	/usr/bin/automake-1.10
+REQUIRED_TOOL +=	/usr/bin/basename
+REQUIRED_TOOL +=	/usr/bin/bash
+REQUIRED_TOOL +=	/usr/bin/chmod
+REQUIRED_TOOL +=	/usr/bin/cp
+REQUIRED_TOOL +=	/usr/bin/diff
+REQUIRED_TOOL +=	/usr/bin/dirname
+REQUIRED_TOOL +=	/usr/bin/echo
+REQUIRED_TOOL +=	/usr/bin/env
+REQUIRED_TOOL +=	/usr/bin/expr
+REQUIRED_TOOL +=	/usr/bin/find
+REQUIRED_TOOL +=	/usr/bin/gawk
+REQUIRED_TOOL +=	/usr/bin/getconf
+REQUIRED_TOOL +=	/usr/bin/ggrep
+REQUIRED_TOOL +=	/usr/bin/ginstall
+REQUIRED_TOOL +=	/usr/bin/gmake
+REQUIRED_TOOL +=	/usr/bin/grep
+REQUIRED_TOOL +=	/usr/bin/gsed
+REQUIRED_TOOL +=	/usr/bin/gpatch
+REQUIRED_TOOL +=	/usr/bin/gtar
+REQUIRED_TOOL +=	/usr/bin/gzip 
+REQUIRED_TOOL +=	/usr/bin/hostname
+REQUIRED_TOOL +=	/usr/bin/ksh93
+REQUIRED_TOOL +=	/usr/bin/ld
+REQUIRED_TOOL +=	/usr/bin/ln
+REQUIRED_TOOL +=	/usr/bin/ls
+REQUIRED_TOOL +=	/usr/bin/make
+REQUIRED_TOOL +=	/usr/bin/mkdir
+REQUIRED_TOOL +=	/usr/bin/mv
+REQUIRED_TOOL +=	/usr/bin/nm
+REQUIRED_TOOL +=	/usr/bin/ranlib
+REQUIRED_TOOL +=	/usr/bin/rm
+REQUIRED_TOOL +=	/usr/bin/rmdir
+REQUIRED_TOOL +=	/usr/bin/sed
+REQUIRED_TOOL +=	/usr/bin/sort
+REQUIRED_TOOL +=	/usr/bin/strip
+REQUIRED_TOOL +=	/usr/bin/touch
+REQUIRED_TOOL +=	/usr/bin/tr
+REQUIRED_TOOL +=	/usr/gnu/bin/as
+REQUIRED_TOOL +=	/usr/gnu/bin/echo
+REQUIRED_TOOL +=	/usr/gnu/bin/m4
+REQUIRED_TOOL +=	/usr/gnu/bin/mkdir
+REQUIRED_TOOL +=	$(SPRO_ROOT)/bin/cc
+REQUIRED_TOOL +=	$(SPRO_ROOT)/bin/CC
+
+REQUIRED_FILE +=	/lib/$(MACH64)/libc.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libm.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libz.so
+REQUIRED_FILE +=	/lib/libc.so
+REQUIRED_FILE +=	/lib/libm.so
+REQUIRED_FILE +=	/lib/libz.so
+REQUIRED_FILE +=	/usr/include/assert.h
+REQUIRED_FILE +=	/usr/include/ctype.h
+REQUIRED_FILE +=	/usr/include/dirent.h
+REQUIRED_FILE +=	/usr/include/err.h
+REQUIRED_FILE +=	/usr/include/errno.h
+REQUIRED_FILE +=	/usr/include/fcntl.h
+REQUIRED_FILE +=	/usr/include/getopt.h
+REQUIRED_FILE +=	/usr/include/limits.h
+REQUIRED_FILE +=	/usr/include/locale.h
+REQUIRED_FILE +=	/usr/include/memory.h
+REQUIRED_FILE +=	/usr/include/regex.h
+REQUIRED_FILE +=	/usr/include/stdarg.h
+REQUIRED_FILE +=	/usr/include/stddef.h
+REQUIRED_FILE +=	/usr/include/stdint.h
+REQUIRED_FILE +=	/usr/include/stdio.h
+REQUIRED_FILE +=	/usr/include/stdlib.h
+REQUIRED_FILE +=	/usr/include/string.h
+REQUIRED_FILE +=	/usr/include/sys/dirent.h
+REQUIRED_FILE +=	/usr/include/sys/ioctl.h
+REQUIRED_FILE +=	/usr/include/sys/mkdev.h
+REQUIRED_FILE +=	/usr/include/sys/mman.h
+REQUIRED_FILE +=	/usr/include/sys/param.h
+REQUIRED_FILE +=	/usr/include/sys/stat.h
+REQUIRED_FILE +=	/usr/include/sys/time.h
+REQUIRED_FILE +=	/usr/include/sys/types.h
+REQUIRED_FILE +=	/usr/include/sys/utime.h
+REQUIRED_FILE +=	/usr/include/sys/wait.h
+REQUIRED_FILE +=	/usr/include/time.h
+REQUIRED_FILE +=	/usr/include/unistd.h
+REQUIRED_FILE +=	/usr/include/utime.h
+REQUIRED_FILE +=	/usr/include/wchar.h
+REQUIRED_FILE +=	/usr/include/wctype.h
+REQUIRED_FILE +=	/usr/include/zlib.h
+
+include ../../make-rules/depend.mk
--- a/components/lcms/Makefile	Wed Aug 25 11:58:58 2010 -0700
+++ b/components/lcms/Makefile	Thu Sep 02 11:07:22 2010 -0500
@@ -22,8 +22,6 @@
 #
 include ../../make-rules/shared-macros.mk
 
-PATH=/usr/bin:/usr/gnu/bin
-
 COMPONENT_NAME=		lcms
 COMPONENT_VERSION=	1.19
 IPS_PKG_NAME=		library/lcms
@@ -39,6 +37,9 @@
 include ../../make-rules/configure.mk
 include ../../make-rules/ips.mk
 
+CONFIGURE_OPTIONS +=	--disable-static
+CONFIGURE_OPTIONS +=	--includedir=/usr/include/lcms
+
 PKGMOGRIFY_TRANSFORMS +=	$(WS_TOP)/transforms/archive-libraries-drop
 PKGMOGRIFY_TRANSFORMS +=	$(WS_TOP)/transforms/libtool-drop
 
@@ -51,3 +52,82 @@
 install:	$(INSTALL_32_and_64)
 
 BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
+
+
+REQUIRED_TOOL +=	/sbin/uname
+REQUIRED_TOOL +=	/usr/bin/arch
+REQUIRED_TOOL +=	/usr/bin/basename
+REQUIRED_TOOL +=	/usr/bin/bash
+REQUIRED_TOOL +=	/usr/bin/chmod
+REQUIRED_TOOL +=	/usr/bin/cp
+REQUIRED_TOOL +=	/usr/bin/diff
+REQUIRED_TOOL +=	/usr/bin/dirname
+REQUIRED_TOOL +=	/usr/bin/echo
+REQUIRED_TOOL +=	/usr/bin/env
+REQUIRED_TOOL +=	/usr/bin/expr
+REQUIRED_TOOL +=	/usr/bin/find
+REQUIRED_TOOL +=	/usr/bin/ggrep
+REQUIRED_TOOL +=	/usr/bin/gmake
+REQUIRED_TOOL +=	/usr/bin/grep
+REQUIRED_TOOL +=	/usr/bin/gsed
+REQUIRED_TOOL +=	/usr/bin/gtar
+REQUIRED_TOOL +=	/usr/bin/gzip 
+REQUIRED_TOOL +=	/usr/bin/hostname
+REQUIRED_TOOL +=	/usr/bin/ksh93
+REQUIRED_TOOL +=	/usr/bin/ld
+REQUIRED_TOOL +=	/usr/bin/ln
+REQUIRED_TOOL +=	/usr/bin/ls
+REQUIRED_TOOL +=	/usr/bin/make
+REQUIRED_TOOL +=	/usr/bin/mkdir
+REQUIRED_TOOL +=	/usr/bin/mv
+REQUIRED_TOOL +=	/usr/bin/nm
+REQUIRED_TOOL +=	/usr/bin/rm
+REQUIRED_TOOL +=	/usr/bin/rmdir
+REQUIRED_TOOL +=	/usr/bin/sed
+REQUIRED_TOOL +=	/usr/bin/sort
+REQUIRED_TOOL +=	/usr/bin/strip
+REQUIRED_TOOL +=	/usr/bin/touch
+REQUIRED_TOOL +=	/usr/bin/tr
+REQUIRED_TOOL +=	/usr/gnu/bin/as
+REQUIRED_TOOL +=	/usr/gnu/bin/echo
+REQUIRED_TOOL +=	/usr/gnu/bin/mkdir
+REQUIRED_TOOL +=	$(SPRO_ROOT)/bin/cc
+REQUIRED_TOOL +=	$(SPRO_ROOT)/bin/CC
+
+REQUIRED_FILE +=	/lib/$(MACH64)/libc.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libm.so
+REQUIRED_FILE +=	/lib/$(MACH64)/libz.so
+REQUIRED_FILE +=	/lib/libc.so
+REQUIRED_FILE +=	/lib/libm.so
+REQUIRED_FILE +=	/lib/libz.so
+REQUIRED_FILE +=	/usr/include/assert.h
+REQUIRED_FILE +=	/usr/include/ctype.h
+REQUIRED_FILE +=	/usr/include/dlfcn.h
+REQUIRED_FILE +=	/usr/include/errno.h
+REQUIRED_FILE +=	/usr/include/float.h
+REQUIRED_FILE +=	/usr/include/jconfig.h
+REQUIRED_FILE +=	/usr/include/jerror.h
+REQUIRED_FILE +=	/usr/include/jmorecfg.h
+REQUIRED_FILE +=	/usr/include/jpeglib.h
+REQUIRED_FILE +=	/usr/include/limits.h
+REQUIRED_FILE +=	/usr/include/math.h
+REQUIRED_FILE +=	/usr/include/stdarg.h
+REQUIRED_FILE +=	/usr/include/stdbool.h
+REQUIRED_FILE +=	/usr/include/stdint.h
+REQUIRED_FILE +=	/usr/include/stdio.h
+REQUIRED_FILE +=	/usr/include/stdlib.h
+REQUIRED_FILE +=	/usr/include/string.h
+REQUIRED_FILE +=	/usr/include/sys/param.h
+REQUIRED_FILE +=	/usr/include/sys/stat.h
+REQUIRED_FILE +=	/usr/include/sys/types.h
+REQUIRED_FILE +=	/usr/include/tiff.h
+REQUIRED_FILE +=	/usr/include/tiffio.h
+REQUIRED_FILE +=	/usr/include/time.h
+REQUIRED_FILE +=	/usr/include/unistd.h
+REQUIRED_FILE +=	/usr/include/wchar.h
+REQUIRED_FILE +=	/usr/include/zconf.h
+REQUIRED_FILE +=	/usr/include/zlib.h
+REQUIRED_FILE +=	/usr/lib/$(MACH64)/libjpeg.so
+REQUIRED_FILE +=	/usr/lib/$(MACH64)/libtiff.so
+REQUIRED_FILE +=	/usr/lib/libjpeg.so
+REQUIRED_FILE +=	/usr/lib/libtiff.so
--- a/components/lcms/lcms.p5m	Wed Aug 25 11:58:58 2010 -0700
+++ b/components/lcms/lcms.p5m	Thu Sep 02 11:07:22 2010 -0500
@@ -34,6 +34,7 @@
 dir path=usr/bin
 dir path=usr/bin/$(MACH64) variant.arch=$(ARCH)
 dir path=usr/include
+dir path=usr/include/lcms
 dir path=usr/lib
 dir path=usr/lib/$(MACH64) variant.arch=$(ARCH)
 dir path=usr/lib/$(MACH64)/pkgconfig variant.arch=$(ARCH)
@@ -55,13 +56,11 @@
 file path=usr/bin/tiffdiff variant.arch=$(ARCH)
 file path=usr/bin/tifficc variant.arch=$(ARCH)
 file path=usr/bin/wtpt variant.arch=$(ARCH)
-file path=usr/include/icc34.h
-file path=usr/include/lcms.h
-file path=usr/lib/$(MACH64)/liblcms.a variant.arch=$(ARCH)
+file path=usr/include/lcms/icc34.h
+file path=usr/include/lcms/lcms.h
 file path=usr/lib/$(MACH64)/liblcms.la variant.arch=$(ARCH)
 file path=usr/lib/$(MACH64)/liblcms.so.1.0.19 variant.arch=$(ARCH)
 file path=usr/lib/$(MACH64)/pkgconfig/lcms.pc variant.arch=$(ARCH)
-file path=usr/lib/liblcms.a variant.arch=$(ARCH)
 file path=usr/lib/liblcms.la variant.arch=$(ARCH)
 file path=usr/lib/liblcms.so.1.0.19 variant.arch=$(ARCH)
 file path=usr/lib/pkgconfig/lcms.pc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/libmng/Makefile	Thu Sep 02 11:07:22 2010 -0500
@@ -0,0 +1,146 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2010, Oracle and/or it's affiliates.  All rights reserved.
+#
+include ../../make-rules/shared-macros.mk
+
+COMPONENT_NAME=		libmng
+COMPONENT_VERSION=	1.0.10
+IPS_PKG_NAME=		library/libmng
+COMPONENT_DESCRIPTION=	"Multiple-image Network Graphics (MNG) format image files."
+COMPONENT_CLASSIFICATION="System/Multimedia Libraries"
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_PROJECT_URL=	http://www.libmng.com/
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	sha1:78ad516a1de79d00de720bf2a7c9afea2c896b09
+COMPONENT_ARCHIVE_URL=	http://prdownloads.sourceforge.net/libmng/$(COMPONENT_ARCHIVE)
+
+# The tarball doesn't come with a configure script.  We have to use the
+# GNU auto* tools to generate one when we prep the code.
+COMPONENT_PREP_ACTION =	(cd $(COMPONENT_SRC) ; \
+			 $(CP) makefiles/configure.in makefiles/Makefile.am . ;\
+			 aclocal-1.10 ; \
+			 libtoolize ; \
+			 automake-1.10 --add-missing ; \
+			 autoconf )
+
+CONFIGURE_OPTIONS +=	--includedir=/usr/include/libmng
+CONFIGURE_OPTIONS +=	--localstatedir=/var
+CONFIGURE_OPTIONS +=	--disable-static
+CONFIGURE_OPTIONS +=	--disable-libtool-lock
+CONFIGURE_OPTIONS +=	--enable-largefile
+CONFIGURE_OPTIONS +=	--enable-buildso
+CONFIGURE_OPTIONS +=	--enable-read
+CONFIGURE_OPTIONS +=	--enable-write
+CONFIGURE_OPTIONS +=	--enable-display
+CONFIGURE_OPTIONS +=	--enable-dynamic
+CONFIGURE_OPTIONS +=	--enable-chunks
+CONFIGURE_OPTIONS +=	--enable-storechunks
+CONFIGURE_OPTIONS +=	--with-lcms
+CONFIGURE_OPTIONS +=	--with-pic
+
+# because Solaris puts the headers in a non-standard place
+CONFIGURE_ENV +=	CPPFLAGS=-I/usr/include/lcms
+
+
+include ../../make-rules/prep.mk
+include ../../make-rules/configure.mk
+include ../../make-rules/ips.mk
+
+PKGMOGRIFY_TRANSFORMS +=	$(WS_TOP)/transforms/archive-libraries-drop
+PKGMOGRIFY_TRANSFORMS +=	$(WS_TOP)/transforms/libtool-drop
+
+# common targets
+build:		$(BUILD_32_and_64)
+
+install:	$(INSTALL_32_and_64)
+
+BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
+
+
+REQUIRED_TOOL +=	/opt/sunstudio12.1/prod/bin/CC
+REQUIRED_TOOL +=	/opt/sunstudio12.1/prod/bin/cc
+REQUIRED_TOOL +=	/sbin/uname
+REQUIRED_TOOL +=	/usr/bin/aclocal-1.10
+REQUIRED_TOOL +=	/usr/bin/amd64/ld
+REQUIRED_TOOL +=	/usr/bin/amd64/nm
+REQUIRED_TOOL +=	/usr/bin/amd64/sort
+REQUIRED_TOOL +=	/usr/bin/amd64/strip
+REQUIRED_TOOL +=	/usr/bin/arch
+REQUIRED_TOOL +=	/usr/bin/autoconf
+REQUIRED_TOOL +=	/usr/bin/autom4te
+REQUIRED_TOOL +=	/usr/bin/automake-1.10
+REQUIRED_TOOL +=	/usr/bin/basename
+REQUIRED_TOOL +=	/usr/bin/bash
+REQUIRED_TOOL +=	/usr/bin/chmod
+REQUIRED_TOOL +=	/usr/bin/cp
+REQUIRED_TOOL +=	/usr/bin/diff
+REQUIRED_TOOL +=	/usr/bin/dirname
+REQUIRED_TOOL +=	/usr/bin/echo
+REQUIRED_TOOL +=	/usr/bin/env
+REQUIRED_TOOL +=	/usr/bin/expr
+REQUIRED_TOOL +=	/usr/bin/gawk
+REQUIRED_TOOL +=	/usr/bin/gfind
+REQUIRED_TOOL +=	/usr/bin/ggrep
+REQUIRED_TOOL +=	/usr/bin/ginstall
+REQUIRED_TOOL +=	/usr/bin/gmake
+REQUIRED_TOOL +=	/usr/bin/grep
+REQUIRED_TOOL +=	/usr/bin/gsed
+REQUIRED_TOOL +=	/usr/bin/gtar
+REQUIRED_TOOL +=	/usr/bin/gzip
+REQUIRED_TOOL +=	/usr/bin/hostname
+REQUIRED_TOOL +=	/usr/bin/i86/ksh93
+REQUIRED_TOOL +=	/usr/bin/ld
+REQUIRED_TOOL +=	/usr/bin/libtoolize
+REQUIRED_TOOL +=	/usr/bin/ln
+REQUIRED_TOOL +=	/usr/bin/ls
+REQUIRED_TOOL +=	/usr/bin/make
+REQUIRED_TOOL +=	/usr/bin/mkdir
+REQUIRED_TOOL +=	/usr/bin/mv
+REQUIRED_TOOL +=	/usr/bin/nm
+REQUIRED_TOOL +=	/usr/bin/rm
+REQUIRED_TOOL +=	/usr/bin/rmdir
+REQUIRED_TOOL +=	/usr/bin/sed
+REQUIRED_TOOL +=	/usr/bin/sort
+REQUIRED_TOOL +=	/usr/bin/strip
+REQUIRED_TOOL +=	/usr/bin/touch
+REQUIRED_TOOL +=	/usr/bin/tr
+REQUIRED_TOOL +=	/usr/gnu/bin/as
+REQUIRED_TOOL +=	/usr/gnu/bin/echo
+REQUIRED_TOOL +=	/usr/gnu/bin/m4
+REQUIRED_TOOL +=	/usr/gnu/bin/mkdir
+REQUIRED_TOOL +=	/usr/gnu/bin/sort
+REQUIRED_TOOL +=	/usr/gnu/bin/uname
+
+REQUIRED_FILE +=	/usr/include/jpeglib.h
+REQUIRED_FILE +=	/usr/include/lcms/lcms.h
+REQUIRED_FILE +=	/usr/include/limits.h
+REQUIRED_FILE +=	/usr/include/math.h
+REQUIRED_FILE +=	/usr/include/memory.h
+REQUIRED_FILE +=	/usr/include/setjmp.h
+REQUIRED_FILE +=	/usr/include/stddef.h
+REQUIRED_FILE +=	/usr/include/stdio.h
+REQUIRED_FILE +=	/usr/include/stdlib.h
+REQUIRED_FILE +=	/usr/include/string.h
+REQUIRED_FILE +=	/usr/include/strings.h
+REQUIRED_FILE +=	/usr/include/zlib.h
+
+include ../../make-rules/depend.mk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/libmng/libmng.p5m	Thu Sep 02 11:07:22 2010 -0500
@@ -0,0 +1,70 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+    value=pkg:/library/libmng@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.description value="$(COMPONENT_DESCRIPTION) "
+set name=pkg.summary value="$(COMPONENT_SUMMARY) "
+set name=info.classification \
+    value="org.opensolaris.category.2008:$(COMPONENT_CLASSIFICATION) "
+set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream_url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+license LICENSE license="BSD-Like"
+dir path=usr
+dir path=usr/include
+dir path=usr/include/libmng
+dir path=usr/lib
+dir path=usr/lib/$(MACH64) variant.arch=$(ARCH)
+#dir path=usr/lib/$(MACH64)/pkgconfig variant.arch=$(ARCH)
+#dir path=usr/lib/pkgconfig
+dir path=usr/share
+dir path=usr/share/man
+dir path=usr/share/man/man3
+dir path=usr/share/man/man5
+file path=usr/include/libmng/libmng.h
+file path=usr/include/libmng/libmng_conf.h
+file path=usr/include/libmng/libmng_types.h
+file path=usr/lib/$(MACH64)/libmng.la variant.arch=$(ARCH)
+file path=usr/lib/$(MACH64)/libmng.so.1.0.0 variant.arch=$(ARCH)
+#file path=usr/lib/$(MACH64)/llib-lmng.ln
+#file path=usr/lib/$(MACH64)/pkgconfig/libmng.pc variant.arch=$(ARCH)
+file path=usr/lib/libmng.la variant.arch=$(ARCH)
+file path=usr/lib/libmng.so.1.0.0 variant.arch=$(ARCH)
+#file path=usr/lib/llib-lmng
+#file path=usr/lib/llib-lmng.ln
+#file path=usr/lib/pkgconfig/libmng.pc
+file path=usr/share/man/man3/libmng.3
+file path=usr/share/man/man5/jng.5
+file path=usr/share/man/man5/mng.5
+link path=usr/lib/$(MACH64)/libmng.so target=libmng.so.1.0.0 \
+    variant.arch=$(ARCH)
+link path=usr/lib/$(MACH64)/libmng.so.1 target=libmng.so.1.0.0 \
+    variant.arch=$(ARCH)
+link path=usr/lib/libmng.so target=libmng.so.1.0.0
+link path=usr/lib/libmng.so.1 target=libmng.so.1.0.0
+depend fmri=pkg:/image/library/[email protected] type=require
+depend fmri=pkg:/library/[email protected] type=require
+depend fmri=pkg:/library/[email protected] type=require
+depend fmri=pkg:/system/library/[email protected] type=require
+depend fmri=pkg:/system/[email protected] type=require
--- a/components/pycups/Makefile	Wed Aug 25 11:58:58 2010 -0700
+++ b/components/pycups/Makefile	Thu Sep 02 11:07:22 2010 -0500
@@ -22,8 +22,6 @@
 #
 include ../../make-rules/shared-macros.mk
 
-PATH=/usr/bin:/usr/gnu/bin
-
 COMPONENT_NAME=		pycups
 COMPONENT_VERSION=	1.9.46
 IPS_PKG_NAME=		library/python-2/pycups
@@ -47,3 +45,48 @@
 install:	$(INSTALL_32_and_64)
 
 BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
+
+REQUIRED_TOOL +=	/sbin/uname
+REQUIRED_TOOL +=	/usr/bin/basename
+REQUIRED_TOOL +=	/usr/bin/env
+REQUIRED_TOOL +=	/usr/bin/find
+REQUIRED_TOOL +=	/usr/bin/grep
+REQUIRED_TOOL +=	/usr/bin/gtar
+REQUIRED_TOOL +=	/usr/bin/gzip 
+REQUIRED_TOOL +=	/usr/bin/ksh93
+REQUIRED_TOOL +=	/usr/bin/ld
+REQUIRED_TOOL +=	/usr/bin/mkdir
+REQUIRED_TOOL +=	/usr/bin/python2.4
+REQUIRED_TOOL +=	/usr/bin/python2.6
+REQUIRED_TOOL +=	/usr/bin/rm
+REQUIRED_TOOL +=	/usr/bin/sed
+REQUIRED_TOOL +=	/usr/bin/sort
+REQUIRED_TOOL +=	/usr/bin/touch
+REQUIRED_TOOL +=	/usr/lib/python2.4/pycc
+REQUIRED_TOOL +=	/usr/lib/python2.6/pycc
+REQUIRED_TOOL +=	$(SPRO_ROOT)/bin/cc
+
+REQUIRED_FILE +=	/lib/libc.so
+REQUIRED_FILE +=	/usr/include/ctype.h
+REQUIRED_FILE +=	/usr/include/cups/adminutil.h
+REQUIRED_FILE +=	/usr/include/cups/cups.h
+REQUIRED_FILE +=	/usr/include/cups/language.h
+REQUIRED_FILE +=	/usr/include/cups/ppd.h
+REQUIRED_FILE +=	/usr/include/iconv.h
+REQUIRED_FILE +=	/usr/include/locale.h
+REQUIRED_FILE +=	/usr/include/python2.4/Python.h
+REQUIRED_FILE +=	/usr/include/python2.6/Python.h
+REQUIRED_FILE +=	/usr/include/stdarg.h
+REQUIRED_FILE +=	/usr/include/stdbool.h
+REQUIRED_FILE +=	/usr/include/stdio.h
+REQUIRED_FILE +=	/usr/include/stdlib.h
+REQUIRED_FILE +=	/usr/include/string.h
+REQUIRED_FILE +=	/usr/include/unistd.h
+REQUIRED_FILE +=	/usr/include/wchar.h
+REQUIRED_FILE +=	/usr/include/wctype.h
+REQUIRED_FILE +=	/usr/lib/libc.so
+REQUIRED_FILE +=	/usr/lib/libcups.so
+REQUIRED_FILE +=	/usr/lib/libpython2.4.so.1.0
+REQUIRED_FILE +=	/usr/lib/libpython2.6.so
+
+include ../../make-rules/depend.mk
--- a/components/rsync/Makefile	Wed Aug 25 11:58:58 2010 -0700
+++ b/components/rsync/Makefile	Thu Sep 02 11:07:22 2010 -0500
@@ -22,8 +22,6 @@
 #
 include ../../make-rules/shared-macros.mk
 
-PATH=/usr/bin:/usr/gnu/bin
-
 COMPONENT_NAME=		rsync
 COMPONENT_VERSION=	3.0.7
 IPS_PKG_NAME=		network/rsync
@@ -49,3 +47,97 @@
 install:	$(INSTALL_32)
 
 BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
+
+REQUIRED_TOOL +=	/sbin/uname
+REQUIRED_TOOL +=	/usr/bin/arch
+REQUIRED_TOOL +=	/usr/bin/awk
+REQUIRED_TOOL +=	/usr/bin/basename
+REQUIRED_TOOL +=	/usr/bin/bash
+REQUIRED_TOOL +=	/usr/bin/chmod
+REQUIRED_TOOL +=	/usr/bin/cp
+REQUIRED_TOOL +=	/usr/bin/diff
+REQUIRED_TOOL +=	/usr/bin/dirname
+REQUIRED_TOOL +=	/usr/bin/echo
+REQUIRED_TOOL +=	/usr/bin/env
+REQUIRED_TOOL +=	/usr/bin/expr
+REQUIRED_TOOL +=	/usr/bin/find
+REQUIRED_TOOL +=	/usr/bin/ggrep
+REQUIRED_TOOL +=	/usr/bin/ginstall
+REQUIRED_TOOL +=	/usr/bin/gmake
+REQUIRED_TOOL +=	/usr/bin/grep
+REQUIRED_TOOL +=	/usr/bin/gtar
+REQUIRED_TOOL +=	/usr/bin/gzip 
+REQUIRED_TOOL +=	/usr/bin/hostname
+REQUIRED_TOOL +=	/usr/bin/ksh93
+REQUIRED_TOOL +=	/usr/bin/ld
+REQUIRED_TOOL +=	/usr/bin/ln
+REQUIRED_TOOL +=	/usr/bin/ls
+REQUIRED_TOOL +=	/usr/bin/mkdir
+REQUIRED_TOOL +=	/usr/bin/mv
+REQUIRED_TOOL +=	/usr/bin/rm
+REQUIRED_TOOL +=	/usr/bin/sed
+REQUIRED_TOOL +=	/usr/bin/sort
+REQUIRED_TOOL +=	/usr/bin/touch
+REQUIRED_TOOL +=	/usr/bin/tr
+REQUIRED_TOOL +=	/usr/perl5/bin/perl
+REQUIRED_TOOL +=	$(SPRO_ROOT)/bin/cc
+
+REQUIRED_FILE +=	/lib/libnsl.so
+REQUIRED_FILE +=	/lib/libsec.so
+REQUIRED_FILE +=	/lib/libsocket.so
+REQUIRED_FILE +=	/usr/bin/arch
+REQUIRED_FILE +=	/usr/include/alloca.h
+REQUIRED_FILE +=	/usr/include/arpa/inet.h
+REQUIRED_FILE +=	/usr/include/assert.h
+REQUIRED_FILE +=	/usr/include/ctype.h
+REQUIRED_FILE +=	/usr/include/dirent.h
+REQUIRED_FILE +=	/usr/include/errno.h
+REQUIRED_FILE +=	/usr/include/fcntl.h
+REQUIRED_FILE +=	/usr/include/float.h
+REQUIRED_FILE +=	/usr/include/grp.h
+REQUIRED_FILE +=	/usr/include/iconv.h
+REQUIRED_FILE +=	/usr/include/langinfo.h
+REQUIRED_FILE +=	/usr/include/libintl.h
+REQUIRED_FILE +=	/usr/include/limits.h
+REQUIRED_FILE +=	/usr/include/locale.h
+REQUIRED_FILE +=	/usr/include/malloc.h
+REQUIRED_FILE +=	/usr/include/math.h
+REQUIRED_FILE +=	/usr/include/netdb.h
+REQUIRED_FILE +=	/usr/include/netinet/in_systm.h
+REQUIRED_FILE +=	/usr/include/netinet/in.h
+REQUIRED_FILE +=	/usr/include/netinet/ip.h
+REQUIRED_FILE +=	/usr/include/netinet/ip6.h
+REQUIRED_FILE +=	/usr/include/netinet/tcp.h
+REQUIRED_FILE +=	/usr/include/popt.h
+REQUIRED_FILE +=	/usr/include/pwd.h
+REQUIRED_FILE +=	/usr/include/signal.h
+REQUIRED_FILE +=	/usr/include/stdarg.h
+REQUIRED_FILE +=	/usr/include/stdbool.h
+REQUIRED_FILE +=	/usr/include/stddef.h
+REQUIRED_FILE +=	/usr/include/stdio.h
+REQUIRED_FILE +=	/usr/include/stdlib.h
+REQUIRED_FILE +=	/usr/include/string.h
+REQUIRED_FILE +=	/usr/include/strings.h
+REQUIRED_FILE +=	/usr/include/sys/acl.h
+REQUIRED_FILE +=	/usr/include/sys/attr.h
+REQUIRED_FILE +=	/usr/include/sys/fcntl.h
+REQUIRED_FILE +=	/usr/include/sys/file.h
+REQUIRED_FILE +=	/usr/include/sys/filio.h
+REQUIRED_FILE +=	/usr/include/sys/ioctl.h
+REQUIRED_FILE +=	/usr/include/sys/mkdev.h
+REQUIRED_FILE +=	/usr/include/sys/mode.h
+REQUIRED_FILE +=	/usr/include/sys/param.h
+REQUIRED_FILE +=	/usr/include/sys/select.h
+REQUIRED_FILE +=	/usr/include/sys/socket.h
+REQUIRED_FILE +=	/usr/include/sys/stat.h
+REQUIRED_FILE +=	/usr/include/sys/time.h
+REQUIRED_FILE +=	/usr/include/sys/types.h
+REQUIRED_FILE +=	/usr/include/sys/un.h
+REQUIRED_FILE +=	/usr/include/sys/wait.h
+REQUIRED_FILE +=	/usr/include/syslog.h
+REQUIRED_FILE +=	/usr/include/time.h
+REQUIRED_FILE +=	/usr/include/unistd.h
+REQUIRED_FILE +=	/usr/include/utime.h
+REQUIRED_FILE +=	/usr/include/wchar.h
+
+include ../../make-rules/depend.mk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make-rules/depend.mk	Thu Sep 02 11:07:22 2010 -0500
@@ -0,0 +1,32 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2010, Oracle and/or it's affiliates.  All rights reserved.
+#
+
+DEPENDS +=	$(REQUIRED_TOOL)
+DEPENDS +=	$(REQUIRED_FILE)
+
+depend::	$(DEPENDS)
+
+print-required-paths::
+	@for path in $(DEPENDS) ; do \
+		echo $$path ; \
+	 done
--- a/make-rules/ips.mk	Wed Aug 25 11:58:58 2010 -0700
+++ b/make-rules/ips.mk	Thu Sep 02 11:07:22 2010 -0500
@@ -172,6 +172,16 @@
 $(COMPONENT_SRC)/.published:	manifest-compare $(PUBLISHED)
 	$(TOUCH) $@
 
+print-package-names:	canonical-manifests
+	@cat $(CANONICAL_MANIFESTS) $(WS_TOP)/transforms/print-pkgs | \
+		$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 | \
+ 		sed -e '/^$$/d' -e '/^#.*$$/d' | sort -u
+
+print-package-paths:	canonical-manifests
+	@cat $(CANONICAL_MANIFESTS) $(WS_TOP)/transforms/print-paths | \
+		$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 | \
+ 		sed -e '/^$$/d' -e '/^#.*$$/d' | sort -u
+
 canonical-manifests:	$(CANONICAL_MANIFESTS)
 ifeq	($(strip $(CANONICAL_MANIFESTS)),)
 	# If there were no canonical manifests in the workspace, nothing will
@@ -182,3 +192,12 @@
 	# workspace.
 	$(error Missing canonical manifest(s))
 endif
+
+# This converts required paths to containing package names for be able to
+# properly setup the build environment for a component.
+required-pkgs.mk:	Makefile
+	@echo "generating $@ from Makefile REQUIRED_* data"
+	@pkg search -H -l '<$(DEPENDS:%=% OR) /bin/true>' \
+		| sed -e 's/pkg:\/\(.*\)@.*/REQUIRED_PKGS += \1/g' >$@
+
+CLEAN_PATHS +=	required-pkgs.mk
--- a/make-rules/shared-macros.mk	Wed Aug 25 11:58:58 2010 -0700
+++ b/make-rules/shared-macros.mk	Thu Sep 02 11:07:22 2010 -0500
@@ -21,6 +21,8 @@
 # Copyright (c) 2010, Oracle and/or it's affiliates.  All rights reserved.
 #
 
+PATH=/usr/bin:/usr/gnu/bin
+
 CONSOLIDATION =	userland
 PUBLISHER =	$(CONSOLIDATION)-build
 
@@ -40,7 +42,7 @@
 
 TOOLS =		$(WS_TOP)/tools
 WS_LOGS =	$(WS_TOP)/logs
-MAKE_RULES =	$(WS_TOP)/components/make-rules
+MAKE_RULES =	$(WS_TOP)/make-rules
 
 PKG_REPO =	file://$(WS_TOP)/repo
 PROTO_DIR =	$(shell pwd)/$(COMPONENT_SRC)/installed-prototype-$(MACH)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/bass-o-matic.py	Thu Sep 02 11:07:22 2010 -0500
@@ -0,0 +1,169 @@
+#!/usr/bin/python2.6
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2010, Oracle and/or it's affiliates.  All rights reserved.
+#
+#
+# bass-o-matic.py
+#  A simple program to enumerate components in the userland gate and report
+#  on dependency related information.
+#
+
+import os
+import sys
+import re
+
+# Locate SCM directories containing Userland components by searching from
+# from a supplied top of tree for .p5m files.  Once a .p5m file is located,
+# that directory is added to the list and no children are searched.
+def FindComponentPaths(path, debug=None):
+    expression = re.compile(".+\.p5m$", re.IGNORECASE)
+
+    paths = []
+
+    if debug:
+        print >>debug, "searching %s for component directories" % path
+
+    for dirpath, dirnames, filenames in os.walk(path + '/components'):
+        found = 0
+
+        for name in filenames:
+            if expression.match(name):
+                if debug:
+                    print >>debug, "found %s" % dirpath
+                paths.append(dirpath)
+                del dirnames[:]
+                break
+
+    return sorted(paths)
+
+class BassComponent:
+    def __init__(self, path=None, debug=None):
+        self.debug = debug
+        self.path = path
+        if path:
+            # get supplied packages    (cd path ; gmake print-package-names)
+            self.supplied_packages = self.run_make(path, 'print-package-names')
+
+            # get supplied paths    (cd path ; gmake print-package-paths)
+            self.supplied_paths = self.run_make(path, 'print-package-paths')
+
+            # get required paths    (cd path ; gmake print-required-paths)
+            self.required_paths = self.run_make(path, 'print-required-paths')
+
+    def required(self, component):
+        result = False
+
+        s1 = set(self.required_paths)
+        s2 = set(component.supplied_paths)
+        if s1.intersection(s2):
+            result = True
+
+        return result
+
+    def run_make(self, path, targets):
+        import subprocess
+
+        result = list()
+
+        if self.debug:
+            print >>self.debug, "Executing 'gmake %s' in %s" % (targets, path)
+
+        proc = subprocess.Popen(['gmake', targets], cwd=path,
+                                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+        p = proc.stdout
+
+        for out in p:
+            result.append(out)
+
+        if self.debug:
+            proc.wait()
+            if proc.returncode != 0:
+                print >>self.debug, "exit: %d, %s" % (proc.returncode, proc.stderr.read())
+    
+        return result
+
+    def __str__(self):
+        result = "Component:\n\tPath: %s\n" % self.path
+        result = result + "\tProvides Package(s):\n\t\t%s\n" % '\t\t'.join(self.supplied_packages)
+        result = result + "\tProvides Path(s):\n\t\t%s\n" % '\t\t'.join(self.supplied_paths)
+        result = result + "\tRequired Path(s):\n\t\t%s\n" % '\t\t'.join(self.required_paths)
+
+        return result
+
+def usage():
+    print "Usage: %s [-c|--components=(path|depend)] [-z|--zone (zone)]" % (sys.argv[0].split('/')[-1])
+    sys.exit(1)
+
+def main():
+    import getopt
+    import sys
+
+    # FLUSH STDOUT 
+    sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
+
+    components = {}
+    debug=None
+    components_arg=None
+    workspace = os.getenv('WS_TOP')
+
+    try:
+        opts, args = getopt.getopt(sys.argv[1:], "w:c:d",
+            [ "debug", "workspace=", "components=" ])
+    except getopt.GetoptError, err:
+        print str(err)
+        usage()
+
+    for opt, arg in opts:
+        if opt in [ "-w", "--workspace" ]:
+            workspace = arg
+        elif opt in [ "-l", "--components" ]:
+            components_arg = arg
+        elif opt in [ "-d", "--debug" ]:
+            debug = sys.stdout
+        else:
+            assert False, "unknown option"
+
+    component_paths = FindComponentPaths(workspace, debug)
+
+    if components_arg:
+        if components_arg in [ 'path', 'paths', 'dir', 'dirs', 'directories' ]:
+            for path in component_paths:
+                print "%s" % path
+            
+        elif components_arg in [ 'depend', 'dependencies' ]:
+            for path in component_paths:
+                components[path] = BassComponent(path, debug)
+
+            for c_path in components.keys():
+                component = components[c_path]
+
+                for d_path in components.keys():
+                    if (c_path != d_path and
+                        component.required(components[d_path])):
+                          print "%s: %s" % (c_path, d_path)
+
+        sys.exit(0)
+
+    sys.exit(1)
+
+if __name__ == "__main__":
+    main()
--- a/tools/build-watch.pl	Wed Aug 25 11:58:58 2010 -0700
+++ b/tools/build-watch.pl	Thu Sep 02 11:07:22 2010 -0500
@@ -116,7 +116,7 @@
 # Main execution begins here
 #
 GetOptions("c|command=s" => \$cmd, "i|input-file=s" => \@file,
-	   "v|verbose" => \$verbose);
+	   "p|pkg" => \$pkg_flag, "v|verbose" => \$verbose);
 
 if (defined($cmd)) {
 	$file = (tempfile(UNLINK => 1))[1];
@@ -132,8 +132,10 @@
 ($verbose == 1) && printf("*** Processing results...\n");
 my ($tools, $files) = process_dtrace_results($file);
 
-($verbose == 1) && printf("*** Generating package requirements...\n");
-my ($pkgs) = generate_package_requirements($tools, $files);
+if (defined($pkg_flag)) {
+	($verbose == 1) && printf("*** Generating package requirements...\n");
+	my ($pkgs) = generate_package_requirements($tools, $files);
+}
 
 if (defined($tools)) {
 	print "\n";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/transforms/print-paths	Thu Sep 02 11:07:22 2010 -0500
@@ -0,0 +1,30 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+#
+
+#
+# These transforms print only the package paths from the manifest.
+#
+
+<transform set license legacy -> drop>
+<transform path=(.+) -> print /%<1> >
+<transform -> drop>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/transforms/print-pkgs	Thu Sep 02 11:07:22 2010 -0500
@@ -0,0 +1,29 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+#
+
+#
+# These transforms print only the package name from the manifest.
+#
+
+<transform set name=pkg.fmri value=pkg:/(.+)@.* -> print %<1> >
+<transform -> drop>