Norm Jacobs
2011-02-23 35a0125756bd68f77a2ddaf2dd6b8539e733ee1d
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.
39 files added
11 files modified
16963 ■■■■■ changed files
components/Makefile 2 ●●● patch | view | raw | blame | history
components/bzip2/Makefile 5 ●●●●● patch | view | raw | blame | history
components/ggrep/Makefile 3 ●●●● patch | view | raw | blame | history
components/lua/Makefile 7 ●●●● patch | view | raw | blame | history
components/mercurial/Makefile 59 ●●●●● patch | view | raw | blame | history
components/mercurial/SUNWmercurial.p5m 29 ●●●●● patch | view | raw | blame | history
components/mercurial/demo-transform 27 ●●●●● patch | view | raw | blame | history
components/mercurial/manpages.patch 181 ●●●●● patch | view | raw | blame | history
components/mercurial/mercurial.copyright 379 ●●●●● patch | view | raw | blame | history
components/mercurial/mercurial.p5m 633 ●●●●● patch | view | raw | blame | history
components/python/pyopenssl/Makefile 48 ●●●●● patch | view | raw | blame | history
components/python/pyopenssl/SUNWpython26-pyopenssl.p5m 29 ●●●●● patch | view | raw | blame | history
components/python/pyopenssl/no-zip_safe.patch 10 ●●●●● patch | view | raw | blame | history
components/python/pyopenssl/pyOpenSSL.txt 1013 ●●●●● patch | view | raw | blame | history
components/python/pyopenssl/pyopenssl-26.p5m 70 ●●●●● patch | view | raw | blame | history
components/python/pyopenssl/pyopenssl.copyright 523 ●●●●● patch | view | raw | blame | history
components/python/python26/Makefile 85 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-00-filemagic.patch 2232 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-01-solaris-lib-dirs.patch 190 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-02-pycc.patch 199 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-03-distutils-pycc.patch 24 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-04-distutils-log.patch 30 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-05-isalibs.patch 452 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-06-write_compiled_module-atomic.patch 84 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-07-dtrace.patch 417 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-08-ctypes.patch 28 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-09-ucred.patch 2427 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-10-gethostname.patch 15 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-11-dlpi.patch 1328 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-12-encoding-alias.patch 35 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-13-cflags.patch 12 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-14-ctypes-util-find-library.patch 39 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-15-getcwd.patch 21 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-16-privrbac.patch 1581 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-17-netpacket-packet-h.patch 54 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-18-readline.patch 31 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-19-ext-stdio.patch 34 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-20-py_db.patch 1047 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-21-getpass.patch 31 ●●●●● patch | view | raw | blame | history
components/python/python26/Python26-22-bindir.patch 11 ●●●●● patch | view | raw | blame | history
components/python/python26/SUNWPython26.p5m 28 ●●●●● patch | view | raw | blame | history
components/python/python26/python-26.p5m 2962 ●●●●● patch | view | raw | blame | history
components/python/python26/python26.license 274 ●●●●● patch | view | raw | blame | history
components/tcsh/Makefile 2 ●●● patch | view | raw | blame | history
components/zsh/Makefile 4 ●●● patch | view | raw | blame | history
make-rules/ips.mk 10 ●●●● patch | view | raw | blame | history
make-rules/setup.py.mk 8 ●●●● patch | view | raw | blame | history
make-rules/shared-macros.mk 240 ●●●● patch | view | raw | blame | history
tools/python/pkglint/userland.py 2 ●●● patch | view | raw | blame | history
transforms/comparison-cleanup 8 ●●●● patch | view | raw | blame | history
components/Makefile
@@ -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)/$@.$(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
components/bzip2/Makefile
@@ -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)"
components/ggrep/Makefile
@@ -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
components/lua/Makefile
@@ -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
components/mercurial/Makefile
New file
@@ -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
components/mercurial/SUNWmercurial.p5m
New file
@@ -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:/SUNWmercurial@1.3.1,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=developer/versioning/mercurial@1.3.1-0.133 type=require
components/mercurial/demo-transform
New file
@@ -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> >
components/mercurial/manpages.patch
New file
@@ -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
@@ -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/>
@@ -757,7 +762,7 @@
 .RS 4
 .\}
 .nf
-$ cp \-al REPO REPOCLONE
+$ /usr/gnu/bin/cp \-al REPO REPOCLONE
 .fi
 .if n \{\
 .RE
@@ -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\&.
@@ -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
@@ -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/>
@@ -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>
@@ -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
@@ -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%
@@ -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
@@ -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
@@ -1275,3 +1280,23 @@
 .RS 4
 \%mailto:mpm@selenic.com
 .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
@@ -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/>
@@ -119,3 +124,23 @@
 .RS 4
 \%mailto:mpm@selenic.com
 .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
components/mercurial/mercurial.copyright
New file
@@ -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 <intevation@intevation.de>
Copyright (C) 2006 Marco Barisione <marco@barisione.org>
Copyright (C) 2006-2008 Brendan Cully <brendan@kublai.com>
Copyright (C) 2006 Jelmer Vernooij <jelmer@samba.org>
Copyright (C) 2007 Alexis S. L. Carvalho <alexis@cecm.usp.br>
Copyright (C) 2007 Daniel Holth <dholth@fastmail.fm>
Copyright (C) 2007 Kevin Christen <kevin.christen@gmail.com>
Copyright (c) 2008 Shun-ichi Goto <shunichi.goto@gmail.com>
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 <mpm@selenic.com>
Copyright 2005-2007 Benoit Boissinot <benoit.boissinot@ens-lyon.org>
Copyright 2005-2007 Chris Mason <mason@suse.com>
Copyright 2005-2008 Bryan O'Sullivan <bos@serpentine.com>
Copyright 2006 Eric Hopper <hopper@omnifarious.org>
Copyright 2006 Josef "Jeff" Sipek <jeffpc@josefsipek.net>
Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
Copyright 2007 Joel Rosdahl <joel@rosdahl.net>
Copyright 2007 OHASHI Hideya <ohachige@gmail.com>
Copyright 2007, 2008 Christian Ebert <blacktrash@gmx.net>
Copyright 2008 David Soria Parra <dsp@php.net>
Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
Copyright (C) 2006 by Manpreet Singh
Copyright 2005 K. Thananchayan <thananck@yahoo.com>
--------------------------------------------------------------------
            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.
components/mercurial/mercurial.p5m
New file
@@ -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/mercurial@$(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"
components/python/pyopenssl/Makefile
New file
@@ -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
components/python/pyopenssl/SUNWpython26-pyopenssl.p5m
New file
@@ -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:/SUNWpython26-pyopenssl@0.8,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=library/python-2/pyopenssl-26@0.8-0.133 type=require
components/python/pyopenssl/no-zip_safe.patch
New file
@@ -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
@@ -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',
components/python/pyopenssl/pyOpenSSL.txt
New file
@@ -0,0 +1,1013 @@
                            Python OpenSSL Manual
     __________________________________________________________________
                            Python OpenSSL Manual
                               Martin Sjögren
                              martin@strakt.com
  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.
components/python/pyopenssl/pyopenssl-26.p5m
New file
@@ -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/pyopenssl-26@$(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"
components/python/pyopenssl/pyopenssl.copyright
New file
@@ -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!
components/python/python26/Makefile
New file
@@ -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
components/python/python26/Python26-00-filemagic.patch
New file
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python2.6
 # -*- coding: iso-8859-1 -*-
 # Written by Martin v. Löwis <loewis@informatik.hu-berlin.de>
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
@@ -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
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python2.6
 # -*- coding: iso-8859-1 -*-
 # Originally written by Barry Warsaw <barry@zope.com>
 #
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
components/python/python26/Python26-01-solaris-lib-dirs.patch
New file
@@ -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
@@ -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
@@ -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
@@ -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,
@@ -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/'
                                      ] )
@@ -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:
@@ -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']
@@ -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
@@ -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')
@@ -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
@@ -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
@@ -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)
@@ -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
@@ -0,0 +1,1 @@
+import site; site.addsitedir('/usr/lib/python2.6/vendor-packages')
components/python/python26/Python26-02-pycc.patch
New file
@@ -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
@@ -663,6 +663,8 @@
 $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
+install-pycc:    $(srcdir)/pycc
+    $(INSTALL_SCRIPT) $< $(DESTDIR)$(BINLIBDEST)
 ######################################################################
@@ -728,7 +728,7 @@
                $(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
 # Install everything
-install:    @FRAMEWORKINSTALLFIRST@ altinstall bininstall maninstall @FRAMEWORKINSTALLLAST@
+install:    @FRAMEWORKINSTALLFIRST@ altinstall bininstall maninstall @FRAMEWORKINSTALLLAST@ install-pycc
 # Install almost everything without disturbing previous versions
 altinstall:    @FRAMEWORKALTINSTALLFIRST@ 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
@@ -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 "${@}"
components/python/python26/Python26-03-distutils-pycc.patch
New file
@@ -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
@@ -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:
components/python/python26/Python26-04-distutils-log.patch
New file
@@ -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
@@ -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:
@@ -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:
@@ -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
components/python/python26/Python26-05-isalibs.patch
New file
@@ -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
@@ -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
@@ -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
@@ -87,18 +87,18 @@
 # Expanded directories
 BINDIR=        $(exec_prefix)/bin
-LIBDIR=        $(exec_prefix)/lib
+LIBDIR=        @libdir@
 MANDIR=        @mandir@
 INCLUDEDIR=    @includedir@
 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=        @SO@
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
@@ -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)
@@ -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;
@@ -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)
@@ -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
@@ -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
@@ -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 */
@@ -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"
@@ -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)
@@ -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
@@ -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
@@ -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,
@@ -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";
@@ -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([
@@ -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)
components/python/python26/Python26-06-write_compiled_module-atomic.patch
New file
@@ -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
@@ -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)
@@ -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);
@@ -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 */
@@ -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
components/python/python26/Python26-07-dtrace.patch
New file
@@ -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
@@ -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
@@ -201,6 +201,7 @@
 GRAMMAR_C=    $(srcdir)/Python/graminit.c
 GRAMMAR_INPUT=    $(srcdir)/Grammar/Grammar
+DTRACE_OBJS=Python/dtrace.o Python/phelper.o
 ##########################################################################
 # Parser
@@ -290,6 +291,7 @@
         Python/formatter_unicode.o \
         Python/formatter_string.o \
         Python/$(DYNLOADFILE) \
+        $(DTRACE_OBJS) \
         $(LIBOBJS) \
         $(MACHDEP_OBJS) \
         $(THREADOBJ)
@@ -577,6 +579,18 @@
 Python/formatter_string.o: $(srcdir)/Python/formatter_string.c \
                 $(STRINGLIB_HEADERS)
+Python/phelper.o: $(srcdir)/Python/phelper.d
+    dtrace -o $@ -DPHELPER $(DFLAGS) $(CPPFLAGS) -C -G -s $(srcdir)/Python/phelper.d
+
+Python/python.h: $(srcdir)/Python/python.d
+    dtrace -o $@ $(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 $@ $<
+
+Python/dtrace.o: $(srcdir)/Python/python.d Python/ceval.o
+    dtrace -o $@ $(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
@@ -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
@@ -19,6 +19,11 @@
 #include <ctype.h>
+#define HAVE_DTRACE
+#ifdef HAVE_DTRACE
+#include "python.h"
+#endif
+
 #ifndef WITH_TSC
 #define READ_TIMESTAMP(var)
@@ -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 */
@@ -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
@@ -763,6 +892,9 @@
         }
     }
+        if (PYTHON_FUNCTION_ENTRY_ENABLED())
+                dtrace_entry(f);
+
     co = f->f_code;
     names = co->co_names;
     consts = co->co_consts;
@@ -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
@@ -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);
@@ -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
@@ -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
@@ -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
components/python/python26/Python26-08-ctypes.patch
New file
@@ -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
@@ -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
@@ -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,
components/python/python26/Python26-09-ucred.patch
New file
@@ -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
@@ -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
@@ -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
@@ -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
+            macros = dict(
+                HAVE_SEM_OPEN=1,
+                HAVE_SEM_TIMEDWAIT=0,
+                HAVE_FD_TRANSFER=1,
+                HAVE_BROKEN_SEM_GETVALUE=1
+                )
+            libraries = []
+
+        elif platform == 'cygwin':          # Cygwin
+            macros = dict(
+                HAVE_SEM_OPEN=1,
+                HAVE_SEM_TIMEDWAIT=1,
+                HAVE_FD_TRANSFER=0,
+                HAVE_BROKEN_SEM_UNLINK=1
+                )
+            libraries = []
+
+        elif platform in ('freebsd4', 'freebsd5', 'freebsd6', 'freebsd7', 'freebsd8'):
+            # FreeBSD's P1003.1b semaphore support is very experimental
+            # and has many known problems. (as of June 2008)
+            macros = dict(                  # FreeBSD
+                HAVE_SEM_OPEN=0,
+                HAVE_SEM_TIMEDWAIT=0,
+                HAVE_FD_TRANSFER=1,
+                )
+            libraries = []
+
+        elif platform.startswith('openbsd'):
+            macros = dict(                  # OpenBSD
+                HAVE_SEM_OPEN=0,            # Not implemented
+                HAVE_SEM_TIMEDWAIT=0,
+                HAVE_FD_TRANSFER=1,
+                )
+            libraries = []
+
+        elif platform.startswith('netbsd'):
+            macros = dict(                  # at least NetBSD 5
+                HAVE_SEM_OPEN=1,
+                HAVE_SEM_TIMEDWAIT=0,
+                HAVE_FD_TRANSFER=1,
+                HAVE_BROKEN_SEM_GETVALUE=1
+                )
+            libraries = []
+
+        else:                                   # Linux and other unices
+            macros = dict(
+                HAVE_SEM_OPEN=1,
+                HAVE_SEM_TIMEDWAIT=1,
+                HAVE_FD_TRANSFER=1
+                )
+            libraries = ['rt']
+
+        if platform == 'win32':
+            multiprocessing_srcs = [ '_multiprocessing/multiprocessing.c',
+                                     '_multiprocessing/semaphore.c',
+                                     '_multiprocessing/pipe_connection.c',
+                                     '_multiprocessing/socket_connection.c',
+                                     '_multiprocessing/win32_functions.c'
+                                   ]
+
+        else:
+            multiprocessing_srcs = [ '_multiprocessing/multiprocessing.c',
+                                     '_multiprocessing/socket_connection.c'
+                                   ]
+
+            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
+
+
+        # Platform-specific libraries
+        if platform == 'linux2':
+            # Linux-specific modules
+            exts.append( Extension('linuxaudiodev', ['linuxaudiodev.c']) )
+        else:
+            missing.append('linuxaudiodev')
+
+        if platform in ('linux2', 'freebsd4', 'freebsd5', 'freebsd6',
+                        'freebsd7', 'freebsd8'):
+            exts.append( Extension('ossaudiodev', ['ossaudiodev.c']) )
+        else:
+            missing.append('ossaudiodev')
+
+        if platform == 'sunos5':
+            # SunOS specific modules
+            exts.append( Extension('sunaudiodev', ['sunaudiodev.c']) )
+        else:
+            missing.append('sunaudiodev')
+
+        if platform == 'darwin':
+            # _scproxy
+            exts.append(Extension("_scproxy", [os.path.join(srcdir, "Mac/Modules/_scproxy.c")],
+                extra_link_args= [
+                    '-framework', 'SystemConfiguration',
+                    '-framework', 'CoreFoundation'
+                ]))
+
+
+        if platform == 'darwin' and ("--disable-toolbox-glue" not in
+                sysconfig.get_config_var("CONFIG_ARGS")):
+
+            if os.uname()[2] > '8.':
+                # We're on Mac OS X 10.4 or later, the compiler should
+                # support '-Wno-deprecated-declarations'. This will
+                # surpress deprecation warnings for the Carbon extensions,
+                # these extensions wrap the Carbon APIs and even those
+                # parts that are deprecated.
+                carbon_extra_compile_args = ['-Wno-deprecated-declarations']
+            else:
+                carbon_extra_compile_args = []
+
+            # Mac OS X specific modules.
+            def macSrcExists(name1, name2=''):
+                if not name1:
+                    return None
+                names = (name1,)
+                if name2:
+                    names = (name1, name2)
+                path = os.path.join(srcdir, 'Mac', 'Modules', *names)
+                return os.path.exists(path)
+
+            def addMacExtension(name, kwds, extra_srcs=[]):
+                dirname = ''
+                if name[0] == '_':
+                    dirname = name[1:].lower()
+                cname = name + '.c'
+                cmodulename = name + 'module.c'
+                # Check for NNN.c, NNNmodule.c, _nnn/NNN.c, _nnn/NNNmodule.c
+                if macSrcExists(cname):
+                    srcs = [cname]
+                elif macSrcExists(cmodulename):
+                    srcs = [cmodulename]
+                elif macSrcExists(dirname, cname):
+                    # XXX(nnorwitz): If all the names ended with module, we
+                    # wouldn't need this condition.  ibcarbon is the only one.
+                    srcs = [os.path.join(dirname, cname)]
+                elif macSrcExists(dirname, cmodulename):
+                    srcs = [os.path.join(dirname, cmodulename)]
+                else:
+                    raise RuntimeError("%s not found" % name)
+
+                # Here's the whole point:  add the extension with sources
+                exts.append(Extension(name, srcs + extra_srcs, **kwds))
+
+            # Core Foundation
+            core_kwds = {'extra_compile_args': carbon_extra_compile_args,
+                         'extra_link_args': ['-framework', 'CoreFoundation'],
+                        }
+            addMacExtension('_CF', core_kwds, ['cf/pycfbridge.c'])
+            addMacExtension('autoGIL', core_kwds)
+
+
+
+            # Carbon
+            carbon_kwds = {'extra_compile_args': carbon_extra_compile_args,
+                           'extra_link_args': ['-framework', 'Carbon'],
+                          }
+            CARBON_EXTS = ['ColorPicker', 'gestalt', 'MacOS', 'Nav',
+                           'OSATerminology', 'icglue',
+                           # All these are in subdirs
+                           '_AE', '_AH', '_App', '_CarbonEvt', '_Cm', '_Ctl',
+                           '_Dlg', '_Drag', '_Evt', '_File', '_Folder', '_Fm',
+                           '_Help', '_Icn', '_IBCarbon', '_List',
+                           '_Menu', '_Mlte', '_OSA', '_Res', '_Qd', '_Qdoffs',
+                           '_Scrap', '_Snd', '_TE',
+                          ]
+            for name in CARBON_EXTS:
+                addMacExtension(name, carbon_kwds)
+
+            # Workaround for a bug in the version of gcc shipped with Xcode 3.
+            # The _Win extension should build just like the other Carbon extensions, but
+            # this actually results in a hard crash of the linker.
+            #
+            if '-arch ppc64' in cflags and '-arch ppc' in cflags:
+                win_kwds = {'extra_compile_args': carbon_extra_compile_args + ['-arch', 'i386', '-arch', 'ppc'],
+                               'extra_link_args': ['-framework', 'Carbon', '-arch', 'i386', '-arch', 'ppc'],
+                           }
+                addMacExtension('_Win', win_kwds)
+            else:
+                addMacExtension('_Win', carbon_kwds)
+
+
+            # Application Services & QuickTime
+            app_kwds = {'extra_compile_args': carbon_extra_compile_args,
+                        'extra_link_args': ['-framework','ApplicationServices'],
+                       }
+            addMacExtension('_Launch', app_kwds)
+            addMacExtension('_CG', app_kwds)
+
+            exts.append( Extension('_Qt', ['qt/_Qtmodule.c'],
+                        extra_compile_args=carbon_extra_compile_args,
+                        extra_link_args=['-framework', 'QuickTime',
+                                     '-framework', 'Carbon']) )
+
+
+        self.extensions.extend(exts)
+
+        # Call the method for detecting whether _tkinter can be compiled
+        self.detect_tkinter(inc_dirs, lib_dirs)
+
+        if '_tkinter' not in [e.name for e in self.extensions]:
+            missing.append('_tkinter')
+
+        return missing
+
+    def detect_tkinter_darwin(self, inc_dirs, lib_dirs):
+        # The _tkinter module, using frameworks. Since frameworks are quite
+        # different the UNIX search logic is not sharable.
+        from os.path import join, exists
+        framework_dirs = [
+            '/Library/Frameworks',
+            '/System/Library/Frameworks/',
+            join(os.getenv('HOME'), '/Library/Frameworks')
+        ]
+
+        # Find the directory that contains the Tcl.framework and Tk.framework
+        # bundles.
+        # XXX distutils should support -F!
+        for F in framework_dirs:
+            # both Tcl.framework and Tk.framework should be present
+            for fw in 'Tcl', 'Tk':
+                if not exists(join(F, fw + '.framework')):
+                    break
+            else:
+                # ok, F is now directory with both frameworks. Continure
+                # building
+                break
+        else:
+            # Tk and Tcl frameworks not found. Normal "unix" tkinter search
+            # will now resume.
+            return 0
+
+        # For 8.4a2, we must add -I options that point inside the Tcl and Tk
+        # frameworks. In later release we should hopefully be able to pass
+        # the -F option to gcc, which specifies a framework lookup path.
+        #
+        include_dirs = [
+            join(F, fw + '.framework', H)
+            for fw in 'Tcl', 'Tk'
+            for H in 'Headers', 'Versions/Current/PrivateHeaders'
+        ]
+
+        # For 8.4a2, the X11 headers are not included. Rather than include a
+        # complicated search, this is a hard-coded path. It could bail out
+        # if X11 libs are not found...
+        include_dirs.append('/usr/X11R6/include')
+        frameworks = ['-framework', 'Tcl', '-framework', 'Tk']
+
+        # All existing framework builds of Tcl/Tk don't support 64-bit
+        # architectures.
+        cflags = sysconfig.get_config_vars('CFLAGS')[0]
+        archs = re.findall('-arch\s+(\w+)', cflags)
+        fp = os.popen("file %s/Tk.framework/Tk | grep 'for architecture'"%(F,))
+        detected_archs = []
+        for ln in fp:
+            a = ln.split()[-1]
+            if a in archs:
+                detected_archs.append(ln.split()[-1])
+        fp.close()
+
+        for a in detected_archs:
+            frameworks.append('-arch')
+            frameworks.append(a)
+
+        ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
+                        define_macros=[('WITH_APPINIT', 1)],
+                        include_dirs = include_dirs,
+                        libraries = [],
+                        extra_compile_args = frameworks[2:],
+                        extra_link_args = frameworks,
+                        )
+        self.extensions.append(ext)
+        return 1
+
+
+    def detect_tkinter(self, inc_dirs, lib_dirs):
+        # The _tkinter module.
+
+        # Rather than complicate the code below, detecting and building
+        # AquaTk is a separate method. Only one Tkinter will be built on
+        # Darwin - either AquaTk, if it is found, or X11 based Tk.
+        platform = self.get_platform()
+        if (platform == 'darwin' and
+            self.detect_tkinter_darwin(inc_dirs, lib_dirs)):
+            return
+
+        # 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, 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
+            # they're put in /usr/include/{tcl,tk}X.Y
+            dotversion = version
+            if '.' not in dotversion and "bsd" in sys.platform.lower():
+                # OpenBSD and FreeBSD use Tcl/Tk library names like libtcl83.a,
+                # but the include subdirs are named like .../include/tcl8.3.
+                dotversion = dotversion[:-1] + '.' + dotversion[-1]
+            tcl_include_sub = []
+            tk_include_sub = []
+            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)
+
+        if (tcllib is None or tklib is None or
+            tcl_includes is None or tk_includes is None):
+            self.announce("INFO: Can't locate Tcl/Tk libs and/or headers", 2)
+            return
+
+        # OK... everything seems to be present for Tcl/Tk.
+
+        include_dirs = [] ; libs = [] ; defs = [] ; added_lib_dirs = []
+        for dir in tcl_includes + tk_includes:
+            if dir not in include_dirs:
+                include_dirs.append(dir)
+
+        # Check for various platform-specific directories
+        if platform == 'sunos5':
+            include_dirs.append('/usr/openwin/include')
+            added_lib_dirs.append('/usr/openwin/lib')
+        elif os.path.exists('/usr/X11R6/include'):
+            include_dirs.append('/usr/X11R6/include')
+            added_lib_dirs.append('/usr/X11R6/lib64')
+            added_lib_dirs.append('/usr/X11R6/lib')
+        elif os.path.exists('/usr/X11R5/include'):
+            include_dirs.append('/usr/X11R5/include')
+            added_lib_dirs.append('/usr/X11R5/lib')
+        else:
+            # Assume default location for X11
+            include_dirs.append('/usr/X11/include')
+            added_lib_dirs.append('/usr/X11/lib')
+
+        # If Cygwin, then verify that X is installed before proceeding
+        if platform == 'cygwin':
+            x11_inc = find_file('X11/Xlib.h', [], include_dirs)
+            if x11_inc is None:
+                return
+
+        # Check for BLT extension
+        if self.compiler.find_library_file(lib_dirs + added_lib_dirs,
+                                           'BLT8.0'):
+            defs.append( ('WITH_BLT', 1) )
+            libs.append('BLT8.0')
+        elif self.compiler.find_library_file(lib_dirs + added_lib_dirs,
+                                           'BLT'):
+            defs.append( ('WITH_BLT', 1) )
+            libs.append('BLT')
+
+        # Add the Tcl/Tk libraries
+        libs.append('tk'+ version)
+        libs.append('tcl'+ version)
+
+        if platform in ['aix3', 'aix4']:
+            libs.append('ld')
+
+        # Finally, link with the X11 libraries (not appropriate on cygwin)
+        if platform != "cygwin":
+            libs.append('X11')
+
+        ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
+                        define_macros=[('WITH_APPINIT', 1)] + defs,
+                        include_dirs = include_dirs,
+                        libraries = libs,
+                        library_dirs = added_lib_dirs,
+                        runtime_library_dirs = added_lib_dirs
+                        )
+        self.extensions.append(ext)
+
+##         # Uncomment these lines if you want to play with xxmodule.c
+##         ext = Extension('xx', ['xxmodule.c'])
+##         self.extensions.append(ext)
+
+        # XXX handle these, but how to detect?
+        # *** Uncomment and edit for PIL (TkImaging) extension only:
+        #       -DWITH_PIL -I../Extensions/Imaging/libImaging  tkImaging.c \
+        # *** Uncomment and edit for TOGL extension only:
+        #       -DWITH_TOGL togl.c \
+        # *** Uncomment these for TOGL extension only:
+        #       -lGL -lGLU -lXext -lXmu \
+
+    def configure_ctypes_darwin(self, ext):
+        # Darwin (OS X) uses preconfigured files, in
+        # the Modules/_ctypes/libffi_osx directory.
+        (srcdir,) = sysconfig.get_config_vars('srcdir')
+        ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
+                                                  '_ctypes', 'libffi_osx'))
+        sources = [os.path.join(ffi_srcdir, p)
+                   for p in ['ffi.c',
+                             'x86/darwin64.S',
+                             'x86/x86-darwin.S',
+                             'x86/x86-ffi_darwin.c',
+                             'x86/x86-ffi64.c',
+                             'powerpc/ppc-darwin.S',
+                             'powerpc/ppc-darwin_closure.S',
+                             'powerpc/ppc-ffi_darwin.c',
+                             'powerpc/ppc64-darwin_closure.S',
+                             ]]
+
+        # Add .S (preprocessed assembly) to C compiler source extensions.
+        self.compiler.src_extensions.append('.S')
+
+        include_dirs = [os.path.join(ffi_srcdir, 'include'),
+                        os.path.join(ffi_srcdir, 'powerpc')]
+        ext.include_dirs.extend(include_dirs)
+        ext.sources.extend(sources)
+        return True
+
+    def configure_ctypes(self, ext):
+        if not self.use_system_libffi:
+            if sys.platform == 'darwin':
+                return self.configure_ctypes_darwin(ext)
+
+            (srcdir,) = sysconfig.get_config_vars('srcdir')
+            ffi_builddir = os.path.join(self.build_temp, 'libffi')
+            ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
+                                         '_ctypes', 'libffi'))
+            ffi_configfile = os.path.join(ffi_builddir, 'fficonfig.py')
+
+            from distutils.dep_util import newer_group
+
+            config_sources = [os.path.join(ffi_srcdir, fname)
+                              for fname in os.listdir(ffi_srcdir)
+                              if os.path.isfile(os.path.join(ffi_srcdir, fname))]
+            if self.force or newer_group(config_sources,
+                                         ffi_configfile):
+                from distutils.dir_util import mkpath
+                mkpath(ffi_builddir)
+                config_args = []
+
+                # Pass empty CFLAGS because we'll just append the resulting
+                # CFLAGS to Python's; -g or -O2 is to be avoided.
+                cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
+                      % (ffi_builddir, ffi_srcdir, " ".join(config_args))
+
+                res = os.system(cmd)
+                if res or not os.path.exists(ffi_configfile):
+                    print "Failed to configure _ctypes module"
+                    return False
+
+            fficonfig = {}
+            execfile(ffi_configfile, globals(), fficonfig)
+            ffi_srcdir = os.path.join(fficonfig['ffi_srcdir'], 'src')
+
+            # Add .S (preprocessed assembly) to C compiler source extensions.
+            self.compiler.src_extensions.append('.S')
+
+            include_dirs = [os.path.join(ffi_builddir, 'include'),
+                            ffi_builddir, ffi_srcdir]
+            extra_compile_args = fficonfig['ffi_cflags'].split()
+
+            ext.sources.extend(fficonfig['ffi_sources'])
+            ext.include_dirs.extend(include_dirs)
+            ext.extra_compile_args.extend(extra_compile_args)
+        return True
+
+    def detect_ctypes(self, inc_dirs, lib_dirs):
+        self.use_system_libffi = False
+        include_dirs = []
+        extra_compile_args = []
+        extra_link_args = []
+        sources = ['_ctypes/_ctypes.c',
+                   '_ctypes/callbacks.c',
+                   '_ctypes/callproc.c',
+                   '_ctypes/stgdict.c',
+                   '_ctypes/cfield.c',
+                   '_ctypes/malloc_closure.c']
+        depends = ['_ctypes/ctypes.h']
+
+        if sys.platform == 'darwin':
+            sources.append('_ctypes/darwin/dlfcn_simple.c')
+            extra_compile_args.append('-DMACOSX')
+            include_dirs.append('_ctypes/darwin')
+# XXX Is this still needed?
+##            extra_link_args.extend(['-read_only_relocs', 'warning'])
+
+        elif sys.platform == 'sunos5':
+            # XXX This shouldn't be necessary; it appears that some
+            # of the assembler code is non-PIC (i.e. it has relocations
+            # when it shouldn't. The proper fix would be to rewrite
+            # the assembler code to be PIC.
+            # This only works with GCC; the Sun compiler likely refuses
+            # this option. If you want to compile ctypes with the Sun
+            # compiler, please research a proper solution, instead of
+            # finding some -z option for the Sun compiler.
+            extra_link_args.append('-mimpure-text')
+
+        elif sys.platform.startswith('hp-ux'):
+            extra_link_args.append('-fPIC')
+
+        ext = Extension('_ctypes',
+                        include_dirs=include_dirs,
+                        extra_compile_args=extra_compile_args,
+                        extra_link_args=extra_link_args,
+                        libraries=[],
+                        sources=sources,
+                        depends=depends)
+        ext_test = Extension('_ctypes_test',
+                             sources=['_ctypes/_ctypes_test.c'])
+        self.extensions.extend([ext, ext_test])
+
+        if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):
+            return
+
+        if sys.platform == 'darwin':
+            # OS X 10.5 comes with libffi.dylib; the include files are
+            # in /usr/include/ffi
+            inc_dirs.append('/usr/include/ffi')
+
+        ffi_inc = find_file('ffi.h', [], inc_dirs)
+        if ffi_inc is not None:
+            ffi_h = ffi_inc[0] + '/ffi.h'
+            fp = open(ffi_h)
+            while 1:
+                line = fp.readline()
+                if not line:
+                    ffi_inc = None
+                    break
+                if line.startswith('#define LIBFFI_H'):
+                    break
+        ffi_lib = None
+        if ffi_inc is not None:
+            for lib_name in ('ffi_convenience', 'ffi_pic', 'ffi'):
+                if (self.compiler.find_library_file(lib_dirs, lib_name)):
+                    ffi_lib = lib_name
+                    break
+
+        if ffi_inc and ffi_lib:
+            ext.include_dirs.extend(ffi_inc)
+            ext.libraries.append(ffi_lib)
+            self.use_system_libffi = True
+
+
+class PyBuildInstall(install):
+    # Suppress the warning about installation into the lib_dynload
+    # directory, which is not in sys.path when running Python during
+    # installation:
+    def initialize_options (self):
+        install.initialize_options(self)
+        self.warn_dir=0
+
+class PyBuildInstallLib(install_lib):
+    # Do exactly what install_lib does but make sure correct access modes get
+    # set on installed directories and files. All installed files with get
+    # mode 644 unless they are a shared library in which case they will get
+    # mode 755. All installed directories will get mode 755.
+
+    so_ext = sysconfig.get_config_var("SO")
+
+    def install(self):
+        outfiles = install_lib.install(self)
+        self.set_file_modes(outfiles, 0644, 0755)
+        self.set_dir_modes(self.install_dir, 0755)
+        return outfiles
+
+    def set_file_modes(self, files, defaultMode, sharedLibMode):
+        if not self.is_chmod_supported(): return
+        if not files: return
+
+        for filename in files:
+            if os.path.islink(filename): continue
+            mode = defaultMode
+            if filename.endswith(self.so_ext): mode = sharedLibMode
+            log.info("changing mode of %s to %o", filename, mode)
+            if not self.dry_run: os.chmod(filename, mode)
+
+    def set_dir_modes(self, dirname, mode):
+        if not self.is_chmod_supported(): return
+        os.path.walk(dirname, self.set_dir_modes_visitor, mode)
+
+    def set_dir_modes_visitor(self, mode, dirname, names):
+        if os.path.islink(dirname): return
+        log.info("changing mode of %s to %o", dirname, mode)
+        if not self.dry_run: os.chmod(dirname, mode)
+
+    def is_chmod_supported(self):
+        return hasattr(os, 'chmod')
+
+SUMMARY = """
+Python is an interpreted, interactive, object-oriented programming
+language. It is often compared to Tcl, Perl, Scheme or Java.
+
+Python combines remarkable power with very clear syntax. It has
+modules, classes, exceptions, very high level dynamic data types, and
+dynamic typing. There are interfaces to many system calls and
+libraries, as well as to various windowing systems (X11, Motif, Tk,
+Mac, MFC). New built-in modules are easily written in C or C++. Python
+is also usable as an extension language for applications that need a
+programmable interface.
+
+The Python implementation is portable: it runs on many brands of UNIX,
+on Windows, DOS, OS/2, Mac, Amiga... If your favorite system isn't
+listed here, it may still be supported, if there's a C compiler for
+it. Ask around on comp.lang.python -- or just try compiling Python
+yourself.
+"""
+
+CLASSIFIERS = """
+Development Status :: 6 - Mature
+License :: OSI Approved :: Python Software Foundation License
+Natural Language :: English
+Programming Language :: C
+Programming Language :: Python
+Topic :: Software Development
+"""
+
+def main():
+    # turn off warnings when deprecated modules are imported
+    import warnings
+    warnings.filterwarnings("ignore",category=DeprecationWarning)
+    setup(# PyPI Metadata (PEP 301)
+          name = "Python",
+          version = sys.version.split()[0],
+          url = "http://www.python.org/%s" % sys.version[:3],
+          maintainer = "Guido van Rossum and the Python community",
+          maintainer_email = "python-dev@python.org",
+          description = "A high-level object-oriented programming language",
+          long_description = SUMMARY.strip(),
+          license = "PSF license",
+          classifiers = filter(None, CLASSIFIERS.split("\n")),
+          platforms = ["Many"],
+
+          # Build info
+          cmdclass = {'build_ext':PyBuildExt, 'install':PyBuildInstall,
+                      'install_lib':PyBuildInstallLib},
+          # The struct module is defined here, because build_ext won't be
+          # called unless there's at least one extension module defined.
+          ext_modules=[Extension('_struct', ['_struct.c'])],
+
+          # Scripts to install
+          scripts = ['Tools/scripts/pydoc', 'Tools/scripts/idle',
+                     'Tools/scripts/2to3',
+                     'Lib/smtpd.py']
+        )
+
+# --install-platlib
+if __name__ == '__main__':
+    main()
diff --git Python-2.6.4/Lib/test/ucredtext.py Python-2.6.4/Lib/test/ucredtext.py
new file mode 100644
--- /dev/null    2011-02-12 03:14:16.000000000 -0600
+++ Python-2.6.4/Lib/test/ucredtest.py    2011-01-20 13:52:42.945657919 -0600
@@ -0,0 +1,45 @@
+#!/usr/bin/python2.6
+
+import ucred
+import os
+
+uc = ucred.get(os.getpid())
+
+print "pid = %d" % uc.getpid()
+print "euid = %d" % uc.geteuid()
+print "ruid = %d" % uc.getruid()
+print "suid = %d" % uc.getsuid()
+print "egid = %d" % uc.getegid()
+print "rgid = %d" % uc.getrgid()
+print "sgid = %d" % uc.getsgid()
+print "zoneid = %d" % uc.getzoneid()
+print "projid = %d" % uc.getprojid()
+print "groups = %s" % uc.getgroups()
+print "label = %s" % uc.getlabel()
+
+print "getpflags(0x1) = %d" % uc.getpflags(0x1)
+print "getpflags(0x2) = %d" % uc.getpflags(0x2)
+print "has_priv(Effective, proc_fork) = %d" % uc.has_priv("Effective", "proc_fork")
+print "has_priv(Permitted, proc_fork) = %d" % uc.has_priv("Permitted", "proc_fork")
+print "has_priv(Inheritable, proc_fork) = %d" % uc.has_priv("Inheritable", "proc_fork")
+print "has_priv(Limit, file_setid) = %d" % uc.has_priv("Limit", "file_setid")
+print "has_priv(Effective, file_setid) = %d" % uc.has_priv("Effective", "file_setid")
+try:
+    uc.has_priv("Effective", "proc_bork")
+except OSError, e:
+    print e
+try:
+    uc.has_priv("Defective", "proc_fork")
+except OSError, e:
+    print e
+try:
+    uc.has_priv("Defective", "proc_bork")
+except OSError, e:
+    print e
+
+del uc
+uc = ucred.ucred()
+try:
+    uc.getpid()
+except OSError, e:
+    print e
components/python/python26/Python26-10-gethostname.patch
New file
@@ -0,0 +1,15 @@
diff --git Python-2.6.4/Include/pyport.h Python-2.6.4/Include/pyport.h
--- Python-2.6.4/Include/pyport.h
+++ Python-2.6.4/Include/pyport.h
@@ -449,11 +449,6 @@
 in platform-specific #ifdefs.
 **************************************************************************/
-#ifdef SOLARIS
-/* Unchecked */
-extern int gethostname(char *, int);
-#endif
-
 #ifdef __BEOS__
 /* Unchecked */
 /* It's in the libs, but not the headers... - [cjh] */
components/python/python26/Python26-11-dlpi.patch
New file
@@ -0,0 +1,1328 @@
diff --git Python-2.6.4/Modules/dlpimodule.c Python-2.6.4/Modules/dlpimodule.c
new file mode 100644
--- /dev/null
+++ Python-2.6.4/Modules/dlpimodule.c
@@ -0,0 +1,1206 @@
+/*
+ * 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 <libdlpi.h>
+
+typedef struct {
+    PyObject_HEAD
+    dlpi_handle_t dlpihdl;
+} pylink_t;
+
+typedef struct {
+    PyObject *pyfunc;
+    PyObject *pyarg;
+} callback_data_t;
+
+/*
+ * dlpi_err: the only exception raised for libdlpi related error.
+ * The accompanying value is:
+ * (dlpi_error_number, string), when it's a dlpi specific error,
+ * or, (DL_SYSERR, errno, string), when it's coming from a system call.
+ */
+static PyObject *dlpi_err;
+
+static void
+dlpi_raise_exception(int err)
+{
+    PyObject *e = NULL;
+
+    if (err == DL_SYSERR) {
+        e = Py_BuildValue("(iis)", DL_SYSERR, errno, strerror(errno));
+    } else {
+        e = Py_BuildValue("(is)", err, dlpi_strerror(err));
+    }
+    if (e != NULL) {
+        PyErr_SetObject(dlpi_err, e);
+        Py_DECREF(e);
+    }
+}
+
+PyDoc_STRVAR(link_doc,
+    "link(linkname[, flags]) -> link object\n"
+    "\n"
+    "Open linkname with specified flags.\n"
+    "Three flags are supported: PASSIVE, RAW, NATIVE.\n"
+    "And these flags can be bitwise-OR'ed together(default flag is 0).\n"
+    "You need sys_net_rawaccess privilege to open a link.\n"
+    "See dlpi_open(3DLPI).\n"
+);
+static int
+link_init(PyObject *self, PyObject *args, PyObject *kwds)
+{
+    uint_t flags = 0;
+    dlpi_handle_t dh;
+    char *linkname;
+    int rval;
+    static char *keywords[] = {"linkname", "flags", NULL};
+    pylink_t *link = (pylink_t *)self;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|I", keywords,
+        &linkname, &flags))
+        return (-1);
+
+    if ((rval = dlpi_open(linkname, &dh, flags)) != DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (-1);
+    }
+
+    link->dlpihdl = dh;
+
+    return (0);
+}
+
+static void
+link_dealloc(pylink_t *link)
+{
+    if (link->dlpihdl != NULL)
+        dlpi_close(link->dlpihdl);
+    link->ob_type->tp_free((PyObject *)link);
+}
+
+PyDoc_STRVAR(bind_doc,
+    "bind(sap) -> unsigned int\n"
+    "\n"
+    "Attempts to bind the link to specified SAP, or ANY_SAP.\n"
+    "Returns the SAP that the function actually bound to, which\n"
+    "could be different from the SAP requested.\n"
+    "See dlpi_bind(3DLPI).\n"
+);
+static PyObject *
+link_bind(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    uint_t sap = 0, boundsap = 0;
+    static char *keywords[] = {"sap", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", keywords, &sap))
+        return (NULL);
+
+    if ((rval = dlpi_bind(link->dlpihdl, sap, &boundsap)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("I", boundsap));
+}
+
+PyDoc_STRVAR(unbind_doc,
+    "unbind() -> None\n"
+    "\n"
+    "Attempts to unbind the link from previously bound sap.\n"
+    "See dlpi_unbind(3DLPI).\n"
+);
+static PyObject *
+link_unbind(pylink_t *link)
+{
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_unbind(link->dlpihdl)) != DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+PyDoc_STRVAR(send_doc,
+    "send(destaddr, message[, sap, minpri, maxpri]) -> None\n"
+    "\n"
+    "Attempts to send message over this link to sap on destaddr.\n"
+    "If SAP is not specified, the bound SAP is used\n"
+    "You can also specify priority range (minpri, maxpri).\n"
+    "See dlpi_send(3DLPI).\n"
+);
+static PyObject *
+link_send(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    char *daddr = NULL, *msgbuf = NULL;
+    size_t daddrlen = 0, msglen = 0;
+    t_scalar_t minpri = DL_QOS_DONT_CARE, maxpri = DL_QOS_DONT_CARE;
+    uint_t sap = DLPI_ANY_SAP;
+    dlpi_sendinfo_t ds, *dsp = NULL;
+    static char *keywords[] =
+        {"destaddr", "message", "sap", "minpri", "maxpri", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "s#s#|Iii", keywords,
+        &daddr, &daddrlen, &msgbuf, &msglen, &sap, &minpri, &maxpri))
+        return (NULL);
+
+    if ((sap != DLPI_ANY_SAP) || (minpri != DL_QOS_DONT_CARE) ||
+        (maxpri != DL_QOS_DONT_CARE)) {
+        ds.dsi_sap = sap;
+        ds.dsi_prio.dl_min = minpri;
+        ds.dsi_prio.dl_max = maxpri;
+        dsp = &ds;
+    }
+
+    if ((rval = dlpi_send(link->dlpihdl, daddr, daddrlen,
+        msgbuf, msglen, dsp)) != DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+PyDoc_STRVAR(recv_doc,
+    "recv(msglen[, timeout]) -> (string, string), or (None, None)\n"
+    "\n"
+    "Attempts to receive message over this link.\n"
+    "You need to specify the message length for the received message.\n"
+    "And you can specify timeout value in milliseconds.\n"
+    "The default timeout value is -1 (wait forever).\n"
+    "Returns (source address, message data), or (None, None) when error occurs.\n"
+    "See dlpi_recv(3DLPI).\n"
+);
+static PyObject *
+link_recv(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    PyObject *obj;
+    char *saddr = NULL, *msgbuf = NULL;
+    size_t saddrlen = 0, msglen = 0, *saddrlenp = NULL, *msglenp = NULL;
+    int msec = -1; /* block until receive data */
+    static char *keywords[] = {"msglen", "timeout", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "k|i",
+        keywords, &msglen, &msec))
+        return (NULL);
+
+    if (msglen > 0) {
+        msgbuf = malloc(msglen);
+        if (msgbuf == NULL) {
+            dlpi_raise_exception(DL_SYSERR);
+            return (NULL);
+        }
+        saddrlen = DLPI_PHYSADDR_MAX;
+        saddr = malloc(saddrlen);
+        if (saddr == NULL) {
+            dlpi_raise_exception(DL_SYSERR);
+            free(msgbuf);
+            return (NULL);
+        }
+        msglenp = &msglen;
+        saddrlenp = &saddrlen;
+    }
+
+    if ((rval = dlpi_recv(link->dlpihdl, saddr, saddrlenp, msgbuf,
+        msglenp, msec, NULL)) != DLPI_SUCCESS) {
+        if (msgbuf != NULL)
+            free(msgbuf);
+        if (saddr != NULL)
+            free(saddr);
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    obj = Py_BuildValue("s#s#", saddr, saddrlen, msgbuf, msglen);
+    if (msgbuf != NULL)
+        free(msgbuf);
+    if (saddr != NULL)
+        free(saddr);
+    return (obj);
+}
+
+PyDoc_STRVAR(disabmulti_doc,
+    "disabmulti(address) -> None\n"
+    "\n"
+    "Disable a specified multicast address on this link.\n"
+    "See dlpi_disabmulti(3DLPI).\n"
+);
+static PyObject *
+link_disabmulti(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    char *addr = NULL;
+    size_t addrlen = 0;
+    static char *keywords[] = {"address", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "s#", keywords,
+        &addr, &addrlen))
+        return (NULL);
+
+    if ((addrlen == 0) || (addrlen > DLPI_PHYSADDR_MAX)) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_disabmulti(link->dlpihdl, addr, addrlen)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+PyDoc_STRVAR(enabmulti_doc,
+    "enabmulti(address) -> None\n"
+    "\n"
+    "Enable a specified multicast address on this link.\n"
+    "See dlpi_enabmulti(3DLPI).\n"
+);
+static PyObject *
+link_enabmulti(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    char *addr = NULL;
+    size_t addrlen = 0;
+    static char *keywords[] = {"address", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "s#", keywords,
+        &addr, &addrlen))
+        return (NULL);
+
+    if ((addrlen == 0) || (addrlen > DLPI_PHYSADDR_MAX)) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_enabmulti(link->dlpihdl, addr, addrlen)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+static void
+dlpi_callback(dlpi_handle_t hdl, dlpi_notifyinfo_t *ni, void *arg)
+{
+    callback_data_t *cd = (callback_data_t *)arg;
+    PyObject *arglist, *result;
+
+    switch (ni->dni_note) {
+    case DL_NOTE_SPEED:
+        arglist = Py_BuildValue("(OII)",
+            cd->pyarg, ni->dni_note, ni->dni_speed);
+        break;
+    case DL_NOTE_SDU_SIZE:
+        arglist = Py_BuildValue("(OII)",
+            cd->pyarg, ni->dni_note, ni->dni_size);
+        break;
+    case DL_NOTE_PHYS_ADDR:
+        arglist = Py_BuildValue("(OIs#)",
+            cd->pyarg, ni->dni_note, ni->dni_physaddr,
+            ni->dni_physaddrlen);
+        break;
+    default:
+        arglist = Py_BuildValue("(OIO)", cd->pyarg, ni->dni_note,
+            Py_None);
+    }
+
+    result = PyEval_CallObject(cd->pyfunc, arglist);
+    Py_DECREF(arglist);
+    if (result == NULL) {
+        PyErr_Clear(); /* cannot raise error */
+    }
+    Py_DECREF(result);
+    Py_DECREF(cd->pyfunc);
+    Py_XDECREF(cd->pyarg);
+    free(cd);
+}
+
+PyDoc_STRVAR(enabnotify_doc,
+    "enabnotify(events, function[, arg]) -> unsigned long\n"
+    "\n"
+    "Enables a notification callback for the set of specified events,\n"
+    "which must be one or more (by a logical OR) events listed as below:\n"
+    "NOTE_LINK_DOWN         Notify when link has gone down\n"
+    "NOTE_LINK_UP           Notify when link has come up\n"
+    "NOTE_PHYS_ADDR         Notify when address changes\n"
+    "NOTE_SDU_SIZE          Notify when MTU changes\n"
+    "NOTE_SPEED             Notify when speed changes\n"
+    "NOTE_PROMISC_ON_PHYS   Notify when PROMISC_PHYS is set\n"
+    "NOTE_PROMISC_OFF_PHYS  Notify when PROMISC_PHYS is cleared\n"
+    "Returns a handle for this registration.\n"
+    "See dlpi_enabnotify(3DLPI).\n"
+);
+static PyObject *
+link_enabnotify(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    PyObject *func = NULL, *arg = NULL;
+    callback_data_t *cd;
+    uint_t notes = 0;
+    static char *keywords[] = {"events", "function", "arg", NULL};
+    dlpi_notifyid_t id;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "IO|O",
+        keywords, &notes, &func, &arg))
+        return (NULL);
+
+    if (!PyCallable_Check(func)) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    cd = malloc(sizeof(callback_data_t));
+    if (cd == NULL) {
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+    Py_INCREF(func);
+    Py_XINCREF(arg);
+    cd->pyfunc = func;
+    cd->pyarg = arg;
+
+    if ((rval = dlpi_enabnotify(link->dlpihdl, notes, dlpi_callback,
+        cd, &id)) != DLPI_SUCCESS) {
+        free(cd);
+        Py_DECREF(func);
+        Py_XDECREF(arg);
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("k", id));
+}
+
+PyDoc_STRVAR(disabnotify_doc,
+    "disabnotify(handle) -> argument object, or None\n"
+    "\n"
+    "Disables the notification registration associated with handle.\n"
+    "You should get this handle by calling enabnotify().\n"
+    "Returns the argument passed in when registering the callback, or None.\n"
+    "See dlpi_disabnotify(3DLPI).\n"
+);
+static PyObject *
+link_disabnotify(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    dlpi_notifyid_t id;
+    callback_data_t *arg;
+    PyObject *pyargsaved;
+    static char *keywords[] = {"handle", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "k", keywords, &id))
+        return (NULL);
+
+    if ((rval = dlpi_disabnotify(link->dlpihdl, id, (void **)&arg)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    /* clean up */
+    pyargsaved = arg->pyarg;
+    Py_XINCREF(pyargsaved);
+    Py_XDECREF(arg->pyarg);
+    Py_DECREF(arg->pyfunc);
+    free(arg);
+
+    if (pyargsaved != NULL)
+        return (pyargsaved);
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+PyDoc_STRVAR(get_sap_doc,
+    "get_sap() -> unsigned int\n"
+    "\n"
+    "Returns the sap bound to this link.\n"
+    "See dlpi_info(3DLPI).\n"
+);
+static PyObject *
+link_get_sap(pylink_t *link)
+{
+    dlpi_info_t info;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_info(link->dlpihdl, &info, 0)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("I", info.di_sap));
+}
+
+PyDoc_STRVAR(get_fd_doc,
+    "get_fd() -> int\n"
+    "\n"
+    "Returns the integer file descriptor that can be used to directly\n"
+    "operate on the link.\n"
+    "See dlpi_fd(3DLPI).\n"
+);
+static PyObject *
+link_get_fd(pylink_t *link)
+{
+    int fd;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((fd = dlpi_fd(link->dlpihdl)) == -1) {
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("i", fd));
+}
+
+PyDoc_STRVAR(get_linkname_doc,
+    "get_linkname() -> string\n"
+    "\n"
+    "Returns the name of the link.\n"
+    "See dlpi_linkname(3DLPI).\n"
+);
+static PyObject *
+link_get_linkname(pylink_t *link)
+{
+    const char *name = NULL;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((name = dlpi_linkname(link->dlpihdl)) == NULL) {
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("s", name));
+}
+
+PyDoc_STRVAR(get_bcastaddr_doc,
+    "get_bcastaddr() -> string, or None\n"
+    "\n"
+    "Returns the broadcast address of the link.\n"
+    "Returns None if the broadcast address is empty.\n"
+    "See dlpi_info(3DLPI).\n"
+);
+static PyObject *
+link_get_bcastaddr(pylink_t *link)
+{
+    char *addr[DLPI_PHYSADDR_MAX];
+    size_t addrlen = 0;
+    dlpi_info_t info;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_info(link->dlpihdl, &info, 0)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    if (info.di_bcastaddrlen == 0) {
+        Py_INCREF(Py_None);
+        return (Py_None);
+    }
+
+    return (Py_BuildValue("s#", info.di_bcastaddr, info.di_bcastaddrlen));
+}
+
+PyDoc_STRVAR(get_physaddr_doc,
+    "get_physaddr(addrtype) -> string, or None\n"
+    "\n"
+    "Addrtype can be any one of the value listed below:\n"
+    "FACT_PHYS_ADDR    Factory physical address\n"
+    "CURR_PHYS_ADDR    Current physical address\n"
+    "Returns the corresponding physical address of the link.\n"
+    "See dlpi_get_physaddr(3DLPI).\n"
+);
+static PyObject *
+link_get_physaddr(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    char *addr[DLPI_PHYSADDR_MAX];
+    size_t addrlen = DLPI_PHYSADDR_MAX;
+    static char *keywords[] = {"addrtype", NULL};
+    uint_t type;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", keywords, &type))
+        return (NULL);
+
+    if ((rval = dlpi_get_physaddr(link->dlpihdl, type, addr, &addrlen)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("s#", addr, addrlen));
+}
+
+PyDoc_STRVAR(set_physaddr_doc,
+    "set_physaddr(address) -> None\n"
+    "\n"
+    "Sets the physical address of the link.\n"
+    "See dlpi_set_physaddr(3DLPI).\n"
+);
+static PyObject *
+link_set_physaddr(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    char *addr = NULL;
+    size_t addrlen = 0;
+    static char *keywords[] = {"address", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "s#", keywords,
+        &addr, &addrlen))
+        return (NULL);
+
+    if ((rval = dlpi_set_physaddr(link->dlpihdl, DL_CURR_PHYS_ADDR,
+        addr, addrlen)) != DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+PyDoc_STRVAR(promiscon_doc,
+    "promiscon([level]) -> None\n"
+    "\n"
+    "Enables promiscuous mode for the link at levels:\n"
+    "PROMISC_PHYS     Promiscuous mode at the physical level(default)\n"
+    "PROMISC_SAP      Promiscuous mode at the SAP level\n"
+    "PROMISC_MULTI    Promiscuous mode for all multicast addresses\n"
+    "See dlpi_promiscon(3DLPI).\n"
+);
+static PyObject *
+link_promiscon(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    uint_t level = DL_PROMISC_PHYS;
+    static char *keywords[] = {"level", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|I", keywords, &level))
+        return (NULL);
+
+    if ((rval = dlpi_promiscon(link->dlpihdl, level)) != DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+PyDoc_STRVAR(promiscoff_doc,
+    "promiscoff([level]) -> None\n"
+    "\n"
+    "Disables promiscuous mode for the link at levels:\n"
+    "PROMISC_PHYS     Promiscuous mode at the physical level(default)\n"
+    "PROMISC_SAP      Promiscuous mode at the SAP level\n"
+    "PROMISC_MULTI    Promiscuous mode for all multicast addresses\n"
+    "See dlpi_promiscoff(3DLPI).\n"
+);
+static PyObject *
+link_promiscoff(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    uint_t level = DL_PROMISC_PHYS;
+    static char *keywords[] = {"level", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|I", keywords, &level))
+        return (NULL);
+
+    if ((rval = dlpi_promiscoff(link->dlpihdl, level)) != DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+PyDoc_STRVAR(get_timeout_doc,
+    "get_timeout() -> int\n"
+    "\n"
+    "Returns current time out value of the link.\n"
+    "See dlpi_info(3DLPI).\n"
+);
+static PyObject *
+link_get_timeout(pylink_t *link)
+{
+    dlpi_info_t info;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_info(link->dlpihdl, &info, 0)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("i", info.di_timeout));
+}
+
+PyDoc_STRVAR(get_mactype_doc,
+    "get_mactype() -> unsigned char\n"
+    "\n"
+    "Returns MAC type of the link.\n"
+    "See <sys/dlpi.h> for the list of possible MAC types.\n"
+    "See dlpi_info(3DLPI).\n"
+);
+static PyObject *
+link_get_mactype(pylink_t *link)
+{
+    dlpi_info_t info;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_info(link->dlpihdl, &info, 0)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("B", info.di_mactype));
+}
+
+PyDoc_STRVAR(set_timeout_doc,
+    "set_timeout(timeout) -> None\n"
+    "\n"
+    "Sets time out value of the link (default value: DEF_TIMEOUT).\n"
+    "See dlpi_set_timeout(3DLPI).\n"
+);
+static PyObject *
+link_set_timeout(pylink_t *link, PyObject *args, PyObject *kwds)
+{
+    int timeout = DLPI_DEF_TIMEOUT;
+    static char *keywords[] = {"timeout", NULL};
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", keywords, &timeout))
+        return (NULL);
+
+    if ((rval = dlpi_set_timeout(link->dlpihdl, timeout)) != DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+PyDoc_STRVAR(get_sdu_doc,
+    "get_sdu() -> (unsigned int, unsigned int)\n"
+    "\n"
+    "Returns (min sdu, max sdu).\n"
+    "See dlpi_info(3DLPI).\n"
+);
+static PyObject *
+link_get_sdu(pylink_t *link)
+{
+    dlpi_info_t info;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_info(link->dlpihdl, &info, 0)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("II", info.di_min_sdu, info.di_max_sdu));
+}
+
+PyDoc_STRVAR(get_state_doc,
+    "get_state() -> unsigned int\n"
+    "\n"
+    "Returns current state of the link (either UNBOUND or IDLE).\n"
+    "See dlpi_info(3DLPI).\n"
+);
+static PyObject *
+link_get_state(pylink_t *link)
+{
+    dlpi_info_t info;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_info(link->dlpihdl, &info, 0)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("I", info.di_state));
+}
+
+PyDoc_STRVAR(get_qos_select_doc,
+    "get_qos_select() -> (unsigned int, int, int, int)\n"
+    "\n"
+    "Returns (qos type, trans delay, priority, residul err).\n"
+    "Unsupported QOS parameters are set to UNKNOWN.\n"
+    "See dlpi_info(3DLPI).\n"
+);
+static PyObject *
+link_get_qos_select(pylink_t *link)
+{
+    dlpi_info_t info;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_info(link->dlpihdl, &info, 0)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("Iiiii",
+        info.di_qos_sel.dl_qos_type,
+        info.di_qos_sel.dl_trans_delay,
+        info.di_qos_sel.dl_priority,
+        info.di_qos_sel.dl_residual_error));
+}
+
+PyDoc_STRVAR(get_qos_range_doc,
+    "get_qos_range() -> \n"
+    "    (unsigned int, (int, int), (int, int), (int, int), int)\n"
+    "\n"
+    "Returns (qos type, (trans delay target, trans delay accept),\n"
+    "(min priority, max priority), (min protection, max protection),\n"
+    "residual err).\n"
+    "Unsupported QOS range values are set to UNKNOWN.\n"
+    "See dlpi_info(3DLPI).\n"
+);
+static PyObject *
+link_get_qos_range(pylink_t *link)
+{
+    dlpi_info_t info;
+    int rval;
+
+    if (link->dlpihdl == NULL) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    if ((rval = dlpi_info(link->dlpihdl, &info, 0)) !=
+        DLPI_SUCCESS) {
+        dlpi_raise_exception(rval);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("I(ii)(ii)(ii)i",
+        info.di_qos_range.dl_qos_type,
+        info.di_qos_range.dl_trans_delay.dl_target_value,
+        info.di_qos_range.dl_trans_delay.dl_accept_value,
+        info.di_qos_range.dl_priority.dl_min,
+        info.di_qos_range.dl_priority.dl_max,
+        info.di_qos_range.dl_protection.dl_min,
+        info.di_qos_range.dl_protection.dl_max,
+        info.di_qos_range.dl_residual_error));
+}
+
+static PyMethodDef pylink_methods[] = {
+    {"bind", (PyCFunction)link_bind, METH_VARARGS|METH_KEYWORDS, bind_doc},
+    {"unbind", (PyCFunction)link_unbind, METH_NOARGS, unbind_doc},
+    {"send", (PyCFunction)link_send, METH_VARARGS|METH_KEYWORDS,
+        send_doc},
+    {"recv", (PyCFunction)link_recv, METH_VARARGS|METH_KEYWORDS,
+        recv_doc},
+    {"disabmulti", (PyCFunction)link_disabmulti, METH_VARARGS|METH_KEYWORDS,
+        disabmulti_doc},
+    {"enabmulti", (PyCFunction)link_enabmulti, METH_VARARGS|METH_KEYWORDS,
+        enabmulti_doc},
+    {"enabnotify", (PyCFunction)link_enabnotify,
+        METH_VARARGS|METH_KEYWORDS, enabnotify_doc},
+    {"disabnotify", (PyCFunction)link_disabnotify,
+        METH_VARARGS|METH_KEYWORDS, disabnotify_doc},
+    {"get_fd", (PyCFunction)link_get_fd, METH_NOARGS, get_fd_doc},
+    {"get_sap", (PyCFunction)link_get_sap, METH_NOARGS, get_sap_doc},
+    {"get_mactype", (PyCFunction)link_get_mactype, METH_NOARGS,
+        get_mactype_doc},
+    {"get_linkname", (PyCFunction)link_get_linkname, METH_NOARGS,
+        get_linkname_doc},
+    {"get_bcastaddr", (PyCFunction)link_get_bcastaddr, METH_NOARGS,
+        get_bcastaddr_doc},
+    {"get_physaddr", (PyCFunction)link_get_physaddr,
+        METH_VARARGS|METH_KEYWORDS, get_physaddr_doc},
+    {"set_physaddr", (PyCFunction)link_set_physaddr,
+        METH_VARARGS|METH_KEYWORDS, set_physaddr_doc},
+    {"promiscon", (PyCFunction)link_promiscon, METH_VARARGS|METH_KEYWORDS,
+        promiscon_doc},
+    {"promiscoff", (PyCFunction)link_promiscoff, METH_VARARGS|METH_KEYWORDS,
+        promiscoff_doc},
+    {"get_timeout", (PyCFunction)link_get_timeout, METH_NOARGS,
+        get_timeout_doc},
+    {"set_timeout", (PyCFunction)link_set_timeout,
+        METH_VARARGS|METH_KEYWORDS, set_timeout_doc},
+    {"get_sdu", (PyCFunction)link_get_sdu, METH_NOARGS, get_sdu_doc},
+    {"get_state", (PyCFunction)link_get_state, METH_NOARGS,
+        get_state_doc},
+    {"get_qos_select", (PyCFunction)link_get_qos_select, METH_NOARGS,
+        get_qos_select_doc},
+    {"get_qos_range", (PyCFunction)link_get_qos_range, METH_NOARGS,
+        get_qos_range_doc},
+    {NULL}
+};
+
+static PyTypeObject pylink_type = {
+    PyObject_HEAD_INIT(0)    /* Must fill in type value later */
+    0,                    /* ob_size */
+    "dlpi.link",                /* tp_name */
+    sizeof(pylink_t),            /* tp_basicsize */
+    0,                    /* tp_itemsize */
+    (destructor)link_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 */
+    link_doc,                /* tp_doc */
+    0,                    /* tp_traverse */
+    0,                    /* tp_clear */
+    0,                    /* tp_richcompare */
+    0,                    /* tp_weaklistoffset */
+    0,                    /* tp_iter */
+    0,                    /* tp_iternext */
+    pylink_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)link_init,            /* tp_init */
+    0,                    /* tp_alloc */
+    PyType_GenericNew,            /* tp_new */
+    0,                    /* tp_free */
+};
+
+PyDoc_STRVAR(arptype_doc,
+    "arptype(arptype) -> unsigned int\n"
+    "\n"
+    "Converts a DLPI MAC type to an ARP hardware type defined\n"
+    " in <netinet/arp.h>\n"
+    "See dlpi_arptype(3DLPI)\n"
+);
+static PyObject *
+arptype(PyObject *dlpi, PyObject *args, PyObject *kwds)
+{
+    static char *keywords[] = {"arptype", NULL};
+    uint_t dlpityp, arptyp;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", keywords, &dlpityp))
+        return (NULL);
+
+    if ((arptyp = dlpi_arptype(dlpityp)) == 0) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("I", arptyp));
+}
+
+PyDoc_STRVAR(iftype_doc,
+    "iftype(iftype) -> unsigned int\n"
+    "\n"
+    "Converts a DLPI MAC type to a BSD socket interface type\n"
+    "defined in <net/if_types.h>\n"
+    "See dlpi_iftype(3DLPI)\n"
+);
+static PyObject *
+iftype(PyObject *dlpi, PyObject *args, PyObject *kwds)
+{
+    static char *keywords[] = {"iftype", NULL};
+    uint_t dlpityp, iftyp;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", keywords, &dlpityp))
+        return (NULL);
+
+    if ((iftyp = dlpi_iftype(dlpityp)) == 0) {
+        errno = EINVAL;
+        dlpi_raise_exception(DL_SYSERR);
+        return (NULL);
+    }
+
+    return (Py_BuildValue("I", iftyp));
+}
+
+PyDoc_STRVAR(mactype_doc,
+    "mactype(mactype) -> string\n"
+    "\n"
+    "Returns a string that describes the specified mactype.\n"
+    "Valid mac types are defined in <sys/dlpi.h>.\n"
+    "See dlpi_mactype(3DLPI)\n"
+);
+static PyObject *
+mactype(PyObject *dlpi, PyObject *args, PyObject *kwds)
+{
+    static char *keywords[] = {"mactype", NULL};
+    uint_t mactyp;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "I", keywords, &mactyp))
+        return (NULL);
+
+    return (Py_BuildValue("s", dlpi_mactype(mactyp)));
+}
+
+static boolean_t
+link_walker(const char *name, void *arg)
+{
+    PyObject *linkname;
+    PyObject *list = (PyObject *)arg;
+
+    if ((list == NULL) || !PyList_Check(list))
+        return (_B_FALSE);
+
+    linkname = Py_BuildValue("s", name);
+    if (PyList_Append(list, linkname) == -1)
+        return (_B_TRUE);
+
+    Py_DECREF(linkname);
+    return (_B_FALSE);
+}
+
+PyDoc_STRVAR(listlink_doc,
+    "listlink() -> list\n"
+    "\n"
+    "Returns a list containing link names of all links on the system.\n"
+);
+static PyObject *
+listlink(PyObject *dlpi)
+{
+    PyObject *list;
+
+    if ((list = PyList_New(0)) == NULL)
+        return (NULL);
+
+    dlpi_walk(link_walker, list, 0);
+    return (list);
+}
+
+static PyMethodDef dlpi_methods[] = {
+    {"arptype", (PyCFunction)arptype, METH_VARARGS|METH_KEYWORDS,
+        arptype_doc},
+    {"iftype", (PyCFunction)iftype, METH_VARARGS|METH_KEYWORDS,
+        iftype_doc},
+    {"mactype", (PyCFunction)mactype, METH_VARARGS|METH_KEYWORDS,
+        mactype_doc},
+    {"listlink", (PyCFunction)listlink, METH_NOARGS, listlink_doc},
+    {NULL}
+};
+
+PyMODINIT_FUNC
+initdlpi(void)
+{
+    PyObject *mod;
+
+    if (PyType_Ready(&pylink_type) < 0)
+        return;
+
+    mod = Py_InitModule("dlpi", dlpi_methods);
+    if (mod == NULL)
+        return;
+
+    dlpi_err = PyErr_NewException("dlpi.error", NULL, NULL);
+    if (dlpi_err == NULL)
+        return;
+    PyModule_AddObject(mod, "error", dlpi_err);
+
+    Py_INCREF(&pylink_type);
+    PyModule_AddObject(mod, "link", (PyObject *)&pylink_type);
+    PyModule_AddIntConstant(mod, "PASSIVE", DLPI_PASSIVE);
+    PyModule_AddIntConstant(mod, "RAW", DLPI_RAW);
+    PyModule_AddIntConstant(mod, "NATIVE", DLPI_NATIVE);
+    PyModule_AddIntConstant(mod, "ANY_SAP", DLPI_ANY_SAP);
+    PyModule_AddIntConstant(mod, "DEF_TIMEOUT", DLPI_DEF_TIMEOUT);
+    PyModule_AddIntConstant(mod, "NOTE_LINK_DOWN", DL_NOTE_LINK_DOWN);
+    PyModule_AddIntConstant(mod, "NOTE_LINK_UP", DL_NOTE_LINK_UP);
+    PyModule_AddIntConstant(mod, "NOTE_PHYS_ADDR", DL_NOTE_PHYS_ADDR);
+    PyModule_AddIntConstant(mod, "NOTE_SDU_SIZE", DL_NOTE_SDU_SIZE);
+    PyModule_AddIntConstant(mod, "NOTE_SPEED", DL_NOTE_SPEED);
+    PyModule_AddIntConstant(mod, "NOTE_PROMISC_ON_PHYS",
+        DL_NOTE_PROMISC_ON_PHYS);
+    PyModule_AddIntConstant(mod, "NOTE_PROMISC_OFF_PHYS",
+        DL_NOTE_PROMISC_OFF_PHYS);
+    PyModule_AddIntConstant(mod, "FACT_PHYS_ADDR", DL_FACT_PHYS_ADDR);
+    PyModule_AddIntConstant(mod, "CURR_PHYS_ADDR", DL_CURR_PHYS_ADDR);
+    PyModule_AddIntConstant(mod, "PROMISC_PHYS", DL_PROMISC_PHYS);
+    PyModule_AddIntConstant(mod, "PROMISC_SAP", DL_PROMISC_SAP);
+    PyModule_AddIntConstant(mod, "PROMISC_MULTI", DL_PROMISC_MULTI);
+    PyModule_AddIntConstant(mod, "UNKNOWN", DL_UNKNOWN);
+    PyModule_AddIntConstant(mod, "UNBOUND", DL_UNBOUND);
+    PyModule_AddIntConstant(mod, "IDLE", DL_IDLE);
+    PyModule_AddIntConstant(mod, "SYSERR", DL_SYSERR);
+}
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
@@ -1284,6 +1284,12 @@
             exts.append( Extension('ucred', ['ucred.c'],
                                    libraries = ['tsol']) )
+        # dlpi module (Solaris)
+        dlpi_inc = find_file('libdlpi.h', [], inc_dirs)
+        if dlpi_inc is not None:
+            exts.append( Extension('dlpi', ['dlpimodule.c'],
+                                   libraries = ['dlpi']) )
+
         # Thomas Heller's _ctypes module
         self.detect_ctypes(inc_dirs, lib_dirs)
diff --git Python-2.6.4/lib/test/dlpitest.py Python-2.6.4/Lib/test/dlpitest.py
new file mode 100644
--- /dev/null    2011-02-12 03:13:26.000000000 -0600
+++ Python-2.6.4/Lib/test/dlpitest.py    2011-01-20 13:52:42.895865414 -0600
@@ -0,0 +1,96 @@
+#!/usr/bin/python2.6
+
+import dlpi
+import sys
+import time
+import struct
+
+#test listlink
+linklist = dlpi.listlink()
+print "Found %d links:" % len(linklist)
+print linklist
+
+#pick up the first data link for below testing
+linkname = linklist[0]
+
+#open link
+print "opening link: " + linkname + "..."
+testlink = dlpi.link(linkname)
+
+#read some info of testlink
+print "linkname is %s" % testlink.get_linkname()
+print "link fd is %d" % testlink.get_fd()
+mactype = testlink.get_mactype()
+print "dlpi mactype is %d" % mactype
+print "after convert:"
+print "\tmactype is %s" % dlpi.mactype(mactype)
+print "\tiftype is %d" % dlpi.iftype(mactype)
+print "\tarptype is %d" % dlpi.arptype(mactype)
+bcastaddr = testlink.get_bcastaddr()
+print "broadcast addr is: ",
+print struct.unpack("BBBBBB",bcastaddr)
+physaddr = testlink.get_physaddr(dlpi.FACT_PHYS_ADDR)
+print "factory physical address is: ",
+print struct.unpack("BBBBBB",physaddr)
+print "current timeout value is %d" % testlink.get_timeout()
+print "sdu is:",
+print testlink.get_sdu()
+print "qos select is:",
+print testlink.get_qos_select()
+print "qos range is:",
+print testlink.get_qos_range()
+
+#set some config value of testlink and read them again
+print "setting current physiacal addr to aa:0:10:13:27:5"
+testlink.set_physaddr('\xaa\0\x10\x13\x27\5')
+physaddr = testlink.get_physaddr(dlpi.CURR_PHYS_ADDR)
+print "current physical addr is: ",
+print struct.unpack("BBBBBB",physaddr)
+print "set timeout value to 6..."
+testlink.set_timeout(6)
+print "timeout value is %d" % testlink.get_timeout()
+
+#test enable/disable multicast
+print "enable/disable multicast address 1:0:5e:0:0:5"
+testlink.enabmulti('\1\0\x5e\0\0\5')
+testlink.disabmulti('\1\0\x5e\0\0\5')
+
+#test bind
+print "binding to SAP 0x9000..."
+testlink.bind(0x9000)
+print "sap is %x" % testlink.get_sap()
+print "state is: %d"  % testlink.get_state()
+
+#test send
+print "sending broadcast loopback packet..."
+testlink.send(bcastaddr, '\0\1\2\3\4\5')
+
+#test notify functionality
+arg = "notification callback arg"
+def notify(arg, notes, value):
+    print "NOTE_PROMISC_ON_PHYS notification received with arg: '%s'" % arg
+print "enabled notification on NOTE_PROMISC_ON_PHYS"
+id = testlink.enabnotify(dlpi.NOTE_PROMISC_ON_PHYS, notify, arg) #enable notification
+testlink.promiscon() #trigger the event (will be seen while receiving pkt below)
+
+#test receive
+print "testing receiving..."
+try:
+    testlink.recv(0, 0) #should see NOTE_PROMISC_ON_PHYS event here
+except dlpi.error, err:
+    errnum, errinfo = err
+    if errnum == 10006:
+        pass #timeout error is expected here
+    else: #test fails if reach here
+        print "test failed",
+        print errnum,
+        print err
+
+testlink.promiscoff()
+testlink.disabnotify(id) #disable notification
+
+#test unbind
+print "unbinding..."
+testlink.unbind()
+print "sap is %x" % testlink.get_sap()
+print "state is: %d"  % testlink.get_state()
components/python/python26/Python26-12-encoding-alias.patch
New file
@@ -0,0 +1,35 @@
diff --git Python-2.6.4/Lib/encodings/aliases.py Python-2.6.4/Lib/encodings/aliases.py
--- Python-2.6.4/Lib/encodings/aliases.py
+++ Python-2.6.4/Lib/encodings/aliases.py
@@ -73,6 +73,7 @@
     # cp1251 codec
     '1251'               : 'cp1251',
+    'ansi_1251'          : 'cp1251',
     'windows_1251'       : 'cp1251',
     # cp1252 codec
@@ -217,6 +218,7 @@
     'u_jis'              : 'euc_jp',
     # euc_kr codec
+    '5601'               : 'euc_kr',
     'euckr'              : 'euc_kr',
     'korean'             : 'euc_kr',
     'ksc5601'            : 'euc_kr',
@@ -457,6 +459,7 @@
     'shiftjis'           : 'shift_jis',
     'sjis'               : 'shift_jis',
     's_jis'              : 'shift_jis',
+    'pck'                : 'shift_jis',
     # shift_jis_2004 codec
     'shiftjis2004'       : 'shift_jis_2004',
@@ -476,6 +479,7 @@
     'tis_620_0'          : 'tis_620',
     'tis_620_2529_0'     : 'tis_620',
     'tis_620_2529_1'     : 'tis_620',
+    'tis620.2533'        : 'tis_620',
     'iso_ir_166'         : 'tis_620',
     # utf_16 codec
components/python/python26/Python26-13-cflags.patch
New file
@@ -0,0 +1,12 @@
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
@@ -1110,6 +1110,8 @@
     # environment?
         Darwin*)
         ;;
+    SunOS*)
+        ;;
         *)
         BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
         ;;
components/python/python26/Python26-14-ctypes-util-find-library.patch
New file
@@ -0,0 +1,39 @@
diff --git Python-2.6.4/Lib/ctypes/util.py Python-2.6.4/Lib/ctypes/util.py
--- Python-2.6.4/Lib/ctypes/util.py
+++ Python-2.6.4/Lib/ctypes/util.py
@@ -164,6 +164,35 @@
             res.sort(cmp= lambda x,y: cmp(_num_version(x), _num_version(y)))
             return res[-1]
+    elif sys.platform == "sunos5":
+
+        def _findLib_crle(name, is64):
+            if not os.path.exists('/usr/bin/crle'):
+                return None
+
+            if is64:
+                cmd = 'env LC_ALL=C /usr/bin/crle -64 2>/dev/null'
+            else:
+                cmd = 'env LC_ALL=C /usr/bin/crle 2>/dev/null'
+
+            for line in os.popen(cmd).readlines():
+                line = line.strip()
+                if (line.startswith('Default Library Path (ELF):')):
+                    paths = line.split()[4]
+
+            if not paths:
+                return None
+
+            for dir in paths.split(":"):
+                libfile = os.path.join(dir, "lib%s.so" % name)
+                if os.path.exists(libfile):
+                    return libfile
+
+            return None
+
+        def find_library(name, is64 = False):
+            return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name))
+
     else:
         def _findLib_ldconfig(name):
components/python/python26/Python26-15-getcwd.patch
New file
@@ -0,0 +1,21 @@
diff --git Python-2.6.4/Modules/posixmodule.c Python-2.6.4/Modules/posixmodule.c
--- Python-2.6.4/Modules/posixmodule.c
+++ Python-2.6.4/Modules/posixmodule.c
@@ -1978,6 +1978,8 @@
     char *res = NULL;
     PyObject *dynamic_return;
+    int maxsize = pathconf(".", _PC_PATH_MAX);
+
     Py_BEGIN_ALLOW_THREADS
     do {
         bufsize = bufsize + bufsize_incr;
@@ -1994,7 +1996,7 @@
         if (res == NULL) {
             free(tmpbuf);
         }
-    } while ((res == NULL) && (errno == ERANGE));
+    } while ((res == NULL) && (errno == ERANGE) && (bufsize < maxsize));
     Py_END_ALLOW_THREADS
     if (res == NULL)
components/python/python26/Python26-16-privrbac.patch
New file
@@ -0,0 +1,1581 @@
diff --git Python-2.6.4/Modules/authattr.c Python-2.6.4/Modules/authattr.c
new file mode 100644
--- /dev/null
+++ Python-2.6.4/Modules/authattr.c
@@ -0,0 +1,262 @@
+/*
+ * 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 2009 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * RBAC Bindings for Python - auth_attr functions
+ */
+
+#include <auth_attr.h>
+#include "Python.h"
+#include "pyrbac.h"
+
+static PyObject*
+pyrbac_setauthattr(PyObject* self, PyObject* args) {
+    setauthattr();
+    return Py_None;
+}
+
+static PyObject*
+pyrbac_endauthattr(PyObject* self, PyObject* args) {
+    endauthattr();
+    return Py_None;
+}
+
+PyObject*
+pyrbac_getauthnamattr(PyObject* self, char* authname, int mode) {
+
+
+
+    authattr_t * ret_authattr = (mode == PYRBAC_NAM_MODE) ? getauthnam(authname) : getauthattr();
+    if (ret_authattr == NULL)
+        return Py_None;
+
+    PyObject* kv_data = PyDict_New();
+    if (kv_data == NULL) {
+        free_authattr(ret_authattr);
+        return NULL;
+    }
+
+    if(ret_authattr->attr != NULL) {
+        int len;
+        for(len = 0; len < ret_authattr->attr->length; len++) {
+            kv_t current = ret_authattr->attr->data[len];
+
+            PyObject* set = PyList_New(NULL);
+            char* saveptr;
+            char* item = strtok_r(current.value, ",", &saveptr);
+            PyList_Append(set, PyString_FromString(item));
+
+            while((item = strtok_r(NULL, ",", &saveptr)) != NULL) {
+                if(PyList_Append(set, PyString_FromString(item)) != 0) {
+                    Py_XDECREF(set);
+                    Py_XDECREF(kv_data);
+                    free_authattr(ret_authattr);
+                    return NULL;
+                }
+            }
+            if(PyDict_SetItemString(kv_data, current.key, set)) {
+                    free_authattr(ret_authattr);
+                    return NULL;
+            }
+        }
+    }
+    PyObject * retval = Py_BuildValue("{s:s,s:s,s:s,s:s,s:s,s:O}",
+        "name",ret_authattr->name,
+        "res1",ret_authattr->res1,
+        "res2",ret_authattr->res2,
+        "short",ret_authattr->short_desc,
+        "long",ret_authattr->long_desc,
+        "attributes",kv_data);
+
+    free_authattr(ret_authattr);
+    return retval;
+
+}
+
+static PyObject*
+pyrbac_getauthattr(PyObject* self, PyObject* args) {
+    return(pyrbac_getauthnamattr(self, NULL, PYRBAC_ATTR_MODE));
+}
+
+static PyObject*
+pyrbac_getauthnam(PyObject* self, PyObject* args) {
+    char* name = NULL;
+    if(!PyArg_ParseTuple(args, "s:getauthnam", &name))
+        return NULL;
+    return(pyrbac_getauthnamattr(self, name, PYRBAC_NAM_MODE));
+}
+
+static PyObject *
+pyrbac_chkauthattr(PyObject* self, PyObject* args) {
+    char* authstring = NULL;
+    char* username = NULL;
+    if(!PyArg_ParseTuple(args, "ss:chkauthattr", &authstring, &username))
+        return NULL;
+    return PyBool_FromLong((long)chkauthattr(authstring, username));
+}
+
+static PyObject*
+pyrbac_authattr_next(PyObject* self, PyObject* args) {
+    PyObject* retval = pyrbac_getauthattr(self, args);
+    if( retval == Py_None ) {
+        setauthattr();
+        return NULL;
+    }
+    return retval;
+}
+static PyObject*
+pyrbac_authattr__iter__(PyObject* self, PyObject* args) {
+    return self;
+}
+
+typedef struct {
+    PyObject_HEAD
+} Authattr;
+
+static void
+Authattr_dealloc(Authattr* self) {
+    endauthattr();
+    self->ob_type->tp_free((PyObject*) self);
+}
+
+static PyObject*
+Authattr_new(PyTypeObject *type, PyObject *args, PyObject *kwds) {
+    Authattr *self;
+    self = (Authattr*)type->tp_alloc(type, 0);
+
+    return ((PyObject *) self);
+}
+
+static int
+Authattr_init(Authattr* self, PyObject *args, PyObject *kwargs) {
+    setauthattr();
+    return 0;
+}
+
+static char pyrbac_authattr__doc__[];
+
+PyDoc_STRVAR(pyrbac_authattr__doc__, """provides interfaces to the auth_attr \
+database. may be iterated over to return all auth_attr entries\n\n\
+Methods provided:\n\
+setauthattr\n\
+endauthattr\n\
+getauthattr\n\
+chkauthattr\n\
+getauthnam""");
+
+static char pyrbac_setauthattr__doc__[];
+static char pyrbac_endauthattr__doc__[];
+static char pyrbac_getauthattr__doc__[];
+static char pyrbac_chkauthattr__doc__[];
+
+PyDoc_STRVAR(pyrbac_setauthattr__doc__,
+"\"rewinds\" the auth_attr functions to the first entry in the db. Called \
+automatically by the constructor\n\tArguments: None\n\tReturns: None");
+
+PyDoc_STRVAR(pyrbac_endauthattr__doc__,
+"closes the auth_attr database, cleans up storage. called automatically by \
+the destructor\n\tArguments: None\n\tReturns: None");
+
+PyDoc_STRVAR(pyrbac_chkauthattr__doc__, "verifies if a user has a given \
+authorization.\n\tArguments: 2 Python strings, 'authname' and 'username'\n\
+\tReturns: True if the user is authorized, False otherwise");
+
+PyDoc_STRVAR(pyrbac_getauthattr__doc__,
+"return one entry from the auth_attr database\n\
+\tArguments: None\n\
+\tReturns: a dict representing the authattr_t struct:\n\
+\t\t\"name\": Authorization Name\n\
+\t\t\"res1\": reserved\n\
+\t\t\"res2\": reserved\n\
+\t\t\"short\": Short Description\n\
+\t\t\"long\": Long Description\n\
+\t\t\"attributes\": A Python dict keyed by attribute & valued as either a list \
+or a string depending on value");
+
+PyDoc_STRVAR(pyrbac_getauthnam__doc__,
+"searches the auth_attr database for a given authorization name\n\
+\tArguments: a Python string containing the auth name\n\
+\tReturns: a dict representing the authattr_t struct:\n\
+\t\t\"name\": Authorization Name\n\
+\t\t\"res1\": reserved\n\
+\t\t\"res2\": reserved\n\
+\t\t\"short\": Short Description\n\
+\t\t\"long\": Long Description\n\
+\t\t\"attributes\": A Python dict keyed by attribute & valued as either a list \
+or a string depending on value");
+
+static PyMethodDef Authattr_methods[] = {
+    {"setauthattr", pyrbac_setauthattr, METH_NOARGS, pyrbac_setauthattr__doc__},
+    {"endauthattr", pyrbac_endauthattr, METH_NOARGS, pyrbac_endauthattr__doc__},
+    {"chkauthattr", pyrbac_chkauthattr, METH_VARARGS, pyrbac_chkauthattr__doc__},
+    {"getauthattr", pyrbac_getauthattr, METH_NOARGS, pyrbac_getauthattr__doc__},
+    {"getauthnam", pyrbac_getauthnam, METH_VARARGS, pyrbac_getauthnam__doc__},
+    {NULL}
+};
+
+PyTypeObject AuthattrType = {
+    PyObject_HEAD_INIT(NULL)
+    0,                         /*ob_size*/
+    "rbac.authattr",             /*tp_name*/
+    sizeof(Authattr),             /*tp_basicsize*/
+    0,                         /*tp_itemsize*/
+    (destructor)Authattr_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 |
+    Py_TPFLAGS_BASETYPE |
+    Py_TPFLAGS_HAVE_ITER, /*tp_flags*/
+    pyrbac_authattr__doc__,           /* tp_doc */
+    0,                       /* tp_traverse */
+    0,                       /* tp_clear */
+    0,                       /* tp_richcompare */
+    0,                       /* tp_weaklistoffset */
+    pyrbac_authattr__iter__,                       /* tp_iter */
+    pyrbac_authattr_next,         /* tp_iternext */
+    Authattr_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)Authattr_init,      /* tp_init */
+    0,                         /* tp_alloc */
+    Authattr_new,                 /* tp_new */
+};
diff --git Python-2.6.4/Modules/execattr.c Python-2.6.4/Modules/execattr.c
new file mode 100644
--- /dev/null
+++ Python-2.6.4/Modules/execattr.c
@@ -0,0 +1,314 @@
+/*
+ * 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 2009 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * RBAC Bindings for Python - exec_attr functions
+ */
+
+#include <exec_attr.h>
+#include "Python.h"
+#include "pyrbac.h"
+
+static PyObject *
+pyrbac_setexecattr(PyObject* self, PyObject* args) {
+    setexecattr();
+    return Py_None;
+}
+
+static PyObject *
+pyrbac_endexecattr(PyObject* self, PyObject* args) {
+    endexecattr();
+    return Py_None;
+}
+
+PyObject *
+pyrbac_getexecuserprofattr(PyObject* self, char* userprofname, char* type, char* id, int mode) {
+
+    PyObject* ep_data = (mode == PYRBAC_ATTR_MODE) ? NULL : PyList_New(0);
+
+    if (ep_data == NULL && mode != PYRBAC_ATTR_MODE )
+        return NULL;
+
+    execattr_t *execprof;
+    if (mode == PYRBAC_USER_MODE)
+        execprof = getexecuser(userprofname, type, id, GET_ALL);
+    else if (mode == PYRBAC_PROF_MODE)
+        execprof = getexecprof(userprofname, type, id, GET_ALL);
+    else if (mode == PYRBAC_ATTR_MODE)
+        execprof = getexecattr();
+    else
+        return NULL;
+
+    if (execprof == NULL)
+        return Py_None;
+
+    execattr_t *execprof_head = execprof;
+
+    while(execprof != NULL) {
+
+        PyObject* kv_data = PyDict_New();
+
+        if(execprof->attr != NULL) {
+            int len;
+            for(len = 0; len < execprof->attr->length; len++) {
+                kv_t current = execprof->attr->data[len];
+
+                PyObject* set = PyList_New(NULL);
+                char* saveptr;
+                char* item = strtok_r(current.value, ",", &saveptr);
+                PyList_Append(set, PyString_FromString(item));
+
+                while((item = strtok_r(NULL, ",", &saveptr)) != NULL) {
+                    if(PyList_Append(set, PyString_FromString(item)) != 0) {
+                        Py_XDECREF(set);
+                        Py_XDECREF(kv_data);
+                        free_execattr(execprof_head);
+                        return NULL;
+                    }
+                }
+                if(PyDict_SetItemString(kv_data, current.key, set)) {
+                        free_execattr(execprof_head);
+                        return NULL;
+                }
+            }
+        }
+        PyObject* entry = Py_BuildValue("{s:s,s:s,s:s,s:s,s:s,s:s,s:O}",
+            "name", execprof->name,
+            "type", execprof->type,
+            "policy", execprof->policy,
+            "res1", execprof->res1,
+            "res2", execprof->res2,
+            "id", execprof->id,
+            "attributes", kv_data);
+
+        if (entry == NULL) {
+            Py_XDECREF(kv_data);
+            free_execattr(execprof_head);
+            return NULL;
+        }
+
+        if (mode == PYRBAC_ATTR_MODE) {
+            free_execattr(execprof_head);
+            return(entry);
+        }
+        PyList_Append(ep_data, entry);
+        execprof = execprof->next;
+    }
+
+    free_execattr(execprof_head);
+    return(ep_data);
+
+}
+
+static PyObject *
+pyrbac_getexecuser(PyObject* self, PyObject* args) {
+    char* username = NULL;
+    char* type = NULL;
+    char* id = NULL;
+
+    if(!PyArg_ParseTuple(args, "sss:getexecuser", &username, &type, &id))
+        return NULL;
+
+    return (pyrbac_getexecuserprofattr(self, username, type, id, PYRBAC_USER_MODE));
+}
+
+static PyObject *
+pyrbac_getexecprof(PyObject* self, PyObject* args) {
+
+    char* profname = NULL;
+    char* type = NULL;
+    char* id = NULL;
+
+    if(!PyArg_ParseTuple(args, "sss:getexecprof", &profname, &type, &id))
+        return NULL;
+
+    return (pyrbac_getexecuserprofattr(self, profname, type, id, PYRBAC_PROF_MODE));
+}
+
+static PyObject*
+pyrbac_getexecattr(PyObject* self, PyObject* args) {
+    return pyrbac_getexecuserprofattr(self, NULL, NULL, NULL, PYRBAC_ATTR_MODE);
+}
+
+static PyObject*
+pyrbac_execattr_next(PyObject* self, PyObject* args) {
+    PyObject* retval = pyrbac_getexecattr(self, args);
+    if( retval == Py_None ) {
+        setexecattr();
+        return NULL;
+    }
+    return retval;
+}
+static PyObject*
+pyrbac_execattr__iter__(PyObject* self, PyObject* args) {
+    return self;
+}
+
+typedef struct {
+    PyObject_HEAD
+} Execattr;
+
+static void
+Execattr_dealloc(Execattr* self) {
+    endexecattr();
+    self->ob_type->tp_free((PyObject*) self);
+}
+
+static PyObject*
+Execattr_new(PyTypeObject *type, PyObject *args, PyObject *kwds) {
+    Execattr *self;
+    self = (Execattr*)type->tp_alloc(type, 0);
+
+    return ((PyObject *) self);
+}
+
+static int
+Execattr_init(Execattr* self, PyObject *args, PyObject *kwargs) {
+    setexecattr();
+    return 0;
+}
+
+static char pyrbac_execattr__doc__[];
+
+PyDoc_STRVAR(pyrbac_execattr__doc__, "provides functions for \
+interacting with the execution profiles database. May be iterated over to \
+enumerate exec_attr(4) entries\n\n\
+Methods provided:\n\
+setexecattr\n\
+endexecattr\n\
+getexecattr\n\
+getexecprof\n\
+getexecuser");
+
+
+static char pyrbac_getexecuser__doc__[];
+static char pyrbac_getexecprof__doc__[];
+static char pyrbac_getexecattr__doc__[];
+static char pyrbac_setexecattr__doc__[];
+static char pyrbac_endexecattr__doc__[];
+
+PyDoc_STRVAR(pyrbac_setexecattr__doc__,
+"\"rewinds\" the exec_attr functions to the first entry in the db. Called \
+automatically by the constructor.\n\
+\tArguments: None\
+\tReturns: None");
+
+PyDoc_STRVAR(pyrbac_endexecattr__doc__,
+"closes the exec_attr database, cleans up storage. called automatically by \
+the destructor.\n\
+\tArguments: None\
+\tReturns: None");
+
+PyDoc_STRVAR(pyrbac_getexecuser__doc__, "corresponds with getexecuser(3SECDB)\
+\nTakes: \'username\', \'type\', \'id\'\n\
+Return: a single exec_attr entry\n\
+\tArguments: None\n\
+\tReturns: a dict representation of an execattr_t struct:\n\
+\t\t\"name\": Authorization Name\n\
+\t\t\"type\": Profile Type\n\
+\t\t\"policy\": Policy attributes are relevant in\n\
+\t\t\"res1\": reserved\n\
+\t\t\"res2\": reserved\n\
+\t\t\"id\": unique identifier\n\
+\t\t\"attributes\": A Python dict keyed by attribute & valued as\
+either a list or a string depending on value");
+
+PyDoc_STRVAR(pyrbac_getexecprof__doc__, "corresponds with getexecprof(3SECDB)\
+\nTakes: \'profile name\', \'type\', \'id\'\n\
+\tReturns: a dict representation of an execattr_t struct:\n\
+\t\t\"name\": Authorization Name\n\
+\t\t\"type\": Profile Type\n\
+\t\t\"policy\": Policy attributes are relevant in\n\
+\t\t\"res1\": reserved\n\
+\t\t\"res2\": reserved\n\
+\t\t\"id\": unique identifier\n\
+\t\t\"attributes\": A Python dict keyed by attribute & valued as\
+either a list or a string depending on value");
+
+PyDoc_STRVAR(pyrbac_getexecattr__doc__, "corresponds with getexecattr(3SECDB)\
+\nTakes 0 arguments\n\
+\tReturns: a dict representation of an execattr_t struct:\n\
+\t\t\"name\": Authorization Name\n\
+\t\t\"type\": Profile Type\n\
+\t\t\"policy\": Policy attributes are relevant in\n\
+\t\t\"res1\": reserved\n\
+\t\t\"res2\": reserved\n\
+\t\t\"id\": unique identifier\n\
+\t\t\"attributes\": A Python dict keyed by attribute & valued as\
+either a list or a string depending on value");
+
+static PyMethodDef Execattr_methods[] = {
+    {"setexecattr", pyrbac_setexecattr, METH_NOARGS, pyrbac_setexecattr__doc__},
+    {"endexecattr", pyrbac_endexecattr, METH_NOARGS, pyrbac_endexecattr__doc__},
+    {"getexecprof", pyrbac_getexecprof, METH_VARARGS, pyrbac_getexecprof__doc__},
+    {"getexecuser", pyrbac_getexecuser, METH_VARARGS, pyrbac_getexecuser__doc__},
+    {"getexecattr", pyrbac_getexecattr, METH_NOARGS, pyrbac_getexecattr__doc__},
+    {NULL}
+};
+
+PyTypeObject ExecattrType = {
+    PyObject_HEAD_INIT(NULL)
+    0,                         /*ob_size*/
+    "rbac.execattr",             /*tp_name*/
+    sizeof(Execattr),             /*tp_basicsize*/
+    0,                         /*tp_itemsize*/
+    (destructor)Execattr_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 |
+    Py_TPFLAGS_BASETYPE |
+    Py_TPFLAGS_HAVE_ITER, /*tp_flags*/
+    pyrbac_execattr__doc__,           /* tp_doc */
+    0,                       /* tp_traverse */
+    0,                       /* tp_clear */
+    0,                       /* tp_richcompare */
+    0,                       /* tp_weaklistoffset */
+    pyrbac_execattr__iter__,                       /* tp_iter */
+    pyrbac_execattr_next,         /* tp_iternext */
+    Execattr_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)Execattr_init,      /* tp_init */
+    0,                         /* tp_alloc */
+    Execattr_new,                 /* tp_new */
+};
diff --git Python-2.6.4/Modules/privileges.c Python-2.6.4/Modules/privileges.c
new file mode 100644
--- /dev/null
+++ Python-2.6.4/Modules/privileges.c
@@ -0,0 +1,230 @@
+/*
+ * 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 2009 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * privileges(5) bindings for Python
+ */
+
+#include <priv.h>
+#include "Python.h"
+
+static PyObject *
+pyprivileges_setppriv( PyObject *self, PyObject *args) {
+    priv_op_t op = -1 ;
+    priv_ptype_t which = NULL;
+
+    PyObject* set_list = NULL;
+
+    priv_set_t * set = NULL;
+
+    if(!PyArg_ParseTuple(args, "iiO:setppriv", &op, &which, &set_list))
+        return NULL;
+
+    if((op != PRIV_ON && op != PRIV_OFF && op != PRIV_SET) ||
+        (which != PRIV_PERMITTED && which != PRIV_EFFECTIVE &&
+        which != PRIV_INHERITABLE && which != PRIV_LIMIT))
+        return NULL;
+
+    PyObject* set_string = PyList_GetItem(set_list, 0);
+    int i;
+    for (i = 1; i < PyList_Size(set_list); ++i) {
+        PyString_Concat(&set_string, PyString_FromString(","));
+        PyString_Concat(&set_string, PyList_GetItem(set_list, i));
+    }
+
+    set = priv_str_to_set(PyString_AsString(set_string), ",", NULL );
+
+    if ( set == NULL )
+        return NULL;
+
+    long ret = (long) setppriv(op, which, set);
+    priv_freeset(set);
+    // Python inverts true & false
+    if(ret)
+        Py_RETURN_FALSE;
+
+    Py_RETURN_TRUE;
+}
+
+static PyObject *
+pyprivileges_getppriv( PyObject *self, PyObject *args) {
+
+    char* set_str = NULL;
+    priv_ptype_t which = NULL;
+    priv_set_t * set = priv_allocset();
+    if (set == NULL)
+        return NULL;
+
+    if(!PyArg_ParseTuple(args, "i:getppriv", &which))
+        return NULL;
+
+    if (which != PRIV_PERMITTED && which != PRIV_EFFECTIVE &&
+    which != PRIV_INHERITABLE && which != PRIV_LIMIT)
+        return NULL;
+
+    if (getppriv(which, set) != 0)
+        return NULL;
+
+    set_str = priv_set_to_str(set, ',', PRIV_STR_LIT);
+    priv_freeset(set);
+
+    PyObject* set_list = PyList_New(NULL);
+    char* saveptr;
+    char* item = strtok_r(set_str, ",", &saveptr);
+    PyList_Append(set_list, PyString_FromString(item));
+
+    while((item = strtok_r(NULL, ",", &saveptr)) != NULL) {
+        if(PyList_Append(set_list, PyString_FromString(item)) != 0) {
+            Py_XDECREF(set_list);
+            return NULL;
+        }
+    }
+
+    return(set_list);
+}
+
+static PyObject *
+pyprivileges_priv_inverse( PyObject *self, PyObject *args ) {
+
+    PyObject* set_list_in = NULL;
+    if(!PyArg_ParseTuple(args, "O:priv_inverse", &set_list_in))
+        return NULL;
+
+    PyObject* set_string = PyList_GetItem(set_list_in, 0);
+    int i;
+    for (i = 1; i < PyList_Size(set_list_in); ++i) {
+        PyString_Concat(set_string, PyString_FromString(","));
+        PyString_Concat(set_string, PyList_GetItem(set_list_in, i));
+    }
+
+    priv_set_t * set = priv_str_to_set(PyString_AsString(set_string), ",", NULL);
+    if (set == NULL)
+        return NULL;
+    priv_inverse(set);
+    char * ret_str = priv_set_to_str(set, ',', PRIV_STR_LIT);
+    priv_freeset(set);
+
+    PyObject* set_list_out = PyList_New(NULL);
+    char* saveptr;
+    char* item = strtok_r(ret_str, ",", &saveptr);
+    PyList_Append(set_list_out, PyString_FromString(item));
+
+    while((item = strtok_r(NULL, ",", &saveptr)) != NULL) {
+        if(PyList_Append(set_list_out, PyString_FromString(item)) != 0) {
+            Py_XDECREF(set_list_out);
+            return NULL;
+        }
+    }
+
+    Py_XDECREF(set_list_in);
+
+    return(set_list_out);
+}
+
+/* priv_ineffect is a convienient wrapper to priv_get
+ * however priv_set is, in the context of python, not
+ * much of a convienience, so it's omitted
+ */
+static PyObject *
+pyprivileges_priv_ineffect(PyObject* self, PyObject* args) {
+    char* privstring=NULL;
+    if (!PyArg_ParseTuple(args, "s:priv_ineffect", &privstring))
+        return NULL;
+    return PyBool_FromLong(priv_ineffect(privstring));
+}
+
+
+static char pyprivileges__doc__[];
+PyDoc_STRVAR(pyprivileges__doc__,
+"Provides functions for interacting with the Solaris privileges(5) framework\n\
+Functions provided:\n\
+setppriv\n\
+getppriv\n\
+priv_ineffect\n\
+priv_inverse");
+
+static char pyprivileges_setppriv__doc__[];
+static char pyprivileges_getppriv__doc__[];
+static char pyprivileges_priv_ineffect__doc__[];
+static char pyprivileges_priv_inverse__doc__[];
+
+PyDoc_STRVAR(pyprivileges_setppriv__doc__,
+"Facilitates setting the permitted/inheritable/limit/effective privileges set\n\
+\tArguments:\n\
+\t\tone of (PRIV_ON|PRIV_OFF|PRIV_SET)\n\
+\t\tone of (PRIV_PERMITTED|PRIV_INHERITABLE|PRIV_LIMIT|PRIV_EFFECTIVE)\n\
+\t\tset of privileges: a list of strings\n\
+\tReturns: True on success, False on failure\
+");
+
+PyDoc_STRVAR(pyprivileges_getppriv__doc__,
+"Return the process privilege set\n\
+\tArguments:\n\
+\t\tone of (PRIV_PERMITTED|PRIV_INHERITABLE|PRIV_LIMIT|PRIV_EFFECTIVE)\n\
+\tReturns: a Python list of strings");
+
+PyDoc_STRVAR(pyprivileges_priv_ineffect__doc__,
+"Checks for a privileges presence in the effective set\n\
+\tArguments: a String\n\
+\tReturns: True if the privilege is in effect, False otherwise");
+
+PyDoc_STRVAR(pyprivileges_priv_inverse__doc__,
+"The complement of the set of privileges\n\
+\tArguments: a list of strings\n\tReturns: a list of strings");
+
+static PyMethodDef module_methods[] = {
+    {"setppriv", pyprivileges_setppriv, METH_VARARGS, pyprivileges_setppriv__doc__},
+    {"getppriv", pyprivileges_getppriv, METH_VARARGS, pyprivileges_getppriv__doc__},
+    {"priv_ineffect", pyprivileges_priv_ineffect, METH_VARARGS, pyprivileges_priv_ineffect__doc__},
+    {"priv_inverse", pyprivileges_priv_inverse, METH_VARARGS, pyprivileges_priv_inverse__doc__},
+    {NULL}
+};
+
+
+#ifndef PyMODINIT_FUNC    /* declarations for DLL import/export */
+#define PyMODINIT_FUNC void
+#endif
+PyMODINIT_FUNC
+initprivileges(void) {
+    PyObject* m;
+
+    m = Py_InitModule3("privileges", module_methods, pyprivileges__doc__);
+        if ( m == NULL )
+        return;
+
+    PyObject* d = PyModule_GetDict(m);
+    if (d == NULL)
+        return;
+
+    PyDict_SetItemString(d, "PRIV_ON", PyInt_FromLong((long)PRIV_ON));
+    PyDict_SetItemString(d, "PRIV_OFF", PyInt_FromLong((long)PRIV_OFF));
+    PyDict_SetItemString(d, "PRIV_SET", PyInt_FromLong((long)PRIV_SET));
+
+    PyDict_SetItemString(d, "PRIV_PERMITTED", PyInt_FromLong((long)PRIV_PERMITTED));
+    PyDict_SetItemString(d, "PRIV_INHERITABLE", PyInt_FromLong((long)PRIV_INHERITABLE));
+    PyDict_SetItemString(d, "PRIV_LIMIT", PyInt_FromLong((long)PRIV_LIMIT));
+    PyDict_SetItemString(d, "PRIV_EFFECTIVE", PyInt_FromLong((long)PRIV_EFFECTIVE));
+}
diff --git Python-2.6.4/Modules/pyrbac.c Python-2.6.4/Modules/pyrbac.c
new file mode 100644
--- /dev/null
+++ Python-2.6.4/Modules/pyrbac.c
@@ -0,0 +1,69 @@
+/*
+ * 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 2009 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * RBAC Bindings for Python
+ */
+
+#include <Python.h>
+#include "pyrbac.h"
+
+static PyMethodDef module_methods[] = {NULL};
+static char pyrbac__doc__[];
+
+PyDoc_STRVAR(pyrbac__doc__, "provides access to some objects \
+for interaction with the Solaris Role-Based Access Control \
+framework.\n\nDynamic objects:\n\
+userattr -- for interacting with user_attr(4)\n\
+authattr -- for interacting with auth_attr(4)\n\
+execattr -- for interacting with exec_attr(4)\n");
+
+#ifndef PyMODINIT_FUNC    /* declarations for DLL import/export */
+#define PyMODINIT_FUNC void
+#endif
+PyMODINIT_FUNC
+initrbac(void) {
+    PyObject* m;
+    if (PyType_Ready(&AuthattrType) < 0 ||
+        PyType_Ready(&ExecattrType) < 0 ||
+        PyType_Ready(&UserattrType) < 0 )
+        return;
+
+    m = Py_InitModule3("rbac", module_methods, pyrbac__doc__);
+    if ( m == NULL )
+        return;
+
+    Py_INCREF(&AuthattrType);
+    PyModule_AddObject(m, "authattr", (PyObject*)&AuthattrType);
+
+    Py_INCREF(&ExecattrType);
+    PyModule_AddObject(m, "execattr", (PyObject*)&ExecattrType);
+
+    Py_INCREF(&UserattrType);
+    PyModule_AddObject(m, "userattr", (PyObject*)&UserattrType);
+
+}
+
diff --git Python-2.6.4/Modules/pyrbac.h Python-2.6.4/Modules/pyrbac.h
new file mode 100644
--- /dev/null
+++ Python-2.6.4/Modules/pyrbac.h
@@ -0,0 +1,46 @@
+/*
+ * 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 2009 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * RBAC bindings for python
+ */
+#ifndef PYRBAC_H
+#define PYRBAC_H
+
+#include <secdb.h>
+
+
+#define PYRBAC_USER_MODE 1
+#define PYRBAC_PROF_MODE 2
+#define PYRBAC_ATTR_MODE 3
+#define PYRBAC_NAM_MODE 4
+#define PYRBAC_UID_MODE 5
+
+PyTypeObject AuthattrType;
+PyTypeObject ExecattrType;
+PyTypeObject UserattrType;
+
+#endif
diff --git Python-2.6.4/Modules/userattr.c Python-2.6.4/Modules/userattr.c
new file mode 100644
--- /dev/null
+++ Python-2.6.4/Modules/userattr.c
@@ -0,0 +1,309 @@
+/*
+ * 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 2009 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * RBAC Bindings for Python - user_attr functions
+ */
+
+#include <stdio.h>
+#include <user_attr.h>
+#include "Python.h"
+#include "pyrbac.h"
+
+static PyObject*
+pyrbac_setuserattr(PyObject* self, PyObject* args) {
+    setuserattr();
+    return Py_None;
+}
+
+static PyObject*
+pyrbac_enduserattr(PyObject* self, PyObject* args) {
+    enduserattr();
+    return Py_None;
+}
+
+PyObject*
+pyrbac_getuseruidnamattr(PyObject* self, void* arg, int mode, char* filename) {
+
+    userattr_t *ret_userattr;
+
+    if (mode == PYRBAC_ATTR_MODE) {
+        if (filename != NULL) {
+            FILE* file = fopen(filename, "r");
+            if (file == NULL)
+                return NULL;
+            ret_userattr = fgetuserattr(file);
+            if (fclose(file))
+                return NULL;
+        }
+        else
+            ret_userattr = getuserattr();
+    }
+    else if (mode == PYRBAC_NAM_MODE)
+        ret_userattr = getusernam((char*) arg);
+    else if (mode == PYRBAC_UID_MODE)
+        ret_userattr = getuseruid(*((uid_t*) arg));
+
+    if (ret_userattr == NULL)
+        return Py_None;
+
+    PyObject* entry = PyTuple_New(5);
+    if (entry == NULL) {
+        free_userattr(ret_userattr);
+        return NULL;
+    }
+
+    PyObject* kv_data = PyDict_New();
+
+    if(ret_userattr->attr != NULL) {
+        int len;
+        for(len = 0; len < ret_userattr->attr->length; len++) {
+            kv_t current = ret_userattr->attr->data[len];
+
+            PyObject* set = PyList_New(NULL);
+            char* saveptr;
+            char* item = strtok_r(current.value, ",", &saveptr);
+            PyList_Append(set, PyString_FromString(item));
+
+            while((item = strtok_r(NULL, ",", &saveptr)) != NULL) {
+                if(PyList_Append(set, PyString_FromString(item)) != 0) {
+                    Py_XDECREF(set);
+                    Py_XDECREF(kv_data);
+                    free_userattr(ret_userattr);
+                    return NULL;
+                }
+            }
+            if(PyDict_SetItemString(kv_data, current.key, set)) {
+                    free_userattr(ret_userattr);
+                    return NULL;
+            }
+        }
+    }
+    entry = Py_BuildValue("{s:s,s:s,s:s,s:s,s:O}",
+        "name", ret_userattr->name,
+        "qualifier", ret_userattr->qualifier,
+        "res1", ret_userattr->res1,
+        "res2", ret_userattr->res2,
+        "attributes", kv_data);
+
+    free_userattr(ret_userattr);
+
+    return entry;
+}
+
+
+static PyObject*
+pyrbac_getuserattr(PyObject* self, PyObject* args) {
+    return(pyrbac_getuseruidnamattr(self, (void*) NULL, PYRBAC_ATTR_MODE, NULL));
+}
+
+static PyObject*
+pyrbac_fgetuserattr(PyObject* self, PyObject* args) {
+    char* filename = NULL;
+    if(!PyArg_ParseTuple(args, "s:fgetuserattr", &filename))
+        return NULL;
+    return(pyrbac_getuseruidnamattr(self, NULL, PYRBAC_ATTR_MODE, filename));
+}
+
+static PyObject*
+pyrbac_getusernam(PyObject* self, PyObject* args) {
+    char* name = NULL;
+    if(!PyArg_ParseTuple(args, "s:getusernam", &name))
+        return NULL;
+    return(pyrbac_getuseruidnamattr(self, (void*) name, PYRBAC_NAM_MODE, NULL));
+}
+
+static PyObject*
+pyrbac_getuseruid(PyObject* self, PyObject* args) {
+    uid_t uid;
+    if(!PyArg_ParseTuple(args, "i:getuseruid", &uid))
+        return NULL;
+    return(pyrbac_getuseruidnamattr(self, (void*) &uid, PYRBAC_UID_MODE, NULL));
+}
+
+static PyObject*
+pyrbac_userattr_next(PyObject* self, PyObject* args) {
+    PyObject* retval = pyrbac_getuserattr(self, args);
+    if( retval == Py_None ) {
+        setuserattr();
+        return NULL;
+    }
+    return retval;
+}
+static PyObject*
+pyrbac_userattr__iter__(PyObject* self, PyObject* args) {
+    return self;
+}
+
+typedef struct {
+    PyObject_HEAD
+} Userattr;
+
+static void
+Userattr_dealloc(Userattr* self) {
+    enduserattr();
+    self->ob_type->tp_free((PyObject*) self);
+}
+
+static PyObject*
+Userattr_new(PyTypeObject *type, PyObject *args, PyObject *kwds) {
+    Userattr *self;
+    self = (Userattr*)type->tp_alloc(type, 0);
+
+    return ((PyObject *) self);
+}
+
+static int
+Userattr_init(Userattr* self, PyObject *args, PyObject *kwargs) {
+    setuserattr();
+    return 0;
+}
+
+static char pyrbac_userattr__doc__[];
+PyDoc_STRVAR(pyrbac_userattr__doc__, "provides functions for \
+interacting with the extended user attributes database. May be iterated over \
+to enumerate user_attr(4) entries\n\n\
+Methods provided:\n\
+setuserattr\n\
+enduserattr\n\
+getuserattr\n\
+fgetuserattr\n\
+getusernam\n\
+getuseruid");
+
+static char pyrbac_setuserattr__doc__[];
+static char pyrbac_enduserattr__doc__[];
+static char pyrbac_getuserattr__doc__[];
+static char pyrbac_getusernam__doc__[];
+static char pyrbac_getuseruid__doc__[];
+
+PyDoc_STRVAR(pyrbac_setuserattr__doc__, "\"rewinds\" the user_attr functions \
+to the first entry in the db. Called automatically by the constructor.\n\
+\tArguments: None\n\
+\tReturns: None");
+
+PyDoc_STRVAR(pyrbac_enduserattr__doc__, "closes the user_attr database, \
+cleans up storage. called automatically by the destructor\n\
+\tArguments: None\n\
+\tReturns: None");
+
+PyDoc_STRVAR(pyrbac_getuserattr__doc__, "Return a single user_attr entry\n \
+\tArguments: None\n\
+\tReturns: a dict representation of a userattr_t struct:\n\
+\t\t\"name\": username\n\
+\t\t\"qualifier\": reserved\n\
+\t\t\"res1\": reserved\n\
+\t\t\"res2\": reserved\n\
+\t\t\"attributes\": A Python dict keyed by attribute & valued as either a list \
+or a string depending on value"
+);
+
+PyDoc_STRVAR(pyrbac_fgetuserattr__doc__, "Return a single user_attr entry \
+from a file, bypassing nsswitch.conf\n\
+\tArguments: \'filename\'\n\
+\tReturns: a dict representation of a userattr_t struct:\n\
+\t\t\"name\": username\n\
+\t\t\"qualifier\": reserved\n\
+\t\t\"res1\": reserved\n\
+\t\t\"res2\": reserved\n\
+\t\t\"attributes\": A Python dict keyed by attribute & valued as either a list \
+or a string depending on value");
+
+PyDoc_STRVAR(pyrbac_getusernam__doc__, "Searches for a user_attr entry with a \
+given user name\n\
+\tArgument: \'username\'\n\
+\tReturns: a dict representation of a userattr_t struct:\n\
+\t\t\"name\": username\n\
+\t\t\"qualifier\": reserved\n\
+\t\t\"res1\": reserved\n\
+\t\t\"res2\": reserved\n\
+\t\t\"attributes\": A Python dict keyed by attribute & valued as either a list \
+or a string depending on value");
+
+PyDoc_STRVAR(pyrbac_getuseruid__doc__, "Searches for a user_attr entry with a \
+given uid\n\
+\tArgument: uid\n\
+\tReturns: a dict representation of a userattr_t struct:\n\
+\t\t\"name\": username\n\
+\t\t\"qualifier\": reserved\n\
+\t\t\"res1\": reserved\n\
+\t\t\"res2\": reserved\n\
+\t\t\"attributes\": A Python dict keyed by attribute & valued as either a list \
+or a string depending on value");
+
+static PyMethodDef Userattr_methods[] = {
+    {"setuserattr", pyrbac_setuserattr, METH_NOARGS, pyrbac_setuserattr__doc__},
+    {"enduserattr", pyrbac_enduserattr, METH_NOARGS, pyrbac_enduserattr__doc__},
+    {"getuserattr", pyrbac_getuserattr, METH_NOARGS, pyrbac_getuserattr__doc__},
+    {"fgetuserattr", pyrbac_fgetuserattr, METH_VARARGS, pyrbac_fgetuserattr__doc__},
+    {"getusernam", pyrbac_getusernam, METH_VARARGS, pyrbac_getusernam__doc__},
+    {"getuseruid", pyrbac_getuseruid, METH_VARARGS, pyrbac_getuseruid__doc__},
+    {NULL}
+};
+
+PyTypeObject UserattrType = {
+    PyObject_HEAD_INIT(NULL)
+    0,                         /*ob_size*/
+    "rbac.userattr",             /*tp_name*/
+    sizeof(Userattr),             /*tp_basicsize*/
+    0,                         /*tp_itemsize*/
+    (destructor)Userattr_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 |
+    Py_TPFLAGS_BASETYPE |
+    Py_TPFLAGS_HAVE_ITER, /*tp_flags*/
+    pyrbac_userattr__doc__,    /* tp_doc */
+    0,                       /* tp_traverse */
+    0,                       /* tp_clear */
+    0,                       /* tp_richcompare */
+    0,                       /* tp_weaklistoffset */
+    pyrbac_userattr__iter__,                       /* tp_iter */
+    pyrbac_userattr_next,         /* tp_iternext */
+    Userattr_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)Userattr_init,      /* tp_init */
+    0,                         /* tp_alloc */
+    Userattr_new,                 /* tp_new */
+};
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
@@ -1290,6 +1290,22 @@
             exts.append( Extension('dlpi', ['dlpimodule.c'],
                                    libraries = ['dlpi']) )
+        # privileges module (Solaris)
+        priv_inc = find_file('priv.h', [], inc_dirs)
+        if priv_inc is not None:
+            exts.append( Extension('privileges', ['privileges.c']))
+
+        # rbac module (Solaris)
+        secdb_inc = find_file('secdb.h', [], inc_dirs)
+        aa_inc = find_file('auth_attr.h', [], inc_dirs)
+        ea_inc = find_file('exec_attr.h', [], inc_dirs)
+        ua_inc = find_file('user_attr.h', [], inc_dirs)
+        if secdb_inc is not None and aa_inc is not None and \
+            ea_inc is not None and ua_inc is not None:
+            exts.append( Extension('rbac', ['pyrbac.c', 'authattr.c', \
+                                   'execattr.c', 'userattr.c'],
+                                   libraries = ['nsl', 'socket', 'secdb']) )
+
         # Thomas Heller's _ctypes module
         self.detect_ctypes(inc_dirs, lib_dirs)
diff --git Python-2.6.4/Lib/test/privrbac.py Python-2.6.4/Lib/test/privrbac.py
new file mode 100644
--- /dev/null    2011-02-12 03:13:57.000000000 -0600
+++ Python-2.6.4/Lib/test/privrbactest.py    2011-01-20 13:52:42.862305331 -0600
@@ -0,0 +1,290 @@
+#!/usr/bin/python2.6
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+# Use is subject to license terms.
+
+import privileges
+import rbac
+import os
+import sys
+import tempfile
+
+# privileges tests
+
+def test_setppriv():
+    amchild = os.fork()
+    if amchild == 0:
+        if privileges.setppriv(privileges.PRIV_OFF, privileges.PRIV_EFFECTIVE,
+            ['proc_fork']):
+            try:
+                os.fork()
+                sys.exit(1)
+            except OSError, e:
+                sys.exit(0)
+
+    child = os.wait()
+    if child[1] is not 0:
+        print "setppriv. Bad exit status from pid %i\n" % child[0]
+        return False
+    return True
+
+def test_getppriv():
+    if 'proc_fork' in privileges.getppriv(privileges.PRIV_LIMIT):
+        return True
+    print "getppriv or PRIV_PROC_FORK not in PRIV_LIMIT.\n"
+    return False
+
+def test_priv_ineffect():
+    if privileges.priv_ineffect('proc_fork'):
+        return True
+    print "priv_ineffect or PRIV_PROC_FORK not in effect\n"
+    return False
+
+# authattr tests
+
+def test_chkauthattr():
+    try:
+        a = rbac.authattr()
+    except Exception, e:
+        print "Could not instantiate authattr object: %s\n" % e
+        return False
+    try:
+        res = a.chkauthattr('solaris.*', 'root')
+    except Exception, e:
+        print "chkauthattr failed: %s\n" % e
+        return False
+    if not res:
+        print "chkauthattr failed or \'root\' lacks \'solaris.*\'\n"
+        return False
+    return True
+
+def test_getauthattr():
+    try:
+        a = rbac.authattr()
+    except Exception, e:
+        print "Could not instantiate authattr object: %s\n" % e
+        return False
+    try:
+        res = a.getauthattr()
+    except Exception, e:
+        print "getauthattr failed: %s\n" % e
+        return False
+    if not 'name' in res.keys():
+        print "getauthattr failed\n"
+        return False
+    return True
+
+def test_getauthnam():
+    try:
+        a = rbac.authattr()
+    except Exception, e:
+        print "Could not instantiate authattr object: %s\n" % e
+        return False
+    try:
+        res = a.getauthnam('solaris.')
+    except Exception, e:
+        print "getauthnam failed: %s\n" % e
+        return False
+    if not res:
+        print "getauthnam failed or \'solaris.\' not in auth_attr(4)\n"
+        return False
+    return True
+
+def test_authattr_iter():
+    try:
+        a = rbac.authattr()
+    except Exception, e:
+        print "Could not instantiate authattr object: %s\n" % e
+        return False
+    res = a.next()
+    if not 'name' in res.keys() or type(a) != type(a.__iter__()):
+        print "authattr object is not an iterable\n"
+        return False
+    return True
+
+# execattr tests
+
+def test_getexecattr():
+    try:
+        a = rbac.execattr()
+    except Exception, e:
+        print "Could not instantiate execattr object: %s\n" % e
+        return False
+    try:
+        res = a.getexecattr()
+    except Exception, e:
+        print "getexecattr failed: %s\n" % e
+        return False
+    if not 'name' in res.keys():
+        print "getexecattr failed\n"
+        return False
+    return True
+
+def test_getexecuser():
+    try:
+        a = rbac.execattr()
+    except Exception, e:
+        print "Could not instantiate execattr object: %s\n" % e
+        return False
+    try:
+        res = a.getexecuser("root", "act", "*;*;*;*;*")
+    except Exception, e:
+        print "getexecuser failed: %s\n" % e
+        return False
+    if not res:
+        print "getexecuser failed or \'root\' not assigned to \'act\', " \
+            "\'*;*;*;*;*\' \n"
+        return False
+    return True
+
+
+def test_getexecprof():
+    try:
+        a = rbac.execattr()
+    except Exception, e:
+        print "Could not instantiate execattr object: %s\n" % e
+        return False
+    try:
+        res = a.getexecprof("All", "cmd", "*")
+    except Exception, e:
+        print "getexecprof failed: %s\n" % e
+        return False
+    if not res:
+        print "getexecprof failed or \'All\' not granted \'cmd\' : \'*\'\n"
+        return False
+    return True
+
+def test_execattr_iter():
+    try:
+        a = rbac.execattr()
+    except Exception, e:
+        print "Could not instantiate execattr object: %s\n" % e
+        return False
+    res = a.next()
+    if not 'name' in res.keys() or type(a) != type(a.__iter__()):
+        print "execattr object is not an iterable\n"
+        return False
+    return True
+
+# userattr tests
+
+def test_getuserattr():
+    try:
+        a = rbac.userattr()
+    except Exception, e:
+        print "Could not instantiate userattr object: %s\n" % e
+        return False
+    try:
+        res = a.getuserattr()
+    except Exception, e:
+        print "getuserattr failed: %s\n" % e
+        return False
+    if not 'name' in res.keys():
+        print "getuserattr failed\n"
+        return False
+    return True
+
+def test_fgetuserattr():
+    temp = tempfile.NamedTemporaryFile()
+    temp.write("user::::profiles=Software Installation;roles=foo;"\
+        "auths=solaris.foo.bar")
+    temp.seek(0)
+    try:
+        a = rbac.userattr()
+    except Exception, e:
+        print "Could not instantiate userattr object: %s\n" % e
+        return False
+    try:
+        res = a.fgetuserattr(temp.name)
+        temp.close()
+    except Exception, e:
+        print "fgetuserattr failed: %s\n" % e
+        temp.close()
+        return False
+    if not 'name' in res.keys():
+        print "fgetuserattr failed\n"
+        return False
+    return True
+
+def test_getuseruid():
+    try:
+        a = rbac.userattr()
+    except Exception, e:
+        print "Could not instantiate userattr object: %s\n" % e
+        return False
+    try:
+        res = a.getuseruid(0)
+    except Exception, e:
+        print "getusernam failed: %s\n" % e
+        return False
+    if not 'name' in res:
+        print "getusernam failed or no uid 0\n"
+        return False
+    return True
+
+def test_getusernam():
+    try:
+        a = rbac.userattr()
+    except Exception, e:
+        print "Could not instantiate userattr object: %s\n" % e
+        return False
+    try:
+        res = a.getusernam('root')
+    except Exception, e:
+        print "getusernam failed: %s\n" % e
+        return False
+    if not 'name' in res:
+        print "getusernam failed or no \'root\' user\n"
+        return False
+    return True
+
+def test_userattr_iter():
+    try:
+        a = rbac.userattr()
+    except Exception, e:
+        print "Could not instantiate userattr object: %s\n" % e
+        return False
+    res = a.next()
+    if not 'name' in res.keys() or type(a) != type(a.__iter__()):
+        print "userattr object is not an iterable\n"
+        return False
+    return True
+
+if not test_setppriv() or not test_getppriv() or not test_priv_ineffect():
+    print "*** Failures detected in privileges module\n"
+    sys.exit(1)
+
+if not test_getauthattr() or not test_chkauthattr() or not test_getauthnam() \
+    or not test_authattr_iter:
+    print "*** Failures detected in rbac.authattr\n"
+    sys.exit(1)
+
+if not test_getexecattr() or not test_getexecuser() or not test_getexecprof() \
+    or not test_execattr_iter():
+    print "*** Failures detected in rbac.execattr\n"
+    sys.exit(1)
+
+if not test_getuserattr() or not test_fgetuserattr() or not test_getusernam()\
+    or not test_getuseruid() or not test_userattr_iter():
+    print "*** Failures detected in rbac.userattr\n"
+    sys.exit(1)
components/python/python26/Python26-17-netpacket-packet-h.patch
New file
@@ -0,0 +1,54 @@
diff --git Python-2.6.4/Modules/socketmodule.c Python-2.6.4/Modules/socketmodule.c
--- Python-2.6.4/Modules/socketmodule.c
+++ Python-2.6.4/Modules/socketmodule.c
@@ -81,6 +81,14 @@
 */
+#ifdef HAVE_NETPACKET_PACKET_H
+#ifdef sun
+#define USE_NETPACKET_PACKET_H 0
+#else
+#define USE_NETPACKET_PACKET_H 1
+#endif
+#endif
+
 #ifdef __APPLE__
   /*
    * inet_aton is not available on OSX 10.3, yet we want to use a binary
@@ -1092,7 +1100,7 @@
         }
 #endif
-#ifdef HAVE_NETPACKET_PACKET_H
+#if USE_NETPACKET_PACKET_H
     case AF_PACKET:
     {
         struct sockaddr_ll *a = (struct sockaddr_ll *)addr;
@@ -1382,7 +1390,7 @@
     }
 #endif
-#ifdef HAVE_NETPACKET_PACKET_H
+#if USE_NETPACKET_PACKET_H
     case AF_PACKET:
     {
         struct sockaddr_ll* addr;
@@ -1559,7 +1567,7 @@
     }
 #endif
-#ifdef HAVE_NETPACKET_PACKET_H
+#if USE_NETPACKET_PACKET_H
     case AF_PACKET:
     {
         *len_ret = sizeof (struct sockaddr_ll);
@@ -4578,7 +4586,7 @@
     PyModule_AddStringConstant(m, "BDADDR_LOCAL", "00:00:00:FF:FF:FF");
 #endif
-#ifdef HAVE_NETPACKET_PACKET_H
+#if USE_NETPACKET_PACKET_H
     PyModule_AddIntConstant(m, "AF_PACKET", AF_PACKET);
     PyModule_AddIntConstant(m, "PF_PACKET", PF_PACKET);
     PyModule_AddIntConstant(m, "PACKET_HOST", PACKET_HOST);
components/python/python26/Python26-18-readline.patch
New file
@@ -0,0 +1,31 @@
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
@@ -572,6 +572,14 @@
                 # 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',)
+            elif sys.platform == 'sunos5':
+                if sys.maxint != 9223372036854775807L:
+                    readline_extra_link_args = ('-Wl,-zrecord,-L/usr/gnu/lib,-R/usr/gnu/lib,-lreadline,-lncurses',)
+                else:
+                    if os.path.exists('/usr/gnu/lib/sparcv9'):
+                        readline_extra_link_args = ('-Wl,-zrecord,-L/usr/gnu/lib/sparcv9,-R/usr/gnu/lib/sparcv9,-lreadline,-lncurses',)
+                    else:
+                        readline_extra_link_args = ('-Wl,-zrecord,-L/usr/gnu/lib/amd64,-R/usr/gnu/lib/amd64,-lreadline,-lncurses',)
             else:
                 readline_extra_link_args = ()
@@ -588,6 +596,12 @@
                                                ['/usr/lib/termcap'],
                                                'termcap'):
                 readline_libs.append('termcap')
+
+            if sys.platform == 'sunos5':
+                # ugly hack to make the build respect -zrecord set in
+                # readline_extra_link_args above
+                readline_libs = []
+
             exts.append( Extension('readline', ['readline.c'],
                                    library_dirs=['/usr/lib/termcap'],
                                    extra_link_args=readline_extra_link_args,
components/python/python26/Python26-19-ext-stdio.patch
New file
@@ -0,0 +1,34 @@
diff --git Python-2.6.4/Modules/python.c Python-2.6.4/Modules/python.c
--- Python-2.6.4/Modules/python.c
+++ Python-2.6.4/Modules/python.c
@@ -6,6 +6,13 @@
 #include <floatingpoint.h>
 #endif
+#if defined(sun) && defined(__SVR4) && !defined(_LP64)
+#define USE_EXTENDED_FILE_STDIO 1
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <signal.h>
+#endif
+
 int
 main(int argc, char **argv)
 {
@@ -20,5 +27,16 @@
     m = fpgetmask();
     fpsetmask(m & ~FP_X_OFL);
 #endif
+#ifdef USE_EXTENDED_FILE_STDIO
+    /* enable extended FILE facility on Solaris so that Python
+           apps can keep more than 256 file descriptors open */
+    struct rlimit rlp;
+    (void) getrlimit(RLIMIT_NOFILE, &rlp);
+    rlp.rlim_cur = rlp.rlim_max;
+    if (setrlimit(RLIMIT_NOFILE, &rlp) != -1) {
+        enable_extended_FILE_stdio(-1, SIGABRT);
+    }
+#endif
+
     return Py_Main(argc, argv);
 }
components/python/python26/Python26-20-py_db.patch
New file
@@ -0,0 +1,1047 @@
diff --git Python-2.6.4/Makefile.pre.in.orig Python-2.6.4/Makefile.pre.in
--- Python-2.6.4/Makefile.pre.in.orig    Sun Feb 13 19:37:16 2011
+++ Python-2.6.4/Makefile.pre.in    Sun Feb 13 20:55:04 2011
@@ -354,7 +354,7 @@
 # Default target
 all:        build_all
-build_all:    $(BUILDPYTHON) oldsharedmods sharedmods
+build_all:    $(BUILDPYTHON) oldsharedmods sharedmods build-py_db
 # Compile a binary with gcc profile guided optimization.
 profile-opt:
@@ -677,6 +677,20 @@
 $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
+SHLIB_FLAGS = -shared -fpic -M $(srcdir)/py_db/mapfile-vers
+
+libpython2.6_db.so.1.0:    $(srcdir)/py_db/libpython26_db.c
+    $(CC) -o $@ $(CFLAGS) $(CPPFLAGS) $(SHLIB_FLAGS) $<
+
+check_offset:    $(srcdir)/py_db/check_offsets.c
+    $(CC) -o $@ $(CFLAGS) $(CPPFLAGS) $<
+
+build-py_db:    libpython2.6_db.so.1.0 check_offset
+
+install-py_db:    libpython2.6_db.so.1.0 check_offset
+    $(INSTALL_SHARED) libpython2.6_db.so.1.0 $(DESTDIR)$(LIBDIR)
+    $(INSTALL_PROGRAM) check_offset $(DESTDIR)$(BINDIR)
+
 install-pycc:    $(srcdir)/pycc
        $(INSTALL_SCRIPT $< $(DESTDIR)$(BINLIBDEST)
@@ -742,7 +755,7 @@
         $(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
 # Install everything
-install:    @FRAMEWORKINSTALLFIRST@ altinstall bininstall maninstall @FRAMEWORKINSTALLLAST@ install-pycc
+install:    @FRAMEWORKINSTALLFIRST@ altinstall bininstall maninstall @FRAMEWORKINSTALLLAST@ install-py_db install-pycc
 # Install almost everything without disturbing previous versions
 altinstall:    @FRAMEWORKALTINSTALLFIRST@ altbininstall libinstall inclinstall libainstall \
diff --git Python-2.6.4/py_db/check_offsets.c Python-2.6.4/py_db/check_offsets.c
new file mode 100644
--- /dev/null
+++ Python-2.6.4/py_db/check_offsets.c
@@ -0,0 +1,88 @@
+/*
+ * 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 2010 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#include <stdio.h>
+
+#include <Python.h>
+#include <frameobject.h>
+
+#include "libpython26_db_32.h"
+
+#if 0
+#define    offsetof(s, m)    ((size_t)(&(((s *)0)->m)))
+#endif
+
+int
+main(void)
+{
+/*
+ * PyCodeObject co_name
+ * PyCodeObject co_filename
+ * PyCodeObject co_lnotab
+ * PyFrameObject f_back
+ * PyFrameObject f_code
+ * PyFrameObject f_lasti
+ * PyInterpreterState next
+ * PyInterpreterState tstate_head
+ * PyStringObject ob_sval
+ * PyStringObject ob_size
+ * PyThreadState frame
+ * PyThreadState next
+ */
+
+    printf("struct member: native 32\n");
+    printf("PyCodeObject co_name: %d %d\n", offsetof(PyCodeObject, co_name),
+        offsetof(PyCodeObject32, co_name));
+    printf("PyCodeObject co_filename: %d %d\n", offsetof(PyCodeObject,
+        co_filename), offsetof(PyCodeObject32, co_filename));
+    printf("PyCodeObject co_lnotab: %d %d\n", offsetof(PyCodeObject,
+        co_lnotab), offsetof(PyCodeObject32, co_lnotab));
+    printf("PyFrameObject f_back: %d %d\n", offsetof(PyFrameObject, f_back),
+        offsetof(PyFrameObject32, f_back));
+    printf("PyFrameObject f_code: %d %d\n", offsetof(PyFrameObject, f_code),
+        offsetof(PyFrameObject32, f_code));
+    printf("PyFrameObject f_lasti: %d %d\n", offsetof(PyFrameObject,
+        f_lasti), offsetof(PyFrameObject32, f_lasti));
+    printf("PyInterpreterState next: %d %d\n", offsetof(PyInterpreterState,
+        next), offsetof(PyInterpreterState32, next));
+    printf("PyInterpreterState tstate_head: %d %d\n",
+        offsetof(PyInterpreterState, tstate_head),
+        offsetof(PyInterpreterState32, tstate_head));
+    printf("PyStringObject ob_sval: %d %d\n", offsetof(PyStringObject,
+        ob_sval), offsetof(PyStringObject32, ob_sval));
+    printf("PyStringObject ob_size: %d %d\n", offsetof(PyStringObject,
+        ob_size), offsetof(PyStringObject32, ob_size));
+    printf("PyThreadState frame: %d %d\n", offsetof(PyThreadState, frame),
+        offsetof(PyThreadState32, frame));
+    printf("PyThreadState next: %d %d\n", offsetof(PyThreadState, next),
+        offsetof(PyThreadState32, next));
+
+    printf("\nObject sizes\n");
+    printf("PyObject: %d %d\n", sizeof (PyObject), sizeof (PyObject32));
+    printf("PyVarObject: %d %d\n", sizeof (PyVarObject),
+        sizeof (PyVarObject32));
+
+    return (0);
+}
diff --git Python-2.6.4/py_db/libpython26_db.c Python-2.6.4/py_db/libpython26_db.c
new file mode 100644
--- /dev/null
+++ Python-2.6.4/py_db/libpython26_db.c
@@ -0,0 +1,655 @@
+/*
+ * 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 2010 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <gelf.h>
+
+#include <Python.h>
+#include <frameobject.h>
+
+#include "libpython26_db.h"
+#if defined(_LP64)
+#include "libpython26_db_32.h"
+#endif /* _LP64 */
+
+/*
+ * Because MDB always runs the debugger in the same datamodel as the target,
+ * only functions that are used by the procfs part of this interface (or shared
+ * between the two) are written as 64->32 aware.
+ */
+typedef struct pydb_arch_ops {
+    ssize_t    (*strobj_readdata)(pydb_agent_t *, uintptr_t, unsigned char *,
+        size_t);
+    int    (*frameinfo)(pydb_agent_t *, uintptr_t, char *,
+        size_t, char *, size_t, int *);
+} pydb_arch_ops_t;
+
+struct pydb_agent {
+    struct ps_prochandle *pdb_ph;
+    int pdb_vers;
+    int pdb_is_64bit;
+    int pdb_datamodel;
+    const pydb_arch_ops_t *pdb_ops;
+};
+
+typedef uintptr_t (*pdi_next_cb_t)(pydb_iter_t *);
+
+struct pydb_iter {
+    struct ps_prochandle *pdi_ph;
+    uintptr_t pdi_current;
+    pdi_next_cb_t pdi_nextf;
+};
+
+#define    LIBPYTHON    "libpython2.6.so"
+
+#define    MIN(x, y)    (((x) < (y)) ? (x) : (y))
+
+/* Generic interface to helper functions */
+static ssize_t pydb_strobj_readdata(pydb_agent_t *py, uintptr_t addr,
+    unsigned char *buf, size_t buf_len);
+static int pydb_getlno(pydb_agent_t *py, uintptr_t lnotab_addr, int firstline,
+    int lastinst);
+static int pydb_frameinfo(pydb_agent_t *py, uintptr_t addr, char *funcnm,
+    size_t funcnm_sz, char *filenm, size_t filenm_sz, int *lineno);
+
+/* datamodel specific implementation of helper functions */
+static ssize_t pydb_strobj_readdata_native(pydb_agent_t *py, uintptr_t addr,
+    unsigned char *buf, size_t buf_len);
+static int pydb_frameinfo_native(pydb_agent_t *py, uintptr_t addr, char *funcnm,
+    size_t funcnm_sz, char *filenm, size_t filenm_sz, int *lineno);
+
+#if defined (_LP64)
+static ssize_t pydb_strobj_readdata_32(pydb_agent_t *py, uintptr_t addr,
+    unsigned char *buf, size_t buf_len);
+static int pydb_frameinfo_32(pydb_agent_t *py, uintptr_t addr, char *funcnm,
+    size_t funcnm_sz, char *filenm, size_t filenm_sz, int *lineno);
+#endif /* _LP64 */
+
+static ssize_t pydb_strobj_readstr(pydb_agent_t *py, uintptr_t addr, char *buf,
+    size_t len);
+
+/* Iterator function next routines.  Plugable, configured by iterator init */
+static uintptr_t pydb_frame_iter_next(pydb_iter_t *iter);
+static uintptr_t pydb_interp_iter_next(pydb_iter_t *iter);
+static uintptr_t pydb_thread_iter_next(pydb_iter_t *iter);
+
+static const char *strbasename(const char *s);
+
+static const pydb_arch_ops_t arch_ops_native = {
+    .frameinfo = pydb_frameinfo_native,
+    .strobj_readdata = pydb_strobj_readdata_native,
+};
+
+#if defined (_LP64)
+static const pydb_arch_ops_t arch_ops_32 = {
+    .frameinfo = pydb_frameinfo_32,
+    .strobj_readdata = pydb_strobj_readdata_32,
+};
+#endif /* _LP64 */
+
+static const char *
+strbasename(const char *s)
+{
+    const char *p = strrchr(s, '/');
+
+    if (p == NULL)
+        return (s);
+
+    return (++p);
+}
+
+/* Agent creation / destruction routines */
+
+pydb_agent_t *
+pydb_agent_create(struct ps_prochandle *P, int vers)
+{
+    pydb_agent_t *py;
+    int datamodel;
+
+    if (vers != PYDB_VERSION) {
+        errno = ENOTSUP;
+        return (NULL);
+    }
+
+    if (ps_pdmodel(P, &datamodel) != PS_OK) {
+        return (NULL);
+    }
+
+    py = (pydb_agent_t *)malloc(sizeof (pydb_agent_t));
+    if (py == NULL) {
+        return (NULL);
+    }
+
+    py->pdb_ph = P;
+    py->pdb_vers = vers;
+    py->pdb_datamodel = datamodel;
+    py->pdb_is_64bit = 0;
+    py->pdb_ops = &arch_ops_native;
+
+#if defined (_LP64)
+    py->pdb_is_64bit = (datamodel == PR_MODEL_LP64);
+    if (!py->pdb_is_64bit) {
+        py->pdb_ops = &arch_ops_32;
+    }
+#endif /* _LP64 */
+
+    return (py);
+}
+
+void
+pydb_agent_destroy(pydb_agent_t *py)
+{
+    if (py == NULL) {
+        return;
+    }
+
+    free(py);
+}
+
+/* Helper functions */
+static int
+pydb_getlno(pydb_agent_t *py, uintptr_t lnotab_addr, int firstline,
+    int lastinst)
+{
+    unsigned char lnotab[4096];
+    ssize_t lnotab_len;
+    int addr, line;
+    int i;
+
+    lnotab_len = pydb_strobj_readdata(py, lnotab_addr, lnotab,
+        sizeof (lnotab));
+    if (lnotab_len < 0) {
+        return (-1);
+    }
+
+    /*
+     * Python's line number algorithm is arcane. See here for details:
+     * http://svn.python.org/projects/python/trunk/Objects/lnotab_notes.txt
+     */
+
+    line = firstline;
+    for (addr = i = 0; i < lnotab_len; i += 2) {
+        if (addr + lnotab[i] > lastinst) {
+            break;
+        }
+        addr += lnotab[i];
+        line += lnotab[i + 1];
+    }
+
+    return (line);
+}
+
+static ssize_t
+pydb_strobj_readdata(pydb_agent_t *py, uintptr_t addr, unsigned char *buf,
+    size_t buf_len)
+{
+    return (py->pdb_ops->strobj_readdata(py, addr, buf, buf_len));
+}
+
+static ssize_t
+pydb_strobj_readdata_native(pydb_agent_t *py, uintptr_t addr,
+    unsigned char *buf, size_t buf_len)
+{
+    PyStringObject sobj;
+    ssize_t obj_sz;
+    ssize_t read_sz;
+    psaddr_t straddr;
+
+    /*
+     * PyStringObjects are variable size.  The size of the PyStringObject
+     * struct is fixed, and known at compile time; however, the size of the
+     * associated buffer is variable.  The char[1] element at the end of the
+     * structure contains the string, and the ob_size of the PyStringObject
+     * indicates how much extra space was allocated to contain the string
+     * buffer at the object's tail.  Read in the fixed size portion of the
+     * object first, and then read the contents of the data buffer into the
+     * buffer passed by the caller.
+     */
+
+    if (ps_pread(py->pdb_ph, addr, &sobj, sizeof (PyStringObject))
+        != PS_OK) {
+        return (-1);
+    }
+
+    obj_sz = (ssize_t)PyString_GET_SIZE(&sobj);
+
+    read_sz = MIN(obj_sz, (ssize_t)buf_len);
+    straddr = (psaddr_t)(addr + offsetof(PyStringObject, ob_sval));
+
+    if (ps_pread(py->pdb_ph, straddr, buf, (size_t)read_sz) != PS_OK) {
+        return (-1);
+    }
+
+    return (read_sz);
+}
+
+#if defined(_LP64)
+static ssize_t
+pydb_strobj_readdata_32(pydb_agent_t *py, uintptr_t addr,
+    unsigned char *buf, size_t buf_len)
+{
+    PyStringObject32 sobj;
+    ssize_t obj_sz;
+    ssize_t read_sz;
+    psaddr_t straddr;
+
+    /*
+     * PyStringObjects are variable size.  The size of the PyStringObject
+     * struct is fixed, and known at compile time; however, the size of the
+     * associated buffer is variable.  The char[1] element at the end of the
+     * structure contains the string, and the ob_size of the PyStringObject
+     * indicates how much extra space was allocated to contain the string
+     * buffer at the object's tail.  Read in the fixed size portion of the
+     * object first, and then read the contents of the data buffer into the
+     * buffer passed by the caller.
+     */
+
+    if (ps_pread(py->pdb_ph, addr, &sobj, sizeof (PyStringObject32))
+        != PS_OK) {
+        return (-1);
+    }
+
+    obj_sz = (ssize_t)PyString_GET_SIZE32(&sobj);
+
+    read_sz = MIN(obj_sz, (ssize_t)buf_len);
+    straddr = (psaddr_t)(addr + offsetof(PyStringObject32, ob_sval));
+
+    if (ps_pread(py->pdb_ph, straddr, buf, (size_t)read_sz) != PS_OK) {
+        return (-1);
+    }
+
+    return (read_sz);
+}
+#endif /* _LP64 */
+
+/*
+ * Most Python PyStringObjects contain strings, as one would expect.  However,
+ * due to some sleazy hackery in parts of the Python code, some string objects
+ * are used as buffers for binary data.  In the general case,
+ * pydb_strobj_readstr() should be used to read strings out of string objects.
+ * It wraps pydb_strobj_readdata(), which should be used by callers only when
+ * trying to retrieve binary data.  (This routine does some string cleanup).
+ */
+static ssize_t
+pydb_strobj_readstr(pydb_agent_t *py, uintptr_t addr, char *buf,
+    size_t buf_len)
+{
+    ssize_t read_sz;
+
+    read_sz = pydb_strobj_readdata(py, addr, (unsigned char *)buf, buf_len);
+
+    if (read_sz >= 0) {
+        if (read_sz >= buf_len) {
+            read_sz = buf_len - 1;
+        }
+
+        buf[read_sz] = '\0';
+    }
+
+    return (read_sz);
+}
+
+
+static int
+pydb_frameinfo(pydb_agent_t *py, uintptr_t addr, char *funcnm,
+    size_t funcnm_sz, char *filenm, size_t filenm_sz, int *lineno)
+{
+    return (py->pdb_ops->frameinfo(py, addr, funcnm, funcnm_sz,
+        filenm, filenm_sz, lineno));
+}
+
+static int
+pydb_frameinfo_native(pydb_agent_t *py, uintptr_t addr, char *funcnm,
+    size_t funcnm_sz, char *filenm, size_t filenm_sz, int *lineno)
+{
+    PyFrameObject fo;
+    PyCodeObject co;
+    ssize_t rc;
+
+    if (ps_pread(py->pdb_ph, addr, &fo, sizeof (PyFrameObject))
+        != PS_OK) {
+        return (-1);
+    }
+
+    if (ps_pread(py->pdb_ph, (uintptr_t)fo.f_code, &co,
+        sizeof (PyCodeObject)) != PS_OK) {
+        return (-1);
+    }
+
+    rc = pydb_strobj_readstr(py, (uintptr_t)co.co_name, funcnm, funcnm_sz);
+    if (rc < 0) {
+        return (-1);
+    }
+
+    rc = pydb_strobj_readstr(py, (uintptr_t)co.co_filename, filenm,
+        filenm_sz);
+    if (rc < 0) {
+        return (-1);
+    }
+
+    *lineno = pydb_getlno(py, (uintptr_t)co.co_lnotab, co.co_firstlineno,
+        fo.f_lasti);
+    if (*lineno < 0) {
+        return (-1);
+    }
+
+    return (0);
+}
+
+#if defined (_LP64)
+static int
+pydb_frameinfo_32(pydb_agent_t *py, uintptr_t addr, char *funcnm,
+    size_t funcnm_sz, char *filenm, size_t filenm_sz, int *lineno)
+{
+    PyFrameObject32 fo;
+    PyCodeObject32 co;
+    ssize_t rc;
+
+    if (ps_pread(py->pdb_ph, addr, &fo, sizeof (PyFrameObject32))
+        != PS_OK) {
+        return (-1);
+    }
+
+    if (ps_pread(py->pdb_ph, (uintptr_t)fo.f_code, &co,
+        sizeof (PyCodeObject32)) != PS_OK) {
+        return (-1);
+    }
+
+    rc = pydb_strobj_readstr(py, (uintptr_t)co.co_name, funcnm, funcnm_sz);
+    if (rc < 0) {
+        return (-1);
+    }
+
+    rc = pydb_strobj_readstr(py, (uintptr_t)co.co_filename, filenm,
+        filenm_sz);
+    if (rc < 0) {
+        return (-1);
+    }
+
+    *lineno = pydb_getlno(py, (uintptr_t)co.co_lnotab, co.co_firstlineno,
+        fo.f_lasti);
+    if (*lineno < 0) {
+        return (-1);
+    }
+
+    return (0);
+}
+
+#endif /* _LP64 */
+
+/* Functions that are part of the library's interface */
+
+/*
+ * Given the address of a PyFrameObject, and a buffer of a known size,
+ * fill the buffer with a description of the frame.
+ */
+int
+pydb_get_frameinfo(pydb_agent_t *py, uintptr_t frame_addr, char *fbuf,
+    size_t bufsz, int verbose)
+{
+    char funcname[1024];
+    char filename[1024];
+    char *fn;
+    int lineno;
+    int length = (py->pdb_is_64bit ? 16 : 8);
+    int rc;
+
+    rc = pydb_frameinfo(py, frame_addr, funcname, sizeof (funcname),
+        filename, sizeof (filename), &lineno);
+    if (rc < 0) {
+        return (-1);
+    }
+
+    if (!verbose) {
+        fn = (char *)strbasename(filename);
+    } else {
+        fn = filename;
+    }
+
+    (void) snprintf(fbuf, bufsz, "%0.*lx %s:%d %s()\n", length,
+        frame_addr, fn, lineno, funcname);
+
+    return (0);
+}
+
+/*
+ * Return a description about a PyFrameObject, if the object is
+ * actually a PyFrameObject.  In this case, the pc argument is checked
+ * to make sure that it came from a function that takes a PyFrameObject
+ * as its first (argv[0]) argument.
+ */
+int
+pydb_pc_frameinfo(pydb_agent_t *py, uintptr_t pc, uintptr_t frame_addr,
+    char *fbuf, size_t bufsz)
+{
+    char funcname[1024];
+    char filename[1024];
+    int lineno;
+    int rc;
+    ps_sym_t psym;
+
+    /*
+     * If PC doesn't match PyEval_EvalFrameEx in either libpython
+     * or the executable, don't decode it.
+     */
+    if (ps_pglobal_sym(py->pdb_ph, LIBPYTHON, "PyEval_EvalFrameEx", &psym)
+        != PS_OK) {
+        return (-1);
+    }
+
+    /* If symbol found, ensure that PC falls within PyEval_EvalFrameEx. */
+    if (pc < psym.st_value || pc > psym.st_value + psym.st_size) {
+        return (-1);
+    }
+
+    rc = pydb_frameinfo(py, frame_addr, funcname, sizeof (funcname),
+        filename, sizeof (filename), &lineno);
+    if (rc < 0) {
+        return (-1);
+    }
+
+    (void) snprintf(fbuf, bufsz, "[ %s:%d (%s) ]\n", filename, lineno,
+        funcname);
+
+    return (0);
+}
+
+/*
+ * Walks the list of PyInterpreterState objects.  If caller doesn't
+ * supply address of list, this method will look it up.
+ */
+pydb_iter_t *
+pydb_interp_iter_init(pydb_agent_t *py, uintptr_t addr)
+{
+    pydb_iter_t *itr;
+    uintptr_t i_addr;
+    int rc;
+
+    if (addr == 0) {
+        rc = ps_pglobal_lookup(py->pdb_ph, LIBPYTHON, "interp_head",
+            (psaddr_t *)&addr);
+        if (rc != PS_OK) {
+            return (NULL);
+        }
+    }
+
+    if (ps_pread(py->pdb_ph, (uintptr_t)addr, &i_addr, sizeof (uintptr_t))
+        != PS_OK) {
+        return (NULL);
+    }
+
+    itr = malloc(sizeof (pydb_iter_t));
+    if (itr == NULL) {
+        return (NULL);
+    }
+
+    itr->pdi_ph = py->pdb_ph;
+    itr->pdi_current = i_addr;
+    itr->pdi_nextf = pydb_interp_iter_next;
+
+    return (itr);
+}
+
+static uintptr_t
+pydb_interp_iter_next(pydb_iter_t *iter)
+{
+    PyInterpreterState st;
+    uintptr_t cur;
+
+    cur = iter->pdi_current;
+
+    if (cur == 0) {
+        return (cur);
+    }
+
+    if (ps_pread(iter->pdi_ph, cur, &st, sizeof (PyInterpreterState))
+        != PS_OK) {
+        iter->pdi_current = 0;
+        return (0);
+    }
+
+    iter->pdi_current = (uintptr_t)st.next;
+
+    return (cur);
+}
+
+/*
+ * Walk a list of Python PyFrameObjects.  The addr argument must be
+ * the address of a valid PyThreadState object.
+ */
+pydb_iter_t *
+pydb_frame_iter_init(pydb_agent_t *py, uintptr_t addr)
+{
+    pydb_iter_t *itr;
+    PyThreadState ts;
+
+    if (ps_pread(py->pdb_ph, (uintptr_t)addr, &ts, sizeof (PyThreadState))
+        != PS_OK) {
+        return (NULL);
+    }
+
+    itr = malloc(sizeof (pydb_iter_t));
+    if (itr == NULL) {
+        return (NULL);
+    }
+
+    itr->pdi_ph = py->pdb_ph;
+    itr->pdi_current = (uintptr_t)ts.frame;
+    itr->pdi_nextf = pydb_frame_iter_next;
+
+    return (itr);
+}
+
+static uintptr_t
+pydb_frame_iter_next(pydb_iter_t *iter)
+{
+    PyFrameObject fo;
+    uintptr_t cur;
+
+    cur = iter->pdi_current;
+
+    if (cur == 0) {
+        return (cur);
+    }
+
+    if (ps_pread(iter->pdi_ph, cur, &fo, sizeof (PyFrameObject))
+        != PS_OK) {
+        iter->pdi_current = 0;
+        return (0);
+    }
+
+    iter->pdi_current = (uintptr_t)fo.f_back;
+
+    return (cur);
+}
+
+/*
+ * Walk a list of Python PyThreadState objects.  The addr argument must be
+ * the address of a valid PyInterpreterState object.
+ */
+pydb_iter_t *
+pydb_thread_iter_init(pydb_agent_t *py, uintptr_t addr)
+{
+    pydb_iter_t *itr;
+    PyInterpreterState is;
+
+    if (ps_pread(py->pdb_ph, (uintptr_t)addr, &is,
+        sizeof (PyInterpreterState)) != PS_OK) {
+        return (NULL);
+    }
+
+    itr = malloc(sizeof (pydb_iter_t));
+    if (itr == NULL) {
+        return (NULL);
+    }
+
+    itr->pdi_ph = py->pdb_ph;
+    itr->pdi_current = (uintptr_t)is.tstate_head;
+    itr->pdi_nextf = pydb_thread_iter_next;
+
+    return (itr);
+}
+
+static uintptr_t
+pydb_thread_iter_next(pydb_iter_t *iter)
+{
+    PyThreadState ts;
+    uintptr_t cur;
+
+    cur = iter->pdi_current;
+
+    if (cur == 0) {
+        return (cur);
+    }
+
+    if (ps_pread(iter->pdi_ph, cur, &ts, sizeof (PyThreadState)) != PS_OK) {
+        iter->pdi_current = 0;
+        return (0);
+    }
+
+    iter->pdi_current = (uintptr_t)ts.next;
+
+    return (cur);
+}
+
+
+uintptr_t
+pydb_iter_next(pydb_iter_t *iter)
+{
+    return (iter->pdi_nextf(iter));
+}
+
+void
+pydb_iter_fini(pydb_iter_t *iter)
+{
+    if (iter == NULL) {
+        return;
+    }
+
+    free(iter);
+}
diff --git Python-2.6.4/py_db/libpython26_db.h Python-2.6.4/py_db/libpython26_db.h
new file mode 100644
--- /dev/null
+++ Python-2.6.4/py_db/libpython26_db.h
@@ -0,0 +1,74 @@
+/*
+ * 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 2010 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef    _LIBPYTHON26_DB_H
+#define    _LIBPYTHON26_DB_H
+
+#include <proc_service.h>
+
+#ifdef    __cplusplus
+extern "C" {
+#endif
+
+/* Agent is opaque to library's consumers.  */
+typedef struct pydb_agent pydb_agent_t;
+
+/*
+ * Library's debug version is 1.  Changes to interface should increase this
+ * number.
+ */
+#define    PYDB_VERSION    1
+
+/* Agent creation/destruction routines */
+extern    pydb_agent_t    *pydb_agent_create(struct ps_prochandle *P, int vers);
+extern    void        pydb_agent_destroy(pydb_agent_t *py);
+
+/* Used by callers that know they are looking at a PyFrameObject */
+extern    int    pydb_get_frameinfo(pydb_agent_t *py, uintptr_t frame_addr,
+    char *fbuf, size_t bufsz, int verbose);
+
+/*
+ * Used by callers that don't know if they're looking at PyFrameObject.
+ * Checks PC for traceable functions.
+ */
+extern    int    pydb_pc_frameinfo(pydb_agent_t *py, uintptr_t pc,
+    uintptr_t frame_addr, char *fbuf, size_t bufsz);
+
+/* Iterator functions */
+typedef struct pydb_iter pydb_iter_t;
+
+extern    pydb_iter_t    *pydb_frame_iter_init(pydb_agent_t *py, uintptr_t addr);
+extern    pydb_iter_t    *pydb_interp_iter_init(pydb_agent_t *py,
+    uintptr_t addr);
+extern    pydb_iter_t    *pydb_thread_iter_init(pydb_agent_t *py,
+    uintptr_t addr);
+extern    void        pydb_iter_fini(pydb_iter_t *iter);
+extern    uintptr_t    pydb_iter_next(pydb_iter_t *iter);
+
+#ifdef    __cplusplus
+}
+#endif
+
+#endif    /* _LIBPYTHON26_DB_H */
diff --git Python-2.6.4/py_db/libpython26_db_32.h Python-2.6.4/py_db/libpython26_db_32.h
new file mode 100644
--- /dev/null
+++ Python-2.6.4/py_db/libpython26_db_32.h
@@ -0,0 +1,122 @@
+/*
+ * 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 2010 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef    _LIBPYTHON26_DB_32_H
+#define    _LIBPYTHON26_DB_32_H
+
+#ifdef    __cplusplus
+extern "C" {
+#endif
+
+#include <sys/types.h>
+
+/*
+ * Define 32-bit Python data structures for use by the 64-bit debugger.  This
+ * is so that a 64-bit debugger may properly examine a 32-bit process.
+ *
+ * In many cases, the debug library is only concerned with a few fields in the
+ * Python structure.  In that case, the other ancillary fields are elided.
+ */
+
+typedef uint32_t uintptr32_t;
+typedef int32_t Py_ssize32_t;
+
+typedef struct _is32 {
+    uintptr32_t    next;
+    uintptr32_t    tstate_head;
+} PyInterpreterState32;
+
+typedef struct _ts32 {
+    uintptr32_t    next;
+    uintptr32_t    interp;
+    uintptr32_t    frame;
+} PyThreadState32;
+
+#define    PyObject_HEAD32            \
+    Py_ssize32_t    ob_refcnt;    \
+    uintptr32_t    ob_type;
+
+#define    PyObject_VAR_HEAD32        \
+    PyObject_HEAD32            \
+    Py_ssize32_t    ob_size;
+
+typedef struct {
+    PyObject_HEAD32
+} PyObject32;
+
+typedef struct {
+    PyObject_VAR_HEAD32
+} PyVarObject32;
+
+typedef struct {
+    PyObject_VAR_HEAD32
+    int32_t        ob_shash;
+    int        ob_sstate;
+    char        ob_sval[1];
+} PyStringObject32;
+
+#define    Py_SIZE32(ob)            (((PyVarObject32*)(ob))->ob_size)
+#define    PyString_GET_SIZE32(op)        Py_SIZE32(op)
+#define    PyString_AS_STRING32(op)    (((PyStringObject32 *)(op))->ob_sval)
+
+typedef struct {
+    PyObject_VAR_HEAD32
+    uintptr32_t    f_back;
+    uintptr32_t    f_code;
+    uintptr32_t    f_builtins;
+    uintptr32_t    f_globals;
+    uintptr32_t    f_locals;
+    uintptr32_t    f_valuestack;
+    uintptr32_t    f_stacktop;
+    uintptr32_t    f_trace;
+    uintptr32_t    f_exc_typpe, f_exc_value, f_exc_traceback;
+    uintptr32_t    f_tstate;
+    int        f_lasti;
+    int        f_lineno;
+} PyFrameObject32;
+
+typedef struct {
+    PyObject_HEAD32
+    int        co_argcount;
+    int        co_nlocals;
+    int        co_stacksize;
+    int        co_flags;
+    uintptr32_t    co_code;
+    uintptr32_t    co_consts;
+    uintptr32_t    co_names;
+    uintptr32_t    co_varnames;
+    uintptr32_t    co_freevars;
+    uintptr32_t    co_cellvars;
+    uintptr32_t    co_filename;
+    uintptr32_t    co_name;
+    int        co_firstlineno;
+    uintptr32_t    co_lnotab;
+} PyCodeObject32;
+
+#ifdef    __cplusplus
+}
+#endif
+
+#endif    /* _LIBPYTHON26_DB_32_H */
diff --git Python-2.6.4/py_db/mapfile-vers Python-2.6.4/py_db/mapfile-vers
new file mode 100644
--- /dev/null
+++ Python-2.6.4/py_db/mapfile-vers
@@ -0,0 +1,40 @@
+#
+# 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 2010 Sun Microsystems, Inc.  All rights reserved.
+# Use is subject to license terms.
+#
+
+SUNWprivate_1.1 {
+    global:
+    pydb_agent_create;
+    pydb_agent_destroy;
+    pydb_frame_iter_init;
+    pydb_get_frameinfo;
+    pydb_pc_frameinfo;
+    pydb_interp_iter_init;
+    pydb_thread_iter_init;
+    pydb_iter_fini;
+    pydb_iter_next;
+    local:
+    *;
+};
components/python/python26/Python26-21-getpass.patch
New file
@@ -0,0 +1,31 @@
diff --git Python-2.6.4/Lib/getpass.py Python-2.6.4/Lib/getpass.py
--- Python-2.6.4/Lib/getpass.py
+++ Python-2.6.4/Lib/getpass.py
@@ -62,12 +62,16 @@
         try:
             old = termios.tcgetattr(fd)     # a copy to save
             new = old[:]
-            new[3] &= ~termios.ECHO  # 3 == 'lflags'
+            new[3] &= ~(termios.ECHO|termios.ISIG)  # 3 == 'lflags'
+            tcsetattr_flags = termios.TCSAFLUSH
+            if hasattr(termios, 'TCSASOFT'):
+                tcsetattr_flags |= termios.TCSASOFT
             try:
-                termios.tcsetattr(fd, termios.TCSADRAIN, new)
+                termios.tcsetattr(fd, tcsetattr_flags, new)
                 passwd = _raw_input(prompt, stream, input=input)
             finally:
-                termios.tcsetattr(fd, termios.TCSADRAIN, old)
+                termios.tcsetattr(fd, tcsetattr_flags, old)
+                stream.flush()  # issue7208
         except termios.error, e:
             if passwd is not None:
                 # _raw_input succeeded.  The final tcsetattr failed.  Reraise
@@ -125,6 +129,7 @@
     if prompt:
         stream.write(prompt)
         stream.flush()
+    # NOTE: The Python C API calls flockfile() (and unlock) during readline.
     line = input.readline()
     if not line:
         raise EOFError
components/python/python26/Python26-22-bindir.patch
New file
@@ -0,0 +1,11 @@
--- Python-2.6.4/Makefile.pre.in.orig    Fri Feb 11 11:35:54 2011
+++ Python-2.6.4/Makefile.pre.in    Fri Feb 11 11:36:15 2011
@@ -86,7 +86,7 @@
 datarootdir=    @datarootdir@
 # Expanded directories
-BINDIR=        $(exec_prefix)/bin
+BINDIR=        @bindir@
 LIBDIR=        @libdir@
 MANDIR=        @mandir@
 INCLUDEDIR=    @includedir@
components/python/python26/SUNWPython26.p5m
New file
@@ -0,0 +1,28 @@
#
# 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:/SUNWPython26@2.6.4,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=runtime/python-26@2.6.4-0.133 type=require
components/python/python26/python-26.p5m
New file
@@ -0,0 +1,2962 @@
#
# 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:/runtime/python-26@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="The Python interpreter, libraries and utilities"
set name=info.classification value="org.opensolaris.category.2008:Development/Python"
set name=info.upstream_url value="http://python.org/"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
dir path=usr
dir path=usr/bin
dir path=usr/bin/$(MACH32)
dir path=usr/bin/$(MACH64)
dir path=usr/include
dir path=usr/include/python2.6
dir path=usr/lib
dir path=usr/lib/$(MACH64)
dir path=usr/lib/python2.6
dir path=usr/lib/python2.6/compiler
dir path=usr/lib/python2.6/config
dir path=usr/lib/python2.6/ctypes
dir path=usr/lib/python2.6/ctypes/macholib
dir path=usr/lib/python2.6/ctypes/test
dir path=usr/lib/python2.6/curses
dir path=usr/lib/python2.6/distutils
dir path=usr/lib/python2.6/distutils/command
dir path=usr/lib/python2.6/distutils/tests
dir path=usr/lib/python2.6/email
dir path=usr/lib/python2.6/email/mime
dir path=usr/lib/python2.6/email/test
dir path=usr/lib/python2.6/email/test/data
dir path=usr/lib/python2.6/encodings
dir path=usr/lib/python2.6/hotshot
dir path=usr/lib/python2.6/idlelib
dir path=usr/lib/python2.6/idlelib/Icons
dir path=usr/lib/python2.6/json
dir path=usr/lib/python2.6/json/tests
dir path=usr/lib/python2.6/lib-dynload
dir path=usr/lib/python2.6/lib-old
dir path=usr/lib/python2.6/lib-tk
dir path=usr/lib/python2.6/lib2to3
dir path=usr/lib/python2.6/lib2to3/fixes
dir path=usr/lib/python2.6/lib2to3/pgen2
dir path=usr/lib/python2.6/lib2to3/tests
dir path=usr/lib/python2.6/logging
dir path=usr/lib/python2.6/multiprocessing
dir path=usr/lib/python2.6/multiprocessing/dummy
dir path=usr/lib/python2.6/plat-sunos5
dir path=usr/lib/python2.6/site-packages
dir path=usr/lib/python2.6/sqlite3
dir path=usr/lib/python2.6/sqlite3/test
dir path=usr/lib/python2.6/test
dir path=usr/lib/python2.6/test/decimaltestdata
dir path=usr/lib/python2.6/wsgiref
dir path=usr/lib/python2.6/vendor-packages
dir path=usr/lib/python2.6/xml
dir path=usr/lib/python2.6/xml/dom
dir path=usr/lib/python2.6/xml/etree
dir path=usr/lib/python2.6/xml/parsers
dir path=usr/lib/python2.6/xml/sax
dir path=usr/lib/python2.6
dir path=usr/lib/python2.6/lib-dynload
dir path=usr/lib/python2.6/lib-dynload/64
dir path=usr/share
dir path=usr/share/man
dir path=usr/share/man/man1
# delivered from python-24, but should be delivered from here
#file path=usr/bin/idle
#file path=usr/bin/pydoc
file path=usr/bin/2to3
# isapython2.6
file usr/bin/python2.6 path=usr/bin/$(MACH32)/isapython2.6
file usr/bin/$(MACH64)/python2.6 path=usr/bin/$(MACH64)/isapython2.6
hardlink path=usr/bin/isapython2.6 target=../lib/isaexec pkg.linted=true
# python2.6
link path=usr/bin/python target=python2.6
link path=usr/bin/python2.6 target=$(MACH32)/isapython2.6
link path=usr/bin/$(MACH64)/python target=python2.6
link path=usr/bin/$(MACH64)/python2.6 target=isapython2.6
link path=usr/bin/python-config target=python2.6-config
file path=usr/bin/python2.6-config
file path=usr/bin/$(MACH64)/python2.6-config
link path=usr/lib/$(MACH64)/libpython2.6_db.so target=libpython2.6_db.so.1.0
file path=usr/lib/$(MACH64)/libpython2.6_db.so.1.0
link path=usr/lib/libpython2.6_db.so target=libpython2.6_db.so.1.0
file path=usr/lib/libpython2.6_db.so.1.0
file path=usr/include/python2.6/Python-ast.h
file path=usr/include/python2.6/Python.h
file path=usr/include/python2.6/abstract.h
file path=usr/include/python2.6/asdl.h
file path=usr/include/python2.6/ast.h
file path=usr/include/python2.6/bitset.h
file path=usr/include/python2.6/boolobject.h
file path=usr/include/python2.6/bufferobject.h
file path=usr/include/python2.6/bytearrayobject.h
file path=usr/include/python2.6/bytes_methods.h
file path=usr/include/python2.6/bytesobject.h
file path=usr/include/python2.6/cStringIO.h
file path=usr/include/python2.6/cellobject.h
file path=usr/include/python2.6/ceval.h
file path=usr/include/python2.6/classobject.h
file path=usr/include/python2.6/cobject.h
file path=usr/include/python2.6/code.h
file path=usr/include/python2.6/codecs.h
file path=usr/include/python2.6/compile.h
file path=usr/include/python2.6/complexobject.h
file path=usr/include/python2.6/datetime.h
file path=usr/include/python2.6/descrobject.h
file path=usr/include/python2.6/dictobject.h
file path=usr/include/python2.6/enumobject.h
file path=usr/include/python2.6/errcode.h
file path=usr/include/python2.6/eval.h
file path=usr/include/python2.6/fileobject.h
file path=usr/include/python2.6/floatobject.h
file path=usr/include/python2.6/frameobject.h
file path=usr/include/python2.6/funcobject.h
file path=usr/include/python2.6/genobject.h
file path=usr/include/python2.6/graminit.h
file path=usr/include/python2.6/grammar.h
file path=usr/include/python2.6/import.h
file path=usr/include/python2.6/intobject.h
file path=usr/include/python2.6/intrcheck.h
file path=usr/include/python2.6/iterobject.h
file path=usr/include/python2.6/listobject.h
file path=usr/include/python2.6/longintrepr.h
file path=usr/include/python2.6/longobject.h
file path=usr/include/python2.6/marshal.h
file path=usr/include/python2.6/metagrammar.h
file path=usr/include/python2.6/methodobject.h
file path=usr/include/python2.6/modsupport.h
file path=usr/include/python2.6/moduleobject.h
file path=usr/include/python2.6/node.h
file path=usr/include/python2.6/object.h
file path=usr/include/python2.6/objimpl.h
file path=usr/include/python2.6/opcode.h
file path=usr/include/python2.6/osdefs.h
file path=usr/include/python2.6/parsetok.h
file path=usr/include/python2.6/patchlevel.h
file path=usr/include/python2.6/pgen.h
file path=usr/include/python2.6/pgenheaders.h
file path=usr/include/python2.6/py_curses.h
file path=usr/include/python2.6/pyarena.h
file path=usr/include/python2.6/pyconfig.h
file path=usr/include/python2.6/pydebug.h
file path=usr/include/python2.6/pyerrors.h
file path=usr/include/python2.6/pyexpat.h
file path=usr/include/python2.6/pyfpe.h
file path=usr/include/python2.6/pygetopt.h
file path=usr/include/python2.6/pymacconfig.h
file path=usr/include/python2.6/pymactoolbox.h
file path=usr/include/python2.6/pymath.h
file path=usr/include/python2.6/pymem.h
file path=usr/include/python2.6/pyport.h
file path=usr/include/python2.6/pystate.h
file path=usr/include/python2.6/pystrcmp.h
file path=usr/include/python2.6/pystrtod.h
file path=usr/include/python2.6/pythonrun.h
file path=usr/include/python2.6/pythread.h
file path=usr/include/python2.6/rangeobject.h
file path=usr/include/python2.6/setobject.h
file path=usr/include/python2.6/sliceobject.h
file path=usr/include/python2.6/stringobject.h
file path=usr/include/python2.6/structmember.h
file path=usr/include/python2.6/structseq.h
file path=usr/include/python2.6/symtable.h
file path=usr/include/python2.6/sysmodule.h
file path=usr/include/python2.6/timefuncs.h
file path=usr/include/python2.6/token.h
file path=usr/include/python2.6/traceback.h
file path=usr/include/python2.6/tupleobject.h
file path=usr/include/python2.6/ucnhash.h
file path=usr/include/python2.6/unicodeobject.h
file path=usr/include/python2.6/warnings.h
file path=usr/include/python2.6/weakrefobject.h
file path=usr/lib/$(MACH64)/libpython2.6.so.1.0
file path=usr/lib/libpython2.6.so.1.0
file path=usr/lib/python2.6/BaseHTTPServer.py
file path=usr/lib/python2.6/BaseHTTPServer.pyc
file path=usr/lib/python2.6/Bastion.py
file path=usr/lib/python2.6/Bastion.pyc
file path=usr/lib/python2.6/CGIHTTPServer.py
file path=usr/lib/python2.6/CGIHTTPServer.pyc
file path=usr/lib/python2.6/ConfigParser.py
file path=usr/lib/python2.6/ConfigParser.pyc
file path=usr/lib/python2.6/Cookie.py
file path=usr/lib/python2.6/Cookie.pyc
file path=usr/lib/python2.6/DocXMLRPCServer.py
file path=usr/lib/python2.6/DocXMLRPCServer.pyc
file path=usr/lib/python2.6/HTMLParser.py
file path=usr/lib/python2.6/HTMLParser.pyc
file path=usr/lib/python2.6/LICENSE.txt
file path=usr/lib/python2.6/MimeWriter.py
file path=usr/lib/python2.6/MimeWriter.pyc
file path=usr/lib/python2.6/Queue.py
file path=usr/lib/python2.6/Queue.pyc
file path=usr/lib/python2.6/SimpleHTTPServer.py
file path=usr/lib/python2.6/SimpleHTTPServer.pyc
file path=usr/lib/python2.6/SimpleXMLRPCServer.py
file path=usr/lib/python2.6/SimpleXMLRPCServer.pyc
file path=usr/lib/python2.6/SocketServer.py
file path=usr/lib/python2.6/SocketServer.pyc
file path=usr/lib/python2.6/StringIO.py
file path=usr/lib/python2.6/StringIO.pyc
file path=usr/lib/python2.6/UserDict.py
file path=usr/lib/python2.6/UserDict.pyc
file path=usr/lib/python2.6/UserList.py
file path=usr/lib/python2.6/UserList.pyc
file path=usr/lib/python2.6/UserString.py
file path=usr/lib/python2.6/UserString.pyc
file path=usr/lib/python2.6/_LWPCookieJar.py
file path=usr/lib/python2.6/_LWPCookieJar.pyc
file path=usr/lib/python2.6/_MozillaCookieJar.py
file path=usr/lib/python2.6/_MozillaCookieJar.pyc
file path=usr/lib/python2.6/__future__.py
file path=usr/lib/python2.6/__future__.pyc
file path=usr/lib/python2.6/__phello__.foo.py
file path=usr/lib/python2.6/__phello__.foo.pyc
file path=usr/lib/python2.6/_abcoll.py
file path=usr/lib/python2.6/_abcoll.pyc
file path=usr/lib/python2.6/_strptime.py
file path=usr/lib/python2.6/_strptime.pyc
file path=usr/lib/python2.6/_threading_local.py
file path=usr/lib/python2.6/_threading_local.pyc
file path=usr/lib/python2.6/abc.py
file path=usr/lib/python2.6/abc.pyc
file path=usr/lib/python2.6/aifc.py
file path=usr/lib/python2.6/aifc.pyc
file path=usr/lib/python2.6/anydbm.py
file path=usr/lib/python2.6/anydbm.pyc
file path=usr/lib/python2.6/ast.py
file path=usr/lib/python2.6/ast.pyc
file path=usr/lib/python2.6/asynchat.py
file path=usr/lib/python2.6/asynchat.pyc
file path=usr/lib/python2.6/asyncore.py
file path=usr/lib/python2.6/asyncore.pyc
file path=usr/lib/python2.6/atexit.py
file path=usr/lib/python2.6/atexit.pyc
file path=usr/lib/python2.6/audiodev.py
file path=usr/lib/python2.6/audiodev.pyc
file path=usr/lib/python2.6/base64.py
file path=usr/lib/python2.6/base64.pyc
file path=usr/lib/python2.6/bdb.py
file path=usr/lib/python2.6/bdb.pyc
file path=usr/lib/python2.6/binhex.py
file path=usr/lib/python2.6/binhex.pyc
file path=usr/lib/python2.6/bisect.py
file path=usr/lib/python2.6/bisect.pyc
file path=usr/lib/python2.6/cProfile.py
file path=usr/lib/python2.6/cProfile.pyc
file path=usr/lib/python2.6/calendar.py
file path=usr/lib/python2.6/calendar.pyc
file path=usr/lib/python2.6/cgi.py
file path=usr/lib/python2.6/cgi.pyc
file path=usr/lib/python2.6/cgitb.py
file path=usr/lib/python2.6/cgitb.pyc
file path=usr/lib/python2.6/chunk.py
file path=usr/lib/python2.6/chunk.pyc
file path=usr/lib/python2.6/cmd.py
file path=usr/lib/python2.6/cmd.pyc
file path=usr/lib/python2.6/code.py
file path=usr/lib/python2.6/code.pyc
file path=usr/lib/python2.6/codecs.py
file path=usr/lib/python2.6/codecs.pyc
file path=usr/lib/python2.6/codeop.py
file path=usr/lib/python2.6/codeop.pyc
file path=usr/lib/python2.6/collections.py
file path=usr/lib/python2.6/collections.pyc
file path=usr/lib/python2.6/colorsys.py
file path=usr/lib/python2.6/colorsys.pyc
file path=usr/lib/python2.6/commands.py
file path=usr/lib/python2.6/commands.pyc
file path=usr/lib/python2.6/compileall.py
file path=usr/lib/python2.6/compileall.pyc
file path=usr/lib/python2.6/compiler/__init__.py
file path=usr/lib/python2.6/compiler/__init__.pyc
file path=usr/lib/python2.6/compiler/ast.py
file path=usr/lib/python2.6/compiler/ast.pyc
file path=usr/lib/python2.6/compiler/consts.py
file path=usr/lib/python2.6/compiler/consts.pyc
file path=usr/lib/python2.6/compiler/future.py
file path=usr/lib/python2.6/compiler/future.pyc
file path=usr/lib/python2.6/compiler/misc.py
file path=usr/lib/python2.6/compiler/misc.pyc
file path=usr/lib/python2.6/compiler/pyassem.py
file path=usr/lib/python2.6/compiler/pyassem.pyc
file path=usr/lib/python2.6/compiler/pycodegen.py
file path=usr/lib/python2.6/compiler/pycodegen.pyc
file path=usr/lib/python2.6/compiler/symbols.py
file path=usr/lib/python2.6/compiler/symbols.pyc
file path=usr/lib/python2.6/compiler/syntax.py
file path=usr/lib/python2.6/compiler/syntax.pyc
file path=usr/lib/python2.6/compiler/transformer.py
file path=usr/lib/python2.6/compiler/transformer.pyc
file path=usr/lib/python2.6/compiler/visitor.py
file path=usr/lib/python2.6/compiler/visitor.pyc
file path=usr/lib/python2.6/config/Makefile
file path=usr/lib/python2.6/config/Setup
file path=usr/lib/python2.6/config/Setup.config
file path=usr/lib/python2.6/config/Setup.local
file path=usr/lib/python2.6/config/config.c
file path=usr/lib/python2.6/config/config.c.in
file path=usr/lib/python2.6/config/install-sh mode=0555
file path=usr/lib/python2.6/config/makesetup mode=0555
file path=usr/lib/python2.6/config/python.o
file path=usr/lib/python2.6/contextlib.py
file path=usr/lib/python2.6/contextlib.pyc
file path=usr/lib/python2.6/cookielib.py
file path=usr/lib/python2.6/cookielib.pyc
file path=usr/lib/python2.6/copy.py
file path=usr/lib/python2.6/copy.pyc
file path=usr/lib/python2.6/copy_reg.py
file path=usr/lib/python2.6/copy_reg.pyc
file path=usr/lib/python2.6/csv.py
file path=usr/lib/python2.6/csv.pyc
file path=usr/lib/python2.6/ctypes/__init__.py
file path=usr/lib/python2.6/ctypes/__init__.pyc
file path=usr/lib/python2.6/ctypes/_endian.py
file path=usr/lib/python2.6/ctypes/_endian.pyc
file path=usr/lib/python2.6/ctypes/macholib/README.ctypes
file path=usr/lib/python2.6/ctypes/macholib/__init__.py
file path=usr/lib/python2.6/ctypes/macholib/__init__.pyc
file path=usr/lib/python2.6/ctypes/macholib/dyld.py
file path=usr/lib/python2.6/ctypes/macholib/dyld.pyc
file path=usr/lib/python2.6/ctypes/macholib/dylib.py
file path=usr/lib/python2.6/ctypes/macholib/dylib.pyc
file path=usr/lib/python2.6/ctypes/macholib/fetch_macholib mode=0555
file path=usr/lib/python2.6/ctypes/macholib/fetch_macholib.bat
file path=usr/lib/python2.6/ctypes/macholib/framework.py
file path=usr/lib/python2.6/ctypes/macholib/framework.pyc
file path=usr/lib/python2.6/ctypes/test/__init__.py
file path=usr/lib/python2.6/ctypes/test/__init__.pyc
file path=usr/lib/python2.6/ctypes/test/runtests.py
file path=usr/lib/python2.6/ctypes/test/runtests.pyc
file path=usr/lib/python2.6/ctypes/test/test_anon.py
file path=usr/lib/python2.6/ctypes/test/test_anon.pyc
file path=usr/lib/python2.6/ctypes/test/test_array_in_pointer.py
file path=usr/lib/python2.6/ctypes/test/test_array_in_pointer.pyc
file path=usr/lib/python2.6/ctypes/test/test_arrays.py
file path=usr/lib/python2.6/ctypes/test/test_arrays.pyc
file path=usr/lib/python2.6/ctypes/test/test_as_parameter.py
file path=usr/lib/python2.6/ctypes/test/test_as_parameter.pyc
file path=usr/lib/python2.6/ctypes/test/test_bitfields.py
file path=usr/lib/python2.6/ctypes/test/test_bitfields.pyc
file path=usr/lib/python2.6/ctypes/test/test_buffers.py
file path=usr/lib/python2.6/ctypes/test/test_buffers.pyc
file path=usr/lib/python2.6/ctypes/test/test_byteswap.py
file path=usr/lib/python2.6/ctypes/test/test_byteswap.pyc
file path=usr/lib/python2.6/ctypes/test/test_callbacks.py
file path=usr/lib/python2.6/ctypes/test/test_callbacks.pyc
file path=usr/lib/python2.6/ctypes/test/test_cast.py
file path=usr/lib/python2.6/ctypes/test/test_cast.pyc
file path=usr/lib/python2.6/ctypes/test/test_cfuncs.py
file path=usr/lib/python2.6/ctypes/test/test_cfuncs.pyc
file path=usr/lib/python2.6/ctypes/test/test_checkretval.py
file path=usr/lib/python2.6/ctypes/test/test_checkretval.pyc
file path=usr/lib/python2.6/ctypes/test/test_delattr.py
file path=usr/lib/python2.6/ctypes/test/test_delattr.pyc
file path=usr/lib/python2.6/ctypes/test/test_errcheck.py
file path=usr/lib/python2.6/ctypes/test/test_errcheck.pyc
file path=usr/lib/python2.6/ctypes/test/test_errno.py
file path=usr/lib/python2.6/ctypes/test/test_errno.pyc
file path=usr/lib/python2.6/ctypes/test/test_find.py
file path=usr/lib/python2.6/ctypes/test/test_find.pyc
file path=usr/lib/python2.6/ctypes/test/test_frombuffer.py
file path=usr/lib/python2.6/ctypes/test/test_frombuffer.pyc
file path=usr/lib/python2.6/ctypes/test/test_funcptr.py
file path=usr/lib/python2.6/ctypes/test/test_funcptr.pyc
file path=usr/lib/python2.6/ctypes/test/test_functions.py
file path=usr/lib/python2.6/ctypes/test/test_functions.pyc
file path=usr/lib/python2.6/ctypes/test/test_incomplete.py
file path=usr/lib/python2.6/ctypes/test/test_incomplete.pyc
file path=usr/lib/python2.6/ctypes/test/test_init.py
file path=usr/lib/python2.6/ctypes/test/test_init.pyc
file path=usr/lib/python2.6/ctypes/test/test_integers.py
file path=usr/lib/python2.6/ctypes/test/test_integers.pyc
file path=usr/lib/python2.6/ctypes/test/test_internals.py
file path=usr/lib/python2.6/ctypes/test/test_internals.pyc
file path=usr/lib/python2.6/ctypes/test/test_keeprefs.py
file path=usr/lib/python2.6/ctypes/test/test_keeprefs.pyc
file path=usr/lib/python2.6/ctypes/test/test_libc.py
file path=usr/lib/python2.6/ctypes/test/test_libc.pyc
file path=usr/lib/python2.6/ctypes/test/test_loading.py
file path=usr/lib/python2.6/ctypes/test/test_loading.pyc
file path=usr/lib/python2.6/ctypes/test/test_macholib.py
file path=usr/lib/python2.6/ctypes/test/test_macholib.pyc
file path=usr/lib/python2.6/ctypes/test/test_memfunctions.py
file path=usr/lib/python2.6/ctypes/test/test_memfunctions.pyc
file path=usr/lib/python2.6/ctypes/test/test_numbers.py
file path=usr/lib/python2.6/ctypes/test/test_numbers.pyc
file path=usr/lib/python2.6/ctypes/test/test_objects.py
file path=usr/lib/python2.6/ctypes/test/test_objects.pyc
file path=usr/lib/python2.6/ctypes/test/test_parameters.py
file path=usr/lib/python2.6/ctypes/test/test_parameters.pyc
file path=usr/lib/python2.6/ctypes/test/test_pep3118.py
file path=usr/lib/python2.6/ctypes/test/test_pep3118.pyc
file path=usr/lib/python2.6/ctypes/test/test_pickling.py
file path=usr/lib/python2.6/ctypes/test/test_pickling.pyc
file path=usr/lib/python2.6/ctypes/test/test_pointers.py
file path=usr/lib/python2.6/ctypes/test/test_pointers.pyc
file path=usr/lib/python2.6/ctypes/test/test_prototypes.py
file path=usr/lib/python2.6/ctypes/test/test_prototypes.pyc
file path=usr/lib/python2.6/ctypes/test/test_python_api.py
file path=usr/lib/python2.6/ctypes/test/test_python_api.pyc
file path=usr/lib/python2.6/ctypes/test/test_random_things.py
file path=usr/lib/python2.6/ctypes/test/test_random_things.pyc
file path=usr/lib/python2.6/ctypes/test/test_refcounts.py
file path=usr/lib/python2.6/ctypes/test/test_refcounts.pyc
file path=usr/lib/python2.6/ctypes/test/test_repr.py
file path=usr/lib/python2.6/ctypes/test/test_repr.pyc
file path=usr/lib/python2.6/ctypes/test/test_returnfuncptrs.py
file path=usr/lib/python2.6/ctypes/test/test_returnfuncptrs.pyc
file path=usr/lib/python2.6/ctypes/test/test_simplesubclasses.py
file path=usr/lib/python2.6/ctypes/test/test_simplesubclasses.pyc
file path=usr/lib/python2.6/ctypes/test/test_sizes.py
file path=usr/lib/python2.6/ctypes/test/test_sizes.pyc
file path=usr/lib/python2.6/ctypes/test/test_slicing.py
file path=usr/lib/python2.6/ctypes/test/test_slicing.pyc
file path=usr/lib/python2.6/ctypes/test/test_stringptr.py
file path=usr/lib/python2.6/ctypes/test/test_stringptr.pyc
file path=usr/lib/python2.6/ctypes/test/test_strings.py
file path=usr/lib/python2.6/ctypes/test/test_strings.pyc
file path=usr/lib/python2.6/ctypes/test/test_struct_fields.py
file path=usr/lib/python2.6/ctypes/test/test_struct_fields.pyc
file path=usr/lib/python2.6/ctypes/test/test_structures.py
file path=usr/lib/python2.6/ctypes/test/test_structures.pyc
file path=usr/lib/python2.6/ctypes/test/test_unaligned_structures.py
file path=usr/lib/python2.6/ctypes/test/test_unaligned_structures.pyc
file path=usr/lib/python2.6/ctypes/test/test_unicode.py
file path=usr/lib/python2.6/ctypes/test/test_unicode.pyc
file path=usr/lib/python2.6/ctypes/test/test_values.py
file path=usr/lib/python2.6/ctypes/test/test_values.pyc
file path=usr/lib/python2.6/ctypes/test/test_varsize_struct.py
file path=usr/lib/python2.6/ctypes/test/test_varsize_struct.pyc
file path=usr/lib/python2.6/ctypes/test/test_win32.py
file path=usr/lib/python2.6/ctypes/test/test_win32.pyc
file path=usr/lib/python2.6/ctypes/util.py
file path=usr/lib/python2.6/ctypes/util.pyc
file path=usr/lib/python2.6/ctypes/wintypes.py
file path=usr/lib/python2.6/ctypes/wintypes.pyc
file path=usr/lib/python2.6/curses/__init__.py
file path=usr/lib/python2.6/curses/__init__.pyc
file path=usr/lib/python2.6/curses/ascii.py
file path=usr/lib/python2.6/curses/ascii.pyc
file path=usr/lib/python2.6/curses/has_key.py
file path=usr/lib/python2.6/curses/has_key.pyc
file path=usr/lib/python2.6/curses/panel.py
file path=usr/lib/python2.6/curses/panel.pyc
file path=usr/lib/python2.6/curses/textpad.py
file path=usr/lib/python2.6/curses/textpad.pyc
file path=usr/lib/python2.6/curses/wrapper.py
file path=usr/lib/python2.6/curses/wrapper.pyc
file path=usr/lib/python2.6/dbhash.py
file path=usr/lib/python2.6/dbhash.pyc
file path=usr/lib/python2.6/decimal.py
file path=usr/lib/python2.6/decimal.pyc
file path=usr/lib/python2.6/difflib.py
file path=usr/lib/python2.6/difflib.pyc
file path=usr/lib/python2.6/dircache.py
file path=usr/lib/python2.6/dircache.pyc
file path=usr/lib/python2.6/dis.py
file path=usr/lib/python2.6/dis.pyc
file path=usr/lib/python2.6/distutils/README
file path=usr/lib/python2.6/distutils/__init__.py
file path=usr/lib/python2.6/distutils/__init__.pyc
file path=usr/lib/python2.6/distutils/archive_util.py
file path=usr/lib/python2.6/distutils/archive_util.pyc
file path=usr/lib/python2.6/distutils/bcppcompiler.py
file path=usr/lib/python2.6/distutils/bcppcompiler.pyc
file path=usr/lib/python2.6/distutils/ccompiler.py
file path=usr/lib/python2.6/distutils/ccompiler.pyc
file path=usr/lib/python2.6/distutils/cmd.py
file path=usr/lib/python2.6/distutils/cmd.pyc
file path=usr/lib/python2.6/distutils/command/__init__.py
file path=usr/lib/python2.6/distutils/command/__init__.pyc
file path=usr/lib/python2.6/distutils/command/bdist.py
file path=usr/lib/python2.6/distutils/command/bdist.pyc
file path=usr/lib/python2.6/distutils/command/bdist_dumb.py
file path=usr/lib/python2.6/distutils/command/bdist_dumb.pyc
file path=usr/lib/python2.6/distutils/command/bdist_msi.py
file path=usr/lib/python2.6/distutils/command/bdist_msi.pyc
file path=usr/lib/python2.6/distutils/command/bdist_rpm.py
file path=usr/lib/python2.6/distutils/command/bdist_rpm.pyc
file path=usr/lib/python2.6/distutils/command/bdist_wininst.py
file path=usr/lib/python2.6/distutils/command/bdist_wininst.pyc
file path=usr/lib/python2.6/distutils/command/build.py
file path=usr/lib/python2.6/distutils/command/build.pyc
file path=usr/lib/python2.6/distutils/command/build_clib.py
file path=usr/lib/python2.6/distutils/command/build_clib.pyc
file path=usr/lib/python2.6/distutils/command/build_ext.py
file path=usr/lib/python2.6/distutils/command/build_ext.pyc
file path=usr/lib/python2.6/distutils/command/build_py.py
file path=usr/lib/python2.6/distutils/command/build_py.pyc
file path=usr/lib/python2.6/distutils/command/build_scripts.py
file path=usr/lib/python2.6/distutils/command/build_scripts.pyc
file path=usr/lib/python2.6/distutils/command/clean.py
file path=usr/lib/python2.6/distutils/command/clean.pyc
file path=usr/lib/python2.6/distutils/command/command_template
file path=usr/lib/python2.6/distutils/command/config.py
file path=usr/lib/python2.6/distutils/command/config.pyc
file path=usr/lib/python2.6/distutils/command/install.py
file path=usr/lib/python2.6/distutils/command/install.pyc
file path=usr/lib/python2.6/distutils/command/install_data.py
file path=usr/lib/python2.6/distutils/command/install_data.pyc
file path=usr/lib/python2.6/distutils/command/install_egg_info.py
file path=usr/lib/python2.6/distutils/command/install_egg_info.pyc
file path=usr/lib/python2.6/distutils/command/install_headers.py
file path=usr/lib/python2.6/distutils/command/install_headers.pyc
file path=usr/lib/python2.6/distutils/command/install_lib.py
file path=usr/lib/python2.6/distutils/command/install_lib.pyc
file path=usr/lib/python2.6/distutils/command/install_scripts.py
file path=usr/lib/python2.6/distutils/command/install_scripts.pyc
file path=usr/lib/python2.6/distutils/command/register.py
file path=usr/lib/python2.6/distutils/command/register.pyc
file path=usr/lib/python2.6/distutils/command/sdist.py
file path=usr/lib/python2.6/distutils/command/sdist.pyc
file path=usr/lib/python2.6/distutils/command/upload.py
file path=usr/lib/python2.6/distutils/command/upload.pyc
file path=usr/lib/python2.6/distutils/command/wininst-6.0.exe
file path=usr/lib/python2.6/distutils/command/wininst-7.1.exe
file path=usr/lib/python2.6/distutils/command/wininst-8.0.exe
file path=usr/lib/python2.6/distutils/command/wininst-9.0-amd64.exe
file path=usr/lib/python2.6/distutils/command/wininst-9.0.exe
file path=usr/lib/python2.6/distutils/config.py
file path=usr/lib/python2.6/distutils/config.pyc
file path=usr/lib/python2.6/distutils/core.py
file path=usr/lib/python2.6/distutils/core.pyc
file path=usr/lib/python2.6/distutils/cygwinccompiler.py
file path=usr/lib/python2.6/distutils/cygwinccompiler.pyc
file path=usr/lib/python2.6/distutils/debug.py
file path=usr/lib/python2.6/distutils/debug.pyc
file path=usr/lib/python2.6/distutils/dep_util.py
file path=usr/lib/python2.6/distutils/dep_util.pyc
file path=usr/lib/python2.6/distutils/dir_util.py
file path=usr/lib/python2.6/distutils/dir_util.pyc
file path=usr/lib/python2.6/distutils/dist.py
file path=usr/lib/python2.6/distutils/dist.pyc
file path=usr/lib/python2.6/distutils/emxccompiler.py
file path=usr/lib/python2.6/distutils/emxccompiler.pyc
file path=usr/lib/python2.6/distutils/errors.py
file path=usr/lib/python2.6/distutils/errors.pyc
file path=usr/lib/python2.6/distutils/extension.py
file path=usr/lib/python2.6/distutils/extension.pyc
file path=usr/lib/python2.6/distutils/fancy_getopt.py
file path=usr/lib/python2.6/distutils/fancy_getopt.pyc
file path=usr/lib/python2.6/distutils/file_util.py
file path=usr/lib/python2.6/distutils/file_util.pyc
file path=usr/lib/python2.6/distutils/filelist.py
file path=usr/lib/python2.6/distutils/filelist.pyc
file path=usr/lib/python2.6/distutils/log.py
file path=usr/lib/python2.6/distutils/log.pyc
file path=usr/lib/python2.6/distutils/msvc9compiler.py
file path=usr/lib/python2.6/distutils/msvc9compiler.pyc
file path=usr/lib/python2.6/distutils/msvccompiler.py
file path=usr/lib/python2.6/distutils/msvccompiler.pyc
file path=usr/lib/python2.6/distutils/mwerkscompiler.py
file path=usr/lib/python2.6/distutils/mwerkscompiler.pyc
file path=usr/lib/python2.6/distutils/spawn.py
file path=usr/lib/python2.6/distutils/spawn.pyc
file path=usr/lib/python2.6/distutils/sysconfig.py
file path=usr/lib/python2.6/distutils/sysconfig.pyc
file path=usr/lib/python2.6/distutils/tests/__init__.py
file path=usr/lib/python2.6/distutils/tests/__init__.pyc
file path=usr/lib/python2.6/distutils/tests/setuptools_build_ext.py
file path=usr/lib/python2.6/distutils/tests/setuptools_build_ext.pyc
file path=usr/lib/python2.6/distutils/tests/setuptools_extension.py
file path=usr/lib/python2.6/distutils/tests/setuptools_extension.pyc
file path=usr/lib/python2.6/distutils/tests/support.py
file path=usr/lib/python2.6/distutils/tests/support.pyc
file path=usr/lib/python2.6/distutils/tests/test_bdist_wininst.py
file path=usr/lib/python2.6/distutils/tests/test_bdist_wininst.pyc
file path=usr/lib/python2.6/distutils/tests/test_build_ext.py
file path=usr/lib/python2.6/distutils/tests/test_build_ext.pyc
file path=usr/lib/python2.6/distutils/tests/test_build_py.py
file path=usr/lib/python2.6/distutils/tests/test_build_py.pyc
file path=usr/lib/python2.6/distutils/tests/test_build_scripts.py
file path=usr/lib/python2.6/distutils/tests/test_build_scripts.pyc
file path=usr/lib/python2.6/distutils/tests/test_config.py
file path=usr/lib/python2.6/distutils/tests/test_config.pyc
file path=usr/lib/python2.6/distutils/tests/test_core.py
file path=usr/lib/python2.6/distutils/tests/test_core.pyc
file path=usr/lib/python2.6/distutils/tests/test_dist.py
file path=usr/lib/python2.6/distutils/tests/test_dist.pyc
file path=usr/lib/python2.6/distutils/tests/test_filelist.py
file path=usr/lib/python2.6/distutils/tests/test_filelist.pyc
file path=usr/lib/python2.6/distutils/tests/test_install.py
file path=usr/lib/python2.6/distutils/tests/test_install.pyc
file path=usr/lib/python2.6/distutils/tests/test_install_scripts.py
file path=usr/lib/python2.6/distutils/tests/test_install_scripts.pyc
file path=usr/lib/python2.6/distutils/tests/test_msvc9compiler.py
file path=usr/lib/python2.6/distutils/tests/test_msvc9compiler.pyc
file path=usr/lib/python2.6/distutils/tests/test_register.py
file path=usr/lib/python2.6/distutils/tests/test_register.pyc
file path=usr/lib/python2.6/distutils/tests/test_sdist.py
file path=usr/lib/python2.6/distutils/tests/test_sdist.pyc
file path=usr/lib/python2.6/distutils/tests/test_sysconfig.py
file path=usr/lib/python2.6/distutils/tests/test_sysconfig.pyc
file path=usr/lib/python2.6/distutils/tests/test_upload.py
file path=usr/lib/python2.6/distutils/tests/test_upload.pyc
file path=usr/lib/python2.6/distutils/tests/test_versionpredicate.py
file path=usr/lib/python2.6/distutils/tests/test_versionpredicate.pyc
file path=usr/lib/python2.6/distutils/text_file.py
file path=usr/lib/python2.6/distutils/text_file.pyc
file path=usr/lib/python2.6/distutils/unixccompiler.py
file path=usr/lib/python2.6/distutils/unixccompiler.pyc
file path=usr/lib/python2.6/distutils/util.py
file path=usr/lib/python2.6/distutils/util.pyc
file path=usr/lib/python2.6/distutils/version.py
file path=usr/lib/python2.6/distutils/version.pyc
file path=usr/lib/python2.6/distutils/versionpredicate.py
file path=usr/lib/python2.6/distutils/versionpredicate.pyc
file path=usr/lib/python2.6/doctest.py
file path=usr/lib/python2.6/doctest.pyc
file path=usr/lib/python2.6/dumbdbm.py
file path=usr/lib/python2.6/dumbdbm.pyc
file path=usr/lib/python2.6/dummy_thread.py
file path=usr/lib/python2.6/dummy_thread.pyc
file path=usr/lib/python2.6/dummy_threading.py
file path=usr/lib/python2.6/dummy_threading.pyc
file path=usr/lib/python2.6/email/__init__.py
file path=usr/lib/python2.6/email/__init__.pyc
file path=usr/lib/python2.6/email/_parseaddr.py
file path=usr/lib/python2.6/email/_parseaddr.pyc
file path=usr/lib/python2.6/email/base64mime.py
file path=usr/lib/python2.6/email/base64mime.pyc
file path=usr/lib/python2.6/email/charset.py
file path=usr/lib/python2.6/email/charset.pyc
file path=usr/lib/python2.6/email/encoders.py
file path=usr/lib/python2.6/email/encoders.pyc
file path=usr/lib/python2.6/email/errors.py
file path=usr/lib/python2.6/email/errors.pyc
file path=usr/lib/python2.6/email/feedparser.py
file path=usr/lib/python2.6/email/feedparser.pyc
file path=usr/lib/python2.6/email/generator.py
file path=usr/lib/python2.6/email/generator.pyc
file path=usr/lib/python2.6/email/header.py
file path=usr/lib/python2.6/email/header.pyc
file path=usr/lib/python2.6/email/iterators.py
file path=usr/lib/python2.6/email/iterators.pyc
file path=usr/lib/python2.6/email/message.py
file path=usr/lib/python2.6/email/message.pyc
file path=usr/lib/python2.6/email/mime/__init__.py
file path=usr/lib/python2.6/email/mime/__init__.pyc
file path=usr/lib/python2.6/email/mime/application.py
file path=usr/lib/python2.6/email/mime/application.pyc
file path=usr/lib/python2.6/email/mime/audio.py
file path=usr/lib/python2.6/email/mime/audio.pyc
file path=usr/lib/python2.6/email/mime/base.py
file path=usr/lib/python2.6/email/mime/base.pyc
file path=usr/lib/python2.6/email/mime/image.py
file path=usr/lib/python2.6/email/mime/image.pyc
file path=usr/lib/python2.6/email/mime/message.py
file path=usr/lib/python2.6/email/mime/message.pyc
file path=usr/lib/python2.6/email/mime/multipart.py
file path=usr/lib/python2.6/email/mime/multipart.pyc
file path=usr/lib/python2.6/email/mime/nonmultipart.py
file path=usr/lib/python2.6/email/mime/nonmultipart.pyc
file path=usr/lib/python2.6/email/mime/text.py
file path=usr/lib/python2.6/email/mime/text.pyc
file path=usr/lib/python2.6/email/parser.py
file path=usr/lib/python2.6/email/parser.pyc
file path=usr/lib/python2.6/email/quoprimime.py
file path=usr/lib/python2.6/email/quoprimime.pyc
file path=usr/lib/python2.6/email/test/__init__.py
file path=usr/lib/python2.6/email/test/__init__.pyc
file path=usr/lib/python2.6/email/test/data/PyBanner048.gif
file path=usr/lib/python2.6/email/test/data/audiotest.au
file path=usr/lib/python2.6/email/test/data/msg_01.txt
file path=usr/lib/python2.6/email/test/data/msg_02.txt
file path=usr/lib/python2.6/email/test/data/msg_03.txt
file path=usr/lib/python2.6/email/test/data/msg_04.txt
file path=usr/lib/python2.6/email/test/data/msg_05.txt
file path=usr/lib/python2.6/email/test/data/msg_06.txt
file path=usr/lib/python2.6/email/test/data/msg_07.txt
file path=usr/lib/python2.6/email/test/data/msg_08.txt
file path=usr/lib/python2.6/email/test/data/msg_09.txt
file path=usr/lib/python2.6/email/test/data/msg_10.txt
file path=usr/lib/python2.6/email/test/data/msg_11.txt
file path=usr/lib/python2.6/email/test/data/msg_12.txt
file path=usr/lib/python2.6/email/test/data/msg_12a.txt
file path=usr/lib/python2.6/email/test/data/msg_13.txt
file path=usr/lib/python2.6/email/test/data/msg_14.txt
file path=usr/lib/python2.6/email/test/data/msg_15.txt
file path=usr/lib/python2.6/email/test/data/msg_16.txt
file path=usr/lib/python2.6/email/test/data/msg_17.txt
file path=usr/lib/python2.6/email/test/data/msg_18.txt
file path=usr/lib/python2.6/email/test/data/msg_19.txt
file path=usr/lib/python2.6/email/test/data/msg_20.txt
file path=usr/lib/python2.6/email/test/data/msg_21.txt
file path=usr/lib/python2.6/email/test/data/msg_22.txt
file path=usr/lib/python2.6/email/test/data/msg_23.txt
file path=usr/lib/python2.6/email/test/data/msg_24.txt
file path=usr/lib/python2.6/email/test/data/msg_25.txt
file path=usr/lib/python2.6/email/test/data/msg_26.txt
file path=usr/lib/python2.6/email/test/data/msg_27.txt
file path=usr/lib/python2.6/email/test/data/msg_28.txt
file path=usr/lib/python2.6/email/test/data/msg_29.txt
file path=usr/lib/python2.6/email/test/data/msg_30.txt
file path=usr/lib/python2.6/email/test/data/msg_31.txt
file path=usr/lib/python2.6/email/test/data/msg_32.txt
file path=usr/lib/python2.6/email/test/data/msg_33.txt
file path=usr/lib/python2.6/email/test/data/msg_34.txt
file path=usr/lib/python2.6/email/test/data/msg_35.txt
file path=usr/lib/python2.6/email/test/data/msg_36.txt
file path=usr/lib/python2.6/email/test/data/msg_37.txt
file path=usr/lib/python2.6/email/test/data/msg_38.txt
file path=usr/lib/python2.6/email/test/data/msg_39.txt
file path=usr/lib/python2.6/email/test/data/msg_40.txt
file path=usr/lib/python2.6/email/test/data/msg_41.txt
file path=usr/lib/python2.6/email/test/data/msg_42.txt
file path=usr/lib/python2.6/email/test/data/msg_43.txt
file path=usr/lib/python2.6/email/test/data/msg_44.txt
file path=usr/lib/python2.6/email/test/test_email.py
file path=usr/lib/python2.6/email/test/test_email.pyc
file path=usr/lib/python2.6/email/test/test_email_codecs.py
file path=usr/lib/python2.6/email/test/test_email_codecs.pyc
file path=usr/lib/python2.6/email/test/test_email_codecs_renamed.py
file path=usr/lib/python2.6/email/test/test_email_codecs_renamed.pyc
file path=usr/lib/python2.6/email/test/test_email_renamed.py
file path=usr/lib/python2.6/email/test/test_email_renamed.pyc
file path=usr/lib/python2.6/email/test/test_email_torture.py
file path=usr/lib/python2.6/email/test/test_email_torture.pyc
file path=usr/lib/python2.6/email/utils.py
file path=usr/lib/python2.6/email/utils.pyc
file path=usr/lib/python2.6/encodings/__init__.py
file path=usr/lib/python2.6/encodings/__init__.pyc
file path=usr/lib/python2.6/encodings/aliases.py
file path=usr/lib/python2.6/encodings/aliases.pyc
file path=usr/lib/python2.6/encodings/ascii.py
file path=usr/lib/python2.6/encodings/ascii.pyc
file path=usr/lib/python2.6/encodings/base64_codec.py
file path=usr/lib/python2.6/encodings/base64_codec.pyc
file path=usr/lib/python2.6/encodings/big5.py
file path=usr/lib/python2.6/encodings/big5.pyc
file path=usr/lib/python2.6/encodings/big5hkscs.py
file path=usr/lib/python2.6/encodings/big5hkscs.pyc
file path=usr/lib/python2.6/encodings/bz2_codec.py
file path=usr/lib/python2.6/encodings/bz2_codec.pyc
file path=usr/lib/python2.6/encodings/charmap.py
file path=usr/lib/python2.6/encodings/charmap.pyc
file path=usr/lib/python2.6/encodings/cp037.py
file path=usr/lib/python2.6/encodings/cp037.pyc
file path=usr/lib/python2.6/encodings/cp1006.py
file path=usr/lib/python2.6/encodings/cp1006.pyc
file path=usr/lib/python2.6/encodings/cp1026.py
file path=usr/lib/python2.6/encodings/cp1026.pyc
file path=usr/lib/python2.6/encodings/cp1140.py
file path=usr/lib/python2.6/encodings/cp1140.pyc
file path=usr/lib/python2.6/encodings/cp1250.py
file path=usr/lib/python2.6/encodings/cp1250.pyc
file path=usr/lib/python2.6/encodings/cp1251.py
file path=usr/lib/python2.6/encodings/cp1251.pyc
file path=usr/lib/python2.6/encodings/cp1252.py
file path=usr/lib/python2.6/encodings/cp1252.pyc
file path=usr/lib/python2.6/encodings/cp1253.py
file path=usr/lib/python2.6/encodings/cp1253.pyc
file path=usr/lib/python2.6/encodings/cp1254.py
file path=usr/lib/python2.6/encodings/cp1254.pyc
file path=usr/lib/python2.6/encodings/cp1255.py
file path=usr/lib/python2.6/encodings/cp1255.pyc
file path=usr/lib/python2.6/encodings/cp1256.py
file path=usr/lib/python2.6/encodings/cp1256.pyc
file path=usr/lib/python2.6/encodings/cp1257.py
file path=usr/lib/python2.6/encodings/cp1257.pyc
file path=usr/lib/python2.6/encodings/cp1258.py
file path=usr/lib/python2.6/encodings/cp1258.pyc
file path=usr/lib/python2.6/encodings/cp424.py
file path=usr/lib/python2.6/encodings/cp424.pyc
file path=usr/lib/python2.6/encodings/cp437.py
file path=usr/lib/python2.6/encodings/cp437.pyc
file path=usr/lib/python2.6/encodings/cp500.py
file path=usr/lib/python2.6/encodings/cp500.pyc
file path=usr/lib/python2.6/encodings/cp737.py
file path=usr/lib/python2.6/encodings/cp737.pyc
file path=usr/lib/python2.6/encodings/cp775.py
file path=usr/lib/python2.6/encodings/cp775.pyc
file path=usr/lib/python2.6/encodings/cp850.py
file path=usr/lib/python2.6/encodings/cp850.pyc
file path=usr/lib/python2.6/encodings/cp852.py
file path=usr/lib/python2.6/encodings/cp852.pyc
file path=usr/lib/python2.6/encodings/cp855.py
file path=usr/lib/python2.6/encodings/cp855.pyc
file path=usr/lib/python2.6/encodings/cp856.py
file path=usr/lib/python2.6/encodings/cp856.pyc
file path=usr/lib/python2.6/encodings/cp857.py
file path=usr/lib/python2.6/encodings/cp857.pyc
file path=usr/lib/python2.6/encodings/cp860.py
file path=usr/lib/python2.6/encodings/cp860.pyc
file path=usr/lib/python2.6/encodings/cp861.py
file path=usr/lib/python2.6/encodings/cp861.pyc
file path=usr/lib/python2.6/encodings/cp862.py
file path=usr/lib/python2.6/encodings/cp862.pyc
file path=usr/lib/python2.6/encodings/cp863.py
file path=usr/lib/python2.6/encodings/cp863.pyc
file path=usr/lib/python2.6/encodings/cp864.py
file path=usr/lib/python2.6/encodings/cp864.pyc
file path=usr/lib/python2.6/encodings/cp865.py
file path=usr/lib/python2.6/encodings/cp865.pyc
file path=usr/lib/python2.6/encodings/cp866.py
file path=usr/lib/python2.6/encodings/cp866.pyc
file path=usr/lib/python2.6/encodings/cp869.py
file path=usr/lib/python2.6/encodings/cp869.pyc
file path=usr/lib/python2.6/encodings/cp874.py
file path=usr/lib/python2.6/encodings/cp874.pyc
file path=usr/lib/python2.6/encodings/cp875.py
file path=usr/lib/python2.6/encodings/cp875.pyc
file path=usr/lib/python2.6/encodings/cp932.py
file path=usr/lib/python2.6/encodings/cp932.pyc
file path=usr/lib/python2.6/encodings/cp949.py
file path=usr/lib/python2.6/encodings/cp949.pyc
file path=usr/lib/python2.6/encodings/cp950.py
file path=usr/lib/python2.6/encodings/cp950.pyc
file path=usr/lib/python2.6/encodings/euc_jis_2004.py
file path=usr/lib/python2.6/encodings/euc_jis_2004.pyc
file path=usr/lib/python2.6/encodings/euc_jisx0213.py
file path=usr/lib/python2.6/encodings/euc_jisx0213.pyc
file path=usr/lib/python2.6/encodings/euc_jp.py
file path=usr/lib/python2.6/encodings/euc_jp.pyc
file path=usr/lib/python2.6/encodings/euc_kr.py
file path=usr/lib/python2.6/encodings/euc_kr.pyc
file path=usr/lib/python2.6/encodings/gb18030.py
file path=usr/lib/python2.6/encodings/gb18030.pyc
file path=usr/lib/python2.6/encodings/gb2312.py
file path=usr/lib/python2.6/encodings/gb2312.pyc
file path=usr/lib/python2.6/encodings/gbk.py
file path=usr/lib/python2.6/encodings/gbk.pyc
file path=usr/lib/python2.6/encodings/hex_codec.py
file path=usr/lib/python2.6/encodings/hex_codec.pyc
file path=usr/lib/python2.6/encodings/hp_roman8.py
file path=usr/lib/python2.6/encodings/hp_roman8.pyc
file path=usr/lib/python2.6/encodings/hz.py
file path=usr/lib/python2.6/encodings/hz.pyc
file path=usr/lib/python2.6/encodings/idna.py
file path=usr/lib/python2.6/encodings/idna.pyc
file path=usr/lib/python2.6/encodings/iso2022_jp.py
file path=usr/lib/python2.6/encodings/iso2022_jp.pyc
file path=usr/lib/python2.6/encodings/iso2022_jp_1.py
file path=usr/lib/python2.6/encodings/iso2022_jp_1.pyc
file path=usr/lib/python2.6/encodings/iso2022_jp_2.py
file path=usr/lib/python2.6/encodings/iso2022_jp_2.pyc
file path=usr/lib/python2.6/encodings/iso2022_jp_2004.py
file path=usr/lib/python2.6/encodings/iso2022_jp_2004.pyc
file path=usr/lib/python2.6/encodings/iso2022_jp_3.py
file path=usr/lib/python2.6/encodings/iso2022_jp_3.pyc
file path=usr/lib/python2.6/encodings/iso2022_jp_ext.py
file path=usr/lib/python2.6/encodings/iso2022_jp_ext.pyc
file path=usr/lib/python2.6/encodings/iso2022_kr.py
file path=usr/lib/python2.6/encodings/iso2022_kr.pyc
file path=usr/lib/python2.6/encodings/iso8859_1.py
file path=usr/lib/python2.6/encodings/iso8859_1.pyc
file path=usr/lib/python2.6/encodings/iso8859_10.py
file path=usr/lib/python2.6/encodings/iso8859_10.pyc
file path=usr/lib/python2.6/encodings/iso8859_11.py
file path=usr/lib/python2.6/encodings/iso8859_11.pyc
file path=usr/lib/python2.6/encodings/iso8859_13.py
file path=usr/lib/python2.6/encodings/iso8859_13.pyc
file path=usr/lib/python2.6/encodings/iso8859_14.py
file path=usr/lib/python2.6/encodings/iso8859_14.pyc
file path=usr/lib/python2.6/encodings/iso8859_15.py
file path=usr/lib/python2.6/encodings/iso8859_15.pyc
file path=usr/lib/python2.6/encodings/iso8859_16.py
file path=usr/lib/python2.6/encodings/iso8859_16.pyc
file path=usr/lib/python2.6/encodings/iso8859_2.py
file path=usr/lib/python2.6/encodings/iso8859_2.pyc
file path=usr/lib/python2.6/encodings/iso8859_3.py
file path=usr/lib/python2.6/encodings/iso8859_3.pyc
file path=usr/lib/python2.6/encodings/iso8859_4.py
file path=usr/lib/python2.6/encodings/iso8859_4.pyc
file path=usr/lib/python2.6/encodings/iso8859_5.py
file path=usr/lib/python2.6/encodings/iso8859_5.pyc
file path=usr/lib/python2.6/encodings/iso8859_6.py
file path=usr/lib/python2.6/encodings/iso8859_6.pyc
file path=usr/lib/python2.6/encodings/iso8859_7.py
file path=usr/lib/python2.6/encodings/iso8859_7.pyc
file path=usr/lib/python2.6/encodings/iso8859_8.py
file path=usr/lib/python2.6/encodings/iso8859_8.pyc
file path=usr/lib/python2.6/encodings/iso8859_9.py
file path=usr/lib/python2.6/encodings/iso8859_9.pyc
file path=usr/lib/python2.6/encodings/johab.py
file path=usr/lib/python2.6/encodings/johab.pyc
file path=usr/lib/python2.6/encodings/koi8_r.py
file path=usr/lib/python2.6/encodings/koi8_r.pyc
file path=usr/lib/python2.6/encodings/koi8_u.py
file path=usr/lib/python2.6/encodings/koi8_u.pyc
file path=usr/lib/python2.6/encodings/latin_1.py
file path=usr/lib/python2.6/encodings/latin_1.pyc
file path=usr/lib/python2.6/encodings/mac_arabic.py
file path=usr/lib/python2.6/encodings/mac_arabic.pyc
file path=usr/lib/python2.6/encodings/mac_centeuro.py
file path=usr/lib/python2.6/encodings/mac_centeuro.pyc
file path=usr/lib/python2.6/encodings/mac_croatian.py
file path=usr/lib/python2.6/encodings/mac_croatian.pyc
file path=usr/lib/python2.6/encodings/mac_cyrillic.py
file path=usr/lib/python2.6/encodings/mac_cyrillic.pyc
file path=usr/lib/python2.6/encodings/mac_farsi.py
file path=usr/lib/python2.6/encodings/mac_farsi.pyc
file path=usr/lib/python2.6/encodings/mac_greek.py
file path=usr/lib/python2.6/encodings/mac_greek.pyc
file path=usr/lib/python2.6/encodings/mac_iceland.py
file path=usr/lib/python2.6/encodings/mac_iceland.pyc
file path=usr/lib/python2.6/encodings/mac_latin2.py
file path=usr/lib/python2.6/encodings/mac_latin2.pyc
file path=usr/lib/python2.6/encodings/mac_roman.py
file path=usr/lib/python2.6/encodings/mac_roman.pyc
file path=usr/lib/python2.6/encodings/mac_romanian.py
file path=usr/lib/python2.6/encodings/mac_romanian.pyc
file path=usr/lib/python2.6/encodings/mac_turkish.py
file path=usr/lib/python2.6/encodings/mac_turkish.pyc
file path=usr/lib/python2.6/encodings/mbcs.py
file path=usr/lib/python2.6/encodings/mbcs.pyc
file path=usr/lib/python2.6/encodings/palmos.py
file path=usr/lib/python2.6/encodings/palmos.pyc
file path=usr/lib/python2.6/encodings/ptcp154.py
file path=usr/lib/python2.6/encodings/ptcp154.pyc
file path=usr/lib/python2.6/encodings/punycode.py
file path=usr/lib/python2.6/encodings/punycode.pyc
file path=usr/lib/python2.6/encodings/quopri_codec.py
file path=usr/lib/python2.6/encodings/quopri_codec.pyc
file path=usr/lib/python2.6/encodings/raw_unicode_escape.py
file path=usr/lib/python2.6/encodings/raw_unicode_escape.pyc
file path=usr/lib/python2.6/encodings/rot_13.py
file path=usr/lib/python2.6/encodings/rot_13.pyc
file path=usr/lib/python2.6/encodings/shift_jis.py
file path=usr/lib/python2.6/encodings/shift_jis.pyc
file path=usr/lib/python2.6/encodings/shift_jis_2004.py
file path=usr/lib/python2.6/encodings/shift_jis_2004.pyc
file path=usr/lib/python2.6/encodings/shift_jisx0213.py
file path=usr/lib/python2.6/encodings/shift_jisx0213.pyc
file path=usr/lib/python2.6/encodings/string_escape.py
file path=usr/lib/python2.6/encodings/string_escape.pyc
file path=usr/lib/python2.6/encodings/tis_620.py
file path=usr/lib/python2.6/encodings/tis_620.pyc
file path=usr/lib/python2.6/encodings/undefined.py
file path=usr/lib/python2.6/encodings/undefined.pyc
file path=usr/lib/python2.6/encodings/unicode_escape.py
file path=usr/lib/python2.6/encodings/unicode_escape.pyc
file path=usr/lib/python2.6/encodings/unicode_internal.py
file path=usr/lib/python2.6/encodings/unicode_internal.pyc
file path=usr/lib/python2.6/encodings/utf_16.py
file path=usr/lib/python2.6/encodings/utf_16.pyc
file path=usr/lib/python2.6/encodings/utf_16_be.py
file path=usr/lib/python2.6/encodings/utf_16_be.pyc
file path=usr/lib/python2.6/encodings/utf_16_le.py
file path=usr/lib/python2.6/encodings/utf_16_le.pyc
file path=usr/lib/python2.6/encodings/utf_32.py
file path=usr/lib/python2.6/encodings/utf_32.pyc
file path=usr/lib/python2.6/encodings/utf_32_be.py
file path=usr/lib/python2.6/encodings/utf_32_be.pyc
file path=usr/lib/python2.6/encodings/utf_32_le.py
file path=usr/lib/python2.6/encodings/utf_32_le.pyc
file path=usr/lib/python2.6/encodings/utf_7.py
file path=usr/lib/python2.6/encodings/utf_7.pyc
file path=usr/lib/python2.6/encodings/utf_8.py
file path=usr/lib/python2.6/encodings/utf_8.pyc
file path=usr/lib/python2.6/encodings/utf_8_sig.py
file path=usr/lib/python2.6/encodings/utf_8_sig.pyc
file path=usr/lib/python2.6/encodings/uu_codec.py
file path=usr/lib/python2.6/encodings/uu_codec.pyc
file path=usr/lib/python2.6/encodings/zlib_codec.py
file path=usr/lib/python2.6/encodings/zlib_codec.pyc
file path=usr/lib/python2.6/filecmp.py
file path=usr/lib/python2.6/filecmp.pyc
file path=usr/lib/python2.6/fileinput.py
file path=usr/lib/python2.6/fileinput.pyc
file path=usr/lib/python2.6/fnmatch.py
file path=usr/lib/python2.6/fnmatch.pyc
file path=usr/lib/python2.6/formatter.py
file path=usr/lib/python2.6/formatter.pyc
file path=usr/lib/python2.6/fpformat.py
file path=usr/lib/python2.6/fpformat.pyc
file path=usr/lib/python2.6/fractions.py
file path=usr/lib/python2.6/fractions.pyc
file path=usr/lib/python2.6/ftplib.py
file path=usr/lib/python2.6/ftplib.pyc
file path=usr/lib/python2.6/functools.py
file path=usr/lib/python2.6/functools.pyc
file path=usr/lib/python2.6/genericpath.py
file path=usr/lib/python2.6/genericpath.pyc
file path=usr/lib/python2.6/getopt.py
file path=usr/lib/python2.6/getopt.pyc
file path=usr/lib/python2.6/getpass.py
file path=usr/lib/python2.6/getpass.pyc
file path=usr/lib/python2.6/gettext.py
file path=usr/lib/python2.6/gettext.pyc
file path=usr/lib/python2.6/glob.py
file path=usr/lib/python2.6/glob.pyc
file path=usr/lib/python2.6/gzip.py
file path=usr/lib/python2.6/gzip.pyc
file path=usr/lib/python2.6/hashlib.py
file path=usr/lib/python2.6/hashlib.pyc
file path=usr/lib/python2.6/heapq.py
file path=usr/lib/python2.6/heapq.pyc
file path=usr/lib/python2.6/hmac.py
file path=usr/lib/python2.6/hmac.pyc
file path=usr/lib/python2.6/hotshot/__init__.py
file path=usr/lib/python2.6/hotshot/__init__.pyc
file path=usr/lib/python2.6/hotshot/log.py
file path=usr/lib/python2.6/hotshot/log.pyc
file path=usr/lib/python2.6/hotshot/stats.py
file path=usr/lib/python2.6/hotshot/stats.pyc
file path=usr/lib/python2.6/hotshot/stones.py
file path=usr/lib/python2.6/hotshot/stones.pyc
file path=usr/lib/python2.6/htmlentitydefs.py
file path=usr/lib/python2.6/htmlentitydefs.pyc
file path=usr/lib/python2.6/htmllib.py
file path=usr/lib/python2.6/htmllib.pyc
file path=usr/lib/python2.6/httplib.py
file path=usr/lib/python2.6/httplib.pyc
file path=usr/lib/python2.6/idlelib/AutoComplete.py
file path=usr/lib/python2.6/idlelib/AutoComplete.pyc
file path=usr/lib/python2.6/idlelib/AutoCompleteWindow.py
file path=usr/lib/python2.6/idlelib/AutoCompleteWindow.pyc
file path=usr/lib/python2.6/idlelib/AutoExpand.py
file path=usr/lib/python2.6/idlelib/AutoExpand.pyc
file path=usr/lib/python2.6/idlelib/Bindings.py
file path=usr/lib/python2.6/idlelib/Bindings.pyc
file path=usr/lib/python2.6/idlelib/CREDITS.txt
file path=usr/lib/python2.6/idlelib/CallTipWindow.py
file path=usr/lib/python2.6/idlelib/CallTipWindow.pyc
file path=usr/lib/python2.6/idlelib/CallTips.py
file path=usr/lib/python2.6/idlelib/CallTips.pyc
file path=usr/lib/python2.6/idlelib/ChangeLog
file path=usr/lib/python2.6/idlelib/ClassBrowser.py
file path=usr/lib/python2.6/idlelib/ClassBrowser.pyc
file path=usr/lib/python2.6/idlelib/CodeContext.py
file path=usr/lib/python2.6/idlelib/CodeContext.pyc
file path=usr/lib/python2.6/idlelib/ColorDelegator.py
file path=usr/lib/python2.6/idlelib/ColorDelegator.pyc
file path=usr/lib/python2.6/idlelib/Debugger.py
file path=usr/lib/python2.6/idlelib/Debugger.pyc
file path=usr/lib/python2.6/idlelib/Delegator.py
file path=usr/lib/python2.6/idlelib/Delegator.pyc
file path=usr/lib/python2.6/idlelib/EditorWindow.py
file path=usr/lib/python2.6/idlelib/EditorWindow.pyc
file path=usr/lib/python2.6/idlelib/FileList.py
file path=usr/lib/python2.6/idlelib/FileList.pyc
file path=usr/lib/python2.6/idlelib/FormatParagraph.py
file path=usr/lib/python2.6/idlelib/FormatParagraph.pyc
file path=usr/lib/python2.6/idlelib/GrepDialog.py
file path=usr/lib/python2.6/idlelib/GrepDialog.pyc
file path=usr/lib/python2.6/idlelib/HISTORY.txt
file path=usr/lib/python2.6/idlelib/HyperParser.py
file path=usr/lib/python2.6/idlelib/HyperParser.pyc
file path=usr/lib/python2.6/idlelib/IOBinding.py
file path=usr/lib/python2.6/idlelib/IOBinding.pyc
file path=usr/lib/python2.6/idlelib/Icons/folder.gif
file path=usr/lib/python2.6/idlelib/Icons/idle.icns
file path=usr/lib/python2.6/idlelib/Icons/minusnode.gif
file path=usr/lib/python2.6/idlelib/Icons/openfolder.gif
file path=usr/lib/python2.6/idlelib/Icons/plusnode.gif
file path=usr/lib/python2.6/idlelib/Icons/python.gif
file path=usr/lib/python2.6/idlelib/Icons/tk.gif
file path=usr/lib/python2.6/idlelib/IdleHistory.py
file path=usr/lib/python2.6/idlelib/IdleHistory.pyc
file path=usr/lib/python2.6/idlelib/MultiCall.py
file path=usr/lib/python2.6/idlelib/MultiCall.pyc
file path=usr/lib/python2.6/idlelib/MultiStatusBar.py
file path=usr/lib/python2.6/idlelib/MultiStatusBar.pyc
file path=usr/lib/python2.6/idlelib/NEWS.txt
file path=usr/lib/python2.6/idlelib/ObjectBrowser.py
file path=usr/lib/python2.6/idlelib/ObjectBrowser.pyc
file path=usr/lib/python2.6/idlelib/OutputWindow.py
file path=usr/lib/python2.6/idlelib/OutputWindow.pyc
file path=usr/lib/python2.6/idlelib/ParenMatch.py
file path=usr/lib/python2.6/idlelib/ParenMatch.pyc
file path=usr/lib/python2.6/idlelib/PathBrowser.py
file path=usr/lib/python2.6/idlelib/PathBrowser.pyc
file path=usr/lib/python2.6/idlelib/Percolator.py
file path=usr/lib/python2.6/idlelib/Percolator.pyc
file path=usr/lib/python2.6/idlelib/PyParse.py
file path=usr/lib/python2.6/idlelib/PyParse.pyc
file path=usr/lib/python2.6/idlelib/PyShell.py
file path=usr/lib/python2.6/idlelib/PyShell.pyc
file path=usr/lib/python2.6/idlelib/README.txt
file path=usr/lib/python2.6/idlelib/RemoteDebugger.py
file path=usr/lib/python2.6/idlelib/RemoteDebugger.pyc
file path=usr/lib/python2.6/idlelib/RemoteObjectBrowser.py
file path=usr/lib/python2.6/idlelib/RemoteObjectBrowser.pyc
file path=usr/lib/python2.6/idlelib/ReplaceDialog.py
file path=usr/lib/python2.6/idlelib/ReplaceDialog.pyc
file path=usr/lib/python2.6/idlelib/ScriptBinding.py
file path=usr/lib/python2.6/idlelib/ScriptBinding.pyc
file path=usr/lib/python2.6/idlelib/ScrolledList.py
file path=usr/lib/python2.6/idlelib/ScrolledList.pyc
file path=usr/lib/python2.6/idlelib/SearchDialog.py
file path=usr/lib/python2.6/idlelib/SearchDialog.pyc
file path=usr/lib/python2.6/idlelib/SearchDialogBase.py
file path=usr/lib/python2.6/idlelib/SearchDialogBase.pyc
file path=usr/lib/python2.6/idlelib/SearchEngine.py
file path=usr/lib/python2.6/idlelib/SearchEngine.pyc
file path=usr/lib/python2.6/idlelib/StackViewer.py
file path=usr/lib/python2.6/idlelib/StackViewer.pyc
file path=usr/lib/python2.6/idlelib/TODO.txt
file path=usr/lib/python2.6/idlelib/ToolTip.py
file path=usr/lib/python2.6/idlelib/ToolTip.pyc
file path=usr/lib/python2.6/idlelib/TreeWidget.py
file path=usr/lib/python2.6/idlelib/TreeWidget.pyc
file path=usr/lib/python2.6/idlelib/UndoDelegator.py
file path=usr/lib/python2.6/idlelib/UndoDelegator.pyc
file path=usr/lib/python2.6/idlelib/WidgetRedirector.py
file path=usr/lib/python2.6/idlelib/WidgetRedirector.pyc
file path=usr/lib/python2.6/idlelib/WindowList.py
file path=usr/lib/python2.6/idlelib/WindowList.pyc
file path=usr/lib/python2.6/idlelib/ZoomHeight.py
file path=usr/lib/python2.6/idlelib/ZoomHeight.pyc
file path=usr/lib/python2.6/idlelib/__init__.py
file path=usr/lib/python2.6/idlelib/__init__.pyc
file path=usr/lib/python2.6/idlelib/aboutDialog.py
file path=usr/lib/python2.6/idlelib/aboutDialog.pyc
file path=usr/lib/python2.6/idlelib/config-extensions.def
file path=usr/lib/python2.6/idlelib/config-highlight.def
file path=usr/lib/python2.6/idlelib/config-keys.def
file path=usr/lib/python2.6/idlelib/config-main.def
file path=usr/lib/python2.6/idlelib/configDialog.py
file path=usr/lib/python2.6/idlelib/configDialog.pyc
file path=usr/lib/python2.6/idlelib/configHandler.py
file path=usr/lib/python2.6/idlelib/configHandler.pyc
file path=usr/lib/python2.6/idlelib/configHelpSourceEdit.py
file path=usr/lib/python2.6/idlelib/configHelpSourceEdit.pyc
file path=usr/lib/python2.6/idlelib/configSectionNameDialog.py
file path=usr/lib/python2.6/idlelib/configSectionNameDialog.pyc
file path=usr/lib/python2.6/idlelib/dynOptionMenuWidget.py
file path=usr/lib/python2.6/idlelib/dynOptionMenuWidget.pyc
file path=usr/lib/python2.6/idlelib/extend.txt
file path=usr/lib/python2.6/idlelib/help.txt
file path=usr/lib/python2.6/idlelib/idle.bat mode=0555
file path=usr/lib/python2.6/idlelib/idle.py
file path=usr/lib/python2.6/idlelib/idle.pyc
file path=usr/lib/python2.6/idlelib/idle.pyw
file path=usr/lib/python2.6/idlelib/idlever.py
file path=usr/lib/python2.6/idlelib/idlever.pyc
file path=usr/lib/python2.6/idlelib/keybindingDialog.py
file path=usr/lib/python2.6/idlelib/keybindingDialog.pyc
file path=usr/lib/python2.6/idlelib/macosxSupport.py
file path=usr/lib/python2.6/idlelib/macosxSupport.pyc
file path=usr/lib/python2.6/idlelib/rpc.py
file path=usr/lib/python2.6/idlelib/rpc.pyc
file path=usr/lib/python2.6/idlelib/run.py
file path=usr/lib/python2.6/idlelib/run.pyc
file path=usr/lib/python2.6/idlelib/tabbedpages.py
file path=usr/lib/python2.6/idlelib/tabbedpages.pyc
file path=usr/lib/python2.6/idlelib/testcode.py
file path=usr/lib/python2.6/idlelib/testcode.pyc
file path=usr/lib/python2.6/idlelib/textView.py
file path=usr/lib/python2.6/idlelib/textView.pyc
file path=usr/lib/python2.6/ihooks.py
file path=usr/lib/python2.6/ihooks.pyc
file path=usr/lib/python2.6/imaplib.py
file path=usr/lib/python2.6/imaplib.pyc
file path=usr/lib/python2.6/imghdr.py
file path=usr/lib/python2.6/imghdr.pyc
file path=usr/lib/python2.6/imputil.py
file path=usr/lib/python2.6/imputil.pyc
file path=usr/lib/python2.6/inspect.py
file path=usr/lib/python2.6/inspect.pyc
file path=usr/lib/python2.6/io.py
file path=usr/lib/python2.6/io.pyc
file path=usr/lib/python2.6/json/__init__.py
file path=usr/lib/python2.6/json/__init__.pyc
file path=usr/lib/python2.6/json/decoder.py
file path=usr/lib/python2.6/json/decoder.pyc
file path=usr/lib/python2.6/json/encoder.py
file path=usr/lib/python2.6/json/encoder.pyc
file path=usr/lib/python2.6/json/scanner.py
file path=usr/lib/python2.6/json/scanner.pyc
file path=usr/lib/python2.6/json/tests/__init__.py
file path=usr/lib/python2.6/json/tests/__init__.pyc
file path=usr/lib/python2.6/json/tests/test_decode.py
file path=usr/lib/python2.6/json/tests/test_decode.pyc
file path=usr/lib/python2.6/json/tests/test_default.py
file path=usr/lib/python2.6/json/tests/test_default.pyc
file path=usr/lib/python2.6/json/tests/test_dump.py
file path=usr/lib/python2.6/json/tests/test_dump.pyc
file path=usr/lib/python2.6/json/tests/test_encode_basestring_ascii.py
file path=usr/lib/python2.6/json/tests/test_encode_basestring_ascii.pyc
file path=usr/lib/python2.6/json/tests/test_fail.py
file path=usr/lib/python2.6/json/tests/test_fail.pyc
file path=usr/lib/python2.6/json/tests/test_float.py
file path=usr/lib/python2.6/json/tests/test_float.pyc
file path=usr/lib/python2.6/json/tests/test_indent.py
file path=usr/lib/python2.6/json/tests/test_indent.pyc
file path=usr/lib/python2.6/json/tests/test_pass1.py
file path=usr/lib/python2.6/json/tests/test_pass1.pyc
file path=usr/lib/python2.6/json/tests/test_pass2.py
file path=usr/lib/python2.6/json/tests/test_pass2.pyc
file path=usr/lib/python2.6/json/tests/test_pass3.py
file path=usr/lib/python2.6/json/tests/test_pass3.pyc
file path=usr/lib/python2.6/json/tests/test_recursion.py
file path=usr/lib/python2.6/json/tests/test_recursion.pyc
file path=usr/lib/python2.6/json/tests/test_scanstring.py
file path=usr/lib/python2.6/json/tests/test_scanstring.pyc
file path=usr/lib/python2.6/json/tests/test_separators.py
file path=usr/lib/python2.6/json/tests/test_separators.pyc
file path=usr/lib/python2.6/json/tests/test_speedups.py
file path=usr/lib/python2.6/json/tests/test_speedups.pyc
file path=usr/lib/python2.6/json/tests/test_unicode.py
file path=usr/lib/python2.6/json/tests/test_unicode.pyc
file path=usr/lib/python2.6/json/tool.py
file path=usr/lib/python2.6/json/tool.pyc
file path=usr/lib/python2.6/keyword.py
file path=usr/lib/python2.6/keyword.pyc
file path=usr/lib/python2.6/lib-dynload/Python-2.6.4-py2.6.egg-info
file path=usr/lib/python2.6/lib-dynload/_bisect.so
file path=usr/lib/python2.6/lib-dynload/_bytesio.so
file path=usr/lib/python2.6/lib-dynload/_codecs_cn.so
file path=usr/lib/python2.6/lib-dynload/_codecs_hk.so
file path=usr/lib/python2.6/lib-dynload/_codecs_iso2022.so
file path=usr/lib/python2.6/lib-dynload/_codecs_jp.so
file path=usr/lib/python2.6/lib-dynload/_codecs_kr.so
file path=usr/lib/python2.6/lib-dynload/_codecs_tw.so
file path=usr/lib/python2.6/lib-dynload/_collections.so
file path=usr/lib/python2.6/lib-dynload/_csv.so
file path=usr/lib/python2.6/lib-dynload/_ctypes.so
file path=usr/lib/python2.6/lib-dynload/_ctypes_test.so
file path=usr/lib/python2.6/lib-dynload/_curses.so
file path=usr/lib/python2.6/lib-dynload/_curses_panel.so
file path=usr/lib/python2.6/lib-dynload/_elementtree.so
file path=usr/lib/python2.6/lib-dynload/_fileio.so
file path=usr/lib/python2.6/lib-dynload/_functools.so
file path=usr/lib/python2.6/lib-dynload/_hashlib.so
file path=usr/lib/python2.6/lib-dynload/_heapq.so
file path=usr/lib/python2.6/lib-dynload/_hotshot.so
file path=usr/lib/python2.6/lib-dynload/_json.so
file path=usr/lib/python2.6/lib-dynload/_locale.so
file path=usr/lib/python2.6/lib-dynload/_lsprof.so
file path=usr/lib/python2.6/lib-dynload/_multibytecodec.so
file path=usr/lib/python2.6/lib-dynload/_multiprocessing.so
file path=usr/lib/python2.6/lib-dynload/_random.so
file path=usr/lib/python2.6/lib-dynload/_socket.so
file path=usr/lib/python2.6/lib-dynload/_sqlite3.so
file path=usr/lib/python2.6/lib-dynload/_ssl.so
file path=usr/lib/python2.6/lib-dynload/_struct.so
file path=usr/lib/python2.6/lib-dynload/_testcapi.so
file path=usr/lib/python2.6/lib-dynload/_tkinter.so
file path=usr/lib/python2.6/lib-dynload/_weakref.so
file path=usr/lib/python2.6/lib-dynload/array.so
file path=usr/lib/python2.6/lib-dynload/audioop.so
file path=usr/lib/python2.6/lib-dynload/binascii.so
file path=usr/lib/python2.6/lib-dynload/bz2.so
file path=usr/lib/python2.6/lib-dynload/cPickle.so
file path=usr/lib/python2.6/lib-dynload/cStringIO.so
file path=usr/lib/python2.6/lib-dynload/cmath.so
file path=usr/lib/python2.6/lib-dynload/crypt.so
file path=usr/lib/python2.6/lib-dynload/datetime.so
file path=usr/lib/python2.6/lib-dynload/dbm.so
file path=usr/lib/python2.6/lib-dynload/dl.so
file path=usr/lib/python2.6/lib-dynload/dlpi.so
file path=usr/lib/python2.6/lib-dynload/fcntl.so
file path=usr/lib/python2.6/lib-dynload/future_builtins.so
file path=usr/lib/python2.6/lib-dynload/gdbm.so
file path=usr/lib/python2.6/lib-dynload/grp.so
file path=usr/lib/python2.6/lib-dynload/imageop.so
file path=usr/lib/python2.6/lib-dynload/itertools.so
file path=usr/lib/python2.6/lib-dynload/math.so
file path=usr/lib/python2.6/lib-dynload/mmap.so
file path=usr/lib/python2.6/lib-dynload/nis.so
file path=usr/lib/python2.6/lib-dynload/operator.so
file path=usr/lib/python2.6/lib-dynload/parser.so
file path=usr/lib/python2.6/lib-dynload/privileges.so
file path=usr/lib/python2.6/lib-dynload/pyexpat.so
file path=usr/lib/python2.6/lib-dynload/rbac.so
file path=usr/lib/python2.6/lib-dynload/readline.so
file path=usr/lib/python2.6/lib-dynload/resource.so
file path=usr/lib/python2.6/lib-dynload/select.so
file path=usr/lib/python2.6/lib-dynload/spwd.so
file path=usr/lib/python2.6/lib-dynload/strop.so
file path=usr/lib/python2.6/lib-dynload/sunaudiodev.so
file path=usr/lib/python2.6/lib-dynload/syslog.so
file path=usr/lib/python2.6/lib-dynload/termios.so
file path=usr/lib/python2.6/lib-dynload/time.so
file path=usr/lib/python2.6/lib-dynload/ucred.so
file path=usr/lib/python2.6/lib-dynload/unicodedata.so
file path=usr/lib/python2.6/lib-dynload/zlib.so
file path=usr/lib/python2.6/lib-tk/Canvas.py
file path=usr/lib/python2.6/lib-tk/Canvas.pyc
file path=usr/lib/python2.6/lib-tk/Dialog.py
file path=usr/lib/python2.6/lib-tk/Dialog.pyc
file path=usr/lib/python2.6/lib-tk/FileDialog.py
file path=usr/lib/python2.6/lib-tk/FileDialog.pyc
file path=usr/lib/python2.6/lib-tk/FixTk.py
file path=usr/lib/python2.6/lib-tk/FixTk.pyc
file path=usr/lib/python2.6/lib-tk/ScrolledText.py
file path=usr/lib/python2.6/lib-tk/ScrolledText.pyc
file path=usr/lib/python2.6/lib-tk/SimpleDialog.py
file path=usr/lib/python2.6/lib-tk/SimpleDialog.pyc
file path=usr/lib/python2.6/lib-tk/Tix.py
file path=usr/lib/python2.6/lib-tk/Tix.pyc
file path=usr/lib/python2.6/lib-tk/Tkconstants.py
file path=usr/lib/python2.6/lib-tk/Tkconstants.pyc
file path=usr/lib/python2.6/lib-tk/Tkdnd.py
file path=usr/lib/python2.6/lib-tk/Tkdnd.pyc
file path=usr/lib/python2.6/lib-tk/Tkinter.py
file path=usr/lib/python2.6/lib-tk/Tkinter.pyc
file path=usr/lib/python2.6/lib-tk/tkColorChooser.py
file path=usr/lib/python2.6/lib-tk/tkColorChooser.pyc
file path=usr/lib/python2.6/lib-tk/tkCommonDialog.py
file path=usr/lib/python2.6/lib-tk/tkCommonDialog.pyc
file path=usr/lib/python2.6/lib-tk/tkFileDialog.py
file path=usr/lib/python2.6/lib-tk/tkFileDialog.pyc
file path=usr/lib/python2.6/lib-tk/tkFont.py
file path=usr/lib/python2.6/lib-tk/tkFont.pyc
file path=usr/lib/python2.6/lib-tk/tkMessageBox.py
file path=usr/lib/python2.6/lib-tk/tkMessageBox.pyc
file path=usr/lib/python2.6/lib-tk/tkSimpleDialog.py
file path=usr/lib/python2.6/lib-tk/tkSimpleDialog.pyc
file path=usr/lib/python2.6/lib-tk/turtle.py
file path=usr/lib/python2.6/lib-tk/turtle.pyc
file path=usr/lib/python2.6/lib2to3/Grammar.txt
file path=usr/lib/python2.6/lib2to3/Grammar2.6.4.final.0.pickle
file path=usr/lib/python2.6/lib2to3/PatternGrammar.txt
file path=usr/lib/python2.6/lib2to3/PatternGrammar2.6.4.final.0.pickle
file path=usr/lib/python2.6/lib2to3/__init__.py
file path=usr/lib/python2.6/lib2to3/__init__.pyc
file path=usr/lib/python2.6/lib2to3/fixer_base.py
file path=usr/lib/python2.6/lib2to3/fixer_base.pyc
file path=usr/lib/python2.6/lib2to3/fixer_util.py
file path=usr/lib/python2.6/lib2to3/fixer_util.pyc
file path=usr/lib/python2.6/lib2to3/fixes/__init__.py
file path=usr/lib/python2.6/lib2to3/fixes/__init__.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_apply.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_apply.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_basestring.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_basestring.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_buffer.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_buffer.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_callable.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_callable.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_dict.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_dict.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_except.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_except.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_exec.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_exec.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_execfile.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_execfile.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_filter.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_filter.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_funcattrs.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_funcattrs.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_future.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_future.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_getcwdu.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_getcwdu.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_has_key.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_has_key.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_idioms.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_idioms.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_import.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_import.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_imports.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_imports.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_imports2.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_imports2.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_input.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_input.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_intern.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_intern.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_isinstance.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_isinstance.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_itertools.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_itertools.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_itertools_imports.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_itertools_imports.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_long.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_long.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_map.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_map.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_metaclass.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_metaclass.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_methodattrs.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_methodattrs.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_ne.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_ne.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_next.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_next.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_nonzero.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_nonzero.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_numliterals.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_numliterals.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_paren.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_paren.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_print.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_print.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_raise.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_raise.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_raw_input.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_raw_input.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_reduce.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_reduce.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_renames.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_renames.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_repr.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_repr.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_set_literal.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_set_literal.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_standarderror.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_standarderror.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_sys_exc.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_sys_exc.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_throw.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_throw.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_tuple_params.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_tuple_params.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_types.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_types.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_unicode.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_unicode.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_urllib.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_urllib.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_ws_comma.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_ws_comma.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_xrange.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_xrange.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_xreadlines.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_xreadlines.pyc
file path=usr/lib/python2.6/lib2to3/fixes/fix_zip.py
file path=usr/lib/python2.6/lib2to3/fixes/fix_zip.pyc
file path=usr/lib/python2.6/lib2to3/main.py
file path=usr/lib/python2.6/lib2to3/main.pyc
file path=usr/lib/python2.6/lib2to3/patcomp.py
file path=usr/lib/python2.6/lib2to3/patcomp.pyc
file path=usr/lib/python2.6/lib2to3/pgen2/__init__.py
file path=usr/lib/python2.6/lib2to3/pgen2/__init__.pyc
file path=usr/lib/python2.6/lib2to3/pgen2/conv.py
file path=usr/lib/python2.6/lib2to3/pgen2/conv.pyc
file path=usr/lib/python2.6/lib2to3/pgen2/driver.py
file path=usr/lib/python2.6/lib2to3/pgen2/driver.pyc
file path=usr/lib/python2.6/lib2to3/pgen2/grammar.py
file path=usr/lib/python2.6/lib2to3/pgen2/grammar.pyc
file path=usr/lib/python2.6/lib2to3/pgen2/literals.py
file path=usr/lib/python2.6/lib2to3/pgen2/literals.pyc
file path=usr/lib/python2.6/lib2to3/pgen2/parse.py
file path=usr/lib/python2.6/lib2to3/pgen2/parse.pyc
file path=usr/lib/python2.6/lib2to3/pgen2/pgen.py
file path=usr/lib/python2.6/lib2to3/pgen2/pgen.pyc
file path=usr/lib/python2.6/lib2to3/pgen2/token.py
file path=usr/lib/python2.6/lib2to3/pgen2/token.pyc
file path=usr/lib/python2.6/lib2to3/pgen2/tokenize.py
file path=usr/lib/python2.6/lib2to3/pgen2/tokenize.pyc
file path=usr/lib/python2.6/lib2to3/pygram.py
file path=usr/lib/python2.6/lib2to3/pygram.pyc
file path=usr/lib/python2.6/lib2to3/pytree.py
file path=usr/lib/python2.6/lib2to3/pytree.pyc
file path=usr/lib/python2.6/lib2to3/refactor.py
file path=usr/lib/python2.6/lib2to3/refactor.pyc
file path=usr/lib/python2.6/lib2to3/tests/__init__.py
file path=usr/lib/python2.6/lib2to3/tests/__init__.pyc
file path=usr/lib/python2.6/lib2to3/tests/pytree_idempotency.py
file path=usr/lib/python2.6/lib2to3/tests/pytree_idempotency.pyc
file path=usr/lib/python2.6/lib2to3/tests/support.py
file path=usr/lib/python2.6/lib2to3/tests/support.pyc
file path=usr/lib/python2.6/lib2to3/tests/test_all_fixers.py
file path=usr/lib/python2.6/lib2to3/tests/test_all_fixers.pyc
file path=usr/lib/python2.6/lib2to3/tests/test_fixers.py
file path=usr/lib/python2.6/lib2to3/tests/test_fixers.pyc
file path=usr/lib/python2.6/lib2to3/tests/test_parser.py
file path=usr/lib/python2.6/lib2to3/tests/test_parser.pyc
file path=usr/lib/python2.6/lib2to3/tests/test_pytree.py
file path=usr/lib/python2.6/lib2to3/tests/test_pytree.pyc
file path=usr/lib/python2.6/lib2to3/tests/test_refactor.py
file path=usr/lib/python2.6/lib2to3/tests/test_refactor.pyc
file path=usr/lib/python2.6/lib2to3/tests/test_util.py
file path=usr/lib/python2.6/lib2to3/tests/test_util.pyc
file path=usr/lib/python2.6/linecache.py
file path=usr/lib/python2.6/linecache.pyc
file path=usr/lib/python2.6/locale.py
file path=usr/lib/python2.6/locale.pyc
file path=usr/lib/python2.6/logging/__init__.py
file path=usr/lib/python2.6/logging/__init__.pyc
file path=usr/lib/python2.6/logging/config.py
file path=usr/lib/python2.6/logging/config.pyc
file path=usr/lib/python2.6/logging/handlers.py
file path=usr/lib/python2.6/logging/handlers.pyc
file path=usr/lib/python2.6/macpath.py
file path=usr/lib/python2.6/macpath.pyc
file path=usr/lib/python2.6/macurl2path.py
file path=usr/lib/python2.6/macurl2path.pyc
file path=usr/lib/python2.6/mailbox.py
file path=usr/lib/python2.6/mailbox.pyc
file path=usr/lib/python2.6/mailcap.py
file path=usr/lib/python2.6/mailcap.pyc
file path=usr/lib/python2.6/markupbase.py
file path=usr/lib/python2.6/markupbase.pyc
file path=usr/lib/python2.6/md5.py
file path=usr/lib/python2.6/md5.pyc
file path=usr/lib/python2.6/mhlib.py
file path=usr/lib/python2.6/mhlib.pyc
file path=usr/lib/python2.6/mimetools.py
file path=usr/lib/python2.6/mimetools.pyc
file path=usr/lib/python2.6/mimetypes.py
file path=usr/lib/python2.6/mimetypes.pyc
file path=usr/lib/python2.6/mimify.py
file path=usr/lib/python2.6/mimify.pyc
file path=usr/lib/python2.6/modulefinder.py
file path=usr/lib/python2.6/modulefinder.pyc
file path=usr/lib/python2.6/multifile.py
file path=usr/lib/python2.6/multifile.pyc
file path=usr/lib/python2.6/multiprocessing/__init__.py
file path=usr/lib/python2.6/multiprocessing/__init__.pyc
file path=usr/lib/python2.6/multiprocessing/connection.py
file path=usr/lib/python2.6/multiprocessing/connection.pyc
file path=usr/lib/python2.6/multiprocessing/dummy/__init__.py
file path=usr/lib/python2.6/multiprocessing/dummy/__init__.pyc
file path=usr/lib/python2.6/multiprocessing/dummy/connection.py
file path=usr/lib/python2.6/multiprocessing/dummy/connection.pyc
file path=usr/lib/python2.6/multiprocessing/forking.py
file path=usr/lib/python2.6/multiprocessing/forking.pyc
file path=usr/lib/python2.6/multiprocessing/heap.py
file path=usr/lib/python2.6/multiprocessing/heap.pyc
file path=usr/lib/python2.6/multiprocessing/managers.py
file path=usr/lib/python2.6/multiprocessing/managers.pyc
file path=usr/lib/python2.6/multiprocessing/pool.py
file path=usr/lib/python2.6/multiprocessing/pool.pyc
file path=usr/lib/python2.6/multiprocessing/process.py
file path=usr/lib/python2.6/multiprocessing/process.pyc
file path=usr/lib/python2.6/multiprocessing/queues.py
file path=usr/lib/python2.6/multiprocessing/queues.pyc
file path=usr/lib/python2.6/multiprocessing/reduction.py
file path=usr/lib/python2.6/multiprocessing/reduction.pyc
file path=usr/lib/python2.6/multiprocessing/sharedctypes.py
file path=usr/lib/python2.6/multiprocessing/sharedctypes.pyc
file path=usr/lib/python2.6/multiprocessing/synchronize.py
file path=usr/lib/python2.6/multiprocessing/synchronize.pyc
file path=usr/lib/python2.6/multiprocessing/util.py
file path=usr/lib/python2.6/multiprocessing/util.pyc
file path=usr/lib/python2.6/mutex.py
file path=usr/lib/python2.6/mutex.pyc
file path=usr/lib/python2.6/netrc.py
file path=usr/lib/python2.6/netrc.pyc
file path=usr/lib/python2.6/new.py
file path=usr/lib/python2.6/new.pyc
file path=usr/lib/python2.6/nntplib.py
file path=usr/lib/python2.6/nntplib.pyc
file path=usr/lib/python2.6/ntpath.py
file path=usr/lib/python2.6/ntpath.pyc
file path=usr/lib/python2.6/nturl2path.py
file path=usr/lib/python2.6/nturl2path.pyc
file path=usr/lib/python2.6/numbers.py
file path=usr/lib/python2.6/numbers.pyc
file path=usr/lib/python2.6/opcode.py
file path=usr/lib/python2.6/opcode.pyc
file path=usr/lib/python2.6/optparse.py
file path=usr/lib/python2.6/optparse.pyc
file path=usr/lib/python2.6/os.py
file path=usr/lib/python2.6/os.pyc
file path=usr/lib/python2.6/os2emxpath.py
file path=usr/lib/python2.6/os2emxpath.pyc
file path=usr/lib/python2.6/pdb.doc
file path=usr/lib/python2.6/pdb.py
file path=usr/lib/python2.6/pdb.pyc
file path=usr/lib/python2.6/pickle.py
file path=usr/lib/python2.6/pickle.pyc
file path=usr/lib/python2.6/pickletools.py
file path=usr/lib/python2.6/pickletools.pyc
file path=usr/lib/python2.6/pipes.py
file path=usr/lib/python2.6/pipes.pyc
file path=usr/lib/python2.6/pkgutil.py
file path=usr/lib/python2.6/pkgutil.pyc
file path=usr/lib/python2.6/plat-sunos5/CDIO.py
file path=usr/lib/python2.6/plat-sunos5/CDIO.pyc
file path=usr/lib/python2.6/plat-sunos5/DLFCN.py
file path=usr/lib/python2.6/plat-sunos5/DLFCN.pyc
file path=usr/lib/python2.6/plat-sunos5/IN.py
file path=usr/lib/python2.6/plat-sunos5/IN.pyc
file path=usr/lib/python2.6/plat-sunos5/STROPTS.py
file path=usr/lib/python2.6/plat-sunos5/STROPTS.pyc
file path=usr/lib/python2.6/plat-sunos5/SUNAUDIODEV.py
file path=usr/lib/python2.6/plat-sunos5/SUNAUDIODEV.pyc
file path=usr/lib/python2.6/plat-sunos5/TYPES.py
file path=usr/lib/python2.6/plat-sunos5/TYPES.pyc
file path=usr/lib/python2.6/plat-sunos5/regen mode=0555
file path=usr/lib/python2.6/platform.py
file path=usr/lib/python2.6/platform.pyc
file path=usr/lib/python2.6/plistlib.py
file path=usr/lib/python2.6/plistlib.pyc
file path=usr/lib/python2.6/popen2.py
file path=usr/lib/python2.6/popen2.pyc
file path=usr/lib/python2.6/poplib.py
file path=usr/lib/python2.6/poplib.pyc
file path=usr/lib/python2.6/posixfile.py
file path=usr/lib/python2.6/posixfile.pyc
file path=usr/lib/python2.6/posixpath.py
file path=usr/lib/python2.6/posixpath.pyc
file path=usr/lib/python2.6/pprint.py
file path=usr/lib/python2.6/pprint.pyc
file path=usr/lib/python2.6/profile.py
file path=usr/lib/python2.6/profile.pyc
file path=usr/lib/python2.6/pstats.py
file path=usr/lib/python2.6/pstats.pyc
file path=usr/lib/python2.6/pty.py
file path=usr/lib/python2.6/pty.pyc
link path=usr/lib/python2.6/pyCC target=pycc
file path=usr/lib/python2.6/pycc
file path=usr/lib/python2.6/py_compile.py
file path=usr/lib/python2.6/py_compile.pyc
file path=usr/lib/python2.6/pyclbr.py
file path=usr/lib/python2.6/pyclbr.pyc
file path=usr/lib/python2.6/pydoc.py
file path=usr/lib/python2.6/pydoc.pyc
file path=usr/lib/python2.6/pydoc_topics.py
file path=usr/lib/python2.6/pydoc_topics.pyc
file path=usr/lib/python2.6/quopri.py
file path=usr/lib/python2.6/quopri.pyc
file path=usr/lib/python2.6/random.py
file path=usr/lib/python2.6/random.pyc
file path=usr/lib/python2.6/re.py
file path=usr/lib/python2.6/re.pyc
file path=usr/lib/python2.6/repr.py
file path=usr/lib/python2.6/repr.pyc
file path=usr/lib/python2.6/rexec.py
file path=usr/lib/python2.6/rexec.pyc
file path=usr/lib/python2.6/rfc822.py
file path=usr/lib/python2.6/rfc822.pyc
file path=usr/lib/python2.6/rlcompleter.py
file path=usr/lib/python2.6/rlcompleter.pyc
file path=usr/lib/python2.6/robotparser.py
file path=usr/lib/python2.6/robotparser.pyc
file path=usr/lib/python2.6/runpy.py
file path=usr/lib/python2.6/runpy.pyc
file path=usr/lib/python2.6/sched.py
file path=usr/lib/python2.6/sched.pyc
file path=usr/lib/python2.6/sets.py
file path=usr/lib/python2.6/sets.pyc
file path=usr/lib/python2.6/sgmllib.py
file path=usr/lib/python2.6/sgmllib.pyc
file path=usr/lib/python2.6/sha.py
file path=usr/lib/python2.6/sha.pyc
file path=usr/lib/python2.6/shelve.py
file path=usr/lib/python2.6/shelve.pyc
file path=usr/lib/python2.6/shlex.py
file path=usr/lib/python2.6/shlex.pyc
file path=usr/lib/python2.6/shutil.py
file path=usr/lib/python2.6/shutil.pyc
file path=usr/lib/python2.6/site-packages/README
file path=usr/lib/python2.6/site-packages/vendor-packages.pth
file path=usr/lib/python2.6/site.py
file path=usr/lib/python2.6/site.pyc
file path=usr/lib/python2.6/smtpd.py
file path=usr/lib/python2.6/smtpd.pyc
file path=usr/lib/python2.6/smtplib.py
file path=usr/lib/python2.6/smtplib.pyc
file path=usr/lib/python2.6/sndhdr.py
file path=usr/lib/python2.6/sndhdr.pyc
file path=usr/lib/python2.6/socket.py
file path=usr/lib/python2.6/socket.pyc
file path=usr/lib/python2.6/sqlite3/__init__.py
file path=usr/lib/python2.6/sqlite3/__init__.pyc
file path=usr/lib/python2.6/sqlite3/dbapi2.py
file path=usr/lib/python2.6/sqlite3/dbapi2.pyc
file path=usr/lib/python2.6/sqlite3/dump.py
file path=usr/lib/python2.6/sqlite3/dump.pyc
file path=usr/lib/python2.6/sqlite3/test/__init__.py
file path=usr/lib/python2.6/sqlite3/test/__init__.pyc
file path=usr/lib/python2.6/sqlite3/test/dbapi.py
file path=usr/lib/python2.6/sqlite3/test/dbapi.pyc
file path=usr/lib/python2.6/sqlite3/test/dump.py
file path=usr/lib/python2.6/sqlite3/test/dump.pyc
file path=usr/lib/python2.6/sqlite3/test/factory.py
file path=usr/lib/python2.6/sqlite3/test/factory.pyc
file path=usr/lib/python2.6/sqlite3/test/hooks.py
file path=usr/lib/python2.6/sqlite3/test/hooks.pyc
file path=usr/lib/python2.6/sqlite3/test/py25tests.py
file path=usr/lib/python2.6/sqlite3/test/py25tests.pyc
file path=usr/lib/python2.6/sqlite3/test/regression.py
file path=usr/lib/python2.6/sqlite3/test/regression.pyc
file path=usr/lib/python2.6/sqlite3/test/transactions.py
file path=usr/lib/python2.6/sqlite3/test/transactions.pyc
file path=usr/lib/python2.6/sqlite3/test/types.py
file path=usr/lib/python2.6/sqlite3/test/types.pyc
file path=usr/lib/python2.6/sqlite3/test/userfunctions.py
file path=usr/lib/python2.6/sqlite3/test/userfunctions.pyc
file path=usr/lib/python2.6/sre.py
file path=usr/lib/python2.6/sre.pyc
file path=usr/lib/python2.6/sre_compile.py
file path=usr/lib/python2.6/sre_compile.pyc
file path=usr/lib/python2.6/sre_constants.py
file path=usr/lib/python2.6/sre_constants.pyc
file path=usr/lib/python2.6/sre_parse.py
file path=usr/lib/python2.6/sre_parse.pyc
file path=usr/lib/python2.6/ssl.py
file path=usr/lib/python2.6/ssl.pyc
file path=usr/lib/python2.6/stat.py
file path=usr/lib/python2.6/stat.pyc
file path=usr/lib/python2.6/statvfs.py
file path=usr/lib/python2.6/statvfs.pyc
file path=usr/lib/python2.6/string.py
file path=usr/lib/python2.6/string.pyc
file path=usr/lib/python2.6/stringold.py
file path=usr/lib/python2.6/stringold.pyc
file path=usr/lib/python2.6/stringprep.py
file path=usr/lib/python2.6/stringprep.pyc
file path=usr/lib/python2.6/struct.py
file path=usr/lib/python2.6/struct.pyc
file path=usr/lib/python2.6/subprocess.py
file path=usr/lib/python2.6/subprocess.pyc
file path=usr/lib/python2.6/sunau.py
file path=usr/lib/python2.6/sunau.pyc
file path=usr/lib/python2.6/sunaudio.py
file path=usr/lib/python2.6/sunaudio.pyc
file path=usr/lib/python2.6/symbol.py
file path=usr/lib/python2.6/symbol.pyc
file path=usr/lib/python2.6/symtable.py
file path=usr/lib/python2.6/symtable.pyc
file path=usr/lib/python2.6/tabnanny.py
file path=usr/lib/python2.6/tabnanny.pyc
file path=usr/lib/python2.6/tarfile.py
file path=usr/lib/python2.6/tarfile.pyc
file path=usr/lib/python2.6/telnetlib.py
file path=usr/lib/python2.6/telnetlib.pyc
file path=usr/lib/python2.6/tempfile.py
file path=usr/lib/python2.6/tempfile.pyc
file path=usr/lib/python2.6/test/185test.db
file path=usr/lib/python2.6/test/README
file path=usr/lib/python2.6/test/Sine-1000Hz-300ms.aif
file path=usr/lib/python2.6/test/__init__.py
file path=usr/lib/python2.6/test/__init__.pyc
file path=usr/lib/python2.6/test/audiotest.au
file path=usr/lib/python2.6/test/autotest.py
file path=usr/lib/python2.6/test/autotest.pyc
file path=usr/lib/python2.6/test/bad_coding.py
file path=usr/lib/python2.6/test/bad_coding2.py
file path=usr/lib/python2.6/test/badcert.pem
file path=usr/lib/python2.6/test/badkey.pem
file path=usr/lib/python2.6/test/badsyntax_future3.py
file path=usr/lib/python2.6/test/badsyntax_future4.py
file path=usr/lib/python2.6/test/badsyntax_future5.py
file path=usr/lib/python2.6/test/badsyntax_future6.py
file path=usr/lib/python2.6/test/badsyntax_future7.py
file path=usr/lib/python2.6/test/badsyntax_future8.py
file path=usr/lib/python2.6/test/badsyntax_future9.py
file path=usr/lib/python2.6/test/badsyntax_nocaret.py
file path=usr/lib/python2.6/test/buffer_tests.py
file path=usr/lib/python2.6/test/buffer_tests.pyc
file path=usr/lib/python2.6/test/cfgparser.1
file path=usr/lib/python2.6/test/check_soundcard.vbs
file usr/bin/check_offset path=usr/lib/python2.6/test/check_offset
file usr/bin/$(MACH64)/check_offset path=usr/lib/python2.6/test/check_offset64
file path=usr/lib/python2.6/test/cjkencodings_test.py
file path=usr/lib/python2.6/test/cjkencodings_test.pyc
file path=usr/lib/python2.6/test/cmath_testcases.txt
file path=usr/lib/python2.6/test/curses_tests.py
file path=usr/lib/python2.6/test/curses_tests.pyc
file path=usr/lib/python2.6/test/decimaltestdata/abs.decTest
file path=usr/lib/python2.6/test/decimaltestdata/add.decTest
file path=usr/lib/python2.6/test/decimaltestdata/and.decTest
file path=usr/lib/python2.6/test/decimaltestdata/base.decTest
file path=usr/lib/python2.6/test/decimaltestdata/clamp.decTest
file path=usr/lib/python2.6/test/decimaltestdata/class.decTest
file path=usr/lib/python2.6/test/decimaltestdata/compare.decTest
file path=usr/lib/python2.6/test/decimaltestdata/comparetotal.decTest
file path=usr/lib/python2.6/test/decimaltestdata/comparetotmag.decTest
file path=usr/lib/python2.6/test/decimaltestdata/copy.decTest
file path=usr/lib/python2.6/test/decimaltestdata/copyabs.decTest
file path=usr/lib/python2.6/test/decimaltestdata/copynegate.decTest
file path=usr/lib/python2.6/test/decimaltestdata/copysign.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddAbs.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddAdd.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddAnd.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddBase.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddCanonical.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddClass.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddCompare.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddCompareSig.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddCompareTotal.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddCompareTotalMag.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddCopy.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddCopyAbs.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddCopyNegate.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddCopySign.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddDivide.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddDivideInt.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddEncode.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddFMA.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddInvert.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddLogB.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddMax.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddMaxMag.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddMin.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddMinMag.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddMinus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddMultiply.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddNextMinus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddNextPlus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddNextToward.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddOr.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddPlus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddQuantize.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddReduce.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddRemainder.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddRemainderNear.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddRotate.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddSameQuantum.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddScaleB.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddShift.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddSubtract.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddToIntegral.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ddXor.decTest
file path=usr/lib/python2.6/test/decimaltestdata/decDouble.decTest
file path=usr/lib/python2.6/test/decimaltestdata/decQuad.decTest
file path=usr/lib/python2.6/test/decimaltestdata/decSingle.decTest
file path=usr/lib/python2.6/test/decimaltestdata/divide.decTest
file path=usr/lib/python2.6/test/decimaltestdata/divideint.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqAbs.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqAdd.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqAnd.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqBase.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqCanonical.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqClass.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqCompare.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqCompareSig.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqCompareTotal.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqCompareTotalMag.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqCopy.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqCopyAbs.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqCopyNegate.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqCopySign.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqDivide.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqDivideInt.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqEncode.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqFMA.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqInvert.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqLogB.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqMax.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqMaxMag.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqMin.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqMinMag.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqMinus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqMultiply.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqNextMinus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqNextPlus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqNextToward.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqOr.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqPlus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqQuantize.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqReduce.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqRemainder.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqRemainderNear.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqRotate.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqSameQuantum.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqScaleB.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqShift.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqSubtract.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqToIntegral.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dqXor.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dsBase.decTest
file path=usr/lib/python2.6/test/decimaltestdata/dsEncode.decTest
file path=usr/lib/python2.6/test/decimaltestdata/exp.decTest
file path=usr/lib/python2.6/test/decimaltestdata/extra.decTest
file path=usr/lib/python2.6/test/decimaltestdata/fma.decTest
file path=usr/lib/python2.6/test/decimaltestdata/inexact.decTest
file path=usr/lib/python2.6/test/decimaltestdata/invert.decTest
file path=usr/lib/python2.6/test/decimaltestdata/ln.decTest
file path=usr/lib/python2.6/test/decimaltestdata/log10.decTest
file path=usr/lib/python2.6/test/decimaltestdata/logb.decTest
file path=usr/lib/python2.6/test/decimaltestdata/max.decTest
file path=usr/lib/python2.6/test/decimaltestdata/maxmag.decTest
file path=usr/lib/python2.6/test/decimaltestdata/min.decTest
file path=usr/lib/python2.6/test/decimaltestdata/minmag.decTest
file path=usr/lib/python2.6/test/decimaltestdata/minus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/multiply.decTest
file path=usr/lib/python2.6/test/decimaltestdata/nextminus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/nextplus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/nexttoward.decTest
file path=usr/lib/python2.6/test/decimaltestdata/or.decTest
file path=usr/lib/python2.6/test/decimaltestdata/plus.decTest
file path=usr/lib/python2.6/test/decimaltestdata/power.decTest
file path=usr/lib/python2.6/test/decimaltestdata/powersqrt.decTest
file path=usr/lib/python2.6/test/decimaltestdata/quantize.decTest
file path=usr/lib/python2.6/test/decimaltestdata/randomBound32.decTest
file path=usr/lib/python2.6/test/decimaltestdata/randoms.decTest
file path=usr/lib/python2.6/test/decimaltestdata/reduce.decTest
file path=usr/lib/python2.6/test/decimaltestdata/remainder.decTest
file path=usr/lib/python2.6/test/decimaltestdata/remainderNear.decTest
file path=usr/lib/python2.6/test/decimaltestdata/rescale.decTest
file path=usr/lib/python2.6/test/decimaltestdata/rotate.decTest
file path=usr/lib/python2.6/test/decimaltestdata/rounding.decTest
file path=usr/lib/python2.6/test/decimaltestdata/samequantum.decTest
file path=usr/lib/python2.6/test/decimaltestdata/scaleb.decTest
file path=usr/lib/python2.6/test/decimaltestdata/shift.decTest
file path=usr/lib/python2.6/test/decimaltestdata/squareroot.decTest
file path=usr/lib/python2.6/test/decimaltestdata/subtract.decTest
file path=usr/lib/python2.6/test/decimaltestdata/testall.decTest
file path=usr/lib/python2.6/test/decimaltestdata/tointegral.decTest
file path=usr/lib/python2.6/test/decimaltestdata/tointegralx.decTest
file path=usr/lib/python2.6/test/decimaltestdata/xor.decTest
file path=usr/lib/python2.6/test/dlpitest.py
file path=usr/lib/python2.6/test/dlpitest.pyc
file path=usr/lib/python2.6/test/doctest_aliases.py
file path=usr/lib/python2.6/test/doctest_aliases.pyc
file path=usr/lib/python2.6/test/double_const.py
file path=usr/lib/python2.6/test/double_const.pyc
file path=usr/lib/python2.6/test/empty.vbs
file path=usr/lib/python2.6/test/exception_hierarchy.txt
file path=usr/lib/python2.6/test/floating_points.txt
file path=usr/lib/python2.6/test/fork_wait.py
file path=usr/lib/python2.6/test/fork_wait.pyc
file path=usr/lib/python2.6/test/greyrgb.uue
file path=usr/lib/python2.6/test/https_svn_python_org_root.pem
file path=usr/lib/python2.6/test/ieee754.txt
file path=usr/lib/python2.6/test/infinite_reload.py
file path=usr/lib/python2.6/test/infinite_reload.pyc
file path=usr/lib/python2.6/test/inspect_fodder.py
file path=usr/lib/python2.6/test/inspect_fodder.pyc
file path=usr/lib/python2.6/test/inspect_fodder2.py
file path=usr/lib/python2.6/test/inspect_fodder2.pyc
file path=usr/lib/python2.6/test/keycert.pem
file path=usr/lib/python2.6/test/list_tests.py
file path=usr/lib/python2.6/test/list_tests.pyc
file path=usr/lib/python2.6/test/mapping_tests.py
file path=usr/lib/python2.6/test/mapping_tests.pyc
file path=usr/lib/python2.6/test/nullcert.pem
file path=usr/lib/python2.6/test/outstanding_bugs.py
file path=usr/lib/python2.6/test/outstanding_bugs.pyc
file path=usr/lib/python2.6/test/pickletester.py
file path=usr/lib/python2.6/test/pickletester.pyc
file path=usr/lib/python2.6/test/privrbactest.py
file path=usr/lib/python2.6/test/privrbactest.pyc
file path=usr/lib/python2.6/test/profilee.py
file path=usr/lib/python2.6/test/profilee.pyc
file path=usr/lib/python2.6/test/pyclbr_input.py
file path=usr/lib/python2.6/test/pyclbr_input.pyc
file path=usr/lib/python2.6/test/pydoc_mod.py
file path=usr/lib/python2.6/test/pydoc_mod.pyc
file path=usr/lib/python2.6/test/pydocfodder.py
file path=usr/lib/python2.6/test/pydocfodder.pyc
file path=usr/lib/python2.6/test/pystone.py
file path=usr/lib/python2.6/test/pystone.pyc
file path=usr/lib/python2.6/test/randv2_32.pck
file path=usr/lib/python2.6/test/randv2_64.pck
file path=usr/lib/python2.6/test/randv3.pck
file path=usr/lib/python2.6/test/re_tests.py
file path=usr/lib/python2.6/test/re_tests.pyc
file path=usr/lib/python2.6/test/regex_tests.py
file path=usr/lib/python2.6/test/regex_tests.pyc
file path=usr/lib/python2.6/test/regrtest.py
file path=usr/lib/python2.6/test/regrtest.pyc
file path=usr/lib/python2.6/test/relimport.py
file path=usr/lib/python2.6/test/relimport.pyc
file path=usr/lib/python2.6/test/reperf.py
file path=usr/lib/python2.6/test/reperf.pyc
file path=usr/lib/python2.6/test/sample_doctest.py
file path=usr/lib/python2.6/test/sample_doctest.pyc
file path=usr/lib/python2.6/test/seq_tests.py
file path=usr/lib/python2.6/test/seq_tests.pyc
file path=usr/lib/python2.6/test/sgml_input.html
file path=usr/lib/python2.6/test/sortperf.py
file path=usr/lib/python2.6/test/sortperf.pyc
file path=usr/lib/python2.6/test/ssl_cert.pem
file path=usr/lib/python2.6/test/ssl_key.pem
file path=usr/lib/python2.6/test/string_tests.py
file path=usr/lib/python2.6/test/string_tests.pyc
file path=usr/lib/python2.6/test/svn_python_org_https_cert.pem
file path=usr/lib/python2.6/test/test.xml
file path=usr/lib/python2.6/test/test.xml.out
file path=usr/lib/python2.6/test/test_MimeWriter.py
file path=usr/lib/python2.6/test/test_MimeWriter.pyc
file path=usr/lib/python2.6/test/test_SimpleHTTPServer.py
file path=usr/lib/python2.6/test/test_SimpleHTTPServer.pyc
file path=usr/lib/python2.6/test/test_StringIO.py
file path=usr/lib/python2.6/test/test_StringIO.pyc
file path=usr/lib/python2.6/test/test___all__.py
file path=usr/lib/python2.6/test/test___all__.pyc
file path=usr/lib/python2.6/test/test___future__.py
file path=usr/lib/python2.6/test/test___future__.pyc
file path=usr/lib/python2.6/test/test__locale.py
file path=usr/lib/python2.6/test/test__locale.pyc
file path=usr/lib/python2.6/test/test_abc.py
file path=usr/lib/python2.6/test/test_abc.pyc
file path=usr/lib/python2.6/test/test_abstract_numbers.py
file path=usr/lib/python2.6/test/test_abstract_numbers.pyc
file path=usr/lib/python2.6/test/test_aepack.py
file path=usr/lib/python2.6/test/test_aepack.pyc
file path=usr/lib/python2.6/test/test_aifc.py
file path=usr/lib/python2.6/test/test_aifc.pyc
file path=usr/lib/python2.6/test/test_al.py
file path=usr/lib/python2.6/test/test_al.pyc
file path=usr/lib/python2.6/test/test_anydbm.py
file path=usr/lib/python2.6/test/test_anydbm.pyc
file path=usr/lib/python2.6/test/test_applesingle.py
file path=usr/lib/python2.6/test/test_applesingle.pyc
file path=usr/lib/python2.6/test/test_array.py
file path=usr/lib/python2.6/test/test_array.pyc
file path=usr/lib/python2.6/test/test_ast.py
file path=usr/lib/python2.6/test/test_ast.pyc
file path=usr/lib/python2.6/test/test_asynchat.py
file path=usr/lib/python2.6/test/test_asynchat.pyc
file path=usr/lib/python2.6/test/test_asyncore.py
file path=usr/lib/python2.6/test/test_asyncore.pyc
file path=usr/lib/python2.6/test/test_atexit.py
file path=usr/lib/python2.6/test/test_atexit.pyc
file path=usr/lib/python2.6/test/test_audioop.py
file path=usr/lib/python2.6/test/test_audioop.pyc
file path=usr/lib/python2.6/test/test_augassign.py
file path=usr/lib/python2.6/test/test_augassign.pyc
file path=usr/lib/python2.6/test/test_base64.py
file path=usr/lib/python2.6/test/test_base64.pyc
file path=usr/lib/python2.6/test/test_bastion.py
file path=usr/lib/python2.6/test/test_bastion.pyc
file path=usr/lib/python2.6/test/test_bigaddrspace.py
file path=usr/lib/python2.6/test/test_bigaddrspace.pyc
file path=usr/lib/python2.6/test/test_bigmem.py
file path=usr/lib/python2.6/test/test_bigmem.pyc
file path=usr/lib/python2.6/test/test_binascii.py
file path=usr/lib/python2.6/test/test_binascii.pyc
file path=usr/lib/python2.6/test/test_binhex.py
file path=usr/lib/python2.6/test/test_binhex.pyc
file path=usr/lib/python2.6/test/test_binop.py
file path=usr/lib/python2.6/test/test_binop.pyc
file path=usr/lib/python2.6/test/test_bisect.py
file path=usr/lib/python2.6/test/test_bisect.pyc
file path=usr/lib/python2.6/test/test_bool.py
file path=usr/lib/python2.6/test/test_bool.pyc
file path=usr/lib/python2.6/test/test_bsddb.py
file path=usr/lib/python2.6/test/test_bsddb.pyc
file path=usr/lib/python2.6/test/test_bsddb185.py
file path=usr/lib/python2.6/test/test_bsddb185.pyc
file path=usr/lib/python2.6/test/test_bsddb3.py
file path=usr/lib/python2.6/test/test_bsddb3.pyc
file path=usr/lib/python2.6/test/test_buffer.py
file path=usr/lib/python2.6/test/test_buffer.pyc
file path=usr/lib/python2.6/test/test_bufio.py
file path=usr/lib/python2.6/test/test_bufio.pyc
file path=usr/lib/python2.6/test/test_builtin.py
file path=usr/lib/python2.6/test/test_builtin.pyc
file path=usr/lib/python2.6/test/test_bytes.py
file path=usr/lib/python2.6/test/test_bytes.pyc
file path=usr/lib/python2.6/test/test_bz2.py
file path=usr/lib/python2.6/test/test_bz2.pyc
file path=usr/lib/python2.6/test/test_calendar.py
file path=usr/lib/python2.6/test/test_calendar.pyc
file path=usr/lib/python2.6/test/test_call.py
file path=usr/lib/python2.6/test/test_call.pyc
file path=usr/lib/python2.6/test/test_capi.py
file path=usr/lib/python2.6/test/test_capi.pyc
file path=usr/lib/python2.6/test/test_cd.py
file path=usr/lib/python2.6/test/test_cd.pyc
file path=usr/lib/python2.6/test/test_cfgparser.py
file path=usr/lib/python2.6/test/test_cfgparser.pyc
file path=usr/lib/python2.6/test/test_cgi.py
file path=usr/lib/python2.6/test/test_cgi.pyc
file path=usr/lib/python2.6/test/test_charmapcodec.py
file path=usr/lib/python2.6/test/test_charmapcodec.pyc
file path=usr/lib/python2.6/test/test_cl.py
file path=usr/lib/python2.6/test/test_cl.pyc
file path=usr/lib/python2.6/test/test_class.py
file path=usr/lib/python2.6/test/test_class.pyc
file path=usr/lib/python2.6/test/test_cmath.py
file path=usr/lib/python2.6/test/test_cmath.pyc
file path=usr/lib/python2.6/test/test_cmd.py
file path=usr/lib/python2.6/test/test_cmd.pyc
file path=usr/lib/python2.6/test/test_cmd_line.py
file path=usr/lib/python2.6/test/test_cmd_line.pyc
file path=usr/lib/python2.6/test/test_cmd_line_script.py
file path=usr/lib/python2.6/test/test_cmd_line_script.pyc
file path=usr/lib/python2.6/test/test_code.py
file path=usr/lib/python2.6/test/test_code.pyc
file path=usr/lib/python2.6/test/test_codeccallbacks.py
file path=usr/lib/python2.6/test/test_codeccallbacks.pyc
file path=usr/lib/python2.6/test/test_codecencodings_cn.py
file path=usr/lib/python2.6/test/test_codecencodings_cn.pyc
file path=usr/lib/python2.6/test/test_codecencodings_hk.py
file path=usr/lib/python2.6/test/test_codecencodings_hk.pyc
file path=usr/lib/python2.6/test/test_codecencodings_jp.py
file path=usr/lib/python2.6/test/test_codecencodings_jp.pyc
file path=usr/lib/python2.6/test/test_codecencodings_kr.py
file path=usr/lib/python2.6/test/test_codecencodings_kr.pyc
file path=usr/lib/python2.6/test/test_codecencodings_tw.py
file path=usr/lib/python2.6/test/test_codecencodings_tw.pyc
file path=usr/lib/python2.6/test/test_codecmaps_cn.py
file path=usr/lib/python2.6/test/test_codecmaps_cn.pyc
file path=usr/lib/python2.6/test/test_codecmaps_hk.py
file path=usr/lib/python2.6/test/test_codecmaps_hk.pyc
file path=usr/lib/python2.6/test/test_codecmaps_jp.py
file path=usr/lib/python2.6/test/test_codecmaps_jp.pyc
file path=usr/lib/python2.6/test/test_codecmaps_kr.py
file path=usr/lib/python2.6/test/test_codecmaps_kr.pyc
file path=usr/lib/python2.6/test/test_codecmaps_tw.py
file path=usr/lib/python2.6/test/test_codecmaps_tw.pyc
file path=usr/lib/python2.6/test/test_codecs.py
file path=usr/lib/python2.6/test/test_codecs.pyc
file path=usr/lib/python2.6/test/test_codeop.py
file path=usr/lib/python2.6/test/test_codeop.pyc
file path=usr/lib/python2.6/test/test_coding.py
file path=usr/lib/python2.6/test/test_coding.pyc
file path=usr/lib/python2.6/test/test_coercion.py
file path=usr/lib/python2.6/test/test_coercion.pyc
file path=usr/lib/python2.6/test/test_collections.py
file path=usr/lib/python2.6/test/test_collections.pyc
file path=usr/lib/python2.6/test/test_colorsys.py
file path=usr/lib/python2.6/test/test_colorsys.pyc
file path=usr/lib/python2.6/test/test_commands.py
file path=usr/lib/python2.6/test/test_commands.pyc
file path=usr/lib/python2.6/test/test_compare.py
file path=usr/lib/python2.6/test/test_compare.pyc
file path=usr/lib/python2.6/test/test_compile.py
file path=usr/lib/python2.6/test/test_compile.pyc
file path=usr/lib/python2.6/test/test_compiler.py
file path=usr/lib/python2.6/test/test_compiler.pyc
file path=usr/lib/python2.6/test/test_complex.py
file path=usr/lib/python2.6/test/test_complex.pyc
file path=usr/lib/python2.6/test/test_complex_args.py
file path=usr/lib/python2.6/test/test_complex_args.pyc
file path=usr/lib/python2.6/test/test_contains.py
file path=usr/lib/python2.6/test/test_contains.pyc
file path=usr/lib/python2.6/test/test_contextlib.py
file path=usr/lib/python2.6/test/test_contextlib.pyc
file path=usr/lib/python2.6/test/test_cookie.py
file path=usr/lib/python2.6/test/test_cookie.pyc
file path=usr/lib/python2.6/test/test_cookielib.py
file path=usr/lib/python2.6/test/test_cookielib.pyc
file path=usr/lib/python2.6/test/test_copy.py
file path=usr/lib/python2.6/test/test_copy.pyc
file path=usr/lib/python2.6/test/test_copy_reg.py
file path=usr/lib/python2.6/test/test_copy_reg.pyc
file path=usr/lib/python2.6/test/test_cpickle.py
file path=usr/lib/python2.6/test/test_cpickle.pyc
file path=usr/lib/python2.6/test/test_cprofile.py
file path=usr/lib/python2.6/test/test_cprofile.pyc
file path=usr/lib/python2.6/test/test_crypt.py
file path=usr/lib/python2.6/test/test_crypt.pyc
file path=usr/lib/python2.6/test/test_csv.py
file path=usr/lib/python2.6/test/test_csv.pyc
file path=usr/lib/python2.6/test/test_ctypes.py
file path=usr/lib/python2.6/test/test_ctypes.pyc
file path=usr/lib/python2.6/test/test_curses.py
file path=usr/lib/python2.6/test/test_curses.pyc
file path=usr/lib/python2.6/test/test_datetime.py
file path=usr/lib/python2.6/test/test_datetime.pyc
file path=usr/lib/python2.6/test/test_dbm.py
file path=usr/lib/python2.6/test/test_dbm.pyc
file path=usr/lib/python2.6/test/test_decimal.py
file path=usr/lib/python2.6/test/test_decimal.pyc
file path=usr/lib/python2.6/test/test_decorators.py
file path=usr/lib/python2.6/test/test_decorators.pyc
file path=usr/lib/python2.6/test/test_defaultdict.py
file path=usr/lib/python2.6/test/test_defaultdict.pyc
file path=usr/lib/python2.6/test/test_deque.py
file path=usr/lib/python2.6/test/test_deque.pyc
file path=usr/lib/python2.6/test/test_descr.py
file path=usr/lib/python2.6/test/test_descr.pyc
file path=usr/lib/python2.6/test/test_descrtut.py
file path=usr/lib/python2.6/test/test_descrtut.pyc
file path=usr/lib/python2.6/test/test_dict.py
file path=usr/lib/python2.6/test/test_dict.pyc
file path=usr/lib/python2.6/test/test_difflib.py
file path=usr/lib/python2.6/test/test_difflib.pyc
file path=usr/lib/python2.6/test/test_difflib_expect.html
file path=usr/lib/python2.6/test/test_dircache.py
file path=usr/lib/python2.6/test/test_dircache.pyc
file path=usr/lib/python2.6/test/test_dis.py
file path=usr/lib/python2.6/test/test_dis.pyc
file path=usr/lib/python2.6/test/test_distutils.py
file path=usr/lib/python2.6/test/test_distutils.pyc
file path=usr/lib/python2.6/test/test_dl.py
file path=usr/lib/python2.6/test/test_dl.pyc
file path=usr/lib/python2.6/test/test_doctest.py
file path=usr/lib/python2.6/test/test_doctest.pyc
file path=usr/lib/python2.6/test/test_doctest.txt
file path=usr/lib/python2.6/test/test_doctest2.py
file path=usr/lib/python2.6/test/test_doctest2.pyc
file path=usr/lib/python2.6/test/test_doctest2.txt
file path=usr/lib/python2.6/test/test_doctest3.txt
file path=usr/lib/python2.6/test/test_doctest4.txt
file path=usr/lib/python2.6/test/test_docxmlrpc.py
file path=usr/lib/python2.6/test/test_docxmlrpc.pyc
file path=usr/lib/python2.6/test/test_dumbdbm.py
file path=usr/lib/python2.6/test/test_dumbdbm.pyc
file path=usr/lib/python2.6/test/test_dummy_thread.py
file path=usr/lib/python2.6/test/test_dummy_thread.pyc
file path=usr/lib/python2.6/test/test_dummy_threading.py
file path=usr/lib/python2.6/test/test_dummy_threading.pyc
file path=usr/lib/python2.6/test/test_email.py
file path=usr/lib/python2.6/test/test_email.pyc
file path=usr/lib/python2.6/test/test_email_codecs.py
file path=usr/lib/python2.6/test/test_email_codecs.pyc
file path=usr/lib/python2.6/test/test_email_renamed.py
file path=usr/lib/python2.6/test/test_email_renamed.pyc
file path=usr/lib/python2.6/test/test_enumerate.py
file path=usr/lib/python2.6/test/test_enumerate.pyc
file path=usr/lib/python2.6/test/test_eof.py
file path=usr/lib/python2.6/test/test_eof.pyc
file path=usr/lib/python2.6/test/test_epoll.py
file path=usr/lib/python2.6/test/test_epoll.pyc
file path=usr/lib/python2.6/test/test_errno.py
file path=usr/lib/python2.6/test/test_errno.pyc
file path=usr/lib/python2.6/test/test_exception_variations.py
file path=usr/lib/python2.6/test/test_exception_variations.pyc
file path=usr/lib/python2.6/test/test_exceptions.py
file path=usr/lib/python2.6/test/test_exceptions.pyc
file path=usr/lib/python2.6/test/test_extcall.py
file path=usr/lib/python2.6/test/test_extcall.pyc
file path=usr/lib/python2.6/test/test_fcntl.py
file path=usr/lib/python2.6/test/test_fcntl.pyc
file path=usr/lib/python2.6/test/test_file.py
file path=usr/lib/python2.6/test/test_file.pyc
file path=usr/lib/python2.6/test/test_filecmp.py
file path=usr/lib/python2.6/test/test_filecmp.pyc
file path=usr/lib/python2.6/test/test_fileinput.py
file path=usr/lib/python2.6/test/test_fileinput.pyc
file path=usr/lib/python2.6/test/test_fileio.py
file path=usr/lib/python2.6/test/test_fileio.pyc
file path=usr/lib/python2.6/test/test_float.py
file path=usr/lib/python2.6/test/test_float.pyc
file path=usr/lib/python2.6/test/test_fnmatch.py
file path=usr/lib/python2.6/test/test_fnmatch.pyc
file path=usr/lib/python2.6/test/test_fork1.py
file path=usr/lib/python2.6/test/test_fork1.pyc
file path=usr/lib/python2.6/test/test_format.py
file path=usr/lib/python2.6/test/test_format.pyc
file path=usr/lib/python2.6/test/test_fpformat.py
file path=usr/lib/python2.6/test/test_fpformat.pyc
file path=usr/lib/python2.6/test/test_fractions.py
file path=usr/lib/python2.6/test/test_fractions.pyc
file path=usr/lib/python2.6/test/test_frozen.py
file path=usr/lib/python2.6/test/test_frozen.pyc
file path=usr/lib/python2.6/test/test_ftplib.py
file path=usr/lib/python2.6/test/test_ftplib.pyc
file path=usr/lib/python2.6/test/test_funcattrs.py
file path=usr/lib/python2.6/test/test_funcattrs.pyc
file path=usr/lib/python2.6/test/test_functools.py
file path=usr/lib/python2.6/test/test_functools.pyc
file path=usr/lib/python2.6/test/test_future.py
file path=usr/lib/python2.6/test/test_future.pyc
file path=usr/lib/python2.6/test/test_future1.py
file path=usr/lib/python2.6/test/test_future1.pyc
file path=usr/lib/python2.6/test/test_future2.py
file path=usr/lib/python2.6/test/test_future2.pyc
file path=usr/lib/python2.6/test/test_future3.py
file path=usr/lib/python2.6/test/test_future3.pyc
file path=usr/lib/python2.6/test/test_future4.py
file path=usr/lib/python2.6/test/test_future4.pyc
file path=usr/lib/python2.6/test/test_future5.py
file path=usr/lib/python2.6/test/test_future5.pyc
file path=usr/lib/python2.6/test/test_future_builtins.py
file path=usr/lib/python2.6/test/test_future_builtins.pyc
file path=usr/lib/python2.6/test/test_gc.py
file path=usr/lib/python2.6/test/test_gc.pyc
file path=usr/lib/python2.6/test/test_gdbm.py
file path=usr/lib/python2.6/test/test_gdbm.pyc
file path=usr/lib/python2.6/test/test_generators.py
file path=usr/lib/python2.6/test/test_generators.pyc
file path=usr/lib/python2.6/test/test_genericpath.py
file path=usr/lib/python2.6/test/test_genericpath.pyc
file path=usr/lib/python2.6/test/test_genexps.py
file path=usr/lib/python2.6/test/test_genexps.pyc
file path=usr/lib/python2.6/test/test_getargs.py
file path=usr/lib/python2.6/test/test_getargs.pyc
file path=usr/lib/python2.6/test/test_getargs2.py
file path=usr/lib/python2.6/test/test_getargs2.pyc
file path=usr/lib/python2.6/test/test_getopt.py
file path=usr/lib/python2.6/test/test_getopt.pyc
file path=usr/lib/python2.6/test/test_gettext.py
file path=usr/lib/python2.6/test/test_gettext.pyc
file path=usr/lib/python2.6/test/test_gl.py
file path=usr/lib/python2.6/test/test_gl.pyc
file path=usr/lib/python2.6/test/test_glob.py
file path=usr/lib/python2.6/test/test_glob.pyc
file path=usr/lib/python2.6/test/test_global.py
file path=usr/lib/python2.6/test/test_global.pyc
file path=usr/lib/python2.6/test/test_grammar.py
file path=usr/lib/python2.6/test/test_grammar.pyc
file path=usr/lib/python2.6/test/test_grp.py
file path=usr/lib/python2.6/test/test_grp.pyc
file path=usr/lib/python2.6/test/test_gzip.py
file path=usr/lib/python2.6/test/test_gzip.pyc
file path=usr/lib/python2.6/test/test_hash.py
file path=usr/lib/python2.6/test/test_hash.pyc
file path=usr/lib/python2.6/test/test_hashlib.py
file path=usr/lib/python2.6/test/test_hashlib.pyc
file path=usr/lib/python2.6/test/test_heapq.py
file path=usr/lib/python2.6/test/test_heapq.pyc
file path=usr/lib/python2.6/test/test_hmac.py
file path=usr/lib/python2.6/test/test_hmac.pyc
file path=usr/lib/python2.6/test/test_hotshot.py
file path=usr/lib/python2.6/test/test_hotshot.pyc
file path=usr/lib/python2.6/test/test_htmllib.py
file path=usr/lib/python2.6/test/test_htmllib.pyc
file path=usr/lib/python2.6/test/test_htmlparser.py
file path=usr/lib/python2.6/test/test_htmlparser.pyc
file path=usr/lib/python2.6/test/test_httplib.py
file path=usr/lib/python2.6/test/test_httplib.pyc
file path=usr/lib/python2.6/test/test_httpservers.py
file path=usr/lib/python2.6/test/test_httpservers.pyc
file path=usr/lib/python2.6/test/test_imageop.py
file path=usr/lib/python2.6/test/test_imageop.pyc
file path=usr/lib/python2.6/test/test_imaplib.py
file path=usr/lib/python2.6/test/test_imaplib.pyc
file path=usr/lib/python2.6/test/test_imgfile.py
file path=usr/lib/python2.6/test/test_imgfile.pyc
file path=usr/lib/python2.6/test/test_imp.py
file path=usr/lib/python2.6/test/test_imp.pyc
file path=usr/lib/python2.6/test/test_import.py
file path=usr/lib/python2.6/test/test_import.pyc
file path=usr/lib/python2.6/test/test_importhooks.py
file path=usr/lib/python2.6/test/test_importhooks.pyc
file path=usr/lib/python2.6/test/test_index.py
file path=usr/lib/python2.6/test/test_index.pyc
file path=usr/lib/python2.6/test/test_inspect.py
file path=usr/lib/python2.6/test/test_inspect.pyc
file path=usr/lib/python2.6/test/test_int.py
file path=usr/lib/python2.6/test/test_int.pyc
file path=usr/lib/python2.6/test/test_int_literal.py
file path=usr/lib/python2.6/test/test_int_literal.pyc
file path=usr/lib/python2.6/test/test_io.py
file path=usr/lib/python2.6/test/test_io.pyc
file path=usr/lib/python2.6/test/test_ioctl.py
file path=usr/lib/python2.6/test/test_ioctl.pyc
file path=usr/lib/python2.6/test/test_isinstance.py
file path=usr/lib/python2.6/test/test_isinstance.pyc
file path=usr/lib/python2.6/test/test_iter.py
file path=usr/lib/python2.6/test/test_iter.pyc
file path=usr/lib/python2.6/test/test_iterlen.py
file path=usr/lib/python2.6/test/test_iterlen.pyc
file path=usr/lib/python2.6/test/test_itertools.py
file path=usr/lib/python2.6/test/test_itertools.pyc
file path=usr/lib/python2.6/test/test_json.py
file path=usr/lib/python2.6/test/test_json.pyc
file path=usr/lib/python2.6/test/test_kqueue.py
file path=usr/lib/python2.6/test/test_kqueue.pyc
file path=usr/lib/python2.6/test/test_largefile.py
file path=usr/lib/python2.6/test/test_largefile.pyc
file path=usr/lib/python2.6/test/test_lib2to3.py
file path=usr/lib/python2.6/test/test_lib2to3.pyc
file path=usr/lib/python2.6/test/test_linecache.py
file path=usr/lib/python2.6/test/test_linecache.pyc
file path=usr/lib/python2.6/test/test_linuxaudiodev.py
file path=usr/lib/python2.6/test/test_linuxaudiodev.pyc
file path=usr/lib/python2.6/test/test_list.py
file path=usr/lib/python2.6/test/test_list.pyc
file path=usr/lib/python2.6/test/test_locale.py
file path=usr/lib/python2.6/test/test_locale.pyc
file path=usr/lib/python2.6/test/test_logging.py
file path=usr/lib/python2.6/test/test_logging.pyc
file path=usr/lib/python2.6/test/test_long.py
file path=usr/lib/python2.6/test/test_long.pyc
file path=usr/lib/python2.6/test/test_long_future.py
file path=usr/lib/python2.6/test/test_long_future.pyc
file path=usr/lib/python2.6/test/test_longexp.py
file path=usr/lib/python2.6/test/test_longexp.pyc
file path=usr/lib/python2.6/test/test_macos.py
file path=usr/lib/python2.6/test/test_macos.pyc
file path=usr/lib/python2.6/test/test_macostools.py
file path=usr/lib/python2.6/test/test_macostools.pyc
file path=usr/lib/python2.6/test/test_macpath.py
file path=usr/lib/python2.6/test/test_macpath.pyc
file path=usr/lib/python2.6/test/test_mailbox.py
file path=usr/lib/python2.6/test/test_mailbox.pyc
file path=usr/lib/python2.6/test/test_marshal.py
file path=usr/lib/python2.6/test/test_marshal.pyc
file path=usr/lib/python2.6/test/test_math.py
file path=usr/lib/python2.6/test/test_math.pyc
file path=usr/lib/python2.6/test/test_md5.py
file path=usr/lib/python2.6/test/test_md5.pyc
file path=usr/lib/python2.6/test/test_memoryio.py
file path=usr/lib/python2.6/test/test_memoryio.pyc
file path=usr/lib/python2.6/test/test_mhlib.py
file path=usr/lib/python2.6/test/test_mhlib.pyc
file path=usr/lib/python2.6/test/test_mimetools.py
file path=usr/lib/python2.6/test/test_mimetools.pyc
file path=usr/lib/python2.6/test/test_mimetypes.py
file path=usr/lib/python2.6/test/test_mimetypes.pyc
file path=usr/lib/python2.6/test/test_minidom.py
file path=usr/lib/python2.6/test/test_minidom.pyc
file path=usr/lib/python2.6/test/test_mmap.py
file path=usr/lib/python2.6/test/test_mmap.pyc
file path=usr/lib/python2.6/test/test_module.py
file path=usr/lib/python2.6/test/test_module.pyc
file path=usr/lib/python2.6/test/test_modulefinder.py
file path=usr/lib/python2.6/test/test_modulefinder.pyc
file path=usr/lib/python2.6/test/test_multibytecodec.py
file path=usr/lib/python2.6/test/test_multibytecodec.pyc
file path=usr/lib/python2.6/test/test_multibytecodec_support.py
file path=usr/lib/python2.6/test/test_multibytecodec_support.pyc
file path=usr/lib/python2.6/test/test_multifile.py
file path=usr/lib/python2.6/test/test_multifile.pyc
file path=usr/lib/python2.6/test/test_multiprocessing.py
file path=usr/lib/python2.6/test/test_multiprocessing.pyc
file path=usr/lib/python2.6/test/test_mutants.py
file path=usr/lib/python2.6/test/test_mutants.pyc
file path=usr/lib/python2.6/test/test_mutex.py
file path=usr/lib/python2.6/test/test_mutex.pyc
file path=usr/lib/python2.6/test/test_netrc.py
file path=usr/lib/python2.6/test/test_netrc.pyc
file path=usr/lib/python2.6/test/test_new.py
file path=usr/lib/python2.6/test/test_new.pyc
file path=usr/lib/python2.6/test/test_nis.py
file path=usr/lib/python2.6/test/test_nis.pyc
file path=usr/lib/python2.6/test/test_normalization.py
file path=usr/lib/python2.6/test/test_normalization.pyc
file path=usr/lib/python2.6/test/test_ntpath.py
file path=usr/lib/python2.6/test/test_ntpath.pyc
file path=usr/lib/python2.6/test/test_old_mailbox.py
file path=usr/lib/python2.6/test/test_old_mailbox.pyc
file path=usr/lib/python2.6/test/test_opcodes.py
file path=usr/lib/python2.6/test/test_opcodes.pyc
file path=usr/lib/python2.6/test/test_openpty.py
file path=usr/lib/python2.6/test/test_openpty.pyc
file path=usr/lib/python2.6/test/test_operator.py
file path=usr/lib/python2.6/test/test_operator.pyc
file path=usr/lib/python2.6/test/test_optparse.py
file path=usr/lib/python2.6/test/test_optparse.pyc
file path=usr/lib/python2.6/test/test_os.py
file path=usr/lib/python2.6/test/test_os.pyc
file path=usr/lib/python2.6/test/test_ossaudiodev.py
file path=usr/lib/python2.6/test/test_ossaudiodev.pyc
file path=usr/lib/python2.6/test/test_parser.py
file path=usr/lib/python2.6/test/test_parser.pyc
file path=usr/lib/python2.6/test/test_peepholer.py
file path=usr/lib/python2.6/test/test_peepholer.pyc
file path=usr/lib/python2.6/test/test_pep247.py
file path=usr/lib/python2.6/test/test_pep247.pyc
file path=usr/lib/python2.6/test/test_pep263.py
file path=usr/lib/python2.6/test/test_pep263.pyc
file path=usr/lib/python2.6/test/test_pep277.py
file path=usr/lib/python2.6/test/test_pep277.pyc
file path=usr/lib/python2.6/test/test_pep292.py
file path=usr/lib/python2.6/test/test_pep292.pyc
file path=usr/lib/python2.6/test/test_pep352.py
file path=usr/lib/python2.6/test/test_pep352.pyc
file path=usr/lib/python2.6/test/test_pickle.py
file path=usr/lib/python2.6/test/test_pickle.pyc
file path=usr/lib/python2.6/test/test_pickletools.py
file path=usr/lib/python2.6/test/test_pickletools.pyc
file path=usr/lib/python2.6/test/test_pipes.py
file path=usr/lib/python2.6/test/test_pipes.pyc
file path=usr/lib/python2.6/test/test_pkg.py
file path=usr/lib/python2.6/test/test_pkg.pyc
file path=usr/lib/python2.6/test/test_pkgimport.py
file path=usr/lib/python2.6/test/test_pkgimport.pyc
file path=usr/lib/python2.6/test/test_pkgutil.py
file path=usr/lib/python2.6/test/test_pkgutil.pyc
file path=usr/lib/python2.6/test/test_platform.py
file path=usr/lib/python2.6/test/test_platform.pyc
file path=usr/lib/python2.6/test/test_plistlib.py
file path=usr/lib/python2.6/test/test_plistlib.pyc
file path=usr/lib/python2.6/test/test_poll.py
file path=usr/lib/python2.6/test/test_poll.pyc
file path=usr/lib/python2.6/test/test_popen.py
file path=usr/lib/python2.6/test/test_popen.pyc
file path=usr/lib/python2.6/test/test_popen2.py
file path=usr/lib/python2.6/test/test_popen2.pyc
file path=usr/lib/python2.6/test/test_poplib.py
file path=usr/lib/python2.6/test/test_poplib.pyc
file path=usr/lib/python2.6/test/test_posix.py
file path=usr/lib/python2.6/test/test_posix.pyc
file path=usr/lib/python2.6/test/test_posixpath.py
file path=usr/lib/python2.6/test/test_posixpath.pyc
file path=usr/lib/python2.6/test/test_pow.py
file path=usr/lib/python2.6/test/test_pow.pyc
file path=usr/lib/python2.6/test/test_pprint.py
file path=usr/lib/python2.6/test/test_pprint.pyc
file path=usr/lib/python2.6/test/test_print.py
file path=usr/lib/python2.6/test/test_print.pyc
file path=usr/lib/python2.6/test/test_profile.py
file path=usr/lib/python2.6/test/test_profile.pyc
file path=usr/lib/python2.6/test/test_profilehooks.py
file path=usr/lib/python2.6/test/test_profilehooks.pyc
file path=usr/lib/python2.6/test/test_property.py
file path=usr/lib/python2.6/test/test_property.pyc
file path=usr/lib/python2.6/test/test_pstats.py
file path=usr/lib/python2.6/test/test_pstats.pyc
file path=usr/lib/python2.6/test/test_pty.py
file path=usr/lib/python2.6/test/test_pty.pyc
file path=usr/lib/python2.6/test/test_pwd.py
file path=usr/lib/python2.6/test/test_pwd.pyc
file path=usr/lib/python2.6/test/test_py3kwarn.py
file path=usr/lib/python2.6/test/test_py3kwarn.pyc
file path=usr/lib/python2.6/test/test_pyclbr.py
file path=usr/lib/python2.6/test/test_pyclbr.pyc
file path=usr/lib/python2.6/test/test_pydoc.py
file path=usr/lib/python2.6/test/test_pydoc.pyc
file path=usr/lib/python2.6/test/test_pyexpat.py
file path=usr/lib/python2.6/test/test_pyexpat.pyc
file path=usr/lib/python2.6/test/test_queue.py
file path=usr/lib/python2.6/test/test_queue.pyc
file path=usr/lib/python2.6/test/test_quopri.py
file path=usr/lib/python2.6/test/test_quopri.pyc
file path=usr/lib/python2.6/test/test_random.py
file path=usr/lib/python2.6/test/test_random.pyc
file path=usr/lib/python2.6/test/test_re.py
file path=usr/lib/python2.6/test/test_re.pyc
file path=usr/lib/python2.6/test/test_repr.py
file path=usr/lib/python2.6/test/test_repr.pyc
file path=usr/lib/python2.6/test/test_resource.py
file path=usr/lib/python2.6/test/test_resource.pyc
file path=usr/lib/python2.6/test/test_rfc822.py
file path=usr/lib/python2.6/test/test_rfc822.pyc
file path=usr/lib/python2.6/test/test_richcmp.py
file path=usr/lib/python2.6/test/test_richcmp.pyc
file path=usr/lib/python2.6/test/test_robotparser.py
file path=usr/lib/python2.6/test/test_robotparser.pyc
file path=usr/lib/python2.6/test/test_runpy.py
file path=usr/lib/python2.6/test/test_runpy.pyc
file path=usr/lib/python2.6/test/test_sax.py
file path=usr/lib/python2.6/test/test_sax.pyc
file path=usr/lib/python2.6/test/test_scope.py
file path=usr/lib/python2.6/test/test_scope.pyc
file path=usr/lib/python2.6/test/test_scriptpackages.py
file path=usr/lib/python2.6/test/test_scriptpackages.pyc
file path=usr/lib/python2.6/test/test_select.py
file path=usr/lib/python2.6/test/test_select.pyc
file path=usr/lib/python2.6/test/test_set.py
file path=usr/lib/python2.6/test/test_set.pyc
file path=usr/lib/python2.6/test/test_sets.py
file path=usr/lib/python2.6/test/test_sets.pyc
file path=usr/lib/python2.6/test/test_sgmllib.py
file path=usr/lib/python2.6/test/test_sgmllib.pyc
file path=usr/lib/python2.6/test/test_sha.py
file path=usr/lib/python2.6/test/test_sha.pyc
file path=usr/lib/python2.6/test/test_shelve.py
file path=usr/lib/python2.6/test/test_shelve.pyc
file path=usr/lib/python2.6/test/test_shlex.py
file path=usr/lib/python2.6/test/test_shlex.pyc
file path=usr/lib/python2.6/test/test_shutil.py
file path=usr/lib/python2.6/test/test_shutil.pyc
file path=usr/lib/python2.6/test/test_signal.py
file path=usr/lib/python2.6/test/test_signal.pyc
file path=usr/lib/python2.6/test/test_site.py
file path=usr/lib/python2.6/test/test_site.pyc
file path=usr/lib/python2.6/test/test_slice.py
file path=usr/lib/python2.6/test/test_slice.pyc
file path=usr/lib/python2.6/test/test_smtplib.py
file path=usr/lib/python2.6/test/test_smtplib.pyc
file path=usr/lib/python2.6/test/test_smtpnet.py
file path=usr/lib/python2.6/test/test_smtpnet.pyc
file path=usr/lib/python2.6/test/test_socket.py
file path=usr/lib/python2.6/test/test_socket.pyc
file path=usr/lib/python2.6/test/test_socketserver.py
file path=usr/lib/python2.6/test/test_socketserver.pyc
file path=usr/lib/python2.6/test/test_softspace.py
file path=usr/lib/python2.6/test/test_softspace.pyc
file path=usr/lib/python2.6/test/test_sort.py
file path=usr/lib/python2.6/test/test_sort.pyc
file path=usr/lib/python2.6/test/test_sqlite.py
file path=usr/lib/python2.6/test/test_sqlite.pyc
file path=usr/lib/python2.6/test/test_ssl.py
file path=usr/lib/python2.6/test/test_ssl.pyc
file path=usr/lib/python2.6/test/test_startfile.py
file path=usr/lib/python2.6/test/test_startfile.pyc
file path=usr/lib/python2.6/test/test_str.py
file path=usr/lib/python2.6/test/test_str.pyc
file path=usr/lib/python2.6/test/test_strftime.py
file path=usr/lib/python2.6/test/test_strftime.pyc
file path=usr/lib/python2.6/test/test_string.py
file path=usr/lib/python2.6/test/test_string.pyc
file path=usr/lib/python2.6/test/test_stringprep.py
file path=usr/lib/python2.6/test/test_stringprep.pyc
file path=usr/lib/python2.6/test/test_strop.py
file path=usr/lib/python2.6/test/test_strop.pyc
file path=usr/lib/python2.6/test/test_strptime.py
file path=usr/lib/python2.6/test/test_strptime.pyc
file path=usr/lib/python2.6/test/test_struct.py
file path=usr/lib/python2.6/test/test_struct.pyc
file path=usr/lib/python2.6/test/test_structmembers.py
file path=usr/lib/python2.6/test/test_structmembers.pyc
file path=usr/lib/python2.6/test/test_structseq.py
file path=usr/lib/python2.6/test/test_structseq.pyc
file path=usr/lib/python2.6/test/test_subprocess.py
file path=usr/lib/python2.6/test/test_subprocess.pyc
file path=usr/lib/python2.6/test/test_sunaudiodev.py
file path=usr/lib/python2.6/test/test_sunaudiodev.pyc
file path=usr/lib/python2.6/test/test_sundry.py
file path=usr/lib/python2.6/test/test_sundry.pyc
file path=usr/lib/python2.6/test/test_support.py
file path=usr/lib/python2.6/test/test_support.pyc
file path=usr/lib/python2.6/test/test_symtable.py
file path=usr/lib/python2.6/test/test_symtable.pyc
file path=usr/lib/python2.6/test/test_syntax.py
file path=usr/lib/python2.6/test/test_syntax.pyc
file path=usr/lib/python2.6/test/test_sys.py
file path=usr/lib/python2.6/test/test_sys.pyc
file path=usr/lib/python2.6/test/test_tarfile.py
file path=usr/lib/python2.6/test/test_tarfile.pyc
file path=usr/lib/python2.6/test/test_tcl.py
file path=usr/lib/python2.6/test/test_tcl.pyc
file path=usr/lib/python2.6/test/test_telnetlib.py
file path=usr/lib/python2.6/test/test_telnetlib.pyc
file path=usr/lib/python2.6/test/test_tempfile.py
file path=usr/lib/python2.6/test/test_tempfile.pyc
file path=usr/lib/python2.6/test/test_textwrap.py
file path=usr/lib/python2.6/test/test_textwrap.pyc
file path=usr/lib/python2.6/test/test_thread.py
file path=usr/lib/python2.6/test/test_thread.pyc
file path=usr/lib/python2.6/test/test_threaded_import.py
file path=usr/lib/python2.6/test/test_threaded_import.pyc
file path=usr/lib/python2.6/test/test_threadedtempfile.py
file path=usr/lib/python2.6/test/test_threadedtempfile.pyc
file path=usr/lib/python2.6/test/test_threading.py
file path=usr/lib/python2.6/test/test_threading.pyc
file path=usr/lib/python2.6/test/test_threading_local.py
file path=usr/lib/python2.6/test/test_threading_local.pyc
file path=usr/lib/python2.6/test/test_threadsignals.py
file path=usr/lib/python2.6/test/test_threadsignals.pyc
file path=usr/lib/python2.6/test/test_time.py
file path=usr/lib/python2.6/test/test_time.pyc
file path=usr/lib/python2.6/test/test_timeout.py
file path=usr/lib/python2.6/test/test_timeout.pyc
file path=usr/lib/python2.6/test/test_tokenize.py
file path=usr/lib/python2.6/test/test_tokenize.pyc
file path=usr/lib/python2.6/test/test_trace.py
file path=usr/lib/python2.6/test/test_trace.pyc
file path=usr/lib/python2.6/test/test_traceback.py
file path=usr/lib/python2.6/test/test_traceback.pyc
file path=usr/lib/python2.6/test/test_transformer.py
file path=usr/lib/python2.6/test/test_transformer.pyc
file path=usr/lib/python2.6/test/test_tuple.py
file path=usr/lib/python2.6/test/test_tuple.pyc
file path=usr/lib/python2.6/test/test_typechecks.py
file path=usr/lib/python2.6/test/test_typechecks.pyc
file path=usr/lib/python2.6/test/test_types.py
file path=usr/lib/python2.6/test/test_types.pyc
file path=usr/lib/python2.6/test/test_ucn.py
file path=usr/lib/python2.6/test/test_ucn.pyc
file path=usr/lib/python2.6/test/test_unary.py
file path=usr/lib/python2.6/test/test_unary.pyc
file path=usr/lib/python2.6/test/test_undocumented_details.py
file path=usr/lib/python2.6/test/test_undocumented_details.pyc
file path=usr/lib/python2.6/test/test_unicode.py
file path=usr/lib/python2.6/test/test_unicode.pyc
file path=usr/lib/python2.6/test/test_unicode_file.py
file path=usr/lib/python2.6/test/test_unicode_file.pyc
file path=usr/lib/python2.6/test/test_unicodedata.py
file path=usr/lib/python2.6/test/test_unicodedata.pyc
file path=usr/lib/python2.6/test/test_unittest.py
file path=usr/lib/python2.6/test/test_unittest.pyc
file path=usr/lib/python2.6/test/test_univnewlines.py
file path=usr/lib/python2.6/test/test_univnewlines.pyc
file path=usr/lib/python2.6/test/test_unpack.py
file path=usr/lib/python2.6/test/test_unpack.pyc
file path=usr/lib/python2.6/test/test_urllib.py
file path=usr/lib/python2.6/test/test_urllib.pyc
file path=usr/lib/python2.6/test/test_urllib2.py
file path=usr/lib/python2.6/test/test_urllib2.pyc
file path=usr/lib/python2.6/test/test_urllib2_localnet.py
file path=usr/lib/python2.6/test/test_urllib2_localnet.pyc
file path=usr/lib/python2.6/test/test_urllib2net.py
file path=usr/lib/python2.6/test/test_urllib2net.pyc
file path=usr/lib/python2.6/test/test_urllibnet.py
file path=usr/lib/python2.6/test/test_urllibnet.pyc
file path=usr/lib/python2.6/test/test_urlparse.py
file path=usr/lib/python2.6/test/test_urlparse.pyc
file path=usr/lib/python2.6/test/test_userdict.py
file path=usr/lib/python2.6/test/test_userdict.pyc
file path=usr/lib/python2.6/test/test_userlist.py
file path=usr/lib/python2.6/test/test_userlist.pyc
file path=usr/lib/python2.6/test/test_userstring.py
file path=usr/lib/python2.6/test/test_userstring.pyc
file path=usr/lib/python2.6/test/test_uu.py
file path=usr/lib/python2.6/test/test_uu.pyc
file path=usr/lib/python2.6/test/test_uuid.py
file path=usr/lib/python2.6/test/test_uuid.pyc
file path=usr/lib/python2.6/test/test_wait3.py
file path=usr/lib/python2.6/test/test_wait3.pyc
file path=usr/lib/python2.6/test/test_wait4.py
file path=usr/lib/python2.6/test/test_wait4.pyc
file path=usr/lib/python2.6/test/test_warnings.py
file path=usr/lib/python2.6/test/test_warnings.pyc
file path=usr/lib/python2.6/test/test_wave.py
file path=usr/lib/python2.6/test/test_wave.pyc
file path=usr/lib/python2.6/test/test_weakref.py
file path=usr/lib/python2.6/test/test_weakref.pyc
file path=usr/lib/python2.6/test/test_whichdb.py
file path=usr/lib/python2.6/test/test_whichdb.pyc
file path=usr/lib/python2.6/test/test_winreg.py
file path=usr/lib/python2.6/test/test_winreg.pyc
file path=usr/lib/python2.6/test/test_winsound.py
file path=usr/lib/python2.6/test/test_winsound.pyc
file path=usr/lib/python2.6/test/test_with.py
file path=usr/lib/python2.6/test/test_with.pyc
file path=usr/lib/python2.6/test/test_wsgiref.py
file path=usr/lib/python2.6/test/test_wsgiref.pyc
file path=usr/lib/python2.6/test/test_xdrlib.py
file path=usr/lib/python2.6/test/test_xdrlib.pyc
file path=usr/lib/python2.6/test/test_xml_etree.py
file path=usr/lib/python2.6/test/test_xml_etree.pyc
file path=usr/lib/python2.6/test/test_xml_etree_c.py
file path=usr/lib/python2.6/test/test_xml_etree_c.pyc
file path=usr/lib/python2.6/test/test_xmllib.py
file path=usr/lib/python2.6/test/test_xmllib.pyc
file path=usr/lib/python2.6/test/test_xmlrpc.py
file path=usr/lib/python2.6/test/test_xmlrpc.pyc
file path=usr/lib/python2.6/test/test_xpickle.py
file path=usr/lib/python2.6/test/test_xpickle.pyc
file path=usr/lib/python2.6/test/test_xrange.py
file path=usr/lib/python2.6/test/test_xrange.pyc
file path=usr/lib/python2.6/test/test_zipfile.py
file path=usr/lib/python2.6/test/test_zipfile.pyc
file path=usr/lib/python2.6/test/test_zipfile64.py
file path=usr/lib/python2.6/test/test_zipfile64.pyc
file path=usr/lib/python2.6/test/test_zipimport.py
file path=usr/lib/python2.6/test/test_zipimport.pyc
file path=usr/lib/python2.6/test/test_zipimport_support.py
file path=usr/lib/python2.6/test/test_zipimport_support.pyc
file path=usr/lib/python2.6/test/test_zlib.py
file path=usr/lib/python2.6/test/test_zlib.pyc
file path=usr/lib/python2.6/test/testall.py
file path=usr/lib/python2.6/test/testall.pyc
file path=usr/lib/python2.6/test/testcodec.py
file path=usr/lib/python2.6/test/testcodec.pyc
file path=usr/lib/python2.6/test/testimg.uue
file path=usr/lib/python2.6/test/testimgr.uue
file path=usr/lib/python2.6/test/testrgb.uue
file path=usr/lib/python2.6/test/testtar.tar
file path=usr/lib/python2.6/test/tf_inherit_check.py
file path=usr/lib/python2.6/test/tf_inherit_check.pyc
file path=usr/lib/python2.6/test/threaded_import_hangers.py
file path=usr/lib/python2.6/test/threaded_import_hangers.pyc
file path=usr/lib/python2.6/test/time_hashlib.py
file path=usr/lib/python2.6/test/time_hashlib.pyc
file path=usr/lib/python2.6/test/tokenize_tests.txt
file path=usr/lib/python2.6/test/ucredtest.py
file path=usr/lib/python2.6/test/ucredtest.pyc
file path=usr/lib/python2.6/test/warning_tests.py
file path=usr/lib/python2.6/test/warning_tests.pyc
file path=usr/lib/python2.6/test/wrongcert.pem
file path=usr/lib/python2.6/test/xmltests.py
file path=usr/lib/python2.6/test/xmltests.pyc
file path=usr/lib/python2.6/test/zipdir.zip
file path=usr/lib/python2.6/textwrap.py
file path=usr/lib/python2.6/textwrap.pyc
file path=usr/lib/python2.6/this.py
file path=usr/lib/python2.6/this.pyc
file path=usr/lib/python2.6/threading.py
file path=usr/lib/python2.6/threading.pyc
file path=usr/lib/python2.6/timeit.py
file path=usr/lib/python2.6/timeit.pyc
file path=usr/lib/python2.6/toaiff.py
file path=usr/lib/python2.6/toaiff.pyc
file path=usr/lib/python2.6/token.py
file path=usr/lib/python2.6/token.pyc
file path=usr/lib/python2.6/tokenize.py
file path=usr/lib/python2.6/tokenize.pyc
file path=usr/lib/python2.6/trace.py
file path=usr/lib/python2.6/trace.pyc
file path=usr/lib/python2.6/traceback.py
file path=usr/lib/python2.6/traceback.pyc
file path=usr/lib/python2.6/tty.py
file path=usr/lib/python2.6/tty.pyc
file path=usr/lib/python2.6/types.py
file path=usr/lib/python2.6/types.pyc
file path=usr/lib/python2.6/unittest.py
file path=usr/lib/python2.6/unittest.pyc
file path=usr/lib/python2.6/urllib.py
file path=usr/lib/python2.6/urllib.pyc
file path=usr/lib/python2.6/urllib2.py
file path=usr/lib/python2.6/urllib2.pyc
file path=usr/lib/python2.6/urlparse.py
file path=usr/lib/python2.6/urlparse.pyc
file path=usr/lib/python2.6/user.py
file path=usr/lib/python2.6/user.pyc
file path=usr/lib/python2.6/uu.py
file path=usr/lib/python2.6/uu.pyc
file path=usr/lib/python2.6/uuid.py
file path=usr/lib/python2.6/uuid.pyc
file path=usr/lib/python2.6/warnings.py
file path=usr/lib/python2.6/warnings.pyc
file path=usr/lib/python2.6/wave.py
file path=usr/lib/python2.6/wave.pyc
file path=usr/lib/python2.6/weakref.py
file path=usr/lib/python2.6/weakref.pyc
file path=usr/lib/python2.6/webbrowser.py
file path=usr/lib/python2.6/webbrowser.pyc
file path=usr/lib/python2.6/whichdb.py
file path=usr/lib/python2.6/whichdb.pyc
file path=usr/lib/python2.6/wsgiref.egg-info
file path=usr/lib/python2.6/wsgiref/__init__.py
file path=usr/lib/python2.6/wsgiref/__init__.pyc
file path=usr/lib/python2.6/wsgiref/handlers.py
file path=usr/lib/python2.6/wsgiref/handlers.pyc
file path=usr/lib/python2.6/wsgiref/headers.py
file path=usr/lib/python2.6/wsgiref/headers.pyc
file path=usr/lib/python2.6/wsgiref/simple_server.py
file path=usr/lib/python2.6/wsgiref/simple_server.pyc
file path=usr/lib/python2.6/wsgiref/util.py
file path=usr/lib/python2.6/wsgiref/util.pyc
file path=usr/lib/python2.6/wsgiref/validate.py
file path=usr/lib/python2.6/wsgiref/validate.pyc
file path=usr/lib/python2.6/xdrlib.py
file path=usr/lib/python2.6/xdrlib.pyc
file path=usr/lib/python2.6/xml/__init__.py
file path=usr/lib/python2.6/xml/__init__.pyc
file path=usr/lib/python2.6/xml/dom/NodeFilter.py
file path=usr/lib/python2.6/xml/dom/NodeFilter.pyc
file path=usr/lib/python2.6/xml/dom/__init__.py
file path=usr/lib/python2.6/xml/dom/__init__.pyc
file path=usr/lib/python2.6/xml/dom/domreg.py
file path=usr/lib/python2.6/xml/dom/domreg.pyc
file path=usr/lib/python2.6/xml/dom/expatbuilder.py
file path=usr/lib/python2.6/xml/dom/expatbuilder.pyc
file path=usr/lib/python2.6/xml/dom/minicompat.py
file path=usr/lib/python2.6/xml/dom/minicompat.pyc
file path=usr/lib/python2.6/xml/dom/minidom.py
file path=usr/lib/python2.6/xml/dom/minidom.pyc
file path=usr/lib/python2.6/xml/dom/pulldom.py
file path=usr/lib/python2.6/xml/dom/pulldom.pyc
file path=usr/lib/python2.6/xml/dom/xmlbuilder.py
file path=usr/lib/python2.6/xml/dom/xmlbuilder.pyc
file path=usr/lib/python2.6/xml/etree/ElementInclude.py
file path=usr/lib/python2.6/xml/etree/ElementInclude.pyc
file path=usr/lib/python2.6/xml/etree/ElementPath.py
file path=usr/lib/python2.6/xml/etree/ElementPath.pyc
file path=usr/lib/python2.6/xml/etree/ElementTree.py
file path=usr/lib/python2.6/xml/etree/ElementTree.pyc
file path=usr/lib/python2.6/xml/etree/__init__.py
file path=usr/lib/python2.6/xml/etree/__init__.pyc
file path=usr/lib/python2.6/xml/etree/cElementTree.py
file path=usr/lib/python2.6/xml/etree/cElementTree.pyc
file path=usr/lib/python2.6/xml/parsers/__init__.py
file path=usr/lib/python2.6/xml/parsers/__init__.pyc
file path=usr/lib/python2.6/xml/parsers/expat.py
file path=usr/lib/python2.6/xml/parsers/expat.pyc
file path=usr/lib/python2.6/xml/sax/__init__.py
file path=usr/lib/python2.6/xml/sax/__init__.pyc
file path=usr/lib/python2.6/xml/sax/_exceptions.py
file path=usr/lib/python2.6/xml/sax/_exceptions.pyc
file path=usr/lib/python2.6/xml/sax/expatreader.py
file path=usr/lib/python2.6/xml/sax/expatreader.pyc
file path=usr/lib/python2.6/xml/sax/handler.py
file path=usr/lib/python2.6/xml/sax/handler.pyc
file path=usr/lib/python2.6/xml/sax/saxutils.py
file path=usr/lib/python2.6/xml/sax/saxutils.pyc
file path=usr/lib/python2.6/xml/sax/xmlreader.py
file path=usr/lib/python2.6/xml/sax/xmlreader.pyc
file path=usr/lib/python2.6/xmllib.py
file path=usr/lib/python2.6/xmllib.pyc
file path=usr/lib/python2.6/xmlrpclib.py
file path=usr/lib/python2.6/xmlrpclib.pyc
file path=usr/lib/python2.6/zipfile.py
file path=usr/lib/python2.6/zipfile.pyc
file path=usr/lib/python2.6/lib-dynload/64/_bisect.so
file path=usr/lib/python2.6/lib-dynload/64/_bytesio.so
file path=usr/lib/python2.6/lib-dynload/64/_codecs_cn.so
file path=usr/lib/python2.6/lib-dynload/64/_codecs_hk.so
file path=usr/lib/python2.6/lib-dynload/64/_codecs_iso2022.so
file path=usr/lib/python2.6/lib-dynload/64/_codecs_jp.so
file path=usr/lib/python2.6/lib-dynload/64/_codecs_kr.so
file path=usr/lib/python2.6/lib-dynload/64/_codecs_tw.so
file path=usr/lib/python2.6/lib-dynload/64/_collections.so
file path=usr/lib/python2.6/lib-dynload/64/_csv.so
file path=usr/lib/python2.6/lib-dynload/64/_ctypes.so
file path=usr/lib/python2.6/lib-dynload/64/_ctypes_test.so
file path=usr/lib/python2.6/lib-dynload/64/_curses.so
file path=usr/lib/python2.6/lib-dynload/64/_curses_panel.so
file path=usr/lib/python2.6/lib-dynload/64/_elementtree.so
file path=usr/lib/python2.6/lib-dynload/64/_fileio.so
file path=usr/lib/python2.6/lib-dynload/64/_functools.so
file path=usr/lib/python2.6/lib-dynload/64/_hashlib.so
file path=usr/lib/python2.6/lib-dynload/64/_heapq.so
file path=usr/lib/python2.6/lib-dynload/64/_hotshot.so
file path=usr/lib/python2.6/lib-dynload/64/_json.so
file path=usr/lib/python2.6/lib-dynload/64/_locale.so
file path=usr/lib/python2.6/lib-dynload/64/_lsprof.so
file path=usr/lib/python2.6/lib-dynload/64/_multibytecodec.so
file path=usr/lib/python2.6/lib-dynload/64/_multiprocessing.so
file path=usr/lib/python2.6/lib-dynload/64/_random.so
file path=usr/lib/python2.6/lib-dynload/64/_socket.so
file path=usr/lib/python2.6/lib-dynload/64/_sqlite3.so
file path=usr/lib/python2.6/lib-dynload/64/_ssl.so
file path=usr/lib/python2.6/lib-dynload/64/_struct.so
file path=usr/lib/python2.6/lib-dynload/64/_testcapi.so
file path=usr/lib/python2.6/lib-dynload/64/_tkinter.so
file path=usr/lib/python2.6/lib-dynload/64/_weakref.so
file path=usr/lib/python2.6/lib-dynload/64/array.so
file path=usr/lib/python2.6/lib-dynload/64/audioop.so
file path=usr/lib/python2.6/lib-dynload/64/binascii.so
file path=usr/lib/python2.6/lib-dynload/64/bz2.so
file path=usr/lib/python2.6/lib-dynload/64/cPickle.so
file path=usr/lib/python2.6/lib-dynload/64/cStringIO.so
file path=usr/lib/python2.6/lib-dynload/64/cmath.so
file path=usr/lib/python2.6/lib-dynload/64/crypt.so
file path=usr/lib/python2.6/lib-dynload/64/datetime.so
file path=usr/lib/python2.6/lib-dynload/64/dbm.so
file path=usr/lib/python2.6/lib-dynload/64/dlpi.so
file path=usr/lib/python2.6/lib-dynload/64/fcntl.so
file path=usr/lib/python2.6/lib-dynload/64/future_builtins.so
file path=usr/lib/python2.6/lib-dynload/64/gdbm.so
file path=usr/lib/python2.6/lib-dynload/64/grp.so
file path=usr/lib/python2.6/lib-dynload/64/itertools.so
file path=usr/lib/python2.6/lib-dynload/64/math.so
file path=usr/lib/python2.6/lib-dynload/64/mmap.so
file path=usr/lib/python2.6/lib-dynload/64/nis.so
file path=usr/lib/python2.6/lib-dynload/64/operator.so
file path=usr/lib/python2.6/lib-dynload/64/parser.so
file path=usr/lib/python2.6/lib-dynload/64/privileges.so
file path=usr/lib/python2.6/lib-dynload/64/pyexpat.so
file path=usr/lib/python2.6/lib-dynload/64/rbac.so
file path=usr/lib/python2.6/lib-dynload/64/readline.so
file path=usr/lib/python2.6/lib-dynload/64/resource.so
file path=usr/lib/python2.6/lib-dynload/64/select.so
file path=usr/lib/python2.6/lib-dynload/64/spwd.so
file path=usr/lib/python2.6/lib-dynload/64/strop.so
file path=usr/lib/python2.6/lib-dynload/64/sunaudiodev.so
file path=usr/lib/python2.6/lib-dynload/64/syslog.so
file path=usr/lib/python2.6/lib-dynload/64/termios.so
file path=usr/lib/python2.6/lib-dynload/64/time.so
file path=usr/lib/python2.6/lib-dynload/64/ucred.so
file path=usr/lib/python2.6/lib-dynload/64/unicodedata.so
file path=usr/lib/python2.6/lib-dynload/64/zlib.so
file usr/share/man/man1/python.1 path=usr/share/man/man1/python2.6.1
link path=usr/bin/python-config target=python2.6-config
link path=usr/lib/$(MACH64)/libpython2.6.so target=libpython2.6.so.1.0
link path=usr/lib/libpython2.6.so target=libpython2.6.so.1.0
license python26.license license="PSFv2"
legacy pkg=SUNWPython26 \
    desc="The Python interpreter, libraries and utilities" \
    name="The Python interpreter, libraries and utilities" \
    category="GNOME2,application,JDS4" \
    vendor=Python.org
legacy pkg=SUNWPython26-devel \
    desc="The Python interpreter, libraries and utilities - development files" \
    name="The Python interpreter, libraries and utilities - development files" \
    category="GNOME2,application,JDS4" \
    vendor=Python.org
# keep this until dependency generation is fixed
depend fmri=compress/bzip2 type=require
depend fmri=database/sqlite-3 type=require
depend fmri=library/database/gdbm type=require
#depend fmri=library/libffi type=require
depend fmri=library/ncurses type=require
depend fmri=library/readline type=require
depend fmri=library/security/openssl type=require
depend fmri=library/zlib type=require
depend fmri=runtime/tcl-8 type=require
depend fmri=runtime/tk-8 type=require
depend fmri=SUNWcs type=require
depend fmri=system/library type=require
depend fmri=system/library/math type=require
depend fmri=x11/compatibility/links-xorg type=require
depend fmri=x11/library/libx11 type=require
components/python/python26/python26.license
New file
@@ -0,0 +1,274 @@
A. HISTORY OF THE SOFTWARE
==========================
Python was created in the early 1990s by Guido van Rossum at Stichting
Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands
as a successor of a language called ABC.  Guido remains Python's
principal author, although it includes many contributions from others.
In 1995, Guido continued his work on Python at the Corporation for
National Research Initiatives (CNRI, see http://www.cnri.reston.va.us)
in Reston, Virginia where he released several versions of the
software.
In May 2000, Guido and the Python core development team moved to
BeOpen.com to form the BeOpen PythonLabs team.  In October of the same
year, the PythonLabs team moved to Digital Creations (now Zope
Corporation, see http://www.zope.com).  In 2001, the Python Software
Foundation (PSF, see http://www.python.org/psf/) was formed, a
non-profit organization created specifically to own Python-related
Intellectual Property.  Zope Corporation is a sponsoring member of
the PSF.
All Python releases are Open Source (see http://www.opensource.org for
the Open Source Definition).  Historically, most, but not all, Python
releases have also been GPL-compatible; the table below summarizes
the various releases.
    Release         Derived     Year        Owner       GPL-
                    from                                compatible? (1)
    0.9.0 thru 1.2              1991-1995   CWI         yes
    1.3 thru 1.5.2  1.2         1995-1999   CNRI        yes
    1.6             1.5.2       2000        CNRI        no
    2.0             1.6         2000        BeOpen.com  no
    1.6.1           1.6         2001        CNRI        yes (2)
    2.1             2.0+1.6.1   2001        PSF         no
    2.0.1           2.0+1.6.1   2001        PSF         yes
    2.1.1           2.1+2.0.1   2001        PSF         yes
    2.2             2.1.1       2001        PSF         yes
    2.1.2           2.1.1       2002        PSF         yes
    2.1.3           2.1.2       2002        PSF         yes
    2.2.1           2.2         2002        PSF         yes
    2.2.2           2.2.1       2002        PSF         yes
    2.2.3           2.2.2       2003        PSF         yes
    2.3             2.2.2       2002-2003   PSF         yes
    2.3.1           2.3         2002-2003   PSF         yes
    2.3.2           2.3.1       2002-2003   PSF         yes
    2.3.3           2.3.2       2002-2003   PSF         yes
    2.3.4           2.3.3       2004        PSF         yes
    2.3.5           2.3.4       2005        PSF         yes
    2.4             2.3         2004        PSF         yes
    2.4.1           2.4         2005        PSF         yes
    2.4.2           2.4.1       2005        PSF         yes
    2.4.3           2.4.2       2006        PSF         yes
    2.4.4           2.4.3       2006        PSF         yes
    2.5             2.4         2006        PSF         yes
    2.5.1           2.5         2007        PSF         yes
    2.5.2           2.5.1       2008        PSF         yes
    2.5.3           2.5.2       2008        PSF         yes
    2.6             2.5         2008        PSF         yes
    2.6.1           2.6         2008        PSF         yes
Footnotes:
(1) GPL-compatible doesn't mean that we're distributing Python under
    the GPL.  All Python licenses, unlike the GPL, let you distribute
    a modified version without making your changes open source.  The
    GPL-compatible licenses make it possible to combine Python with
    other software that is released under the GPL; the others don't.
(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
    because its license has a choice of law clause.  According to
    CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
    is "not incompatible" with the GPL.
Thanks to the many outside volunteers who have worked under Guido's
direction to make these releases possible.
B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
===============================================================
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
--------------------------------------------
1. This LICENSE AGREEMENT is between the Python Software Foundation
("PSF"), and the Individual or Organization ("Licensee") accessing and
otherwise using this software ("Python") in source or binary form and
its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python alone or in any derivative version,
provided, however, that PSF's License Agreement and PSF's notice of copyright,
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Python
Software Foundation; All Rights Reserved" are retained in Python alone or in any
derivative version prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python.
4. PSF is making Python available to Licensee on an "AS IS"
basis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. Nothing in this License Agreement shall be deemed to create any
relationship of agency, partnership, or joint venture between PSF and
Licensee.  This License Agreement does not grant permission to use PSF
trademarks or trade name in a trademark sense to endorse or promote
products or services of Licensee, or any third party.
8. By copying, installing or otherwise using Python, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
-------------------------------------------
BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
Individual or Organization ("Licensee") accessing and otherwise using
this software in source or binary form and its associated
documentation ("the Software").
2. Subject to the terms and conditions of this BeOpen Python License
Agreement, BeOpen hereby grants Licensee a non-exclusive,
royalty-free, world-wide license to reproduce, analyze, test, perform
and/or display publicly, prepare derivative works, distribute, and
otherwise use the Software alone or in any derivative version,
provided, however, that the BeOpen Python License is retained in the
Software, alone or in any derivative version prepared by Licensee.
3. BeOpen is making the Software available to Licensee on an "AS IS"
basis.  BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
5. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
6. This License Agreement shall be governed by and interpreted in all
respects by the law of the State of California, excluding conflict of
law provisions.  Nothing in this License Agreement shall be deemed to
create any relationship of agency, partnership, or joint venture
between BeOpen and Licensee.  This License Agreement does not grant
permission to use BeOpen trademarks or trade names in a trademark
sense to endorse or promote products or services of Licensee, or any
third party.  As an exception, the "BeOpen Python" logos available at
http://www.pythonlabs.com/logos.html may be used according to the
permissions granted on that web page.
7. By copying, installing or otherwise using the software, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
---------------------------------------
1. This LICENSE AGREEMENT is between the Corporation for National
Research Initiatives, having an office at 1895 Preston White Drive,
Reston, VA 20191 ("CNRI"), and the Individual or Organization
("Licensee") accessing and otherwise using Python 1.6.1 software in
source or binary form and its associated documentation.
2. Subject to the terms and conditions of this License Agreement, CNRI
hereby grants Licensee a nonexclusive, royalty-free, world-wide
license to reproduce, analyze, test, perform and/or display publicly,
prepare derivative works, distribute, and otherwise use Python 1.6.1
alone or in any derivative version, provided, however, that CNRI's
License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
1995-2001 Corporation for National Research Initiatives; All Rights
Reserved" are retained in Python 1.6.1 alone or in any derivative
version prepared by Licensee.  Alternately, in lieu of CNRI's License
Agreement, Licensee may substitute the following text (omitting the
quotes): "Python 1.6.1 is made available subject to the terms and
conditions in CNRI's License Agreement.  This Agreement together with
Python 1.6.1 may be located on the Internet using the following
unique, persistent identifier (known as a handle): 1895.22/1013.  This
Agreement may also be obtained from a proxy server on the Internet
using the following URL: http://hdl.handle.net/1895.22/1013".
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python 1.6.1 or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python 1.6.1.
4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
basis.  CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. This License Agreement shall be governed by the federal
intellectual property law of the United States, including without
limitation the federal copyright law, and, to the extent such
U.S. federal law does not apply, by the law of the Commonwealth of
Virginia, excluding Virginia's conflict of law provisions.
Notwithstanding the foregoing, with regard to derivative works based
on Python 1.6.1 that incorporate non-separable material that was
previously distributed under the GNU General Public License (GPL), the
law of the Commonwealth of Virginia shall govern this License
Agreement only as to issues arising under or with respect to
Paragraphs 4, 5, and 7 of this License Agreement.  Nothing in this
License Agreement shall be deemed to create any relationship of
agency, partnership, or joint venture between CNRI and Licensee.  This
License Agreement does not grant permission to use CNRI trademarks or
trade name in a trademark sense to endorse or promote products or
services of Licensee, or any third party.
8. By clicking on the "ACCEPT" button where indicated, or by copying,
installing or otherwise using Python 1.6.1, Licensee agrees to be
bound by the terms and conditions of this License Agreement.
        ACCEPT
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
--------------------------------------------------
Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
The Netherlands.  All rights reserved.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Stichting Mathematisch
Centrum or CWI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
components/tcsh/Makefile
@@ -45,7 +45,7 @@
COMPONENT_POST_BUILD_ACTION = \
    (cd $(@D)/nls ; $(MAKE) all)
CFLAGS += -D_FILE_OFFSET_BITS=64
CFLAGS +=    $(CPP_LARGEFILES)
LOCALEDIR=$(PROTO_DIR)/$(CONFIGURE_LOCALEDIR)
components/zsh/Makefile
@@ -37,10 +37,8 @@
include ../../make-rules/configure.mk
include ../../make-rules/ips.mk
LFS_CFLAGS:sh = getconf LFS_CFLAGS
CONFIGURE_OPTIONS += -n
CONFIGURE_OPTIONS += --enable-cppflags="$(LFS_CFLAGS)"
CONFIGURE_OPTIONS += --enable-cppflags="$(CPP_LARGEFILES)"
CONFIGURE_OPTIONS += --enable-dynamic
CONFIGURE_OPTIONS += --enable-etcdir=/etc
CONFIGURE_OPTIONS += --enable-function-subdirs
make-rules/ips.mk
@@ -75,6 +75,8 @@
PKG_OPTIONS +=        $(PKG_MACROS:%=-D %)
PKG_PROTO_DIRS += $(PROTO_DIR) $(@D) $(COMPONENT_DIR)
MANIFEST_BASE =        $(BUILD_DIR)/manifest-$(MACH)
CANONICAL_MANIFESTS =    $(wildcard *.p5m)
@@ -117,8 +119,9 @@
        sed -e '/^$$/d' -e '/^#.*$$/d' | uniq >$@
# generate dependencies
PKGDEPEND_GENERATE_OPTIONS = -m $(PKG_PROTO_DIRS:%=-d %)
$(MANIFEST_BASE)-%.depend:    $(MANIFEST_BASE)-%.mogrified
    $(PKGDEPEND) generate -m $< $(PROTO_DIR) >$@
    $(PKGDEPEND) generate $(PKGDEPEND_GENERATE_OPTIONS) $< >$@
# resolve dependencies, prepend the mogrified manifest, less the unresolved
# dependencies to the result.
@@ -137,9 +140,10 @@
    $(PKGFMT) <$< >$@
# published
PKGSEND_PUBLISH_OPTIONS = -s $(PKG_REPO) publish --fmri-in-manifest
PKGSEND_PUBLISH_OPTIONS += $(PKG_PROTO_DIRS:%=-d %)
$(MANIFEST_BASE)-%.published:    $(MANIFEST_BASE)-%.linted
    $(PKGSEND) -s $(PKG_REPO) publish --fmri-in-manifest \
        -d $(PROTO_DIR) -d $(@D) -d . $<
    $(PKGSEND) $(PKGSEND_PUBLISH_OPTIONS) $<
    $(PKGFMT) <$< >$@
$(BUILD_DIR)/.published:    $(PUBLISHED)
make-rules/setup.py.mk
@@ -35,14 +35,16 @@
INSTALL_32 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH32)-%/.installed)
INSTALL_64 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.installed)
PYTHON_ENV =    CC="$(CC)"
PYTHON_ENV +=    CFLAGS="$(CFLAGS)"
# build the configured source
$(BUILD_DIR)/%/.built:    $(SOURCE_DIR)/.prep
    $(RM) -r $(@D) ; $(MKDIR) $(@D)
    $(COMPONENT_PRE_BUILD_ACTION)
    (cd $(SOURCE_DIR) ; $(ENV) $(PYTHON_ENV) \
        $(PYTHON.$(BITS)) ./setup.py build \
            --build-temp $(@D:$(BUILD_DIR)/%=%) \
            $(COMPONENT_INSTALL_ARGS))
            --build-temp $(@D:$(BUILD_DIR)/%=%))
    $(COMPONENT_POST_BUILD_ACTION)
    $(TOUCH) $@
@@ -62,3 +64,5 @@
    $(COMPONENT_POST_INSTALL_ACTION)
    $(TOUCH) $@
clean::
    $(RM) -r $(SOURCE_DIR) $(BUILD_DIR)
make-rules/shared-macros.mk
@@ -135,6 +135,10 @@
INSTALL_64 =        $(BUILD_DIR_64)/.installed
INSTALL_32_and_64 =    $(INSTALL_32) $(INSTALL_64)
TEST_32 =        $(BUILD_DIR_32)/.tested
TEST_64 =        $(BUILD_DIR_64)/.tested
TEST_32_and_64 =    $(TEST_32) $(TEST_64)
# BUILD_TOOLS is the root of all tools not normally installed on the system.
BUILD_TOOLS =    /ws/onnv-tools
@@ -143,11 +147,11 @@
GCC_ROOT =    /usr/gnu
CC.studio.32 =    $(SPRO_VROOT)/bin/cc -m32
CCC.studio.32 =    $(SPRO_VROOT)/bin/CC -m32
CC.studio.32 =    $(SPRO_VROOT)/bin/cc
CCC.studio.32 =    $(SPRO_VROOT)/bin/CC
CC.studio.64 =    $(SPRO_VROOT)/bin/cc -m64
CCC.studio.64 =    $(SPRO_VROOT)/bin/CC -m64
CC.studio.64 =    $(SPRO_VROOT)/bin/cc
CCC.studio.64 =    $(SPRO_VROOT)/bin/CC
CC.gcc.32 =    $(GCC_ROOT)/bin/cc -m32
CCC.gcc.32 =    $(GCC_ROOT)/bin/CC -m32
@@ -174,7 +178,8 @@
GMAKE =        /usr/gnu/bin/make
GPATCH =    /usr/gnu/bin/patch
PATCH_LEVEL =    1
GPATCH_FLAGS =    -p$(PATCH_LEVEL) -b
GPATCH_BACKUP =    --backup --version-control=numbered
GPATCH_FLAGS =    -p$(PATCH_LEVEL) $(GPATCH_BACKUP)
PKGSEND =    /usr/bin/pkgsend
PKGLINT =    /usr/bin/pkglint
@@ -191,82 +196,195 @@
INS.dir=        $(INSTALL) -d $@
INS.file=       $(INSTALL) -m 444 $< $(@D)
# C compiler mode. Future compilers may change the default on us,
# so force transition mode globally. Lower level makefiles can
# override this by setting CCMODE.
#
CCMODE=        -Xa
CCMODE64=    -Xa
# C preprocessor flag sets to ease feature selection.  Add the required
# feature to your Makefile with CPPFLAGS += $(FEATURE_MACRO) and add to
# the component build with CONFIGURE_OPTIONS += CPPFLAGS="$(CPPFLAGS)" or
# similiar.
#
# compiler '-xarch' flag. This is here to centralize it and make it
# overridable for testing.
sparc_XARCH=    $(CCBITS32) -xarch=sparc
sparcv9_XARCH=  $(CCBITS64) -xcode=abs64
i386_XARCH=     $(CCBITS32) -xchip=pentium
amd64_XARCH=    $(CCBITS64) -xarch=generic -Ui386 -U__i386
# Enables visibility of some c99 math functions that aren't visible by default.
# What other side-effects are there?
CPP_C99_EXTENDED_MATH =    -D_STDC_99
# allow zero-sized struct/union declarations and
# void functions with return statements
FEATURES_EXTENSIONS=    -features=extensions
# Enables large file support for components that have no other means of doing
# so.  Use CPP_LARGEFILES and not the .32/.64 variety directly
CPP_LARGEFILES.32 =    $(shell getconf LFS_CFLAGS)
CPP_LARGEFILES.64 =    $(shell getconf LFS64_CFLAGS)
CPP_LARGEFILES =        $(CPP_LARGEFILES.$(BITS))
# disable the incremental linker
ILDOFF=         -xildoff
# C99 mode
C99_ENABLE=     -xc99=all
C99_DISABLE=    -xc99=none
C99MODE=        $(C99_ENABLE)
C99LMODE=       $(C99MODE:-xc99%=-Xc99%)
# Enables some #pragma redefine_extname to POSIX-compliant Standard C Library
# functions. Also avoids the component's #define _POSIX_C_SOURCE to some value
# we currently do not support.
CPP_POSIX =    -D_POSIX_C_SOURCE=200112L -D_POSIX_PTHREAD_SEMANTICS
# XPG6 mode.  This option enables XPG6 conformance, plus extensions.
# Amongst other things, this option will cause system calls like
# popen (3C) and system (3C) to invoke the standards-conforming
# shell, /usr/xpg4/bin/sh, instead of /usr/bin/sh.
XPG6MODE=    $(C99MODE) -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1
# shell, /usr/xpg4/bin/sh, instead of /usr/bin/sh.  Add studio_XPG6MODE to
# CFLAGS instead of using this directly
CPP_XPG6MODE=    -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1 -D_XPG6
#
# Studio C compiler flag sets to ease feature selection.  Add the required
# feature to your Makefile with CFLAGS += $(FEATURE_MACRO) and add to the
# component build with CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar.
#
# Generate 32/64 bit objects
CC_BITS =    -m$(BITS)
# Code generation instruction set and optimization 'hints'.  Use studio_XBITS
# and not the .arch.bits variety directly.
studio_XBITS.sparc.32 =    -xtarget=ultra2 -xarch=sparcvis -xchip=ultra2
studio_XBITS.sparc.64 =    -xtarget=ultra2 -xarch=sparcvis -xchip=ultra2
studio_XBITS.i386.32 =    -xarch=pentium
studio_XBITS.i386.64 =    -xarch=generic64 -Ui386 -U__i386
studio_XBITS = $(studio_XBITS.$(ARCH).$(BITS))
# Turn on recognition of supported C99 language features and enable the 1999 C
# standard library semantics of routines that appear in    both the 1990 and
# 1999 C standard. To use set studio_C99MODE=$(studio_99_ENABLE) in your
# component Makefile.
studio_C99_ENABLE =        -xc99=all
# Turn off recognition of C99 language features, and do not enable the 1999 C
# standard library semantics of routines that appeared in both the 1990    and
# 1999 C standard.  To use set studio_C99MODE=$(studio_99_DISABLE) in your
# component Makefile.
studio_C99_DISABLE =    -xc99=none
# Use the compiler default 'xc99=all,no_lib'
studio_C99MODE =
# Allow zero-sized struct/union declarations and void functions with return
# statements.
studio_FEATURES_EXTENSIONS =    -features=extensions
# Control the Studio optimization level.
studio_OPT.sparc.32 =    -x04
studio_OPT.sparc.64 =    -x04
studio_OPT.i386.32 =    -x04
studio_OPT.i386.64 =    -x04
studio_OPT =        $(studio_OPT.$(ARCH).$(BITS))
# Studio PIC code generation.  Use CC_PIC instead to select PIC code generation.
studio_PIC =     -KPIC -DPIC
# The Sun Studio 11 compiler has changed the behaviour of integer
# wrap arounds and so a flag is needed to use the legacy behaviour
# (without this flag panics/hangs could be exposed within the source).
# This is used through studio_IROPTS, not the 'sparc' variety.
studio_IROPTS.sparc =    -W2,-xwrap_int
studio_IROPTS =        $(studio_IROPTS.$(ARCH))
# Control register usage for generated code.  SPARC ABI requires system
# libraries not to use application registers.  x86 requires 'no%frameptr' at
# x04 or higher.
studio_XREGS.sparc =    -xregs=no%appl,float
studio_XREGS.i386 =    -xregs=no%frameptr
studio_XREGS =        $(studio_XREGS.$(ARCH))
# See CPP_XPG6MODE comment above.
studio_XPG6MODE =    $(studio_C99MODE) $(CPP_XPG6MODE)
XPG6MODE =        $(studio_XPG6MODE)
# Default Studio C compiler flags.  Add the required feature to your Makefile
# with CFLAGS += $(FEATURE_MACRO) and add to the component build with
# CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar.  In most cases, it
# should not be necessary to add CFLAGS to any environment other than the
# configure environment.
CFLAGS.studio +=    $(studio_OPT) $(studio_XBITS) $(studio_XREGS) \
            $(studio_IROPTS) $(studio_C99MODE)
#
sparc_IROPTFLAG        = -W2,-xwrap_int
sparcv9_IROPTFLAG    = -W2,-xwrap_int
i386_IROPTFLAG        =
amd64_IROPTFLAG        =
IROPTFLAG        = $($(MACH)_IROPTFLAG)
IROPTFLAG64        = $($(MACH64)_IROPTFLAG)
# GNU C compiler flag sets to ease feature selection.  Add the required
# feature to your Makefile with CFLAGS += $(FEATURE_MACRO) and add to the
# component build with CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar.
#
sparc_CFLAGS=    $(sparc_XARCH)
sparcv9_CFLAGS=    $(sparcv9_XARCH) -dalign $(CCVERBOSE)
i386_CFLAGS=    $(i386_XARCH)
amd64_CFLAGS=    $(amd64_XARCH)
# GCC Compiler optimization flag
gcc_OPT =    -O3
sparc_COPTFLAG=        -xO3
sparcv9_COPTFLAG=    -xO3
i386_COPTFLAG=        -xO3
amd64_COPTFLAG=        -xO3
COPTFLAG= $($(MACH)_COPTFLAG)
COPTFLAG64= $($(MACH64)_COPTFLAG)
# GCC PIC code generation.  Use CC_PIC instead to select PIC code generation.
gcc_PIC =    -fPIC -DPIC
sparc_XREGSFLAG        = -xregs=no%appl
sparcv9_XREGSFLAG    = -xregs=no%appl
i386_XREGSFLAG        =
amd64_XREGSFLAG        =
XREGSFLAG        = $($(MACH)_XREGSFLAG)
XREGSFLAG64        = $($(MACH64)_XREGSFLAG)
# Generic macro for PIC code generation.  Use this macro instead of the
# compiler specific variant.
CC_PIC =    $($(COMPILER)_PIC)
CFLAGS=  \
    $(COPTFLAG) $($(MACH)_CFLAGS) $(CCMODE) \
    $(ILDOFF) $(C99MODE) $(IROPTFLAG)
CFLAGS64= \
    $(COPTFLAG64) $($(MACH64)_CFLAGS) $(CCMODE64) \
    $(ILDOFF) $(C99MODE) $(IROPTFLAG64)
# Default GNU C compiler flags.  Add the required feature to your Makefile
# with CFLAGS += $(FEATURE_MACRO) and add to the component build with
# CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar.  In most cases, it
# should not be necessary to add CFLAGS to any environment other than the
# configure environment.
CFLAGS.gcc +=    $(gcc_OPT)
# build with a non-executable stack by default.
# override this if necessary
LD_MAP_NOEXSTK=-M /usr/lib/ld/map.noexstk
LD_OPTIONS+= $(LD_MAP_NOEXSTK)
# Build 32 or 64 bit objects.
CFLAGS +=    $(CC_BITS)
# Add compiler specific 'default' features
CFLAGS +=    $(CFLAGS.$(COMPILER))
#
# Solaris linker flag sets to ease feature selection.  Add the required
# feature to your Makefile with LDFLAGS += $(FEATURE_MACRO) and add to the
# component build with CONFIGURE_OPTIONS += LDFLAGS="$(LDFLAGS)" or similiar.
#
# Reduce the symbol table size, effectively conflicting with -g.  We should
# get linker guidance here.
LD_Z_REDLOCSYM =    -z redlocsym
# Cause the linker to rescan archive libraries and resolve remaining unresolved
# symbols recursively until all symbols are resolved.  Components should be
# linking in the libraries they need, in the required order.  This should
# only be required if the component's native build is horribly broken.
LD_Z_RESCAN_NOW =    -z rescan-now
LD_Z_TEXT =        -z direct
# make sure all symbols are defined.
LD_Z_DEFS =        -z defs
# use direct binding
LD_B_DIRECT =        -Bdirect
#
# More Solaris linker flags that we want to be sure that everyone gets.  This
# is automatically added to the calling environment during the 'build' and
# 'install' phases of the component build.  Each individual feature can be
# turned off by adding FEATURE_MACRO= to the component Makefile.
#
# Create a non-executable stack when linking.
LD_MAP_NOEXSTK =    -M /usr/lib/ld/map.noexstk
# Create a non-executable bss segment when linking.
LD_MAP_NOEXBSS =    -M /usr/lib/ld/map.noexbss
# Create a non-executable data segment when linking.  Due to PLT needs, the
# data segment must be executable on sparc, but the bss does not.
# see mapfile comments for more information
LD_MAP_NOEXDATA.i386 =    -M /usr/lib/ld/map.noexdata
LD_MAP_NOEXDATA.sparc =    $(LD_MAP_NOEXBSS)
# Page alignment
LD_MAP_PAGEALIGN =    -M /usr/lib/ld/map.pagealign
# Linker options to add when only building libraries
LD_OPTIONS_SO +=    $(LD_Z_TEXT) $(LD_Z_DEFS)
# Default linker options that everyone should get.  Do not add additional
# libraries to this macro, as it will apply to everything linked during the
# component build.
LD_OPTIONS +=    $(LD_MAP_NOEXSTK) $(LD_MAP_NOEXDATA.$(ARCH)) \
        $(LD_MAP_PAGEALIGN) $(LD_B_DIRECT)
# Environment variables and arguments passed into the build and install
# environment(s).  These are the initial settings.
tools/python/pkglint/userland.py
@@ -42,7 +42,7 @@
                    "checks Userland packages for common content errors")
        self.prototype = os.getenv('PROTO_DIR')
        self.runpath_re = [
            re.compile('^/lib/'),
            re.compile('^/lib(/.*)?$'),
            re.compile('^/usr/'),
            re.compile('^\$ORIGIN/')
        ]
transforms/comparison-cleanup
@@ -18,7 +18,7 @@
#
# CDDL HEADER END
#
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
#
#
@@ -27,7 +27,7 @@
#
# drop actions that don't apply to the architecture we are on
<transform dir file link hardlink variant.arch=(?!$(ARCH)) -> drop>
#<transform dir file link hardlink variant.arch=(?!$(ARCH)) -> drop>
# drop the license actions from the manifests, we aren't going to compare them
<transform license -> drop>
@@ -51,7 +51,11 @@
<transform dir file link hardlink -> delete timestamp .*>
<transform dir file link hardlink -> delete pkg.csize .*>
<transform dir file link hardlink -> delete pkg.chash .*>
<transform dir file link hardlink -> delete chash .*>
<transform dir file link hardlink -> delete pkg.size .*>
<transform dir file link hardlink -> delete elfarch .*>
<transform dir file link hardlink -> delete elfbits .*>
<transform dir file link hardlink -> delete elfhash .*>
<transform dir file link hardlink -> delete owner .*>
<transform dir file link hardlink -> delete group .*>
<transform dir file link hardlink -> delete mode .*>