7013265 userland could use a tool to aid in SUNW package generation
7013732 userland should allow 32/64 bit specific configuration options/environment
--- a/make-rules/configure.mk Thu Jan 20 14:23:47 2011 -0800
+++ b/make-rules/configure.mk Mon Jan 24 13:48:56 2011 -0800
@@ -70,12 +70,18 @@
CONFIGURE_OPTIONS += --mandir=$(CONFIGURE_MANDIR)
CONFIGURE_OPTIONS += --bindir=$(CONFIGURE_BINDIR.$(BITS))
CONFIGURE_OPTIONS += --libdir=$(CONFIGURE_LIBDIR.$(BITS))
+CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(BITS))
COMPONENT_INSTALL_ARGS += DESTDIR=$(PROTO_DIR)
$(BUILD_DIR)/$(MACH32)/.configured: BITS=32
$(BUILD_DIR)/$(MACH64)/.configured: BITS=64
+$(BUILD_DIR)/$(MACH32)/.built: BITS=32
+$(BUILD_DIR)/$(MACH64)/.built: BITS=64
+$(BUILD_DIR)/$(MACH32)/.installed: BITS=32
+$(BUILD_DIR)/$(MACH64)/.installed: BITS=64
+CONFIGURE_ENV += $(CONFIGURE_ENV.$(BITS))
CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(BITS))
# set the default target for installation of the component
--- a/make-rules/setup.py.mk Thu Jan 20 14:23:47 2011 -0800
+++ b/make-rules/setup.py.mk Mon Jan 24 13:48:56 2011 -0800
@@ -41,7 +41,8 @@
$(COMPONENT_PRE_BUILD_ACTION)
(cd $(SOURCE_DIR) ; $(ENV) $(PYTHON_ENV) \
$(PYTHON.$(BITS)) ./setup.py build \
- --build-temp $(@D:$(BUILD_DIR)/%=%))
+ --build-temp $(@D:$(BUILD_DIR)/%=%) \
+ $(COMPONENT_INSTALL_ARGS))
$(COMPONENT_POST_BUILD_ACTION)
$(TOUCH) $@
@@ -50,11 +51,14 @@
# belong in vendor-packages.
PYTHON_LIB= /usr/lib/python$(PYTHON_VERSION)/vendor-packages
+COMPONENT_INSTALL_ARGS += --root $(PROTO_DIR)
+COMPONENT_INSTALL_ARGS += --install-lib=$(PYTHON_LIB)
+
# install the built source into a prototype area
$(BUILD_DIR)/%/.installed: $(BUILD_DIR)/%/.built
$(COMPONENT_PRE_INSTALL_ACTION)
- (cd $(SOURCE_DIR) ; $(ENV) $(PYTHON_ENV) \
- $(PYTHON.$(BITS)) ./setup.py install --root $(PROTO_DIR) \
- --install-lib=$(PYTHON_LIB))
+ (cd $(SOURCE_DIR) ; $(ENV) $(COMPONENT_INSTALL_ENV) \
+ $(PYTHON.$(BITS)) ./setup.py install $(COMPONENT_INSTALL_ARGS))
$(COMPONENT_POST_INSTALL_ACTION)
$(TOUCH) $@
+
--- a/make-rules/shared-macros.mk Thu Jan 20 14:23:47 2011 -0800
+++ b/make-rules/shared-macros.mk Mon Jan 24 13:48:56 2011 -0800
@@ -236,3 +236,11 @@
$(COPTFLAG64) $($(MACH64)_CFLAGS) $(CCMODE64) \
$(ILDOFF) $(C99MODE) $(IROPTFLAG64)
+#
+# Environment variables and arguments passed into the build and install
+# environment(s). These specifically add the bit-specific data
+#
+COMPONENT_BUILD_ENV += $(COMPONENT_BUILD_ENV.$(BITS))
+COMPONENT_BUILD_ARGS += $(COMPONENT_BUILD_ARGS.$(BITS))
+COMPONENT_INSTALL_ENV += $(COMPONENT_INSTALL_ENV.$(BITS))
+COMPONENT_INSTALL_ARGS += $(COMPONENT_INSTALL_ARGS.$(BITS))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/sunw-history-package Mon Jan 24 13:48:56 2011 -0800
@@ -0,0 +1,108 @@
+#!/usr/perl5/bin/perl
+#
+# 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) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# sunw-history-package
+# A simple program to generate the actions contained in the SUNW package
+# that maps between the old (pre build-133) and new ips package names.
+#
+
+$|=1;
+
+use Getopt::Long;
+use File::Basename /qw basename/;
+
+my $PKG = '/usr/bin/pkg';
+
+sub generate_manifest {
+ local ($package_name) = @_;
+ my ($package, %depends) = ();
+
+ # gather some data
+ open($FP, "$PKG contents -r -H -o action.raw $package_name |");
+
+ while (<$FP>) { # save what we want
+ if (m{set\s+name=pkg.fmri\s+value=pkg://.+/(.+):.+$}) {
+ $package = $1;
+ } elsif (m{depend fmri=(.+)\s+type=require$}) {
+ $depends{$1} = 1;
+ }
+ }
+
+ close($FP);
+
+ # generate the manifest actions
+ print <<EOF;
+set name=pkg.fmri value=pkg:/$package
+set name=pkg.renamed value=true
+
+set name=org.opensolaris.consolidation value=\$(CONSOLIDATION)
+
+set name=variant.opensolaris.zone value=global value=nonglobal
+set name=variant.arch value=\$(ARCH)
+
+EOF
+ foreach (sort keys %depends) {
+ (m{^consolidation/}) ||
+ print "depend fmri=$_ type=require\n"
+ }
+}
+
+sub usage {
+ my $program = basename($0);
+ print <<EOF;
+Usage: $program (--package (new-ips-name)) ...
+
+EOF
+ exit(1);
+}
+
+sub main {
+ my (@current_packages, %SUNWpackages) = ();
+
+ GetOptions('package:s' => \@current_packages);
+
+ ($#current_packages == -1) && usage();
+
+ # find all SUNW packages that require the supplied packages
+ foreach (@current_packages) {
+ open($FP, "$PKG search -r -H -o pkg.name 'SUNW*:depend::*/$_' |");
+
+ while (<$FP>) {
+ chomp;
+ $SUNWpackages{$_} = 1;
+ }
+
+ close($FP);
+ }
+
+ # generate manifests for each SUNWpackage
+ foreach (sort keys %SUNWpackages) {
+ print "\n\n$_.p5m actions:\n";
+ generate_manifest($_);
+ }
+}
+
+#
+# Main execution starts here.
+#
+main();