7047456 X could do better at building & packaging python bits nv_167
authorAlan Coopersmith <Alan.Coopersmith@Oracle.COM>
Mon, 23 May 2011 12:14:08 -0700
changeset 1132 d9f96853a754
parent 1131 7dc974a70bc8
child 1133 48b98305ded1
7047456 X could do better at building & packaging python bits
exception_lists/packaging
open-src/common/Makefile.inc
open-src/common/Makefile.init
open-src/lib/libxcb/Makefile
open-src/proto/xcbproto/Makefile
pkg/Makefile
pkg/manifests/developer-opensolaris-X.p5m
pkg/manifests/x11-library-libxcb.p5m
--- a/exception_lists/packaging	Fri May 20 21:05:21 2011 -0700
+++ b/exception_lists/packaging	Mon May 23 12:14:08 2011 -0700
@@ -78,3 +78,11 @@
 
 # Don't install until we move off HAL .fdi file for synaptics
 usr/share/X11/xorg.conf.d/50-synaptics.conf	i386
+
+# Only need the normal *.pyc compiled byte-code, not the "optimized" *.pyo
+usr/lib/python2.6/vendor-packages/xcbgen/__init__.pyo
+usr/lib/python2.6/vendor-packages/xcbgen/error.pyo
+usr/lib/python2.6/vendor-packages/xcbgen/expr.pyo
+usr/lib/python2.6/vendor-packages/xcbgen/matcher.pyo
+usr/lib/python2.6/vendor-packages/xcbgen/state.pyo
+usr/lib/python2.6/vendor-packages/xcbgen/xtypes.pyo
--- a/open-src/common/Makefile.inc	Fri May 20 21:05:21 2011 -0700
+++ b/open-src/common/Makefile.inc	Mon May 23 12:14:08 2011 -0700
@@ -518,6 +518,7 @@
     CPPFLAGS="$(DEFAULT_CONFIG_CPPFLAGS) $(MODTYPE_CPPFLAGS) $(MODULE_CPPFLAGS)" \
     LDFLAGS="$(DEFAULT_CONFIG_LDFLAGS) $(MODTYPE_CFLAGS) $(MODTYPE_LDFLAGS) $(MODULE_CFLAGS) $(MODULE_LDFLAGS)" \
     PKG_CONFIG_PATH="$(DEFAULT_PKG_CONFIG_PATH)" \
+    PYTHON="$(PYTHON)" PYTHONPATH="$(PYTHON_PATH)" \
     INSTALL="$(INSTALL_SCRIPT)" CPPROG="cp -p" \
     MAKE="$(MODULE_MAKE)" CONFIG_SHELL="$(CONFIG_SHELL)"
 
@@ -553,6 +554,7 @@
 	PROTODIR='$(PROTODIR)' \
 	MAKE='$(MODULE_MAKE)' \
 	MKDIRPROG='mkdir -p' \
+	PYTHONPATH="$(PYTHON_PATH)" \
 	$(MODTYPE_BUILD_ENV) $(MODULE_BUILD_ENV)
 
 DEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
@@ -570,16 +572,20 @@
 build-in-subdir:
 	$(DEFAULT_BUILD_COMMAND:@DIR@=$(subdir)) $(subdir_cmd)
 
+INSTALL_ENV = $(BUILD_ENV) \
+	INSTALL="$(INSTALL_SCRIPT)" CPPROG="cp -p" \
+	$(MODTYPE_INSTALL_ENV) $(MODULE_INSTALL_ENV)
+
 DEFAULT_INSTALL_MAKEFLAGS= -e DESTDIR=$(PROTODIR) \
 	pkgconfigdir=$(MODULE_PKGCONFIG_DIR) \
 	$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
-	$(MODTYPE_INSTALL_MAKEFLAGS) $(MODULE_INSTALL_MAKEFLAGS) \
+	$(MODTYPE_INSTALL_MAKEFLAGS) $(MODULE_INSTALL_MAKEFLAGS)
 
 # Dependencies for make install step
 INSTALL_DEPS = $(BUILD_TARGETS) $(MODTYPE_INSTALL_DEPS) $(MODULE_INSTALL_DEPS)
 
 DEFAULT_INSTALL_COMMAND = cd @DIR@ ; \
-	$(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS)
+	$(INSTALL_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS)
 
 default_install: $(INSTALL_DEPS)
 	$(DEFAULT_INSTALL_COMMAND:@DIR@=$(SOURCE_DIR)) install
--- a/open-src/common/Makefile.init	Fri May 20 21:05:21 2011 -0700
+++ b/open-src/common/Makefile.init	Mon May 23 12:14:08 2011 -0700
@@ -280,6 +280,13 @@
 
 ### Other tools needed to build
 
+## Python tools & paths
+# When changing PYTHON_VERSION, check that PYTHON_PKG_VERSION & 
+# PYTHON_PATH_VERSION are still set correctly in pkg/Makefile
+PYTHON_VERSION=2.6
+PYTHON=/usr/bin/python$(PYTHON_VERSION)
+PYTHON_PATH=$(PROTODIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages:$(PROTODIR)/usr/lib/python$(PYTHON_VERSION)/site-packages:/usr/lib/python$(PYTHON_VERSION)/vendor-packages:/usr/lib/python$(PYTHON_VERSION)/site-packages
+
 # Script used to install files in proto area
 INSTALL_SCRIPT=$(TOP)/open-src/common/install-sh -c
 
--- a/open-src/lib/libxcb/Makefile	Fri May 20 21:05:21 2011 -0700
+++ b/open-src/lib/libxcb/Makefile	Mon May 23 12:14:08 2011 -0700
@@ -51,6 +51,9 @@
 		 xcb_conn.c.3.patch \
 		 Makefile.am.4.patch
 
+# Regenerate Makefile.in's from Makefile.am's after patching them
+AUTORECONF=yes
+
 # Library name (used for specfiles/mapfiles)
 LIBNAME=xcb
 
@@ -62,15 +65,6 @@
 MODULE_LD_OPTIONS = -z ignore -lc
 LD_LIBRARY_PATH=$(PROTODIR)/usr/lib$(ARCHLIBSUBDIR)
 
-# We need Python
-PYTHON_VERSION=2.6
-PYTHON=/usr/bin/python$(PYTHON_VERSION)
-PYTHON_PATH=$(PROTODIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages:$(PROTODIR)/usr/lib/python$(PYTHON_VERSION)/site-packages:/usr/lib/python$(PYTHON_VERSION)/site-packages:/usr/lib/python$(PYTHON_VERSION)/vendor-packages
-PYTHONPATH=$(PYTHON_PATH)
-
-# We want GNU cp
-GNUCP=/usr/gnu/bin/cp
-
 # Command line options to GNU autoconf configure script
 MODULE_CONFIG_OPTS = $(MODTYPE_CONFIG_OPTS) \
 		     --disable-libtool-lock \
@@ -104,28 +98,7 @@
 # Work around libtool's interference
 DELIBTOOLIZE=yes
 
-MODULE_CPPFLAGS = -I$(PROTODIR)/usr/include/X11 \
-		  -I$(PROTODIR)/usr/include
-
 # pkg-config files that need to have -R added
 FIX_PC_FILES=*.pc.in
 
 include ../Makefile.inc
-
-# Regenerate Makefile.in's from Makefile.am's after patching them
-AUTORECONF=yes
-AUTORECONF_FLAGS = -vif
-
-# We need PYTHON and PYTHONPATH in our environment
-MODULE_BUILD_ENV = PYTHON="$(PYTHON)" \
-		   PYTHONPATH="$(PYTHON_PATH)" \
-		   PROTODIR="$(PROTODIR)" \
-		   CC="$(CC)" \
-		   CFLAGS="$(CFLAGS)" \
-		   CPPFLAGS="$(CPPFLAGS)" \
-		   LDFLAGS="$(LDFLAGS)" \
-		   LD_OPTIONS="$(MODULE_LD_OPTIONS)" \
-		   LD="$(CC) $(CFLAGS) $(LDFLAGS)" \
-		   LD_LIBRARY_PATH="$(LD_LIBRARY_PATH)" \
-		   LD_OPTIONS="$(MODULE_LD_OPTIONS)"
-
--- a/open-src/proto/xcbproto/Makefile	Fri May 20 21:05:21 2011 -0700
+++ b/open-src/proto/xcbproto/Makefile	Mon May 23 12:14:08 2011 -0700
@@ -48,15 +48,6 @@
 # Merge in additional sources from sun-src directory
 ADDITIONAL_SOURCE_DIR=sun-src
 
-# We need Python
-PYTHON_VERSION=2.6
-PYTHON=/usr/bin/python$(PYTHON_VERSION)
-PYTHON_PATH=$(PROTODIR)/usr/lib/python$(PYTHON_VERSION)/vendor-packages:$(PROTODIR)/usr/lib/python$(PYTHON_VERSION)/site-packages:/usr/lib/python$(PYTHON_VERSION)/site-packages:/usr/lib/python$(PYTHON_VERSION)/vendor-packages
-
-# We want to use the PYTHON set above in our environment
-MODULE_BUILD_ENV = PYTHON="$(PYTHON)" \
-		   PYTHONPATH="$(PYTHON_PATH)"
-
 ### Include common rulesets
 include ../Makefile.inc
 
--- a/pkg/Makefile	Fri May 20 21:05:21 2011 -0700
+++ b/pkg/Makefile	Mon May 23 12:14:08 2011 -0700
@@ -186,28 +186,35 @@
 		-e "s{_HG_ID_}{$${HG_ID}}" transforms/versions.tmpl > $@
 
 # Set variables used by pkgmogrify 
+# These are the macros that may be used in package manifests
+PKGMOG_DEFINES = 
+
 # Most upstream packages provide specific version numbers instead of using
 # the default of $(OSPKGVERS)
 # Some use $(X11PKGVERS) to refer to the X11 katamari version since they
 # bundle together components from multiple upstream packages with individual
 # version numbers
-X11PKGVERS = 7.6
-OSPKGVERS = 0.$(RELEASE)
+PKGMOG_DEFINES += X11PKGVERS=7.6
+PKGMOG_DEFINES += OSPKGVERS=0.$(RELEASE)
 
 # Base URL for ARC cases used in opensolaris.arc_url metadata
-ARC_URL=http://arc.opensolaris.org/caselog/
+PKGMOG_DEFINES += ARC_URL='http://arc.opensolaris.org/caselog/'
+
+# Platform specific choices
+PKGMOG_DEFINES += i386_ONLY=$(POUND_SIGN) sparc_ONLY=$(POUND_SIGN)
+PKGMOG_DEFINES += $(PKGMACH)_ONLY= 
 
-# These are the macros that may be used in package manifests
-PKGMOG_DEFINES= \
-        i386_ONLY=$(POUND_SIGN) \
-        sparc_ONLY=$(POUND_SIGN) \
-        $(PKGMACH)_ONLY= \
-        ARCH=$(PKGMACH) \
-        ARCH32=$(SUBDIR32_$(PKGMACH)) \
-        ARCH64=$(SUBDIR64_$(PKGMACH)) \
-        OSPKGVERS=$(OSPKGVERS) \
-        X11PKGVERS=$(X11PKGVERS) \
-	ARC_URL='$(ARC_URL)'
+# Architecture specific directory names
+PKGMOG_DEFINES += ARCH=$(PKGMACH)
+PKGMOG_DEFINES += ARCH32=$(SUBDIR32_$(PKGMACH))
+PKGMOG_DEFINES += ARCH64=$(SUBDIR64_$(PKGMACH))
+
+# Python version string used in path names, such as /usr/lib/python2.6
+PKGMOG_DEFINES += PYTHON_PATH_VERSION=$(PYTHON_VERSION)
+# Python version string used in package names, such as pkg:/runtime/python-26
+PYTHON_PKG_VERSION_CMD = print $(PYTHON_VERSION) | tr -d '.'
+PKGMOG_DEFINES += PYTHON_PKG_VERSION=$(PYTHON_PKG_VERSION_CMD:sh)
+
 
 # Default transformations to apply
 PM_TRANSFORMS = $(PKG_BRANDING_TRANSFORMS) \
@@ -419,7 +426,7 @@
 		print "## Publishing $(@F:%.pub=%) to proto repository"; \
 		pkgsend -s file://$(PKGDEST) publish -d $(PKGROOT) \
 		    -d license_files -d $(PROTOMETA)/$(@F:%.pub=%) \
-		    --fmri-in-manifest --no-index --no-catalog \
+		    --fmri-in-manifest --no-index --no-catalog -T '*.py' \
 		    $(@:%.pub=%.res) > /dev/null; \
 	fi; \
 	$(TOUCH) $(@)
--- a/pkg/manifests/developer-opensolaris-X.p5m	Fri May 20 21:05:21 2011 -0700
+++ b/pkg/manifests/developer-opensolaris-X.p5m	Mon May 23 12:14:08 2011 -0700
@@ -125,7 +125,7 @@
 depend fmri=pkg:/library/ncurses type=require
 
 # Mesa 7.10.2 requires libxml2 python module
-depend fmri=pkg:/library/python-2/libxml2-26 type=require
+depend fmri=pkg:/library/python-2/libxml2-$(PYTHON_PKG_VERSION) type=require
 
 # libXfont & libfontenc link with libz
 depend fmri=pkg:/library/zlib type=require
@@ -135,6 +135,9 @@
 depend fmri=pkg:/runtime/perl-584 type=require
 depend fmri=pkg:/runtime/perl-584/extra type=require
 
+# xcb & mesa require python interpreter/compiler
+depend fmri=pkg:/runtime/python-$(PYTHON_PKG_VERSION) type=require
+
 # Xserver currently links with HAL & Dbus
 depend fmri=pkg:/service/hal type=require
 
--- a/pkg/manifests/x11-library-libxcb.p5m	Fri May 20 21:05:21 2011 -0700
+++ b/pkg/manifests/x11-library-libxcb.p5m	Mon May 23 12:14:08 2011 -0700
@@ -29,6 +29,9 @@
 <transform file path=usr/share/doc/libxcb/tutorial/.*\.html$ -> default facet.devel true>
 <transform file path=usr/share/doc/libxcb/.*\.css$ -> default facet.devel true>
 <transform file path=usr/share/doc/libxcb/tutorial/.*\.css$ -> default facet.devel true>
+# Autogenerate *.pyc manifest entries for each *.py file
+<transform file path=.*\.py$ -> emit file path=%(path)c>
+
 
 set name=pkg.fmri value=pkg:/x11/library/libxcb@__version:libxcb__
 set name=pkg.description \
@@ -40,9 +43,9 @@
 dir path=usr/lib
 dir path=usr/lib/pkgconfig
 dir path=usr/lib/$(ARCH64)
-dir path=usr/lib/python2.6
-dir path=usr/lib/python2.6/vendor-packages
-dir path=usr/lib/python2.6/vendor-packages/xcbgen
+dir path=usr/lib/python$(PYTHON_PATH_VERSION)
+dir path=usr/lib/python$(PYTHON_PATH_VERSION)/vendor-packages
+dir path=usr/lib/python$(PYTHON_PATH_VERSION)/vendor-packages/xcbgen
 dir path=usr/lib/$(ARCH64)/pkgconfig
 dir path=usr/share
 dir path=usr/share/doc
@@ -256,24 +259,12 @@
 file path=usr/share/xcb/xv.xml
 file path=usr/share/xcb/xcb.xsd
 #
-file path=usr/lib/python2.6/vendor-packages/xcbgen/error.py
-file path=usr/lib/python2.6/vendor-packages/xcbgen/error.pyc
-file path=usr/lib/python2.6/vendor-packages/xcbgen/error.pyo
-file path=usr/lib/python2.6/vendor-packages/xcbgen/expr.py
-file path=usr/lib/python2.6/vendor-packages/xcbgen/expr.pyc
-file path=usr/lib/python2.6/vendor-packages/xcbgen/expr.pyo
-file path=usr/lib/python2.6/vendor-packages/xcbgen/__init__.py
-file path=usr/lib/python2.6/vendor-packages/xcbgen/__init__.pyc
-file path=usr/lib/python2.6/vendor-packages/xcbgen/__init__.pyo
-file path=usr/lib/python2.6/vendor-packages/xcbgen/matcher.py
-file path=usr/lib/python2.6/vendor-packages/xcbgen/matcher.pyc
-file path=usr/lib/python2.6/vendor-packages/xcbgen/matcher.pyo
-file path=usr/lib/python2.6/vendor-packages/xcbgen/state.py
-file path=usr/lib/python2.6/vendor-packages/xcbgen/state.pyc
-file path=usr/lib/python2.6/vendor-packages/xcbgen/state.pyo
-file path=usr/lib/python2.6/vendor-packages/xcbgen/xtypes.py
-file path=usr/lib/python2.6/vendor-packages/xcbgen/xtypes.pyc
-file path=usr/lib/python2.6/vendor-packages/xcbgen/xtypes.pyo
+file path=usr/lib/python$(PYTHON_PATH_VERSION)/vendor-packages/xcbgen/__init__.py
+file path=usr/lib/python$(PYTHON_PATH_VERSION)/vendor-packages/xcbgen/error.py
+file path=usr/lib/python$(PYTHON_PATH_VERSION)/vendor-packages/xcbgen/expr.py
+file path=usr/lib/python$(PYTHON_PATH_VERSION)/vendor-packages/xcbgen/matcher.py
+file path=usr/lib/python$(PYTHON_PATH_VERSION)/vendor-packages/xcbgen/state.py
+file path=usr/lib/python$(PYTHON_PATH_VERSION)/vendor-packages/xcbgen/xtypes.py
 # 
 depend fmri=pkg:/x11/header/x11-protocols type=require facet.devel=true
 # pkg-config dependency from xcb.pc