automatically generate intercomponent dependencies for build ordering
automatically generate component requirements for build environment construction
add missing component dependencies
add libmng for dependency validation
--- 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' >[email protected]
+
+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 [email protected] ; echo "$(TARGET) \c" ; pwd ; \
- $(GMAKE) $(TARGET) $(LOG)
+$(COMPONENT_DIRS): setup FORCE
+ @cd [email protected] ; echo "$(TARGET) [email protected]" ; $(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' >[email protected]
+
+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/[email protected]$(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) [email protected]
+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 [email protected] from Makefile REQUIRED_* data"
+ @pkg search -H -l '<$(DEPENDS:%=% OR) /bin/true>' \
+ | sed -e 's/pkg:\/\(.*\)@.*/REQUIRED_PKGS += \1/g' >[email protected]
+
+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>