--- a/components/python/nose/Makefile Wed Apr 17 19:17:06 2013 -0700
+++ b/components/python/nose/Makefile Thu Apr 18 08:16:56 2013 -0700
@@ -20,18 +20,18 @@
#
#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
#
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME= nose
-COMPONENT_VERSION= 1.1.2
+COMPONENT_VERSION= 1.2.1
COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
-COMPONENT_PROJECT_URL= http://code.google.com/p/python-nose/
+COMPONENT_PROJECT_URL= https://github.com/nose-devs/nose
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH= \
- sha256:b1ba12c1c45323fd8695be68ce7228456b86e51234f167027ebbc4ccda852c61
+ sha256:2171e9202d118d302d5db1decb52dd862b79e2a626ca19653a6914574a6ca7d9
COMPONENT_ARCHIVE_URL= http://pypi.python.org/packages/source/n/nose/$(COMPONENT_ARCHIVE)
COMPONENT_BUGDB= python-mod/nose
--- a/components/python/nose/nose-26.p5m Wed Apr 17 19:17:06 2013 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-#
-# 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) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
-#
-
-set name=pkg.fmri value=pkg:/library/python-2/nose-26@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
-set name=pkg.summary value="A unittest-based testing framework for python that makes writing and running tests easier"
-set name=com.oracle.info.description value="the nose unit test framework for Python 2.6"
-set name=com.oracle.info.tpno value=6585
-set name=info.classification value=org.opensolaris.category.2008:Development/Python
-set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
-set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
-set name=org.opensolaris.arc-caseid value=PSARC/2011/198
-set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
-
-dir path=usr
-dir path=usr/bin
-dir path=usr/lib
-dir path=usr/lib/python2.6
-dir path=usr/lib/python2.6/vendor-packages
-dir path=usr/lib/python2.6/vendor-packages/nose
-dir path=usr/lib/python2.6/vendor-packages/nose-$(COMPONENT_VERSION)-py2.6.egg-info
-dir path=usr/lib/python2.6/vendor-packages/nose/ext
-dir path=usr/lib/python2.6/vendor-packages/nose/plugins
-dir path=usr/lib/python2.6/vendor-packages/nose/sphinx
-
-file path=usr/bin/nosetests-2.6
-file path=usr/lib/python2.6/vendor-packages/nose-$(COMPONENT_VERSION)-py2.6.egg-info/dependency_links.txt
-file path=usr/lib/python2.6/vendor-packages/nose-$(COMPONENT_VERSION)-py2.6.egg-info/entry_points.txt
-file path=usr/lib/python2.6/vendor-packages/nose-$(COMPONENT_VERSION)-py2.6.egg-info/not-zip-safe
-file path=usr/lib/python2.6/vendor-packages/nose-$(COMPONENT_VERSION)-py2.6.egg-info/PKG-INFO
-file path=usr/lib/python2.6/vendor-packages/nose-$(COMPONENT_VERSION)-py2.6.egg-info/SOURCES.txt
-file path=usr/lib/python2.6/vendor-packages/nose-$(COMPONENT_VERSION)-py2.6.egg-info/top_level.txt
-file path=usr/lib/python2.6/vendor-packages/nose/__init__.py
-file path=usr/lib/python2.6/vendor-packages/nose/case.py
-file path=usr/lib/python2.6/vendor-packages/nose/commands.py
-file path=usr/lib/python2.6/vendor-packages/nose/config.py
-file path=usr/lib/python2.6/vendor-packages/nose/core.py
-file path=usr/lib/python2.6/vendor-packages/nose/exc.py
-file path=usr/lib/python2.6/vendor-packages/nose/ext/__init__.py
-file path=usr/lib/python2.6/vendor-packages/nose/ext/dtcompat.py
-file path=usr/lib/python2.6/vendor-packages/nose/failure.py
-file path=usr/lib/python2.6/vendor-packages/nose/importer.py
-file path=usr/lib/python2.6/vendor-packages/nose/inspector.py
-file path=usr/lib/python2.6/vendor-packages/nose/loader.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/__init__.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/allmodules.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/attrib.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/base.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/builtin.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/capture.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/collect.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/cover.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/debug.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/deprecated.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/doctests.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/errorclass.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/failuredetail.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/isolate.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/logcapture.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/manager.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/multiprocess.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/plugintest.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/prof.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/skip.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/testid.py
-file path=usr/lib/python2.6/vendor-packages/nose/plugins/xunit.py
-file path=usr/lib/python2.6/vendor-packages/nose/proxy.py
-file path=usr/lib/python2.6/vendor-packages/nose/pyversion.py
-file path=usr/lib/python2.6/vendor-packages/nose/result.py
-file path=usr/lib/python2.6/vendor-packages/nose/selector.py
-file path=usr/lib/python2.6/vendor-packages/nose/sphinx/__init__.py
-file path=usr/lib/python2.6/vendor-packages/nose/sphinx/pluginopts.py
-file path=usr/lib/python2.6/vendor-packages/nose/suite.py
-file path=usr/lib/python2.6/vendor-packages/nose/tools.py
-file path=usr/lib/python2.6/vendor-packages/nose/twistedtools.py
-file path=usr/lib/python2.6/vendor-packages/nose/usage.txt
-file path=usr/lib/python2.6/vendor-packages/nose/util.py
-
-link path=usr/bin/nosetests target=nosetests-2.6 \
- mediator=python mediator-version=2.6
-
-# force a dependency on the Python 2.6 runtime
-depend fmri=__TBD pkg.debug.depend.file=python2.6 \
- pkg.debug.depend.path=usr/bin type=require
-
-# force a dependency on the nose package
-depend fmri=library/python-2/nose@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) \
- type=require
-
-license nose.license license=LGPLv2.1
--- a/components/python/nose/nose-27.p5m Wed Apr 17 19:17:06 2013 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#
-# 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) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
-#
-
-set name=pkg.fmri value=pkg:/library/python-2/nose-27@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
-set name=pkg.summary value="A unittest-based testing framework for python that makes writing and running tests easier"
-set name=com.oracle.info.description value="the nose unit test framework for Python 2.7"
-set name=com.oracle.info.tpno value=6585
-set name=info.classification value=org.opensolaris.category.2008:Development/Python
-set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
-set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
-set name=org.opensolaris.arc-caseid value=PSARC/2011/198
-set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
-
-dir path=usr
-dir path=usr/bin
-dir path=usr/lib
-dir path=usr/lib/python2.7
-dir path=usr/lib/python2.7/vendor-packages
-dir path=usr/lib/python2.7/vendor-packages/nose-$(COMPONENT_VERSION)-py2.7.egg-info/
-dir path=usr/lib/python2.7/vendor-packages/nose
-dir path=usr/lib/python2.7/vendor-packages/nose/ext
-dir path=usr/lib/python2.7/vendor-packages/nose/plugins
-dir path=usr/lib/python2.7/vendor-packages/nose/sphinx
-
-# pkgdepend(1) and python 2.7 don't play well yet.
-file path=usr/bin/nosetests-2.7 pkg.depend.bypass-generate=.*
-file path=usr/lib/python2.7/vendor-packages/nose-$(COMPONENT_VERSION)-py2.7.egg-info/dependency_links.txt
-file path=usr/lib/python2.7/vendor-packages/nose-$(COMPONENT_VERSION)-py2.7.egg-info/entry_points.txt
-file path=usr/lib/python2.7/vendor-packages/nose-$(COMPONENT_VERSION)-py2.7.egg-info/not-zip-safe
-file path=usr/lib/python2.7/vendor-packages/nose-$(COMPONENT_VERSION)-py2.7.egg-info/PKG-INFO
-file path=usr/lib/python2.7/vendor-packages/nose-$(COMPONENT_VERSION)-py2.7.egg-info/SOURCES.txt
-file path=usr/lib/python2.7/vendor-packages/nose-$(COMPONENT_VERSION)-py2.7.egg-info/top_level.txt
-file path=usr/lib/python2.7/vendor-packages/nose/__init__.py
-file path=usr/lib/python2.7/vendor-packages/nose/case.py
-file path=usr/lib/python2.7/vendor-packages/nose/commands.py
-file path=usr/lib/python2.7/vendor-packages/nose/config.py
-file path=usr/lib/python2.7/vendor-packages/nose/core.py
-file path=usr/lib/python2.7/vendor-packages/nose/exc.py
-file path=usr/lib/python2.7/vendor-packages/nose/ext/__init__.py
-file path=usr/lib/python2.7/vendor-packages/nose/ext/dtcompat.py
-file path=usr/lib/python2.7/vendor-packages/nose/failure.py
-file path=usr/lib/python2.7/vendor-packages/nose/importer.py
-file path=usr/lib/python2.7/vendor-packages/nose/inspector.py
-file path=usr/lib/python2.7/vendor-packages/nose/loader.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/__init__.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/allmodules.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/attrib.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/base.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/builtin.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/capture.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/collect.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/cover.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/debug.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/deprecated.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/doctests.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/errorclass.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/failuredetail.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/isolate.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/logcapture.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/manager.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/multiprocess.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/plugintest.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/prof.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/skip.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/testid.py
-file path=usr/lib/python2.7/vendor-packages/nose/plugins/xunit.py
-file path=usr/lib/python2.7/vendor-packages/nose/proxy.py
-file path=usr/lib/python2.7/vendor-packages/nose/pyversion.py
-file path=usr/lib/python2.7/vendor-packages/nose/result.py
-file path=usr/lib/python2.7/vendor-packages/nose/selector.py
-file path=usr/lib/python2.7/vendor-packages/nose/sphinx/__init__.py
-file path=usr/lib/python2.7/vendor-packages/nose/sphinx/pluginopts.py
-file path=usr/lib/python2.7/vendor-packages/nose/suite.py
-file path=usr/lib/python2.7/vendor-packages/nose/tools.py
-file path=usr/lib/python2.7/vendor-packages/nose/twistedtools.py
-file path=usr/lib/python2.7/vendor-packages/nose/usage.txt
-file path=usr/lib/python2.7/vendor-packages/nose/util.py
-
-link path=usr/bin/nosetests target=nosetests-2.7 \
- mediator=python mediator-version=2.7
-
-# force a dependency on the Python 2.7 runtime
-depend fmri=__TBD pkg.debug.depend.file=python2.7 \
- pkg.debug.depend.path=usr/bin type=require
-
-# force a dependency on the nose package
-depend fmri=library/python-2/nose@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) \
- type=require
-
-license nose.license license=LGPLv2.1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/nose/nose-GENFRAG.p5m Thu Apr 18 08:16:56 2013 -0700
@@ -0,0 +1,26 @@
+#
+# 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) 2013, Oracle and/or its affiliates. All rights reserved.
+#
+
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+file nosetests.1 path=usr/share/man/man1/nosetests.1
+license nose.license license=LGPLv2.1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/nose/nose-PYVER.p5m Thu Apr 18 08:16:56 2013 -0700
@@ -0,0 +1,100 @@
+#
+# 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) 2013, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri \
+ value=pkg:/library/python-2/nose-$(PYV)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary \
+ value="A unittest-based testing framework for python that makes writing and running tests easier"
+set name=com.oracle.info.description value="the Python nose unit test framework"
+set name=com.oracle.info.tpno value=12933
+set name=info.classification \
+ value=org.opensolaris.category.2008:Development/Python
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=org.opensolaris.arc-caseid value=PSARC/2011/198
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+link path=usr/bin/nosetests target=nosetests-$(PYVER) mediator=python \
+ mediator-version=$(PYVER)
+file path=usr/bin/nosetests-$(PYVER)
+file path=usr/lib/python$(PYVER)/vendor-packages/nose-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO
+file path=usr/lib/python$(PYVER)/vendor-packages/nose-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/nose-$(COMPONENT_VERSION)-py$(PYVER).egg-info/dependency_links.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/nose-$(COMPONENT_VERSION)-py$(PYVER).egg-info/entry_points.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/nose-$(COMPONENT_VERSION)-py$(PYVER).egg-info/not-zip-safe
+file path=usr/lib/python$(PYVER)/vendor-packages/nose-$(COMPONENT_VERSION)-py$(PYVER).egg-info/top_level.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/case.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/commands.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/config.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/core.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/exc.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/ext/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/ext/dtcompat.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/failure.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/importer.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/inspector.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/loader.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/allmodules.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/attrib.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/base.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/builtin.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/capture.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/collect.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/cover.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/debug.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/deprecated.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/doctests.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/errorclass.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/failuredetail.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/isolate.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/logcapture.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/manager.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/multiprocess.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/plugintest.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/prof.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/skip.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/testid.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/plugins/xunit.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/proxy.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/pyversion.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/result.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/selector.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/sphinx/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/sphinx/pluginopts.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/suite.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/tools/__init__.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/tools/nontrivial.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/tools/trivial.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/twistedtools.py
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/usage.txt
+file path=usr/lib/python$(PYVER)/vendor-packages/nose/util.py
+license nose.license license=LGPLv2.1
+
+# force a dependency on the Python runtime
+depend type=require fmri=__TBD pkg.debug.depend.file=python$(PYVER) \
+ pkg.debug.depend.path=usr/bin
+
+# force a dependency on the nose package
+depend type=require \
+ fmri=library/python-2/nose@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
--- a/components/python/nose/nose.p5m Wed Apr 17 19:17:06 2013 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-#
-# 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) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
-#
-
-<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
-
-set name=pkg.fmri value=pkg:/library/python-2/nose@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
-set name=pkg.summary value="A unittest-based testing framework for python that makes writing and running tests easier"
-set name=com.oracle.info.description value="the nose unit test framework for Python"
-set name=com.oracle.info.tpno value=6585
-set name=info.classification value="org.opensolaris.category.2008:Development/Python"
-set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
-set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
-set name=org.opensolaris.arc-caseid value=PSARC/2011/198
-set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
-
-dir path=usr
-dir path=usr/share
-dir path=usr/share/man
-dir path=usr/share/man/man1
-file nosetests.1 path=usr/share/man/man1/nosetests.1
-
-depend fmri=library/python-2/nose-26@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) \
- predicate=runtime/python-26 \
- type=conditional
-depend fmri=library/python-2/nose-27@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) \
- predicate=runtime/python-27 \
- type=conditional
-
-license nose.license license=LGPLv2.1
--- a/make-rules/ips.mk Wed Apr 17 19:17:06 2013 -0700
+++ b/make-rules/ips.mk Thu Apr 18 08:16:56 2013 -0700
@@ -96,13 +96,39 @@
MANIFEST_BASE = $(BUILD_DIR)/manifest-$(MACH)
CANONICAL_MANIFESTS = $(wildcard *.p5m)
+
+# Look for manifests which need to be duplicated for each version of python.
+ifeq ($(findstring -PYVER,$(CANONICAL_MANIFESTS)),-PYVER)
+UNVERSIONED_MANIFESTS = $(filter-out %-GENFRAG.p5m,$(filter-out %-PYVER.p5m,$(CANONICAL_MANIFESTS)))
+PY_MANIFESTS = $(filter %-PYVER.p5m,$(CANONICAL_MANIFESTS))
+PYV_MANIFESTS = $(foreach v,$(shell echo $(PYTHON_VERSIONS) | tr -d .),$(shell echo $(PY_MANIFESTS) | sed -e 's/-PYVER.p5m/-$(v).p5m/g'))
+PYNV_MANIFESTS = $(shell echo $(PY_MANIFESTS) | sed -e 's/-PYVER//')
+else
+UNVERSIONED_MANIFESTS = $(CANONICAL_MANIFESTS)
+endif
+
+# Look for manifests which need to be duplicated for each version of perl.
+ifeq ($(findstring -PERLVER,$(UNVERSIONED_MANIFESTS)),-PERLVER)
+NOPERL_MANIFESTS = $(filter-out %-GENFRAG.p5m,$(filter-out %-PERLVER.p5m,$(UNVERSIONED_MANIFESTS)))
+PERL_MANIFESTS = $(filter %-PERLVER.p5m,$(UNVERSIONED_MANIFESTS))
+PERLV_MANIFESTS = $(foreach v,$(shell echo $(PERL_VERSIONS) | tr -d .),$(shell echo $(PERL_MANIFESTS) | sed -e 's/-PERLVER.p5m/-$(v).p5m/g'))
+PERLNV_MANIFESTS = $(shell echo $(PERL_MANIFESTS) | sed -e 's/-PERLVER//')
+else
+NOPERL_MANIFESTS = $(UNVERSIONED_MANIFESTS)
+endif
+
+VERSIONED_MANIFESTS = \
+ $(PYV_MANIFESTS) $(PYNV_MANIFESTS) \
+ $(PERLV_MANIFESTS) $(PERLNV_MANIFESTS) \
+ $(NOPERL_MANIFESTS)
+
GENERATED = $(MANIFEST_BASE)-generated
COMBINED = $(MANIFEST_BASE)-combined
-MANIFESTS = $(CANONICAL_MANIFESTS:%=$(MANIFEST_BASE)-%)
+MANIFESTS = $(VERSIONED_MANIFESTS:%=$(MANIFEST_BASE)-%)
-DEPENDED=$(CANONICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.depend)
-RESOLVED=$(CANONICAL_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.depend.res)
+DEPENDED=$(VERSIONED_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.depend)
+RESOLVED=$(VERSIONED_MANIFESTS:%.p5m=$(MANIFEST_BASE)-%.depend.res)
PUBLISHED=$(RESOLVED:%.depend.res=%.published)
COPYRIGHT_FILE ?= $(COMPONENT_NAME)-$(COMPONENT_VERSION).copyright
@@ -130,8 +156,70 @@
$(MANIFEST_BASE)-%.generate: %.p5m canonical-manifests
cat $(METADATA_TEMPLATE) $< >$@
-# mogrify the manifest
-$(MANIFEST_BASE)-%.mogrified: %.p5m $(BUILD_DIR) canonical-manifests
+# The text of a transform that will emit a dependency conditional on the
+# presence of a particular version of a runtime, which will then draw in the
+# runtime-version-specific version of the package we're operating on. $(1) is
+# the name of the runtime package, and $(2) is the version suffix.
+mkgeneric = \
+ echo "<transform set name=pkg.fmri value=(?:pkg:/)?(.+)-\#\#\#@(.*)" \
+ "-> emit depend nodrop=true type=conditional" \
+ "predicate=$(1)-$(2) fmri=%<1>-$(2)@%<2>>" >> $@;
+
+# Define and execute a macro that generates a rule to create a manifest for a
+# python module specific to a particular version of the python runtime.
+define python-manifest-rule
+$(MANIFEST_BASE)-%-$(shell echo $(1) | tr -d .).p5m: %-PYVER.p5m
+ $(PKGMOGRIFY) -D PYVER=$(1) -D PYV=$(shell echo $(1) | tr -d .) $$< > $$@
+endef
+$(foreach ver,$(PYTHON_VERSIONS),$(eval $(call python-manifest-rule,$(ver))))
+
+# A rule to create a helper transform package for python, that will insert the
+# appropriate conditional dependencies into a python library's
+# runtime-version-generic package to pull in the version-specific bits when the
+# corresponding version of python is on the system.
+$(WS_TOP)/transforms/mkgeneric-python: $(WS_TOP)/make-rules/shared-macros.mk
+ $(RM) $@
+ $(foreach ver,$(shell echo $(PYTHON_VERSIONS) | tr -d .), \
+ $(call mkgeneric,runtime/python,$(ver)))
+
+# Build Python version-wrapping manifests from the generic version.
+$(MANIFEST_BASE)-%.p5m: %-PYVER.p5m $(WS_TOP)/transforms/mkgeneric-python
+ $(PKGMOGRIFY) -D PYV=### $(WS_TOP)/transforms/mkgeneric-python \
+ $(WS_TOP)/transforms/mkgeneric $< > $@
+ if [ -f $*-GENFRAG.p5m ]; then cat $*-GENFRAG.p5m >> $@; fi
+
+# Define and execute a macro that generates a rule to create a manifest for a
+# perl module specific to a particular version of the perl runtime.
+define perl-manifest-rule
+$(MANIFEST_BASE)-%-$(shell echo $(1) | tr -d .).p5m: %-PERLVER.p5m
+ $(PKGMOGRIFY) -D PERLVER=$(1) -D PLV=$(shell echo $(1) | tr -d .) \
+ -D PERL_ARCH=$(call PERL_ARCH_FUNC,$(PERL.$(1))) $$< > $$@
+endef
+$(foreach ver,$(PERL_VERSIONS),$(eval $(call perl-manifest-rule,$(ver))))
+
+# A rule to create a helper transform package for perl, that will insert the
+# appropriate conditional dependencies into a perl library's
+# runtime-version-generic package to pull in the version-specific bits when the
+# corresponding version of perl is on the system.
+$(WS_TOP)/transforms/mkgeneric-perl: $(WS_TOP)/make-rules/shared-macros.mk
+ $(RM) $@
+ $(foreach ver,$(shell echo $(PERL_VERSIONS) | tr -d .), \
+ $(call mkgeneric,runtime/perl,$(ver)))
+
+# Build Perl version-wrapping manifests from the generic version.
+$(MANIFEST_BASE)-%.p5m: %-PERLVER.p5m $(WS_TOP)/transforms/mkgeneric-perl
+ $(PKGMOGRIFY) -D PLV=### $(WS_TOP)/transforms/mkgeneric-perl \
+ $(WS_TOP)/transforms/mkgeneric $< > $@
+ if [ -f $*-GENFRAG.p5m ]; then cat $*-GENFRAG.p5m >> $@; fi
+
+# mogrify non-parameterized manifests
+$(MANIFEST_BASE)-%.mogrified: %.p5m $(BUILD_DIR)
+ $(PKGMOGRIFY) $(PKG_OPTIONS) $< \
+ $(PUBLISH_TRANSFORMS) | \
+ sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
+
+# mogrify parameterized manifests
+$(MANIFEST_BASE)-%.mogrified: $(MANIFEST_BASE)-%.p5m $(BUILD_DIR)
$(PKGMOGRIFY) $(PKG_OPTIONS) $< \
$(PUBLISH_TRANSFORMS) | \
sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
@@ -175,18 +263,18 @@
$(TOUCH) $@
print-package-names: canonical-manifests
- @cat $(CANONICAL_MANIFESTS) $(WS_TOP)/transforms/print-pkgs | \
+ @cat $(VERSIONED_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 | \
+ @cat $(VERSIONED_MANIFESTS) $(WS_TOP)/transforms/print-paths | \
$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 | \
sed -e '/^$$/d' -e '/^#.*$$/d' | sort -u
install-packages: publish
@if [ $(IS_GLOBAL_ZONE) = 0 -o x$(ROOT) != x ]; then \
- cat $(CANONICAL_MANIFESTS) $(WS_TOP)/transforms/print-paths | \
+ cat $(VERSIONED_MANIFESTS) $(WS_TOP)/transforms/print-paths | \
$(PKGMOGRIFY) $(PKG_OPTIONS) /dev/fd/0 | \
sed -e '/^$$/d' -e '/^#.*$$/d' -e 's;/;;' | sort -u | \
(cd $(PROTO_DIR) ; pfexec /bin/cpio -dump $(ROOT)) ; \
--- a/make-rules/shared-macros.mk Wed Apr 17 19:17:06 2013 -0700
+++ b/make-rules/shared-macros.mk Thu Apr 18 08:16:56 2013 -0700
@@ -18,7 +18,7 @@
#
# CDDL HEADER END
#
-# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
#
PATH=/usr/bin:/usr/gnu/bin
@@ -41,7 +41,9 @@
export DOWNLOAD_SEARCH_PATH += $(EXTERNAL_ARCHIVE_MIRROR)
# The workspace starts at the mercurial root
-export WS_TOP ?= $(shell hg root)
+ifeq ($(origin WS_TOP), undefined)
+export WS_TOP := $(shell hg root)
+endif
WS_LOGS = $(WS_TOP)/$(MACH)/logs
WS_REPO = $(WS_TOP)/$(MACH)/repo
@@ -71,7 +73,7 @@
ROOT = /
-OS_VERSION = $(shell uname -r)
+OS_VERSION := $(shell uname -r)
SOLARIS_VERSION = $(OS_VERSION:5.%=2.%)
include $(WS_MAKE_RULES)/ips-buildinfo.mk
@@ -91,7 +93,7 @@
COMPONENT_SRC_NAME = $(COMPONENT_NAME)
-COMPONENT_DIR = $(shell pwd)
+COMPONENT_DIR := $(shell pwd)
SOURCE_DIR = $(COMPONENT_DIR)/$(COMPONENT_SRC)
BUILD_DIR = $(COMPONENT_DIR)/build
PROTO_DIR = $(BUILD_DIR)/prototype/$(MACH)
@@ -172,7 +174,7 @@
CONSTANT_TIME += TIME_CONSTANT=$(TIME_CONSTANT)
# set MACH from uname -p to either sparc or i386
-MACH = $(shell uname -p)
+MACH := $(shell uname -p)
# set MACH32 from MACH to either sparcv7 or i86
MACH32_1 = $(MACH:sparc=sparcv7)
@@ -307,13 +309,13 @@
PERL = $(PERL.$(PERL_VERSION))
-PERL_ARCH = $(shell $(PERL) -e 'use Config; print $$Config{archname}')
+PERL_ARCH := $(shell $(PERL) -e 'use Config; print $$Config{archname}')
# Optimally we should ask perl which C compiler was used but it doesn't
# result in a full path name. Only "c" is being recorded
# inside perl builds while we actually need a full path to
# the studio compiler.
-#PERL_CC = $(shell $(PERL) -e 'use Config; print $$Config{cc}')
-PERL_OPTIMIZE = $(shell $(PERL) -e 'use Config; print $$Config{optimize}')
+#PERL_CC := $(shell $(PERL) -e 'use Config; print $$Config{cc}')
+PERL_OPTIMIZE := $(shell $(PERL) -e 'use Config; print $$Config{optimize}')
PKG_MACROS += PERL_ARCH=$(PERL_ARCH)
PKG_MACROS += PERL_VERSION=$(PERL_VERSION)
@@ -369,8 +371,8 @@
# Enables large file support for components that have no other means of doing
# so. Use CPP_LARGEFILES and not the .32/.64 variety directly
-CPP_LARGEFILES.32 = $(shell getconf LFS_CFLAGS)
-CPP_LARGEFILES.64 = $(shell getconf LFS64_CFLAGS)
+CPP_LARGEFILES.32 := $(shell getconf LFS_CFLAGS)
+CPP_LARGEFILES.64 := $(shell getconf LFS64_CFLAGS)
CPP_LARGEFILES = $(CPP_LARGEFILES.$(BITS))
# Enables some #pragma redefine_extname to POSIX-compliant Standard C Library
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/transforms/mkgeneric Thu Apr 18 08:16:56 2013 -0700
@@ -0,0 +1,47 @@
+#
+# 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) 2013, Oracle and/or its affiliates. All rights reserved.
+#
+
+# This set of transforms helps us take a package that's parameterized on a
+# platform's versions and emit a package that conditionally depends on those
+# versioned packages, predicated on the platform version packages being
+# present.
+#
+# For instance, for a package "mako-generic", we want to create a package
+# "mako", which brings in "mako-26" if "python-26" is present, and "mako-27" if
+# "python-27" is present.
+#
+# We do this by grabbing just the set actions from "mako-generic", and emitting
+# those conditional depend actions. We require that the parameterized package
+# name end in "-###" (typically by setting a pkgmogrify variable to "###"),
+# which we also remove here. This works in conjunction with a set of rules in
+# make-rules/ips.mk which create and use another transform file that actually
+# emit the conditional dependencies.
+
+<transform file dir link hardlink license user group driver legacy signature -> drop>
+<transform depend -> default nodrop false>
+<transform depend nodrop=false -> drop>
+<transform set name=pkg.fmri value=(?:pkg:/)?(.+)-###@(.*) -> \
+ edit value -### "">
+<transform depend nodrop=true -> delete nodrop true>