6841644 OpenSolaris Python should support gdbm
authorNorm Jacobs <Norm.Jacobs@Oracle.COM>
Wed, 23 Feb 2011 10:37:11 -0800
changeset 99 c15c9099bb44
parent 98 7eea11439375
child 100 385905d9554d
6841644 OpenSolaris Python should support gdbm 6991811 Migrate Mercurial (Hg) to Python 2.6 7009592 PyOpenSSL should be updated from 0.8 to 0.11 7016735 move mercurial from sfw to userland 7018363 Userland LD_OPTIONS should include non-executable data mapfiles as well 7019410 python 2.6 should move to userland 7020772 userland build should provide more macros for common flags 7021204 userland runpath checking should relax slightly.
components/Makefile
components/bzip2/Makefile
components/ggrep/Makefile
components/lua/Makefile
components/mercurial/Makefile
components/mercurial/SUNWmercurial.p5m
components/mercurial/demo-transform
components/mercurial/manpages.patch
components/mercurial/mercurial.copyright
components/mercurial/mercurial.p5m
components/python/pyopenssl/Makefile
components/python/pyopenssl/SUNWpython26-pyopenssl.p5m
components/python/pyopenssl/no-zip_safe.patch
components/python/pyopenssl/pyOpenSSL.txt
components/python/pyopenssl/pyopenssl-26.p5m
components/python/pyopenssl/pyopenssl.copyright
components/python/python26/Makefile
components/python/python26/Python26-00-filemagic.patch
components/python/python26/Python26-01-solaris-lib-dirs.patch
components/python/python26/Python26-02-pycc.patch
components/python/python26/Python26-03-distutils-pycc.patch
components/python/python26/Python26-04-distutils-log.patch
components/python/python26/Python26-05-isalibs.patch
components/python/python26/Python26-06-write_compiled_module-atomic.patch
components/python/python26/Python26-07-dtrace.patch
components/python/python26/Python26-08-ctypes.patch
components/python/python26/Python26-09-ucred.patch
components/python/python26/Python26-10-gethostname.patch
components/python/python26/Python26-11-dlpi.patch
components/python/python26/Python26-12-encoding-alias.patch
components/python/python26/Python26-13-cflags.patch
components/python/python26/Python26-14-ctypes-util-find-library.patch
components/python/python26/Python26-15-getcwd.patch
components/python/python26/Python26-16-privrbac.patch
components/python/python26/Python26-17-netpacket-packet-h.patch
components/python/python26/Python26-18-readline.patch
components/python/python26/Python26-19-ext-stdio.patch
components/python/python26/Python26-20-py_db.patch
components/python/python26/Python26-21-getpass.patch
components/python/python26/Python26-22-bindir.patch
components/python/python26/SUNWPython26.p5m
components/python/python26/python-26.p5m
components/python/python26/python26.license
components/tcsh/Makefile
components/zsh/Makefile
make-rules/ips.mk
make-rules/setup.py.mk
make-rules/shared-macros.mk
tools/python/pkglint/userland.py
transforms/comparison-cleanup
--- a/components/Makefile	Tue Feb 22 10:12:42 2011 -0800
+++ b/components/Makefile	Wed Feb 23 10:37:11 2011 -0800
@@ -50,7 +50,7 @@
 clobber:		TARGET = clobber
 test:			TARGET = test
 prep build install publish test:	TEMPLATE_ZONE=$(ZONE)
-prep build install publish test:	LOG = >$(WS_LOGS)/[email protected]$(TARGET).log 2>&1
+prep build install publish test:	LOG = >$(WS_LOGS)/$(@F).$(TARGET).log 2>&1
 
 # turn off pkglint for the individual component builds.
 publish:		MAKEFLAGS += PKGLINT=/bin/true
--- a/components/bzip2/Makefile	Tue Feb 22 10:12:42 2011 -0800
+++ b/components/bzip2/Makefile	Wed Feb 23 10:37:11 2011 -0800
@@ -41,9 +41,8 @@
 LINTFLAGS=	-nsvx -I. $(BITS32)
 LINTFLAGS64=	-nsvx -I. $(BITS64)
 
-
-CFLAGS += -KPIC -D_FILE_OFFSET_BITS=64
-CFLAGS += $(XREGSFLAG)
+# we need to enable large file support and build PIC for our shared libraries
+CFLAGS += $(CPP_LARGEFILE) $(CC_PIC)
 
 COMPONENT_BUILD_ENV += CC="$(CC)"
 COMPONENT_BUILD_TARGETS += CC="$(CC)"
--- a/components/ggrep/Makefile	Tue Feb 22 10:12:42 2011 -0800
+++ b/components/ggrep/Makefile	Wed Feb 23 10:37:11 2011 -0800
@@ -33,7 +33,8 @@
 include ../../make-rules/configure.mk
 include ../../make-rules/ips.mk
 
-CFLAGS	+=			$(FEATURES_EXTENSIONS)
+# We need to be able to return from void functions
+CFLAGS	+=			$(studio_FEATURES_EXTENSIONS)
 
 CONFIGURE_OPTIONS  +=		CFLAGS="$(CFLAGS)"
 CONFIGURE_OPTIONS  +=		--prefix=/usr
--- a/components/lua/Makefile	Tue Feb 22 10:12:42 2011 -0800
+++ b/components/lua/Makefile	Wed Feb 23 10:37:11 2011 -0800
@@ -33,11 +33,14 @@
 include ../../make-rules/justmake.mk
 include ../../make-rules/ips.mk
 
-CFLAGS +=-KPIC -D_FILE_OFFSET_BITS=64 
+# This is because lua uses $(CC) to build it's shared libraries.
+CC +=		$(CC_BITS)
 
-COMPONENT_BUILD_ENV += CC="$(CC)"
+CFLAGS +=	$(CC_PIC) $(CPP_LARGEFILES)
+
 COMPONENT_BUILD_TARGETS += CC="$(CC)"
 COMPONENT_BUILD_TARGETS += CFLAGS="$(CFLAGS)"
+COMPONENT_INSTALL_TARGETS += INSTALL=$(INSTALL)
 COMPONENT_INSTALL_TARGETS += INSTALL_TOP=$(PROTOUSRDIR)
 
 include ../../make-rules/shared-targets.mk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/mercurial/Makefile	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,59 @@
+#
+# 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.
+#
+include $(WS_TOP)/make-rules/shared-macros.mk
+
+PATH=/usr/bin:/usr/gnu/bin:/usr/sbin
+
+COMPONENT_NAME=		mercurial
+COMPONENT_VERSION=	1.3.1
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	sha1:a9537fab7c7ead501a6414d1900f46e0ae3e48b8
+COMPONENT_ARCHIVE_URL=	http://www.selenic.com/mercurial/release/$(COMPONENT_ARCHIVE)
+
+include $(WS_TOP)/make-rules/prep.mk
+include $(WS_TOP)/make-rules/setup.py.mk
+include $(WS_TOP)/make-rules/ips.mk
+
+PYTHON_ENV += CC="$(CC)"
+PYTHON_ENV += CFLAGS="-m$(BITS) $(CFLAGS)"
+
+PKG_PROTO_DIRS +=	$(COMPONENT_SRC)/contrib
+PKG_PROTO_DIRS +=	$(COMPONENT_SRC)/doc
+PUBLISH_TRANSFORMS +=	demo-transform
+
+# common targets
+build:		$(BUILD_32)
+
+install:	$(INSTALL_32)
+	(cd $(COMPONENT_SRC)/doc ; $(MAKE) INSTALL=$(INSTALL) \
+			PREFIX=/usr DESTDIR=$(PROTO_DIR) install)
+
+test:	$(INSTALL_32)
+	(cd $(COMPONENT_SRC)/tests ; \
+	 PYTHONPATH=$(PROTOUSRLIBDIR)/python$(PYTHON_VERSION)/vendor-packages \
+	 $(PYTHON) ./run-tests.py)
+
+BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
+
+include $(WS_TOP)/make-rules/depend.mk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/mercurial/SUNWmercurial.p5m	Wed Feb 23 10:37:11 2011 -0800
@@ -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) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+set name=pkg.fmri value=pkg:/[email protected],5.11-0.133
+set name=pkg.renamed value=true
+
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+depend fmri=developer/versioning/[email protected] type=require
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/mercurial/demo-transform	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,27 @@
+#
+# 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.
+#
+
+# These are not installed, but can be found in the source contrib
+# directory.
+<transform file path=usr/demo/mercurial/(.+)$ -> \
+	set action.hash %<\1> >
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/mercurial/manpages.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,181 @@
+--- mercurial-1.3.1/doc/hg.1	Thu Jul 23 10:58:26 2009
++++ /usr/share/man/man1/hg.1	Tue Feb 19 05:28:30 2002
[email protected]@ -1,4 +1,9 @@
+ '\" t
++.\"
++.\" Modified for Solaris to to add the Solaris stability classification,
++.\" and to add a note about source availability.
++.\"
++'\" t
+ .\"     Title: hg
+ .\"    Author: [see the "AUTHOR" section]
+ .\" Generator: DocBook XSL Stylesheets v1.75.1 <http://docbook.sf.net/>
[email protected]@ -757,7 +762,7 @@
+ .RS 4
+ .\}
+ .nf
+-$ cp \-al REPO REPOCLONE
++$ /usr/gnu/bin/cp \-al REPO REPOCLONE
+ .fi
+ .if n \{\
+ .RE
[email protected]@ -4331,6 +4336,12 @@
+ .RE
+ .sp
+ Some commands (e\&.g\&. revert) produce backup files ending in \&.orig, if the \&.orig file already exists and is not tracked by Mercurial, it will be overwritten\&.
++.TP
++/usr/demo/mercurial
++This directory contains assorted files which are part of the Mercurial
++distribution, but not core to its functionality&.  They will generally
++need to be copied elsewhere to be of use.
++
+ .SH "BUGS"
+ .sp
+ Probably lots, please post them to the mailing list (See Resources below) when you find them\&.
[email protected]@ -4376,3 +4387,23 @@
+ .RS 4
+ \%http://selenic.com/mailman/listinfo/mercurial
+ .RE
++.\" Begin Sun update
++.SH ATTRIBUTES
++See
++.BR attributes (5)
++for descriptions of the following attributes:
++.sp
++.TS
++box;
++cbp-1 | cbp-1
++l | l .
++ATTRIBUTE TYPE	ATTRIBUTE VALUE
++=
++Availability	developer/versioning/mercurial
++=
++Interface Stability	Volatile
++.TE
++.PP
++.SH NOTES
++Source for Mercurial is available on http://opensolaris.org.
++.\" End Sun update
+--- mercurial-1.3.1/doc/hgrc.5	Thu Jul 23 10:58:38 2009
++++ /usr/share/man/man5/hgrc.5	Tue Feb 19 05:28:30 2002
[email protected]@ -1,4 +1,9 @@
+ '\" t
++.\"
++.\" Modified for Solaris to to add the Solaris stability classification,
++.\" and to add a note about source availability.
++.\"
++'\" t
+ .\"     Title: hgrc
+ .\"    Author: [see the "AUTHOR" section]
+ .\" Generator: DocBook XSL Stylesheets v1.75.1 <http://docbook.sf.net/>
[email protected]@ -27,7 +32,7 @@
+ .sp
+ Mercurial reads configuration data from several files, if they exist\&. The names of these files depend on the system on which Mercurial is installed\&. *\&.rc files from a single directory are read in alphabetical order, later ones overriding earlier ones\&. Where multiple paths are given below, settings from later paths override earlier ones\&.
+ .PP
+-(Unix) <install\-root>/etc/mercurial/hgrc\&.d/*\&.rc, (Unix) <install\-root>/etc/mercurial/hgrc
++<install\-root>/etc/mercurial/hgrc\&.d/*\&.rc, <install\-root>/etc/mercurial/hgrc
+ .RS 4
+ Per\-installation configuration files, searched for in the directory where Mercurial is installed\&.
+ <install\-root>
[email protected]@ -36,12 +41,12 @@
+ /shared/tools/etc/mercurial/hgrc\&. Options in these files apply to all Mercurial commands executed by any user in any directory\&.
+ .RE
+ .PP
+-(Unix) /etc/mercurial/hgrc\&.d/*\&.rc, (Unix) /etc/mercurial/hgrc
++/etc/mercurial/hgrc\&.d/*\&.rc, /etc/mercurial/hgrc
+ .RS 4
+ Per\-system configuration files, for the system on which Mercurial is running\&. Options in these files apply to all Mercurial commands executed by any user in any directory\&. Options in these files override per\-installation options\&.
+ .RE
+ .PP
+-(Windows) <install\-dir>\eMercurial\&.ini, or else, (Windows) HKEY_LOCAL_MACHINE\eSOFTWARE\eMercurial, or else, (Windows) C:\eMercurial\eMercurial\&.ini
++(Windows) <install\-dir>\eMercurial\&.ini, or else
+ .RS 4
+ Per\-installation/system configuration files, for the system on which Mercurial is running\&. Options in these files apply to all Mercurial commands executed by any user in any directory\&. Registry keys contain PATH\-like strings, every part of which must reference a
+ Mercurial\&.ini
[email protected]@ -50,7 +55,7 @@
+ files will be read\&.
+ .RE
+ .PP
+-(Unix) $HOME/\&.hgrc, (Windows) %HOME%\eMercurial\&.ini, (Windows) %HOME%\e\&.hgrc, (Windows) %USERPROFILE%\eMercurial\&.ini, (Windows) %USERPROFILE%\e\&.hgrc
++$HOME/\&.hgrc
+ .RS 4
+ Per\-user configuration file(s), for the user running Mercurial\&. On Windows 9x,
+ %HOME%
[email protected]@ -58,7 +63,7 @@
+ %APPDATA%\&. Options in these files apply to all Mercurial commands executed by this user in any directory\&. Options in these files override per\-installation and per\-system options\&.
+ .RE
+ .PP
+-(Unix, Windows) <repo>/\&.hg/hgrc
++<repo>/\&.hg/hgrc
+ .RS 4
+ Per\-repository configuration options that only apply in a particular repository\&. This file is not version\-controlled, and will not get transferred during a "clone" operation\&. Options in this file override options in all other configuration files\&. On Unix, most of this file will be ignored if it doesn\(cqt belong to a trusted user or to a trusted group\&. See the documentation for the trusted section below for more details\&.
+ .RE
[email protected]@ -874,7 +879,7 @@
+ patch content and patched files end of lines are preserved\&. When set to
+ \fIlf\fR
+ or
+-\fIcrlf\fR, both files end of lines are ignored when patching and the result line endings are normalized to either LF (Unix) or CRLF (Windows)\&. Default: strict\&.
++\fIcrlf\fR, both files end of lines are ignored when patching and the result line endings are normalized to either LF or CRLF (Windows)\&. Default: strict\&.
+ .RE
+ .RE
+ .PP
[email protected]@ -1275,3 +1280,23 @@
+ .RS 4
+ \%mailto:[email protected]
+ .RE
++.\" Begin Sun update
++.SH ATTRIBUTES
++See
++.BR attributes (5)
++for descriptions of the following attributes:
++.sp
++.TS
++box;
++cbp-1 | cbp-1
++l | l .
++ATTRIBUTE TYPE	ATTRIBUTE VALUE
++=
++Availability	developer/versioning/mercurial
++=
++Interface Stability	Volatile
++.TE
++.PP
++.SH NOTES
++Source for Mercurial is available on http://opensolaris.org.
++.\" End Sun update
+--- mercurial-1.3.1/doc/hgignore.5	Thu Jul 23 10:58:30 2009
++++ /usr/share/man/man5/hgignore.5	Tue Feb 19 05:28:30 2002
[email protected]@ -1,4 +1,9 @@
+ '\" t
++.\"
++.\" Modified for Solaris to to add the Solaris stability classification,
++.\" and to add a note about source availability.
++.\"
++'\" t
+ .\"     Title: hgignore
+ .\"    Author: [see the "AUTHOR" section]
+ .\" Generator: DocBook XSL Stylesheets v1.75.1 <http://docbook.sf.net/>
[email protected]@ -119,3 +124,23 @@
+ .RS 4
+ \%mailto:[email protected]
+ .RE
++.\" Begin Sun update
++.SH ATTRIBUTES
++See
++.BR attributes (5)
++for descriptions of the following attributes:
++.sp
++.TS
++box;
++cbp-1 | cbp-1
++l | l .
++ATTRIBUTE TYPE	ATTRIBUTE VALUE
++=
++Availability	developer/versioning/mercurial
++=
++Interface Stability	Volatile
++.TE
++.PP
++.SH NOTES
++Source for Mercurial is available on http://opensolaris.org.
++.\" End Sun update
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/mercurial/mercurial.copyright	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,379 @@
+Oracle elects to use only the GNU Lesser General Public License version
+2.1 (LGPL)/GNU General Public License version 2 (GPL) for any software
+where a choice of LGPL/GPL license versions are made available with the
+language indicating that LGPLv2.1/GPLv2 or any later version may be
+used, or where a choice of which version of the LGPL/GPL is applied is
+unspecified.  Unless specifically stated otherwise, where a choice
+exists between another license and either the GPL or the LGPL, Oracle
+chooses the other license.
+--------------------------------------------------------------------
+Copyright (C) 2004, 2005 Canonical Ltd
+Copyright (C) 2005 Paul Mackerras.  All rights reserved.
+Copyright (C) 2005 Steve Borho
+Copyright (C) 2005 TK Soh.
+Copyright (C) 2005-2008 by Intevation GmbH <[email protected]>
+Copyright (C) 2006 Marco Barisione <[email protected]>
+Copyright (C) 2006-2008 Brendan Cully <[email protected]>
+Copyright (C) 2006 Jelmer Vernooij <[email protected]>
+Copyright (C) 2007 Alexis S. L. Carvalho <[email protected]>
+Copyright (C) 2007 Daniel Holth <[email protected]>
+Copyright (C) 2007 Kevin Christen <[email protected]>
+Copyright (c) 2008 Shun-ichi Goto <[email protected]>
+Copyright 2001 Gareth Rees.  All rights reserved.
+Copyright (C) 2002-2004 Michael D. Stenner, Ryan Tomayko
+Copyright 2004-2007 Ned Batchelder.  All rights reserved.
+Copyright 2005-2008 Matt Mackall <[email protected]>
+Copyright 2005-2007 Benoit Boissinot <[email protected]>
+Copyright 2005-2007 Chris Mason <[email protected]>
+Copyright 2005-2008 Bryan O'Sullivan <[email protected]>
+Copyright 2006 Eric Hopper <[email protected]>
+Copyright 2006 Josef "Jeff" Sipek <[email protected]>
+Copyright 2006 Vadim Gelfer <[email protected]>
+Copyright 2007 Joel Rosdahl <[email protected]>
+Copyright 2007 OHASHI Hideya <[email protected]>
+Copyright 2007, 2008 Christian Ebert <[email protected]>
+Copyright 2008 David Soria Parra <[email protected]>
+Copyright 21 May 2005 - (c) 2005 Jake Edge <[email protected]>
+Copyright (C) 2006 by Manpreet Singh
+Copyright 2005 K. Thananchayan <[email protected]>
+--------------------------------------------------------------------
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/mercurial/mercurial.p5m	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,633 @@
+#
+# 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.
+#
+
+set name=pkg.fmri value=pkg:/developer/versioning/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="The Mercurial Source Control Management System"
+set name=pkg.description value="A fast, lightweight source control management system designed for efficient handling of very large distributed projects."
+set name=info.classification value="org.opensolaris.category.2008:Development/Source Code Management"
+set name=info.upstream_url value="http://www.selenic.com/mercurial/wiki/index.cgi/Mercurial"
+set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license mercurial.copyright license='GPLv2'
+
+dir path=usr
+dir path=usr/bin
+dir path=usr/demo
+dir path=usr/demo/mercurial
+dir path=usr/demo/mercurial/git-viz
+dir path=usr/demo/mercurial/hgsh
+dir path=usr/demo/mercurial/vim
+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/hgext
+dir path=usr/lib/python2.6/vendor-packages/hgext/convert
+dir path=usr/lib/python2.6/vendor-packages/hgext/highlight
+dir path=usr/lib/python2.6/vendor-packages/hgext/zeroconf
+dir path=usr/lib/python2.6/vendor-packages/mercurial
+dir path=usr/lib/python2.6/vendor-packages/mercurial/hgweb
+dir path=usr/lib/python2.6/vendor-packages/mercurial/i18n
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/da
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/da/LC_MESSAGES
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/de
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/de/LC_MESSAGES
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/el
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/el/LC_MESSAGES
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/fr
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/fr/LC_MESSAGES
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/it
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/it/LC_MESSAGES
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/ja
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/ja/LC_MESSAGES
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/pt_BR
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/pt_BR/LC_MESSAGES
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/zh_CN
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/zh_CN/LC_MESSAGES
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/zh_TW
+dir path=usr/lib/python2.6/vendor-packages/mercurial/locale/zh_TW/LC_MESSAGES
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates/atom
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates/coal
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates/raw
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan
+dir path=usr/lib/python2.6/vendor-packages/mercurial/templates/static
+dir path=usr/share
+dir path=usr/share/man
+dir path=usr/share/man/man1
+dir path=usr/share/man/man5
+file path=usr/bin/hg
+file path=usr/lib/python2.6/vendor-packages/hgext/__init__.py
+file path=usr/lib/python2.6/vendor-packages/hgext/__init__.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/acl.py
+file path=usr/lib/python2.6/vendor-packages/hgext/acl.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/bookmarks.py
+file path=usr/lib/python2.6/vendor-packages/hgext/bookmarks.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/bugzilla.py
+file path=usr/lib/python2.6/vendor-packages/hgext/bugzilla.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/children.py
+file path=usr/lib/python2.6/vendor-packages/hgext/children.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/churn.py
+file path=usr/lib/python2.6/vendor-packages/hgext/churn.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/color.py
+file path=usr/lib/python2.6/vendor-packages/hgext/color.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/__init__.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/__init__.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/bzr.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/bzr.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/common.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/common.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/convcmd.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/convcmd.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/cvs.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/cvs.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/cvsps.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/cvsps.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/darcs.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/darcs.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/filemap.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/filemap.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/git.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/git.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/gnuarch.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/gnuarch.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/hg.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/hg.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/monotone.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/monotone.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/p4.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/p4.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/subversion.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/subversion.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/transport.py
+file path=usr/lib/python2.6/vendor-packages/hgext/convert/transport.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/extdiff.py
+file path=usr/lib/python2.6/vendor-packages/hgext/extdiff.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/fetch.py
+file path=usr/lib/python2.6/vendor-packages/hgext/fetch.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/gpg.py
+file path=usr/lib/python2.6/vendor-packages/hgext/gpg.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/graphlog.py
+file path=usr/lib/python2.6/vendor-packages/hgext/graphlog.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/hgcia.py
+file path=usr/lib/python2.6/vendor-packages/hgext/hgcia.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/hgk.py
+file path=usr/lib/python2.6/vendor-packages/hgext/hgk.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/highlight/__init__.py
+file path=usr/lib/python2.6/vendor-packages/hgext/highlight/__init__.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/highlight/highlight.py
+file path=usr/lib/python2.6/vendor-packages/hgext/highlight/highlight.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/interhg.py
+file path=usr/lib/python2.6/vendor-packages/hgext/interhg.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/keyword.py
+file path=usr/lib/python2.6/vendor-packages/hgext/keyword.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/mq.py
+file path=usr/lib/python2.6/vendor-packages/hgext/mq.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/notify.py
+file path=usr/lib/python2.6/vendor-packages/hgext/notify.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/pager.py
+file path=usr/lib/python2.6/vendor-packages/hgext/pager.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/parentrevspec.py
+file path=usr/lib/python2.6/vendor-packages/hgext/parentrevspec.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/patchbomb.py
+file path=usr/lib/python2.6/vendor-packages/hgext/patchbomb.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/purge.py
+file path=usr/lib/python2.6/vendor-packages/hgext/purge.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/rebase.py
+file path=usr/lib/python2.6/vendor-packages/hgext/rebase.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/record.py
+file path=usr/lib/python2.6/vendor-packages/hgext/record.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/share.py
+file path=usr/lib/python2.6/vendor-packages/hgext/share.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/transplant.py
+file path=usr/lib/python2.6/vendor-packages/hgext/transplant.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/win32mbcs.py
+file path=usr/lib/python2.6/vendor-packages/hgext/win32mbcs.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/win32text.py
+file path=usr/lib/python2.6/vendor-packages/hgext/win32text.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/zeroconf/Zeroconf.py
+file path=usr/lib/python2.6/vendor-packages/hgext/zeroconf/Zeroconf.pyc
+file path=usr/lib/python2.6/vendor-packages/hgext/zeroconf/__init__.py
+file path=usr/lib/python2.6/vendor-packages/hgext/zeroconf/__init__.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/__init__.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/__init__.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/__version__.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/__version__.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/ancestor.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/ancestor.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/archival.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/archival.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/base85.so
+file path=usr/lib/python2.6/vendor-packages/mercurial/bdiff.so
+file path=usr/lib/python2.6/vendor-packages/mercurial/bundlerepo.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/bundlerepo.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/byterange.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/byterange.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/changegroup.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/changegroup.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/changelog.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/changelog.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/cmdutil.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/cmdutil.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/commands.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/commands.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/config.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/config.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/context.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/context.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/copies.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/copies.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/demandimport.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/demandimport.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/diffhelpers.so
+file path=usr/lib/python2.6/vendor-packages/mercurial/dirstate.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/dirstate.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/dispatch.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/dispatch.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/encoding.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/encoding.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/error.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/error.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/extensions.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/extensions.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/fancyopts.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/fancyopts.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/filelog.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/filelog.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/filemerge.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/filemerge.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/graphmod.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/graphmod.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hbisect.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hbisect.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/help.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/help.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hg.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hg.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/__init__.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/__init__.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/common.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/common.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/hgweb_mod.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/hgweb_mod.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/hgwebdir_mod.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/hgwebdir_mod.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/protocol.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/protocol.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/request.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/request.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/server.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/server.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/webcommands.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/webcommands.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/webutil.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/webutil.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/wsgicgi.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hgweb/wsgicgi.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/hook.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/hook.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/httprepo.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/httprepo.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/da.po
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/de.po
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/el.po
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/fr.po
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/hggettext
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/it.po
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/ja.po
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/pt_BR.po
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/zh_CN.po
+file path=usr/lib/python2.6/vendor-packages/mercurial/i18n/zh_TW.po
+file path=usr/lib/python2.6/vendor-packages/mercurial/ignore.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/ignore.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/keepalive.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/keepalive.pyc
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/locale/da/LC_MESSAGES/hg.mo
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/locale/de/LC_MESSAGES/hg.mo
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/locale/el/LC_MESSAGES/hg.mo
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/locale/fr/LC_MESSAGES/hg.mo
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/locale/it/LC_MESSAGES/hg.mo
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/locale/ja/LC_MESSAGES/hg.mo
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/locale/pt_BR/LC_MESSAGES/hg.mo
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/locale/zh_CN/LC_MESSAGES/hg.mo
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/locale/zh_TW/LC_MESSAGES/hg.mo
+file path=usr/lib/python2.6/vendor-packages/mercurial/localrepo.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/localrepo.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/lock.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/lock.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/lsprof.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/lsprof.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/lsprofcalltree.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/lsprofcalltree.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/mail.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/mail.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/manifest.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/manifest.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/match.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/match.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/mdiff.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/mdiff.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/merge.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/merge.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/mpatch.so
+file path=usr/lib/python2.6/vendor-packages/mercurial/node.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/node.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/osutil.so
+file path=usr/lib/python2.6/vendor-packages/mercurial/parsers.so
+file path=usr/lib/python2.6/vendor-packages/mercurial/patch.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/patch.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/posix.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/posix.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/repair.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/repair.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/repo.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/repo.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/revlog.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/revlog.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/simplemerge.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/simplemerge.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/sshrepo.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/sshrepo.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/sshserver.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/sshserver.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/statichttprepo.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/statichttprepo.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/store.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/store.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/streamclone.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/streamclone.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/strutil.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/strutil.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/subrepo.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/subrepo.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/templatefilters.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/templatefilters.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/templater.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/templater.pyc
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/atom/changelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/atom/changelogentry.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/atom/error.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/atom/filelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/atom/header.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/atom/map
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/atom/tagentry.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/atom/tags.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/coal/header.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/coal/map
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/branches.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/changelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/changelogentry.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/changeset.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/error.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/fileannotate.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/filediff.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/filelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/filerevision.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/footer.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/graph.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/header.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/index.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/manifest.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/map
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/notfound.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/search.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/shortlog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/summary.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/gitweb/tags.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/map-cmdline.changelog
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/map-cmdline.compact
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/map-cmdline.default
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/branches.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/changelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/changelogentry.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/changeset.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/error.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/fileannotate.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/filediff.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/filelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/filerevision.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/footer.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/graph.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/header.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/index.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/manifest.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/map
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/notfound.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/search.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/shortlog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/summary.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/monoblue/tags.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/branches.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/changeset.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/error.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/fileannotate.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/filediff.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/filelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/filelogentry.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/filerevision.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/footer.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/graph.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/header.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/index.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/manifest.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/map
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/notfound.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/search.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/shortlog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/shortlogentry.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/paper/tags.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/raw/changeset.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/raw/error.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/raw/fileannotate.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/raw/filediff.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/raw/index.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/raw/manifest.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/raw/map
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/raw/notfound.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss/changelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss/changelogentry.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss/error.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss/filelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss/filelogentry.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss/header.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss/map
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss/tagentry.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/rss/tags.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/branches.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/changelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/changelogentry.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/changeset.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/error.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/fileannotate.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/filediff.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/filelog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/filelogentry.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/filerevision.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/footer.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/graph.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/header.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/index.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/manifest.tmpl
+file path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/map
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/notfound.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/search.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/shortlog.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/shortlogentry.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/spartan/tags.tmpl
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/background.png
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/coal-file.png
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/coal-folder.png
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/excanvas.js
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/graph.js
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/hgicon.png
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/hglogo.png
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/style-coal.css
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/style-gitweb.css
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/style-monoblue.css
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/style-paper.css
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/static/style.css
+file \
+    path=usr/lib/python2.6/vendor-packages/mercurial/templates/template-vars.txt
+file path=usr/lib/python2.6/vendor-packages/mercurial/transaction.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/transaction.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/ui.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/ui.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/url.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/url.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/util.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/util.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/verify.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/verify.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/win32.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/win32.pyc
+file path=usr/lib/python2.6/vendor-packages/mercurial/windows.py
+file path=usr/lib/python2.6/vendor-packages/mercurial/windows.pyc
+
+file path=usr/demo/mercurial/bash_completion
+file path=usr/demo/mercurial/convert-repo
+file path=usr/demo/mercurial/dumprevlog
+file path=usr/demo/mercurial/git-viz/git-cat-file
+file path=usr/demo/mercurial/git-viz/git-diff-tree
+file path=usr/demo/mercurial/git-viz/git-rev-list
+file path=usr/demo/mercurial/git-viz/git-rev-tree
+file path=usr/demo/mercurial/git-viz/hg-viz
+file path=usr/demo/mercurial/hg-relink
+file path=usr/demo/mercurial/hg-ssh
+file path=usr/demo/mercurial/hgdiff
+file path=usr/demo/mercurial/hgk
+file path=usr/demo/mercurial/hgsh/hgsh.c
+file path=usr/demo/mercurial/hgsh/Makefile
+file path=usr/demo/mercurial/hgwebdir.fcgi
+file path=usr/demo/mercurial/hgwebdir.wsgi
+file path=usr/demo/mercurial/logo-droplets.svg
+file path=usr/demo/mercurial/mercurial.el
+file path=usr/demo/mercurial/mergetools.hgrc
+file path=usr/demo/mercurial/mq.el
+file path=usr/demo/mercurial/perf.py
+file path=usr/demo/mercurial/python-hook-examples.py
+file path=usr/demo/mercurial/rewrite-log
+file path=usr/demo/mercurial/sample.hgrc
+file path=usr/demo/mercurial/simplemerge
+file path=usr/demo/mercurial/tcsh_completion
+file path=usr/demo/mercurial/tcsh_completion_build.sh
+file path=usr/demo/mercurial/tmplrewrite.py
+file path=usr/demo/mercurial/undumprevlog
+file path=usr/demo/mercurial/vim/hg-menu.vim
+file path=usr/demo/mercurial/vim/HGAnnotate.vim
+file path=usr/demo/mercurial/vim/hgcommand.vim
+file path=usr/demo/mercurial/vim/patchreview.txt
+file path=usr/demo/mercurial/vim/patchreview.vim
+file path=usr/demo/mercurial/zsh_completion
+
+file path=usr/share/man/man1/hg.1
+file path=usr/share/man/man5/hgignore.5
+file path=usr/share/man/man5/hgrc.5
+
+legacy pkg=SUNWmercurial \
+    desc="A fast, lightweight source control management system designed for efficient handling of very large distributed projects." \
+    name="The Mercurial Source Control Management System"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pyopenssl/Makefile	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,48 @@
+#
+# 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.
+#
+include $(WS_TOP)/make-rules/shared-macros.mk
+
+PATH=/usr/bin:/usr/gnu/bin:/usr/sbin
+
+COMPONENT_NAME=		pyOpenSSL
+COMPONENT_VERSION=	0.11
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
+COMPONENT_ARCHIVE_HASH=	sha1:92b550853626d2959c44abb72944b83403427497
+COMPONENT_ARCHIVE_URL=	http://launchpad.net/pyopenssl/main/0.11/+download/$(COMPONENT_ARCHIVE)
+
+include $(WS_TOP)/make-rules/prep.mk
+include $(WS_TOP)/make-rules/setup.py.mk
+include $(WS_TOP)/make-rules/ips.mk
+
+# common targets
+build:		$(BUILD_32_and_64)
+
+install:	$(INSTALL_32_and_64)
+
+test:
+	@echo "no tests available"
+
+BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
+
+include $(WS_TOP)/make-rules/depend.mk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pyopenssl/SUNWpython26-pyopenssl.p5m	Wed Feb 23 10:37:11 2011 -0800
@@ -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) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+set name=pkg.fmri value=pkg:/[email protected],5.11-0.133
+set name=pkg.renamed value=true
+
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+depend fmri=library/python-2/[email protected] type=require
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pyopenssl/no-zip_safe.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,10 @@
+--- pyOpenSSL-0.11/setup.py.orig	Mon Feb 14 23:17:02 2011
++++ pyOpenSSL-0.11/setup.py	Mon Feb 14 23:17:31 2011
[email protected]@ -203,7 +203,6 @@
+                      'OpenSSL.test.test_crypto',
+                      'OpenSSL.test.test_rand',
+                      'OpenSSL.test.test_ssl'],
+-      zip_safe = False,
+       cmdclass = {"build_ext": BuildExtension},
+       description = 'Python wrapper module around the OpenSSL library',
+       author = 'Martin Sjögren, AB Strakt',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pyopenssl/pyOpenSSL.txt	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,1013 @@
+                            Python OpenSSL Manual
+     __________________________________________________________________
+
+                            Python OpenSSL Manual
+
+                               Martin SjŲgren
+
+                              [email protected]
+
+  Abstract:
+
+   This module is a rather thin wrapper around (a subset of) the OpenSSL
+   library. With thin wrapper I mean that a lot of the object methods do
+   nothing more than calling a corresponding function in the OpenSSL
+   library.
+
+Contents
+
+     * 1 Introduction
+     * 2 Building and Installing
+          + 2.1 Building the Module on a Unix System
+          + 2.2 Building the Module on a Windows System
+     * 3 OpenSSL -- Python interface to OpenSSL
+          + 3.1 crypto -- Generic cryptographic module
+          + 3.2 rand -- An interface to the OpenSSL pseudo random number
+            generator
+          + 3.3 SSL -- An interface to the SSL-specific parts of OpenSSL
+     * 4 Internals
+          + 4.1 Exceptions
+          + 4.2 Callbacks
+          + 4.3 Acessing Socket Methods
+
+
+                                 1 Introduction
+
+   The reason pyOpenSSL was created is that the SSL support in the socket
+   module in Python 2.1 (the contemporary version of Python when the
+   pyOpenSSL project was begun) was severely limited. Other OpenSSL
+   wrappers for Python at the time were also limited, though in different
+   ways. Unfortunately, Python's standard library SSL support has remained
+   weak, although other packages (such as M2Crypto^1) have made great
+   advances and now equal or exceed pyOpenSSL's functionality.
+
+   The reason pyOpenSSL continues to be maintained is that there is a
+   significant user community around it, as well as a large amount of
+   software which depends on it. It is a great benefit to many people for
+   pyOpenSSL to continue to exist and advance.
+
+
+                           2 Building and Installing
+
+   These instructions can also be found in the file INSTALL.
+
+   I have tested this on Debian Linux systems (woody and sid), Solaris 2.6
+   and 2.7. Others have successfully compiled it on Windows and NT.
+
+
+2.1 Building the Module on a Unix System
+
+   pyOpenSSL uses distutils, so there really shouldn't be any problems. To
+   build the library:
+
+python setup.py build
+
+   If your OpenSSL header files aren't in /usr/include, you may need to
+   supply the -I flag to let the setup script know where to look. The same
+   goes for the libraries of course, use the -L flag. Note that build
+   won't accept these flags, so you have to run first build_ext and then
+   build! Example:
+
+python setup.py build_ext -I/usr/local/ssl/include -L/usr/local/ssl/lib
+python setup.py build
+
+   Now you should have a directory called OpenSSL that contains e.g.
+   SSL.so and __init__.py somewhere in the build dicrectory, so just:
+
+python setup.py install
+
+   If you, for some arcane reason, don't want the module to appear in the
+   site-packages directory, use the --prefix option.
+
+   You can, of course, do
+
+python setup.py --help
+
+   to find out more about how to use the script.
+
+
+2.2 Building the Module on a Windows System
+
+   Big thanks to Itamar Shtull-Trauring and Oleg Orlov for their help with
+   Windows build instructions. Same as for Unix systems, we have to
+   separate the build_ext and the build.
+
+   Building the library:
+
+setup.py build_ext -I ...\openssl\inc32 -L ...\openssl\out32dll
+setup.py build
+
+   Where ...\openssl is of course the location of your OpenSSL
+   installation.
+
+   Installation is the same as for Unix systems:
+
+setup.py install
+
+   And similarily, you can do
+
+setup.py --help
+
+   to get more information.
+
+
+                    3 OpenSSL -- Python interface to OpenSSL
+
+   This package provides a high-level interface to the functions in the
+   OpenSSL library. The following modules are defined:
+
+   crypto
+          Generic cryptographic module. Note that if anything is
+          incomplete, this module is!
+
+   rand
+          An interface to the OpenSSL pseudo random number generator.
+
+   SSL
+          An interface to the SSL-specific parts of OpenSSL.
+
+
+3.1 crypto -- Generic cryptographic module
+
+   X509Type
+          A Python type object representing the X509 object type.
+
+   X509()
+          Factory function that creates an X509 object.
+
+   X509NameType
+          A Python type object representing the X509Name object type.
+
+   X509Name(x509name)
+          Factory function that creates a copy of x509name.
+
+   X509ReqType
+          A Python type object representing the X509Req object type.
+
+   X509Req()
+          Factory function that creates an X509Req object.
+
+   X509StoreType
+          A Python type object representing the X509Store object type.
+
+   PKeyType
+          A Python type object representing the PKey object type.
+
+   PKey()
+          Factory function that creates a PKey object.
+
+   PKCS7Type
+          A Python type object representing the PKCS7 object type.
+
+   PKCS12Type
+          A Python type object representing the PKCS12 object type.
+
+   X509ExtensionType
+          A Python type object representing the X509Extension object type.
+
+   X509Extension(typename, critical, value)
+          Factory function that creates a X509Extension object.
+
+   NetscapeSPKIType
+          A Python type object representing the NetscapeSPKI object type.
+
+   NetscapeSPKI([enc])
+          Factory function that creates a NetscapeSPKI object. If the enc
+          argument is present, it should be a base64-encoded string
+          representing a NetscapeSPKI object, as returned by the
+          b64_encode method.
+
+   FILETYPE_PEM
+
+   FILETYPE_ASN1
+          File type constants.
+
+   TYPE_RSA
+
+   TYPE_DSA
+          Key type constants.
+
+   exception Error
+          Generic exception used in the crypto module.
+
+   dump_certificate(type, cert)
+          Dump the certificate cert into a buffer string encoded with the
+          type type.
+
+   dump_certificate_request(type, req)
+          Dump the certificate request req into a buffer string encoded
+          with the type type.
+
+   dump_privatekey(type, pkey[, cipher, passphrase])
+          Dump the private key pkey into a buffer string encoded with the
+          type type, optionally (if type is FILETYPE_PEM) encrypting it
+          using cipher and passphrase.
+
+          passphrase must be either a string or a callback for providing
+          the pass phrase.
+
+   load_certificate(type, buffer)
+          Load a certificate (X509) from the string buffer encoded with
+          the type type.
+
+   load_certificate_request(type, buffer)
+          Load a certificate request (X509Req) from the string buffer
+          encoded with the type type.
+
+   load_privatekey(type, buffer[, passphrase])
+          Load a private key (PKey) from the string buffer encoded with
+          the type type (must be one of FILETYPE_PEM and FILETYPE_ASN1).
+
+          passphrase must be either a string or a callback for providing
+          the pass phrase.
+
+   load_pkcs7_data(type, buffer)
+          Load pkcs7 data from the string buffer encoded with the type
+          type.
+
+   load_pkcs12(buffer[, passphrase])
+          Load pkcs12 data from the string buffer. If the pkcs12 structure
+          is encrypted, a passphrase must be included.
+
+
+  3.1.1 X509 objects
+
+   X509 objects have the following methods:
+
+   get_issuer()
+          Return an X509Name object representing the issuer of the
+          certificate.
+
+   get_pubkey()
+          Return a PKey object representing the public key of the
+          certificate.
+
+   get_serial_number()
+          Return the certificate serial number.
+
+   get_subject()
+          Return an X509Name object representing the subject of the
+          certificate.
+
+   get_version()
+          Return the certificate version.
+
+   get_notBefore()
+          Return a string giving the time before which the certificate is
+          not valid. The string is formatted as an ASN1 GENERALIZEDTIME:
+
+                 YYYYMMDDhhmmssZ
+                 YYYYMMDDhhmmss+hhmm
+                 YYYYMMDDhhmmss-hhmm
+
+          If no value exists for this field, None is returned.
+
+   get_notAfter()
+          Return a string giving the time after which the certificate is
+          not valid. The string is formatted as an ASN1 GENERALIZEDTIME:
+
+                 YYYYMMDDhhmmssZ
+                 YYYYMMDDhhmmss+hhmm
+                 YYYYMMDDhhmmss-hhmm
+
+          If no value exists for this field, None is returned.
+
+   set_notBefore(when)
+          Change the time before which the certificate is not valid. when
+          is a string formatted as an ASN1 GENERALIZEDTIME:
+
+                 YYYYMMDDhhmmssZ
+                 YYYYMMDDhhmmss+hhmm
+                 YYYYMMDDhhmmss-hhmm
+
+   set_notAfter(when)
+          Change the time after which the certificate is not valid. when
+          is a string formatted as an ASN1 GENERALIZEDTIME:
+
+                 YYYYMMDDhhmmssZ
+                 YYYYMMDDhhmmss+hhmm
+                 YYYYMMDDhhmmss-hhmm
+
+   gmtime_adj_notBefore(time)
+          Adjust the timestamp (in GMT) when the certificate starts being
+          valid.
+
+   gmtime_adj_notAfter(time)
+          Adjust the timestamp (in GMT) when the certificate stops being
+          valid.
+
+   has_expired()
+          Checks the certificate's time stamp against current time.
+          Returns true if the certificate has expired and false otherwise.
+
+   set_issuer(issuer)
+          Set the issuer of the certificate to issuer.
+
+   set_pubkey(pkey)
+          Set the public key of the certificate to pkey.
+
+   set_serial_number(serialno)
+          Set the serial number of the certificate to serialno.
+
+   set_subject(subject)
+          Set the subject of the certificate to subject.
+
+   set_version(version)
+          Set the certificate version to version.
+
+   sign(pkey, digest)
+          Sign the certificate, using the key pkey and the message digest
+          algorithm identified by the string digest.
+
+   subject_name_hash()
+          Return the hash of the certificate subject.
+
+   digest(digest_name)
+          Return a digest of the certificate, using the digest_name
+          method.
+
+   add_extensions(extensions)
+          Add the extensions in the sequence extensions to the
+          certificate.
+
+
+  3.1.2 X509Name objects
+
+   X509Name objects have the following methods:
+
+   hash()
+          Return an integer giving the first four bytes of the MD5 digest
+          of the DER representation of the name.
+
+   der()
+          Return a string giving the DER representation of the name.
+
+   get_components()
+          Return a list of two-tuples of strings giving the components of
+          the name.
+
+   X509Name objects have the following members:
+
+   countryName
+          The country of the entity. C may be used as an alias for
+          countryName.
+
+   stateOrProvinceName
+          The state or province of the entity. ST may be used as an alias
+          for stateOrProvinceName∑
+
+   localityName
+          The locality of the entity. L may be used as an alias for
+          localityName.
+
+   organizationName
+          The organization name of the entity. O may be used as an alias
+          for organizationName.
+
+   organizationalUnitName
+          The organizational unit of the entity. OU may be used as an
+          alias for organizationalUnitName.
+
+   commonName
+          The common name of the entity. CN may be used as an alias for
+          commonName.
+
+   emailAddress
+          The e-mail address of the entity.
+
+
+  3.1.3 X509Req objects
+
+   X509Req objects have the following methods:
+
+   get_pubkey()
+          Return a PKey object representing the public key of the
+          certificate request.
+
+   get_subject()
+          Return an X509Name object representing the subject of the
+          certificate.
+
+   set_pubkey(pkey)
+          Set the public key of the certificate request to pkey.
+
+   sign(pkey, digest)
+          Sign the certificate request, using the key pkey and the message
+          digest algorithm identified by the string digest.
+
+   verify(pkey)
+          Verify a certificate request using the public key pkey.
+
+
+  3.1.4 X509Store objects
+
+   The X509Store object has currently just one method:
+
+   add_cert(cert)
+          Add the certificate cert to the certificate store.
+
+
+  3.1.5 PKey objects
+
+   The PKey object has the following methods:
+
+   bits()
+          Return the number of bits of the key.
+
+   generate_key(type, bits)
+          Generate a public/private key pair of the type type (one of
+          TYPE_RSA and TYPE_DSA) with the size bits.
+
+   type()
+          Return the type of the key.
+
+
+  3.1.6 PKCS7 objects
+
+   PKCS7 objects have the following methods:
+
+   type_is_signed()
+          FIXME
+
+   type_is_enveloped()
+          FIXME
+
+   type_is_signedAndEnveloped()
+          FIXME
+
+   type_is_data()
+          FIXME
+
+   get_type_name()
+          Get the type name of the PKCS7.
+
+
+  3.1.7 PKCS12 objects
+
+   PKCS12 objects have the following methods:
+
+   get_certificate()
+          Return certificate portion of the PKCS12 structure.
+
+   get_privatekey()
+          Return private key portion of the PKCS12 structure
+
+   get_ca_certificates()
+          Return CA certificates within the PKCS12 object as a tuple.
+          Returns None if no CA certificates are present.
+
+
+  3.1.8 X509Extension objects
+
+   X509Extension objects currently only have one method:
+
+   get_critical()
+          Return the critical field of the extension object.
+
+
+  3.1.9 NetscapeSPKI objects
+
+   NetscapeSPKI objects have the following methods:
+
+   b64_encode()
+          Return a base64-encoded string representation of the object.
+
+   get_pubkey()
+          Return the public key of object.
+
+   set_pubkey(key)
+          Set the public key of the object to key.
+
+   sign(key, digest_name)
+          Sign the NetscapeSPKI object using the given key and
+          digest_name.
+
+   verify(key)
+          Verify the NetscapeSPKI object using the given key.
+
+
+3.2 rand -- An interface to the OpenSSL pseudo random number generator
+
+   This module handles the OpenSSL pseudo random number generator (PRNG)
+   and declares the following:
+
+   add(string, entropy)
+          Mix bytes from string into the PRNG state. The entropy argument
+          is (the lower bound of) an estimate of how much randomness is
+          contained in string, measured in bytes. For more information,
+          see e.g. RFC 1750.
+
+   egd(path[, bytes])
+          Query the Entropy Gathering Daemon^2 on socket path for bytes
+          bytes of random data and and uses add to seed the PRNG. The
+          default value of bytes is 255.
+
+   load_file(path[, bytes])
+          Read bytes bytes (or all of it, if bytes is negative) of data
+          from the file path to seed the PRNG. The default value of bytes
+          is -1.
+
+   screen()
+          Add the current contents of the screen to the PRNG state.
+          Availability: Windows.
+
+   seed(string)
+          This is equivalent to calling add with entropy as the length of
+          the string.
+
+   status()
+          Returns true if the PRNG has been seeded with enough data, and
+          false otherwise.
+
+   write_file(path)
+          Write a number of random bytes (currently 1024) to the file
+          path. This file can then be used with load_file to seed the PRNG
+          again.
+
+
+3.3 SSL -- An interface to the SSL-specific parts of OpenSSL
+
+   This module handles things specific to SSL. There are two objects
+   defined: Context, Connection.
+
+   SSLv2_METHOD
+
+   SSLv3_METHOD
+
+   SSLv23_METHOD
+
+   TLSv1_METHOD
+          These constants represent the different SSL methods to use when
+          creating a context object.
+
+   VERIFY_NONE
+
+   VERIFY_PEER
+
+   VERIFY_FAIL_IF_NO_PEER_CERT
+          These constants represent the verification mode used by the
+          Context object's set_verify method.
+
+   FILETYPE_PEM
+
+   FILETYPE_ASN1
+          File type constants used with the use_certificate_file and
+          use_privatekey_file methods of Context objects.
+
+   OP_SINGLE_DH_USE
+
+   OP_EPHEMERAL_RSA
+
+   OP_NO_SSLv2
+
+   OP_NO_SSLv3
+
+   OP_NO_TLSv1
+          Constants used with set_options of Context objects.
+          OP_SINGLE_DH_USE means to always create a new key when using
+          ephemeral Diffie-Hellman. OP_EPHEMERAL_RSA means to always use
+          ephemeral RSA keys when doing RSA operations. OP_NO_SSLv2,
+          OP_NO_SSLv3 and OP_NO_TLSv1 means to disable those specific
+          protocols. This is interesting if you're using e.g.
+          SSLv23_METHOD to get an SSLv2-compatible handshake, but don't
+          want to use SSLv2.
+
+   ContextType
+          A Python type object representing the Context object type.
+
+   Context(method)
+          Factory function that creates a new Context object given an SSL
+          method. The method should be SSLv2_METHOD, SSLv3_METHOD,
+          SSLv23_METHOD or TLSv1_METHOD.
+
+   ConnectionType
+          A Python type object representing the Connection object type.
+
+   Connection(context, socket)
+          Factory fucnction that creates a new Connection object given an
+          SSL context and a socket ^3 object.
+
+   exception Error
+          This exception is used as a base class for the other SSL-related
+          exceptions, but may also be raised directly.
+
+          Whenever this exception is raised directly, it has a list of
+          error messages from the OpenSSL error queue, where each item is
+          a tuple (lib, function, reason). Here lib, function and reason
+          are all strings, describing where and what the problem is. See
+          err(3) for more information.
+
+   exception ZeroReturnError
+          This exception matches the error return code
+          SSL_ERROR_ZERO_RETURN, and is raised when the SSL Connection has
+          been closed. In SSL 3.0 and TLS 1.0, this only occurs if a
+          closure alert has occurred in the protocol, i.e. the connection
+          has been closed cleanly. Note that this does not necessarily
+          mean that the transport layer (e.g. a socket) has been closed.
+
+          It may seem a little strange that this is an exception, but it
+          does match an SSL_ERROR code, and is very convenient.
+
+   exception WantReadError
+          The operation did not complete; the same I/O method should be
+          called again later, with the same arguments. Any I/O method can
+          lead to this since new handshakes can occur at any time.
+
+   exception WantWriteError
+          See WantReadError.
+
+   exception WantX509LookupError
+          The operation did not complete because an application callback
+          has asked to be called again. The I/O method should be called
+          again later, with the same arguments. Note: This won't occur in
+          this version, as there are no such callbacks in this version.
+
+   exception SysCallError
+          The SysCallError occurs when there's an I/O error and OpenSSL's
+          error queue does not contain any information. This can mean two
+          things: An error in the transport protocol, or an end of file
+          that violates the protocol. The parameter to the exception is
+          always a pair (errnum, errstr).
+
+
+  3.3.1 Context objects
+
+   Context objects have the following methods:
+
+   check_privatekey()
+          Check if the private key (loaded with use_privatekey[_file])
+          matches the certificate (loaded with use_certificate[_file]).
+          Returns None if they match, raises Error otherwise.
+
+   get_app_data()
+          Retrieve application data as set by set_app_data.
+
+   get_cert_store()
+          Retrieve the certificate store (a X509Store object) that the
+          context uses. This can be used to add "trusted" certificates
+          without using the. load_verify_locations() method.
+
+   get_timeout()
+          Retrieve session timeout, as set by set_timeout. The default is
+          300 seconds.
+
+   get_verify_depth()
+          Retrieve the Context object's verify depth, as set by
+          set_verify_depth.
+
+   get_verify_mode()
+          Retrieve the Context object's verify mode, as set by
+          set_verify_mode.
+
+   load_client_ca(pemfile)
+          Read a file with PEM-formatted certificates that will be sent to
+          the client when requesting a client certificate.
+
+   load_verify_locations(pemfile)
+          Specify where CA certificates for verification purposes are
+          located. These are trusted certificates. Note that the
+          certificates have to be in PEM format.
+
+   load_tmp_dh(dhfile)
+          Load parameters for Ephemeral Diffie-Hellman from dhfile.
+
+   set_app_data(data)
+          Associate data with this Context object. data can be retrieved
+          later using the get_app_data method.
+
+   set_cipher_list(ciphers)
+          Set the list of ciphers to be used in this context. See the
+          OpenSSL manual for more information (e.g. ciphers(1))
+
+   set_info_callback(callback)
+          Set the information callback to callback. This function will be
+          called from time to time during SSL handshakes. callback should
+          take three arguments: a Connection object and two integers. The
+          first integer specifies where in the SSL handshake the function
+          was called, and the other the return code from a (possibly
+          failed) internal function call.
+
+   set_options(options)
+          Add SSL options. Options you have set before are not cleared!
+          This method should be used with the OP_* constants.
+
+   set_passwd_cb(callback[, userdata])
+          Set the passphrase callback to callback. This function will be
+          called when a private key with a passphrase is loaded. callback
+          must accept three positional arguments. First, an integer giving
+          the maximum length of the passphrase it may return. If the
+          returned passphrase is longer than this, it will be truncated.
+          Second, a boolean value which will be true if the user should be
+          prompted for the passphrase twice and the callback should verify
+          that the two values supplied are equal. Third, the value given
+          as the userdata parameter to set_passwd_cb. If an error occurs,
+          callback should return a false value (e.g. an empty string).
+
+   set_session_id(name)
+          Set the context name within which a session can be reused for
+          this Context object. This is needed when doing session
+          resumption, because there is no way for a stored session to know
+          which Context object it is associated with. name may be any
+          binary data.
+
+   set_timeout(timeout)
+          Set the timeout for newly created sessions for this Context
+          object to timeout. timeout must be given in (whole) seconds. The
+          default value is 300 seconds. See the OpenSSL manual for more
+          information (e.g. SSL_CTX_set_timeout(3)).
+
+   set_verify(mode, callback)
+          Set the verification flags for this Context object to mode and
+          specify that callback should be used for verification callbacks.
+          mode should be one of VERIFY_NONE and VERIFY_PEER. If
+          VERIFY_PEER is used, mode can be OR:ed with
+          VERIFY_FAIL_IF_NO_PEER_CERT and VERIFY_CLIENT_ONCE to further
+          control the behaviour. callback should take five arguments: A
+          Connection object, an X509 object, and three integer variables,
+          which are in turn potential error number, error depth and return
+          code. callback should return true if verification passes and
+          false otherwise.
+
+   set_verify_depth(depth)
+          Set the maximum depth for the certificate chain verification
+          that shall be allowed for this Context object.
+
+   use_certificate(cert)
+          Use the certificate cert which has to be a X509 object.
+
+   add_extra_chain_cert(cert)
+          Adds the certificate cert, which has to be a X509 object, to the
+          certificate chain presented together with the certificate.
+
+   use_certificate_chain_file(file)
+          Load a certificate chain from file which must be PEM encoded.
+
+   use_privatekey(pkey)
+          Use the private key pkey which has to be a PKey object.
+
+   use_certificate_file(file[, format])
+          Load the first certificate found in file. The certificate must
+          be in the format specified by format, which is either
+          FILETYPE_PEM or FILETYPE_ASN1. The default is FILETYPE_PEM.
+
+   use_privatekey_file(file[, format])
+          Load the first private key found in file. The private key must
+          be in the format specified by format, which is either
+          FILETYPE_PEM or FILETYPE_ASN1. The default is FILETYPE_PEM.
+
+
+  3.3.2 Connection objects
+
+   Connection objects have the following methods:
+
+   accept()
+          Call the accept method of the underlying socket and set up SSL
+          on the returned socket, using the Context object supplied to
+          this Connection object at creation. Returns a pair (conn,
+          address). where conn is the new Connection object created, and
+          address is as returned by the socket's accept.
+
+   bind(address)
+          Call the bind method of the underlying socket.
+
+   close()
+          Call the close method of the underlying socket. Note: If you
+          want correct SSL closure, you need to call the shutdown method
+          first.
+
+   connect(address)
+          Call the connect method of the underlying socket and set up SSL
+          on the socket, using the Context object supplied to this
+          Connection object at creation.
+
+   connect_ex(address)
+          Call the connect_ex method of the underlying socket and set up
+          SSL on the socket, using the Context object supplied to this
+          Connection object at creation. Note that if the connect_ex
+          method of the socket doesn't return 0, SSL won't be initialized.
+
+   do_handshake()
+          Perform an SSL handshake (usually called after renegotiate or
+          one of set_accept_state or set_accept_state). This can raise the
+          same exceptions as send and recv.
+
+   fileno()
+          Retrieve the file descriptor number for the underlying socket.
+
+   listen(backlog)
+          Call the listen method of the underlying socket.
+
+   get_app_data()
+          Retrieve application data as set by set_app_data.
+
+   get_cipher_list()
+          Retrieve the list of ciphers used by the Connection object.
+          WARNING: This API has changed. It used to take an optional
+          parameter and just return a string, but not it returns the
+          entire list in one go.
+
+   get_context()
+          Retrieve the Context object associated with this Connection.
+
+   get_peer_certificate()
+          Retrieve the other side's certificate (if any)
+
+   getpeername()
+          Call the getpeername method of the underlying socket.
+
+   getsockname()
+          Call the getsockname method of the underlying socket.
+
+   getsockopt(level, optname[, buflen])
+          Call the getsockopt method of the underlying socket.
+
+   pending()
+          Retrieve the number of bytes that can be safely read from the
+          SSL buffer (not the underlying transport buffer).
+
+   recv(bufsize)
+          Receive data from the Connection. The return value is a string
+          representing the data received. The maximum amount of data to be
+          received at once, is specified by bufsize.
+
+   renegotiate()
+          Renegotiate the SSL session. Call this if you wish to change
+          cipher suites or anything like that.
+
+   send(string)
+          Send the string data to the Connection.
+
+   sendall(string)
+          Send all of the string data to the Connection. This calls send
+          repeatedly until all data is sent. If an error occurs, it's
+          impossible to tell how much data has been sent.
+
+   set_accept_state()
+          Set the connection to work in server mode. The handshake will be
+          handled automatically by read/write.
+
+   set_app_data(data)
+          Associate data with this Connection object. data can be
+          retrieved later using the get_app_data method.
+
+   set_connect_state()
+          Set the connection to work in client mode. The handshake will be
+          handled automatically by read/write.
+
+   setblocking(flag)
+          Call the setblocking method of the underlying socket.
+
+   setsockopt(level, optname, value)
+          Call the setsockopt method of the underlying socket.
+
+   shutdown()
+          Send the shutdown message to the Connection. Returns true if the
+          shutdown message exchange is completed and false otherwise (in
+          which case you call recv() or send() when the connection becomes
+          readable/writeable.
+
+   get_shutdown()
+          Get the shutdown state of the Connection. Returns a bitvector of
+          either or both of SENT_SHUTDOWN and RECEIVED_SHUTDOWN.
+
+   set_shutdown(state)
+          Set the shutdown state of the Connection. state is a bitvector
+          of either or both of SENT_SHUTDOWN and RECEIVED_SHUTDOWN.
+
+   sock_shutdown(how)
+          Call the shutdown method of the underlying socket.
+
+   state_string()
+          Retrieve a verbose string detailing the state of the Connection.
+
+   want_read()
+          Checks if more data has to be read from the transport layer to
+          complete an operation.
+
+   want_write()
+          Checks if there is data to write to the transport layer to
+          complete an operation.
+
+
+                                  4 Internals
+
+   We ran into three main problems developing this: Exceptions, callbacks
+   and accessing socket methods. This is what this chapter is about.
+
+
+4.1 Exceptions
+
+   We realized early that most of the exceptions would be raised by the
+   I/O functions of OpenSSL, so it felt natural to mimic OpenSSL's error
+   code system, translating them into Python exceptions. This naturally
+   gives us the exceptions SSL.ZeroReturnError, SSL.WantReadError,
+   SSL.WantWriteError, SSL.WantX509LookupError and SSL.SysCallError.
+
+   For more information about this, see section 3.3.
+
+
+4.2 Callbacks
+
+   There are a number of problems with callbacks. First of all, OpenSSL is
+   written as a C library, it's not meant to have Python callbacks, so a
+   way around that is needed. Another problem is thread support. A lot of
+   the OpenSSL I/O functions can block if the socket is in blocking mode,
+   and then you want other Python threads to be able to do other things.
+   The real trouble is if you've released the global CPython interpreter
+   lock to do a potentially blocking operation, and the operation calls a
+   callback. Then we must take the GIL back, since calling Python APIs
+   without holding it is not allowed.
+
+   There are two solutions to the first problem, both of which are
+   necessary. The first solution to use is if the C callback allows
+   ''userdata'' to be passed to it (an arbitrary pointer normally). This
+   is great! We can set our Python function object as the real userdata
+   and emulate userdata for the Python function in another way. The other
+   solution can be used if an object with an ''app_data'' system always is
+   passed to the callback. For example, the SSL object in OpenSSL has
+   app_data functions and in e.g. the verification callbacks, you can
+   retrieve the related SSL object. What we do is to set our wrapper
+   Connection object as app_data for the SSL object, and we can easily
+   find the Python callback.
+
+   The other problem is solved using thread local variables. Whenever the
+   GIL is released before calling into an OpenSSL API, the PyThreadState
+   pointer returned by PyEval_SaveState is stored in a global thread local
+   variable (using Python's own TLS API, PyThread_set_key_value). When it
+   is necessary to re-acquire the GIL, either after the OpenSSL API
+   returns or in a C callback invoked by that OpenSSL API, the value of
+   the thread local variable is retrieved (PyThread_get_key_value) and
+   used to re-acquire the GIL. This allows Python threads to execute while
+   OpenSSL APIs are running and allows use of any particular pyOpenSSL
+   object from any Python thread, since there is no per-thread state
+   associated with any of these objects and since OpenSSL is threadsafe
+   (as long as properly initialized, as pyOpenSSL initializes it).
+
+
+4.3 Acessing Socket Methods
+
+   We quickly saw the benefit of wrapping socket methods in the
+   SSL.Connection class, for an easy transition into using SSL. The
+   problem here is that the socket module lacks a C API, and all the
+   methods are declared static. One approach would be to have OpenSSL as a
+   submodule to the socket module, placing all the code in socketmodule.c,
+   but this is obviously not a good solution, since you might not want to
+   import tonnes of extra stuff you're not going to use when importing the
+   socket module. The other approach is to somehow get a pointer to the
+   method to be called, either the C function, or a callable Python
+   object. This is not really a good solution either, since there's a lot
+   of lookups involved.
+
+   The way it works is that you have to supply a ``socket-like'' transport
+   object to the SSL.Connection. The only requirement of this object is
+   that it has a fileno() method that returns a file descriptor that's
+   valid at the C level (i.e. you can use the system calls read and
+   write). If you want to use the connect() or accept() methods of the
+   SSL.Connection object, the transport object has to supply such methods
+   too. Apart from them, any method lookups in the SSL.Connection object
+   that fail are passed on to the underlying transport object.
+
+   Future changes might be to allow Python-level transport objects, that
+   instead of having fileno() methods, have read() and write() methods, so
+   more advanced features of Python can be used. This would probably
+   entail some sort of OpenSSL ``BIOs'', but converting Python strings
+   back and forth is expensive, so this shouldn't be used unless
+   necessary. Other nice things would be to be able to pass in different
+   transport objects for reading and writing, but then the fileno() method
+   of SSL.Connection becomes virtually useless. Also, should the method
+   resolution be used on the read-transport or the write-transport?
+
+                            About this document ...
+
+   Python OpenSSL Manual
+
+   This document was generated using the LaTeX2HTML translator.
+
+   LaTeX2HTML is Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos,
+   Computer Based Learning Unit, University of Leeds, and Copyright ©
+   1997, 1998, Ross Moore, Mathematics Department, Macquarie University,
+   Sydney.
+
+   The application of LaTeX2HTML to the Python documentation has been
+   heavily tailored by Fred L. Drake, Jr. Original navigation icons were
+   contributed by Christopher Petrilli.
+     __________________________________________________________________
+
+    Footnotes
+
+   ... M2Crypto^1
+          See http://chandlerproject.org/Projects/MeTooCrypto
+
+   ... Daemon^2
+          See http://www.lothar.com/tech/crypto/
+
+   ... socket^3
+          Actually, all that is required is an object that behaves like a
+          socket, you could even use files, even though it'd be tricky to
+          get the handshakes right!
+     __________________________________________________________________
+
+                            Python OpenSSL Manual
+     __________________________________________________________________
+
+   Release 0.8.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pyopenssl/pyopenssl-26.p5m	Wed Feb 23 10:37:11 2011 -0800
@@ -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) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri value=pkg:/library/python-2/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.summary value="Python interface to the OpenSSL library"
+set name=info.classification value="org.opensolaris.category.2008:Development/Python"
+set name=info.upstream_url value="http://pyopenssl.sourceforge.net"
+set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license pyopenssl.copyright license='LGPLv2.1'
+
+dir path=usr
+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/OpenSSL
+dir path=usr/lib/python2.6/vendor-packages/OpenSSL/64
+dir path=usr/lib/python2.6/vendor-packages/OpenSSL/test
+dir path=usr/share
+dir path=usr/share/doc
+dir path=usr/share/doc/pyOpenSSL
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/64/SSL.so
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/64/crypto.so
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/64/rand.so
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/SSL.so
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/__init__.py
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/__init__.pyc
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/crypto.so
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/rand.so
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/__init__.py
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/__init__.pyc
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/test_crypto.py
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/test_crypto.pyc
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/test_rand.py
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/test_rand.pyc
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/test_ssl.py
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/test_ssl.pyc
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/util.py
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/test/util.pyc
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/tsafe.py
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/tsafe.pyc
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/version.py
+file path=usr/lib/python2.6/vendor-packages/OpenSSL/version.pyc
+file path=usr/lib/python2.6/vendor-packages/pyOpenSSL-0.11-py2.6.egg-info
+file pyOpenSSL.txt path=usr/share/doc/pyOpenSSL/pyOpenSSL.txt
+
+legacy pkg=SUNWpython26-openssl \
+	name="pyOpenSSL - Python interface to the OpenSSL library for Python 2.6" \
+	desc="pyOpenSSL - Python interface to the OpenSSL library"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/pyopenssl/pyopenssl.copyright	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,523 @@
+Oracle elects to use only the GNU Lesser General Public License version
+2.1 (LGPL)/GNU General Public License version 2 (GPL) for any software
+where a choice of LGPL/GPL license versions are made available with the
+language indicating that LGPLv2.1/GPLv2 or any later version may be
+used, or where a choice of which version of the LGPL/GPL is applied is
+unspecified.  Unless specifically stated otherwise, where a choice
+exists between another license and either the GPL or the LGPL, Oracle
+chooses the other license.
+
+--------------------------------------------------------------------
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+^L
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+^L
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+^L
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+    <one line to give the library's name and a brief idea of what it
+does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+
+Also add information on how to contact you by electronic and paper
+mail.
+
+You should also get your employer (if you work as a programmer) or
+your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James
+Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Makefile	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,85 @@
+#
+# 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.
+#
+include $(WS_TOP)/make-rules/shared-macros.mk
+
+PATH=/usr/bin:/usr/gnu/bin:/usr/sbin
+
+COMPONENT_NAME=		Python
+COMPONENT_VERSION=	2.6.4
+COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.bz2
+COMPONENT_ARCHIVE_HASH=	sha1:bee572680d1966501247cb2b26e0e51f94d1cd13
+COMPONENT_ARCHIVE_URL=	http://python.org/ftp/python/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
+
+include $(WS_TOP)/make-rules/prep.mk
+include $(WS_TOP)/make-rules/configure.mk
+include $(WS_TOP)/make-rules/ips.mk
+
+#
+# Until the fix for "17858 pkgdepend generate hurls on some python modules" is
+# generally installed on our build systems, we need to skip the dependency
+# generation step.  see https://defect.opensolaris.org/bz/show_bug.cgi?id=17858
+# When this is fixed, we need to remove the static dependencies from the
+# manifest.
+#
+$(MANIFEST_BASE)-python-26.depend:	PKGDEPEND = /bin/true
+
+# we don't want to leak $(CC_BITS) into BASECFLAGS as it causes problems with
+# python-config
+CC +=	$(CC_BITS)
+
+C99MODE=
+CPPFLAGS +=	-IPython
+
+# libffi for _ctypes
+CPPFLAGS +=	$(shell pkg-config --cflags-only-I libffi)
+
+CONFIGURE_OPTIONS  +=		--infodir=$(CONFIGURE_INFODIR)
+CONFIGURE_OPTIONS  +=		--enable-shared
+CONFIGURE_OPTIONS  +=		--disable-static
+CONFIGURE_OPTIONS  +=		--with-system-ffi
+CONFIGURE_OPTIONS  +=		--without-gcc
+CONFIGURE_OPTIONS  +=		ac_cv_opt_olimit_ok=no
+CONFIGURE_OPTIONS  +=		ac_cv_olimit_ok=no
+CONFIGURE_OPTIONS  +=		CPPFLAGS="$(CPPFLAGS)"
+CONFIGURE_OPTIONS  +=		DFLAGS="-$(BITS)"
+COMPONENT_BUILD_ENV  +=		DFLAGS="-$(BITS)"
+
+# 64 bit shared objects need to go in a 64-bit directory
+COMPONENT_INSTALL_ARGS.64 += DESTSHARED=$(CONFIGURE_PREFIX)/lib/python2.6/lib-dynload
+
+# common targets
+build:		$(BUILD_32_and_64)
+
+$(INSTALL_32):	$(INSTALL_64)
+
+install:	$(INSTALL_32_and_64)
+
+test:	$(TEST_32_and_64)
+
+$(BUILD_DIR)/%/.tested:	$(BUILD_DIR)/%/.built
+	(cd $(@D) ; gmake test || exit 0) 
+
+BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
+
+include $(WS_TOP)/make-rules/depend.mk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-00-filemagic.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,2232 @@
+diff -u Python-2.6.4/Lib/platform.py.orig Python-2.6.4/Lib/platform.py
+--- Python-2.6.4/Lib/platform.py.orig	Mon Feb 21 10:46:30 2011
++++ Python-2.6.4/Lib/platform.py	Mon Feb 21 10:46:30 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """ This module tries to retrieve as much platform-identifying data as
+     possible. It makes this information available via function APIs.
+diff -u Python-2.6.4/Lib/profile.py.orig Python-2.6.4/Lib/profile.py
+--- Python-2.6.4/Lib/profile.py.orig	Mon Feb 21 10:46:25 2011
++++ Python-2.6.4/Lib/profile.py	Mon Feb 21 10:46:25 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # Class for profiling python code. rev 1.0  6/2/94
+ #
+diff -u Python-2.6.4/Lib/trace.py.orig Python-2.6.4/Lib/trace.py
+--- Python-2.6.4/Lib/trace.py.orig	Mon Feb 21 10:46:29 2011
++++ Python-2.6.4/Lib/trace.py	Mon Feb 21 10:46:29 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # portions copyright 2001, Autonomous Zones Industries, Inc., all rights...
+ # err...  reserved and offered to the public under the terms of the
+diff -u Python-2.6.4/Lib/cProfile.py.orig Python-2.6.4/Lib/cProfile.py
+--- Python-2.6.4/Lib/cProfile.py.orig	Mon Feb 21 10:46:29 2011
++++ Python-2.6.4/Lib/cProfile.py	Mon Feb 21 10:46:29 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Python interface for the 'lsprof' profiler.
+    Compatible with the 'profile' module.
+diff -u Python-2.6.4/Lib/idlelib/PyShell.py.orig Python-2.6.4/Lib/idlelib/PyShell.py
+--- Python-2.6.4/Lib/idlelib/PyShell.py.orig	Mon Feb 21 10:46:23 2011
++++ Python-2.6.4/Lib/idlelib/PyShell.py	Mon Feb 21 10:46:23 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import os
+ import os.path
+diff -u Python-2.6.4/Lib/UserString.py.orig Python-2.6.4/Lib/UserString.py
+--- Python-2.6.4/Lib/UserString.py.orig	Mon Feb 21 10:46:27 2011
++++ Python-2.6.4/Lib/UserString.py	Mon Feb 21 10:46:27 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ ## vim:ts=4:et:nowrap
+ """A user-defined wrapper around string objects
+ 
+diff -u Python-2.6.4/Lib/lib2to3/tests/pytree_idempotency.py.orig Python-2.6.4/Lib/lib2to3/tests/pytree_idempotency.py
+--- Python-2.6.4/Lib/lib2to3/tests/pytree_idempotency.py.orig	Mon Feb 21 10:46:24 2011
++++ Python-2.6.4/Lib/lib2to3/tests/pytree_idempotency.py	Mon Feb 21 10:46:24 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python2.5
++#!/usr/bin/python2.6
+ # Copyright 2006 Google, Inc. All Rights Reserved.
+ # Licensed to PSF under a Contributor Agreement.
+ 
+diff -u Python-2.6.4/Lib/lib2to3/tests/test_all_fixers.py.orig Python-2.6.4/Lib/lib2to3/tests/test_all_fixers.py
+--- Python-2.6.4/Lib/lib2to3/tests/test_all_fixers.py.orig	Mon Feb 21 10:46:24 2011
++++ Python-2.6.4/Lib/lib2to3/tests/test_all_fixers.py	Mon Feb 21 10:46:24 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python2.5
++#!/usr/bin/python2.6
+ """Tests that run all fixer modules over an input stream.
+ 
+ This has been broken out into its own test module because of its
+diff -u Python-2.6.4/Lib/lib2to3/tests/test_util.py.orig Python-2.6.4/Lib/lib2to3/tests/test_util.py
+--- Python-2.6.4/Lib/lib2to3/tests/test_util.py.orig	Mon Feb 21 10:46:24 2011
++++ Python-2.6.4/Lib/lib2to3/tests/test_util.py	Mon Feb 21 10:46:24 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python2.5
++#!/usr/bin/python2.6
+ """ Test suite for the code in fixes.util """
+ # Author: Collin Winter
+ 
+diff -u Python-2.6.4/Lib/lib2to3/tests/test_parser.py.orig Python-2.6.4/Lib/lib2to3/tests/test_parser.py
+--- Python-2.6.4/Lib/lib2to3/tests/test_parser.py.orig	Mon Feb 21 10:46:24 2011
++++ Python-2.6.4/Lib/lib2to3/tests/test_parser.py	Mon Feb 21 10:46:24 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python2.5
++#!/usr/bin/python2.6
+ """Test suite for 2to3's parser and grammar files.
+ 
+ This is the place to add tests for changes to 2to3's grammar, such as those
+diff -u Python-2.6.4/Lib/lib2to3/tests/test_pytree.py.orig Python-2.6.4/Lib/lib2to3/tests/test_pytree.py
+--- Python-2.6.4/Lib/lib2to3/tests/test_pytree.py.orig	Mon Feb 21 10:46:24 2011
++++ Python-2.6.4/Lib/lib2to3/tests/test_pytree.py	Mon Feb 21 10:46:24 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python2.5
++#!/usr/bin/python2.6
+ # Copyright 2006 Google, Inc. All Rights Reserved.
+ # Licensed to PSF under a Contributor Agreement.
+ 
+diff -u Python-2.6.4/Lib/lib2to3/tests/test_fixers.py.orig Python-2.6.4/Lib/lib2to3/tests/test_fixers.py
+--- Python-2.6.4/Lib/lib2to3/tests/test_fixers.py.orig	Mon Feb 21 10:46:24 2011
++++ Python-2.6.4/Lib/lib2to3/tests/test_fixers.py	Mon Feb 21 10:46:24 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python2.5
++#!/usr/bin/python2.6
+ """ Test suite for the fixer modules """
+ # Author: Collin Winter
+ 
+diff -u Python-2.6.4/Lib/lib2to3/refactor.py.orig Python-2.6.4/Lib/lib2to3/refactor.py
+--- Python-2.6.4/Lib/lib2to3/refactor.py.orig	Mon Feb 21 10:46:24 2011
++++ Python-2.6.4/Lib/lib2to3/refactor.py	Mon Feb 21 10:46:24 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python2.5
++#!/usr/bin/python2.6
+ # Copyright 2006 Google, Inc. All Rights Reserved.
+ # Licensed to PSF under a Contributor Agreement.
+ 
+diff -u Python-2.6.4/Lib/lib2to3/pgen2/token.py.orig Python-2.6.4/Lib/lib2to3/pgen2/token.py
+--- Python-2.6.4/Lib/lib2to3/pgen2/token.py.orig	Mon Feb 21 10:46:25 2011
++++ Python-2.6.4/Lib/lib2to3/pgen2/token.py	Mon Feb 21 10:46:25 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Token constants (from "token.h")."""
+ 
+diff -u Python-2.6.4/Lib/cgi.py.orig Python-2.6.4/Lib/cgi.py
+--- Python-2.6.4/Lib/cgi.py.orig	Mon Feb 21 10:46:24 2011
++++ Python-2.6.4/Lib/cgi.py	Mon Feb 21 10:46:24 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/local/bin/python
++#!/usr/bin/python2.6
+ 
+ # NOTE: the above "/usr/local/bin/python" is NOT a mistake.  It is
+ # intentionally NOT "/usr/bin/env python".  On many systems
+diff -u Python-2.6.4/Lib/base64.py.orig Python-2.6.4/Lib/base64.py
+--- Python-2.6.4/Lib/base64.py.orig	Mon Feb 21 10:46:36 2011
++++ Python-2.6.4/Lib/base64.py	Mon Feb 21 10:46:36 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """RFC 3548: Base16, Base32, Base64 Data Encodings"""
+ 
+diff -u Python-2.6.4/Lib/encodings/rot_13.py.orig Python-2.6.4/Lib/encodings/rot_13.py
+--- Python-2.6.4/Lib/encodings/rot_13.py.orig	Mon Feb 21 10:46:26 2011
++++ Python-2.6.4/Lib/encodings/rot_13.py	Mon Feb 21 10:46:26 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ """ Python Character Mapping Codec for ROT13.
+ 
+     See http://ucsub.colorado.edu/~kominek/rot13/ for details.
+diff -u Python-2.6.4/Lib/tabnanny.py.orig Python-2.6.4/Lib/tabnanny.py
+--- Python-2.6.4/Lib/tabnanny.py.orig	Mon Feb 21 10:46:27 2011
++++ Python-2.6.4/Lib/tabnanny.py	Mon Feb 21 10:46:27 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """The Tab Nanny despises ambiguous indentation.  She knows no mercy.
+ 
+diff -u Python-2.6.4/Lib/timeit.py.orig Python-2.6.4/Lib/timeit.py
+--- Python-2.6.4/Lib/timeit.py.orig	Mon Feb 21 10:46:23 2011
++++ Python-2.6.4/Lib/timeit.py	Mon Feb 21 10:46:23 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Tool for measuring execution time of small code snippets.
+ 
+diff -u Python-2.6.4/Lib/pydoc.py.orig Python-2.6.4/Lib/pydoc.py
+--- Python-2.6.4/Lib/pydoc.py.orig	Mon Feb 21 10:46:28 2011
++++ Python-2.6.4/Lib/pydoc.py	Mon Feb 21 10:46:28 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # -*- coding: latin-1 -*-
+ """Generate Python documentation in HTML or text for interactive use.
+ 
+diff -u Python-2.6.4/Lib/quopri.py.orig Python-2.6.4/Lib/quopri.py
+--- Python-2.6.4/Lib/quopri.py.orig	Mon Feb 21 10:46:29 2011
++++ Python-2.6.4/Lib/quopri.py	Mon Feb 21 10:46:29 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Conversions to/from quoted-printable transport encoding as per RFC 1521."""
+ 
+diff -u Python-2.6.4/Lib/keyword.py.orig Python-2.6.4/Lib/keyword.py
+--- Python-2.6.4/Lib/keyword.py.orig	Mon Feb 21 10:46:24 2011
++++ Python-2.6.4/Lib/keyword.py	Mon Feb 21 10:46:24 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Keywords (from "graminit.c")
+ 
+diff -u Python-2.6.4/Lib/mailbox.py.orig Python-2.6.4/Lib/mailbox.py
+--- Python-2.6.4/Lib/mailbox.py.orig	Mon Feb 21 10:46:27 2011
++++ Python-2.6.4/Lib/mailbox.py	Mon Feb 21 10:46:27 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Read/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes."""
+ 
+diff -u Python-2.6.4/Lib/difflib.py.orig Python-2.6.4/Lib/difflib.py
+--- Python-2.6.4/Lib/difflib.py.orig	Mon Feb 21 10:46:36 2011
++++ Python-2.6.4/Lib/difflib.py	Mon Feb 21 10:46:36 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """
+ Module difflib -- helpers for computing deltas between objects.
+diff -u Python-2.6.4/Lib/webbrowser.py.orig Python-2.6.4/Lib/webbrowser.py
+--- Python-2.6.4/Lib/webbrowser.py.orig	Mon Feb 21 10:46:26 2011
++++ Python-2.6.4/Lib/webbrowser.py	Mon Feb 21 10:46:26 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Interfaces for launching and remotely controlling Web browsers."""
+ # Maintained by Georg Brandl.
+ 
+diff -u Python-2.6.4/Lib/unittest.py.orig Python-2.6.4/Lib/unittest.py
+--- Python-2.6.4/Lib/unittest.py.orig	Mon Feb 21 10:46:28 2011
++++ Python-2.6.4/Lib/unittest.py	Mon Feb 21 10:46:28 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ '''
+ Python unit testing framework, based on Erich Gamma's JUnit and Kent Beck's
+ Smalltalk testing framework.
+diff -u Python-2.6.4/Lib/bsddb/test/test_dbtables.py.orig Python-2.6.4/Lib/bsddb/test/test_dbtables.py
+--- Python-2.6.4/Lib/bsddb/test/test_dbtables.py.orig	Mon Feb 21 10:46:28 2011
++++ Python-2.6.4/Lib/bsddb/test/test_dbtables.py	Mon Feb 21 10:46:28 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ #-----------------------------------------------------------------------
+ # A test suite for the table interface built on bsddb.db
+diff -u Python-2.6.4/Lib/bsddb/dbshelve.py.orig Python-2.6.4/Lib/bsddb/dbshelve.py
+--- Python-2.6.4/Lib/bsddb/dbshelve.py.orig	Mon Feb 21 10:46:28 2011
++++ Python-2.6.4/Lib/bsddb/dbshelve.py	Mon Feb 21 10:46:28 2011
[email protected]@ -1,4 +1,4 @@
+-#!/bin/env python
++#!/usr/bin/python2.6
+ #------------------------------------------------------------------------
+ #           Copyright (c) 1997-2001 by Total Control Software
+ #                         All Rights Reserved
+diff -u Python-2.6.4/Lib/token.py.orig Python-2.6.4/Lib/token.py
+--- Python-2.6.4/Lib/token.py.orig	Mon Feb 21 10:46:28 2011
++++ Python-2.6.4/Lib/token.py	Mon Feb 21 10:46:28 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Token constants (from "token.h")."""
+ 
+diff -u Python-2.6.4/Lib/Cookie.py.orig Python-2.6.4/Lib/Cookie.py
+--- Python-2.6.4/Lib/Cookie.py.orig	Mon Feb 21 10:46:25 2011
++++ Python-2.6.4/Lib/Cookie.py	Mon Feb 21 10:46:25 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ 
+ ####
+diff -u Python-2.6.4/Lib/smtplib.py.orig Python-2.6.4/Lib/smtplib.py
+--- Python-2.6.4/Lib/smtplib.py.orig	Mon Feb 21 10:46:28 2011
++++ Python-2.6.4/Lib/smtplib.py	Mon Feb 21 10:46:28 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ '''SMTP/ESMTP client class.
+ 
+diff -u Python-2.6.4/Lib/smtpd.py.orig Python-2.6.4/Lib/smtpd.py
+--- Python-2.6.4/Lib/smtpd.py.orig	Mon Feb 21 10:46:28 2011
++++ Python-2.6.4/Lib/smtpd.py	Mon Feb 21 10:46:28 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """An RFC 2821 smtp proxy.
+ 
+ Usage: %(program)s [options] [localhost:localport [remotehost:remoteport]]
+diff -u Python-2.6.4/Lib/test/regrtest.py.orig Python-2.6.4/Lib/test/regrtest.py
+--- Python-2.6.4/Lib/test/regrtest.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/regrtest.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Regression test.
+ 
+diff -u Python-2.6.4/Lib/test/test_sets.py.orig Python-2.6.4/Lib/test/test_sets.py
+--- Python-2.6.4/Lib/test/test_sets.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_sets.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import warnings
+ warnings.filterwarnings("ignore", "the sets module is deprecated",
+diff -u Python-2.6.4/Lib/test/test_dl.py.orig Python-2.6.4/Lib/test/test_dl.py
+--- Python-2.6.4/Lib/test/test_dl.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_dl.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test dlmodule.c
+    Roger E. Masse  revised strategy by Barry Warsaw
+ """
+diff -u Python-2.6.4/Lib/test/test_multiprocessing.py.orig Python-2.6.4/Lib/test/test_multiprocessing.py
+--- Python-2.6.4/Lib/test/test_multiprocessing.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_multiprocessing.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ #
+ # Unit tests for the multiprocessing package
+diff -u Python-2.6.4/Lib/test/test_cmd.py.orig Python-2.6.4/Lib/test/test_cmd.py
+--- Python-2.6.4/Lib/test/test_cmd.py.orig	Mon Feb 21 10:46:36 2011
++++ Python-2.6.4/Lib/test/test_cmd.py	Mon Feb 21 10:46:36 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ """
+ Test script for the 'cmd' module
+ Original by Michael Schneider
+diff -u Python-2.6.4/Lib/test/test_userstring.py.orig Python-2.6.4/Lib/test/test_userstring.py
+--- Python-2.6.4/Lib/test/test_userstring.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_userstring.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # UserString is a wrapper around the native builtin string type.
+ # UserString instances should behave similar to builtin string objects.
+ 
+diff -u Python-2.6.4/Lib/test/test_popen.py.orig Python-2.6.4/Lib/test/test_popen.py
+--- Python-2.6.4/Lib/test/test_popen.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_popen.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Basic tests for os.popen()
+ 
+   Particularly useful for platforms that fake popen.
+diff -u Python-2.6.4/Lib/test/test_cd.py.orig Python-2.6.4/Lib/test/test_cd.py
+--- Python-2.6.4/Lib/test/test_cd.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_cd.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Whimpy test script for the cd module
+    Roger E. Masse
+ """
+diff -u Python-2.6.4/Lib/test/test_cl.py.orig Python-2.6.4/Lib/test/test_cl.py
+--- Python-2.6.4/Lib/test/test_cl.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_cl.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Whimpy test script for the cl module
+    Roger E. Masse
+ """
+diff -u Python-2.6.4/Lib/test/test_imgfile.py.orig Python-2.6.4/Lib/test/test_imgfile.py
+--- Python-2.6.4/Lib/test/test_imgfile.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_imgfile.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Simple test script for imgfile.c
+    Roger E. Masse
+diff -u Python-2.6.4/Lib/test/test_random.py.orig Python-2.6.4/Lib/test/test_random.py
+--- Python-2.6.4/Lib/test/test_random.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_random.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import unittest
+ import random
+diff -u Python-2.6.4/Lib/test/curses_tests.py.orig Python-2.6.4/Lib/test/curses_tests.py
+--- Python-2.6.4/Lib/test/curses_tests.py.orig	Mon Feb 21 10:46:32 2011
++++ Python-2.6.4/Lib/test/curses_tests.py	Mon Feb 21 10:46:32 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # $Id: ncurses.py 36559 2004-07-18 05:56:09Z tim_one $
+ #
+diff -u Python-2.6.4/Lib/test/test_codecmaps_cn.py.orig Python-2.6.4/Lib/test/test_codecmaps_cn.py
+--- Python-2.6.4/Lib/test/test_codecmaps_cn.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_codecmaps_cn.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecmaps_cn.py
+ #   Codec mapping tests for PRC encodings
+diff -u Python-2.6.4/Lib/test/test_whichdb.py.orig Python-2.6.4/Lib/test/test_whichdb.py
+--- Python-2.6.4/Lib/test/test_whichdb.py.orig	Mon Feb 21 10:46:36 2011
++++ Python-2.6.4/Lib/test/test_whichdb.py	Mon Feb 21 10:46:36 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test script for the whichdb module
+    based on test_anydbm.py
+ """
+diff -u Python-2.6.4/Lib/test/test_eof.py.orig Python-2.6.4/Lib/test/test_eof.py
+--- Python-2.6.4/Lib/test/test_eof.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_eof.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """test script for a few new invalid token catches"""
+ 
+ import unittest
+diff -u Python-2.6.4/Lib/test/test_imageop.py.orig Python-2.6.4/Lib/test/test_imageop.py
+--- Python-2.6.4/Lib/test/test_imageop.py.orig	Mon Feb 21 10:46:31 2011
++++ Python-2.6.4/Lib/test/test_imageop.py	Mon Feb 21 10:46:31 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Test script for the imageop module.  This has the side
+    effect of partially testing the imgfile module as well.
+diff -u Python-2.6.4/Lib/test/test_codecmaps_tw.py.orig Python-2.6.4/Lib/test/test_codecmaps_tw.py
+--- Python-2.6.4/Lib/test/test_codecmaps_tw.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_codecmaps_tw.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecmaps_tw.py
+ #   Codec mapping tests for ROC encodings
+diff -u Python-2.6.4/Lib/test/test_codecencodings_hk.py.orig Python-2.6.4/Lib/test/test_codecencodings_hk.py
+--- Python-2.6.4/Lib/test/test_codecencodings_hk.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_codecencodings_hk.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecencodings_hk.py
+ #   Codec encoding tests for HongKong encodings.
+diff -u Python-2.6.4/Lib/test/test_codecencodings_jp.py.orig Python-2.6.4/Lib/test/test_codecencodings_jp.py
+--- Python-2.6.4/Lib/test/test_codecencodings_jp.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_codecencodings_jp.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecencodings_jp.py
+ #   Codec encoding tests for Japanese encodings.
+diff -u Python-2.6.4/Lib/test/test_with.py.orig Python-2.6.4/Lib/test/test_with.py
+--- Python-2.6.4/Lib/test/test_with.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_with.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Unit tests for the with statement specified in PEP 343."""
+ 
+diff -u Python-2.6.4/Lib/test/crashers/recursive_call.py.orig Python-2.6.4/Lib/test/crashers/recursive_call.py
+--- Python-2.6.4/Lib/test/crashers/recursive_call.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/crashers/recursive_call.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # No bug report AFAIK, mail on python-dev on 2006-01-10
+ 
+diff -u Python-2.6.4/Lib/test/test_codecmaps_kr.py.orig Python-2.6.4/Lib/test/test_codecmaps_kr.py
+--- Python-2.6.4/Lib/test/test_codecmaps_kr.py.orig	Mon Feb 21 10:46:32 2011
++++ Python-2.6.4/Lib/test/test_codecmaps_kr.py	Mon Feb 21 10:46:32 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecmaps_kr.py
+ #   Codec mapping tests for ROK encodings
+diff -u Python-2.6.4/Lib/test/test_array.py.orig Python-2.6.4/Lib/test/test_array.py
+--- Python-2.6.4/Lib/test/test_array.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_array.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test the arraymodule.
+    Roger E. Masse
+ """
+diff -u Python-2.6.4/Lib/test/test_pep263.py.orig Python-2.6.4/Lib/test/test_pep263.py
+--- Python-2.6.4/Lib/test/test_pep263.py.orig	Mon Feb 21 10:46:32 2011
++++ Python-2.6.4/Lib/test/test_pep263.py	Mon Feb 21 10:46:32 2011
[email protected]@ -1,4 +1,4 @@
+-#! -*- coding: koi8-r -*-
++#!/usr/bin/python2.6
+ # This file is marked as binary in SVN, to prevent MacCVS from recoding it.
+ 
+ import unittest
+diff -u Python-2.6.4/Lib/test/test_anydbm.py.orig Python-2.6.4/Lib/test/test_anydbm.py
+--- Python-2.6.4/Lib/test/test_anydbm.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_anydbm.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test script for the anydbm module
+    based on testdumbdbm.py
+ """
+diff -u Python-2.6.4/Lib/test/test_smtpnet.py.orig Python-2.6.4/Lib/test/test_smtpnet.py
+--- Python-2.6.4/Lib/test/test_smtpnet.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_smtpnet.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import unittest
+ from test import test_support
+diff -u Python-2.6.4/Lib/test/test_al.py.orig Python-2.6.4/Lib/test/test_al.py
+--- Python-2.6.4/Lib/test/test_al.py.orig	Mon Feb 21 10:46:31 2011
++++ Python-2.6.4/Lib/test/test_al.py	Mon Feb 21 10:46:31 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Whimpy test script for the al module
+    Roger E. Masse
+ """
+diff -u Python-2.6.4/Lib/test/test_urllib2net.py.orig Python-2.6.4/Lib/test/test_urllib2net.py
+--- Python-2.6.4/Lib/test/test_urllib2net.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_urllib2net.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import unittest
+ from test import test_support
+diff -u Python-2.6.4/Lib/test/test_marshal.py.orig Python-2.6.4/Lib/test/test_marshal.py
+--- Python-2.6.4/Lib/test/test_marshal.py.orig	Mon Feb 21 10:46:32 2011
++++ Python-2.6.4/Lib/test/test_marshal.py	Mon Feb 21 10:46:32 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # -*- coding: iso-8859-1 -*-
+ 
+ from test import test_support
+diff -u Python-2.6.4/Lib/test/test_urlparse.py.orig Python-2.6.4/Lib/test/test_urlparse.py
+--- Python-2.6.4/Lib/test/test_urlparse.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_urlparse.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ from test import test_support
+ import unittest
+diff -u Python-2.6.4/Lib/test/test_bz2.py.orig Python-2.6.4/Lib/test/test_bz2.py
+--- Python-2.6.4/Lib/test/test_bz2.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_bz2.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ from test import test_support
+ from test.test_support import TESTFN
+ 
+diff -u Python-2.6.4/Lib/test/test_urllibnet.py.orig Python-2.6.4/Lib/test/test_urllibnet.py
+--- Python-2.6.4/Lib/test/test_urllibnet.py.orig	Mon Feb 21 10:46:32 2011
++++ Python-2.6.4/Lib/test/test_urllibnet.py	Mon Feb 21 10:46:32 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import unittest
+ from test import test_support
+diff -u Python-2.6.4/Lib/test/test_logging.py.orig Python-2.6.4/Lib/test/test_logging.py
+--- Python-2.6.4/Lib/test/test_logging.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_logging.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # Copyright 2001-2004 by Vinay Sajip. All Rights Reserved.
+ #
+diff -u Python-2.6.4/Lib/test/test_socket.py.orig Python-2.6.4/Lib/test/test_socket.py
+--- Python-2.6.4/Lib/test/test_socket.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_socket.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import unittest
+ from test import test_support
+diff -u Python-2.6.4/Lib/test/pystone.py.orig Python-2.6.4/Lib/test/pystone.py
+--- Python-2.6.4/Lib/test/pystone.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/pystone.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """
+ "PYSTONE" Benchmark Program
+diff -u Python-2.6.4/Lib/test/test_multibytecodec.py.orig Python-2.6.4/Lib/test/test_multibytecodec.py
+--- Python-2.6.4/Lib/test/test_multibytecodec.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_multibytecodec.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_multibytecodec.py
+ #   Unit test for multibytecodec itself
+diff -u Python-2.6.4/Lib/test/test_popen2.py.orig Python-2.6.4/Lib/test/test_popen2.py
+--- Python-2.6.4/Lib/test/test_popen2.py.orig	Mon Feb 21 10:46:33 2011
++++ Python-2.6.4/Lib/test/test_popen2.py	Mon Feb 21 10:46:33 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test script for popen2.py"""
+ 
+ import warnings
+diff -u Python-2.6.4/Lib/test/test_binhex.py.orig Python-2.6.4/Lib/test/test_binhex.py
+--- Python-2.6.4/Lib/test/test_binhex.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_binhex.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test script for the binhex C module
+ 
+    Uses the mechanism of the python binhex module
+diff -u Python-2.6.4/Lib/test/test_gzip.py.orig Python-2.6.4/Lib/test/test_gzip.py
+--- Python-2.6.4/Lib/test/test_gzip.py.orig	Mon Feb 21 10:46:36 2011
++++ Python-2.6.4/Lib/test/test_gzip.py	Mon Feb 21 10:46:36 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test script for the gzip module.
+ """
+ 
+diff -u Python-2.6.4/Lib/test/re_tests.py.orig Python-2.6.4/Lib/test/re_tests.py
+--- Python-2.6.4/Lib/test/re_tests.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/re_tests.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # -*- mode: python -*-
+ 
+ # Re test suite and benchmark suite v1.5
+diff -u Python-2.6.4/Lib/test/test_urllib2_localnet.py.orig Python-2.6.4/Lib/test/test_urllib2_localnet.py
+--- Python-2.6.4/Lib/test/test_urllib2_localnet.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_urllib2_localnet.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import mimetools
+ import threading
+diff -u Python-2.6.4/Lib/test/test_codecencodings_kr.py.orig Python-2.6.4/Lib/test/test_codecencodings_kr.py
+--- Python-2.6.4/Lib/test/test_codecencodings_kr.py.orig	Mon Feb 21 10:46:32 2011
++++ Python-2.6.4/Lib/test/test_codecencodings_kr.py	Mon Feb 21 10:46:32 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecencodings_kr.py
+ #   Codec encoding tests for ROK encodings.
+diff -u Python-2.6.4/Lib/test/test_multibytecodec_support.py.orig Python-2.6.4/Lib/test/test_multibytecodec_support.py
+--- Python-2.6.4/Lib/test/test_multibytecodec_support.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_multibytecodec_support.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_multibytecodec_support.py
+ #   Common Unittest Routines for CJK codecs
+diff -u Python-2.6.4/Lib/test/test_tcl.py.orig Python-2.6.4/Lib/test/test_tcl.py
+--- Python-2.6.4/Lib/test/test_tcl.py.orig	Mon Feb 21 10:46:36 2011
++++ Python-2.6.4/Lib/test/test_tcl.py	Mon Feb 21 10:46:36 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import unittest
+ import os
+diff -u Python-2.6.4/Lib/test/test_codecencodings_cn.py.orig Python-2.6.4/Lib/test/test_codecencodings_cn.py
+--- Python-2.6.4/Lib/test/test_codecencodings_cn.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_codecencodings_cn.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecencodings_cn.py
+ #   Codec encoding tests for PRC encodings.
+diff -u Python-2.6.4/Lib/test/test_gl.py.orig Python-2.6.4/Lib/test/test_gl.py
+--- Python-2.6.4/Lib/test/test_gl.py.orig	Mon Feb 21 10:46:32 2011
++++ Python-2.6.4/Lib/test/test_gl.py	Mon Feb 21 10:46:32 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Very simple test script for the SGI gl library extension module
+     taken mostly from the documentation.
+     Roger E. Masse
+diff -u Python-2.6.4/Lib/test/test___future__.py.orig Python-2.6.4/Lib/test/test___future__.py
+--- Python-2.6.4/Lib/test/test___future__.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test___future__.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ import unittest
+ from test import test_support
+ import __future__
+diff -u Python-2.6.4/Lib/test/test_bsddb.py.orig Python-2.6.4/Lib/test/test_bsddb.py
+--- Python-2.6.4/Lib/test/test_bsddb.py.orig	Mon Feb 21 10:46:36 2011
++++ Python-2.6.4/Lib/test/test_bsddb.py	Mon Feb 21 10:46:36 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test script for the bsddb C module by Roger E. Masse
+    Adapted to unittest format and expanded scope by Raymond Hettinger
+ """
+diff -u Python-2.6.4/Lib/test/test_errno.py.orig Python-2.6.4/Lib/test/test_errno.py
+--- Python-2.6.4/Lib/test/test_errno.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_errno.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test the errno module
+    Roger E. Masse
+ """
+diff -u Python-2.6.4/Lib/test/test_optparse.py.orig Python-2.6.4/Lib/test/test_optparse.py
+--- Python-2.6.4/Lib/test/test_optparse.py.orig	Mon Feb 21 10:46:32 2011
++++ Python-2.6.4/Lib/test/test_optparse.py	Mon Feb 21 10:46:32 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ 
+ #
+ # Test suite for Optik.  Supplied by Johannes Gijsbers
+diff -u Python-2.6.4/Lib/test/test_codecencodings_tw.py.orig Python-2.6.4/Lib/test/test_codecencodings_tw.py
+--- Python-2.6.4/Lib/test/test_codecencodings_tw.py.orig	Mon Feb 21 10:46:35 2011
++++ Python-2.6.4/Lib/test/test_codecencodings_tw.py	Mon Feb 21 10:46:35 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecencodings_tw.py
+ #   Codec encoding tests for ROC encodings.
+diff -u Python-2.6.4/Lib/test/test_codecmaps_jp.py.orig Python-2.6.4/Lib/test/test_codecmaps_jp.py
+--- Python-2.6.4/Lib/test/test_codecmaps_jp.py.orig	Mon Feb 21 10:46:32 2011
++++ Python-2.6.4/Lib/test/test_codecmaps_jp.py	Mon Feb 21 10:46:32 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecmaps_jp.py
+ #   Codec mapping tests for Japanese encodings
+diff -u Python-2.6.4/Lib/test/test_codecmaps_hk.py.orig Python-2.6.4/Lib/test/test_codecmaps_hk.py
+--- Python-2.6.4/Lib/test/test_codecmaps_hk.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_codecmaps_hk.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # test_codecmaps_hk.py
+ #   Codec mapping tests for HongKong encodings
+diff -u Python-2.6.4/Lib/test/test_dumbdbm.py.orig Python-2.6.4/Lib/test/test_dumbdbm.py
+--- Python-2.6.4/Lib/test/test_dumbdbm.py.orig	Mon Feb 21 10:46:34 2011
++++ Python-2.6.4/Lib/test/test_dumbdbm.py	Mon Feb 21 10:46:34 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Test script for the dumbdbm module
+    Original by Roger E. Masse
+ """
+diff -u Python-2.6.4/Lib/tarfile.py.orig Python-2.6.4/Lib/tarfile.py
+--- Python-2.6.4/Lib/tarfile.py.orig	Mon Feb 21 10:46:38 2011
++++ Python-2.6.4/Lib/tarfile.py	Mon Feb 21 10:46:38 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # -*- coding: iso-8859-1 -*-
+ #-------------------------------------------------------------------
+ # tarfile.py
+diff -u Python-2.6.4/Lib/uu.py.orig Python-2.6.4/Lib/uu.py
+--- Python-2.6.4/Lib/uu.py.orig	Mon Feb 21 10:46:25 2011
++++ Python-2.6.4/Lib/uu.py	Mon Feb 21 10:46:25 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Copyright 1994 by Lance Ellinghouse
+ # Cathedral City, California Republic, United States of America.
+diff -u Python-2.6.4/Lib/symbol.py.orig Python-2.6.4/Lib/symbol.py
+--- Python-2.6.4/Lib/symbol.py.orig	Mon Feb 21 10:46:27 2011
++++ Python-2.6.4/Lib/symbol.py	Mon Feb 21 10:46:27 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Non-terminal symbols of Python grammar (from "graminit.h")."""
+ 
+diff -u Python-2.6.4/Lib/mimify.py.orig Python-2.6.4/Lib/mimify.py
+--- Python-2.6.4/Lib/mimify.py.orig	Mon Feb 21 10:46:28 2011
++++ Python-2.6.4/Lib/mimify.py	Mon Feb 21 10:46:28 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Mimification and unmimification of mail messages.
+ 
+diff -u Python-2.6.4/Lib/pdb.py.orig Python-2.6.4/Lib/pdb.py
+--- Python-2.6.4/Lib/pdb.py.orig	Mon Feb 21 10:46:38 2011
++++ Python-2.6.4/Lib/pdb.py	Mon Feb 21 10:46:38 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """A Python debugger."""
+ 
+diff -u Python-2.6.4/Lib/plat-mac/bundlebuilder.py.orig Python-2.6.4/Lib/plat-mac/bundlebuilder.py
+--- Python-2.6.4/Lib/plat-mac/bundlebuilder.py.orig	Mon Feb 21 10:46:38 2011
++++ Python-2.6.4/Lib/plat-mac/bundlebuilder.py	Mon Feb 21 10:46:38 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """\
+ bundlebuilder.py -- Tools to assemble MacOS X (application) bundles.
+diff -u Python-2.6.4/Lib/plat-mac/appletrunner.py.orig Python-2.6.4/Lib/plat-mac/appletrunner.py
+--- Python-2.6.4/Lib/plat-mac/appletrunner.py.orig	Mon Feb 21 10:46:38 2011
++++ Python-2.6.4/Lib/plat-mac/appletrunner.py	Mon Feb 21 10:46:38 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # This file is meant as an executable script for running applets.
+ # BuildApplet will use it as the main executable in the .app bundle if
+ # we are not running in a framework build.
+diff -u Python-2.6.4/Demo/scripts/primes.py.orig Python-2.6.4/Demo/scripts/primes.py
+--- Python-2.6.4/Demo/scripts/primes.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/primes.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Print prime numbers in a given range
+ 
+diff -u Python-2.6.4/Demo/scripts/mkrcs.py.orig Python-2.6.4/Demo/scripts/mkrcs.py
+--- Python-2.6.4/Demo/scripts/mkrcs.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/mkrcs.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # A rather specialized script to make sure that a symbolic link named
+ # RCS exists pointing to a real RCS directory in a parallel tree
+diff -u Python-2.6.4/Demo/scripts/queens.py.orig Python-2.6.4/Demo/scripts/queens.py
+--- Python-2.6.4/Demo/scripts/queens.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/queens.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """N queens problem.
+ 
+diff -u Python-2.6.4/Demo/scripts/pi.py.orig Python-2.6.4/Demo/scripts/pi.py
+--- Python-2.6.4/Demo/scripts/pi.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/pi.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Print digits of pi forever.
+ #
+diff -u Python-2.6.4/Demo/scripts/mboxconvert.py.orig Python-2.6.4/Demo/scripts/mboxconvert.py
+--- Python-2.6.4/Demo/scripts/mboxconvert.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/mboxconvert.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Convert  MH directories (1 message per file) or MMDF mailboxes (4x^A
+ # delimited) to unix mailbox (From ... delimited) on stdout.
+diff -u Python-2.6.4/Demo/scripts/eqfix.py.orig Python-2.6.4/Demo/scripts/eqfix.py
+--- Python-2.6.4/Demo/scripts/eqfix.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/eqfix.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Fix Python source files to use the new equality test operator, i.e.,
+ #       if x = y: ...
+diff -u Python-2.6.4/Demo/scripts/find-uname.py.orig Python-2.6.4/Demo/scripts/find-uname.py
+--- Python-2.6.4/Demo/scripts/find-uname.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/find-uname.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """
+ For each argument on the command line, look for it in the set of all Unicode
+diff -u Python-2.6.4/Demo/scripts/pp.py.orig Python-2.6.4/Demo/scripts/pp.py
+--- Python-2.6.4/Demo/scripts/pp.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/pp.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Emulate some Perl command line options.
+ # Usage: pp [-a] [-c] [-d] [-e scriptline] [-F fieldsep] [-n] [-p] [file] ...
+diff -u Python-2.6.4/Demo/scripts/unbirthday.py.orig Python-2.6.4/Demo/scripts/unbirthday.py
+--- Python-2.6.4/Demo/scripts/unbirthday.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/unbirthday.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Calculate your unbirthday count (see Alice in Wonderland).
+ # This is defined as the number of days from your birth until today
+diff -u Python-2.6.4/Demo/scripts/update.py.orig Python-2.6.4/Demo/scripts/update.py
+--- Python-2.6.4/Demo/scripts/update.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/update.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Update a bunch of files according to a script.
+ # The input file contains lines of the form <filename>:<lineno>:<text>,
+diff -u Python-2.6.4/Demo/scripts/markov.py.orig Python-2.6.4/Demo/scripts/markov.py
+--- Python-2.6.4/Demo/scripts/markov.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/markov.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ class Markov:
+     def __init__(self, histsize, choice):
+diff -u Python-2.6.4/Demo/scripts/from.py.orig Python-2.6.4/Demo/scripts/from.py
+--- Python-2.6.4/Demo/scripts/from.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/from.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Print From and Subject of messages in $MAIL.
+ # Extension to multiple mailboxes and other bells & whistles are left
+diff -u Python-2.6.4/Demo/scripts/script.py.orig Python-2.6.4/Demo/scripts/script.py
+--- Python-2.6.4/Demo/scripts/script.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/script.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ # script.py -- Make typescript of terminal session.
+ # Usage:
+ #       -a      Append to typescript.
+diff -u Python-2.6.4/Demo/scripts/lpwatch.py.orig Python-2.6.4/Demo/scripts/lpwatch.py
+--- Python-2.6.4/Demo/scripts/lpwatch.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/lpwatch.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Watch line printer queue(s).
+ # Intended for BSD 4.3 lpq.
+diff -u Python-2.6.4/Demo/scripts/fact.py.orig Python-2.6.4/Demo/scripts/fact.py
+--- Python-2.6.4/Demo/scripts/fact.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/fact.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Factorize numbers.
+ # The algorithm is not efficient, but easy to understand.
+diff -u Python-2.6.4/Demo/scripts/beer.py.orig Python-2.6.4/Demo/scripts/beer.py
+--- Python-2.6.4/Demo/scripts/beer.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/beer.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ # By GvR, demystified after a version by Fredrik Lundh.
+ import sys
+ n = 100
+diff -u Python-2.6.4/Demo/scripts/newslist.py.orig Python-2.6.4/Demo/scripts/newslist.py
+--- Python-2.6.4/Demo/scripts/newslist.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/newslist.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ #######################################################################
+ # Newslist  $Revision: 66429 $
+ #
+diff -u Python-2.6.4/Demo/scripts/ftpstats.py.orig Python-2.6.4/Demo/scripts/ftpstats.py
+--- Python-2.6.4/Demo/scripts/ftpstats.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/ftpstats.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Extract statistics from ftp daemon log.
+ 
+diff -u Python-2.6.4/Demo/scripts/makedir.py.orig Python-2.6.4/Demo/scripts/makedir.py
+--- Python-2.6.4/Demo/scripts/makedir.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/scripts/makedir.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Like mkdir, but also make intermediate directories if necessary.
+ # It is not an error if the given directory already exists (as long
+diff -u Python-2.6.4/Demo/turtle/tdemo_clock.py.orig Python-2.6.4/Demo/turtle/tdemo_clock.py
+--- Python-2.6.4/Demo/turtle/tdemo_clock.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_clock.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ # -*- coding: cp1252 -*-
+ """       turtle-example-suite:
+ 
+diff -u Python-2.6.4/Demo/turtle/tdemo_planet_and_moon.py.orig Python-2.6.4/Demo/turtle/tdemo_planet_and_moon.py
+--- Python-2.6.4/Demo/turtle/tdemo_planet_and_moon.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_planet_and_moon.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """       turtle-example-suite:
+ 
+         tdemo_planets_and_moon.py
+diff -u Python-2.6.4/Demo/turtle/tdemo_lindenmayer_indian.py.orig Python-2.6.4/Demo/turtle/tdemo_lindenmayer_indian.py
+--- Python-2.6.4/Demo/turtle/tdemo_lindenmayer_indian.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_lindenmayer_indian.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """       turtle-example-suite:
+ 
+         xtx_lindenmayer_indian.py
+diff -u Python-2.6.4/Demo/turtle/tdemo_penrose.py.orig Python-2.6.4/Demo/turtle/tdemo_penrose.py
+--- Python-2.6.4/Demo/turtle/tdemo_penrose.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_penrose.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """       xturtle-example-suite:
+ 
+           xtx_kites_and_darts.py
+diff -u Python-2.6.4/Demo/turtle/turtleDemo.py.orig Python-2.6.4/Demo/turtle/turtleDemo.py
+--- Python-2.6.4/Demo/turtle/turtleDemo.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/turtleDemo.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ import sys
+ import os
+ 
+diff -u Python-2.6.4/Demo/turtle/tdemo_yinyang.py.orig Python-2.6.4/Demo/turtle/tdemo_yinyang.py
+--- Python-2.6.4/Demo/turtle/tdemo_yinyang.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_yinyang.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """       turtle-example-suite:
+ 
+             tdemo_yinyang.py
+diff -u Python-2.6.4/Demo/turtle/tdemo_tree.py.orig Python-2.6.4/Demo/turtle/tdemo_tree.py
+--- Python-2.6.4/Demo/turtle/tdemo_tree.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_tree.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """      turtle-example-suite:
+ 
+              tdemo_tree.py
+diff -u Python-2.6.4/Demo/turtle/tdemo_fractalcurves.py.orig Python-2.6.4/Demo/turtle/tdemo_fractalcurves.py
+--- Python-2.6.4/Demo/turtle/tdemo_fractalcurves.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_fractalcurves.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """      turtle-example-suite:
+ 
+         tdemo_fractalCurves.py
+diff -u Python-2.6.4/Demo/turtle/turtledemo_two_canvases.py.orig Python-2.6.4/Demo/turtle/turtledemo_two_canvases.py
+--- Python-2.6.4/Demo/turtle/turtledemo_two_canvases.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/turtledemo_two_canvases.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ ## DEMONSTRATES USE OF 2 CANVASES, SO CANNOT BE RUN IN DEMOVIEWER!
+ """turtle example: Using TurtleScreen and RawTurtle
+ for drawing on two distinct canvases.
+diff -u Python-2.6.4/Demo/turtle/tdemo_minimal_hanoi.py.orig Python-2.6.4/Demo/turtle/tdemo_minimal_hanoi.py
+--- Python-2.6.4/Demo/turtle/tdemo_minimal_hanoi.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_minimal_hanoi.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """       turtle-example-suite:
+ 
+          tdemo_minimal_hanoi.py
+diff -u Python-2.6.4/Demo/turtle/tdemo_peace.py.orig Python-2.6.4/Demo/turtle/tdemo_peace.py
+--- Python-2.6.4/Demo/turtle/tdemo_peace.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_peace.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """       turtle-example-suite:
+ 
+               tdemo_peace.py
+diff -u Python-2.6.4/Demo/turtle/tdemo_bytedesign.py.orig Python-2.6.4/Demo/turtle/tdemo_bytedesign.py
+--- Python-2.6.4/Demo/turtle/tdemo_bytedesign.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_bytedesign.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """      turtle-example-suite:
+ 
+         tdemo_bytedesign.py
+diff -u Python-2.6.4/Demo/turtle/tdemo_paint.py.orig Python-2.6.4/Demo/turtle/tdemo_paint.py
+--- Python-2.6.4/Demo/turtle/tdemo_paint.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_paint.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """       turtle-example-suite:
+ 
+             tdemo_paint.py
+diff -u Python-2.6.4/Demo/turtle/tdemo_I_dontlike_tiltdemo.py.orig Python-2.6.4/Demo/turtle/tdemo_I_dontlike_tiltdemo.py
+--- Python-2.6.4/Demo/turtle/tdemo_I_dontlike_tiltdemo.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/turtle/tdemo_I_dontlike_tiltdemo.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """       turtle-example-suite:
+ 
+      tdemo-I_dont_like_tiltdemo.py
+diff -u Python-2.6.4/Demo/cgi/cgi1.py.orig Python-2.6.4/Demo/cgi/cgi1.py
+--- Python-2.6.4/Demo/cgi/cgi1.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/cgi/cgi1.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/local/bin/python
++#!/usr/bin/python2.6
+ 
+ """CGI test 1 - check server setup."""
+ 
+diff -u Python-2.6.4/Demo/cgi/cgi3.py.orig Python-2.6.4/Demo/cgi/cgi3.py
+--- Python-2.6.4/Demo/cgi/cgi3.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/cgi/cgi3.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/local/bin/python
++#!/usr/bin/python2.6
+ 
+ """CGI test 3 (persistent data)."""
+ 
+diff -u Python-2.6.4/Demo/cgi/cgi2.py.orig Python-2.6.4/Demo/cgi/cgi2.py
+--- Python-2.6.4/Demo/cgi/cgi2.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/cgi/cgi2.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/local/bin/python
++#!/usr/bin/python2.6
+ 
+ """CGI test 2 - basic use of cgi module."""
+ 
+diff -u Python-2.6.4/Demo/comparisons/sortingtest.py.orig Python-2.6.4/Demo/comparisons/sortingtest.py
+--- Python-2.6.4/Demo/comparisons/sortingtest.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/comparisons/sortingtest.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # 2)  Sorting Test
+ #
+diff -u Python-2.6.4/Demo/comparisons/regextest.py.orig Python-2.6.4/Demo/comparisons/regextest.py
+--- Python-2.6.4/Demo/comparisons/regextest.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/comparisons/regextest.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # 1)  Regular Expressions Test
+ #
+diff -u Python-2.6.4/Demo/comparisons/systemtest.py.orig Python-2.6.4/Demo/comparisons/systemtest.py
+--- Python-2.6.4/Demo/comparisons/systemtest.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/comparisons/systemtest.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # 3)  System Test
+ #
+diff -u Python-2.6.4/Demo/pysvr/pysvr.py.orig Python-2.6.4/Demo/pysvr/pysvr.py
+--- Python-2.6.4/Demo/pysvr/pysvr.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/pysvr/pysvr.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """A multi-threaded telnet-like server that gives a Python prompt.
+ 
+diff -u Python-2.6.4/Demo/tkinter/guido/sortvisu.py.orig Python-2.6.4/Demo/tkinter/guido/sortvisu.py
+--- Python-2.6.4/Demo/tkinter/guido/sortvisu.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/sortvisu.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Sorting algorithms visualizer using Tkinter.
+ 
+diff -u Python-2.6.4/Demo/tkinter/guido/dialog.py.orig Python-2.6.4/Demo/tkinter/guido/dialog.py
+--- Python-2.6.4/Demo/tkinter/guido/dialog.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/dialog.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # A Python function that generates dialog boxes with a text message,
+ # optional bitmap, and any number of buttons.
+diff -u Python-2.6.4/Demo/tkinter/guido/electrons.py.orig Python-2.6.4/Demo/tkinter/guido/electrons.py
+--- Python-2.6.4/Demo/tkinter/guido/electrons.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/electrons.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Simulate "electrons" migrating across the screen.
+ # An optional bitmap file in can be in the background.
+diff -u Python-2.6.4/Demo/tkinter/guido/newmenubardemo.py.orig Python-2.6.4/Demo/tkinter/guido/newmenubardemo.py
+--- Python-2.6.4/Demo/tkinter/guido/newmenubardemo.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/newmenubardemo.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Play with the new Tk 8.0 toplevel menu option."""
+ 
+diff -u Python-2.6.4/Demo/tkinter/guido/canvasevents.py.orig Python-2.6.4/Demo/tkinter/guido/canvasevents.py
+--- Python-2.6.4/Demo/tkinter/guido/canvasevents.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/canvasevents.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ from Tkinter import *
+ from Canvas import Oval, Group, CanvasText
+diff -u Python-2.6.4/Demo/tkinter/guido/tkman.py.orig Python-2.6.4/Demo/tkinter/guido/tkman.py
+--- Python-2.6.4/Demo/tkinter/guido/tkman.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/tkman.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Tk man page browser -- currently only shows the Tcl/Tk man pages
+ 
+diff -u Python-2.6.4/Demo/tkinter/guido/solitaire.py.orig Python-2.6.4/Demo/tkinter/guido/solitaire.py
+--- Python-2.6.4/Demo/tkinter/guido/solitaire.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/solitaire.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Solitaire game, much like the one that comes with MS Windows.
+ 
+diff -u Python-2.6.4/Demo/tkinter/guido/kill.py.orig Python-2.6.4/Demo/tkinter/guido/kill.py
+--- Python-2.6.4/Demo/tkinter/guido/kill.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/kill.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ # Tkinter interface to Linux `kill' command.
+ 
+ from Tkinter import *
+diff -u Python-2.6.4/Demo/tkinter/guido/MimeViewer.py.orig Python-2.6.4/Demo/tkinter/guido/MimeViewer.py
+--- Python-2.6.4/Demo/tkinter/guido/MimeViewer.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/MimeViewer.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # View a single MIME multipart message.
+ # Display each part as a box.
+diff -u Python-2.6.4/Demo/tkinter/guido/mbox.py.orig Python-2.6.4/Demo/tkinter/guido/mbox.py
+--- Python-2.6.4/Demo/tkinter/guido/mbox.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/mbox.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Scan MH folder, display results in window
+ 
+diff -u Python-2.6.4/Demo/tkinter/guido/rmt.py.orig Python-2.6.4/Demo/tkinter/guido/rmt.py
+--- Python-2.6.4/Demo/tkinter/guido/rmt.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/rmt.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # A Python program implementing rmt, an application for remotely
+ # controlling other Tk applications.
+diff -u Python-2.6.4/Demo/tkinter/guido/svkill.py.orig Python-2.6.4/Demo/tkinter/guido/svkill.py
+--- Python-2.6.4/Demo/tkinter/guido/svkill.py.orig	Mon Feb 21 10:46:39 2011
++++ Python-2.6.4/Demo/tkinter/guido/svkill.py	Mon Feb 21 10:46:39 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Tkinter interface to SYSV `ps' and `kill' commands.
+ 
+diff -u Python-2.6.4/Demo/pdist/rrcs.py.orig Python-2.6.4/Demo/pdist/rrcs.py
+--- Python-2.6.4/Demo/pdist/rrcs.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/pdist/rrcs.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ "Remote RCS -- command line interface"
+ 
+diff -u Python-2.6.4/Demo/pdist/rcvs.py.orig Python-2.6.4/Demo/pdist/rcvs.py
+--- Python-2.6.4/Demo/pdist/rcvs.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/pdist/rcvs.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Remote CVS -- command line interface"""
+ 
+diff -u Python-2.6.4/Demo/pdist/RCSProxy.py.orig Python-2.6.4/Demo/pdist/RCSProxy.py
+--- Python-2.6.4/Demo/pdist/RCSProxy.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/pdist/RCSProxy.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """RCS Proxy.
+ 
+diff -u Python-2.6.4/Demo/pdist/makechangelog.py.orig Python-2.6.4/Demo/pdist/makechangelog.py
+--- Python-2.6.4/Demo/pdist/makechangelog.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/pdist/makechangelog.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Turn a pile of RCS log output into ChangeLog file entries.
+ 
+diff -u Python-2.6.4/Demo/zlib/zlibdemo.py.orig Python-2.6.4/Demo/zlib/zlibdemo.py
+--- Python-2.6.4/Demo/zlib/zlibdemo.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/zlib/zlibdemo.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Takes an optional filename, defaulting to this file itself.
+ # Reads the file and compresses the content using level 1 and level 9
+diff -u Python-2.6.4/Demo/zlib/minigzip.py.orig Python-2.6.4/Demo/zlib/minigzip.py
+--- Python-2.6.4/Demo/zlib/minigzip.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/zlib/minigzip.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # Demo program for zlib; it compresses or decompresses files, but *doesn't*
+ # delete the original.  This doesn't support all of gzip's options.
+ #
+diff -u Python-2.6.4/Demo/curses/life.py.orig Python-2.6.4/Demo/curses/life.py
+--- Python-2.6.4/Demo/curses/life.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/curses/life.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # life.py -- A curses-based version of Conway's Game of Life.
+ # Contributed by AMK
+ #
+diff -u Python-2.6.4/Demo/curses/rain.py.orig Python-2.6.4/Demo/curses/rain.py
+--- Python-2.6.4/Demo/curses/rain.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/curses/rain.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # $Id: rain.py 46625 2006-06-03 23:02:15Z andrew.kuchling $
+ #
+diff -u Python-2.6.4/Demo/curses/repeat.py.orig Python-2.6.4/Demo/curses/repeat.py
+--- Python-2.6.4/Demo/curses/repeat.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/curses/repeat.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """repeat <shell-command>
+ 
+diff -u Python-2.6.4/Demo/curses/ncurses.py.orig Python-2.6.4/Demo/curses/ncurses.py
+--- Python-2.6.4/Demo/curses/ncurses.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/curses/ncurses.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # $Id: ncurses.py 66424 2008-09-13 01:22:08Z andrew.kuchling $
+ #
+diff -u Python-2.6.4/Demo/curses/tclock.py.orig Python-2.6.4/Demo/curses/tclock.py
+--- Python-2.6.4/Demo/curses/tclock.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/curses/tclock.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # $Id: tclock.py 46626 2006-06-03 23:07:21Z andrew.kuchling $
+ #
+diff -u Python-2.6.4/Demo/parser/test_parser.py.orig Python-2.6.4/Demo/parser/test_parser.py
+--- Python-2.6.4/Demo/parser/test_parser.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/parser/test_parser.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ #  (Force the script to use the latest build.)
+ #
+ #  test_parser.py
+diff -u Python-2.6.4/Demo/sockets/gopher.py.orig Python-2.6.4/Demo/sockets/gopher.py
+--- Python-2.6.4/Demo/sockets/gopher.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/sockets/gopher.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # A simple gopher client.
+ #
+diff -u Python-2.6.4/Demo/sockets/throughput.py.orig Python-2.6.4/Demo/sockets/throughput.py
+--- Python-2.6.4/Demo/sockets/throughput.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/sockets/throughput.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Test network throughput.
+ #
+diff -u Python-2.6.4/Demo/sockets/rpython.py.orig Python-2.6.4/Demo/sockets/rpython.py
+--- Python-2.6.4/Demo/sockets/rpython.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/sockets/rpython.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Remote python client.
+ # Execute Python commands remotely and send output back.
+diff -u Python-2.6.4/Demo/sockets/echosvr.py.orig Python-2.6.4/Demo/sockets/echosvr.py
+--- Python-2.6.4/Demo/sockets/echosvr.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/sockets/echosvr.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Python implementation of an 'echo' tcp server: echo all data it receives.
+ #
+diff -u Python-2.6.4/Demo/sockets/telnet.py.orig Python-2.6.4/Demo/sockets/telnet.py
+--- Python-2.6.4/Demo/sockets/telnet.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/sockets/telnet.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Minimal interface to the Internet telnet protocol.
+ #
+diff -u Python-2.6.4/Demo/sockets/finger.py.orig Python-2.6.4/Demo/sockets/finger.py
+--- Python-2.6.4/Demo/sockets/finger.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/sockets/finger.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Python interface to the Internet finger daemon.
+ #
+diff -u Python-2.6.4/Demo/sockets/udpecho.py.orig Python-2.6.4/Demo/sockets/udpecho.py
+--- Python-2.6.4/Demo/sockets/udpecho.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/sockets/udpecho.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Client and server for udp (datagram) echo.
+ #
+diff -u Python-2.6.4/Demo/sockets/rpythond.py.orig Python-2.6.4/Demo/sockets/rpythond.py
+--- Python-2.6.4/Demo/sockets/rpythond.py.orig	Mon Feb 21 10:46:40 2011
++++ Python-2.6.4/Demo/sockets/rpythond.py	Mon Feb 21 10:46:40 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Remote python server.
+ # Execute Python commands remotely and send output back.
+diff -u Python-2.6.4/Tools/ssl/get-remote-certificate.py.orig Python-2.6.4/Tools/ssl/get-remote-certificate.py
+--- Python-2.6.4/Tools/ssl/get-remote-certificate.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/ssl/get-remote-certificate.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # fetch the certificate that the server(s) are providing in PEM form
+ #
+diff -u Python-2.6.4/Tools/compiler/demo.py.orig Python-2.6.4/Tools/compiler/demo.py
+--- Python-2.6.4/Tools/compiler/demo.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/compiler/demo.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Print names of all methods defined in module
+ 
+diff -u Python-2.6.4/Tools/compiler/dumppyc.py.orig Python-2.6.4/Tools/compiler/dumppyc.py
+--- Python-2.6.4/Tools/compiler/dumppyc.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/compiler/dumppyc.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import marshal
+ import dis
+diff -u Python-2.6.4/Tools/webchecker/wsgui.py.orig Python-2.6.4/Tools/webchecker/wsgui.py
+--- Python-2.6.4/Tools/webchecker/wsgui.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/webchecker/wsgui.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Tkinter-based GUI for websucker.
+ 
+diff -u Python-2.6.4/Tools/webchecker/webchecker.py.orig Python-2.6.4/Tools/webchecker/webchecker.py
+--- Python-2.6.4/Tools/webchecker/webchecker.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/webchecker/webchecker.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Original code by Guido van Rossum; extensive changes by Sam Bayer,
+ # including code to check URL fragments.
+diff -u Python-2.6.4/Tools/webchecker/websucker.py.orig Python-2.6.4/Tools/webchecker/websucker.py
+--- Python-2.6.4/Tools/webchecker/websucker.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/webchecker/websucker.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """A variant on webchecker that creates a mirror copy of a remote site."""
+ 
+diff -u Python-2.6.4/Tools/webchecker/wcgui.py.orig Python-2.6.4/Tools/webchecker/wcgui.py
+--- Python-2.6.4/Tools/webchecker/wcgui.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/webchecker/wcgui.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """GUI interface to webchecker.
+ 
+diff -u Python-2.6.4/Tools/faqwiz/faqw.py.orig Python-2.6.4/Tools/faqwiz/faqw.py
+--- Python-2.6.4/Tools/faqwiz/faqw.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/faqwiz/faqw.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/local/bin/python
++#!/usr/bin/python2.6
+ 
+ """FAQ wizard bootstrap."""
+ 
+diff -u Python-2.6.4/Tools/unicode/comparecodecs.py.orig Python-2.6.4/Tools/unicode/comparecodecs.py
+--- Python-2.6.4/Tools/unicode/comparecodecs.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/unicode/comparecodecs.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """ Compare the output of two codecs.
+ 
+diff -u Python-2.6.4/Tools/i18n/msgfmt.py.orig Python-2.6.4/Tools/i18n/msgfmt.py
+--- Python-2.6.4/Tools/i18n/msgfmt.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/i18n/msgfmt.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ # -*- coding: iso-8859-1 -*-
+ # Written by Martin v. L√∂wis <[email protected]>
+ 
+diff -u Python-2.6.4/Tools/i18n/makelocalealias.py.orig Python-2.6.4/Tools/i18n/makelocalealias.py
+--- Python-2.6.4/Tools/i18n/makelocalealias.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/i18n/makelocalealias.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ """
+     Convert the X11 locale.alias file into a mapping dictionary suitable
+     for locale.py.
+diff -u Python-2.6.4/Tools/i18n/pygettext.py.orig Python-2.6.4/Tools/i18n/pygettext.py
+--- Python-2.6.4/Tools/i18n/pygettext.py.orig	Mon Feb 21 10:46:41 2011
++++ Python-2.6.4/Tools/i18n/pygettext.py	Mon Feb 21 10:46:41 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ # -*- coding: iso-8859-1 -*-
+ # Originally written by Barry Warsaw <[email protected]>
+ #
+diff -u Python-2.6.4/Tools/freeze/freeze.py.orig Python-2.6.4/Tools/freeze/freeze.py
+--- Python-2.6.4/Tools/freeze/freeze.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/freeze/freeze.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Freeze a Python script into a binary.
+ 
+diff -u Python-2.6.4/Tools/modulator/Tkextra.py.orig Python-2.6.4/Tools/modulator/Tkextra.py
+--- Python-2.6.4/Tools/modulator/Tkextra.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/modulator/Tkextra.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # A Python function that generates dialog boxes with a text message,
+ # optional bitmap, and any number of buttons.
+diff -u Python-2.6.4/Tools/modulator/modulator.py.orig Python-2.6.4/Tools/modulator/modulator.py
+--- Python-2.6.4/Tools/modulator/modulator.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/modulator/modulator.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ #
+ # Modulator - Generate skeleton modules.
+ #
+diff -u Python-2.6.4/Tools/pybench/pybench.py.orig Python-2.6.4/Tools/pybench/pybench.py
+--- Python-2.6.4/Tools/pybench/pybench.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/pybench/pybench.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/local/bin/python -O
++#!/usr/bin/python2.6
+ 
+ """ A Python Benchmark Suite
+ 
+diff -u Python-2.6.4/Tools/pybench/Setup.py.orig Python-2.6.4/Tools/pybench/Setup.py
+--- Python-2.6.4/Tools/pybench/Setup.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/pybench/Setup.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!python
++#!/usr/bin/python2.6
+ 
+ # Setup file for pybench
+ #
+diff -u Python-2.6.4/Tools/pybench/clockres.py.orig Python-2.6.4/Tools/pybench/clockres.py
+--- Python-2.6.4/Tools/pybench/clockres.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/pybench/clockres.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """ clockres - calculates the resolution in seconds of a given timer.
+ 
+diff -u Python-2.6.4/Tools/pybench/systimes.py.orig Python-2.6.4/Tools/pybench/systimes.py
+--- Python-2.6.4/Tools/pybench/systimes.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/pybench/systimes.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """ systimes() user and system timer implementations for use by
+     pybench.
+diff -u Python-2.6.4/Tools/scripts/fixheader.py.orig Python-2.6.4/Tools/scripts/fixheader.py
+--- Python-2.6.4/Tools/scripts/fixheader.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/fixheader.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Add some standard cpp magic to a header file
+ 
+diff -u Python-2.6.4/Tools/scripts/fixdiv.py.orig Python-2.6.4/Tools/scripts/fixdiv.py
+--- Python-2.6.4/Tools/scripts/fixdiv.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/fixdiv.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """fixdiv - tool to fix division operators.
+ 
+diff -u Python-2.6.4/Tools/scripts/which.py.orig Python-2.6.4/Tools/scripts/which.py
+--- Python-2.6.4/Tools/scripts/which.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/which.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Variant of "which".
+ # On stderr, near and total misses are reported.
+diff -u Python-2.6.4/Tools/scripts/suff.py.orig Python-2.6.4/Tools/scripts/suff.py
+--- Python-2.6.4/Tools/scripts/suff.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/suff.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # suff
+ #
+diff -u Python-2.6.4/Tools/scripts/pysource.py.orig Python-2.6.4/Tools/scripts/pysource.py
+--- Python-2.6.4/Tools/scripts/pysource.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/pysource.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """\
+ List python source files.
+diff -u Python-2.6.4/Tools/scripts/lll.py.orig Python-2.6.4/Tools/scripts/lll.py
+--- Python-2.6.4/Tools/scripts/lll.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/lll.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Find symbolic links and show where they point to.
+ # Arguments are directories to search; default is current directory.
+diff -u Python-2.6.4/Tools/scripts/pickle2db.py.orig Python-2.6.4/Tools/scripts/pickle2db.py
+--- Python-2.6.4/Tools/scripts/pickle2db.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/pickle2db.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """
+ Synopsis: %(prog)s [-h|-b|-g|-r|-a|-d] [ picklefile ] dbfile
+diff -u Python-2.6.4/Tools/scripts/texi2html.py.orig Python-2.6.4/Tools/scripts/texi2html.py
+--- Python-2.6.4/Tools/scripts/texi2html.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/texi2html.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Convert GNU texinfo files into HTML, one file per node.
+ # Based on Texinfo 2.14.
+diff -u Python-2.6.4/Tools/scripts/mkreal.py.orig Python-2.6.4/Tools/scripts/mkreal.py
+--- Python-2.6.4/Tools/scripts/mkreal.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/mkreal.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # mkreal
+ #
+diff -u Python-2.6.4/Tools/scripts/ftpmirror.py.orig Python-2.6.4/Tools/scripts/ftpmirror.py
+--- Python-2.6.4/Tools/scripts/ftpmirror.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/ftpmirror.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Mirror a remote ftp subtree into a local directory tree.
+ 
+diff -u Python-2.6.4/Tools/scripts/lfcr.py.orig Python-2.6.4/Tools/scripts/lfcr.py
+--- Python-2.6.4/Tools/scripts/lfcr.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/lfcr.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ "Replace LF with CRLF in argument files.  Print names of changed files."
+ 
+diff -u Python-2.6.4/Tools/scripts/ptags.py.orig Python-2.6.4/Tools/scripts/ptags.py
+--- Python-2.6.4/Tools/scripts/ptags.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/ptags.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # ptags
+ #
+diff -u Python-2.6.4/Tools/scripts/copytime.py.orig Python-2.6.4/Tools/scripts/copytime.py
+--- Python-2.6.4/Tools/scripts/copytime.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/copytime.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Copy one file's atime and mtime to another
+ 
+diff -u Python-2.6.4/Tools/scripts/finddiv.py.orig Python-2.6.4/Tools/scripts/finddiv.py
+--- Python-2.6.4/Tools/scripts/finddiv.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/finddiv.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """finddiv - a grep-like tool that looks for division operators.
+ 
+diff -u Python-2.6.4/Tools/scripts/combinerefs.py.orig Python-2.6.4/Tools/scripts/combinerefs.py
+--- Python-2.6.4/Tools/scripts/combinerefs.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/combinerefs.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """
+ combinerefs path
+diff -u Python-2.6.4/Tools/scripts/cvsfiles.py.orig Python-2.6.4/Tools/scripts/cvsfiles.py
+--- Python-2.6.4/Tools/scripts/cvsfiles.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/cvsfiles.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Print a list of files that are mentioned in CVS directories.
+ 
+diff -u Python-2.6.4/Tools/scripts/reindent.py.orig Python-2.6.4/Tools/scripts/reindent.py
+--- Python-2.6.4/Tools/scripts/reindent.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/reindent.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Released to the public domain, by Tim Peters, 03 October 2000.
+ 
+diff -u Python-2.6.4/Tools/scripts/checkpyc.py.orig Python-2.6.4/Tools/scripts/checkpyc.py
+--- Python-2.6.4/Tools/scripts/checkpyc.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/checkpyc.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ # Check that all ".pyc" files exist and are up-to-date
+ # Uses module 'os'
+ 
+diff -u Python-2.6.4/Tools/scripts/fixps.py.orig Python-2.6.4/Tools/scripts/fixps.py
+--- Python-2.6.4/Tools/scripts/fixps.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/fixps.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Fix Python script(s) to reference the interpreter via /usr/bin/env python.
+ # Warning: this overwrites the file without making a backup.
+diff -u Python-2.6.4/Tools/scripts/crlf.py.orig Python-2.6.4/Tools/scripts/crlf.py
+--- Python-2.6.4/Tools/scripts/crlf.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/crlf.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ "Replace CRLF with LF in argument files.  Print names of changed files."
+ 
+ import sys, os
+diff -u Python-2.6.4/Tools/scripts/methfix.py.orig Python-2.6.4/Tools/scripts/methfix.py
+--- Python-2.6.4/Tools/scripts/methfix.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/methfix.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Fix Python source files to avoid using
+ #       def method(self, (arg1, ..., argn)):
+diff -u Python-2.6.4/Tools/scripts/classfix.py.orig Python-2.6.4/Tools/scripts/classfix.py
+--- Python-2.6.4/Tools/scripts/classfix.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/classfix.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # This script is obsolete -- it is kept for historical purposes only.
+ #
+diff -u Python-2.6.4/Tools/scripts/xxci.py.orig Python-2.6.4/Tools/scripts/xxci.py
+--- Python-2.6.4/Tools/scripts/xxci.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/xxci.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # xxci
+ #
+diff -u Python-2.6.4/Tools/scripts/findnocoding.py.orig Python-2.6.4/Tools/scripts/findnocoding.py
+--- Python-2.6.4/Tools/scripts/findnocoding.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/findnocoding.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """List all those Python files that require a coding directive
+ 
+diff -u Python-2.6.4/Tools/scripts/fixnotice.py.orig Python-2.6.4/Tools/scripts/fixnotice.py
+--- Python-2.6.4/Tools/scripts/fixnotice.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/fixnotice.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """(Ostensibly) fix copyright notices in files.
+ 
+diff -u Python-2.6.4/Tools/scripts/eptags.py.orig Python-2.6.4/Tools/scripts/eptags.py
+--- Python-2.6.4/Tools/scripts/eptags.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/eptags.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Create a TAGS file for Python programs, usable with GNU Emacs.
+ 
+ usage: eptags pyfiles...
+diff -u Python-2.6.4/Tools/scripts/linktree.py.orig Python-2.6.4/Tools/scripts/linktree.py
+--- Python-2.6.4/Tools/scripts/linktree.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/linktree.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # linktree
+ #
+diff -u Python-2.6.4/Tools/scripts/checkappend.py.orig Python-2.6.4/Tools/scripts/checkappend.py
+--- Python-2.6.4/Tools/scripts/checkappend.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/checkappend.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Released to the public domain, by Tim Peters, 28 February 2000.
+ 
+diff -u Python-2.6.4/Tools/scripts/pindent.py.orig Python-2.6.4/Tools/scripts/pindent.py
+--- Python-2.6.4/Tools/scripts/pindent.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/pindent.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # This file contains a class and a main program that perform three
+ # related (though complimentary) formatting operations on Python
+diff -u Python-2.6.4/Tools/scripts/google.py.orig Python-2.6.4/Tools/scripts/google.py
+--- Python-2.6.4/Tools/scripts/google.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/google.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ import sys, webbrowser
+ 
+diff -u Python-2.6.4/Tools/scripts/nm2def.py.orig Python-2.6.4/Tools/scripts/nm2def.py
+--- Python-2.6.4/Tools/scripts/nm2def.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/nm2def.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """nm2def.py
+ 
+ Helpers to extract symbols from Unix libs and auto-generate
+diff -u Python-2.6.4/Tools/scripts/md5sum.py.orig Python-2.6.4/Tools/scripts/md5sum.py
+--- Python-2.6.4/Tools/scripts/md5sum.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/md5sum.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Python utility to print MD5 checksums of argument files.
+ """
+diff -u Python-2.6.4/Tools/scripts/logmerge.py.orig Python-2.6.4/Tools/scripts/logmerge.py
+--- Python-2.6.4/Tools/scripts/logmerge.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/logmerge.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Consolidate a bunch of CVS or RCS logs read from stdin.
+ 
+diff -u Python-2.6.4/Tools/scripts/svneol.py.orig Python-2.6.4/Tools/scripts/svneol.py
+--- Python-2.6.4/Tools/scripts/svneol.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/svneol.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """
+ SVN helper script.
+diff -u Python-2.6.4/Tools/scripts/rgrep.py.orig Python-2.6.4/Tools/scripts/rgrep.py
+--- Python-2.6.4/Tools/scripts/rgrep.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/rgrep.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Reverse grep.
+ 
+diff -u Python-2.6.4/Tools/scripts/h2py.py.orig Python-2.6.4/Tools/scripts/h2py.py
+--- Python-2.6.4/Tools/scripts/h2py.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/h2py.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Read #define's and translate to Python code.
+ # Handle #include statements.
+diff -u Python-2.6.4/Tools/scripts/pathfix.py.orig Python-2.6.4/Tools/scripts/pathfix.py
+--- Python-2.6.4/Tools/scripts/pathfix.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/pathfix.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Change the #! line occurring in Python scripts.  The new interpreter
+ # pathname must be given with a -i option.
+diff -u Python-2.6.4/Tools/scripts/byext.py.orig Python-2.6.4/Tools/scripts/byext.py
+--- Python-2.6.4/Tools/scripts/byext.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/byext.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Show file statistics by extension."""
+ 
+diff -u Python-2.6.4/Tools/scripts/ifdef.py.orig Python-2.6.4/Tools/scripts/ifdef.py
+--- Python-2.6.4/Tools/scripts/ifdef.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/ifdef.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Selectively preprocess #ifdef / #ifndef statements.
+ # Usage:
+diff -u Python-2.6.4/Tools/scripts/treesync.py.orig Python-2.6.4/Tools/scripts/treesync.py
+--- Python-2.6.4/Tools/scripts/treesync.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/treesync.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Script to synchronize two source trees.
+ 
+diff -u Python-2.6.4/Tools/scripts/ndiff.py.orig Python-2.6.4/Tools/scripts/ndiff.py
+--- Python-2.6.4/Tools/scripts/ndiff.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/ndiff.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Module ndiff version 1.7.0
+ # Released to the public domain 08-Dec-2000,
+diff -u Python-2.6.4/Tools/scripts/findlinksto.py.orig Python-2.6.4/Tools/scripts/findlinksto.py
+--- Python-2.6.4/Tools/scripts/findlinksto.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/findlinksto.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # findlinksto
+ #
+diff -u Python-2.6.4/Tools/scripts/objgraph.py.orig Python-2.6.4/Tools/scripts/objgraph.py
+--- Python-2.6.4/Tools/scripts/objgraph.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/objgraph.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # objgraph
+ #
+diff -u Python-2.6.4/Tools/scripts/untabify.py.orig Python-2.6.4/Tools/scripts/untabify.py
+--- Python-2.6.4/Tools/scripts/untabify.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/untabify.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ "Replace tabs with spaces in argument files.  Print names of changed files."
+ 
+diff -u Python-2.6.4/Tools/scripts/db2pickle.py.orig Python-2.6.4/Tools/scripts/db2pickle.py
+--- Python-2.6.4/Tools/scripts/db2pickle.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/db2pickle.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """
+ Synopsis: %(prog)s [-h|-g|-b|-r|-a] dbfile [ picklefile ]
+diff -u Python-2.6.4/Tools/scripts/parseentities.py.orig Python-2.6.4/Tools/scripts/parseentities.py
+--- Python-2.6.4/Tools/scripts/parseentities.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/parseentities.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/local/bin/python
++#!/usr/bin/python2.6
+ """ Utility for parsing HTML entity definitions available from:
+ 
+       http://www.w3.org/ as e.g.
+diff -u Python-2.6.4/Tools/scripts/dutree.py.orig Python-2.6.4/Tools/scripts/dutree.py
+--- Python-2.6.4/Tools/scripts/dutree.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/dutree.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ # Format du output in a tree shape
+ 
+ import os, sys, errno
+diff -u Python-2.6.4/Tools/scripts/pdeps.py.orig Python-2.6.4/Tools/scripts/pdeps.py
+--- Python-2.6.4/Tools/scripts/pdeps.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/pdeps.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # pdeps
+ #
+diff -u Python-2.6.4/Tools/scripts/cleanfuture.py.orig Python-2.6.4/Tools/scripts/cleanfuture.py
+--- Python-2.6.4/Tools/scripts/cleanfuture.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/cleanfuture.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """cleanfuture [-d][-r][-v] path ...
+ 
+diff -u Python-2.6.4/Tools/scripts/hotshotmain.py.orig Python-2.6.4/Tools/scripts/hotshotmain.py
+--- Python-2.6.4/Tools/scripts/hotshotmain.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/hotshotmain.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # -*- coding: iso-8859-1 -*-
+ 
+ """
+diff -u Python-2.6.4/Tools/scripts/byteyears.py.orig Python-2.6.4/Tools/scripts/byteyears.py
+--- Python-2.6.4/Tools/scripts/byteyears.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/byteyears.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Print the product of age and size of each file, in suitable units.
+ #
+diff -u Python-2.6.4/Tools/scripts/gprof2html.py.orig Python-2.6.4/Tools/scripts/gprof2html.py
+--- Python-2.6.4/Tools/scripts/gprof2html.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/gprof2html.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python2.3
++#!/usr/bin/python2.6
+ 
+ """Transform gprof(1) output into useful HTML."""
+ 
+diff -u Python-2.6.4/Tools/scripts/fixcid.py.orig Python-2.6.4/Tools/scripts/fixcid.py
+--- Python-2.6.4/Tools/scripts/fixcid.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/fixcid.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Perform massive identifier substitution on C source files.
+ # This actually tokenizes the files (to some extent) so it can
+diff -u Python-2.6.4/Tools/scripts/reindent-rst.py.orig Python-2.6.4/Tools/scripts/reindent-rst.py
+--- Python-2.6.4/Tools/scripts/reindent-rst.py.orig	Mon Feb 21 10:46:42 2011
++++ Python-2.6.4/Tools/scripts/reindent-rst.py	Mon Feb 21 10:46:42 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ # Make a reST file compliant to our pre-commit hook.
+ # Currently just remove trailing whitespace.
+diff -u Python-2.6.4/Mac/BuildScript/build-installer.py.orig Python-2.6.4/Mac/BuildScript/build-installer.py
+--- Python-2.6.4/Mac/BuildScript/build-installer.py.orig	Mon Feb 21 10:46:43 2011
++++ Python-2.6.4/Mac/BuildScript/build-installer.py	Mon Feb 21 10:46:43 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """
+ This script is used to build the "official unofficial" universal build on
+ Mac OS X. It requires Mac OS X 10.4, Xcode 2.2 and the 10.4u SDK to do its
+diff -u Python-2.6.4/Mac/scripts/zappycfiles.py.orig Python-2.6.4/Mac/scripts/zappycfiles.py
+--- Python-2.6.4/Mac/scripts/zappycfiles.py.orig	Mon Feb 21 10:46:44 2011
++++ Python-2.6.4/Mac/scripts/zappycfiles.py	Mon Feb 21 10:46:44 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/local/bin/python
++#!/usr/bin/python2.6
+ """Recursively zap all .pyc and .pyo files"""
+ import os
+ import sys
+diff -u Python-2.6.4/Mac/scripts/buildpkg.py.orig Python-2.6.4/Mac/scripts/buildpkg.py
+--- Python-2.6.4/Mac/scripts/buildpkg.py.orig	Mon Feb 21 10:46:44 2011
++++ Python-2.6.4/Mac/scripts/buildpkg.py	Mon Feb 21 10:46:44 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """buildpkg.py -- Build OS X packages for Apple's Installer.app.
+ 
+diff -u Python-2.6.4/Mac/Tools/fixapplepython23.py.orig Python-2.6.4/Mac/Tools/fixapplepython23.py
+--- Python-2.6.4/Mac/Tools/fixapplepython23.py.orig	Mon Feb 21 10:46:44 2011
++++ Python-2.6.4/Mac/Tools/fixapplepython23.py	Mon Feb 21 10:46:44 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python2.6
+ """fixapplepython23 - Fix Apple-installed Python 2.3 (on Mac OS X 10.3)
+ 
+ Python 2.3 (and 2.3.X for X<5) have the problem that building an extension
+diff -u Python-2.6.4/Misc/find_recursionlimit.py.orig Python-2.6.4/Misc/find_recursionlimit.py
+--- Python-2.6.4/Misc/find_recursionlimit.py.orig	Mon Feb 21 10:46:44 2011
++++ Python-2.6.4/Misc/find_recursionlimit.py	Mon Feb 21 10:46:44 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Find the maximum recursion limit that prevents interpreter termination.
+ 
+ This script finds the maximum safe recursion limit on a particular
+diff -u Python-2.6.4/Parser/asdl_c.py.orig Python-2.6.4/Parser/asdl_c.py
+--- Python-2.6.4/Parser/asdl_c.py.orig	Mon Feb 21 10:46:44 2011
++++ Python-2.6.4/Parser/asdl_c.py	Mon Feb 21 10:46:44 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#!/usr/bin/python2.6
+ """Generate C code from an ASDL description."""
+ 
+ # TO DO
+diff -u Python-2.6.4/Doc/includes/email-alternative.py.orig Python-2.6.4/Doc/includes/email-alternative.py
+--- Python-2.6.4/Doc/includes/email-alternative.py.orig	Mon Feb 21 10:46:44 2011
++++ Python-2.6.4/Doc/includes/email-alternative.py	Mon Feb 21 10:46:44 2011
[email protected]@ -1,4 +1,4 @@
+-#! /usr/bin/python
++#!/usr/bin/python2.6
+ 
+ import smtplib
+ 
+diff -u Python-2.6.4/Doc/includes/email-unpack.py.orig Python-2.6.4/Doc/includes/email-unpack.py
+--- Python-2.6.4/Doc/includes/email-unpack.py.orig	Mon Feb 21 10:46:44 2011
++++ Python-2.6.4/Doc/includes/email-unpack.py	Mon Feb 21 10:46:44 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Unpack a MIME message into a directory of files."""
+ 
+diff -u Python-2.6.4/Doc/includes/email-dir.py.orig Python-2.6.4/Doc/includes/email-dir.py
+--- Python-2.6.4/Doc/includes/email-dir.py.orig	Mon Feb 21 10:46:44 2011
++++ Python-2.6.4/Doc/includes/email-dir.py	Mon Feb 21 10:46:44 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ 
+ """Send the contents of a directory as a MIME message."""
+ 
+diff -u Python-2.6.4/Doc/tools/rstlint.py.orig Python-2.6.4/Doc/tools/rstlint.py
+--- Python-2.6.4/Doc/tools/rstlint.py.orig	Mon Feb 21 10:46:44 2011
++++ Python-2.6.4/Doc/tools/rstlint.py	Mon Feb 21 10:46:44 2011
[email protected]@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python2.6
+ # -*- coding: utf-8 -*-
+ 
+ # Check for stylistic and formal issues in .rst and .py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-01-solaris-lib-dirs.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,190 @@
+diff --git Python-2.6.4/Modules/_multiprocessing/multiprocessing.h Python-2.6.4/Modules/_multiprocessing/multiprocessing.h
+--- Python-2.6.4/Modules/_multiprocessing/multiprocessing.h
++++ Python-2.6.4/Modules/_multiprocessing/multiprocessing.h
[email protected]@ -3,6 +3,10 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ 
++/* needed on Solaris for the definition of CMSG_SPACE and friends */
++#define _XOPEN_SOURCE
++#define _XOPEN_SOURCE_EXTENDED 1
++
+ #include "Python.h"
+ #include "structmember.h"
+ #include "pythread.h"
+diff --git Python-2.6.4/setup.py Python-2.6.4/setup.py
+new file mode 100644
+--- Python-2.6.4/setup.py
++++ Python-2.6.4/setup.py
[email protected]@ -309,10 +309,10 @@
+         return sys.platform
+ 
+     def detect_modules(self):
+-        # Ensure that /usr/local is always used
+-        add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
+-        add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+-
++        if sys.platform != 'sunos5':
++            # Ensure that /usr/local is always used
++            add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
++            add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+         # Add paths specified in the environment variables LDFLAGS and
+         # CPPFLAGS for header and library files.
+         # We must get the values from the Makefile and not the environment
[email protected]@ -610,11 +610,22 @@
+         exts.append( Extension('_csv', ['_csv.c']) )
+ 
+         # socket(2)
++        socket_libs = []
++        if self.compiler.find_library_file(lib_dirs,
++                                           'socket'):
++            socket_libs.append('socket')
++        if self.compiler.find_library_file(lib_dirs,
++                                           'nsl'):
++            socket_libs.append('nsl')
++        if self.compiler.find_library_file(lib_dirs,
++                                           'resolv'):
++            socket_libs.append('resolv')
+         exts.append( Extension('_socket', ['socketmodule.c'],
+-                               depends = ['socketmodule.h']) )
++                               depends = ['socketmodule.h'],
++                               libraries = socket_libs) )
+         # Detect SSL support for the socket module (via _ssl)
+         search_for_ssl_incs_in = [
+-                              '/usr/local/ssl/include',
++                              '/usr/sfw/include',
+                               '/usr/contrib/ssl/include/'
+                              ]
+         ssl_incs = find_file('openssl/ssl.h', inc_dirs,
[email protected]@ -625,8 +636,12 @@
+                                ['/usr/kerberos/include'])
+             if krb5_h:
+                 ssl_incs += krb5_h
++        if sys.maxint == 2147483647L:
++            sfw_libdir = '/usr/sfw/lib';
++        else:
++            sfw_libdir = '/usr/sfw/lib/64';
+         ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
+-                                     ['/usr/local/ssl/lib',
++                                     [sfw_libdir,
+                                       '/usr/contrib/ssl/lib/'
+                                      ] )
+ 
[email protected]@ -635,6 +650,7 @@
+             exts.append( Extension('_ssl', ['_ssl.c'],
+                                    include_dirs = ssl_incs,
+                                    library_dirs = ssl_libs,
++				   runtime_library_dirs = ssl_libs,
+                                    libraries = ['ssl', 'crypto'],
+                                    depends = ['socketmodule.h']), )
+         else:
[email protected]@ -1079,6 +1095,14 @@
+ 
+         # Curses support, requiring the System V version of curses, often
+         # provided by the ncurses library.
++        curses_lib_dirs = []
++        curses_inc_dirs = []
++        if platform == 'sunos5':
++            # look for ncurses in /usr/gnu on Solaris
++            curses_inc_dirs.append('/usr/include/ncurses')
++            curses_lib_dirs.append('/usr/gnu/lib')
++            curses_lib_dirs.append('/usr/gnu/lib/amd64')
++            curses_lib_dirs.append('/usr/gnu/lib/sparcv9')
+         panel_library = 'panel'
+         if (self.compiler.find_library_file(lib_dirs, 'ncursesw')):
+             curses_libs = ['ncursesw']
[email protected]@ -1087,10 +1111,13 @@
+             panel_library = 'panelw'
+             exts.append( Extension('_curses', ['_cursesmodule.c'],
+                                    libraries = curses_libs) )
+-        elif (self.compiler.find_library_file(lib_dirs, 'ncurses')):
++        elif (self.compiler.find_library_file(lib_dirs + curses_lib_dirs, 'ncurses')):
+             curses_libs = ['ncurses']
+             exts.append( Extension('_curses', ['_cursesmodule.c'],
+-                                   libraries = curses_libs) )
++                                   libraries = curses_libs,
++                                   library_dirs = curses_lib_dirs,
++                                   runtime_library_dirs = curses_lib_dirs,
++                                   include_dirs = curses_inc_dirs ) )
+         elif (self.compiler.find_library_file(lib_dirs, 'curses')
+               and platform != 'darwin'):
+                 # OSX has an old Berkeley curses, not good enough for
[email protected]@ -1109,9 +1136,12 @@
+ 
+         # If the curses module is enabled, check for the panel module
+         if (module_enabled(exts, '_curses') and
+-            self.compiler.find_library_file(lib_dirs, panel_library)):
++            self.compiler.find_library_file(lib_dirs + curses_lib_dirs, panel_library)):
+             exts.append( Extension('_curses_panel', ['_curses_panel.c'],
+-                                   libraries = [panel_library] + curses_libs) )
++                                   libraries = [panel_library] + curses_libs,
++                                   include_dirs = curses_inc_dirs,
++                                   library_dirs = curses_lib_dirs,
++                                   runtime_library_dirs = curses_lib_dirs ) )
+         else:
+             missing.append('_curses_panel')
+ 
[email protected]@ -1324,8 +1354,13 @@
+             if macros.get('HAVE_SEM_OPEN', False):
+                 multiprocessing_srcs.append('_multiprocessing/semaphore.c')
+ 
++        multiproc_libs = []
++        if platform == 'sunos5':
++            multiproc_libs = [ "xnet" ]
++
+         exts.append ( Extension('_multiprocessing', multiprocessing_srcs,
+                                  define_macros=macros.items(),
++                                 libraries=multiproc_libs,
+                                  include_dirs=["Modules/_multiprocessing"]))
+         # End multiprocessing
+ 
[email protected]@ -1549,15 +1584,26 @@
+         # Assume we haven't found any of the libraries or include files
+         # The versions with dots are used on Unix, and the versions without
+         # dots on Windows, for detection by cygwin.
++        added_lib_dirs = []
++        tcl_tk_lib_dirs = ['/usr/sfw/lib']
++        tcl_tk_inc_dirs = ['/usr/sfw/include']
+         tcllib = tklib = tcl_includes = tk_includes = None
+         for version in ['8.5', '85', '8.4', '84', '8.3', '83', '8.2',
+                         '82', '8.1', '81', '8.0', '80']:
+-            tklib = self.compiler.find_library_file(lib_dirs, 'tk' + version)
+-            tcllib = self.compiler.find_library_file(lib_dirs, 'tcl' + version)
++            tklib = self.compiler.find_library_file(lib_dirs, 'tk' + version, tcl_tk_lib_dirs)
++            tcllib = self.compiler.find_library_file(lib_dirs, 'tcl' + version, tcl_tk_lib_dirs)
+             if tklib and tcllib:
+                 # Exit the loop when we've found the Tcl/Tk libraries
+                 break
+ 
++            tklib = self.compiler.find_library_file(tcl_tk_lib_dirs, 'tk' + version)
++            tcllib = self.compiler.find_library_file(tcl_tk_lib_dirs, 'tcl' + version)
++            if tklib and tcllib:
++                # found the libs in a non-standard dir
++                added_lib_dirs.append(os.path.dirname(tcllib))
++                # Exit the loop when we've found the Tcl/Tk libraries
++                break
++
+         # Now check for the header files
+         if tklib and tcllib:
+             # Check for the include files on Debian and {Free,Open}BSD, where
[email protected]@ -1572,6 +1618,7 @@
+             for dir in inc_dirs:
+                 tcl_include_sub += [dir + os.sep + "tcl" + dotversion]
+                 tk_include_sub += [dir + os.sep + "tk" + dotversion]
++            tcl_include_sub += tcl_tk_inc_dirs
+             tk_include_sub += tcl_include_sub
+             tcl_includes = find_file('tcl.h', inc_dirs, tcl_include_sub)
+             tk_includes = find_file('tk.h', inc_dirs, tk_include_sub)
[email protected]@ -1636,6 +1683,7 @@
+                         include_dirs = include_dirs,
+                         libraries = libs,
+                         library_dirs = added_lib_dirs,
++                        runtime_library_dirs = added_lib_dirs
+                         )
+         self.extensions.append(ext)
+ 
+diff --git Python-2.6.4/Lib/site-packages/vendor-packages.pth Python2.6.4/Lib/site-packages/vendor-packages.pth
+--- /dev/null	Sat Feb 12 00:21:26 2011
++++ Python-2.6.4/Lib/site-packages/vendor-packages.pth	Sat Feb 12 00:47:05 2011
[email protected]@ -0,0 +1,1 @@
++import site; site.addsitedir('/usr/lib/python2.6/vendor-packages')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-02-pycc.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,199 @@
+diff --git Python-2.6.4/Makefile.pre.in Python-2.6.4/Makefile.pre.in
+--- Python-2.6.4/Makefile.pre.in.orig	Sun Feb 13 21:00:17 2011
++++ Python-2.6.4/Makefile.pre.in	Sun Feb 13 21:02:35 2011
[email protected]@ -663,6 +663,8 @@
+ 
+ $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
+ 
++install-pycc:	$(srcdir)/pycc
++	$(INSTALL_SCRIPT) $< $(DESTDIR)$(BINLIBDEST)
+ 
+ ######################################################################
+ 
[email protected]@ -728,7 +728,7 @@
+                $(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
+ 
+ # Install everything
+-install:	@[email protected] altinstall bininstall maninstall @[email protected]
++install:	@[email protected] altinstall bininstall maninstall @[email protected] install-pycc
+ 
+ # Install almost everything without disturbing previous versions
+ altinstall:	@[email protected] altbininstall libinstall inclinstall libainstall \
+
+diff --git Python-2.6.4/pycc Python-2.6.4/pycc
+new file mode 100644
+--- /dev/null
++++ Python-2.6.4/pycc
[email protected]@ -0,0 +1,172 @@
++#!/bin/ksh
++#
++# Script for running the C/C++ compiler when building python modules
++#
++# CDDL HEADER START
++#
++# The contents of this file are subject to the terms of the
++# Common Development and Distribution License, Version 1.0 only
++# (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 2004-2005 Sun Microsystems, Inc.  All rights reserved.
++# Use is subject to license terms.
++#
++
++MYNAME=`basename $0`
++
++# name of the compiler executable
++CCEXE='cc'
++# name of the GNU compiler executable
++GCCEXE='gcc'
++# name of the programming language
++CLANG='C'
++# name of the env variable for setting the compiler path
++CVAR='CC'
++
++if [ "x$PYCC_CC" != x ]; then
++    CC="$PYCC_CC"
++fi
++
++if [ "x$MYNAME" = xpyCC ]; then
++    CCEXE='CC'
++    GCCEXE='g++'
++    CLANG='C++'
++    CC="$CXX"
++    CVAR='CXX'
++    if [ "x$PYCC_CXX" != x ]; then
++        CC="$PYCC_CXX"
++    fi
++fi
++
++SAVED_IFS="$IFS"
++IFS=:
++
++# check if the CC env variable is set
++if [ "x$CC" != x ]; then
++    # verify that it doesn't point to this script
++    if /usr/bin/cmp -s "$CC" $0; then
++        echo "WARNING: "$CVAR" is set to this script; ignoring this value to avoid an infinite loop"
++	CC=
++    fi
++fi
++
++# check again if the CC env variable is set
++if [ "x$CC" != x ]; then
++    case "$CC" in
++	/* )
++	    # $CC is an absolute path name
++            # check if $CC exists
++	    if [ ! -e "$CC" ]; then
++		echo "WARNING: pycc: $CC not found" 1>&2
++		CC=
++	    else
++        # check if $CC is an executable
++		if [ ! -x "$CC" -o ! -f "$CC" ]; then
++		    echo "WARNING: pycc: $CC is not an executable" 1>&2
++		    CC=
++		fi
++	    fi
++	    ;;
++	* )
++	    # try to find $CC in the PATH
++	    NEW_CC=
++	    for dir in $PATH; do
++		if [ -x "$dir/$CC" ]; then
++		    NEW_CC="$dir/$CC"
++		    break
++		fi
++	    done
++	    if [ "x$NEW_CC" = x ]; then
++		echo "WARNING: pycc: $CC not found" 1>&2
++		CC=
++	    else
++		CC="$NEW_CC"
++	    fi
++	    ;;
++    esac
++fi
++
++if [ "x$CC" = x ]; then
++    # Look for the Sun Studio compiler in the PATH
++    for dir in $PATH; do
++	if [ -x "$dir/$CCEXE" ]; then
++	    CC="$dir/$CCEXE"
++	    break
++	fi
++    done
++fi
++
++if [ "x$CC" = x ]; then
++    # Look for gcc in the PATH
++    for dir in $PATH; do
++	if [ -x "$dir/$GCCEXE" ]; then
++	    CC="$dir/$GCCEXE"
++	    break
++	fi
++    done
++fi
++
++if [ "x$CC" = x ]; then
++    # Check for Sun Studio in /opt/SUNWspro (default install location)
++    if [ -x /opt/SUNWspro/bin/$CCEXE ]; then
++	CC=/opt/SUNWspro/bin/$CCEXE
++    fi
++fi
++
++if [ "x$CC" = x ]; then
++    # Check for the GNU compiler in /usr/sfw/bin
++    if [ -x /usr/sfw/bin/$GCCEXE ]; then
++	CC=/usr/sfw/bin/$GCCEXE
++    fi
++fi
++
++if [ "x$CC" = x ]; then
++    # Cannot continue without a C compiler
++    echo "ERROR: no $CLANG compiler not found; update your PATH or set the $CVAR env variable" 1>&2
++    exit 1
++fi
++
++IFS="$SAVED_IFS"
++
++# We need to make some modifications to adapt correctly to compiler options
++# that differ between GCC and Studio.
++
++extra_flags=
++
++is_gcc=no
++
++$CC --version >/dev/null 2>&1 && is_gcc=yes
++
++if [ "$is_gcc" = yes ]; then
++	for flag in "${@}"; do
++		# need -shared to link shared objects properly
++		if [ "$flag" = "-G" ]; then
++			extra_flags="$extra_flags -shared"
++		fi
++		# workaround for 6223255
++		if [ "$flag" = "-m64" ]; then
++			extra_flags="$extra_flags -R/usr/sfw/lib/amd64"
++		fi
++	done
++	# force PIC compilation
++	extra_flags="$extra_flags -fPIC -DPIC"
++else
++	extra_flags="$extra_flags -KPIC"
++fi
++
++exec "$CC" $extra_flags "${@}"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-03-distutils-pycc.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,24 @@
+diff --git Python-2.6.4/Lib/distutils/sysconfig.py Python-2.6.4/Lib/distutils/sysconfig.py
+--- Python-2.6.4/Lib/distutils/sysconfig.py
++++ Python-2.6.4/Lib/distutils/sysconfig.py
[email protected]@ -166,16 +166,10 @@
+             get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
+                             'CCSHARED', 'LDSHARED', 'SO')
+ 
+-        if 'CC' in os.environ:
+-            cc = os.environ['CC']
+-        if 'CXX' in os.environ:
+-            cxx = os.environ['CXX']
+-        if 'LDSHARED' in os.environ:
+-            ldshared = os.environ['LDSHARED']
+-        if 'CPP' in os.environ:
+-            cpp = os.environ['CPP']
+-        else:
+-            cpp = cc + " -E"           # not always
++        # On Solaris, we must always use pycc/pyCC, which will then look up
++        # $CC and $CXX
++        cpp = cc + " -E"
++
+         if 'LDFLAGS' in os.environ:
+             ldshared = ldshared + ' ' + os.environ['LDFLAGS']
+         if 'CFLAGS' in os.environ:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-04-distutils-log.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,30 @@
+diff --git Python-2.6.4/Lib/distutils/spawn.py Python-2.6.4/Lib/distutils/spawn.py
+--- Python-2.6.4/Lib/distutils/spawn.py
++++ Python-2.6.4/Lib/distutils/spawn.py
[email protected]@ -73,7 +73,7 @@
+     if search_path:
+         # either we find one or it stays the same
+         executable = find_executable(executable) or executable
+-    log.info(string.join([executable] + cmd[1:], ' '))
++    log.info("%s", string.join([executable] + cmd[1:], ' '))
+     if not dry_run:
+         # spawn for NT requires a full path to the .exe
+         try:
[email protected]@ -98,7 +98,7 @@
+     if search_path:
+         # either we find one or it stays the same
+         executable = find_executable(executable) or executable
+-    log.info(string.join([executable] + cmd[1:], ' '))
++    log.info("%s", string.join([executable] + cmd[1:], ' '))
+     if not dry_run:
+         # spawnv for OS/2 EMX requires a full path to the .exe
+         try:
[email protected]@ -119,7 +119,7 @@
+                   verbose=0,
+                   dry_run=0):
+ 
+-    log.info(string.join(cmd, ' '))
++    log.info("%s", string.join(cmd, ' '))
+     if dry_run:
+         return
+     exec_fn = search_path and os.execvp or os.execv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-05-isalibs.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,452 @@
+diff --git Python-2.6.4/Lib/distutils/command/build_ext.py Python-2.6.4/Lib/distutils/command/build_ext.py
+--- Python-2.6.4/Lib/distutils/command/build_ext.py
++++ Python-2.6.4/Lib/distutils/command/build_ext.py
[email protected]@ -636,6 +636,8 @@
+         modpath = fullname.split('.')
+         filename = self.get_ext_filename(ext_name)
+         filename = os.path.split(filename)[-1]
++        if sys.maxint != 2147483647L:
++            filename = os.path.join("64", filename)
+ 
+         if not self.inplace:
+             # no further work needed
[email protected]@ -677,7 +679,13 @@
+         so_ext = get_config_var('SO')
+         if os.name == 'nt' and self.debug:
+             return apply(os.path.join, ext_path) + '_d' + so_ext
+-        return os.path.join(*ext_path) + so_ext
++        # .so extensions are word-size specific
++        path = apply(os.path.join, ext_path)
++        if sys.maxint == 2147483647L:
++            return path + so_ext
++        dirname = os.path.dirname(path);
++        basename = os.path.basename(path);
++        return os.path.join(dirname, "64", basename + so_ext)
+ 
+     def get_export_symbols (self, ext):
+         """Return the list of symbols that a shared extension has to
+diff --git Python-2.6.4/Makefile.pre.in Python-2.6.4/Makefile.pre.in
+--- Python-2.6.4/Makefile.pre.in
++++ Python-2.6.4/Makefile.pre.in
[email protected]@ -87,18 +87,18 @@
+ 
+ # Expanded directories
+ BINDIR=		$(exec_prefix)/bin
+-LIBDIR=		$(exec_prefix)/lib
++LIBDIR=		@[email protected]
+ MANDIR=		@[email protected]
+ INCLUDEDIR=	@[email protected]
+ CONFINCLUDEDIR=	$(exec_prefix)/include
+ SCRIPTDIR=	$(prefix)/lib
+ 
+ # Detailed destination directories
+-BINLIBDEST=	$(LIBDIR)/python$(VERSION)
+-LIBDEST=	$(SCRIPTDIR)/python$(VERSION)
+-INCLUDEPY=	$(INCLUDEDIR)/python$(VERSION)
+-CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(VERSION)
+-LIBP=		$(LIBDIR)/python$(VERSION)
++BINLIBDEST=		$(exec_prefix)/lib/python$(VERSION)
++LIBDEST=		$(SCRIPTDIR)/python$(VERSION)
++INCLUDEPY=		$(INCLUDEDIR)/python$(VERSION)
++CONFINCLUDEPY=		$(CONFINCLUDEDIR)/python$(VERSION)
++LIBP=			$(exec_prefix)/lib/python$(VERSION)
+ 
+ # Symbols used for using shared libraries
+ SO=		@[email protected]
+diff --git Python-2.6.4/Python/import.c Python-2.6.4/Python/import.c
+--- Python-2.6.4/Python/import.c
++++ Python-2.6.4/Python/import.c
[email protected]@ -1191,6 +1191,57 @@
+ static int find_init_module(char *); /* Forward */
+ static struct filedescr importhookdescr = {"", "", IMP_HOOK};
+ 
++#ifdef HAVE_STAT
++static char *
++insert_64dir(char *buf, size_t buflen)
++{
++	char *base;
++	char *cp;
++	size_t blen;
++
++	if ((blen = strlen(buf)) == 0)
++		return (NULL);
++
++	cp = &buf[blen - 1];
++	while (cp != buf && *cp != SEP)
++		cp--;
++
++	if (cp != buf)
++		cp++;
++
++	if (blen + strlen("64/") + 1 >= buflen)
++		return NULL;
++
++	base = strdup(cp);
++	sprintf(cp, "64%c%s", SEP, base);
++	free(base);
++
++	return buf;
++}
++
++/*
++ * If we're on a 64-bit platform, modify lookups for shared object files.
++ */
++static size_t modify_path(struct filedescr *fdp, char *buf, size_t buflen)
++{
++	struct stat statbuf;
++
++	if (sizeof(void *) != 8)
++		return 0;
++
++	if (stat(buf, &statbuf) == 0 && S_ISDIR(statbuf.st_mode))
++		return 0;
++
++	if (fdp->type != C_EXTENSION)
++		return 0;
++
++	if (insert_64dir(buf, buflen) == NULL)
++		return 0;
++
++	return strlen("64/");
++}
++#endif
++
+ static struct filedescr *
+ find_module(char *fullname, char *subname, PyObject *path, char *buf,
+ 	    size_t buflen, FILE **p_fp, PyObject **p_loader)
[email protected]@ -1208,11 +1259,10 @@
+ 	static struct filedescr fd_builtin = {"", "", C_BUILTIN};
+ 	static struct filedescr fd_package = {"", "", PKG_DIRECTORY};
+ 	char name[MAXPATHLEN+1];
+-#if defined(PYOS_OS2)
+ 	size_t saved_len;
+ 	size_t saved_namelen;
+ 	char *saved_buf = NULL;
+-#endif
++
+ 	if (p_loader != NULL)
+ 		*p_loader = NULL;
+ 
[email protected]@ -1431,15 +1481,19 @@
+ 		}
+ #endif
+ #endif
+-#if defined(PYOS_OS2)
++
+ 		/* take a snapshot of the module spec for restoration
+ 		 * after the 8 character DLL hackery
+ 		 */
+ 		saved_buf = strdup(buf);
+ 		saved_len = len;
+ 		saved_namelen = namelen;
+-#endif /* PYOS_OS2 */
++
+ 		for (fdp = _PyImport_Filetab; fdp->suffix != NULL; fdp++) {
++#ifdef HAVE_STAT
++                        len += modify_path(fdp, buf, buflen);
++#endif
++
+ #if defined(PYOS_OS2) && defined(HAVE_DYNAMIC_LOADING)
+ 			/* OS/2 limits DLLs to 8 character names (w/o
+ 			   extension)
[email protected]@ -1480,21 +1534,18 @@
+ 					fp = NULL;
+ 				}
+ 			}
+-#if defined(PYOS_OS2)
++
+ 			/* restore the saved snapshot */
+ 			strcpy(buf, saved_buf);
+ 			len = saved_len;
+ 			namelen = saved_namelen;
+-#endif
+ 		}
+-#if defined(PYOS_OS2)
+ 		/* don't need/want the module name snapshot anymore */
+ 		if (saved_buf)
+ 		{
+ 			free(saved_buf);
+ 			saved_buf = NULL;
+ 		}
+-#endif
+ 		Py_XDECREF(copy);
+ 		if (fp != NULL)
+ 			break;
+diff --git Python-2.6.4/Python/importdl.h Python-2.6.4/Python/importdl.h
+--- Python-2.6.4/Python/importdl.h
++++ Python-2.6.4/Python/importdl.h
[email protected]@ -31,8 +31,9 @@
+ extern PyObject *_PyImport_LoadDynamicModule(char *name, char *pathname,
+ 					     FILE *);
+ 
+-/* Max length of module suffix searched for -- accommodates "module.slb" */
+-#define MAXSUFFIXSIZE 12
++/* Max length of module suffix searched for -- accommodates "module.slb"
++   and "64/" */
++#define MAXSUFFIXSIZE 15
+ 
+ #ifdef MS_WINDOWS
+ #include <windows.h>
+diff --git Python-2.6.4/configure.in Python-2.6.4/configure.in
+--- Python-2.6.4/configure.in
++++ Python-2.6.4/configure.in
[email protected]@ -17,8 +17,44 @@
+ AH_TOP([
+ #ifndef Py_PYCONFIG_H
+ #define Py_PYCONFIG_H
++
+ ])
+ AH_BOTTOM([
++
++#include <sys/isa_defs.h>
++
++/*
++ * Python originally defined these statically, which prevents a 32-64 python
++ * from working at all.
++ */
++
++#define SIZEOF_SHORT 2
++#define SIZEOF_INT 4
++#define SIZEOF_LONG_LONG 8
++#define SIZEOF_FPOS_T 8
++#define SIZEOF_OFF_T 8
++#define SIZEOF_PTHREAD_T 4
++
++#ifdef _LP64
++#define SIZEOF_LONG 8
++#define SIZEOF_UINTPTR_T 8
++#define SIZEOF_VOID_P 8
++#define SIZEOF_TIME_T 8
++#define SIZEOF_SIZE_T 8
++#define SIZEOF_LONG_DOUBLE 16
++#else
++#define SIZEOF_LONG 4
++#define SIZEOF_UINTPTR_T 4
++#define SIZEOF_VOID_P 4
++#define SIZEOF_TIME_T 4
++#define SIZEOF_SIZE_T 4
++#if defined(__i386)
++#define SIZEOF_LONG_DOUBLE 12
++#else
++#define SIZEOF_LONG_DOUBLE 16
++#endif
++#endif
++
+ /* Define the macros needed if on a UnixWare 7.x system. */
+ #if defined(__USLC__) && defined(__SCO_VERSION__)
+ #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
[email protected]@ -65,6 +101,26 @@
+ 
+ define_xopen_source=yes
+ 
++# AC_CHECK_SIZEOF without the AC_DEFINE_UNQUOTED
++AC_DEFUN([PY_CHECK_SIZEOF],
++[AS_LITERAL_IF([$1], [],
++               [AC_FATAL([$0: requires literal arguments])])dnl
++AC_CHECK_TYPE([$1], [], [], [$3])
++AC_CACHE_CHECK([size of $1], AS_TR_SH([ac_cv_sizeof_$1]),
++[if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then
++  # The cast to unsigned long works around a bug in the HP C Compiler
++  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
++  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
++  # This bug is HP SR number 8606223364.
++  _AC_COMPUTE_INT([(long) (sizeof ($1))],
++                  [AS_TR_SH([ac_cv_sizeof_$1])],
++                  [AC_INCLUDES_DEFAULT([$3])],
++                  [AC_MSG_FAILURE([cannot compute sizeof ($1), 77])])
++else
++  AS_TR_SH([ac_cv_sizeof_$1])=0
++fi])dnl
++])# PY_CHECK_SIZEOF
++
+ # Arguments passed to configure.
+ AC_SUBST(CONFIG_ARGS)
+ CONFIG_ARGS="$ac_configure_args"
[email protected]@ -1377,14 +1433,10 @@
+ 
+ # Sizes of various common basic types
+ # ANSI C requires sizeof(char) == 1, so no need to check it
+-AC_CHECK_SIZEOF(int, 4)
+-AC_CHECK_SIZEOF(long, 4)
+-AC_CHECK_SIZEOF(void *, 4)
+ AC_CHECK_SIZEOF(short, 2)
+ AC_CHECK_SIZEOF(float, 4)
+ AC_CHECK_SIZEOF(double, 8)
+-AC_CHECK_SIZEOF(fpos_t, 4)
+-AC_CHECK_SIZEOF(size_t, 4)
++AC_CHECK_SIZEOF(short)
+ AC_CHECK_SIZEOF(pid_t, 4)
+ 
+ AC_MSG_CHECKING(for long long support)
[email protected]@ -1394,9 +1446,6 @@
+   have_long_long=yes
+ ])
+ AC_MSG_RESULT($have_long_long)
+-if test "$have_long_long" = yes ; then
+-AC_CHECK_SIZEOF(long long, 8)
+-fi
+ 
+ AC_MSG_CHECKING(for long double support)
+ have_long_double=no
[email protected]@ -1404,10 +1453,6 @@
+   AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
+   have_long_double=yes
+ ])
+-AC_MSG_RESULT($have_long_double)
+-if test "$have_long_double" = yes ; then
+-AC_CHECK_SIZEOF(long double, 12)
+-fi
+ 
+ AC_MSG_CHECKING(for _Bool support)
+ have_c99_bool=no
[email protected]@ -1421,102 +1466,26 @@
+ fi
+ 
+ AC_CHECK_TYPES(uintptr_t, 
+-   [AC_CHECK_SIZEOF(uintptr_t, 4)], 
++   [], 
+    [], [#ifdef HAVE_STDINT_H
+         #include <stdint.h>
+         #endif])
+ 
+ 
+-# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
+-AC_MSG_CHECKING(size of off_t)
+-AC_CACHE_VAL(ac_cv_sizeof_off_t,
+-[AC_TRY_RUN([#include <stdio.h>
++PY_CHECK_SIZEOF(off_t,4,[
++#include <stdio.h>
++#include <stdlib.h>
+ #include <sys/types.h>
+-main()
+-{
+-  FILE *f=fopen("conftestval", "w");
+-  if (!f) exit(1);
+-  fprintf(f, "%d\n", sizeof(off_t));
+-  exit(0);
+-}],
+-ac_cv_sizeof_off_t=`cat conftestval`,
+-ac_cv_sizeof_off_t=0,
+-ac_cv_sizeof_off_t=4)
+ ])
+-AC_MSG_RESULT($ac_cv_sizeof_off_t)
+-AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
+-[The number of bytes in an off_t.])
+ 
+ AC_MSG_CHECKING(whether to enable large file support)
+-if test "$have_long_long" = yes -a \
+-	"$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
+-	"$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
+-  AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1, 
+-  [Defined to enable large file support when an off_t is bigger than a long
+-   and long long is available and at least as big as an off_t. You may need
+-   to add some flags for configuration and compilation to enable this mode.
+-   (For Solaris and Linux, the necessary defines are already defined.)])
+-  AC_MSG_RESULT(yes)
+-else
+-  AC_MSG_RESULT(no)
+-fi
+ 
+-# AC_CHECK_SIZEOF() doesn't include <time.h>.
+-AC_MSG_CHECKING(size of time_t)
+-AC_CACHE_VAL(ac_cv_sizeof_time_t,
+-[AC_TRY_RUN([#include <stdio.h>
+-#include <time.h>
+-main()
+-{
+-  FILE *f=fopen("conftestval", "w");
+-  if (!f) exit(1);
+-  fprintf(f, "%d\n", sizeof(time_t));
+-  exit(0);
+-}],
+-ac_cv_sizeof_time_t=`cat conftestval`,
+-ac_cv_sizeof_time_t=0,
+-ac_cv_sizeof_time_t=4)
+-])
+-AC_MSG_RESULT($ac_cv_sizeof_time_t)
+-AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t, 
+-[The number of bytes in a time_t.])
+-
+-
+-# if have pthread_t then define SIZEOF_PTHREAD_T
+-ac_save_cc="$CC"
+-if test "$ac_cv_kpthread" = "yes"
+-then CC="$CC -Kpthread"
+-elif test "$ac_cv_kthread" = "yes"
+-then CC="$CC -Kthread"
+-elif test "$ac_cv_pthread" = "yes"
+-then CC="$CC -pthread"
+-fi
+-AC_MSG_CHECKING(for pthread_t)
+-have_pthread_t=no
+-AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
+-AC_MSG_RESULT($have_pthread_t)
+-if test "$have_pthread_t" = yes ; then
+-  # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
+-  AC_MSG_CHECKING(size of pthread_t)
+-  AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
+-  [AC_TRY_RUN([#include <stdio.h>
+-#include <pthread.h>
+-  main()
+-  {
+-    FILE *f=fopen("conftestval", "w");
+-    if (!f) exit(1);
+-    fprintf(f, "%d\n", sizeof(pthread_t));
+-    exit(0);
+-  }],
+-  ac_cv_sizeof_pthread_t=`cat conftestval`,
+-  ac_cv_sizeof_pthread_t=0,
+-  ac_cv_sizeof_pthread_t=4)
+-  ])
+-  AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
+-  AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
+-   [The number of bytes in a pthread_t.])
+-fi
+-CC="$ac_save_cc"
++AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
++[Defined to enable large file support when an off_t is bigger than a long
++ and long long is available and at least as big as an off_t. You may need
++ to add some flags for configuration and compilation to enable this mode.
++ (For Solaris and Linux, the necessary defines are already defined.)])
++AC_MSG_RESULT(yes)
+ 
+ AC_MSG_CHECKING(for --enable-toolbox-glue)
+ AC_ARG_ENABLE(toolbox-glue,
[email protected]@ -1810,12 +1779,6 @@
+ if test -z "$CCSHARED"
+ then
+ 	case $ac_sys_system/$ac_sys_release in
+-	SunOS*) if test "$GCC" = yes;
+-		then CCSHARED="-fPIC";
+-		elif test `uname -p` = sparc;
+-		then CCSHARED="-xcode=pic32";
+-		else CCSHARED="-Kpic";
+-		fi;;
+ 	hp*|HP*) if test "$GCC" = yes;
+ 		 then CCSHARED="-fPIC";
+ 		 else CCSHARED="+z";
[email protected]@ -3308,12 +3271,6 @@
+ wchar_h="no"
+ )
+ 
+-# determine wchar_t size
+-if test "$wchar_h" = yes
+-then
+-  AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
+-fi
+-
+ AC_MSG_CHECKING(for UCS-4 tcl)
+ have_ucs4_tcl=no
+ AC_TRY_COMPILE([
[email protected]@ -3344,6 +3301,11 @@
+   ac_cv_wchar_t_signed=no,
+   ac_cv_wchar_t_signed=yes)])
+   AC_MSG_RESULT($ac_cv_wchar_t_signed)
++ 
++  PY_CHECK_SIZEOF(wchar_t, 4, [
++  #include <wchar.h>
++  #include <stdlib.h
++  ])
+ fi
+   
+ AC_MSG_CHECKING(what type to use for unicode)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-06-write_compiled_module-atomic.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,84 @@
+diff --git Python-2.6.4/Python/import.c Python-2.6.4/Python/import.c
+--- Python-2.6.4/Python/import.c
++++ Python-2.6.4/Python/import.c
[email protected]@ -866,8 +866,9 @@
+ 
+ /* Write a compiled module to a file, placing the time of last
+    modification of its source into the header.
+-   Errors are ignored, if a write error occurs an attempt is made to
+-   remove the file. */
++   Write to a temporary file first so that creating the file is atomic.
++   Errors are ignored, if a write/unlink/rename error occurs an attempt
++   is made to remove the temporary file. */
+ 
+ static void
+ write_compiled_module(PyCodeObject *co, char *cpathname, struct stat *srcstat)
[email protected]@ -879,12 +880,21 @@
+ #else
+ 	mode_t mode = srcstat->st_mode & ~S_IXUSR & ~S_IXGRP & ~S_IXOTH;
+ #endif 
++	char *tmppathname;
++ 
++	/* the temporary file is called cpathname + ".tmp" */
++	if ((tmppathname = PyMem_Malloc(strlen(cpathname) + strlen(".tmp") + 1))
++		== NULL) {
++		return;
++	}
++	sprintf (tmppathname, "%s.tmp", cpathname);
++	fp = open_exclusive(tmppathname, mode);
+ 
+-	fp = open_exclusive(cpathname, mode);
+ 	if (fp == NULL) {
+ 		if (Py_VerboseFlag)
+ 			PySys_WriteStderr(
+-				"# can't create %s\n", cpathname);
++				"# can't create %s\n", tmppathname);
++		PyMem_Free(tmppathname);
+ 		return;
+ 	}
+ 	PyMarshal_WriteLongToFile(pyc_magic, fp, Py_MARSHAL_VERSION);
[email protected]@ -893,10 +903,11 @@
+ 	PyMarshal_WriteObjectToFile((PyObject *)co, fp, Py_MARSHAL_VERSION);
+ 	if (fflush(fp) != 0 || ferror(fp)) {
+ 		if (Py_VerboseFlag)
+-			PySys_WriteStderr("# can't write %s\n", cpathname);
++			PySys_WriteStderr("# can't write %s\n", tmppathname);
+ 		/* Don't keep partial file */
+ 		fclose(fp);
+-		(void) unlink(cpathname);
++		(void) unlink(tmppathname);
++		PyMem_Free(tmppathname);
+ 		return;
+ 	}
+ 	/* Now write the true mtime */
[email protected]@ -905,8 +916,30 @@
+ 	PyMarshal_WriteLongToFile((long)mtime, fp, Py_MARSHAL_VERSION);
+ 	fflush(fp);
+ 	fclose(fp);
++	/* Delete the old compiled file, if exists */
++	if (unlink (cpathname)) {
++		if ((errno != ENOENT)) {
++			/* the file exists but could not be deleted */
++			if (Py_VerboseFlag)
++				PySys_WriteStderr(
++					"# can't unlink %s\n", cpathname);
++			(void) unlink(tmppathname);
++			PyMem_Free(tmppathname);
++			return;
++		}
++	}
++	/* rename the tmp file to the real file name */
++	if (rename (tmppathname, cpathname)) {
++		if (Py_VerboseFlag)
++			PySys_WriteStderr(
++				"# can't rename %s to %s\n", tmppathname, cpathname);
++		(void) unlink(tmppathname);
++		PyMem_Free(tmppathname);
++		return;
++	}
+ 	if (Py_VerboseFlag)
+ 		PySys_WriteStderr("# wrote %s\n", cpathname);
++	PyMem_Free(tmppathname);
+ }
+ 
+ static void
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-07-dtrace.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,417 @@
+diff --git Python-2.6.4/Include/frameobject.h Python-2.6.4/Include/frameobject.h
+--- Python-2.6.4/Include/frameobject.h
++++ Python-2.6.4/Include/frameobject.h
[email protected]@ -41,6 +41,7 @@
+     /* As of 2.3 f_lineno is only valid when tracing is active (i.e. when
+        f_trace is set) -- at other times use PyCode_Addr2Line instead. */
+     int f_lineno;		/* Current line number */
++    int f_calllineno;		/* line number of call site */
+     int f_iblock;		/* index in f_blockstack */
+     PyTryBlock f_blockstack[CO_MAXBLOCKS]; /* for try and loop blocks */
+     PyObject *f_localsplus[1];	/* locals+stack, dynamically sized */
+diff --git Python-2.6.4/Makefile.pre.in Python-2.6.4/Makefile.pre.in
+--- Python-2.6.4/Makefile.pre.in
++++ Python-2.6.4/Makefile.pre.in
[email protected]@ -201,6 +201,7 @@
+ GRAMMAR_C=	$(srcdir)/Python/graminit.c
+ GRAMMAR_INPUT=	$(srcdir)/Grammar/Grammar
+ 
++DTRACE_OBJS=Python/dtrace.o Python/phelper.o
+ 
+ ##########################################################################
+ # Parser
[email protected]@ -290,6 +291,7 @@
+ 		Python/formatter_unicode.o \
+ 		Python/formatter_string.o \
+ 		Python/$(DYNLOADFILE) \
++		$(DTRACE_OBJS) \
+ 		$(LIBOBJS) \
+ 		$(MACHDEP_OBJS) \
+ 		$(THREADOBJ)
[email protected]@ -577,6 +579,18 @@
+ Python/formatter_string.o: $(srcdir)/Python/formatter_string.c \
+ 				$(STRINGLIB_HEADERS)
+ 
++Python/phelper.o: $(srcdir)/Python/phelper.d
++	dtrace -o [email protected] -DPHELPER $(DFLAGS) $(CPPFLAGS) -C -G -s $(srcdir)/Python/phelper.d
++
++Python/python.h: $(srcdir)/Python/python.d
++	dtrace -o [email protected] $(DFLAGS) -C -h -s $(srcdir)/Python/python.d
++
++Python/ceval.o: Python/ceval.c Python/python.h
++	$(CC) -c $(BASECFLAGS) $(EXTRA_CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE -o [email protected] $<
++
++Python/dtrace.o: $(srcdir)/Python/python.d Python/ceval.o
++	dtrace -o [email protected] $(DFLAGS) -C -G -s $(srcdir)/Python/python.d Python/ceval.o
++
+ ############################################################################
+ # Header files
+ 
+diff --git Python-2.6.4/Objects/frameobject.c Python-2.6.4/Objects/frameobject.c
+--- Python-2.6.4/Objects/frameobject.c
++++ Python-2.6.4/Objects/frameobject.c
[email protected]@ -698,6 +698,7 @@
+ 	f->f_tstate = tstate;
+ 
+ 	f->f_lasti = -1;
++ 	f->f_calllineno = code->co_firstlineno;
+ 	f->f_lineno = code->co_firstlineno;
+ 	f->f_iblock = 0;
+ 
+diff --git Python-2.6.4/Python/ceval.c Python-2.6.4/Python/ceval.c
+--- Python-2.6.4/Python/ceval.c
++++ Python-2.6.4/Python/ceval.c
[email protected]@ -19,6 +19,11 @@
+ 
+ #include <ctype.h>
+ 
++#define HAVE_DTRACE
++#ifdef HAVE_DTRACE
++#include "python.h"
++#endif
++
+ #ifndef WITH_TSC
+ 
+ #define READ_TIMESTAMP(var)
[email protected]@ -527,6 +532,55 @@
+ 			  NULL);
+ }
+ 
++#ifdef HAVE_DTRACE
++static void
++dtrace_entry(PyFrameObject *f)
++{
++	const char *filename;
++	const char *fname;
++	int lineno;
++	
++	filename = PyString_AsString(f->f_code->co_filename);
++	fname = PyString_AsString(f->f_code->co_name);
++	lineno = PyCode_Addr2Line(f->f_code, f->f_lasti);
++
++	PYTHON_FUNCTION_ENTRY((char *)filename, (char *)fname, lineno);
++
++	/*
++	 * Currently a USDT tail-call will not receive the correct arguments.
++	 * Disable the tail call here.
++	 */
++#if defined(__sparc)
++	asm("nop");
++#endif
++}
++
++static void
++dtrace_return(PyFrameObject *f)
++{
++	const char *filename;
++	const char *fname;
++	int lineno;
++	
++	filename = PyString_AsString(f->f_code->co_filename);
++	fname = PyString_AsString(f->f_code->co_name);
++	lineno = PyCode_Addr2Line(f->f_code, f->f_lasti);
++	PYTHON_FUNCTION_RETURN((char *)filename, (char *)fname, lineno);
++
++	/*
++	 * Currently a USDT tail-call will not receive the correct arguments.
++	 * Disable the tail call here.
++	 */
++#if defined(__sparc)
++	asm("nop");
++#endif
++}
++#else
++#define	PYTHON_FUNCTION_ENTRY_ENABLED 0
++#define	PYTHON_FUNCTION_RETURN_ENABLED 0
++#define	dtrace_entry()
++#define	dtrace_return()
++#endif
+ 
+ /* Interpreter main loop */
+ 
[email protected]@ -538,9 +592,84 @@
+ 	return PyEval_EvalFrameEx(f, 0);
+ }
+ 
++/*
++ * These shenanigans look like utter madness, but what we're actually doing is
++ * making sure that the ustack helper will see the PyFrameObject pointer on the
++ * stack. We have two tricky cases:
++ *
++ * amd64
++ *
++ * We use up the six registers for passing arguments, meaning the call can't
++ * use a register for passing 'f', and has to push it onto the stack in a known
++ * location.
++ *
++ * And how does "throwflag" figure in to this? -PN
++ *
++ * SPARC
++ *
++ * Here the problem is that (on 32-bit) the compiler is re-using %i0 before
++ * some calls inside PyEval_EvalFrameReal(), which means that when it's saved,
++ * it's just some junk value rather than the real first argument. So, instead,
++ * we trace our proxy PyEval_EvalFrame(), where we 'know' the compiler won't
++ * decide to re-use %i0. We also need to defeat optimization of our proxy.
++ */
++
++#if defined(HAVE_DTRACE)
++
++#if defined(__amd64)
++PyObject *PyEval_EvalFrameExReal(long, long, long, long, long, long,
++    PyFrameObject *, int throwflag);
++
++
++
+ PyObject *
+ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
+ {
++	volatile PyObject *f2;
++	f2 = PyEval_EvalFrameExReal(0, 0, 0, 0, 0, 0, f, throwflag);
++	return (PyObject *)f2;
++}
++
++PyObject *
++PyEval_EvalFrameExReal(long a1, long a2, long a3, long a4, long a5, long a6,
++    PyFrameObject *f, int throwflag)
++{
++
++#elif defined(__sparc)
++
++PyObject *PyEval_EvalFrameExReal(PyFrameObject *f, int throwflag);
++
++volatile int dummy;
++
++PyObject *
++PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
++{
++	volatile PyObject *f2;
++	f2 = PyEval_EvalFrameExReal(f, throwflag);
++	dummy = f->ob_refcnt;
++	return (PyObject *)f2;
++}
++
++PyObject *
++PyEval_EvalFrameExReal(PyFrameObject *f, int throwflag)
++{
++
++#else /* __amd64 || __sparc */
++
++PyObject *
++PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
++{
++
++#endif /* __amd64 || __sparc */
++
++#else /* don't HAVE_DTRACE */
++
++PyObject *
++PyEval_EvalFrameexEx(PyFrameObject *f, int throwflag))
++{
++
++#endif /* HAVE_DTRACE */
++
+ #ifdef DXPAIRS
+ 	int lastopcode = 0;
+ #endif
[email protected]@ -763,6 +892,9 @@
+ 		}
+ 	}
+ 
++        if (PYTHON_FUNCTION_ENTRY_ENABLED())
++                dtrace_entry(f);
++
+ 	co = f->f_code;
+ 	names = co->co_names;
+ 	consts = co->co_consts;
[email protected]@ -2383,6 +2515,10 @@
+ 			PyObject **sp;
+ 			PCALL(PCALL_ALL);
+ 			sp = stack_pointer;
++#ifdef HAVE_DTRACE
++			f->f_calllineno = PyCode_Addr2Line(f->f_code,
++							   f->f_lasti);
++#endif
+ #ifdef WITH_TSC
+ 			x = call_function(&sp, oparg, &intr0, &intr1);
+ #else
[email protected]@ -2425,6 +2561,11 @@
+ 		    } else
+ 			    Py_INCREF(func);
+ 		    sp = stack_pointer;
++#ifdef HAVE_DTRACE
++		    f->f_calllineno = PyCode_Addr2Line(f->f_code,
++		                                       f->f_lasti);
++#endif
++
+ 		    READ_TIMESTAMP(intr0);
+ 		    x = ext_do_call(func, &sp, flags, na, nk);
+ 		    READ_TIMESTAMP(intr1);
[email protected]@ -2723,6 +2864,8 @@
+ 
+ 	/* pop frame */
+ exit_eval_frame:
++	if (PYTHON_FUNCTION_RETURN_ENABLED())
++		dtrace_return(f);
+ 	Py_LeaveRecursiveCall();
+ 	tstate->frame = f->f_back;
+ 
+diff --git Python-2.6.4/Python/phelper.d Python-2.6.4/Python/phelper.d
+new file mode 100644
+--- /dev/null
++++ Python-2.6.4/Python/phelper.d
[email protected]@ -0,0 +1,139 @@
++
++/*
++ * Python ustack helper.  This relies on the first argument (PyFrame *) being
++ * on the stack; see Python/ceval.c for the contortions we go through to ensure
++ * this is the case.
++ *
++ * On x86, the PyFrame * is two slots up from the frame pointer; on SPARC, it's
++ * eight.
++ */
++
++/*
++ * Yes, this is as gross as it looks. DTrace cannot handle static functions,
++ * and our stat_impl.h has them in ILP32.
++ */
++#define _SYS_STAT_H
++
++#include <stdio.h>
++#include <sys/types.h>
++
++#include "pyport.h"
++#include "object.h"
++#include "pystate.h"
++#include "pyarena.h"
++#include "pythonrun.h"
++#include "compile.h"
++#include "frameobject.h"
++#include "stringobject.h"
++
++#if defined(__i386)
++#define	startframe PyEval_EvalFrameEx
++#define	endframe PyEval_EvalCodeEx
++#elif defined(__amd64)
++#define	PyEval_EvalFrameEx PyEval_EvalFrameExReal
++#define	startframe PyEval_EvalFrameExReal
++#define	endframe PyEval_EvalCodeEx
++#elif defined(__sparc)
++#define	PyEval_EvalFrameEx PyEval_EvalFrameExReal
++#define	startframe PyEval_EvalFrameEx
++#define	endframe PyEval_EvalFrameExReal
++#endif
++
++#ifdef __sparcv9
++#define	STACK_BIAS (2048-1)
++#else
++#define	STACK_BIAS 0
++#endif
++
++/*
++ * Not defining PHELPER lets us test this code as a normal D script.
++ */
++#ifdef PHELPER
++
++#define	at_evalframe(addr) \
++    ((uintptr_t)addr >= ((uintptr_t)&``startframe) && \
++     (uintptr_t)addr < ((uintptr_t)&``endframe))
++#define	probe dtrace:helper:ustack:
++#define	print_result(r) (r)
++
++#if defined(__i386) || defined(__amd64)
++#define	frame_ptr_addr ((uintptr_t)arg1 + sizeof(uintptr_t) * 2)
++#elif defined(__sparc)
++#define	frame_ptr_addr ((uintptr_t)arg1 + STACK_BIAS + sizeof(uintptr_t) * 8)
++#else
++#error unknown architecture
++#endif
++
++#else /* PHELPER */
++
++#define	at_evalframe(addr) (1)
++#define	probe pid$target::PyEval_EvalFrame:entry
++#define print_result(r) (trace(r))
++
++#if defined(__i386) || defined(__amd64)
++#define	frame_ptr_addr ((uintptr_t)uregs[R_SP] + sizeof(uintptr_t))
++#elif defined(__sparc)
++/*
++ * Not implemented: we could just use R_I0, but what's the point?
++ */
++#else
++#error unknown architecture
++#endif
++
++#endif /* PHELPER */
++
++extern uintptr_t PyEval_EvalFrameEx;
++extern uintptr_t PyEval_EvalCodeEx;
++
++#define	copyin_obj(addr, obj) ((obj *)copyin((uintptr_t)addr, sizeof(obj)))
++#define	pystr_addr(addr) ((char *)addr + offsetof(PyStringObject, ob_sval))
++#define	copyin_str(dest, addr, obj) \
++    (copyinto((uintptr_t)pystr_addr(addr), obj->ob_size, (dest)))
++#define	add_str(addr, obj) \
++    copyin_str(this->result + this->pos, addr, obj); \
++    this->pos += obj->ob_size; \
++    this->result[this->pos] = '\0';
++#define	add_digit(nr, div) ((nr / div) ? \
++    (this->result[this->pos++] = '0' + ((nr / div) % 10)) : \
++    (this->result[this->pos] = '\0'))
++#define	add_char(c) (this->result[this->pos++] = c)
++
++probe /at_evalframe(arg0)/ 
++{
++	this->framep = *(uintptr_t *)copyin(frame_ptr_addr, sizeof(uintptr_t));
++	this->frameo = copyin_obj(this->framep, PyFrameObject);
++	this->codep = this->frameo->f_code;
++	this->lineno = this->frameo->f_calllineno;
++	this->codeo = copyin_obj(this->codep, PyCodeObject);
++	this->filenamep = this->codeo->co_filename;
++	this->fnamep = this->codeo->co_name;
++	this->filenameo = copyin_obj(this->filenamep, PyStringObject);
++	this->fnameo = copyin_obj(this->fnamep, PyStringObject);
++
++	this->len = 1 + this->filenameo->ob_size + 1 + 5 + 2 +
++	    this->fnameo->ob_size + 1 + 1;
++
++	this->result = (char *)alloca(this->len);
++	this->pos = 0;
++
++	add_char('@');
++	add_str(this->filenamep, this->filenameo);
++	add_char(':');
++	add_digit(this->lineno, 10000);
++	add_digit(this->lineno, 1000);
++	add_digit(this->lineno, 100);
++	add_digit(this->lineno, 10);
++	add_digit(this->lineno, 1);
++	add_char(' ');
++	add_char('(');
++	add_str(this->fnamep, this->fnameo);
++	add_char(')');
++	this->result[this->pos] = '\0';
++
++	print_result(stringof(this->result));
++}
++
++probe /!at_evalframe(arg0)/
++{
++	NULL;
++}
+diff --git Python-2.6.4/Python/python.d Python-2.6.4/Python/python.d
+new file mode 100644
+--- /dev/null
++++ Python-2.6.4/Python/python.d
[email protected]@ -0,0 +1,10 @@
++provider python {
++	probe function__entry(const char *, const char *, int);
++	probe function__return(const char *, const char *, int);
++};
++
++#pragma D attributes Evolving/Evolving/Common provider python provider
++#pragma D attributes Private/Private/Common provider python module
++#pragma D attributes Private/Private/Common provider python function
++#pragma D attributes Evolving/Evolving/Common provider python name
++#pragma D attributes Evolving/Evolving/Common provider python args
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-08-ctypes.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,28 @@
+diff --git Python-2.6.4/Modules/_ctypes/callproc.c Python-2.6.4/Modules/_ctypes/callproc.c
+--- Python-2.6.4/Modules/_ctypes/callproc.c
++++ Python-2.6.4/Modules/_ctypes/callproc.c
[email protected]@ -73,6 +73,8 @@
+ #include <malloc.h>
+ #endif
+ 
++#include <alloca.h>
++
+ #include <ffi.h>
+ #include "ctypes.h"
+ 
+diff --git Python-2.6.4/Modules/_ctypes/libffi/src/x86/ffitarget.h Python-2.6.4/Modules/_ctypes/libffi/src/x86/ffitarget.h
+--- Python-2.6.4/Modules/_ctypes/libffi/src/x86/ffitarget.h
++++ Python-2.6.4/Modules/_ctypes/libffi/src/x86/ffitarget.h
[email protected]@ -54,10 +54,10 @@
+ #endif
+ 
+   /* ---- Intel x86 and AMD x86-64 - */
+-#if !defined(X86_WIN32) && (defined(__i386__) || defined(__x86_64__))
++#if !defined(X86_WIN32) && (defined(__i386__) || defined(__i386) || defined(__x86_64__))
+   FFI_SYSV,
+   FFI_UNIX64,   /* Unix variants all use the same ABI for x86-64  */
+-#ifdef __i386__
++#if defined (__i386__) || defined (__i386)
+   FFI_DEFAULT_ABI = FFI_SYSV,
+ #else
+   FFI_DEFAULT_ABI = FFI_UNIX64,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python26/Python26-09-ucred.patch	Wed Feb 23 10:37:11 2011 -0800
@@ -0,0 +1,2427 @@
+diff --git Python-2.6.4/Modules/ucred.c Python-2.6.4/Modules/ucred.c
+new file mode 100644
+--- /dev/null
++++ Python-2.6.4/Modules/ucred.c
[email protected]@ -0,0 +1,391 @@
++/*
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to
++ * deal in the Software without restriction, including without limitation the
++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++ * DEALINGS IN THE SOFTWARE.
++ *
++ * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
++ * Use is subject to license terms.
++ */
++
++#include <Python.h>
++
++#include <stdio.h>
++#include <priv.h>
++#include <ucred.h>
++#include <ctype.h>
++#include <tsol/label.h>
++
++typedef struct {
++	PyObject_HEAD
++	ucred_t *ucred;
++} pyucred_t;
++
++#define pyucred_getlongid(name, type)				\
++	static PyObject *					\
++	pyucred_get##name(pyucred_t *uc)			\
++	{ 							\
++		type val;					\
++								\
++		if (uc->ucred == NULL) {			\
++			errno = EINVAL;				\
++			PyErr_SetFromErrno(PyExc_OSError);	\
++			return (NULL);				\
++		}						\
++								\
++		if ((val = ucred_get##name(uc->ucred)) == -1) {	\
++			PyErr_SetFromErrno(PyExc_OSError);	\
++			return (NULL);				\
++		}						\
++								\
++		return (Py_BuildValue("l", (long)val));		\
++	}
++
++pyucred_getlongid(euid, uid_t)
++pyucred_getlongid(ruid, uid_t)
++pyucred_getlongid(suid, uid_t)
++pyucred_getlongid(egid, gid_t)
++pyucred_getlongid(rgid, gid_t)
++pyucred_getlongid(sgid, gid_t)
++pyucred_getlongid(pid, pid_t)
++pyucred_getlongid(projid, projid_t)
++pyucred_getlongid(zoneid, zoneid_t)
++
++static PyObject *
++pyucred_getgroups(pyucred_t *uc)
++{
++	const gid_t *groups;
++	PyObject *list;
++	int len;
++	int i;
++
++	if (uc->ucred == NULL) {
++		errno = EINVAL;
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	if ((len = ucred_getgroups(uc->ucred, &groups)) == -1) {
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	if ((list = PyList_New(len)) == NULL)
++		return (NULL);
++
++	for (i = 0; i < len; i++) {
++		PyObject *gid = Py_BuildValue("l", (long)groups[i]);
++		if (PyList_SetItem(list, i, gid) == -1)
++			return (NULL);
++	}
++
++	return (list);
++}
++
++static PyObject *
++pyucred_getlabel(pyucred_t *uc)
++{
++	m_label_t *label;
++	PyObject *ret;
++	char *str;
++
++	if (uc->ucred == NULL) {
++		errno = EINVAL;
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	label = ucred_getlabel(uc->ucred);
++	if (label == NULL)
++		return (Py_BuildValue("s", ""));
++
++	if (label_to_str(label, &str, M_LABEL, DEF_NAMES) == -1) {
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	ret = Py_BuildValue("s", str);
++	free(str);
++	return (ret);
++}
++
++static PyObject *
++pyucred_getpflags(pyucred_t *uc, PyObject *args, PyObject *kwargs)
++{
++	static char *kwlist[] = { "flags", NULL };
++	uint_t flags;
++
++	if (uc->ucred == NULL) {
++		errno = EINVAL;
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i", kwlist,
++	    &flags))
++		return (NULL);
++
++	if ((flags = ucred_getpflags(uc->ucred, flags)) == (uint_t)-1) {
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	return (Py_BuildValue("i", flags));
++}
++
++static PyObject *
++pyucred_has_priv(pyucred_t *uc, PyObject *args, PyObject *kwargs)
++{
++	static char *kwlist[] = { "set", "priv", NULL };
++	const priv_set_t *privs;
++	const char *set;
++	const char *priv;
++
++	if (uc->ucred == NULL) {
++		errno = EINVAL;
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ss", kwlist,
++	    &set, &priv))
++		return (NULL);
++
++	if ((privs = ucred_getprivset(uc->ucred, set)) == NULL) {
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	if (priv_ismember(privs, priv)) {
++		Py_INCREF(Py_True);
++		return Py_True;
++	}
++
++	Py_INCREF(Py_False);
++	return Py_False;
++}
++
++PyDoc_STRVAR(pyucred_getlabel_doc,
++    "getlabel() -> string\n"
++    "\n"
++    "Return the Trusted Extensions label string, or an "
++    "empty string if not available. The label string is "
++    "converted using the default name and M_LABEL (human-readable). "
++    "Raises OSError. See label_to_str(3TSOL).");
++PyDoc_STRVAR(pyucred_getpflags_doc,
++    "getpflags(flags) -> int\n"
++    "\n"
++    "Return the values of the specified privilege flags.");
++PyDoc_STRVAR(pyucred_has_priv_doc,
++    "has_priv(set, priv) -> bool\n"
++    "\n"
++    "Return true if the given privilege is set in the "
++    "specified set. Raises OSError if the set or privilege is "
++    "invalid, or a problem occurs.\n"
++    "\n"
++    "Currently, the following privilege sets are defined, as "
++    "described in privileges(5):\n"
++    "\n"
++    "Effective\n"
++    "Permitted\n"
++    "Inheritable\n"
++    "Limit\n");
++
++static PyMethodDef pyucred_methods[] = {
++	{ "geteuid", (PyCFunction)pyucred_geteuid, METH_NOARGS,
++	    "Return the effective user ID." },
++	{ "getruid", (PyCFunction)pyucred_getruid, METH_NOARGS,
++	    "Return the real user ID." },
++	{ "getsuid", (PyCFunction)pyucred_getsuid, METH_NOARGS,
++	    "Return the saved user ID." },
++	{ "getegid", (PyCFunction)pyucred_getegid, METH_NOARGS,
++	    "Return the effective group ID." },
++	{ "getrgid", (PyCFunction)pyucred_getrgid, METH_NOARGS,
++	    "Return the real group ID." },
++	{ "getsgid", (PyCFunction)pyucred_getsgid, METH_NOARGS,
++	    "Return the saved group ID." },
++	{ "getpid", (PyCFunction)pyucred_getpid, METH_NOARGS,
++	    "Return the effective user ID." },
++	{ "getprojid", (PyCFunction)pyucred_getprojid, METH_NOARGS,
++	    "Return the project ID." },
++	{ "getzoneid", (PyCFunction)pyucred_getzoneid, METH_NOARGS,
++	    "Return the zone ID." },
++	{ "getgroups", (PyCFunction)pyucred_getgroups, METH_NOARGS,
++	    "Return a list of group IDs." },
++	{ "getlabel", (PyCFunction)pyucred_getlabel, METH_NOARGS,
++	    pyucred_getlabel_doc },
++	{ "getpflags", (PyCFunction)pyucred_getpflags,
++	    METH_VARARGS|METH_KEYWORDS, pyucred_getpflags_doc },
++	{ "has_priv", (PyCFunction)pyucred_has_priv,
++	    METH_VARARGS|METH_KEYWORDS, pyucred_has_priv_doc },
++	{ NULL }
++};
++
++static int
++pyucred_init(PyObject *self, PyObject *args, PyObject *kwargs)
++{
++	pyucred_t *uc = (pyucred_t *)self;
++	uc->ucred = NULL;
++	return (0);
++}
++
++static void
++pyucred_dealloc(PyObject *self)
++{
++	pyucred_t *uc = (pyucred_t *)self;
++	if (uc->ucred != NULL)
++		ucred_free(uc->ucred);
++	self->ob_type->tp_free(self);
++}
++
++static PyTypeObject pyucred_type = {
++	PyObject_HEAD_INIT(NULL)
++	0,                         /*ob_size*/
++	"ucred.ucred",             /*tp_name*/
++	sizeof (pyucred_t),        /*tp_basicsize*/
++	0,                         /*tp_itemsize*/
++	pyucred_dealloc,           /*tp_dealloc*/
++	0,                         /*tp_print*/
++	0,                         /*tp_getattr*/
++	0,                         /*tp_setattr*/
++	0,                         /*tp_compare*/
++	0,                         /*tp_repr*/
++	0,                         /*tp_as_number*/
++	0,                         /*tp_as_sequence*/
++	0,                         /*tp_as_mapping*/
++	0,                         /*tp_hash */
++	0,                         /*tp_call*/
++	0,                         /*tp_str*/
++	0,                         /*tp_getattro*/
++	0,                         /*tp_setattro*/
++	0,                         /*tp_as_buffer*/
++	Py_TPFLAGS_DEFAULT,        /*tp_flags*/
++	"user credentials",        /*tp_doc */
++	0,		           /* tp_traverse */
++	0,		           /* tp_clear */
++	0,		           /* tp_richcompare */
++	0,		           /* tp_weaklistoffset */
++	0,		           /* tp_iter */
++	0,		           /* tp_iternext */
++	pyucred_methods,           /* tp_methods */
++	0,                         /* tp_members */
++	0,                         /* tp_getset */
++	0,                         /* tp_base */
++	0,                         /* tp_dict */
++	0,                         /* tp_descr_get */
++	0,                         /* tp_descr_set */
++	0,                         /* tp_dictoffset */
++	(initproc)pyucred_init,    /* tp_init */
++	0,                         /* tp_alloc */
++	0,                         /* tp_new */
++};
++
++static PyObject *
++pyucred_new(const ucred_t *uc)
++{
++	pyucred_t *self;
++
++	self = (pyucred_t *)PyObject_CallObject((PyObject *)&pyucred_type, NULL);
++
++	if (self == NULL)
++		return (NULL);
++
++	self->ucred = (ucred_t *)uc;
++
++	return ((PyObject *)self);
++}
++
++static PyObject *
++pyucred_get(PyObject *o, PyObject *args, PyObject *kwargs)
++{
++	static char *kwlist[] = { "pid", NULL };
++	ucred_t *ucred = NULL;
++	int pid;
++
++	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i", kwlist,
++	    &pid))
++		return (NULL);
++
++	ucred = ucred_get(pid);
++
++	if (ucred == NULL) {
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	return (pyucred_new(ucred));
++}
++
++static PyObject *
++pyucred_getpeer(PyObject *o, PyObject *args, PyObject *kwargs)
++{
++	static char *kwlist[] = { "fd", NULL };
++	ucred_t *ucred = NULL;
++	int fd;
++
++	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i", kwlist,
++	    &fd))
++		return (NULL);
++
++	if (getpeerucred(fd, &ucred) == -1) {
++		PyErr_SetFromErrno(PyExc_OSError);
++		return (NULL);
++	}
++
++	return (pyucred_new(ucred));
++}
++
++PyDoc_STRVAR(pyucred_get_doc,
++    "get(pid) -> ucred\n"
++    "\n"
++    "Return the credentials of the specified process ID. "
++    "Raises OSError. See ucred_get(3C).");
++PyDoc_STRVAR(pyucred_getpeer_doc,
++    "getpeer(fd) -> ucred\n"
++    "\n"
++    "Return the credentials of the peer endpoint of a "
++    "connection-oriented socket (SOCK_STREAM) or STREAM fd "
++    "at the time the endpoint was created or the connection "
++    "was established. Raises OSError. See getpeerucred(3C).");
++
++static struct PyMethodDef pyucred_module_methods[] = {
++	{ "get", (PyCFunction) pyucred_get,
++	  METH_VARARGS|METH_KEYWORDS, pyucred_get_doc },
++	{ "getpeer", (PyCFunction) pyucred_getpeer,
++	  METH_VARARGS|METH_KEYWORDS, pyucred_getpeer_doc },
++	{ NULL, NULL, 0, NULL }
++};
++
++PyDoc_STRVAR(pyucred_module_doc,
++    "This module provides an interface to the user credential access "
++    "methods, obtainable either by process ID or file descriptor.");
++   
++PyMODINIT_FUNC
++initucred(void)
++{
++	PyObject *m;
++
++	m = Py_InitModule3("ucred", pyucred_module_methods,
++	    pyucred_module_doc);
++
++	pyucred_type.tp_new = PyType_GenericNew;
++	if (PyType_Ready(&pyucred_type) < 0)
++		return;
++
++	Py_INCREF(&pyucred_type);
++
++	PyModule_AddObject(m, "ucred", (PyObject *)&pyucred_type);
++}
+diff --git Python-2.6.4/setup.py Python-2.6.4/setup.py
+--- Python-2.6.4/setup.py
++++ Python-2.6.4/setup.py
[email protected]@ -1277,6 +1277,13 @@
+         else:
+             missing.append('dl')
+ 
++        # ucred module (Solaris)
++        ucred_inc = find_file('ucred.h', [], inc_dirs)
++        tsol_inc = find_file('tsol/label.h', [], inc_dirs)
++        if ucred_inc is not None and tsol_inc is not None:
++            exts.append( Extension('ucred', ['ucred.c'],
++                                   libraries = ['tsol']) )
++
+         # Thomas Heller's _ctypes module
+         self.detect_ctypes(inc_dirs, lib_dirs)
+ 
+diff --git Python-2.6.4/setup.py.orig Python-2.6.4/setup.py.orig
+new file mode 100644
+--- /dev/null
++++ Python-2.6.4/setup.py.orig
[email protected]@ -0,0 +1,1958 @@
++# Autodetecting setup.py script for building the Python extensions
++#
++
++__version__ = "$Revision: 75282 $"
++
++import sys, os, imp, re, optparse
++from glob import glob
++from platform import machine as platform_machine
++
++from distutils import log
++from distutils import sysconfig
++from distutils import text_file
++from distutils.errors import *
++from distutils.core import Extension, setup
++from distutils.command.build_ext import build_ext
++from distutils.command.install import install
++from distutils.command.install_lib import install_lib
++
++# This global variable is used to hold the list of modules to be disabled.
++disabled_module_list = []
++
++def add_dir_to_list(dirlist, dir):
++    """Add the directory 'dir' to the list 'dirlist' (at the front) if
++    1) 'dir' is not already in 'dirlist'
++    2) 'dir' actually exists, and is a directory."""
++    if dir is not None and os.path.isdir(dir) and dir not in dirlist:
++        dirlist.insert(0, dir)
++
++def find_file(filename, std_dirs, paths):
++    """Searches for the directory where a given file is located,
++    and returns a possibly-empty list of additional directories, or None
++    if the file couldn't be found at all.
++
++    'filename' is the name of a file, such as readline.h or libcrypto.a.
++    'std_dirs' is the list of standard system directories; if the
++        file is found in one of them, no additional directives are needed.
++    'paths' is a list of additional locations to check; if the file is
++        found in one of them, the resulting list will contain the directory.
++    """
++
++    # Check the standard locations
++    for dir in std_dirs:
++        f = os.path.join(dir, filename)
++        if os.path.exists(f): return []
++
++    # Check the additional directories
++    for dir in paths:
++        f = os.path.join(dir, filename)
++        if os.path.exists(f):
++            return [dir]
++
++    # Not found anywhere
++    return None
++
++def find_library_file(compiler, libname, std_dirs, paths):
++    result = compiler.find_library_file(std_dirs + paths, libname)
++    if result is None:
++        return None
++
++    # Check whether the found file is in one of the standard directories
++    dirname = os.path.dirname(result)
++    for p in std_dirs:
++        # Ensure path doesn't end with path separator
++        p = p.rstrip(os.sep)
++        if p == dirname:
++            return [ ]
++
++    # Otherwise, it must have been in one of the additional directories,
++    # so we have to figure out which one.
++    for p in paths:
++        # Ensure path doesn't end with path separator
++        p = p.rstrip(os.sep)
++        if p == dirname:
++            return [p]
++    else:
++        assert False, "Internal error: Path not found in std_dirs or paths"
++
++def module_enabled(extlist, modname):
++    """Returns whether the module 'modname' is present in the list
++    of extensions 'extlist'."""
++    extlist = [ext for ext in extlist if ext.name == modname]
++    return len(extlist)
++
++def find_module_file(module, dirlist):
++    """Find a module in a set of possible folders. If it is not found
++    return the unadorned filename"""
++    list = find_file(module, [], dirlist)
++    if not list:
++        return module
++    if len(list) > 1:
++        log.info("WARNING: multiple copies of %s found"%module)
++    return os.path.join(list[0], module)
++
++class PyBuildExt(build_ext):
++
++    def __init__(self, dist):
++        build_ext.__init__(self, dist)
++        self.failed = []
++
++    def build_extensions(self):
++
++        # Detect which modules should be compiled
++        missing = self.detect_modules()
++
++        # Remove modules that are present on the disabled list
++        extensions = [ext for ext in self.extensions
++                      if ext.name not in disabled_module_list]
++        # move ctypes to the end, it depends on other modules
++        ext_map = dict((ext.name, i) for i, ext in enumerate(extensions))
++        if "_ctypes" in ext_map:
++            ctypes = extensions.pop(ext_map["_ctypes"])
++            extensions.append(ctypes)
++        self.extensions = extensions
++
++        # Fix up the autodetected modules, prefixing all the source files
++        # with Modules/ and adding Python's include directory to the path.
++        (srcdir,) = sysconfig.get_config_vars('srcdir')
++        if not srcdir:
++            # Maybe running on Windows but not using CYGWIN?
++            raise ValueError("No source directory; cannot proceed.")
++
++        # Figure out the location of the source code for extension modules
++        # (This logic is copied in distutils.test.test_sysconfig,
++        # so building in a separate directory does not break test_distutils.)
++        moddir = os.path.join(os.getcwd(), srcdir, 'Modules')
++        moddir = os.path.normpath(moddir)
++        srcdir, tail = os.path.split(moddir)
++        srcdir = os.path.normpath(srcdir)
++        moddir = os.path.normpath(moddir)
++
++        moddirlist = [moddir]
++        incdirlist = ['./Include']
++
++        # Platform-dependent module source and include directories
++        platform = self.get_platform()
++        if platform in ('darwin', 'mac') and ("--disable-toolbox-glue" not in
++            sysconfig.get_config_var("CONFIG_ARGS")):
++            # Mac OS X also includes some mac-specific modules
++            macmoddir = os.path.join(os.getcwd(), srcdir, 'Mac/Modules')
++            moddirlist.append(macmoddir)
++            incdirlist.append('./Mac/Include')
++
++        alldirlist = moddirlist + incdirlist
++
++        # Fix up the paths for scripts, too
++        self.distribution.scripts = [os.path.join(srcdir, filename)
++                                     for filename in self.distribution.scripts]
++
++        # Python header files
++        headers = glob("Include/*.h") + ["pyconfig.h"]
++
++        for ext in self.extensions[:]:
++            ext.sources = [ find_module_file(filename, moddirlist)
++                            for filename in ext.sources ]
++            if ext.depends is not None:
++                ext.depends = [find_module_file(filename, alldirlist)
++                               for filename in ext.depends]
++            else:
++                ext.depends = []
++            # re-compile extensions if a header file has been changed
++            ext.depends.extend(headers)
++
++            ext.include_dirs.append( '.' ) # to get config.h
++            for incdir in incdirlist:
++                ext.include_dirs.append( os.path.join(srcdir, incdir) )
++
++            # If a module has already been built statically,
++            # don't build it here
++            if ext.name in sys.builtin_module_names:
++                self.extensions.remove(ext)
++
++        if platform != 'mac':
++            # Parse Modules/Setup and Modules/Setup.local to figure out which
++            # modules are turned on in the file.
++            remove_modules = []
++            for filename in ('Modules/Setup', 'Modules/Setup.local'):
++                input = text_file.TextFile(filename, join_lines=1)
++                while 1:
++                    line = input.readline()
++                    if not line: break
++                    line = line.split()
++                    remove_modules.append(line[0])
++                input.close()
++
++            for ext in self.extensions[:]:
++                if ext.name in remove_modules:
++                    self.extensions.remove(ext)
++
++        # When you run "make CC=altcc" or something similar, you really want
++        # those environment variables passed into the setup.py phase.  Here's
++        # a small set of useful ones.
++        compiler = os.environ.get('CC')
++        args = {}
++        # unfortunately, distutils doesn't let us provide separate C and C++
++        # compilers
++        if compiler is not None:
++            (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
++            args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
++        self.compiler.set_executables(**args)
++
++        build_ext.build_extensions(self)
++
++        longest = max([len(e.name) for e in self.extensions])
++        if self.failed:
++            longest = max(longest, max([len(name) for name in self.failed]))
++
++        def print_three_column(lst):
++            lst.sort(key=str.lower)
++            # guarantee zip() doesn't drop anything
++            while len(lst) % 3:
++                lst.append("")
++            for e, f, g in zip(lst[::3], lst[1::3], lst[2::3]):
++                print "%-*s   %-*s   %-*s" % (longest, e, longest, f,
++                                              longest, g)
++
++        if missing:
++            print
++            print "Failed to find the necessary bits to build these modules:"
++            print_three_column(missing)
++            print ("To find the necessary bits, look in setup.py in"
++                   " detect_modules() for the module's name.")
++            print
++
++        if self.failed:
++            failed = self.failed[:]
++            print
++            print "Failed to build these modules:"
++            print_three_column(failed)
++            print
++
++    def build_extension(self, ext):
++
++        if ext.name == '_ctypes':
++            if not self.configure_ctypes(ext):
++                return
++
++        try:
++            build_ext.build_extension(self, ext)
++        except (CCompilerError, DistutilsError), why:
++            self.announce('WARNING: building of extension "%s" failed: %s' %
++                          (ext.name, sys.exc_info()[1]))
++            self.failed.append(ext.name)
++            return
++        # Workaround for Mac OS X: The Carbon-based modules cannot be
++        # reliably imported into a command-line Python
++        if 'Carbon' in ext.extra_link_args:
++            self.announce(
++                'WARNING: skipping import check for Carbon-based "%s"' %
++                ext.name)
++            return
++
++        if self.get_platform() == 'darwin' and (
++                sys.maxint > 2**32 and '-arch' in ext.extra_link_args):
++            # Don't bother doing an import check when an extension was
++            # build with an explicit '-arch' flag on OSX. That's currently
++            # only used to build 32-bit only extensions in a 4-way
++            # universal build and loading 32-bit code into a 64-bit
++            # process will fail.
++            self.announce(
++                'WARNING: skipping import check for "%s"' %
++                ext.name)
++            return
++
++        # Workaround for Cygwin: Cygwin currently has fork issues when many
++        # modules have been imported
++        if self.get_platform() == 'cygwin':
++            self.announce('WARNING: skipping import check for Cygwin-based "%s"'
++                % ext.name)
++            return
++        ext_filename = os.path.join(
++            self.build_lib,
++            self.get_ext_filename(self.get_ext_fullname(ext.name)))
++        try:
++            imp.load_dynamic(ext.name, ext_filename)
++        except ImportError, why:
++            self.failed.append(ext.name)
++            self.announce('*** WARNING: renaming "%s" since importing it'
++                          ' failed: %s' % (ext.name, why), level=3)
++            assert not self.inplace
++            basename, tail = os.path.splitext(ext_filename)
++            newname = basename + "_failed" + tail
++            if os.path.exists(newname):
++                os.remove(newname)
++            os.rename(ext_filename, newname)
++
++            # XXX -- This relies on a Vile HACK in
++            # distutils.command.build_ext.build_extension().  The
++            # _built_objects attribute is stored there strictly for
++            # use here.
++            # If there is a failure, _built_objects may not be there,
++            # so catch the AttributeError and move on.
++            try:
++                for filename in self._built_objects:
++                    os.remove(filename)
++            except AttributeError:
++                self.announce('unable to remove files (ignored)')
++        except:
++            exc_type, why, tb = sys.exc_info()
++            self.announce('*** WARNING: importing extension "%s" '
++                          'failed with %s: %s' % (ext.name, exc_type, why),
++                          level=3)
++            self.failed.append(ext.name)
++
++    def get_platform(self):
++        # Get value of sys.platform
++        for platform in ['cygwin', 'beos', 'darwin', 'atheos', 'osf1']:
++            if sys.platform.startswith(platform):
++                return platform
++        return sys.platform
++
++    def detect_modules(self):
++        if sys.platform != 'sunos5':
++            # Ensure that /usr/local is always used
++            add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
++            add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
++        # Add paths specified in the environment variables LDFLAGS and
++        # CPPFLAGS for header and library files.
++        # We must get the values from the Makefile and not the environment
++        # directly since an inconsistently reproducible issue comes up where
++        # the environment variable is not set even though the value were passed
++        # into configure and stored in the Makefile (issue found on OS X 10.3).
++        for env_var, arg_name, dir_list in (
++                ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
++                ('LDFLAGS', '-L', self.compiler.library_dirs),
++                ('CPPFLAGS', '-I', self.compiler.include_dirs)):
++            env_val = sysconfig.get_config_var(env_var)
++            if env_val:
++                # To prevent optparse from raising an exception about any
++                # options in env_val that it doesn't know about we strip out
++                # all double dashes and any dashes followed by a character
++                # that is not for the option we are dealing with.
++                #
++                # Please note that order of the regex is important!  We must
++                # strip out double-dashes first so that we don't end up with
++                # substituting "--Long" to "-Long" and thus lead to "ong" being
++                # used for a library directory.
++                env_val = re.sub(r'(^|\s+)-(-|(?!%s))' % arg_name[1],
++                                 ' ', env_val)
++                parser = optparse.OptionParser()
++                # Make sure that allowing args interspersed with options is
++                # allowed
++                parser.allow_interspersed_args = True
++                parser.error = lambda msg: None
++                parser.add_option(arg_name, dest="dirs", action="append")
++                options = parser.parse_args(env_val.split())[0]
++                if options.dirs:
++                    for directory in reversed(options.dirs):
++                        add_dir_to_list(dir_list, directory)
++
++        if os.path.normpath(sys.prefix) != '/usr':
++            add_dir_to_list(self.compiler.library_dirs,
++                            sysconfig.get_config_var("LIBDIR"))
++            add_dir_to_list(self.compiler.include_dirs,
++                            sysconfig.get_config_var("INCLUDEDIR"))
++
++        try:
++            have_unicode = unicode
++        except NameError:
++            have_unicode = 0
++
++        # lib_dirs and inc_dirs are used to search for files;
++        # if a file is found in one of those directories, it can
++        # be assumed that no additional -I,-L directives are needed.
++        lib_dirs = self.compiler.library_dirs + [
++            '/lib64', '/usr/lib64',
++            '/lib', '/usr/lib',
++            ]
++        inc_dirs = self.compiler.include_dirs + ['/usr/include']
++        exts = []
++        missing = []
++
++        config_h = sysconfig.get_config_h_filename()
++        config_h_vars = sysconfig.parse_config_h(open(config_h))
++
++        platform = self.get_platform()
++        (srcdir,) = sysconfig.get_config_vars('srcdir')
++
++        # Check for AtheOS which has libraries in non-standard locations
++        if platform == 'atheos':
++            lib_dirs += ['/system/libs', '/atheos/autolnk/lib']
++            lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
++            inc_dirs += ['/system/include', '/atheos/autolnk/include']
++            inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
++
++        # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
++        if platform in ['osf1', 'unixware7', 'openunix8']:
++            lib_dirs += ['/usr/ccs/lib']
++
++        if platform == 'darwin':
++            # This should work on any unixy platform ;-)
++            # If the user has bothered specifying additional -I and -L flags
++            # in OPT and LDFLAGS we might as well use them here.
++            #   NOTE: using shlex.split would technically be more correct, but
++            # also gives a bootstrap problem. Let's hope nobody uses directories
++            # with whitespace in the name to store libraries.
++            cflags, ldflags = sysconfig.get_config_vars(
++                    'CFLAGS', 'LDFLAGS')
++            for item in cflags.split():
++                if item.startswith('-I'):
++                    inc_dirs.append(item[2:])
++
++            for item in ldflags.split():
++                if item.startswith('-L'):
++                    lib_dirs.append(item[2:])
++
++        # Check for MacOS X, which doesn't need libm.a at all
++        math_libs = ['m']
++        if platform in ['darwin', 'beos', 'mac']:
++            math_libs = []
++
++        # XXX Omitted modules: gl, pure, dl, SGI-specific modules
++
++        #
++        # The following modules are all pretty straightforward, and compile
++        # on pretty much any POSIXish platform.
++        #
++
++        # Some modules that are normally always on:
++        exts.append( Extension('_weakref', ['_weakref.c']) )
++
++        # array objects
++        exts.append( Extension('array', ['arraymodule.c']) )
++        # complex math library functions
++        exts.append( Extension('cmath', ['cmathmodule.c'],
++                               libraries=math_libs) )
++
++        # math library functions, e.g. sin()
++        exts.append( Extension('math',  ['mathmodule.c'],
++                               libraries=math_libs) )
++        # fast string operations implemented in C
++        exts.append( Extension('strop', ['stropmodule.c']) )
++        # time operations and variables
++        exts.append( Extension('time', ['timemodule.c'],
++                               libraries=math_libs) )
++        exts.append( Extension('datetime', ['datetimemodule.c', 'timemodule.c'],
++                               libraries=math_libs) )
++        # fast iterator tools implemented in C
++        exts.append( Extension("itertools", ["itertoolsmodule.c"]) )
++        # code that will be builtins in the future, but conflict with the
++        #  current builtins
++        exts.append( Extension('future_builtins', ['future_builtins.c']) )
++        # random number generator implemented in C
++        exts.append( Extension("_random", ["_randommodule.c"]) )
++        # high-performance collections
++        exts.append( Extension("_collections", ["_collectionsmodule.c"]) )
++        # bisect
++        exts.append( Extension("_bisect", ["_bisectmodule.c"]) )
++        # heapq
++        exts.append( Extension("_heapq", ["_heapqmodule.c"]) )
++        # operator.add() and similar goodies
++        exts.append( Extension('operator', ['operator.c']) )
++        # Python 3.0 _fileio module
++        exts.append( Extension("_fileio", ["_fileio.c"]) )
++        # Python 3.0 _bytesio module
++        exts.append( Extension("_bytesio", ["_bytesio.c"]) )
++        # _functools
++        exts.append( Extension("_functools", ["_functoolsmodule.c"]) )
++        # _json speedups
++        exts.append( Extension("_json", ["_json.c"]) )
++        # Python C API test module
++        exts.append( Extension('_testcapi', ['_testcapimodule.c'],
++                               depends=['testcapi_long.h']) )
++        # profilers (_lsprof is for cProfile.py)
++        exts.append( Extension('_hotshot', ['_hotshot.c']) )
++        exts.append( Extension('_lsprof', ['_lsprof.c', 'rotatingtree.c']) )
++        # static Unicode character database
++        if have_unicode:
++            exts.append( Extension('unicodedata', ['unicodedata.c']) )
++        else:
++            missing.append('unicodedata')
++        # access to ISO C locale support
++        data = open('pyconfig.h').read()
++        m = re.search(r"#s*define\s+WITH_LIBINTL\s+1\s*", data)
++        if m is not None:
++            locale_libs = ['intl']
++        else:
++            locale_libs = []
++        if platform == 'darwin':
++            locale_extra_link_args = ['-framework', 'CoreFoundation']
++        else:
++            locale_extra_link_args = []
++
++
++        exts.append( Extension('_locale', ['_localemodule.c'],
++                               libraries=locale_libs,
++                               extra_link_args=locale_extra_link_args) )
++
++        # Modules with some UNIX dependencies -- on by default:
++        # (If you have a really backward UNIX, select and socket may not be
++        # supported...)
++
++        # fcntl(2) and ioctl(2)
++        exts.append( Extension('fcntl', ['fcntlmodule.c']) )
++        if platform not in ['mac']:
++            # pwd(3)
++            exts.append( Extension('pwd', ['pwdmodule.c']) )
++            # grp(3)
++            exts.append( Extension('grp', ['grpmodule.c']) )
++            # spwd, shadow passwords
++            if (config_h_vars.get('HAVE_GETSPNAM', False) or
++                    config_h_vars.get('HAVE_GETSPENT', False)):
++                exts.append( Extension('spwd', ['spwdmodule.c']) )
++            else:
++                missing.append('spwd')
++        else:
++            missing.extend(['pwd', 'grp', 'spwd'])
++
++        # select(2); not on ancient System V
++        exts.append( Extension('select', ['selectmodule.c']) )
++
++        # Fred Drake's interface to the Python parser
++        exts.append( Extension('parser', ['parsermodule.c']) )
++
++        # cStringIO and cPickle
++        exts.append( Extension('cStringIO', ['cStringIO.c']) )
++        exts.append( Extension('cPickle', ['cPickle.c']) )
++
++        # Memory-mapped files (also works on Win32).
++        if platform not in ['atheos', 'mac']:
++            exts.append( Extension('mmap', ['mmapmodule.c']) )
++        else:
++            missing.append('mmap')
++
++        # Lance Ellinghaus's syslog module
++        if platform not in ['mac']:
++            # syslog daemon interface
++            exts.append( Extension('syslog', ['syslogmodule.c']) )
++        else:
++            missing.append('syslog')
++
++        # George Neville-Neil's timing module:
++        # Deprecated in PEP 4 http://www.python.org/peps/pep-0004.html
++        # http://mail.python.org/pipermail/python-dev/2006-January/060023.html
++        #exts.append( Extension('timing', ['timingmodule.c']) )
++
++        #
++        # Here ends the simple stuff.  From here on, modules need certain
++        # libraries, are platform-specific, or present other surprises.
++        #
++
++        # Multimedia modules
++        # These don't work for 64-bit platforms!!!
++        # These represent audio samples or images as strings:
++
++        # Operations on audio samples
++        # According to #993173, this one should actually work fine on
++        # 64-bit platforms.
++        exts.append( Extension('audioop', ['audioop.c']) )
++
++        # Disabled on 64-bit platforms
++        if sys.maxint != 9223372036854775807L:
++            # Operations on images
++            exts.append( Extension('imageop', ['imageop.c']) )
++        else:
++            missing.extend(['imageop'])
++
++        # readline
++        do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
++        if platform == 'darwin': # and os.uname()[2] < '9.':
++            # MacOSX 10.4 has a broken readline. Don't try to build
++            # the readline module unless the user has installed a fixed
++            # readline package
++            # FIXME: The readline emulation on 10.5 is better, but the
++            # readline module doesn't compile out of the box.
++            if find_file('readline/rlconf.h', inc_dirs, []) is None:
++                do_readline = False
++        if do_readline:
++            if sys.platform == 'darwin':
++                # In every directory on the search path search for a dynamic
++                # library and then a static library, instead of first looking
++                # for dynamic libraries on the entiry path.
++                # This way a staticly linked custom readline gets picked up
++                # before the (broken) dynamic library in /usr/lib.
++                readline_extra_link_args = ('-Wl,-search_paths_first',)
++            else:
++                readline_extra_link_args = ()
++
++            readline_libs = ['readline']
++            if self.compiler.find_library_file(lib_dirs,
++                                                 'ncursesw'):
++                readline_libs.append('ncursesw')
++            elif self.compiler.find_library_file(lib_dirs,
++                                                 'ncurses'):
++                readline_libs.append('ncurses')
++            elif self.compiler.find_library_file(lib_dirs, 'curses'):
++                readline_libs.append('curses')
++            elif self.compiler.find_library_file(lib_dirs +
++                                               ['/usr/lib/termcap'],
++                                               'termcap'):
++                readline_libs.append('termcap')
++            exts.append( Extension('readline', ['readline.c'],
++                                   library_dirs=['/usr/lib/termcap'],
++                                   extra_link_args=readline_extra_link_args,
++                                   libraries=readline_libs) )
++        else:
++            missing.append('readline')
++
++        if platform not in ['mac']:
++            # crypt module.
++
++            if self.compiler.find_library_file(lib_dirs, 'crypt'):
++                libs = ['crypt']
++            else:
++                libs = []
++            exts.append( Extension('crypt', ['cryptmodule.c'], libraries=libs) )
++        else:
++            missing.append('crypt')
++
++        # CSV files
++        exts.append( Extension('_csv', ['_csv.c']) )
++
++        # socket(2)
++        socket_libs = []
++        if self.compiler.find_library_file(lib_dirs,
++                                           'socket'):
++            socket_libs.append('socket')
++        if self.compiler.find_library_file(lib_dirs,
++                                           'nsl'):
++            socket_libs.append('nsl')
++        if self.compiler.find_library_file(lib_dirs,
++                                           'resolv'):
++            socket_libs.append('resolv')
++        exts.append( Extension('_socket', ['socketmodule.c'],
++                               depends = ['socketmodule.h'],
++                               libraries = socket_libs) )
++        # Detect SSL support for the socket module (via _ssl)
++        search_for_ssl_incs_in = [
++                              '/usr/sfw/include',
++                              '/usr/contrib/ssl/include/'
++                             ]
++        ssl_incs = find_file('openssl/ssl.h', inc_dirs,
++                             search_for_ssl_incs_in
++                             )
++        if ssl_incs is not None:
++            krb5_h = find_file('krb5.h', inc_dirs,
++                               ['/usr/kerberos/include'])
++            if krb5_h:
++                ssl_incs += krb5_h
++        if sys.maxint == 2147483647L:
++            sfw_libdir = '/usr/sfw/lib';
++        else:
++            sfw_libdir = '/usr/sfw/lib/64';
++        ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
++                                     [sfw_libdir,
++                                      '/usr/contrib/ssl/lib/'
++                                     ] )
++
++        if (ssl_incs is not None and
++            ssl_libs is not None):
++            exts.append( Extension('_ssl', ['_ssl.c'],
++                                   include_dirs = ssl_incs,
++                                   library_dirs = ssl_libs,
++				   runtime_library_dirs = ssl_libs,
++                                   libraries = ['ssl', 'crypto'],
++                                   depends = ['socketmodule.h']), )
++        else:
++            missing.append('_ssl')
++
++        # find out which version of OpenSSL we have
++        openssl_ver = 0
++        openssl_ver_re = re.compile(
++            '^\s*#\s*define\s+OPENSSL_VERSION_NUMBER\s+(0x[0-9a-fA-F]+)' )
++        for ssl_inc_dir in inc_dirs + search_for_ssl_incs_in:
++            name = os.path.join(ssl_inc_dir, 'openssl', 'opensslv.h')
++            if os.path.isfile(name):
++                try:
++                    incfile = open(name, 'r')
++                    for line in incfile:
++                        m = openssl_ver_re.match(line)
++                        if m:
++                            openssl_ver = eval(m.group(1))
++                            break
++                except IOError:
++                    pass
++
++            # first version found is what we'll use (as the compiler should)
++            if openssl_ver:
++                break
++
++        #print 'openssl_ver = 0x%08x' % openssl_ver
++
++        if (ssl_incs is not None and
++            ssl_libs is not None and
++            openssl_ver >= 0x00907000):
++            # The _hashlib module wraps optimized implementations
++            # of hash functions from the OpenSSL library.
++            exts.append( Extension('_hashlib', ['_hashopenssl.c'],
++                                   include_dirs = ssl_incs,
++                                   library_dirs = ssl_libs,
++                                   libraries = ['ssl', 'crypto']) )
++            # these aren't strictly missing since they are unneeded.
++            #missing.extend(['_sha', '_md5'])
++        else:
++            # The _sha module implements the SHA1 hash algorithm.
++            exts.append( Extension('_sha', ['shamodule.c']) )
++            # The _md5 module implements the RSA Data Security, Inc. MD5
++            # Message-Digest Algorithm, described in RFC 1321.  The
++            # necessary files md5.c and md5.h are included here.
++            exts.append( Extension('_md5',
++                            sources = ['md5module.c', 'md5.c'],
++                            depends = ['md5.h']) )
++            missing.append('_hashlib')
++
++        if (openssl_ver < 0x00908000):
++            # OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash
++            exts.append( Extension('_sha256', ['sha256module.c']) )
++            exts.append( Extension('_sha512', ['sha512module.c']) )
++
++        # Modules that provide persistent dictionary-like semantics.  You will
++        # probably want to arrange for at least one of them to be available on
++        # your machine, though none are defined by default because of library
++        # dependencies.  The Python module anydbm.py provides an
++        # implementation independent wrapper for these; dumbdbm.py provides
++        # similar functionality (but slower of course) implemented in Python.
++
++        # Sleepycat^WOracle Berkeley DB interface.
++        #  http://www.oracle.com/database/berkeley-db/db/index.html
++        #
++        # This requires the Sleepycat^WOracle DB code. The supported versions
++        # are set below.  Visit the URL above to download
++        # a release.  Most open source OSes come with one or more
++        # versions of BerkeleyDB already installed.
++
++        max_db_ver = (4, 7)
++        min_db_ver = (3, 3)
++        db_setup_debug = False   # verbose debug prints from this script?
++
++        def allow_db_ver(db_ver):
++            """Returns a boolean if the given BerkeleyDB version is acceptable.
++
++            Args:
++              db_ver: A tuple of the version to verify.
++            """
++            if not (min_db_ver <= db_ver <= max_db_ver):
++                return False
++            # Use this function to filter out known bad configurations.
++            if (4, 6) == db_ver[:2]:
++                # BerkeleyDB 4.6.x is not stable on many architectures.
++                arch = platform_machine()
++                if arch not in ('i386', 'i486', 'i586', 'i686',
++                                'x86_64', 'ia64'):
++                    return False
++            return True
++
++        def gen_db_minor_ver_nums(major):
++            if major == 4:
++                for x in range(max_db_ver[1]+1):
++                    if allow_db_ver((4, x)):
++                        yield x
++            elif major == 3:
++                for x in (3,):
++                    if allow_db_ver((3, x)):
++                        yield x
++            else:
++                raise ValueError("unknown major BerkeleyDB version", major)
++
++        # construct a list of paths to look for the header file in on
++        # top of the normal inc_dirs.
++        db_inc_paths = [
++            '/usr/include/db4',
++            '/usr/local/include/db4',
++            '/opt/sfw/include/db4',
++            '/usr/include/db3',
++            '/usr/local/include/db3',
++            '/opt/sfw/include/db3',
++            # Fink defaults (http://fink.sourceforge.net/)
++            '/sw/include/db4',
++            '/sw/include/db3',
++        ]
++        # 4.x minor number specific paths
++        for x in gen_db_minor_ver_nums(4):
++            db_inc_paths.append('/usr/include/db4%d' % x)
++            db_inc_paths.append('/usr/include/db4.%d' % x)
++            db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x)
++            db_inc_paths.append('/usr/local/include/db4%d' % x)
++            db_inc_paths.append('/pkg/db-4.%d/include' % x)
++            db_inc_paths.append('/opt/db-4.%d/include' % x)
++            # MacPorts default (http://www.macports.org/)
++            db_inc_paths.append('/opt/local/include/db4%d' % x)
++        # 3.x minor number specific paths
++        for x in gen_db_minor_ver_nums(3):
++            db_inc_paths.append('/usr/include/db3%d' % x)
++            db_inc_paths.append('/usr/local/BerkeleyDB.3.%d/include' % x)
++            db_inc_paths.append('/usr/local/include/db3%d' % x)
++            db_inc_paths.append('/pkg/db-3.%d/include' % x)
++            db_inc_paths.append('/opt/db-3.%d/include' % x)
++
++        # Add some common subdirectories for Sleepycat DB to the list,
++        # based on the standard include directories. This way DB3/4 gets
++        # picked up when it is installed in a non-standard prefix and
++        # the user has added that prefix into inc_dirs.
++        std_variants = []
++        for dn in inc_dirs:
++            std_variants.append(os.path.join(dn, 'db3'))
++            std_variants.append(os.path.join(dn, 'db4'))
++            for x in gen_db_minor_ver_nums(4):
++                std_variants.append(os.path.join(dn, "db4%d"%x))
++                std_variants.append(os.path.join(dn, "db4.%d"%x))
++            for x in gen_db_minor_ver_nums(3):
++                std_variants.append(os.path.join(dn, "db3%d"%x))
++                std_variants.append(os.path.join(dn, "db3.%d"%x))
++
++        db_inc_paths = std_variants + db_inc_paths
++        db_inc_paths = [p for p in db_inc_paths if os.path.exists(p)]
++
++        db_ver_inc_map = {}
++
++        class db_found(Exception): pass
++        try:
++            # See whether there is a Sleepycat header in the standard
++            # search path.
++            for d in inc_dirs + db_inc_paths:
++                f = os.path.join(d, "db.h")
++                if db_setup_debug: print "db: looking for db.h in", f
++                if os.path.exists(f):
++                    f = open(f).read()
++                    m = re.search(r"#define\WDB_VERSION_MAJOR\W(\d+)", f)
++                    if m:
++                        db_major = int(m.group(1))
++                        m = re.search(r"#define\WDB_VERSION_MINOR\W(\d+)", f)
++                        db_minor = int(m.group(1))
++                        db_ver = (db_major, db_minor)
++
++                        # Avoid 4.6 prior to 4.6.21 due to a BerkeleyDB bug
++                        if db_ver == (4, 6):
++                            m = re.search(r"#define\WDB_VERSION_PATCH\W(\d+)", f)
++                            db_patch = int(m.group(1))
++                            if db_patch < 21:
++                                print "db.h:", db_ver, "patch", db_patch,
++                                print "being ignored (4.6.x must be >= 4.6.21)"
++                                continue
++
++                        if ( (not db_ver_inc_map.has_key(db_ver)) and
++                            allow_db_ver(db_ver) ):
++                            # save the include directory with the db.h version
++                            # (first occurrence only)
++                            db_ver_inc_map[db_ver] = d
++                            if db_setup_debug:
++                                print "db.h: found", db_ver, "in", d
++                        else:
++                            # we already found a header for this library version
++                            if db_setup_debug: print "db.h: ignoring", d
++                    else:
++                        # ignore this header, it didn't contain a version number
++                        if db_setup_debug:
++                            print "db.h: no version number version in", d
++
++            db_found_vers = db_ver_inc_map.keys()
++            db_found_vers.sort()
++
++            while db_found_vers:
++                db_ver = db_found_vers.pop()
++                db_incdir = db_ver_inc_map[db_ver]
++
++                # check lib directories parallel to the location of the header
++                db_dirs_to_check = [
++                    db_incdir.replace("include", 'lib64'),
++                    db_incdir.replace("include", 'lib'),
++                ]
++                db_dirs_to_check = filter(os.path.isdir, db_dirs_to_check)
++
++                # Look for a version specific db-X.Y before an ambiguoius dbX
++                # XXX should we -ever- look for a dbX name?  Do any
++                # systems really not name their library by version and
++                # symlink to more general names?
++                for dblib in (('db-%d.%d' % db_ver),
++                              ('db%d%d' % db_ver),
++                              ('db%d' % db_ver[0])):
++                    dblib_file = self.compiler.find_library_file(
++                                    db_dirs_to_check + lib_dirs, dblib )
++                    if dblib_file:
++                        dblib_dir = [ os.path.abspath(os.path.dirname(dblib_file)) ]
++                        raise db_found
++                    else:
++                        if db_setup_debug: print "db lib: ", dblib, "not found"
++
++        except db_found:
++            if db_setup_debug:
++                print "bsddb using BerkeleyDB lib:", db_ver, dblib
++                print "bsddb lib dir:", dblib_dir, " inc dir:", db_incdir
++            db_incs = [db_incdir]
++            dblibs = [dblib]
++            # We add the runtime_library_dirs argument because the
++            # BerkeleyDB lib we're linking against often isn't in the
++            # system dynamic library search path.  This is usually
++            # correct and most trouble free, but may cause problems in
++            # some unusual system configurations (e.g. the directory
++            # is on an NFS server that goes away).
++            exts.append(Extension('_bsddb', ['_bsddb.c'],
++                                  depends = ['bsddb.h'],
++                                  library_dirs=dblib_dir,
++                                  runtime_library_dirs=dblib_dir,
++                                  include_dirs=db_incs,
++                                  libraries=dblibs))
++        else:
++            if db_setup_debug: print "db: no appropriate library found"
++            db_incs = None
++            dblibs = []
++            dblib_dir = None
++            missing.append('_bsddb')
++
++        # The sqlite interface
++        sqlite_setup_debug = False   # verbose debug prints from this script?
++
++        # We hunt for #define SQLITE_VERSION "n.n.n"
++        # We need to find >= sqlite version 3.0.8
++        sqlite_incdir = sqlite_libdir = None
++        sqlite_inc_paths = [ '/usr/include',
++                             '/usr/include/sqlite',
++                             '/usr/include/sqlite3',
++                             '/usr/local/include',
++                             '/usr/local/include/sqlite',
++                             '/usr/local/include/sqlite3',
++                           ]
++        MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
++        MIN_SQLITE_VERSION = ".".join([str(x)
++                                    for x in MIN_SQLITE_VERSION_NUMBER])
++
++        # Scan the default include directories before the SQLite specific
++        # ones. This allows one to override the copy of sqlite on OSX,
++        # where /usr/include contains an old version of sqlite.
++        for d in inc_dirs + sqlite_inc_paths:
++            f = os.path.join(d, "sqlite3.h")
++            if os.path.exists(f):
++                if sqlite_setup_debug: print "sqlite: found %s"%f
++                incf = open(f).read()
++                m = re.search(
++                    r'\s*.*#\s*.*define\s.*SQLITE_VERSION\W*"(.*)"', incf)
++                if m:
++                    sqlite_version = m.group(1)
++                    sqlite_version_tuple = tuple([int(x)
++                                        for x in sqlite_version.split(".")])
++                    if sqlite_version_tuple >= MIN_SQLITE_VERSION_NUMBER:
++                        # we win!
++                        if sqlite_setup_debug:
++                            print "%s/sqlite3.h: version %s"%(d, sqlite_version)
++                        sqlite_incdir = d
++                        break
++                    else:
++                        if sqlite_setup_debug:
++                            print "%s: version %d is too old, need >= %s"%(d,
++                                        sqlite_version, MIN_SQLITE_VERSION)
++                elif sqlite_setup_debug:
++                    print "sqlite: %s had no SQLITE_VERSION"%(f,)
++
++        if sqlite_incdir:
++            sqlite_dirs_to_check = [
++                os.path.join(sqlite_incdir, '..', 'lib64'),
++                os.path.join(sqlite_incdir, '..', 'lib'),
++                os.path.join(sqlite_incdir, '..', '..', 'lib64'),
++                os.path.join(sqlite_incdir, '..', '..', 'lib'),
++            ]
++            sqlite_libfile = self.compiler.find_library_file(
++                                sqlite_dirs_to_check + lib_dirs, 'sqlite3')
++            if sqlite_libfile:
++                sqlite_libdir = [os.path.abspath(os.path.dirname(sqlite_libfile))]
++
++        if sqlite_incdir and sqlite_libdir:
++            sqlite_srcs = ['_sqlite/cache.c',
++                '_sqlite/connection.c',
++                '_sqlite/cursor.c',
++                '_sqlite/microprotocols.c',
++                '_sqlite/module.c',
++                '_sqlite/prepare_protocol.c',
++                '_sqlite/row.c',
++                '_sqlite/statement.c',
++                '_sqlite/util.c', ]
++
++            sqlite_defines = []
++            if sys.platform != "win32":
++                sqlite_defines.append(('MODULE_NAME', '"sqlite3"'))
++            else:
++                sqlite_defines.append(('MODULE_NAME', '\\"sqlite3\\"'))
++
++
++            if sys.platform == 'darwin':
++                # In every directory on the search path search for a dynamic
++                # library and then a static library, instead of first looking
++                # for dynamic libraries on the entiry path.
++                # This way a staticly linked custom sqlite gets picked up
++                # before the dynamic library in /usr/lib.
++                sqlite_extra_link_args = ('-Wl,-search_paths_first',)
++            else:
++                sqlite_extra_link_args = ()
++
++            exts.append(Extension('_sqlite3', sqlite_srcs,
++                                  define_macros=sqlite_defines,
++                                  include_dirs=["Modules/_sqlite",
++                                                sqlite_incdir],
++                                  library_dirs=sqlite_libdir,
++                                  runtime_library_dirs=sqlite_libdir,
++                                  extra_link_args=sqlite_extra_link_args,
++                                  libraries=["sqlite3",]))
++        else:
++            missing.append('_sqlite3')
++
++        # Look for Berkeley db 1.85.   Note that it is built as a different
++        # module name so it can be included even when later versions are
++        # available.  A very restrictive search is performed to avoid
++        # accidentally building this module with a later version of the
++        # underlying db library.  May BSD-ish Unixes incorporate db 1.85
++        # symbols into libc and place the include file in /usr/include.
++        #
++        # If the better bsddb library can be built (db_incs is defined)
++        # we do not build this one.  Otherwise this build will pick up
++        # the more recent berkeleydb's db.h file first in the include path
++        # when attempting to compile and it will fail.
++        f = "/usr/include/db.h"
++        if os.path.exists(f) and not db_incs:
++            data = open(f).read()
++            m = re.search(r"#s*define\s+HASHVERSION\s+2\s*", data)
++            if m is not None:
++                # bingo - old version used hash file format version 2
++                ### XXX this should be fixed to not be platform-dependent
++                ### but I don't have direct access to an osf1 platform and
++                ### seemed to be muffing the search somehow
++                libraries = platform == "osf1" and ['db'] or None
++                if libraries is not None:
++                    exts.append(Extension('bsddb185', ['bsddbmodule.c'],
++                                          libraries=libraries))
++                else:
++                    exts.append(Extension('bsddb185', ['bsddbmodule.c']))
++            else:
++                missing.append('bsddb185')
++        else:
++            missing.append('bsddb185')
++
++        # The standard Unix dbm module:
++        if platform not in ['cygwin']:
++            if find_file("ndbm.h", inc_dirs, []) is not None:
++                # Some systems have -lndbm, others don't
++                if self.compiler.find_library_file(lib_dirs, 'ndbm'):
++                    ndbm_libs = ['ndbm']
++                else:
++                    ndbm_libs = []
++                exts.append( Extension('dbm', ['dbmmodule.c'],
++                                       define_macros=[('HAVE_NDBM_H',None)],
++                                       libraries = ndbm_libs ) )
++            elif self.compiler.find_library_file(lib_dirs, 'gdbm'):
++                gdbm_libs = ['gdbm']
++                if self.compiler.find_library_file(lib_dirs, 'gdbm_compat'):
++                    gdbm_libs.append('gdbm_compat')
++                if find_file("gdbm/ndbm.h", inc_dirs, []) is not None:
++                    exts.append( Extension(
++                        'dbm', ['dbmmodule.c'],
++                        define_macros=[('HAVE_GDBM_NDBM_H',None)],
++                        libraries = gdbm_libs ) )
++                elif find_file("gdbm-ndbm.h", inc_dirs, []) is not None:
++                    exts.append( Extension(
++                        'dbm', ['dbmmodule.c'],
++                        define_macros=[('HAVE_GDBM_DASH_NDBM_H',None)],
++                        libraries = gdbm_libs ) )
++                else:
++                    missing.append('dbm')
++            elif db_incs is not None:
++                exts.append( Extension('dbm', ['dbmmodule.c'],
++                                       library_dirs=dblib_dir,
++                                       runtime_library_dirs=dblib_dir,
++                                       include_dirs=db_incs,
++                                       define_macros=[('HAVE_BERKDB_H',None),
++                                                      ('DB_DBM_HSEARCH',None)],
++                                       libraries=dblibs))
++            else:
++                missing.append('dbm')
++
++        # Anthony Baxter's gdbm module.  GNU dbm(3) will require -lgdbm:
++        if (self.compiler.find_library_file(lib_dirs, 'gdbm')):
++            exts.append( Extension('gdbm', ['gdbmmodule.c'],
++                                   libraries = ['gdbm'] ) )
++        else:
++            missing.append('gdbm')
++
++        # Unix-only modules
++        if platform not in ['mac', 'win32']:
++            # Steen Lumholt's termios module
++            exts.append( Extension('termios', ['termios.c']) )
++            # Jeremy Hylton's rlimit interface
++            if platform not in ['atheos']:
++                exts.append( Extension('resource', ['resource.c']) )
++            else:
++                missing.append('resource')
++
++            # Sun yellow pages. Some systems have the functions in libc.
++            if platform not in ['cygwin', 'atheos', 'qnx6']:
++                if (self.compiler.find_library_file(lib_dirs, 'nsl')):
++                    libs = ['nsl']
++                else:
++                    libs = []
++                exts.append( Extension('nis', ['nismodule.c'],
++                                       libraries = libs) )
++            else:
++                missing.append('nis')
++        else:
++            missing.extend(['nis', 'resource', 'termios'])
++
++        # Curses support, requiring the System V version of curses, often
++        # provided by the ncurses library.
++        curses_lib_dirs = []
++        curses_inc_dirs = []
++        if platform == 'sunos5':
++            # look for ncurses in /usr/gnu on Solaris
++            curses_inc_dirs.append('/usr/include/ncurses')
++            curses_lib_dirs.append('/usr/gnu/lib')
++            curses_lib_dirs.append('/usr/gnu/lib/amd64')
++            curses_lib_dirs.append('/usr/gnu/lib/sparcv9')
++        panel_library = 'panel'
++        if (self.compiler.find_library_file(lib_dirs, 'ncursesw')):
++            curses_libs = ['ncursesw']
++            # Bug 1464056: If _curses.so links with ncursesw,
++            # _curses_panel.so must link with panelw.
++            panel_library = 'panelw'
++            exts.append( Extension('_curses', ['_cursesmodule.c'],
++                                   libraries = curses_libs) )
++        elif (self.compiler.find_library_file(lib_dirs + curses_lib_dirs, 'ncurses')):
++            curses_libs = ['ncurses']
++            exts.append( Extension('_curses', ['_cursesmodule.c'],
++                                   libraries = curses_libs,
++                                   library_dirs = curses_lib_dirs,
++                                   runtime_library_dirs = curses_lib_dirs,
++                                   include_dirs = curses_inc_dirs ) )
++        elif (self.compiler.find_library_file(lib_dirs, 'curses')
++              and platform != 'darwin'):
++                # OSX has an old Berkeley curses, not good enough for
++                # the _curses module.
++            if (self.compiler.find_library_file(lib_dirs, 'terminfo')):
++                curses_libs = ['curses', 'terminfo']
++            elif (self.compiler.find_library_file(lib_dirs, 'termcap')):
++                curses_libs = ['curses', 'termcap']
++            else:
++                curses_libs = ['curses']
++
++            exts.append( Extension('_curses', ['_cursesmodule.c'],
++                                   libraries = curses_libs) )
++        else:
++            missing.append('_curses')
++
++        # If the curses module is enabled, check for the panel module
++        if (module_enabled(exts, '_curses') and
++            self.compiler.find_library_file(lib_dirs + curses_lib_dirs, panel_library)):
++            exts.append( Extension('_curses_panel', ['_curses_panel.c'],
++                                   libraries = [panel_library] + curses_libs,
++                                   include_dirs = curses_inc_dirs,
++                                   library_dirs = curses_lib_dirs,
++                                   runtime_library_dirs = curses_lib_dirs ) )
++        else:
++            missing.append('_curses_panel')
++
++        # Andrew Kuchling's zlib module.  Note that some versions of zlib
++        # 1.1.3 have security problems.  See CERT Advisory CA-2002-07:
++        # http://www.cert.org/advisories/CA-2002-07.html
++        #
++        # zlib 1.1.4 is fixed, but at least one vendor (RedHat) has decided to
++        # patch its zlib 1.1.3 package instead of upgrading to 1.1.4.  For
++        # now, we still accept 1.1.3, because we think it's difficult to
++        # exploit this in Python, and we'd rather make it RedHat's problem
++        # than our problem <wink>.
++        #
++        # You can upgrade zlib to version 1.1.4 yourself by going to
++        # http://www.gzip.org/zlib/
++        zlib_inc = find_file('zlib.h', [], inc_dirs)
++        have_zlib = False
++        if zlib_inc is not None:
++            zlib_h = zlib_inc[0] + '/zlib.h'
++            version = '"0.0.0"'
++            version_req = '"1.1.3"'
++            fp = open(zlib_h)
++            while 1:
++                line = fp.readline()
++                if not line:
++                    break
++                if line.startswith('#define ZLIB_VERSION'):
++                    version = line.split()[2]
++                    break
++            if version >= version_req:
++                if (self.compiler.find_library_file(lib_dirs, 'z')):
++                    if sys.platform == "darwin":
++                        zlib_extra_link_args = ('-Wl,-search_paths_first',)
++                    else:
++                        zlib_extra_link_args = ()
++                    exts.append( Extension('zlib', ['zlibmodule.c'],
++                                           libraries = ['z'],
++                                           extra_link_args = zlib_extra_link_args))
++                    have_zlib = True
++                else:
++                    missing.append('zlib')
++            else:
++                missing.append('zlib')
++        else:
++            missing.append('zlib')
++
++        # Helper module for various ascii-encoders.  Uses zlib for an optimized
++        # crc32 if we have it.  Otherwise binascii uses its own.
++        if have_zlib:
++            extra_compile_args = ['-DUSE_ZLIB_CRC32']
++            libraries = ['z']
++            extra_link_args = zlib_extra_link_args
++        else:
++            extra_compile_args = []
++            libraries = []
++            extra_link_args = []
++        exts.append( Extension('binascii', ['binascii.c'],
++                               extra_compile_args = extra_compile_args,
++                               libraries = libraries,
++                               extra_link_args = extra_link_args) )
++
++        # Gustavo Niemeyer's bz2 module.
++        if (self.compiler.find_library_file(lib_dirs, 'bz2')):
++            if sys.platform == "darwin":
++                bz2_extra_link_args = ('-Wl,-search_paths_first',)
++            else:
++                bz2_extra_link_args = ()
++            exts.append( Extension('bz2', ['bz2module.c'],
++                                   libraries = ['bz2'],
++                                   extra_link_args = bz2_extra_link_args) )
++        else:
++            missing.append('bz2')
++
++        # Interface to the Expat XML parser
++        #
++        # Expat was written by James Clark and is now maintained by a
++        # group of developers on SourceForge; see www.libexpat.org for
++        # more information.  The pyexpat module was written by Paul
++        # Prescod after a prototype by Jack Jansen.  The Expat source
++        # is included in Modules/expat/.  Usage of a system
++        # shared libexpat.so/expat.dll is not advised.
++        #
++        # More information on Expat can be found at www.libexpat.org.
++        #
++        expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat')
++        define_macros = [
++            ('HAVE_EXPAT_CONFIG_H', '1'),
++        ]
++
++        exts.append(Extension('pyexpat',
++                              define_macros = define_macros,
++                              include_dirs = [expatinc],
++                              sources = ['pyexpat.c',
++                                         'expat/xmlparse.c',
++                                         'expat/xmlrole.c',
++                                         'expat/xmltok.c',
++                                         ],
++                              ))
++
++        # Fredrik Lundh's cElementTree module.  Note that this also
++        # uses expat (via the CAPI hook in pyexpat).
++
++        if os.path.isfile(os.path.join(srcdir, 'Modules', '_elementtree.c')):
++            define_macros.append(('USE_PYEXPAT_CAPI', None))
++            exts.append(Extension('_elementtree',
++                                  define_macros = define_macros,
++                                  include_dirs = [expatinc],
++                                  sources = ['_elementtree.c'],
++                                  ))
++        else:
++            missing.append('_elementtree')
++
++        # Hye-Shik Chang's CJKCodecs modules.
++        if have_unicode:
++            exts.append(Extension('_multibytecodec',
++                                  ['cjkcodecs/multibytecodec.c']))
++            for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'):
++                exts.append(Extension('_codecs_%s' % loc,
++                                      ['cjkcodecs/_codecs_%s.c' % loc]))
++        else:
++            missing.append('_multibytecodec')
++            for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'):
++                missing.append('_codecs_%s' % loc)
++
++        # Dynamic loading module
++        if sys.maxint == 0x7fffffff:
++            # This requires sizeof(int) == sizeof(long) == sizeof(char*)
++            dl_inc = find_file('dlfcn.h', [], inc_dirs)
++            if (dl_inc is not None) and (platform not in ['atheos']):
++                exts.append( Extension('dl', ['dlmodule.c']) )
++            else:
++                missing.append('dl')
++        else:
++            missing.append('dl')
++
++        # Thomas Heller's _ctypes module
++        self.detect_ctypes(inc_dirs, lib_dirs)
++
++        # Richard Oudkerk's multiprocessing module
++        if platform == 'win32':             # Windows
++            macros = dict()
++            libraries = ['ws2_32']
++
++        elif platform == 'darwin':          # Mac OSX