bump(dev-lang/python): sync with upstream

For bumping to python-2.7.6 which appears to finally have the most
significant cross-compiling fix so lets move this out of our overlay.
This commit is contained in:
Michael Marineau 2014-01-22 12:30:29 -08:00
parent 836d5c96d2
commit 0e6d9e34ff
27 changed files with 7612 additions and 0 deletions

View File

@ -0,0 +1,735 @@
# ChangeLog for dev-lang/python
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/ChangeLog,v 1.736 2014/01/19 12:34:50 maekke Exp $
19 Jan 2014; Markus Meier <maekke@gentoo.org> python-3.3.3.ebuild:
arm stable, bug #497758
19 Jan 2014; Agostino Sarubbo <ago@gentoo.org> python-3.3.3.ebuild:
Stable for ppc64, wrt bug #497758
18 Jan 2014; Agostino Sarubbo <ago@gentoo.org> python-3.3.3.ebuild:
Stable for alpha, wrt bug #497758
18 Jan 2014; Pacho Ramos <pacho@gentoo.org> python-3.3.3.ebuild:
amd64 stable, bug #497758
18 Jan 2014; Mike Frysinger <vapier@gentoo.org> python-2.7.6.ebuild:
Fix cross-compiling tests that try to read /dev/ paths.
18 Jan 2014; Mike Frysinger <vapier@gentoo.org> python-2.7.5-r3.ebuild,
python-2.7.5-r4.ebuild, python-2.7.6.ebuild, python-3.3.2-r2.ebuild,
python-3.3.3.ebuild:
Add arm64 love.
16 Jan 2014; Mike Frysinger <vapier@gentoo.org> python-3.3.2-r2.ebuild:
Mark m68k/s390/sh stable.
15 Jan 2014; Agostino Sarubbo <ago@gentoo.org> python-3.3.2-r2.ebuild:
Stable for ia64, wrt bug #474128
11 Jan 2014; Jeroen Roovers <jer@gentoo.org> python-3.3.3.ebuild:
Stable for HPPA (bug #497758).
05 Jan 2014; Agostino Sarubbo <ago@gentoo.org> python-3.3.2-r2.ebuild:
Stable for ppc64, wrt bug #474128
05 Jan 2014; Agostino Sarubbo <ago@gentoo.org> python-3.3.2-r2.ebuild:
Stable for ppc, wrt bug #474128
30 Dec 2013; Mike Gilbert <floppym@gentoo.org> python-2.6.8-r3.ebuild,
python-2.6.9.ebuild, python-2.7.5-r3.ebuild, python-2.7.5-r4.ebuild,
python-2.7.6.ebuild, python-3.2.5-r3.ebuild, python-3.3.2-r2.ebuild,
python-3.3.3.ebuild:
Don't die on broken sem_open if threads flag is disabled.
30 Dec 2013; Mike Gilbert <floppym@gentoo.org> python-2.6.8-r3.ebuild,
python-2.6.9.ebuild, python-2.7.5-r3.ebuild, python-2.7.5-r4.ebuild,
python-2.7.6.ebuild, python-3.2.5-r3.ebuild, python-3.3.2-r2.ebuild,
python-3.3.3.ebuild:
Die if sem_open is detected as broken, bug 496328.
26 Dec 2013; Markus Meier <maekke@gentoo.org> python-3.3.2-r2.ebuild:
arm stable, bug #474128
*python-2.6.9 (25 Dec 2013)
25 Dec 2013; Mike Gilbert <floppym@gentoo.org> +python-2.6.9.ebuild:
Bump for security bug 495224.
15 Dec 2013; Agostino Sarubbo <ago@gentoo.org> python-3.3.2-r2.ebuild:
Stable for sparc, wrt bug #474128
13 Dec 2013; Matt Turner <mattst88@gentoo.org> python-3.3.2-r2.ebuild:
alpha stable, bug 474128.
08 Dec 2013; Pacho Ramos <pacho@gentoo.org> python-3.3.2-r2.ebuild:
x86 stable, bug #474128
07 Dec 2013; Mike Frysinger <vapier@gentoo.org> python-2.7.6.ebuild,
python-3.3.3.ebuild:
Drop redundant die statements with EAPI=4.
*python-2.7.6 (01 Dec 2013)
01 Dec 2013; Mike Gilbert <floppym@gentoo.org> +python-2.7.6.ebuild:
Version bump. Thanks to Arfrever for the patches.
30 Nov 2013; Jeroen Roovers <jer@gentoo.org> python-3.3.2-r2.ebuild:
Stable for HPPA (bug #474128).
30 Nov 2013; Pacho Ramos <pacho@gentoo.org> python-3.3.2-r2.ebuild:
amd64 stable, bug #474128
23 Nov 2013; Jeroen Roovers <jer@gentoo.org> python-3.3.2-r2.ebuild,
python-3.3.3.ebuild:
Typo.
23 Nov 2013; Mike Gilbert <floppym@gentoo.org> python-3.3.2-r2.ebuild,
python-3.3.3.ebuild:
Update the postinst upgrade message.
*python-3.3.3 (21 Nov 2013)
21 Nov 2013; Mike Gilbert <floppym@gentoo.org> +python-3.3.3.ebuild:
Version bump. Thanks to Arfrever for maintaining the patchset.
*python-2.7.5-r4 (26 Oct 2013)
26 Oct 2013; Mike Gilbert <floppym@gentoo.org>
+files/python-2.7-issue18851.patch, +python-2.7.5-r4.ebuild:
Apply patch to fix regression in subprocess module, bug 489378.
*python-2.7.5-r3 (16 Oct 2013)
*python-3.2.5-r3 (16 Oct 2013)
16 Oct 2013; Mike Gilbert <floppym@gentoo.org>
+files/python-2.7-issue16248.patch, +files/python-3.2-issue16248.patch,
+python-2.7.5-r3.ebuild, +python-3.2.5-r3.ebuild, -python-2.7.5-r2.ebuild,
-python-3.2.5-r2.ebuild:
Apply upstream fix for regression in Tkinter, bug 488208 by jlec.
10 Oct 2013; Dirkjan Ochtman <djc@gentoo.org> -files/python-3.2.3-x32.patch,
-python-2.6.8-r1.ebuild, -python-2.6.8-r2.ebuild, -python-2.7.3-r2.ebuild,
-python-2.7.3-r3.ebuild, -python-2.7.5-r1.ebuild, -python-2.7.5.ebuild,
-python-3.2.3-r1.ebuild, -python-3.2.3-r2.ebuild, -python-3.2.3.ebuild,
-python-3.2.4.ebuild, -python-3.2.5-r1.ebuild, -python-3.2.5.ebuild,
-python-3.3.1.ebuild, -python-3.3.2-r1.ebuild, -python-3.3.2.ebuild:
Remove old versions of python.
26 Sep 2013; Mike Gilbert <floppym@gentoo.org>
+files/python-2.7.5-nonfatal-compileall.patch, python-2.7.5-r2.ebuild:
Apply cross-compile fixes to python-2.7.5.
26 Sep 2013; Mike Gilbert <floppym@gentoo.org> python-3.3.2-r2.ebuild:
Fix/simplify cross-compiles.
26 Sep 2013; Mike Gilbert <floppym@gentoo.org> python-3.3.2-r2.ebuild:
Depend on xz-utils (_lzma module).
05 Sep 2013; Mike Gilbert <floppym@gentoo.org>
-files/CVE-2013-4238_py32.patch:
Drop another patch.
05 Sep 2013; Michał Górny <mgorny@gentoo.org> -files/linux2.patch,
-files/python-2.4.4-test-cross.patch, -files/python-2.5-cross-printf.patch,
-files/python-2.6-chflags-cross.patch, -files/python-2.6-test-cross.patch,
-files/python-3-distutils-egg-utf8.patch, -files/python-3.2-soname_typo.patch,
-python-2.5.4-r5.ebuild, -python-2.5.4-r6.ebuild, -python-3.1.5-r1.ebuild,
-python-3.1.5.ebuild:
Remove Python 2.5 and 3.1. Purge old patches.
05 Sep 2013; Mike Gilbert <floppym@gentoo.org> python-3.3.2-r2.ebuild:
Disable network tests, bug 483656.
28 Aug 2013; Mike Gilbert <floppym@gentoo.org> python-2.7.3-r2.ebuild,
python-2.7.3-r3.ebuild, python-2.7.5-r1.ebuild, python-2.7.5-r2.ebuild,
python-2.7.5.ebuild, python-3.2.3-r1.ebuild, python-3.2.3-r2.ebuild,
python-3.2.3.ebuild, python-3.2.4.ebuild, python-3.2.5-r1.ebuild,
python-3.2.5-r2.ebuild, python-3.2.5.ebuild, python-3.3.1.ebuild,
python-3.3.2-r1.ebuild, python-3.3.2-r2.ebuild, python-3.3.2.ebuild:
Drop extensions usedep from sqlite dep; sqlite is dropping the use flag.
26 Aug 2013; Michał Górny <mgorny@gentoo.org> python-2.5.4-r6.ebuild:
Replace internal eclass functions with a simple sed.
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for sparc, wrt bug #480856
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for sh, wrt bug #480856
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for s390, wrt bug #480856
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for ppc, wrt bug #480856
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for ppc64, wrt bug #480856
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for ia64, wrt bug #480856
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for arm, wrt bug #480856
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for alpha, wrt bug #480856
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for x86, wrt bug #480856
23 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for amd64, wrt bug #480856
20 Aug 2013; Jeroen Roovers <jer@gentoo.org> python-2.6.8-r3.ebuild,
python-2.7.5-r2.ebuild, python-3.2.5-r2.ebuild:
Stable for HPPA (bug #480856).
*python-2.7.5-r2 (18 Aug 2013)
*python-3.2.5-r2 (18 Aug 2013)
*python-2.6.8-r3 (18 Aug 2013)
18 Aug 2013; Mike Gilbert <floppym@gentoo.org>
+files/CVE-2013-4238_py26.patch, +files/CVE-2013-4238_py27.patch,
+files/CVE-2013-4238_py32.patch, +files/CVE-2013-4238_py33.patch,
+python-2.6.8-r3.ebuild, +python-2.7.5-r2.ebuild, +python-3.2.5-r2.ebuild,
-files/CVE-2013-4073_py33.patch, python-3.3.2-r2.ebuild:
Apply fix for CVE-2013-4238, bug 480856.
*python-3.3.2-r2 (18 Aug 2013)
18 Aug 2013; Mike Gilbert <floppym@gentoo.org>
+files/CVE-2013-4073_py33.patch, +python-3.3.2-r2.ebuild:
Use Arfrever's patchset, bug 354877. Apply fix for CVS-2013-4238, bug 480856.
06 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.7.5.ebuild:
Stable for s390, wrt bug #475424
06 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for s390, wrt bug #469988
03 Aug 2013; Agostino Sarubbo <ago@gentoo.org> python-2.7.5.ebuild:
Stable for sparc, wrt bug #475424
22 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for sparc, wrt bug #469988
21 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for sh, wrt bug #469988
*python-2.7.5-r1 (12 Jul 2013)
12 Jul 2013; Mike Gilbert <floppym@gentoo.org>
+files/python-2.7.5-re_unsigned_ptrdiff.patch, +python-2.7.5-r1.ebuild:
Apply patch to fix regex crash, bug 476426 by Fabio Rossi.
07 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for ia64, wrt bug #469988
07 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-2.7.5.ebuild:
Stable for ia64, wrt bug #475424
07 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for arm, wrt bug #469988
07 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-2.7.5.ebuild:
Stable for arm, wrt bug #475424
06 Jul 2013; Mike Gilbert <floppym@gentoo.org> -python-2.7.4.ebuild:
Remove old.
06 Jul 2013; Mike Gilbert <floppym@gentoo.org> python-2.7.5.ebuild:
Move uclibc test removal after everything else, bug 475972.
06 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for alpha, wrt bug #469988
04 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for ppc64, wrt bug #469988
04 Jul 2013; Jeroen Roovers <jer@gentoo.org> python-3.2.5-r1.ebuild:
Stable for HPPA (bug #469988).
04 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-2.7.5.ebuild:
Stable for ppc64, wrt bug #475424
04 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for ppc, wrt bug #469988
04 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-2.7.5.ebuild:
Stable for ppc, wrt bug #475424
03 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for x86, wrt bug #469988
03 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-3.2.5-r1.ebuild:
Stable for amd64, wrt bug #469988
*python-3.2.5-r1 (03 Jul 2013)
*python-3.3.2-r1 (03 Jul 2013)
03 Jul 2013; Mike Gilbert <floppym@gentoo.org>
+files/python-3.2-CVE-2013-2099.patch, +files/python-3.3-CVE-2013-2099.patch,
+python-3.2.5-r1.ebuild, +python-3.3.2-r1.ebuild:
Add patch to fix CVE-2013-2099, bug 469988.
02 Jul 2013; Jeroen Roovers <jer@gentoo.org> python-2.7.5.ebuild:
Stable for HPPA (bug #475424).
02 Jul 2013; Tobias Klausmann <klausman@gentoo.org> python-2.7.5.ebuild:
Stable on alpha, bug #475424
02 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-2.7.5.ebuild:
Stable for x86, wrt bug #475424
02 Jul 2013; Agostino Sarubbo <ago@gentoo.org> python-2.7.5.ebuild:
Stable for amd64, wrt bug #475424
*python-2.6.8-r2 (30 Jun 2013)
*python-2.5.4-r6 (30 Jun 2013)
30 Jun 2013; Mike Gilbert <floppym@gentoo.org> +files/python-2.5-tcl86.patch,
+python-2.5.4-r6.ebuild, +python-2.6.8-r2.ebuild:
Apply patch to allow old python versions to use tk-8.6, bug 454342. Also fix
the python shebang in idle2.5 and pydoc2.5, bugs 275241 and 383009.
30 Jun 2013; Mike Gilbert <floppym@gentoo.org> -python-2.5.4-r4.ebuild,
-python-2.6.8.ebuild, python-2.5.4-r5.ebuild, python-2.6.8-r1.ebuild:
Place upper bound on dev-lang/tk dep, bug 454342. Also stabilize on m68k since
nobody is responding on bug 458318.
28 Jun 2013; Mike Gilbert <floppym@gentoo.org>
+files/python-2.7.5-library-path.patch, python-2.7.5.ebuild:
Fix library paths when not cross-compiling. Should resolve bug 474882. Thanks
to Arfrever for finding the upstream commit.
*python-2.7.5 (25 May 2013)
*python-3.2.5 (25 May 2013)
25 May 2013; Mike Gilbert <floppym@gentoo.org> +python-2.7.5.ebuild,
+python-3.2.5.ebuild, python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild,
python-3.2.3-r2.ebuild:
Version bump. Also resolves bug 462288 and 471124.
*python-3.3.2 (21 May 2013)
21 May 2013; Patrick McLean <chutz@gentoo.org> -python-3.3.0.ebuild,
-python-3.3.0-r1.ebuild, +python-3.3.2.ebuild:
Version bump to 3.3.2, clean out old 3.3 versions preparing for unmasking.
18 May 2013; Magnus Granberg <zorry@gentoo.org> python-2.7.4.ebuild,
python-3.2.4.ebuild, python-3.3.1.ebuild:
Add fix to support pax emutramp on libffi
09 May 2013; Mike Gilbert <floppym@gentoo.org> python-2.7.4.ebuild:
Don't build the 'maninstall' target; this installs generic symlinks python.1
and python2.1, which we manage using eselect-python. Bug 469148 by Alphat-PC.
09 May 2013; Michał Górny <mgorny@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.4.ebuild, python-3.1.5-r1.ebuild,
python-3.2.4.ebuild, python-3.3.1.ebuild:
Add epatch_user wrt bug #447714.
01 May 2013; Mike Gilbert <floppym@gentoo.org> python-3.2.4.ebuild:
Enable byte-compilation during tests.
01 May 2013; Mike Gilbert <floppym@gentoo.org> python-2.7.4.ebuild,
python-3.2.4.ebuild:
Use Arfrever's patches. Remove some unnecessary || die.
28 Apr 2013; Patrick McLean <chutzpah@gentoo.org> python-3.3.1.ebuild:
Re-add patch from Arfrever to fix compilation on non-UTF-8 platforms, drop
patches that are no longer needed.
*python-3.3.1 (28 Apr 2013)
28 Apr 2013; Patrick McLean <chutzpah@gentoo.org> +python-3.3.1.ebuild:
Version bump. Add new patch to fix import tests from Arferver.
*python-3.2.4 (27 Apr 2013)
27 Apr 2013; Mike Gilbert <floppym@gentoo.org> +python-3.2.4.ebuild:
Version bump. Fails tests at the moment.
27 Apr 2013; Mike Gilbert <floppym@gentoo.org> python-2.7.4.ebuild:
Downgrade to EAPI 4.
27 Apr 2013; Mike Gilbert <floppym@gentoo.org> python-2.7.4.ebuild:
Increment patchset.
13 Apr 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for s390, wrt bug #458318
07 Apr 2013; Mike Gilbert <floppym@gentoo.org> python-2.7.4.ebuild:
Adjust the sys-libs/db dep and add some || die.
07 Apr 2013; Michał Górny <mgorny@gentoo.org> python-2.6.8-r1.ebuild,
python-2.7.3-r3.ebuild, python-2.7.4.ebuild:
Fix wininst removal typo. Fixes bug #462862.
*python-2.7.4 (07 Apr 2013)
07 Apr 2013; Mike Gilbert <floppym@gentoo.org> +python-2.7.4.ebuild:
Version bump.
31 Mar 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for sh, wrt bug #458318
31 Mar 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for sparc, wrt bug #458318
28 Mar 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for ia64, wrt bug #458318
26 Mar 2013; Mike Frysinger <vapier@gentoo.org> python-2.6.8-r1.ebuild,
python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild, python-3.2.3-r2.ebuild,
python-3.3.0-r1.ebuild:
When cross-compiling, run the configures in parallel for a nice speed up
#462264 by SpanKY.
24 Mar 2013; Mike Gilbert <floppym@gentoo.org> python-3.3.0-r1.ebuild,
python-3.3.0.ebuild:
Add hard blocker on <sys-apps/sandbox-2.6-r1 to ensure we don't hit bug
364877.
23 Mar 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for alpha, wrt bug #458318
23 Mar 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for arm, wrt bug #458318
21 Mar 2013; Jeroen Roovers <jer@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for HPPA (bug #458318).
19 Mar 2013; Mike Frysinger <vapier@gentoo.org> python-2.7.3-r3.ebuild,
python-3.2.3-r2.ebuild, python-3.3.0-r1.ebuild:
Install the python gdb module in the right place #443510 by Jan Pobrislo.
19 Mar 2013; Mike Frysinger <vapier@gentoo.org> python-2.7.3-r2.ebuild,
python-2.7.3-r3.ebuild, python-3.2.3-r1.ebuild, python-3.2.3-r2.ebuild,
python-3.2.3.ebuild, python-3.3.0-r1.ebuild, python-3.3.0.ebuild:
Export ac_cv_have_long_long_format=yes when cross-compiling #362945 by
Patrick.
19 Mar 2013; Mike Frysinger <vapier@gentoo.org> python-2.7.3-r2.ebuild,
python-2.7.3-r3.ebuild, python-3.2.3-r1.ebuild, python-3.2.3-r2.ebuild,
python-3.2.3.ebuild, python-3.3.0-r1.ebuild, python-3.3.0.ebuild:
Set ac_cv_buggy_getaddrinfo=no when cross-compiling.
19 Mar 2013; Mike Frysinger <vapier@gentoo.org> python-2.5.4-r4.ebuild,
python-2.5.4-r5.ebuild, python-2.6.8-r1.ebuild, python-2.6.8.ebuild,
python-2.7.3-r2.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.1.5.ebuild, python-3.2.3-r1.ebuild, python-3.2.3-r2.ebuild,
python-3.2.3.ebuild, python-3.3.0-r1.ebuild, python-3.3.0.ebuild:
Add hardened to IUSE since we `use` it #447264 by Alphat-PC.
18 Mar 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for ppc64, wrt bug #458318
18 Mar 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for ppc, wrt bug #458318
18 Mar 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for x86, wrt bug #458318
18 Mar 2013; Agostino Sarubbo <ago@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild:
Stable for amd64, wrt bug #458318
19 Dec 2012; Mike Gilbert <floppym@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild, python-3.3.0-r1.ebuild:
Don't depend on dev-lang/python. Bug 447752.
03 Dec 2012; Mike Gilbert <floppym@gentoo.org> python-2.5.4-r5.ebuild:
Copy eselect_python logic from more recent ebuilds.
02 Dec 2012; Michał Górny <mgorny@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild, python-3.3.0-r1.ebuild:
Stop renaming python-config wrt bug #445592. Keep a symlink for compatibility.
01 Dec 2012; Michał Górny <mgorny@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild, python-3.3.0-r1.ebuild:
Use python-any-r1 to clearly enforce build-time Python dependency.
30 Nov 2012; Michał Górny <mgorny@gentoo.org> python-2.5.4-r5.ebuild,
python-2.6.8-r1.ebuild, python-2.7.3-r3.ebuild, python-3.1.5-r1.ebuild,
python-3.2.3-r2.ebuild, python-3.3.0-r1.ebuild:
Fix byte-compiling the installed epython module when installing a new Python
version.
*python-2.7.3-r3 (30 Nov 2012)
*python-3.3.0-r1 (30 Nov 2012)
*python-2.6.8-r1 (30 Nov 2012)
*python-2.5.4-r5 (30 Nov 2012)
*python-3.2.3-r2 (30 Nov 2012)
*python-3.1.5-r1 (30 Nov 2012)
30 Nov 2012; Michał Górny <mgorny@gentoo.org> +python-2.5.4-r5.ebuild,
+python-2.6.8-r1.ebuild, +python-2.7.3-r3.ebuild, +python-3.1.5-r1.ebuild,
+python-3.2.3-r2.ebuild, +python-3.3.0-r1.ebuild:
Introduce a cleaned up, -r1-quality Python ebuilds. Stop using python.eclass,
install epython module for python-exec.
14 Oct 2012; Raúl Porcel <armin76@gentoo.org> python-3.1.5.ebuild:
ia64/m68k/s390/sh/sparc stable
06 Oct 2012; Markus Meier <maekke@gentoo.org> python-3.1.5.ebuild:
arm stable, bug #427544
02 Oct 2012; Jeroen Roovers <jer@gentoo.org> python-3.1.5.ebuild:
Stable for HPPA (bug #427548).
02 Oct 2012; Jeroen Roovers <jer@gentoo.org> python-3.2.3-r1.ebuild:
Stable for HPPA (bug #427548).
02 Oct 2012; Mike Gilbert <floppym@gentoo.org> python-3.3.0.ebuild:
Bump patchset revision for bug 436904. Drop wide-unicode use flag.
30 Sep 2012; Raúl Porcel <armin76@gentoo.org> python-3.2.3.ebuild:
alpha/ia64/m68k/s390/sh/sparc stable wrt #427548
30 Sep 2012; Dirkjan Ochtman <djc@gentoo.org> python-3.3.0.ebuild:
Fix 3.3 slot.
30 Sep 2012; Dirkjan Ochtman <djc@gentoo.org> -python-2.6.6-r2.ebuild,
-python-2.6.7-r2.ebuild, -python-2.7.2-r3.ebuild, -python-2.7.3.ebuild,
-python-2.7.3-r1.ebuild, -python-3.1.4-r3.ebuild, -python-3.1.4-r4.ebuild,
-python-3.2.2.ebuild, -python-3.2.2-r1.ebuild:
Remove old versions.
*python-3.3.0 (30 Sep 2012)
30 Sep 2012; Dirkjan Ochtman <djc@gentoo.org> +python-3.3.0.ebuild:
Add tentative python-3.3 ebuild. Some tests still fail.
27 Sep 2012; Matt Turner <mattst88@gentoo.org> python-3.1.5.ebuild,
python-3.2.3-r1.ebuild:
Stable on alpha, bug 427548.
03 Aug 2012; Anthony G. Basile <blueness@gentoo.org> python-3.2.3.ebuild:
Stable arm, bug #427548
30 Jul 2012; Mike Frysinger <vapier@gentoo.org> python-2.5.4-r4.ebuild,
python-2.6.6-r2.ebuild, python-2.6.7-r2.ebuild, python-2.6.8.ebuild,
python-2.7.2-r3.ebuild, python-2.7.3-r1.ebuild, python-2.7.3-r2.ebuild,
python-2.7.3.ebuild, python-3.1.4-r3.ebuild, python-3.1.4-r4.ebuild,
python-3.1.5.ebuild, python-3.2.2-r1.ebuild, python-3.2.2.ebuild,
python-3.2.3-r1.ebuild, python-3.2.3.ebuild:
Make sure $PKG_CONFIG is respected.
29 Jul 2012; Raúl Porcel <armin76@gentoo.org> python-2.7.3-r2.ebuild:
alpha/ia64/m68k/s390/sh/sparc stable wrt #419575
03 Jul 2012; Brent Baude <ranger@gentoo.org> python-2.7.3-r2.ebuild:
Marking python-2.7.3-r2 ppc for bug 419575
22 Jun 2012; Brent Baude <ranger@gentoo.org> python-2.7.3-r2.ebuild:
Marking python-2.7.3-r2 ppc64 for bug 419575
17 Jun 2012; Markus Meier <maekke@gentoo.org> python-2.7.3-r2.ebuild:
arm stable, bug #419575
17 Jun 2012; Jeff Horelick <jdhore@gentoo.org> python-2.7.3-r2.ebuild:
marked x86 per bug 419575
14 Jun 2012; Jeroen Roovers <jer@gentoo.org> python-2.7.3-r2.ebuild:
Stable for HPPA (bug #419575).
11 Jun 2012; Agostino Sarubbo <ago@gentoo.org> python-2.7.3-r2.ebuild:
Stable for amd64, wrt bug #419575
04 Jun 2012; Mike Frysinger <vapier@gentoo.org> +files/python-3.2.3-x32.patch,
python-3.2.3.ebuild, python-3.2.3-r1.ebuild:
Fix posix subprocess module on x32.
26 May 2012; Raúl Porcel <armin76@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild:
ia64/m68k/s390/sh/sparc stable wrt #396329
26 May 2012; Markus Meier <maekke@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild:
arm stable, bug #396329
17 May 2012; Jeff Horelick <jdhore@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild, python-3.1.5.ebuild, python-3.2.3.ebuild:
marked x86 per bug 396329
15 May 2012; Jeroen Roovers <jer@gentoo.org> python-3.1.4-r3.ebuild,
python-3.1.5.ebuild, python-3.2.2.ebuild, python-3.2.3.ebuild:
Marked ~hppa until it is ready.
15 May 2012; Jeroen Roovers <jer@gentoo.org> python-2.6.8.ebuild,
python-3.1.5.ebuild, python-3.2.3.ebuild:
Stable for HPPA (bug #396329).
14 May 2012; Jeroen Roovers <jer@gentoo.org> python-2.7.3-r1.ebuild:
Stable for HPPA (bug #396329).
14 May 2012; Mark Loeser <halcy0n@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild, python-3.1.5.ebuild, python-3.2.3.ebuild:
Stable for ppc/ppc64; bug #369329
14 May 2012; Agostino Sarubbo <ago@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild, python-3.1.5.ebuild, python-3.2.3.ebuild:
Stable for amd64, wrt bug #396329
12 May 2012; Tobias Klausmann <klausman@gentoo.org> python-2.6.8.ebuild:
Stable on alpha, bug #396329
12 May 2012; Tobias Klausmann <klausman@gentoo.org> python-2.7.3-r1.ebuild:
Stable on alpha, bug #396329
03 May 2012; Jeff Horelick <jdhore@gentoo.org> python-2.5.4-r4.ebuild,
python-2.6.6-r2.ebuild, python-2.6.7-r2.ebuild, python-2.6.8.ebuild,
python-2.7.2-r3.ebuild, python-2.7.3.ebuild, python-2.7.3-r1.ebuild,
python-2.7.3-r2.ebuild, python-3.1.4-r3.ebuild, python-3.1.4-r4.ebuild,
python-3.1.5.ebuild, python-3.2.2.ebuild, python-3.2.2-r1.ebuild,
python-3.2.3.ebuild, python-3.2.3-r1.ebuild:
dev-util/pkgconfig -> virtual/pkgconfig
03 May 2012; Mike Gilbert <floppym@gentoo.org> python-3.2.3-r1.ebuild:
Revert to previous patchset due to bug 414333.
01 May 2012; Mike Gilbert <floppym@gentoo.org> +python-2.7.3-r2.ebuild,
+python-3.2.3-r1.ebuild:
Restore ebuilds now that mirrors have the files.
01 May 2012; Mike Gilbert <floppym@gentoo.org> -python-2.7.3-r2.ebuild,
-python-3.2.3-r1.ebuild:
Drop ebuilds until the patchsets get mirrored.
*python-3.2.3-r1 (01 May 2012)
*python-2.7.3-r2 (01 May 2012)
01 May 2012; Mike Gilbert <floppym@gentoo.org> +python-2.7.3-r2.ebuild,
+python-3.2.3-r1.ebuild:
Drop several patches that upstream has not accepted.
28 Apr 2012; Mike Gilbert <floppym@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild, python-3.1.5.ebuild, python-3.2.3.ebuild:
Document reason for pax marking. Bug 413751.
28 Apr 2012; Mike Gilbert <floppym@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild, python-3.1.5.ebuild, python-3.2.3.ebuild:
Drop sys-apps/paxctl dep and restore fbsd keywords. Bug 413671 should be
resolved by not calling pax-mark on libpython.
28 Apr 2012; Alexis Ballier <aballier@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild, python-3.1.5.ebuild, python-3.2.3.ebuild:
remove fbsd keywords on ebuilds depending on sys-apps/paxctl which doesnt
build and isnt keyworded
26 Apr 2012; Mike Gilbert <floppym@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild, python-3.1.5.ebuild, python-3.2.3.ebuild:
Restore djc's fix for bug 368207.
26 Apr 2012; Mike Gilbert <floppym@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild, python-3.1.5.ebuild, python-3.2.3.ebuild:
Don't pax-mark libpython.so. Bug 413671.
26 Apr 2012; Mike Gilbert <floppym@gentoo.org> python-2.6.8.ebuild,
python-2.7.3-r1.ebuild, python-3.1.5.ebuild, python-3.2.3.ebuild:
Re-add dependency on sys-apps/paxctl due to bug 413671.
*python-3.1.5 (26 Apr 2012)
*python-2.7.3-r1 (26 Apr 2012)
*python-3.2.3 (26 Apr 2012)
*python-2.6.8 (26 Apr 2012)
26 Apr 2012; Mike Gilbert <floppym@gentoo.org> +python-2.6.8.ebuild,
+python-2.7.3-r1.ebuild, +python-3.1.5.ebuild, +python-3.2.3.ebuild:
Version bumps for security bug 396329. Ebuilds and patchsets based on work by
Arfrever in Progress overlay.
26 Apr 2012; Alexis Ballier <aballier@gentoo.org> python-3.2.2-r1.ebuild:
keyword ~amd64-fbsd
26 Apr 2012; Alexis Ballier <aballier@gentoo.org> python-2.7.3.ebuild:
keyword ~amd64-fbsd
*python-2.7.3 (12 Apr 2012)
12 Apr 2012; Dirkjan Ochtman <djc@gentoo.org> +python-2.7.3.ebuild:
Version bump to 2.7.3, addressing bugs 368207, 301691.
*python-3.1.4-r4 (21 Mar 2012)
*python-3.2.2-r1 (21 Mar 2012)
21 Mar 2012; Mike Gilbert <floppym@gentoo.org>
+files/python-3-distutils-egg-utf8.patch, +python-3.1.4-r4.ebuild,
+python-3.2.2-r1.ebuild:
Resolve distutils issue with unicode characters in egg-info files. Patch
backported by mgorny. Bug 343721.
07 Mar 2012; Brent Baude <ranger@gentoo.org> python-3.2.2.ebuild:
Marking python-3.2.2 ppc for bug 403875
05 Mar 2012; Jeff Horelick <jdhore@gentoo.org> python-3.2.2.ebuild:
marked x86 per bug 403875
05 Mar 2012; Samuli Suominen <ssuominen@gentoo.org> python-2.5.4-r4.ebuild:
Remove obsolete sys-devel/gcc[libffi] built_with_use check wrt #406927 by
Michael Weber
03 Mar 2012; Brent Baude <ranger@gentoo.org> python-3.2.2.ebuild:
Marking python-3.2.2 ppc64 for bug 403875
18 Feb 2012; Jeroen Roovers <jer@gentoo.org> python-3.2.2.ebuild:
Stable for HPPA (bug #403875).
17 Feb 2012; Agostino Sarubbo <ago@gentoo.org> python-3.2.2.ebuild:
Stable for amd64, wrt bug #403875
15 Feb 2012; Dirkjan Ochtman <djc@gentoo.org> -python-2.7.1-r1.ebuild,
-python-3.1.3-r1.ebuild:
Remove some old versions.
13 Feb 2012; Kacper Kowalik <xarthisius@gentoo.org> python-2.7.2-r3.ebuild,
python-3.1.4-r3.ebuild:
ppc64 stable wrt #387849
10 Feb 2012; Patrick Lauer <patrick@gentoo.org> -python-2.4.6.ebuild:
Removing last python-2.4 ebuilds. Was nice having you around ...
01 Feb 2012; Brent Baude <ranger@gentoo.org> python-2.7.2-r3.ebuild,
python-3.1.4-r3.ebuild:
Marking -2.7.2-r3 and -3.1.4-r3 for bug 387849
01 Jan 2012; Andreas K. Huettel <dilfridge@gentoo.org> +ChangeLog-2011:
Split ChangeLog. For older entries, please see ChangeLog-2011.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
AUX CVE-2013-4238_py26.patch 15853 SHA256 3a5ae8d666cf443cf632328e86f111b9c1de163109e1f8396483a80c6c61cc8f SHA512 92c14206b20684cac0b7744113e1f325714663d086e1e3a483797f989dc796df62d224e1aedbb2b81170d8d9a1b63d3712e710b21dd6c8cce9a1e955c3d23f3d WHIRLPOOL f699488846e2a7fb9a840b910c6d45574b53ec4f8606bc4b1f96d8ef2825b4896df7352d5fcb274428e3d7f7f2151825288e93c3b703942c4baeb313a3c38ec6
AUX CVE-2013-4238_py27.patch 11591 SHA256 050cc2d4b9d588f2587010a30819591e02130fde90594782993a39c945c1559b SHA512 f9b1d0573bc7175b8fe6bdd8b6777a376cd717a594a14a6ddb334e0107596b0fbfbfe8a0c1743a0da54ce8ac8905cb7385aa2ae26698272f679763542c13e7e2 WHIRLPOOL bbf89edb2e3620aae3f54e80feba98d75fa566594b2e71e88b75c22036201a2692a77daf56080f4413612edf159f4282f5494a0a5dd11b350bcde248ef51f139
AUX CVE-2013-4238_py33.patch 11437 SHA256 e4f78490fc247df9d1133dc9f2deec47b1c582c4af1c8e93bd503d889c9eb716 SHA512 d1f1b64c46056f178b89abfe61c7c653afc0ed67cf9a8ef8c981d1cf6a1c389cb20bd354cac3a30c1241e6fe24a49e165527571276c1f8afb55989f5f069ba00 WHIRLPOOL e5889b6be0a2db7ec45ff8cbe9fa8481c6c69b25091b62635d2ff595ef5d0b1136485f7adb04f4c0c97402edfd9d915d4fd05e2b6bf1942497d81de1b1cefdce
AUX pydoc.conf 279 SHA256 6437e85d16d34efaf2665b3cabb0707392e6dee3df04989d3fcac63fd22997e8 SHA512 2d552b6262fa4c7cd75f45d93b8a2657eb9154decbc08f9b73d2e67e1d84367b498f8556fbba20f7b57414281cfd673fff607da3c688c1d6bb9842e92cf0c32a WHIRLPOOL 1ba44797765939d7c0bcbecb08cb6201eeff9b134d4d3caef9339729dcad9f258e20b16db5f369f49b378df3c91e530115dbce5ce3595d71cd325a48793ac814
AUX pydoc.init 741 SHA256 913be80dea585dd161d2fd439f56a358f148853d8305cb0dbf113c91eb1643f5 SHA512 9806c6ecf55f51b74b7cf4088c22043838cee8e8192b0bd33289c80ca86f96469bcef7ad110f654505109aa325fcfcc4e54e9494c8dccef13447d12c89f00152 WHIRLPOOL 73d5e45039bc054ed5217503b0ef3d96fc8701e2c0a69342118c0e5a89949a5afb2228827e97a654868f916620578a4a8fd2fba2dc60c6850c3f61affc0dfa28
AUX python-2.5-tcl86.patch 615 SHA256 cc649fbd471c7e348fc64f3844d9f4e1aab604cb3a028c9fb2cc58ba816b7bda SHA512 dca5eaff3ba981d699805c310dba0a7412ab2b856256ef25e41eb49e1441c382f868406ddce04a1e9768ccfacab1fb39e5e7a320f4ca6884a51583ca61a77dc8 WHIRLPOOL 515f1a5a163d4b34adff2b8e10e43c83f9575f185391440cf89155076b0399d3c5249e5a8741894d94092af4c5271c125b032bbc76c9e4e6f6d94f26133e5672
AUX python-2.7-issue16248.patch 735 SHA256 ed137a0ab513e6d9c910e37f637aef2d58fb730070e447572f39d46d9cc99568 SHA512 da00f8571741d4cfb529b9db875b5d831d5d8e43fdc464bc43adee046f208165ab6b13d671bc90be988b1099afeac4fc0e7ba7fa473ff74a9ec7731da89e11a9 WHIRLPOOL ad770b848666efb5cc3b8c07a530f2a9aaca683f4b447c2d835e39be59a5dde35a28ab8cdb278ecf456e15e57b7401ff83fb04ac71bd8d80abc19d45beb84d62
AUX python-2.7-issue18851.patch 11805 SHA256 4ecff8db20cdc4d9b0692a126859c318a9ba20bf1eff6e633c964871b2410d66 SHA512 b1eeec1451d011f37c65676819bf8391b9657d93a0b9f03d0db09956ef052fa3f2d922d1d5fc3c69567f549aa86f65a06670dcf3ead8300c0ac97651f9a503cd WHIRLPOOL b4b51d590175959df1f8373ff86343618b4474ea9afc2ef9360c680c986f30fa8f432eeb076de676cb87052cc6453a2b613dfaab51ab1ec5945a7c7c496a4f9f
AUX python-2.7.5-library-path.patch 991 SHA256 ff7a4a1846ebcadc2dbf979ea619072caac22e47909fe188fc4b6becce6ea2eb SHA512 74916d541eb38c526dc1243fe5e5a9de3a7875f02c53e5f49e60182ba042de2f15514364e7fbd821146dcf92db2bba88d8a9f46d4c71237b73fd39cbabf93d85 WHIRLPOOL 62bb1c85941ccaac7ca6f6fb2d93dc27f206cf9f815b90ef1f89748dfdd1d38deda9f6bf7eb2ce9fd8635d1a77576819192e8049ec5de52fdeb9f981dfb32f9f
AUX python-2.7.5-nonfatal-compileall.patch 750 SHA256 3f5a137602f1b3f0522f561c168a740f0080b29c2c888cb3a8dbbcc4407c2d9e SHA512 d2e93e2a6fcd55d516df0ddaca31af97faed677ea6b4be282eb99e7864f8a7399b5ca11139844a4b3c264832183483b0f4c8c9865c05de0e8520e6d2c8f1dbc6 WHIRLPOOL ab576e3a4e67f881d6d5c705503230ace125fe94d907d7f69bb573dd492070b8b34078a2b1205f315eb45244fbae8855c0f15ce35158f1d356f1bd4acf83b3c2
AUX python-2.7.5-re_unsigned_ptrdiff.patch 941 SHA256 5b0c0465a23d27e1c8f0961a8d88b3af75fbc9933ab60c2a71091720a3681079 SHA512 d46fbbc8411fae78cdfca2564faca42f32bb95ee348b9aa3fd1ca90b346cc52cd468945cee07e6df4dff46c10cee6856a58004f8e453960f6dca2751c077802b WHIRLPOOL 10bb08242dd9a055f6bdaf3eb1546786b58f180667c6355ea7276114cbac0ffba6c34822add7965fe3b5d41cc92ce8ec45e2d1d56377d8a6aa2755ef4267d101
AUX python-3.2-CVE-2013-2099.patch 2102 SHA256 76a89951e7efcf14d37e30e0104446429ca121c68cbb1753ec362a177c1b5a54 SHA512 03d2a09fe730bf8c94df1eb10f8bac37a31a28dfb45b7d49abe1c3ffe26ca948f8d00eb58319d34102f8a747a038d447d3507b11c051c778c42ae21ac1066c8e WHIRLPOOL 3cd701c606ef1f4f557d1d250af41a860a6a5c4b6d9ff9a9f469ab6974f13e1205d2c4c791e9bd353fd4ff726f6cbf979f9a3927b83b04af5128c1aea7070496
AUX python-3.2-issue16248.patch 738 SHA256 b5e94ead2622f355d733232dcfdac4dab53889aab12980fa1e4496c296191e77 SHA512 6fcf3d4cf05e41758a6d51ad9cc25ce9fcd1d33854f096b599811a07ef6b7f0cc4f178c4db6b15c5c9ee86eb53fcc736fede0dfb4eae81ca429d0fad62d84db9 WHIRLPOOL dd620bdce394a74910f4deed50b8bcd2b5d6b61af1e2e225a7c36fe4f293560fe1237a2111a4a4a334dfd1272fa4b7faf6289b2a018864c4f154c8a8a8b85c5c
AUX python-3.3-CVE-2013-2099.patch 2102 SHA256 d5ccc8de43a176d9d16c3a7be58d32dcf3c952147d8866f84dffcd8fa66f6396 SHA512 a8e2c8fd3d3c3924acb856e89b6dc6965c887688e4c7d078c27abacfaf6b33b12484d86942b75643f28e4a14a465e2ec6a30fe53acf2ab036ae667fb7f76d737 WHIRLPOOL c02bd815d5143b6a916a91f40bb7971f1be188e836ab6095a5befd6410545acba0d44b4b0a75a5f7e7d84105018c0ef27887eefdcd883c73e68f872bb4138e35
AUX python-config-2.4-r1 1624 SHA256 923a9e896f99cca5aa4ccbb02f981c6e26a2b1aa42326de2359d3c884bde2a9f SHA512 f8a0e12bed93385b3dddfa64a416ff4a560ec1b12c6c4a0dd715a2c804a43b6a292f0fe13e28d7828d4c4d620cde9dd7eab6a3423216786917ea6f51856ff53c WHIRLPOOL f2fe759b05ac0eb3b8dd196b0c68b8b8e0145ab79659eb4a45adee1bf7ae7260f457ae6192b9792990babd59cb98cceec05a8d93a50a3203517fe49ec30f5e0e
DIST Python-2.6.8.tar.bz2 11127915 SHA256 c34036718ee1f091736677f543bc7960861cf9fcbea77d49572b59f7f1ab3c3f SHA512 91aa96574328d7165b7ff799cc4f33e021c18865bb0b08a4bc2d1361633c3290964cc54beb817fe42ab0a569b57652c990e2c6aa6d4d8aefe0063fcefcff7642 WHIRLPOOL 03403bcd7fd47fd670d3176e12e6778519487da168cf08c46ce663c89caa65f1f792f1b1611516d0b099c4746f17a1a595ad22caa550fefa658e8b982efb6ea2
DIST Python-2.6.9.tgz 13285074 SHA256 7277b1285d8a82f374ef6ebaac85b003266f7939b3f2a24a3af52f9523ac94db SHA512 7ff28f41f7dc12e1504a781060520440bbf74b96c5df269ca5218f5910eae63898b94fdd398f549217912689814bc5275bb3b5ec4cc892f20bb468fc1b041c0c WHIRLPOOL 909f612286314ea004eef328a58d7b0aecffc1a524f6b283333ef0f299413055c1f7ec4e2d21a44d1beeaa8e11aabd68510cf9c5840cb5394176cbc8f2e5c147
DIST Python-2.7.5.tar.xz 10252148 SHA256 f33c4cab167dc69e10962e1cebf1c0768e2d0e8575648130c20e6bda84551db1 SHA512 c4691199d770cc4130604cd801375967ae0bb8a39ef34e01a4c8ab58d1c23ae83a1b493305178c4317c5622a19857750d33ffc3f10075becd5766ae664c68ee1 WHIRLPOOL fc5d3762cd67214b30de8b43024f5952362c4c811f23837e43ac2a7747c5353cc49b8785e75edd760ea58420609cd67a9a7e94abd2ea8ab25b3271af6a85168d
DIST Python-2.7.6.tar.xz 10431288 SHA256 1fd68e81f8bf7386ff239b7faee9ba387129d2cf34eab13350bd8503a0bff6a1 SHA512 e56e6cdd96ff7bcb680d11ad606c00f4264e413fc43ba7605b2d2e4a743fd6e464cbedabf18b461f742102e936f45d840302a99665b5f988b1df08b25285c238 WHIRLPOOL 3b83106e89c96d2227573595bd96c868e6ece7fb04fda0aa22c8d3249af99cedebcd224ec8ae788eabe8a091a55d12af9ed093ee1eedb7c72b66732c62d5e1b3
DIST Python-3.2.5.tar.xz 9221624 SHA256 8ccb9645b9779fc4550055b2ebb21a724ab7a63dee45643286eb4f79b2f84116 SHA512 6e71d01695c7b1e74d9781e4ac40a8d1560cae659d5351d392fc685b84316568d93740a99d2ed878dd87d4ce1708d0474cb01c6bad7b3dab610c639f3255b09d WHIRLPOOL d5e5fae5e1d4110861e1e1dac00c9812abbbc37205e8ce3cd268535ab9f66e24038ab4778af8bb834fd472eaa0281730f1f2fabdf6dffc4f6b54ef32c1d75953
DIST Python-3.3.2.tar.xz 11847676 SHA256 745b32c4b810e36fa66346198dbc2e313524fd68888922b85005656825e64b43 SHA512 2855cfed63f2e68cdfc02dc526f68402e893baf95146ba8254619b5a8e3bfbc07a3b7f089efe2450dc1b0bb1328c229b66664bde8ebda10a1f19fc02232ba74d WHIRLPOOL c8ffaea4b130bcfd112966ee82fa6023e0c2bf263494a1c233d783855e7407e0d62adacabe3d816fe93baf5964f7cfc256aedf2919fd8e6b1e9b37a855855c2c
DIST Python-3.3.3.tar.xz 12057744 SHA256 339275b30a1a3fef1589016bf6302c14e870f7a6fd2522bf87a6c2c6d383c685 SHA512 6acd905d2ae70a259de1d502c90ce9cc831b03cd32930d55bdce1f6dd4b2657c4bb8698e46f6558253338046c43ee842befa2d62e35eeb82b82659acbe6ea0aa WHIRLPOOL 680a88bc7ca312a71237350c06573d5ed6138d826613a6a8ad9e953181561966c9a9f64b176226a627175b8bb5d13755bb7cabe20ee9510ced5da14185e092a4
DIST python-gentoo-patches-2.6.8-0.tar.bz2 17608 SHA256 277dbeb19107d3244e58aee98f130ce98d03775e7d4074ff9e1577125c999c06 SHA512 2a988a81db888ce56e07d4591ab37b641e51f73f85c087ac0505dc2b703b1dd450ed36b2533e5e562935d2f5e17d581fbbcfd0b0dc4bee69c882f3442da29632 WHIRLPOOL 8ae0f01e1218ed758b9dfca9b4de6a9115c09db665a2831f9af7b8e3f9aa178c10d129104273b551b8a26e9ba575e3f8d3256d7622506a69d496935ce9d87685
DIST python-gentoo-patches-2.7.5-0.tar.xz 13848 SHA256 b84ff6a7669d639272cb2f94d4268d3be3af64903a380f4f60ab539e4a29b111 SHA512 9fec0ba9d958894861d4282ff9145f0387ad7fd3914a3689d148308f56158c1b397f0816c58383d2cf198f9a3b9bf321f2f441ec4aa91e4a503cd957b4a7fbd4 WHIRLPOOL 39d807453f6510f14db1b74f5dac1cd2c52d00be356d132c0f9229caeb8ba8bcbbbf32b05b3d3f6236e853b204ecb961e6b12cabacaadf5f515e93f00cda71d5
DIST python-gentoo-patches-2.7.6-0.tar.xz 13916 SHA256 01971f3cfe464d80a775d2838a519b16715be02fce0145a0c4fdc361fa57ef49 SHA512 32b0d3f49294d2f7935be459bbcf0892598fc856a266abea11f4cd109e174f4de8b8bef8b74737253e1820b6de23f5df070a0927dcc499adf607eb5ac11c3709 WHIRLPOOL fb9a448ebebc7b7c68ad4460c7ae51e1619224570540e15d6b6c05039ed09da52acd364374c9f85d8d36c299d86394a078e0fb10bfb359b83a91426f1a886066
DIST python-gentoo-patches-3.2.5-0.tar.xz 13892 SHA256 ebbfacc81486493ce4c16a697e53d77e9dc5c9d700e86cf92ae93b5e3e03abee SHA512 6d09ef5ed583dedd587d4247c7d0e99daf20d7cadb7afbcf4d951931e3a574a82f1b9dbc4e4f93d3dc55773808452284f50dee2fbfb6b68aff5f1f53c1665359 WHIRLPOOL 55b1ba0a25612b3987af93e252dd2dbd71ff0f4ff0bcadda9ba0b11e19278acdb3fa91166a854dcbe3d27bb570a104ee63a3976111d6f608614f7b3d9f734f67
DIST python-gentoo-patches-3.3.2-2.tar.xz 12884 SHA256 a99b7dade4659dcba7ae8ae137dd163460416a1aee170db888f15132d93d5374 SHA512 3694fa15839d7d0b74179115ae2e9b87503c68c1cf2a43124b762b2f1f133cc6c89c57c2c5ee09c94afde13bf13689f34acd831a6498c6112d181581b1592a3b WHIRLPOOL f48a549323b2b5ec7fdcbf8c31625cb570b7a8fab3f504d87af91449f5cf64b3f7309f99fdb1d2825d57d6aa8ec063851afc78466ddd465a0374b77ba8b1c1ee
DIST python-gentoo-patches-3.3.3-0.tar.xz 12992 SHA256 38b5c604416947fdd7d87ada2ccd3febf7407f00c1e67e6a99be8765f1b25c49 SHA512 d803b287c0f407c68dd766974296239419fb35441f1796081681f28d17b1f6c7e50e0aae807ad147469eb586db8fe486a013a166cb76e08f2b7a9ba39acb1760 WHIRLPOOL 09a9dbd1831c2e7022f4df27b57435dd1df7eace294e8fa069ce5fa5c1719f64ba9bcd8f27d614a8c13ee8605db37c7e75c13fa14885b76ce289667bf2871aaf
EBUILD python-2.6.8-r3.ebuild 11326 SHA256 dda37aee6bf09c08406b7e5e55d284a864a456e093b74560ea8af90b1ac81de5 SHA512 bf917ce50ce515f43610945194f24d9dd9c2d323a9cad3cc0fe070103e5d4be3285e23cb379d4308923132e087d50c8d9991966e527fa63f512da587d69b8af1 WHIRLPOOL 00b17ba9f1b4ff379089e44714ee1503fdfb95328c9b4d753f18858f5e6b165bd5ce4bc8a9cafad9b893c714ce9bc2bfa9bdf51407960d16c8cb1e9a452d3230
EBUILD python-2.6.9.ebuild 11282 SHA256 76b0c7d777649aab8e1c092b9bf319e2aa14cfd3aecf6cf678acc729d27cada9 SHA512 2106d68fa409ffd42535bcdd1447ade29eaffaf3fb0428397e50f8eaee8e62e74446e0611900b23218804c251fd48afddc0cdc043aede23a1345114b45d8f5c3 WHIRLPOOL 3d186d6ee7ee2a896c2219f40cb9901febf1b77901744693ad7bfbb72af14a507b1647b253599f08ae93a52acb3e741af1ad59b2909b8a0875f7dffe05b5ff31
EBUILD python-2.7.5-r3.ebuild 10577 SHA256 c26d18e0fc436e0639ce75e8372b7d05e94bab934ab46ce8e1e0deab7cd2f07d SHA512 37baba1b1c90f6d8355f9eb9af5dfe27187e1d23f9ac83cbc4da5585364cbcd5471ad15eacf92f5b7bd872e6e7d36a1bacb6caf37054cc70c387998dd70e8dce WHIRLPOOL 8df51382e48d72a188c59a43772a7be660713be2f5c568b150a7c23b82f1f1069024c17662ce3f282c4557dd8caf36e93f60900606a0442d1ec8039c3927771b
EBUILD python-2.7.5-r4.ebuild 10639 SHA256 8ffedafb7b4c6544a13c9c4187532402002c77b355d0b556b5489a3354a3db3a SHA512 051556f998fded0add60cc576923e7a258333dff47b8ba04aae97447d6c6df04ef0ce01372f66707cba8a4bd7f119f005fc7f3beb6899a434a2760243de1a972 WHIRLPOOL 229db4f43ae9e8d6ed32f277235e635b04537ada07163df6c703d4666a6398ba40601c26506ed7ccaed1fa9ca84b263e55d6d46c37de9e78e05c2ad2059e2752
EBUILD python-2.7.6.ebuild 10577 SHA256 7b1709f8bdcb5217f634087edf5e0b1b084d9ee0a93e42462255db08b30f4673 SHA512 c46d12cbb2170ce387d8192b15c83a667162a228a9ae8e0b4089aa9a710dbcc38c22e9825e43d3758f47bd3e0f587846bec71d8f3bb2aaf7e43bb60afabe501e WHIRLPOOL c84f3f6d2f6bb34855cf9ad5bb4434503b21f78eb8b05993a2f6be34c2cda71522641280a5d1ed56234a6facd2cbc30b87b9280635715b5ed63bda2950b13268
EBUILD python-3.2.5-r3.ebuild 11011 SHA256 2133725ab9d45631a1daffd27640ac2aa5e03c241e726a2dbf108a11dc7a2263 SHA512 f8b517ee8d58f813b07942f285645d4f72dd463649b4ff4f14d4029dbbf3bd253b4478376497f623ff4a163dd07be6eae88f5acf02efd94232614a84b75f4f8e WHIRLPOOL 89c06da60259d98bb4b7dd3f03864e3bc509c26c409d02e21db89a2119b8f2cf891f7edeee3744799dba16c8a582dceeaa44c49dac69c95807d80ac4ba05ebc5
EBUILD python-3.3.2-r2.ebuild 9633 SHA256 6d1de07e89d299e7a713556703b89aa052fc0f948ce5c0af5029e028d461d932 SHA512 4dd0afedcf225d609bc1d8ec180a7487b51bfdfdeb42d56581bb82861ef70ec52e06057f65cb1efba2a3068cb89ca8704485ae2f5cf1b5c898f890d4a96cc6f0 WHIRLPOOL 30064501c248cdf2f270baf78c8f4380e8feefde3025797d6f897882aa178ace6fff68e94373b23345d9c7e38f6a0619c17b2bfa0d70ade83014e40b4ef88a5f
EBUILD python-3.3.3.ebuild 9457 SHA256 359a618fb86a861200ad0c1992a7a0061b76f2870e13b6e619ff083324ccf9f2 SHA512 2061955224c84ff52c8f71eeecd4f2c68c990932587fcde886acb76fc0d78ec66f7a68c5a40f6751a5ee68bce5bf8bf85f79f56f82a88e2cd43cebad2bc5249c WHIRLPOOL 4b44f422e348fd73fbbf31c2c3a72faac1214fe36c8b61c9df9154467480643b66c78631be8810f96206081d014c52fa6c1ffdf1efc762207711632f6716c0c2
MISC ChangeLog 29657 SHA256 b77cbbffdcc82b00ada56bf1bf1a0b934db0b62637dd33f7ae65b508f70d92ea SHA512 d49bb60ac9f3c36a6895d1bf3dd83e11018bf88d0009dba3deadc997a7c2e9c4f58494448894822c1b93c1ace83b224a5964a1b2904765ea29806ffdd3626cd7 WHIRLPOOL 5b6fa62323cfd534f3fddf681fb69e4765bd640ec74c59114b44dea921f99639f481a1b47844173b4c92ab8a3bbf9b42d91ee440308859c4b606da0da7fcf685
MISC ChangeLog-2011 100599 SHA256 23129cb47321b2a6b1cb9323f1815d0cd11d6f30c3893908ed51575c270a0cc8 SHA512 4181ba9d965139ba58218da5b960c87b7a611b27606a1ab1ce1b4c3c9255b4e0e2947307cbfffc531f0f8b6b545ee11e083fcb29dc7b2b7ba31c6bb40b8ab128 WHIRLPOOL 4ceebb6a6ed58b906d3a7331795748ac6e4fe2e1401bcccae9024a8e81e2c444aebc5fec610398cfe6002354ad3b10487484598da5091867874727f07e239c56
MISC metadata.xml 661 SHA256 2c6c3407251f7ccd6501dee49494e539a9544f2fbae99a4373eefdf4e83e8908 SHA512 871989a29417ce20d95da950fa385f1a958139de7b1567beb9cda28a1217901243cd9d25235fe3c7b0e43a82176d72286e31e4e97310b26488d2a3252ef3a8a0 WHIRLPOOL b694b1b4270ba15640d04a3b0b26a08575ea4afc9be256717f7f3b1768d75da9f71ceca6afd2f69971906227d5ba42263d2df2fc9387441aa240222d39fd094e
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
iEYEAREIAAYFAlLbyBcACgkQkKaRLQcq0GKwQgCgknzNWpkKD/mtDk+b4h1ZMTE8
nNIAn0KbXtuVqBxC8pNpBS6vwbpRk6tS
=j2Mk
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,320 @@
diff -r 936621d33c38 Lib/test/keycert.pem
--- a/Lib/test/keycert.pem Wed Feb 20 18:19:55 2013 -0500
+++ b/Lib/test/keycert.pem Fri Aug 16 02:32:42 2013 +0200
@@ -1,32 +1,31 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXwIBAAKBgQC8ddrhm+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9L
-opdJhTvbGfEj0DQs1IE8M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVH
-fhi/VwovESJlaBOp+WMnfhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQAB
-AoGBAK0FZpaKj6WnJZN0RqhhK+ggtBWwBnc0U/ozgKz2j1s3fsShYeiGtW6CK5nU
-D1dZ5wzhbGThI7LiOXDvRucc9n7vUgi0alqPQ/PFodPxAN/eEYkmXQ7W2k7zwsDA
-IUK0KUhktQbLu8qF/m8qM86ba9y9/9YkXuQbZ3COl5ahTZrhAkEA301P08RKv3KM
-oXnGU2UHTuJ1MAD2hOrPxjD4/wxA/39EWG9bZczbJyggB4RHu0I3NOSFjAm3HQm0
-ANOu5QK9owJBANgOeLfNNcF4pp+UikRFqxk5hULqRAWzVxVrWe85FlPm0VVmHbb/
-loif7mqjU8o1jTd/LM7RD9f2usZyE2psaw8CQQCNLhkpX3KO5kKJmS9N7JMZSc4j
-oog58yeYO8BBqKKzpug0LXuQultYv2K4veaIO04iL9VLe5z9S/Q1jaCHBBuXAkEA
-z8gjGoi1AOp6PBBLZNsncCvcV/0aC+1se4HxTNo2+duKSDnbq+ljqOM+E7odU+Nq
-ewvIWOG//e8fssd0mq3HywJBAJ8l/c8GVmrpFTx8r/nZ2Pyyjt3dH1widooDXYSV
-q6Gbf41Llo5sYAtmxdndTLASuHKecacTgZVhy0FryZpLKrU=
------END RSA PRIVATE KEY-----
+-----BEGIN PRIVATE KEY-----
+MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANtb0+YrKuxevGpm
+LrjaUhZSgz6zFAmuGFmKmUbdjmfv9zSmmdsQIksK++jK0Be9LeZy20j6ahOfuVa0
+ufEmPoP7Fy4hXegKZR9cCWcIe/A6H2xWF1IIJLRTLaU8ol/I7T+um5HD5AwAwNPP
+USNU0Eegmvp+xxWu3NX2m1Veot85AgMBAAECgYA3ZdZ673X0oexFlq7AAmrutkHt
+CL7LvwrpOiaBjhyTxTeSNWzvtQBkIU8DOI0bIazA4UreAFffwtvEuPmonDb3F+Iq
+SMAu42XcGyVZEl+gHlTPU9XRX7nTOXVt+MlRRRxL6t9GkGfUAXI3XxJDXW3c0vBK
+UL9xqD8cORXOfE06rQJBAP8mEX1ERkR64Ptsoe4281vjTlNfIbs7NMPkUnrn9N/Y
+BLhjNIfQ3HFZG8BTMLfX7kCS9D593DW5tV4Z9BP/c6cCQQDcFzCcVArNh2JSywOQ
+ZfTfRbJg/Z5Lt9Fkngv1meeGNPgIMLN8Sg679pAOOWmzdMO3V706rNPzSVMME7E5
+oPIfAkEA8pDddarP5tCvTTgUpmTFbakm0KoTZm2+FzHcnA4jRh+XNTjTOv98Y6Ik
+eO5d1ZnKXseWvkZncQgxfdnMqqpj5wJAcNq/RVne1DbYlwWchT2Si65MYmmJ8t+F
+0mcsULqjOnEMwf5e+ptq5LzwbyrHZYq5FNk7ocufPv/ZQrcSSC+cFwJBAKvOJByS
+x56qyGeZLOQlWS2JS3KJo59XuLFGqcbgN9Om9xFa41Yb4N9NvplFivsvZdw3m1Q/
+SPIXQuT8RMPDVNQ=
+-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
-MIICpzCCAhCgAwIBAgIJAP+qStv1cIGNMA0GCSqGSIb3DQEBBQUAMIGJMQswCQYD
-VQQGEwJVUzERMA8GA1UECBMIRGVsYXdhcmUxEzARBgNVBAcTCldpbG1pbmd0b24x
-IzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMQwwCgYDVQQLEwNT
-U0wxHzAdBgNVBAMTFnNvbWVtYWNoaW5lLnB5dGhvbi5vcmcwHhcNMDcwODI3MTY1
-NDUwWhcNMTMwMjE2MTY1NDUwWjCBiTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCERl
-bGF3YXJlMRMwEQYDVQQHEwpXaWxtaW5ndG9uMSMwIQYDVQQKExpQeXRob24gU29m
-dHdhcmUgRm91bmRhdGlvbjEMMAoGA1UECxMDU1NMMR8wHQYDVQQDExZzb21lbWFj
-aGluZS5weXRob24ub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8ddrh
-m+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9LopdJhTvbGfEj0DQs1IE8
-M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVHfhi/VwovESJlaBOp+WMn
-fhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQABoxUwEzARBglghkgBhvhC
-AQEEBAMCBkAwDQYJKoZIhvcNAQEFBQADgYEAF4Q5BVqmCOLv1n8je/Jw9K669VXb
-08hyGzQhkemEBYQd6fzQ9A/1ZzHkJKb1P6yreOLSEh4KcxYPyrLRC1ll8nr5OlCx
-CMhKkTnR6qBsdNV0XtdU2+N25hqW+Ma4ZeqsN/iiJVCGNOZGnvQuvCAGWF8+J/f/
-iHkC6gGdBJhogs4=
+MIICVDCCAb2gAwIBAgIJANfHOBkZr8JOMA0GCSqGSIb3DQEBBQUAMF8xCzAJBgNV
+BAYTAlhZMRcwFQYDVQQHEw5DYXN0bGUgQW50aHJheDEjMCEGA1UEChMaUHl0aG9u
+IFNvZnR3YXJlIEZvdW5kYXRpb24xEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0xMDEw
+MDgyMzAxNTZaFw0yMDEwMDUyMzAxNTZaMF8xCzAJBgNVBAYTAlhZMRcwFQYDVQQH
+Ew5DYXN0bGUgQW50aHJheDEjMCEGA1UEChMaUHl0aG9uIFNvZnR3YXJlIEZvdW5k
+YXRpb24xEjAQBgNVBAMTCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
+gYkCgYEA21vT5isq7F68amYuuNpSFlKDPrMUCa4YWYqZRt2OZ+/3NKaZ2xAiSwr7
+6MrQF70t5nLbSPpqE5+5VrS58SY+g/sXLiFd6AplH1wJZwh78DofbFYXUggktFMt
+pTyiX8jtP66bkcPkDADA089RI1TQR6Ca+n7HFa7c1fabVV6i3zkCAwEAAaMYMBYw
+FAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBBQUAA4GBAHPctQBEQ4wd
+BJ6+JcpIraopLn8BGhbjNWj40mmRqWB/NAWF6M5ne7KpGAu7tLeG4hb1zLaldK8G
+lxy2GPSRF6LFS48dpEj2HbMv2nvv6xxalDMJ9+DicWgAKTQ6bcX2j3GUkCR0g/T1
+CRlNBAAlvhKzO7Clpf9l0YKBEfraJByX
-----END CERTIFICATE-----
diff -r 936621d33c38 Lib/test/nullbytecert.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/test/nullbytecert.pem Fri Aug 16 02:32:42 2013 +0200
@@ -0,0 +1,90 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 0 (0x0)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=python-dev@python.org
+ Validity
+ Not Before: Aug 7 13:11:52 2013 GMT
+ Not After : Aug 7 13:12:52 2013 GMT
+ Subject: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=python-dev@python.org
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:b5:ea:ed:c9:fb:46:7d:6f:3b:76:80:dd:3a:f3:
+ 03:94:0b:a7:a6:db:ec:1d:df:ff:23:74:08:9d:97:
+ 16:3f:a3:a4:7b:3e:1b:0e:96:59:25:03:a7:26:e2:
+ 88:a9:cf:79:cd:f7:04:56:b0:ab:79:32:6e:59:c1:
+ 32:30:54:eb:58:a8:cb:91:f0:42:a5:64:27:cb:d4:
+ 56:31:88:52:ad:cf:bd:7f:f0:06:64:1f:cc:27:b8:
+ a3:8b:8c:f3:d8:29:1f:25:0b:f5:46:06:1b:ca:02:
+ 45:ad:7b:76:0a:9c:bf:bb:b9:ae:0d:16:ab:60:75:
+ ae:06:3e:9c:7c:31:dc:92:2f:29:1a:e0:4b:0c:91:
+ 90:6c:e9:37:c5:90:d7:2a:d7:97:15:a3:80:8f:5d:
+ 7b:49:8f:54:30:d4:97:2c:1c:5b:37:b5:ab:69:30:
+ 68:43:d3:33:78:4b:02:60:f5:3c:44:80:a1:8f:e7:
+ f0:0f:d1:5e:87:9e:46:cf:62:fc:f9:bf:0c:65:12:
+ f1:93:c8:35:79:3f:c8:ec:ec:47:f5:ef:be:44:d5:
+ ae:82:1e:2d:9a:9f:98:5a:67:65:e1:74:70:7c:cb:
+ d3:c2:ce:0e:45:49:27:dc:e3:2d:d4:fb:48:0e:2f:
+ 9e:77:b8:14:46:c0:c4:36:ca:02:ae:6a:91:8c:da:
+ 2f:85
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:FALSE
+ X509v3 Subject Key Identifier:
+ 88:5A:55:C0:52:FF:61:CD:52:A3:35:0F:EA:5A:9C:24:38:22:F7:5C
+ X509v3 Key Usage:
+ Digital Signature, Non Repudiation, Key Encipherment
+ X509v3 Subject Alternative Name:
+ *************************************************************
+ WARNING: The values for DNS, email and URI are WRONG. OpenSSL
+ doesn't print the text after a NULL byte.
+ *************************************************************
+ DNS:altnull.python.org, email:null@python.org, URI:http://null.python.org, IP Address:192.0.2.1, IP Address:2001:DB8:0:0:0:0:0:1
+ Signature Algorithm: sha1WithRSAEncryption
+ ac:4f:45:ef:7d:49:a8:21:70:8e:88:59:3e:d4:36:42:70:f5:
+ a3:bd:8b:d7:a8:d0:58:f6:31:4a:b1:a4:a6:dd:6f:d9:e8:44:
+ 3c:b6:0a:71:d6:7f:b1:08:61:9d:60:ce:75:cf:77:0c:d2:37:
+ 86:02:8d:5e:5d:f9:0f:71:b4:16:a8:c1:3d:23:1c:f1:11:b3:
+ 56:6e:ca:d0:8d:34:94:e6:87:2a:99:f2:ae:ae:cc:c2:e8:86:
+ de:08:a8:7f:c5:05:fa:6f:81:a7:82:e6:d0:53:9d:34:f4:ac:
+ 3e:40:fe:89:57:7a:29:a4:91:7e:0b:c6:51:31:e5:10:2f:a4:
+ 60:76:cd:95:51:1a:be:8b:a1:b0:fd:ad:52:bd:d7:1b:87:60:
+ d2:31:c7:17:c4:18:4f:2d:08:25:a3:a7:4f:b7:92:ca:e2:f5:
+ 25:f1:54:75:81:9d:b3:3d:61:a2:f7:da:ed:e1:c6:6f:2c:60:
+ 1f:d8:6f:c5:92:05:ab:c9:09:62:49:a9:14:ad:55:11:cc:d6:
+ 4a:19:94:99:97:37:1d:81:5f:8b:cf:a3:a8:96:44:51:08:3d:
+ 0b:05:65:12:eb:b6:70:80:88:48:72:4f:c6:c2:da:cf:cd:8e:
+ 5b:ba:97:2f:60:b4:96:56:49:5e:3a:43:76:63:04:be:2a:f6:
+ c1:ca:a9:94
+-----BEGIN CERTIFICATE-----
+MIIE2DCCA8CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBxTELMAkGA1UEBhMCVVMx
+DzANBgNVBAgMBk9yZWdvbjESMBAGA1UEBwwJQmVhdmVydG9uMSMwIQYDVQQKDBpQ
+eXRob24gU29mdHdhcmUgRm91bmRhdGlvbjEgMB4GA1UECwwXUHl0aG9uIENvcmUg
+RGV2ZWxvcG1lbnQxJDAiBgNVBAMMG251bGwucHl0aG9uLm9yZwBleGFtcGxlLm9y
+ZzEkMCIGCSqGSIb3DQEJARYVcHl0aG9uLWRldkBweXRob24ub3JnMB4XDTEzMDgw
+NzEzMTE1MloXDTEzMDgwNzEzMTI1MlowgcUxCzAJBgNVBAYTAlVTMQ8wDQYDVQQI
+DAZPcmVnb24xEjAQBgNVBAcMCUJlYXZlcnRvbjEjMCEGA1UECgwaUHl0aG9uIFNv
+ZnR3YXJlIEZvdW5kYXRpb24xIDAeBgNVBAsMF1B5dGhvbiBDb3JlIERldmVsb3Bt
+ZW50MSQwIgYDVQQDDBtudWxsLnB5dGhvbi5vcmcAZXhhbXBsZS5vcmcxJDAiBgkq
+hkiG9w0BCQEWFXB5dGhvbi1kZXZAcHl0aG9uLm9yZzCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBALXq7cn7Rn1vO3aA3TrzA5QLp6bb7B3f/yN0CJ2XFj+j
+pHs+Gw6WWSUDpybiiKnPec33BFawq3kyblnBMjBU61ioy5HwQqVkJ8vUVjGIUq3P
+vX/wBmQfzCe4o4uM89gpHyUL9UYGG8oCRa17dgqcv7u5rg0Wq2B1rgY+nHwx3JIv
+KRrgSwyRkGzpN8WQ1yrXlxWjgI9de0mPVDDUlywcWze1q2kwaEPTM3hLAmD1PESA
+oY/n8A/RXoeeRs9i/Pm/DGUS8ZPINXk/yOzsR/XvvkTVroIeLZqfmFpnZeF0cHzL
+08LODkVJJ9zjLdT7SA4vnne4FEbAxDbKAq5qkYzaL4UCAwEAAaOB0DCBzTAMBgNV
+HRMBAf8EAjAAMB0GA1UdDgQWBBSIWlXAUv9hzVKjNQ/qWpwkOCL3XDALBgNVHQ8E
+BAMCBeAwgZAGA1UdEQSBiDCBhYIeYWx0bnVsbC5weXRob24ub3JnAGV4YW1wbGUu
+Y29tgSBudWxsQHB5dGhvbi5vcmcAdXNlckBleGFtcGxlLm9yZ4YpaHR0cDovL251
+bGwucHl0aG9uLm9yZwBodHRwOi8vZXhhbXBsZS5vcmeHBMAAAgGHECABDbgAAAAA
+AAAAAAAAAAEwDQYJKoZIhvcNAQEFBQADggEBAKxPRe99SaghcI6IWT7UNkJw9aO9
+i9eo0Fj2MUqxpKbdb9noRDy2CnHWf7EIYZ1gznXPdwzSN4YCjV5d+Q9xtBaowT0j
+HPERs1ZuytCNNJTmhyqZ8q6uzMLoht4IqH/FBfpvgaeC5tBTnTT0rD5A/olXeimk
+kX4LxlEx5RAvpGB2zZVRGr6LobD9rVK91xuHYNIxxxfEGE8tCCWjp0+3ksri9SXx
+VHWBnbM9YaL32u3hxm8sYB/Yb8WSBavJCWJJqRStVRHM1koZlJmXNx2BX4vPo6iW
+RFEIPQsFZRLrtnCAiEhyT8bC2s/Njlu6ly9gtJZWSV46Q3ZjBL4q9sHKqZQ=
+-----END CERTIFICATE-----
diff -r 936621d33c38 Lib/test/test_ssl.py
--- a/Lib/test/test_ssl.py Wed Feb 20 18:19:55 2013 -0500
+++ b/Lib/test/test_ssl.py Fri Aug 16 02:32:42 2013 +0200
@@ -31,6 +31,7 @@
HOST = test_support.HOST
CERTFILE = None
SVN_PYTHON_ORG_ROOT_CERT = None
+NULLBYTECERT = None
def handle_error(prefix):
exc_format = ' '.join(traceback.format_exception(*sys.exc_info()))
@@ -88,6 +89,27 @@
if test_support.verbose:
sys.stdout.write("\n" + pprint.pformat(p) + "\n")
+ def test_parse_cert_CVE_2013_4073(self):
+ p = ssl._ssl._test_decode_cert(NULLBYTECERT)
+ if test_support.verbose:
+ sys.stdout.write("\n" + pprint.pformat(p) + "\n")
+ subject = ((('countryName', 'US'),),
+ (('stateOrProvinceName', 'Oregon'),),
+ (('localityName', 'Beaverton'),),
+ (('organizationName', 'Python Software Foundation'),),
+ (('organizationalUnitName', 'Python Core Development'),),
+ (('commonName', 'null.python.org\x00example.org'),),
+ (('emailAddress', 'python-dev@python.org'),))
+ self.assertEqual(p['subject'], subject)
+ self.assertEqual(p['issuer'], subject)
+ self.assertEqual(p['subjectAltName'],
+ (('DNS', 'altnull.python.org\x00example.com'),
+ ('email', 'null@python.org\x00user@example.org'),
+ ('URI', 'http://null.python.org\x00http://example.org'),
+ ('IP Address', '192.0.2.1'),
+ ('IP Address', '2001:DB8:0:0:0:0:0:1\n'))
+ )
+
def test_DER_to_PEM(self):
with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f:
pem = f.read()
@@ -1210,15 +1232,18 @@
if skip_expected:
raise test_support.TestSkipped("No SSL support")
- global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT
+ global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, NULLBYTECERT
CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
"keycert.pem")
SVN_PYTHON_ORG_ROOT_CERT = os.path.join(
os.path.dirname(__file__) or os.curdir,
"https_svn_python_org_root.pem")
+ NULLBYTECERT = os.path.join(os.path.dirname(__file__) or os.curdir,
+ "nullbytecert.pem")
if (not os.path.exists(CERTFILE) or
- not os.path.exists(SVN_PYTHON_ORG_ROOT_CERT)):
+ not os.path.exists(SVN_PYTHON_ORG_ROOT_CERT) or
+ not os.path.exists(NULLBYTECERT)):
raise test_support.TestFailed("Can't read certificate files!")
tests = [BasicTests]
diff -r 936621d33c38 Modules/_ssl.c
--- a/Modules/_ssl.c Wed Feb 20 18:19:55 2013 -0500
+++ b/Modules/_ssl.c Fri Aug 16 02:32:42 2013 +0200
@@ -302,8 +302,10 @@
self->ctx = SSL_CTX_new(TLSv1_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL3)
self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
+#ifndef OPENSSL_NO_SSL2
else if (proto_version == PY_SSL_VERSION_SSL2)
self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
+#endif
else if (proto_version == PY_SSL_VERSION_SSL23)
self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
PySSL_END_ALLOW_THREADS
@@ -718,8 +720,13 @@
/* get a rendering of each name in the set of names */
+ int gntype;
+ ASN1_STRING *as = NULL;
+
name = sk_GENERAL_NAME_value(names, j);
- if (name->type == GEN_DIRNAME) {
+ gntype = name-> type;
+ switch (gntype) {
+ case GEN_DIRNAME:
/* we special-case DirName as a tuple of tuples of attributes */
@@ -741,11 +748,61 @@
goto fail;
}
PyTuple_SET_ITEM(t, 1, v);
+ break;
- } else {
+ case GEN_EMAIL:
+ case GEN_DNS:
+ case GEN_URI:
+ /* GENERAL_NAME_print() doesn't handle NUL bytes in ASN1_string
+ correctly. */
+ t = PyTuple_New(2);
+ if (t == NULL)
+ goto fail;
+ switch (gntype) {
+ case GEN_EMAIL:
+ v = PyUnicode_FromString("email");
+ as = name->d.rfc822Name;
+ break;
+ case GEN_DNS:
+ v = PyUnicode_FromString("DNS");
+ as = name->d.dNSName;
+ break;
+ case GEN_URI:
+ v = PyUnicode_FromString("URI");
+ as = name->d.uniformResourceIdentifier;
+ break;
+ }
+ if (v == NULL) {
+ Py_DECREF(t);
+ goto fail;
+ }
+ PyTuple_SET_ITEM(t, 0, v);
+ v = PyString_FromStringAndSize((char *)ASN1_STRING_data(as),
+ ASN1_STRING_length(as));
+ if (v == NULL) {
+ Py_DECREF(t);
+ goto fail;
+ }
+ PyTuple_SET_ITEM(t, 1, v);
+ break;
+ default:
/* for everything else, we use the OpenSSL print form */
-
+ switch (gntype) {
+ /* check for new general name type */
+ case GEN_OTHERNAME:
+ case GEN_X400:
+ case GEN_EDIPARTY:
+ case GEN_IPADD:
+ case GEN_RID:
+ break;
+ default:
+ if (PyErr_Warn(PyExc_RuntimeWarning,
+ "Unknown general name type") == -1) {
+ goto fail;
+ }
+ break;
+ }
(void) BIO_reset(biobuf);
GENERAL_NAME_print(biobuf, name);
len = BIO_gets(biobuf, buf, sizeof(buf)-1);
@@ -771,6 +828,7 @@
goto fail;
}
PyTuple_SET_ITEM(t, 1, v);
+ break;
}
/* and add that rendering to the list */

View File

@ -0,0 +1,247 @@
diff -r 9ddc63c039ba Lib/test/nullbytecert.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/test/nullbytecert.pem Sun Aug 11 18:13:17 2013 +0200
@@ -0,0 +1,90 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 0 (0x0)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=python-dev@python.org
+ Validity
+ Not Before: Aug 7 13:11:52 2013 GMT
+ Not After : Aug 7 13:12:52 2013 GMT
+ Subject: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=python-dev@python.org
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:b5:ea:ed:c9:fb:46:7d:6f:3b:76:80:dd:3a:f3:
+ 03:94:0b:a7:a6:db:ec:1d:df:ff:23:74:08:9d:97:
+ 16:3f:a3:a4:7b:3e:1b:0e:96:59:25:03:a7:26:e2:
+ 88:a9:cf:79:cd:f7:04:56:b0:ab:79:32:6e:59:c1:
+ 32:30:54:eb:58:a8:cb:91:f0:42:a5:64:27:cb:d4:
+ 56:31:88:52:ad:cf:bd:7f:f0:06:64:1f:cc:27:b8:
+ a3:8b:8c:f3:d8:29:1f:25:0b:f5:46:06:1b:ca:02:
+ 45:ad:7b:76:0a:9c:bf:bb:b9:ae:0d:16:ab:60:75:
+ ae:06:3e:9c:7c:31:dc:92:2f:29:1a:e0:4b:0c:91:
+ 90:6c:e9:37:c5:90:d7:2a:d7:97:15:a3:80:8f:5d:
+ 7b:49:8f:54:30:d4:97:2c:1c:5b:37:b5:ab:69:30:
+ 68:43:d3:33:78:4b:02:60:f5:3c:44:80:a1:8f:e7:
+ f0:0f:d1:5e:87:9e:46:cf:62:fc:f9:bf:0c:65:12:
+ f1:93:c8:35:79:3f:c8:ec:ec:47:f5:ef:be:44:d5:
+ ae:82:1e:2d:9a:9f:98:5a:67:65:e1:74:70:7c:cb:
+ d3:c2:ce:0e:45:49:27:dc:e3:2d:d4:fb:48:0e:2f:
+ 9e:77:b8:14:46:c0:c4:36:ca:02:ae:6a:91:8c:da:
+ 2f:85
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:FALSE
+ X509v3 Subject Key Identifier:
+ 88:5A:55:C0:52:FF:61:CD:52:A3:35:0F:EA:5A:9C:24:38:22:F7:5C
+ X509v3 Key Usage:
+ Digital Signature, Non Repudiation, Key Encipherment
+ X509v3 Subject Alternative Name:
+ *************************************************************
+ WARNING: The values for DNS, email and URI are WRONG. OpenSSL
+ doesn't print the text after a NULL byte.
+ *************************************************************
+ DNS:altnull.python.org, email:null@python.org, URI:http://null.python.org, IP Address:192.0.2.1, IP Address:2001:DB8:0:0:0:0:0:1
+ Signature Algorithm: sha1WithRSAEncryption
+ ac:4f:45:ef:7d:49:a8:21:70:8e:88:59:3e:d4:36:42:70:f5:
+ a3:bd:8b:d7:a8:d0:58:f6:31:4a:b1:a4:a6:dd:6f:d9:e8:44:
+ 3c:b6:0a:71:d6:7f:b1:08:61:9d:60:ce:75:cf:77:0c:d2:37:
+ 86:02:8d:5e:5d:f9:0f:71:b4:16:a8:c1:3d:23:1c:f1:11:b3:
+ 56:6e:ca:d0:8d:34:94:e6:87:2a:99:f2:ae:ae:cc:c2:e8:86:
+ de:08:a8:7f:c5:05:fa:6f:81:a7:82:e6:d0:53:9d:34:f4:ac:
+ 3e:40:fe:89:57:7a:29:a4:91:7e:0b:c6:51:31:e5:10:2f:a4:
+ 60:76:cd:95:51:1a:be:8b:a1:b0:fd:ad:52:bd:d7:1b:87:60:
+ d2:31:c7:17:c4:18:4f:2d:08:25:a3:a7:4f:b7:92:ca:e2:f5:
+ 25:f1:54:75:81:9d:b3:3d:61:a2:f7:da:ed:e1:c6:6f:2c:60:
+ 1f:d8:6f:c5:92:05:ab:c9:09:62:49:a9:14:ad:55:11:cc:d6:
+ 4a:19:94:99:97:37:1d:81:5f:8b:cf:a3:a8:96:44:51:08:3d:
+ 0b:05:65:12:eb:b6:70:80:88:48:72:4f:c6:c2:da:cf:cd:8e:
+ 5b:ba:97:2f:60:b4:96:56:49:5e:3a:43:76:63:04:be:2a:f6:
+ c1:ca:a9:94
+-----BEGIN CERTIFICATE-----
+MIIE2DCCA8CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBxTELMAkGA1UEBhMCVVMx
+DzANBgNVBAgMBk9yZWdvbjESMBAGA1UEBwwJQmVhdmVydG9uMSMwIQYDVQQKDBpQ
+eXRob24gU29mdHdhcmUgRm91bmRhdGlvbjEgMB4GA1UECwwXUHl0aG9uIENvcmUg
+RGV2ZWxvcG1lbnQxJDAiBgNVBAMMG251bGwucHl0aG9uLm9yZwBleGFtcGxlLm9y
+ZzEkMCIGCSqGSIb3DQEJARYVcHl0aG9uLWRldkBweXRob24ub3JnMB4XDTEzMDgw
+NzEzMTE1MloXDTEzMDgwNzEzMTI1MlowgcUxCzAJBgNVBAYTAlVTMQ8wDQYDVQQI
+DAZPcmVnb24xEjAQBgNVBAcMCUJlYXZlcnRvbjEjMCEGA1UECgwaUHl0aG9uIFNv
+ZnR3YXJlIEZvdW5kYXRpb24xIDAeBgNVBAsMF1B5dGhvbiBDb3JlIERldmVsb3Bt
+ZW50MSQwIgYDVQQDDBtudWxsLnB5dGhvbi5vcmcAZXhhbXBsZS5vcmcxJDAiBgkq
+hkiG9w0BCQEWFXB5dGhvbi1kZXZAcHl0aG9uLm9yZzCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBALXq7cn7Rn1vO3aA3TrzA5QLp6bb7B3f/yN0CJ2XFj+j
+pHs+Gw6WWSUDpybiiKnPec33BFawq3kyblnBMjBU61ioy5HwQqVkJ8vUVjGIUq3P
+vX/wBmQfzCe4o4uM89gpHyUL9UYGG8oCRa17dgqcv7u5rg0Wq2B1rgY+nHwx3JIv
+KRrgSwyRkGzpN8WQ1yrXlxWjgI9de0mPVDDUlywcWze1q2kwaEPTM3hLAmD1PESA
+oY/n8A/RXoeeRs9i/Pm/DGUS8ZPINXk/yOzsR/XvvkTVroIeLZqfmFpnZeF0cHzL
+08LODkVJJ9zjLdT7SA4vnne4FEbAxDbKAq5qkYzaL4UCAwEAAaOB0DCBzTAMBgNV
+HRMBAf8EAjAAMB0GA1UdDgQWBBSIWlXAUv9hzVKjNQ/qWpwkOCL3XDALBgNVHQ8E
+BAMCBeAwgZAGA1UdEQSBiDCBhYIeYWx0bnVsbC5weXRob24ub3JnAGV4YW1wbGUu
+Y29tgSBudWxsQHB5dGhvbi5vcmcAdXNlckBleGFtcGxlLm9yZ4YpaHR0cDovL251
+bGwucHl0aG9uLm9yZwBodHRwOi8vZXhhbXBsZS5vcmeHBMAAAgGHECABDbgAAAAA
+AAAAAAAAAAEwDQYJKoZIhvcNAQEFBQADggEBAKxPRe99SaghcI6IWT7UNkJw9aO9
+i9eo0Fj2MUqxpKbdb9noRDy2CnHWf7EIYZ1gznXPdwzSN4YCjV5d+Q9xtBaowT0j
+HPERs1ZuytCNNJTmhyqZ8q6uzMLoht4IqH/FBfpvgaeC5tBTnTT0rD5A/olXeimk
+kX4LxlEx5RAvpGB2zZVRGr6LobD9rVK91xuHYNIxxxfEGE8tCCWjp0+3ksri9SXx
+VHWBnbM9YaL32u3hxm8sYB/Yb8WSBavJCWJJqRStVRHM1koZlJmXNx2BX4vPo6iW
+RFEIPQsFZRLrtnCAiEhyT8bC2s/Njlu6ly9gtJZWSV46Q3ZjBL4q9sHKqZQ=
+-----END CERTIFICATE-----
diff -r 9ddc63c039ba Lib/test/test_ssl.py
--- a/Lib/test/test_ssl.py Sun Aug 11 13:04:50 2013 +0300
+++ b/Lib/test/test_ssl.py Sun Aug 11 18:13:17 2013 +0200
@@ -25,6 +25,7 @@
HOST = test_support.HOST
CERTFILE = None
SVN_PYTHON_ORG_ROOT_CERT = None
+NULLBYTECERT = None
def handle_error(prefix):
exc_format = ' '.join(traceback.format_exception(*sys.exc_info()))
@@ -123,6 +124,27 @@
('DNS', 'projects.forum.nokia.com'))
)
+ def test_parse_cert_CVE_2013_4073(self):
+ p = ssl._ssl._test_decode_cert(NULLBYTECERT)
+ if test_support.verbose:
+ sys.stdout.write("\n" + pprint.pformat(p) + "\n")
+ subject = ((('countryName', 'US'),),
+ (('stateOrProvinceName', 'Oregon'),),
+ (('localityName', 'Beaverton'),),
+ (('organizationName', 'Python Software Foundation'),),
+ (('organizationalUnitName', 'Python Core Development'),),
+ (('commonName', 'null.python.org\x00example.org'),),
+ (('emailAddress', 'python-dev@python.org'),))
+ self.assertEqual(p['subject'], subject)
+ self.assertEqual(p['issuer'], subject)
+ self.assertEqual(p['subjectAltName'],
+ (('DNS', 'altnull.python.org\x00example.com'),
+ ('email', 'null@python.org\x00user@example.org'),
+ ('URI', 'http://null.python.org\x00http://example.org'),
+ ('IP Address', '192.0.2.1'),
+ ('IP Address', '2001:DB8:0:0:0:0:0:1\n'))
+ )
+
def test_DER_to_PEM(self):
with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f:
pem = f.read()
@@ -1360,7 +1382,7 @@
def test_main(verbose=False):
- global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, NOKIACERT
+ global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, NOKIACERT, NULLBYTECERT
CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
"keycert.pem")
SVN_PYTHON_ORG_ROOT_CERT = os.path.join(
@@ -1368,10 +1390,13 @@
"https_svn_python_org_root.pem")
NOKIACERT = os.path.join(os.path.dirname(__file__) or os.curdir,
"nokia.pem")
+ NULLBYTECERT = os.path.join(os.path.dirname(__file__) or os.curdir,
+ "nullbytecert.pem")
if (not os.path.exists(CERTFILE) or
not os.path.exists(SVN_PYTHON_ORG_ROOT_CERT) or
- not os.path.exists(NOKIACERT)):
+ not os.path.exists(NOKIACERT) or
+ not os.path.exists(NULLBYTECERT)):
raise test_support.TestFailed("Can't read certificate files!")
tests = [BasicTests, BasicSocketTests]
diff -r 9ddc63c039ba Modules/_ssl.c
--- a/Modules/_ssl.c Sun Aug 11 13:04:50 2013 +0300
+++ b/Modules/_ssl.c Sun Aug 11 18:13:17 2013 +0200
@@ -741,8 +741,13 @@
/* get a rendering of each name in the set of names */
+ int gntype;
+ ASN1_STRING *as = NULL;
+
name = sk_GENERAL_NAME_value(names, j);
- if (name->type == GEN_DIRNAME) {
+ gntype = name-> type;
+ switch (gntype) {
+ case GEN_DIRNAME:
/* we special-case DirName as a tuple of tuples of attributes */
@@ -764,11 +769,61 @@
goto fail;
}
PyTuple_SET_ITEM(t, 1, v);
+ break;
- } else {
+ case GEN_EMAIL:
+ case GEN_DNS:
+ case GEN_URI:
+ /* GENERAL_NAME_print() doesn't handle NUL bytes in ASN1_string
+ correctly. */
+ t = PyTuple_New(2);
+ if (t == NULL)
+ goto fail;
+ switch (gntype) {
+ case GEN_EMAIL:
+ v = PyUnicode_FromString("email");
+ as = name->d.rfc822Name;
+ break;
+ case GEN_DNS:
+ v = PyUnicode_FromString("DNS");
+ as = name->d.dNSName;
+ break;
+ case GEN_URI:
+ v = PyUnicode_FromString("URI");
+ as = name->d.uniformResourceIdentifier;
+ break;
+ }
+ if (v == NULL) {
+ Py_DECREF(t);
+ goto fail;
+ }
+ PyTuple_SET_ITEM(t, 0, v);
+ v = PyString_FromStringAndSize((char *)ASN1_STRING_data(as),
+ ASN1_STRING_length(as));
+ if (v == NULL) {
+ Py_DECREF(t);
+ goto fail;
+ }
+ PyTuple_SET_ITEM(t, 1, v);
+ break;
+ default:
/* for everything else, we use the OpenSSL print form */
-
+ switch (gntype) {
+ /* check for new general name type */
+ case GEN_OTHERNAME:
+ case GEN_X400:
+ case GEN_EDIPARTY:
+ case GEN_IPADD:
+ case GEN_RID:
+ break;
+ default:
+ if (PyErr_Warn(PyExc_RuntimeWarning,
+ "Unknown general name type") == -1) {
+ goto fail;
+ }
+ break;
+ }
(void) BIO_reset(biobuf);
GENERAL_NAME_print(biobuf, name);
len = BIO_gets(biobuf, buf, sizeof(buf)-1);
@@ -794,6 +849,7 @@
goto fail;
}
PyTuple_SET_ITEM(t, 1, v);
+ break;
}
/* and add that rendering to the list */

View File

@ -0,0 +1,241 @@
diff -r e0f86c3b3685 Lib/test/nullbytecert.pem
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/test/nullbytecert.pem Sun Aug 11 18:17:23 2013 +0200
@@ -0,0 +1,90 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 0 (0x0)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=python-dev@python.org
+ Validity
+ Not Before: Aug 7 13:11:52 2013 GMT
+ Not After : Aug 7 13:12:52 2013 GMT
+ Subject: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=python-dev@python.org
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:b5:ea:ed:c9:fb:46:7d:6f:3b:76:80:dd:3a:f3:
+ 03:94:0b:a7:a6:db:ec:1d:df:ff:23:74:08:9d:97:
+ 16:3f:a3:a4:7b:3e:1b:0e:96:59:25:03:a7:26:e2:
+ 88:a9:cf:79:cd:f7:04:56:b0:ab:79:32:6e:59:c1:
+ 32:30:54:eb:58:a8:cb:91:f0:42:a5:64:27:cb:d4:
+ 56:31:88:52:ad:cf:bd:7f:f0:06:64:1f:cc:27:b8:
+ a3:8b:8c:f3:d8:29:1f:25:0b:f5:46:06:1b:ca:02:
+ 45:ad:7b:76:0a:9c:bf:bb:b9:ae:0d:16:ab:60:75:
+ ae:06:3e:9c:7c:31:dc:92:2f:29:1a:e0:4b:0c:91:
+ 90:6c:e9:37:c5:90:d7:2a:d7:97:15:a3:80:8f:5d:
+ 7b:49:8f:54:30:d4:97:2c:1c:5b:37:b5:ab:69:30:
+ 68:43:d3:33:78:4b:02:60:f5:3c:44:80:a1:8f:e7:
+ f0:0f:d1:5e:87:9e:46:cf:62:fc:f9:bf:0c:65:12:
+ f1:93:c8:35:79:3f:c8:ec:ec:47:f5:ef:be:44:d5:
+ ae:82:1e:2d:9a:9f:98:5a:67:65:e1:74:70:7c:cb:
+ d3:c2:ce:0e:45:49:27:dc:e3:2d:d4:fb:48:0e:2f:
+ 9e:77:b8:14:46:c0:c4:36:ca:02:ae:6a:91:8c:da:
+ 2f:85
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:FALSE
+ X509v3 Subject Key Identifier:
+ 88:5A:55:C0:52:FF:61:CD:52:A3:35:0F:EA:5A:9C:24:38:22:F7:5C
+ X509v3 Key Usage:
+ Digital Signature, Non Repudiation, Key Encipherment
+ X509v3 Subject Alternative Name:
+ *************************************************************
+ WARNING: The values for DNS, email and URI are WRONG. OpenSSL
+ doesn't print the text after a NULL byte.
+ *************************************************************
+ DNS:altnull.python.org, email:null@python.org, URI:http://null.python.org, IP Address:192.0.2.1, IP Address:2001:DB8:0:0:0:0:0:1
+ Signature Algorithm: sha1WithRSAEncryption
+ ac:4f:45:ef:7d:49:a8:21:70:8e:88:59:3e:d4:36:42:70:f5:
+ a3:bd:8b:d7:a8:d0:58:f6:31:4a:b1:a4:a6:dd:6f:d9:e8:44:
+ 3c:b6:0a:71:d6:7f:b1:08:61:9d:60:ce:75:cf:77:0c:d2:37:
+ 86:02:8d:5e:5d:f9:0f:71:b4:16:a8:c1:3d:23:1c:f1:11:b3:
+ 56:6e:ca:d0:8d:34:94:e6:87:2a:99:f2:ae:ae:cc:c2:e8:86:
+ de:08:a8:7f:c5:05:fa:6f:81:a7:82:e6:d0:53:9d:34:f4:ac:
+ 3e:40:fe:89:57:7a:29:a4:91:7e:0b:c6:51:31:e5:10:2f:a4:
+ 60:76:cd:95:51:1a:be:8b:a1:b0:fd:ad:52:bd:d7:1b:87:60:
+ d2:31:c7:17:c4:18:4f:2d:08:25:a3:a7:4f:b7:92:ca:e2:f5:
+ 25:f1:54:75:81:9d:b3:3d:61:a2:f7:da:ed:e1:c6:6f:2c:60:
+ 1f:d8:6f:c5:92:05:ab:c9:09:62:49:a9:14:ad:55:11:cc:d6:
+ 4a:19:94:99:97:37:1d:81:5f:8b:cf:a3:a8:96:44:51:08:3d:
+ 0b:05:65:12:eb:b6:70:80:88:48:72:4f:c6:c2:da:cf:cd:8e:
+ 5b:ba:97:2f:60:b4:96:56:49:5e:3a:43:76:63:04:be:2a:f6:
+ c1:ca:a9:94
+-----BEGIN CERTIFICATE-----
+MIIE2DCCA8CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBxTELMAkGA1UEBhMCVVMx
+DzANBgNVBAgMBk9yZWdvbjESMBAGA1UEBwwJQmVhdmVydG9uMSMwIQYDVQQKDBpQ
+eXRob24gU29mdHdhcmUgRm91bmRhdGlvbjEgMB4GA1UECwwXUHl0aG9uIENvcmUg
+RGV2ZWxvcG1lbnQxJDAiBgNVBAMMG251bGwucHl0aG9uLm9yZwBleGFtcGxlLm9y
+ZzEkMCIGCSqGSIb3DQEJARYVcHl0aG9uLWRldkBweXRob24ub3JnMB4XDTEzMDgw
+NzEzMTE1MloXDTEzMDgwNzEzMTI1MlowgcUxCzAJBgNVBAYTAlVTMQ8wDQYDVQQI
+DAZPcmVnb24xEjAQBgNVBAcMCUJlYXZlcnRvbjEjMCEGA1UECgwaUHl0aG9uIFNv
+ZnR3YXJlIEZvdW5kYXRpb24xIDAeBgNVBAsMF1B5dGhvbiBDb3JlIERldmVsb3Bt
+ZW50MSQwIgYDVQQDDBtudWxsLnB5dGhvbi5vcmcAZXhhbXBsZS5vcmcxJDAiBgkq
+hkiG9w0BCQEWFXB5dGhvbi1kZXZAcHl0aG9uLm9yZzCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBALXq7cn7Rn1vO3aA3TrzA5QLp6bb7B3f/yN0CJ2XFj+j
+pHs+Gw6WWSUDpybiiKnPec33BFawq3kyblnBMjBU61ioy5HwQqVkJ8vUVjGIUq3P
+vX/wBmQfzCe4o4uM89gpHyUL9UYGG8oCRa17dgqcv7u5rg0Wq2B1rgY+nHwx3JIv
+KRrgSwyRkGzpN8WQ1yrXlxWjgI9de0mPVDDUlywcWze1q2kwaEPTM3hLAmD1PESA
+oY/n8A/RXoeeRs9i/Pm/DGUS8ZPINXk/yOzsR/XvvkTVroIeLZqfmFpnZeF0cHzL
+08LODkVJJ9zjLdT7SA4vnne4FEbAxDbKAq5qkYzaL4UCAwEAAaOB0DCBzTAMBgNV
+HRMBAf8EAjAAMB0GA1UdDgQWBBSIWlXAUv9hzVKjNQ/qWpwkOCL3XDALBgNVHQ8E
+BAMCBeAwgZAGA1UdEQSBiDCBhYIeYWx0bnVsbC5weXRob24ub3JnAGV4YW1wbGUu
+Y29tgSBudWxsQHB5dGhvbi5vcmcAdXNlckBleGFtcGxlLm9yZ4YpaHR0cDovL251
+bGwucHl0aG9uLm9yZwBodHRwOi8vZXhhbXBsZS5vcmeHBMAAAgGHECABDbgAAAAA
+AAAAAAAAAAEwDQYJKoZIhvcNAQEFBQADggEBAKxPRe99SaghcI6IWT7UNkJw9aO9
+i9eo0Fj2MUqxpKbdb9noRDy2CnHWf7EIYZ1gznXPdwzSN4YCjV5d+Q9xtBaowT0j
+HPERs1ZuytCNNJTmhyqZ8q6uzMLoht4IqH/FBfpvgaeC5tBTnTT0rD5A/olXeimk
+kX4LxlEx5RAvpGB2zZVRGr6LobD9rVK91xuHYNIxxxfEGE8tCCWjp0+3ksri9SXx
+VHWBnbM9YaL32u3hxm8sYB/Yb8WSBavJCWJJqRStVRHM1koZlJmXNx2BX4vPo6iW
+RFEIPQsFZRLrtnCAiEhyT8bC2s/Njlu6ly9gtJZWSV46Q3ZjBL4q9sHKqZQ=
+-----END CERTIFICATE-----
diff -r e0f86c3b3685 Lib/test/test_ssl.py
--- a/Lib/test/test_ssl.py Sun Aug 11 13:04:50 2013 +0300
+++ b/Lib/test/test_ssl.py Sun Aug 11 18:17:23 2013 +0200
@@ -55,6 +55,7 @@
WRONGCERT = data_file("XXXnonexisting.pem")
BADKEY = data_file("badkey.pem")
NOKIACERT = data_file("nokia.pem")
+NULLBYTECERT = data_file("nullbytecert.pem")
DHFILE = data_file("dh512.pem")
BYTES_DHFILE = os.fsencode(DHFILE)
@@ -162,6 +163,27 @@
('DNS', 'projects.forum.nokia.com'))
)
+ def test_parse_cert_CVE_2013_4073(self):
+ p = ssl._ssl._test_decode_cert(NULLBYTECERT)
+ if support.verbose:
+ sys.stdout.write("\n" + pprint.pformat(p) + "\n")
+ subject = ((('countryName', 'US'),),
+ (('stateOrProvinceName', 'Oregon'),),
+ (('localityName', 'Beaverton'),),
+ (('organizationName', 'Python Software Foundation'),),
+ (('organizationalUnitName', 'Python Core Development'),),
+ (('commonName', 'null.python.org\x00example.org'),),
+ (('emailAddress', 'python-dev@python.org'),))
+ self.assertEqual(p['subject'], subject)
+ self.assertEqual(p['issuer'], subject)
+ self.assertEqual(p['subjectAltName'],
+ (('DNS', 'altnull.python.org\x00example.com'),
+ ('email', 'null@python.org\x00user@example.org'),
+ ('URI', 'http://null.python.org\x00http://example.org'),
+ ('IP Address', '192.0.2.1'),
+ ('IP Address', '2001:DB8:0:0:0:0:0:1\n'))
+ )
+
def test_DER_to_PEM(self):
with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f:
pem = f.read()
@@ -294,6 +316,13 @@
fail(cert, 'foo.a.com')
fail(cert, 'bar.foo.com')
+ # NULL bytes are bad, CVE-2013-4073
+ cert = {'subject': ((('commonName',
+ 'null.python.org\x00example.org'),),)}
+ ok(cert, 'null.python.org\x00example.org') # or raise an error?
+ fail(cert, 'example.org')
+ fail(cert, 'null.python.org')
+
# Slightly fake real-world example
cert = {'notAfter': 'Jun 26 21:41:46 2011 GMT',
'subject': ((('commonName', 'linuxfrz.org'),),),
diff -r e0f86c3b3685 Modules/_ssl.c
--- a/Modules/_ssl.c Sun Aug 11 13:04:50 2013 +0300
+++ b/Modules/_ssl.c Sun Aug 11 18:17:23 2013 +0200
@@ -771,12 +771,14 @@
ext->value->length));
for(j = 0; j < sk_GENERAL_NAME_num(names); j++) {
-
/* get a rendering of each name in the set of names */
+ int gntype;
+ ASN1_STRING *as = NULL;
name = sk_GENERAL_NAME_value(names, j);
- if (name->type == GEN_DIRNAME) {
-
+ gntype = name-> type;
+ switch (gntype) {
+ case GEN_DIRNAME:
/* we special-case DirName as a tuple of
tuples of attributes */
@@ -798,11 +800,62 @@
goto fail;
}
PyTuple_SET_ITEM(t, 1, v);
+ break;
- } else {
+ case GEN_EMAIL:
+ case GEN_DNS:
+ case GEN_URI:
+ /* GENERAL_NAME_print() doesn't handle NUL bytes in ASN1_string
+ correctly. */
+ t = PyTuple_New(2);
+ if (t == NULL)
+ goto fail;
+ switch (gntype) {
+ case GEN_EMAIL:
+ v = PyUnicode_FromString("email");
+ as = name->d.rfc822Name;
+ break;
+ case GEN_DNS:
+ v = PyUnicode_FromString("DNS");
+ as = name->d.dNSName;
+ break;
+ case GEN_URI:
+ v = PyUnicode_FromString("URI");
+ as = name->d.uniformResourceIdentifier;
+ break;
+ }
+ if (v == NULL) {
+ Py_DECREF(t);
+ goto fail;
+ }
+ PyTuple_SET_ITEM(t, 0, v);
+ v = PyUnicode_FromStringAndSize((char *)ASN1_STRING_data(as),
+ ASN1_STRING_length(as));
+ if (v == NULL) {
+ Py_DECREF(t);
+ goto fail;
+ }
+ PyTuple_SET_ITEM(t, 1, v);
+ break;
+ default:
/* for everything else, we use the OpenSSL print form */
-
+ switch (gntype) {
+ /* check for new general name type */
+ case GEN_OTHERNAME:
+ case GEN_X400:
+ case GEN_EDIPARTY:
+ case GEN_IPADD:
+ case GEN_RID:
+ break;
+ default:
+ if (PyErr_WarnFormat(PyExc_RuntimeWarning, 1,
+ "Unknown general name type %d",
+ gntype) == -1) {
+ goto fail;
+ }
+ break;
+ }
(void) BIO_reset(biobuf);
GENERAL_NAME_print(biobuf, name);
len = BIO_gets(biobuf, buf, sizeof(buf)-1);
@@ -829,6 +882,7 @@
goto fail;
}
PyTuple_SET_ITEM(t, 1, v);
+ break;
}
/* and add that rendering to the list */

View File

@ -0,0 +1,7 @@
# /etc/init.d/pydoc.conf
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/files/pydoc.conf,v 1.3 2011/10/27 13:56:55 neurogeek Exp $
# This file contains the configuration for pydoc's internal webserver.
# Default port for Python's pydoc server.
@PYDOC_PORT_VARIABLE@="7464"

View File

@ -0,0 +1,29 @@
#!/sbin/runscript
# Copyright 1999-2011 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public Licence v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/files/pydoc.init,v 1.4 2011/10/27 13:56:55 neurogeek Exp $
depend() {
need net
}
start() {
local pydoc_port="${@PYDOC_PORT_VARIABLE@-${PYDOC_PORT}}"
if [ -z "${pydoc_port}" ]; then
eerror "Port not set"
return 1
fi
ebegin "Starting pydoc server on port ${pydoc_port}"
start-stop-daemon --start --background --make-pidfile \
--pidfile /var/run/@PYDOC@.pid \
--exec /usr/bin/@PYDOC@ -- -p "${pydoc_port}"
eend $?
}
stop() {
ebegin "Stopping pydoc server"
start-stop-daemon --stop --quiet --pidfile /var/run/@PYDOC@.pid
eend $?
}

View File

@ -0,0 +1,11 @@
--- a/setup.py
+++ b/setup.py
@@ -1518,7 +1518,7 @@
# The versions with dots are used on Unix, and the versions without
# dots on Windows, for detection by cygwin.
tcllib = tklib = tcl_includes = tk_includes = None
- for version in ['8.5', '85', '8.4', '84', '8.3', '83', '8.2',
+ for version in ['8.6', '86', '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)

View File

@ -0,0 +1,19 @@
# HG changeset patch
# User Antoine Pitrou <solipsis@pitrou.net>
# Date 1375388712 -7200
# Node ID 0f17aed78168e63ec058c219d03cea7240f83dd6
# Parent bb546f6d8ab4f513804d7a420657963881e5b447
Fix tkinter regression introduced by the security fix in #16248.
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -1736,7 +1736,7 @@ class Tk(Misc, Wm):
# ensure that self.tk is always _something_.
self.tk = None
if baseName is None:
- import sys, os
+ import os
baseName = os.path.basename(sys.argv[0])
baseName, ext = os.path.splitext(baseName)
if ext not in ('.py', '.pyc', '.pyo'):

View File

@ -0,0 +1,287 @@
# HG changeset patch
# User Antoine Pitrou <solipsis@pitrou.net>
# Date 1377898693 -7200
# Node ID 43749cb6bdbd0fdab70f76cd171c3c02a3f600dd
# Parent ba54011aa295004ad87438211fe3bb1568dd69ab
Issue #18851: Avoid a double close of subprocess pipes when the child process fails starting.
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -698,12 +698,12 @@ class Popen(object):
(p2cread, p2cwrite,
c2pread, c2pwrite,
- errread, errwrite) = self._get_handles(stdin, stdout, stderr)
+ errread, errwrite), to_close = self._get_handles(stdin, stdout, stderr)
try:
self._execute_child(args, executable, preexec_fn, close_fds,
cwd, env, universal_newlines,
- startupinfo, creationflags, shell,
+ startupinfo, creationflags, shell, to_close,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)
@@ -711,18 +711,12 @@ class Popen(object):
# Preserve original exception in case os.close raises.
exc_type, exc_value, exc_trace = sys.exc_info()
- to_close = []
- # Only close the pipes we created.
- if stdin == PIPE:
- to_close.extend((p2cread, p2cwrite))
- if stdout == PIPE:
- to_close.extend((c2pread, c2pwrite))
- if stderr == PIPE:
- to_close.extend((errread, errwrite))
-
for fd in to_close:
try:
- os.close(fd)
+ if mswindows:
+ fd.Close()
+ else:
+ os.close(fd)
except EnvironmentError:
pass
@@ -816,8 +810,9 @@ class Popen(object):
"""Construct and return tuple with IO objects:
p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite
"""
+ to_close = set()
if stdin is None and stdout is None and stderr is None:
- return (None, None, None, None, None, None)
+ return (None, None, None, None, None, None), to_close
p2cread, p2cwrite = None, None
c2pread, c2pwrite = None, None
@@ -835,6 +830,10 @@ class Popen(object):
# Assuming file-like object
p2cread = msvcrt.get_osfhandle(stdin.fileno())
p2cread = self._make_inheritable(p2cread)
+ # We just duplicated the handle, it has to be closed at the end
+ to_close.add(p2cread)
+ if stdin == PIPE:
+ to_close.add(p2cwrite)
if stdout is None:
c2pwrite = _subprocess.GetStdHandle(_subprocess.STD_OUTPUT_HANDLE)
@@ -848,6 +847,10 @@ class Popen(object):
# Assuming file-like object
c2pwrite = msvcrt.get_osfhandle(stdout.fileno())
c2pwrite = self._make_inheritable(c2pwrite)
+ # We just duplicated the handle, it has to be closed at the end
+ to_close.add(c2pwrite)
+ if stdout == PIPE:
+ to_close.add(c2pread)
if stderr is None:
errwrite = _subprocess.GetStdHandle(_subprocess.STD_ERROR_HANDLE)
@@ -863,10 +866,14 @@ class Popen(object):
# Assuming file-like object
errwrite = msvcrt.get_osfhandle(stderr.fileno())
errwrite = self._make_inheritable(errwrite)
+ # We just duplicated the handle, it has to be closed at the end
+ to_close.add(errwrite)
+ if stderr == PIPE:
+ to_close.add(errread)
return (p2cread, p2cwrite,
c2pread, c2pwrite,
- errread, errwrite)
+ errread, errwrite), to_close
def _make_inheritable(self, handle):
@@ -895,7 +902,7 @@ class Popen(object):
def _execute_child(self, args, executable, preexec_fn, close_fds,
cwd, env, universal_newlines,
- startupinfo, creationflags, shell,
+ startupinfo, creationflags, shell, to_close,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite):
@@ -934,6 +941,10 @@ class Popen(object):
# kill children.
creationflags |= _subprocess.CREATE_NEW_CONSOLE
+ def _close_in_parent(fd):
+ fd.Close()
+ to_close.remove(fd)
+
# Start the process
try:
hp, ht, pid, tid = _subprocess.CreateProcess(executable, args,
@@ -958,11 +969,11 @@ class Popen(object):
# pipe will not close when the child process exits and the
# ReadFile will hang.
if p2cread is not None:
- p2cread.Close()
+ _close_in_parent(p2cread)
if c2pwrite is not None:
- c2pwrite.Close()
+ _close_in_parent(c2pwrite)
if errwrite is not None:
- errwrite.Close()
+ _close_in_parent(errwrite)
# Retain the process handle, but close the thread handle
self._child_created = True
@@ -1088,6 +1099,7 @@ class Popen(object):
"""Construct and return tuple with IO objects:
p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite
"""
+ to_close = set()
p2cread, p2cwrite = None, None
c2pread, c2pwrite = None, None
errread, errwrite = None, None
@@ -1096,6 +1108,7 @@ class Popen(object):
pass
elif stdin == PIPE:
p2cread, p2cwrite = self.pipe_cloexec()
+ to_close.update((p2cread, p2cwrite))
elif isinstance(stdin, int):
p2cread = stdin
else:
@@ -1106,6 +1119,7 @@ class Popen(object):
pass
elif stdout == PIPE:
c2pread, c2pwrite = self.pipe_cloexec()
+ to_close.update((c2pread, c2pwrite))
elif isinstance(stdout, int):
c2pwrite = stdout
else:
@@ -1116,6 +1130,7 @@ class Popen(object):
pass
elif stderr == PIPE:
errread, errwrite = self.pipe_cloexec()
+ to_close.update((errread, errwrite))
elif stderr == STDOUT:
errwrite = c2pwrite
elif isinstance(stderr, int):
@@ -1126,7 +1141,7 @@ class Popen(object):
return (p2cread, p2cwrite,
c2pread, c2pwrite,
- errread, errwrite)
+ errread, errwrite), to_close
def _set_cloexec_flag(self, fd, cloexec=True):
@@ -1170,7 +1185,7 @@ class Popen(object):
def _execute_child(self, args, executable, preexec_fn, close_fds,
cwd, env, universal_newlines,
- startupinfo, creationflags, shell,
+ startupinfo, creationflags, shell, to_close,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite):
@@ -1189,6 +1204,10 @@ class Popen(object):
if executable is None:
executable = args[0]
+ def _close_in_parent(fd):
+ os.close(fd)
+ to_close.remove(fd)
+
# For transferring possible exec failure from child to parent
# The first char specifies the exception type: 0 means
# OSError, 1 means some other error.
@@ -1283,17 +1302,17 @@ class Popen(object):
# be sure the FD is closed no matter what
os.close(errpipe_write)
- if p2cread is not None and p2cwrite is not None:
- os.close(p2cread)
- if c2pwrite is not None and c2pread is not None:
- os.close(c2pwrite)
- if errwrite is not None and errread is not None:
- os.close(errwrite)
-
# Wait for exec to fail or succeed; possibly raising exception
# Exception limited to 1M
data = _eintr_retry_call(os.read, errpipe_read, 1048576)
finally:
+ if p2cread is not None and p2cwrite is not None:
+ _close_in_parent(p2cread)
+ if c2pwrite is not None and c2pread is not None:
+ _close_in_parent(c2pwrite)
+ if errwrite is not None and errread is not None:
+ _close_in_parent(errwrite)
+
# be sure the FD is closed no matter what
os.close(errpipe_read)
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -14,6 +14,10 @@ try:
import resource
except ImportError:
resource = None
+try:
+ import threading
+except ImportError:
+ threading = None
mswindows = (sys.platform == "win32")
@@ -629,6 +633,36 @@ class ProcessTestCase(BaseTestCase):
if c.exception.errno not in (errno.ENOENT, errno.EACCES):
raise c.exception
+ @unittest.skipIf(threading is None, "threading required")
+ def test_double_close_on_error(self):
+ # Issue #18851
+ fds = []
+ def open_fds():
+ for i in range(20):
+ fds.extend(os.pipe())
+ time.sleep(0.001)
+ t = threading.Thread(target=open_fds)
+ t.start()
+ try:
+ with self.assertRaises(EnvironmentError):
+ subprocess.Popen(['nonexisting_i_hope'],
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ finally:
+ t.join()
+ exc = None
+ for fd in fds:
+ # If a double close occurred, some of those fds will
+ # already have been closed by mistake, and os.close()
+ # here will raise.
+ try:
+ os.close(fd)
+ except OSError as e:
+ exc = e
+ if exc is not None:
+ raise exc
+
def test_handles_closed_on_exception(self):
# If CreateProcess exits with an error, ensure the
# duplicate output handles are released
@@ -783,7 +817,7 @@ class POSIXProcessTestCase(BaseTestCase)
def _execute_child(
self, args, executable, preexec_fn, close_fds, cwd, env,
- universal_newlines, startupinfo, creationflags, shell,
+ universal_newlines, startupinfo, creationflags, shell, to_close,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite):
@@ -791,7 +825,7 @@ class POSIXProcessTestCase(BaseTestCase)
subprocess.Popen._execute_child(
self, args, executable, preexec_fn, close_fds,
cwd, env, universal_newlines,
- startupinfo, creationflags, shell,
+ startupinfo, creationflags, shell, to_close,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite)

View File

@ -0,0 +1,25 @@
# HG changeset patch
# User Ned Deily <nad@acm.org>
# Date 1368666045 25200
# Node ID cd577c3288860b0deb459443ca5c489dc0f99ef6
# Parent 149340b3004acfcb68e5ed36b1e96b7463c756c7
Issue #17990: Only modify include and library search paths when cross-compiling.
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -437,9 +437,11 @@ class PyBuildExt(build_ext):
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')
- self.add_gcc_paths()
+ if not cross_compiling:
+ add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
+ add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+ if cross_compiling:
+ self.add_gcc_paths()
self.add_multiarch_paths()
# Add paths specified in the environment variables LDFLAGS and

View File

@ -0,0 +1,18 @@
diff --git a/Makefile.pre.in b/Makefile.pre.in
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1000,12 +1000,12 @@
$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
$(DESTDIR)$(LIBDEST)/distutils/tests ; \
fi
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
-d $(LIBDEST) -f \
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
$(DESTDIR)$(LIBDEST)
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
-d $(LIBDEST) -f \
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \

View File

@ -0,0 +1,23 @@
https://bugs.gentoo.org/show_bug.cgi?id=476426
http://bugs.python.org/issue17998
diff -r d91da96a55bf Modules/_sre.c
--- a/Modules/_sre.c Thu May 16 22:47:47 2013 +0100
+++ b/Modules/_sre.c Fri May 17 21:02:48 2013 +0300
@@ -1028,7 +1028,7 @@
TRACE(("|%p|%p|REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
ctx->pattern[1], ctx->pattern[2]));
- if (ctx->pattern[1] > end - ctx->ptr)
+ if ((Py_ssize_t) ctx->pattern[1] > end - ctx->ptr)
RETURN_FAILURE; /* cannot match */
state->ptr = ctx->ptr;
@@ -1111,7 +1111,7 @@
TRACE(("|%p|%p|MIN_REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
ctx->pattern[1], ctx->pattern[2]));
- if (ctx->pattern[1] > end - ctx->ptr)
+ if ((Py_ssize_t) ctx->pattern[1] > end - ctx->ptr)
RETURN_FAILURE; /* cannot match */
state->ptr = ctx->ptr;

View File

@ -0,0 +1,51 @@
# HG changeset patch
# User Antoine Pitrou <solipsis@pitrou.net>
# Date 1368892602 -7200
# Sat May 18 17:56:42 2013 +0200
# Branch 3.2
# Node ID b9b521efeba385af0142988899a55de1c1c805c7
# Parent 6255b40c6a6127933d8ea7a2b9de200f5a0e6154
Issue #17980: Fix possible abuse of ssl.match_hostname() for denial of service using certificates with many wildcards (CVE-2013-2099).
diff --git a/Lib/ssl.py b/Lib/ssl.py
--- a/Lib/ssl.py
+++ b/Lib/ssl.py
@@ -108,9 +108,16 @@
pass
-def _dnsname_to_pat(dn):
+def _dnsname_to_pat(dn, max_wildcards=1):
pats = []
for frag in dn.split(r'.'):
+ if frag.count('*') > max_wildcards:
+ # Issue #17980: avoid denials of service by refusing more
+ # than one wildcard per fragment. A survery of established
+ # policy among SSL implementations showed it to be a
+ # reasonable choice.
+ raise CertificateError(
+ "too many wildcards in certificate DNS name: " + repr(dn))
if frag == '*':
# When '*' is a fragment by itself, it matches a non-empty dotless
# fragment.
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -326,6 +326,17 @@
self.assertRaises(ValueError, ssl.match_hostname, None, 'example.com')
self.assertRaises(ValueError, ssl.match_hostname, {}, 'example.com')
+ # Issue #17980: avoid denials of service by refusing more than one
+ # wildcard per fragment.
+ cert = {'subject': ((('commonName', 'a*b.com'),),)}
+ ok(cert, 'axxb.com')
+ cert = {'subject': ((('commonName', 'a*b.co*'),),)}
+ ok(cert, 'axxb.com')
+ cert = {'subject': ((('commonName', 'a*b*.com'),),)}
+ with self.assertRaises(ssl.CertificateError) as cm:
+ ssl.match_hostname(cert, 'axxbxxc.com')
+ self.assertIn("too many wildcards", str(cm.exception))
+
def test_server_side(self):
# server_hostname doesn't work for server sockets
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)

View File

@ -0,0 +1,19 @@
# HG changeset patch
# User Georg Brandl <georg@python.org>
# Date 1379142489 -7200
# Node ID c18c18774e240377d47638fb23e8276c1ac2e606
# Parent b9b521efeba385af0142988899a55de1c1c805c7
Fix tkinter regression introduced by the security fix in #16248.
diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py
--- a/Lib/tkinter/__init__.py
+++ b/Lib/tkinter/__init__.py
@@ -1722,7 +1722,7 @@ class Tk(Misc, Wm):
# ensure that self.tk is always _something_.
self.tk = None
if baseName is None:
- import sys, os
+ import os
baseName = os.path.basename(sys.argv[0])
baseName, ext = os.path.splitext(baseName)
if ext not in ('.py', '.pyc', '.pyo'):

View File

@ -0,0 +1,51 @@
# HG changeset patch
# User Antoine Pitrou <solipsis@pitrou.net>
# Date 1368892602 -7200
# Sat May 18 17:56:42 2013 +0200
# Branch 3.3
# Node ID c627638753e2d25a98950585b259104a025937a9
# Parent 9682241dc8fcb4b1aef083bd30860efa070c3d6d
Issue #17980: Fix possible abuse of ssl.match_hostname() for denial of service using certificates with many wildcards (CVE-2013-2099).
diff --git a/Lib/ssl.py b/Lib/ssl.py
--- a/Lib/ssl.py
+++ b/Lib/ssl.py
@@ -129,9 +129,16 @@
pass
-def _dnsname_to_pat(dn):
+def _dnsname_to_pat(dn, max_wildcards=1):
pats = []
for frag in dn.split(r'.'):
+ if frag.count('*') > max_wildcards:
+ # Issue #17980: avoid denials of service by refusing more
+ # than one wildcard per fragment. A survery of established
+ # policy among SSL implementations showed it to be a
+ # reasonable choice.
+ raise CertificateError(
+ "too many wildcards in certificate DNS name: " + repr(dn))
if frag == '*':
# When '*' is a fragment by itself, it matches a non-empty dotless
# fragment.
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -349,6 +349,17 @@
self.assertRaises(ValueError, ssl.match_hostname, None, 'example.com')
self.assertRaises(ValueError, ssl.match_hostname, {}, 'example.com')
+ # Issue #17980: avoid denials of service by refusing more than one
+ # wildcard per fragment.
+ cert = {'subject': ((('commonName', 'a*b.com'),),)}
+ ok(cert, 'axxb.com')
+ cert = {'subject': ((('commonName', 'a*b.co*'),),)}
+ ok(cert, 'axxb.com')
+ cert = {'subject': ((('commonName', 'a*b*.com'),),)}
+ with self.assertRaises(ssl.CertificateError) as cm:
+ ssl.match_hostname(cert, 'axxbxxc.com')
+ self.assertIn("too many wildcards", str(cm.exception))
+
def test_server_side(self):
# server_hostname doesn't work for server sockets
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)

View File

@ -0,0 +1,58 @@
#! /usr/bin/python2.4
import sys
import os
import getopt
from distutils import sysconfig
valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
'ldflags', 'help']
def exit_with_usage(code=1):
print >>sys.stderr, "Usage: %s [%s]" % (sys.argv[0],
'|'.join('--'+opt for opt in valid_opts))
sys.exit(code)
try:
opts, args = getopt.getopt(sys.argv[1:], '', valid_opts)
except getopt.error:
exit_with_usage()
if not opts:
#exit_with_usage()
#be compatible with our old python-config-2.4
import string
print "-lpython2.4 -lm -L/usr/lib/python2.4/config",string.join(string.split(sysconfig.get_config_var("MODLIBS")))
sys.exit(0)
opt = opts[0][0]
pyver = sysconfig.get_config_var('VERSION')
getvar = sysconfig.get_config_var
if opt == '--help':
exit_with_usage(0)
elif opt == '--prefix':
print sysconfig.PREFIX
elif opt == '--exec-prefix':
print sysconfig.EXEC_PREFIX
elif opt in ('--includes', '--cflags'):
flags = ['-I' + sysconfig.get_python_inc(),
'-I' + sysconfig.get_python_inc(plat_specific=True)]
if opt == '--cflags':
flags.extend(getvar('CFLAGS').split())
print ' '.join(flags)
elif opt in ('--libs', '--ldflags'):
libs = getvar('LIBS').split() + getvar('SYSLIBS').split()
libs.append('-lpython'+pyver)
# add the prefix/lib/pythonX.Y/config dir, but only if there is no
# shared library in prefix/lib/.
if opt == '--ldflags' and not getvar('Py_ENABLE_SHARED'):
libs.insert(0, '-L' + getvar('LIBPL'))
print ' '.join(libs)

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<herd>python</herd>
<use>
<flag name="threads">Enable threading support. (DON'T DISABLE THIS UNLESS YOU KNOW WHAT YOU'RE DOING)</flag>
<flag name="wide-unicode">Enable wide Unicode implementation which uses 4-byte Unicode characters. Switching of this USE flag changes ABI of Python and requires reinstallation of many Python modules. (DON'T DISABLE THIS UNLESS YOU KNOW WHAT YOU'RE DOING)</flag>
<flag name="wininst">Install Windows executables required to create an executable installer for MS Windows.</flag>
</use>
</pkgmetadata>

View File

@ -0,0 +1,372 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.6.8-r3.ebuild,v 1.14 2013/12/30 21:57:26 floppym Exp $
EAPI="2"
WANT_AUTOMAKE="none"
WANT_LIBTOOL="none"
inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs multiprocessing
MY_P="Python-${PV}"
PATCHSET_REVISION="0"
DESCRIPTION="An interpreted, interactive, object-oriented programming language"
HOMEPAGE="http://www.python.org/"
SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tar.bz2
mirror://gentoo/python-gentoo-patches-${PV}-${PATCHSET_REVISION}.tar.bz2"
LICENSE="PSF-2"
SLOT="2.6"
KEYWORDS="alpha amd64 arm hppa ia64 ~m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd"
IUSE="-berkdb build doc elibc_uclibc examples gdbm hardened ipv6 +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml"
# Do not add a dependency on dev-lang/python to this ebuild.
# If you need to apply a patch which requires python for bootstrapping, please
# run the bootstrap code on your dev box and include the results in the
# patchset. See bug 447752.
RDEPEND="app-arch/bzip2
>=sys-libs/zlib-1.1.3
virtual/libffi
virtual/libintl
!build? (
berkdb? ( || (
sys-libs/db:4.7
sys-libs/db:4.6
sys-libs/db:4.5
sys-libs/db:4.4
sys-libs/db:4.3
sys-libs/db:4.2
) )
gdbm? ( sys-libs/gdbm[berkdb] )
ncurses? (
>=sys-libs/ncurses-5.2
readline? ( >=sys-libs/readline-4.1 )
)
sqlite? ( >=dev-db/sqlite-3.3.3:3 )
ssl? ( dev-libs/openssl )
tk? (
>=dev-lang/tk-8.0
dev-tcltk/blt
)
xml? ( >=dev-libs/expat-2.1 )
)
!!<sys-apps/portage-2.1.9"
DEPEND="${RDEPEND}
virtual/pkgconfig
>=sys-devel/autoconf-2.61
!sys-devel/gcc[libffi]"
RDEPEND+=" !build? ( app-misc/mime-types )
doc? ( dev-python/python-docs:${SLOT} )"
PDEPEND="app-admin/eselect-python
app-admin/python-updater"
S="${WORKDIR}/${MY_P}"
pkg_setup() {
if use berkdb; then
ewarn "'bsddb' module is out-of-date and no longer maintained inside"
ewarn "dev-lang/python. 'bsddb' and 'dbhash' modules have been additionally"
ewarn "removed in Python 3. A maintained alternative of 'bsddb3' module"
ewarn "is provided by dev-python/bsddb3."
else
if has_version "=${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"; then
ewarn "You are migrating from =${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"
ewarn "to =${CATEGORY}/${PN}-${PV%%.*}*[-berkdb]."
ewarn "You might need to migrate your databases."
fi
fi
}
src_prepare() {
# Ensure that internal copies of expat, libffi and zlib are not used.
rm -fr Modules/expat
rm -fr Modules/_ctypes/libffi*
rm -fr Modules/zlib
local excluded_patches
if ! tc-is-cross-compiler; then
excluded_patches="*_all_crosscompile.patch"
fi
EPATCH_EXCLUDE="${excluded_patches}" EPATCH_SUFFIX="patch" \
epatch "${WORKDIR}/${PV}-${PATCHSET_REVISION}"
epatch "${FILESDIR}/python-2.5-tcl86.patch"
epatch "${FILESDIR}/CVE-2013-4238_py26.patch"
sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
Lib/distutils/command/install.py \
Lib/distutils/sysconfig.py \
Lib/site.py \
Makefile.pre.in \
Modules/Setup.dist \
Modules/getpath.c \
setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
epatch_user
eautoconf
eautoheader
}
src_configure() {
if use build; then
# Disable extraneous modules with extra dependencies.
export PYTHON_DISABLE_MODULES="dbm _bsddb gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat"
export PYTHON_DISABLE_SSL="1"
else
# dbm module can be linked against berkdb or gdbm.
# Defaults to gdbm when both are enabled, #204343.
local disable
use berkdb || use gdbm || disable+=" dbm"
use berkdb || disable+=" _bsddb"
use gdbm || disable+=" gdbm"
use ncurses || disable+=" _curses _curses_panel"
use readline || disable+=" readline"
use sqlite || disable+=" _sqlite3"
use ssl || export PYTHON_DISABLE_SSL="1"
use tk || disable+=" _tkinter"
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
export PYTHON_DISABLE_MODULES="${disable}"
if ! use xml; then
ewarn "You have configured Python without XML support."
ewarn "This is NOT a recommended configuration as you"
ewarn "may face problems parsing any XML documents."
fi
fi
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
fi
if [[ "$(gcc-major-version)" -ge 4 ]]; then
append-flags -fwrapv
fi
filter-flags -malign-double
[[ "${ARCH}" == "alpha" ]] && append-flags -fPIC
# https://bugs.gentoo.org/show_bug.cgi?id=50309
if is-flagq -O3; then
is-flagq -fstack-protector-all && replace-flags -O3 -O2
use hardened && replace-flags -O3 -O2
fi
# Run the configure scripts in parallel.
multijob_init
mkdir -p "${WORKDIR}"/{${CBUILD},${CHOST}}
if tc-is-cross-compiler; then
(
multijob_child_init
cd "${WORKDIR}"/${CBUILD} >/dev/null
OPT="-O1" CFLAGS="" CPPFLAGS="" LDFLAGS="" CC="" \
"${S}"/configure \
--{build,host}=${CBUILD} \
|| die "cross-configure failed"
) &
multijob_post_fork
fi
# Export CXX so it ends up in /usr/lib/python2.X/config/Makefile.
tc-export CXX
# The configure script fails to use pkg-config correctly.
# http://bugs.python.org/issue15506
export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG)
# Set LDFLAGS so we link modules with -lpython2.6 correctly.
# Needed on FreeBSD unless Python 2.6 is already installed.
# Please query BSD team before removing this!
append-ldflags "-L."
cd "${WORKDIR}"/${CHOST}
ECONF_SOURCE=${S} OPT="" \
econf \
--with-fpectl \
--enable-shared \
$(use_enable ipv6) \
$(use_with threads) \
$(use wide-unicode && echo "--enable-unicode=ucs4" || echo "--enable-unicode=ucs2") \
--infodir='${prefix}/share/info' \
--mandir='${prefix}/share/man' \
--with-libc="" \
--with-system-ffi
if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
eerror "configure has detected that the sem_open function is broken."
eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
die "Broken sem_open function (bug 496328)"
fi
if tc-is-cross-compiler; then
# Modify the Makefile.pre so we don't regen for the host/ one.
# We need to link the host python programs into $PWD and run
# them from here because the distutils sysconfig module will
# parse Makefile/etc... from argv[0], and we need it to pick
# up the target settings, not the host ones.
sed -i \
-e '1iHOSTPYTHONPATH = ./hostpythonpath:' \
-e '/^HOSTPYTHON/s:=.*:= ./hostpython:' \
-e '/^HOSTPGEN/s:=.*:= ./Parser/hostpgen:' \
Makefile{.pre,} || die "sed failed"
fi
multijob_finish
}
src_compile() {
if tc-is-cross-compiler; then
cd "${WORKDIR}"/${CBUILD}
# Disable as many modules as possible -- but we need a few to install.
PYTHON_DISABLE_MODULES=$(
sed -n "/Extension('/{s:^.*Extension('::;s:'.*::;p}" "${S}"/setup.py | \
egrep -v '(unicodedata|time|cStringIO|_struct|binascii)'
) \
PTHON_DISABLE_SSL="1" \
SYSROOT= \
emake || die "cross-make failed"
# See comment in src_configure about these.
ln python ../${CHOST}/hostpython || die
ln Parser/pgen ../${CHOST}/Parser/hostpgen || die
ln -s ../${CBUILD}/build/lib.*/ ../${CHOST}/hostpythonpath || die
fi
cd "${WORKDIR}"/${CHOST}
default
# Work around bug 329499. See also bug 413751.
pax-mark m python
}
src_test() {
# Tests will not work when cross compiling.
if tc-is-cross-compiler; then
elog "Disabling tests due to crosscompiling."
return
fi
cd "${WORKDIR}"/${CHOST}
# Skip failing tests.
local skipped_tests="distutils tcl"
for test in ${skipped_tests}; do
mv "${S}"/Lib/test/test_${test}.py "${T}"
done
# Rerun failed tests in verbose mode (regrtest -w).
PYTHONDONTWRITEBYTECODE="" emake test EXTRATESTOPTS="-w" < /dev/tty
local result="$?"
for test in ${skipped_tests}; do
mv "${T}/test_${test}.py" "${S}"/Lib/test
done
elog "The following tests have been skipped:"
for test in ${skipped_tests}; do
elog "test_${test}.py"
done
elog "If you would like to run them, you may:"
elog "cd '${EPREFIX}/usr/$(get_libdir)/python${SLOT}/test'"
elog "and run the tests separately."
if [[ "${result}" -ne 0 ]]; then
die "emake test failed"
fi
}
src_install() {
[[ -z "${ED}" ]] && ED="${D%/}${EPREFIX}/"
local libdir=${ED}/usr/$(get_libdir)/python${SLOT}
cd "${WORKDIR}"/${CHOST}
emake DESTDIR="${D}" altinstall maninstall || die "emake altinstall maninstall failed"
# Backwards compat with Gentoo divergence.
dosym python${SLOT}-config /usr/bin/python-config-${SLOT} || die
# Fix collisions between different slots of Python.
mv "${ED}usr/bin/2to3" "${ED}usr/bin/2to3-${SLOT}"
mv "${ED}usr/bin/pydoc" "${ED}usr/bin/pydoc${SLOT}"
mv "${ED}usr/bin/idle" "${ED}usr/bin/idle${SLOT}"
mv "${ED}usr/share/man/man1/python.1" "${ED}usr/share/man/man1/python${SLOT}.1"
rm -f "${ED}usr/bin/smtpd.py"
if use build; then
rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{bsddb,dbhash.py,idlelib,lib-tk,sqlite3,test}
else
use elibc_uclibc && rm -fr "${libdir}/"{bsddb/test,test}
use berkdb || rm -fr "${libdir}/"{bsddb,dbhash.py,test/test_bsddb*}
use sqlite || rm -fr "${libdir}/"{sqlite3,test/test_sqlite*}
use tk || rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,lib-tk}
fi
use threads || rm -fr "${libdir}/multiprocessing"
use wininst || rm -f "${libdir}/distutils/command/"wininst-*.exe
dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS} || die "dodoc failed"
if use examples; then
insinto /usr/share/doc/${PF}/examples
doins -r "${S}"/Tools || die "doins failed"
fi
newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT} || die "newconfd failed"
newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT} || die "newinitd failed"
sed \
-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${SLOT/./_}_PORT:" \
-e "s:@PYDOC@:pydoc${SLOT}:" \
-i "${ED}etc/conf.d/pydoc-${SLOT}" "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed"
# for python-exec
python_export python${SLOT} EPYTHON PYTHON PYTHON_SITEDIR
# if not using a cross-compiler, use the fresh binary
if ! tc-is-cross-compiler; then
local PYTHON=./python \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}.
export LD_LIBRARY_PATH
fi
echo "EPYTHON='${EPYTHON}'" > epython.py
python_domodule epython.py
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version "${CATEGORY}/${PN}:2.6" && ! has_version "${CATEGORY}/${PN}:2.7"; then
python_updater_warning="1"
fi
}
eselect_python_update() {
[[ -z "${EROOT}" || (! -d "${EROOT}" && -d "${ROOT}") ]] && EROOT="${ROOT%/}${EPREFIX}/"
if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
eselect python update
fi
if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
eselect python update --python${PV%%.*}
fi
}
pkg_postinst() {
eselect_python_update
if [[ "${python_updater_warning}" == "1" ]]; then
ewarn "You have just upgraded from an older version of Python."
ewarn "You should switch active version of Python ${PV%%.*} and run"
ewarn "'python-updater [options]' to rebuild Python modules."
fi
}
pkg_postrm() {
eselect_python_update
}

View File

@ -0,0 +1,371 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.6.9.ebuild,v 1.3 2013/12/30 21:57:26 floppym Exp $
EAPI="2"
WANT_AUTOMAKE="none"
WANT_LIBTOOL="none"
inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs multiprocessing
MY_P="Python-${PV}"
PATCHSET_REVISION="0"
DESCRIPTION="An interpreted, interactive, object-oriented programming language"
HOMEPAGE="http://www.python.org/"
SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tgz
mirror://gentoo/python-gentoo-patches-2.6.8-${PATCHSET_REVISION}.tar.bz2"
LICENSE="PSF-2"
SLOT="2.6"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd"
IUSE="-berkdb build doc elibc_uclibc examples gdbm hardened ipv6 +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml"
# Do not add a dependency on dev-lang/python to this ebuild.
# If you need to apply a patch which requires python for bootstrapping, please
# run the bootstrap code on your dev box and include the results in the
# patchset. See bug 447752.
RDEPEND="app-arch/bzip2
>=sys-libs/zlib-1.1.3
virtual/libffi
virtual/libintl
!build? (
berkdb? ( || (
sys-libs/db:4.7
sys-libs/db:4.6
sys-libs/db:4.5
sys-libs/db:4.4
sys-libs/db:4.3
sys-libs/db:4.2
) )
gdbm? ( sys-libs/gdbm[berkdb] )
ncurses? (
>=sys-libs/ncurses-5.2
readline? ( >=sys-libs/readline-4.1 )
)
sqlite? ( >=dev-db/sqlite-3.3.3:3 )
ssl? ( dev-libs/openssl )
tk? (
>=dev-lang/tk-8.0
dev-tcltk/blt
)
xml? ( >=dev-libs/expat-2.1 )
)
!!<sys-apps/portage-2.1.9"
DEPEND="${RDEPEND}
virtual/pkgconfig
>=sys-devel/autoconf-2.61
!sys-devel/gcc[libffi]"
RDEPEND+=" !build? ( app-misc/mime-types )
doc? ( dev-python/python-docs:${SLOT} )"
PDEPEND="app-admin/eselect-python
app-admin/python-updater"
S="${WORKDIR}/${MY_P}"
pkg_setup() {
if use berkdb; then
ewarn "'bsddb' module is out-of-date and no longer maintained inside"
ewarn "dev-lang/python. 'bsddb' and 'dbhash' modules have been additionally"
ewarn "removed in Python 3. A maintained alternative of 'bsddb3' module"
ewarn "is provided by dev-python/bsddb3."
else
if has_version "=${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"; then
ewarn "You are migrating from =${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"
ewarn "to =${CATEGORY}/${PN}-${PV%%.*}*[-berkdb]."
ewarn "You might need to migrate your databases."
fi
fi
}
src_prepare() {
# Ensure that internal copies of expat, libffi and zlib are not used.
rm -fr Modules/expat
rm -fr Modules/_ctypes/libffi*
rm -fr Modules/zlib
local excluded_patches
if ! tc-is-cross-compiler; then
excluded_patches="*_all_crosscompile.patch"
fi
EPATCH_EXCLUDE="${excluded_patches}" EPATCH_SUFFIX="patch" \
epatch "${WORKDIR}/2.6.8-${PATCHSET_REVISION}"
epatch "${FILESDIR}/python-2.5-tcl86.patch"
sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
Lib/distutils/command/install.py \
Lib/distutils/sysconfig.py \
Lib/site.py \
Makefile.pre.in \
Modules/Setup.dist \
Modules/getpath.c \
setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
epatch_user
eautoconf
eautoheader
}
src_configure() {
if use build; then
# Disable extraneous modules with extra dependencies.
export PYTHON_DISABLE_MODULES="dbm _bsddb gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat"
export PYTHON_DISABLE_SSL="1"
else
# dbm module can be linked against berkdb or gdbm.
# Defaults to gdbm when both are enabled, #204343.
local disable
use berkdb || use gdbm || disable+=" dbm"
use berkdb || disable+=" _bsddb"
use gdbm || disable+=" gdbm"
use ncurses || disable+=" _curses _curses_panel"
use readline || disable+=" readline"
use sqlite || disable+=" _sqlite3"
use ssl || export PYTHON_DISABLE_SSL="1"
use tk || disable+=" _tkinter"
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
export PYTHON_DISABLE_MODULES="${disable}"
if ! use xml; then
ewarn "You have configured Python without XML support."
ewarn "This is NOT a recommended configuration as you"
ewarn "may face problems parsing any XML documents."
fi
fi
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
fi
if [[ "$(gcc-major-version)" -ge 4 ]]; then
append-flags -fwrapv
fi
filter-flags -malign-double
[[ "${ARCH}" == "alpha" ]] && append-flags -fPIC
# https://bugs.gentoo.org/show_bug.cgi?id=50309
if is-flagq -O3; then
is-flagq -fstack-protector-all && replace-flags -O3 -O2
use hardened && replace-flags -O3 -O2
fi
# Run the configure scripts in parallel.
multijob_init
mkdir -p "${WORKDIR}"/{${CBUILD},${CHOST}}
if tc-is-cross-compiler; then
(
multijob_child_init
cd "${WORKDIR}"/${CBUILD} >/dev/null
OPT="-O1" CFLAGS="" CPPFLAGS="" LDFLAGS="" CC="" \
"${S}"/configure \
--{build,host}=${CBUILD} \
|| die "cross-configure failed"
) &
multijob_post_fork
fi
# Export CXX so it ends up in /usr/lib/python2.X/config/Makefile.
tc-export CXX
# The configure script fails to use pkg-config correctly.
# http://bugs.python.org/issue15506
export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG)
# Set LDFLAGS so we link modules with -lpython2.6 correctly.
# Needed on FreeBSD unless Python 2.6 is already installed.
# Please query BSD team before removing this!
append-ldflags "-L."
cd "${WORKDIR}"/${CHOST}
ECONF_SOURCE=${S} OPT="" \
econf \
--with-fpectl \
--enable-shared \
$(use_enable ipv6) \
$(use_with threads) \
$(use wide-unicode && echo "--enable-unicode=ucs4" || echo "--enable-unicode=ucs2") \
--infodir='${prefix}/share/info' \
--mandir='${prefix}/share/man' \
--with-libc="" \
--with-system-ffi
if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
eerror "configure has detected that the sem_open function is broken."
eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
die "Broken sem_open function (bug 496328)"
fi
if tc-is-cross-compiler; then
# Modify the Makefile.pre so we don't regen for the host/ one.
# We need to link the host python programs into $PWD and run
# them from here because the distutils sysconfig module will
# parse Makefile/etc... from argv[0], and we need it to pick
# up the target settings, not the host ones.
sed -i \
-e '1iHOSTPYTHONPATH = ./hostpythonpath:' \
-e '/^HOSTPYTHON/s:=.*:= ./hostpython:' \
-e '/^HOSTPGEN/s:=.*:= ./Parser/hostpgen:' \
Makefile{.pre,} || die "sed failed"
fi
multijob_finish
}
src_compile() {
if tc-is-cross-compiler; then
cd "${WORKDIR}"/${CBUILD}
# Disable as many modules as possible -- but we need a few to install.
PYTHON_DISABLE_MODULES=$(
sed -n "/Extension('/{s:^.*Extension('::;s:'.*::;p}" "${S}"/setup.py | \
egrep -v '(unicodedata|time|cStringIO|_struct|binascii)'
) \
PTHON_DISABLE_SSL="1" \
SYSROOT= \
emake || die "cross-make failed"
# See comment in src_configure about these.
ln python ../${CHOST}/hostpython || die
ln Parser/pgen ../${CHOST}/Parser/hostpgen || die
ln -s ../${CBUILD}/build/lib.*/ ../${CHOST}/hostpythonpath || die
fi
cd "${WORKDIR}"/${CHOST}
default
# Work around bug 329499. See also bug 413751.
pax-mark m python
}
src_test() {
# Tests will not work when cross compiling.
if tc-is-cross-compiler; then
elog "Disabling tests due to crosscompiling."
return
fi
cd "${WORKDIR}"/${CHOST}
# Skip failing tests.
local skipped_tests="distutils tcl"
for test in ${skipped_tests}; do
mv "${S}"/Lib/test/test_${test}.py "${T}"
done
# Rerun failed tests in verbose mode (regrtest -w).
PYTHONDONTWRITEBYTECODE="" emake test EXTRATESTOPTS="-w" < /dev/tty
local result="$?"
for test in ${skipped_tests}; do
mv "${T}/test_${test}.py" "${S}"/Lib/test
done
elog "The following tests have been skipped:"
for test in ${skipped_tests}; do
elog "test_${test}.py"
done
elog "If you would like to run them, you may:"
elog "cd '${EPREFIX}/usr/$(get_libdir)/python${SLOT}/test'"
elog "and run the tests separately."
if [[ "${result}" -ne 0 ]]; then
die "emake test failed"
fi
}
src_install() {
[[ -z "${ED}" ]] && ED="${D%/}${EPREFIX}/"
local libdir=${ED}/usr/$(get_libdir)/python${SLOT}
cd "${WORKDIR}"/${CHOST}
emake DESTDIR="${D}" altinstall maninstall || die "emake altinstall maninstall failed"
# Backwards compat with Gentoo divergence.
dosym python${SLOT}-config /usr/bin/python-config-${SLOT} || die
# Fix collisions between different slots of Python.
mv "${ED}usr/bin/2to3" "${ED}usr/bin/2to3-${SLOT}"
mv "${ED}usr/bin/pydoc" "${ED}usr/bin/pydoc${SLOT}"
mv "${ED}usr/bin/idle" "${ED}usr/bin/idle${SLOT}"
mv "${ED}usr/share/man/man1/python.1" "${ED}usr/share/man/man1/python${SLOT}.1"
rm -f "${ED}usr/bin/smtpd.py"
if use build; then
rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{bsddb,dbhash.py,idlelib,lib-tk,sqlite3,test}
else
use elibc_uclibc && rm -fr "${libdir}/"{bsddb/test,test}
use berkdb || rm -fr "${libdir}/"{bsddb,dbhash.py,test/test_bsddb*}
use sqlite || rm -fr "${libdir}/"{sqlite3,test/test_sqlite*}
use tk || rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,lib-tk}
fi
use threads || rm -fr "${libdir}/multiprocessing"
use wininst || rm -f "${libdir}/distutils/command/"wininst-*.exe
dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS} || die "dodoc failed"
if use examples; then
insinto /usr/share/doc/${PF}/examples
doins -r "${S}"/Tools || die "doins failed"
fi
newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT} || die "newconfd failed"
newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT} || die "newinitd failed"
sed \
-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${SLOT/./_}_PORT:" \
-e "s:@PYDOC@:pydoc${SLOT}:" \
-i "${ED}etc/conf.d/pydoc-${SLOT}" "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed"
# for python-exec
python_export python${SLOT} EPYTHON PYTHON PYTHON_SITEDIR
# if not using a cross-compiler, use the fresh binary
if ! tc-is-cross-compiler; then
local PYTHON=./python \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}.
export LD_LIBRARY_PATH
fi
echo "EPYTHON='${EPYTHON}'" > epython.py
python_domodule epython.py
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version "${CATEGORY}/${PN}:2.6" && ! has_version "${CATEGORY}/${PN}:2.7"; then
python_updater_warning="1"
fi
}
eselect_python_update() {
[[ -z "${EROOT}" || (! -d "${EROOT}" && -d "${ROOT}") ]] && EROOT="${ROOT%/}${EPREFIX}/"
if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
eselect python update
fi
if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
eselect python update --python${PV%%.*}
fi
}
pkg_postinst() {
eselect_python_update
if [[ "${python_updater_warning}" == "1" ]]; then
ewarn "You have just upgraded from an older version of Python."
ewarn "You should switch active version of Python ${PV%%.*} and run"
ewarn "'python-updater [options]' to rebuild Python modules."
fi
}
pkg_postrm() {
eselect_python_update
}

View File

@ -0,0 +1,355 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.7.5-r3.ebuild,v 1.4 2014/01/18 11:37:42 vapier Exp $
EAPI="4"
WANT_AUTOMAKE="none"
WANT_LIBTOOL="none"
inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs multiprocessing
MY_P="Python-${PV}"
PATCHSET_REVISION="0"
DESCRIPTION="An interpreted, interactive, object-oriented programming language"
HOMEPAGE="http://www.python.org/"
SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz
mirror://gentoo/python-gentoo-patches-${PV}-${PATCHSET_REVISION}.tar.xz"
LICENSE="PSF-2"
SLOT="2.7"
KEYWORDS="alpha amd64 arm arm64 hppa ia64 ~m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
IUSE="-berkdb build doc elibc_uclibc examples gdbm hardened ipv6 +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml"
# Do not add a dependency on dev-lang/python to this ebuild.
# If you need to apply a patch which requires python for bootstrapping, please
# run the bootstrap code on your dev box and include the results in the
# patchset. See bug 447752.
RDEPEND="app-arch/bzip2
>=sys-libs/zlib-1.1.3
virtual/libffi
virtual/libintl
!build? (
berkdb? ( || (
sys-libs/db:5.3
sys-libs/db:5.2
sys-libs/db:5.1
sys-libs/db:5.0
sys-libs/db:4.8
sys-libs/db:4.7
sys-libs/db:4.6
sys-libs/db:4.5
sys-libs/db:4.4
sys-libs/db:4.3
sys-libs/db:4.2
) )
gdbm? ( sys-libs/gdbm[berkdb] )
ncurses? (
>=sys-libs/ncurses-5.2
readline? ( >=sys-libs/readline-4.1 )
)
sqlite? ( >=dev-db/sqlite-3.3.8:3 )
ssl? ( dev-libs/openssl )
tk? (
>=dev-lang/tk-8.0
dev-tcltk/blt
)
xml? ( >=dev-libs/expat-2.1 )
)
!!<sys-apps/portage-2.1.9"
DEPEND="${RDEPEND}
virtual/pkgconfig
>=sys-devel/autoconf-2.65
!sys-devel/gcc[libffi]"
RDEPEND+=" !build? ( app-misc/mime-types )
doc? ( dev-python/python-docs:${SLOT} )"
PDEPEND="app-admin/eselect-python
app-admin/python-updater"
S="${WORKDIR}/${MY_P}"
pkg_setup() {
if use berkdb; then
ewarn "'bsddb' module is out-of-date and no longer maintained inside"
ewarn "dev-lang/python. 'bsddb' and 'dbhash' modules have been additionally"
ewarn "removed in Python 3. A maintained alternative of 'bsddb3' module"
ewarn "is provided by dev-python/bsddb3."
else
if has_version "=${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"; then
ewarn "You are migrating from =${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"
ewarn "to =${CATEGORY}/${PN}-${PV%%.*}*[-berkdb]."
ewarn "You might need to migrate your databases."
fi
fi
}
src_prepare() {
# Ensure that internal copies of expat, libffi and zlib are not used.
rm -r Modules/expat || die
rm -r Modules/_ctypes/libffi* || die
rm -r Modules/zlib || die
if tc-is-cross-compiler; then
local EPATCH_EXCLUDE="*_regenerate_platform-specific_modules.patch"
fi
EPATCH_SUFFIX="patch" epatch "${WORKDIR}/${PV}-${PATCHSET_REVISION}"
epatch "${FILESDIR}/${P}-library-path.patch" #474882
epatch "${FILESDIR}/${P}-re_unsigned_ptrdiff.patch" #476426
epatch "${FILESDIR}/CVE-2013-4238_py27.patch"
epatch "${FILESDIR}/python-2.7-issue16248.patch"
# Fix for cross-compiling.
epatch "${FILESDIR}/python-2.7.5-nonfatal-compileall.patch"
sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
Lib/distutils/command/install.py \
Lib/distutils/sysconfig.py \
Lib/site.py \
Lib/sysconfig.py \
Lib/test/test_site.py \
Makefile.pre.in \
Modules/Setup.dist \
Modules/getpath.c \
setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
epatch_user
eautoconf
eautoheader
}
src_configure() {
if use build; then
# Disable extraneous modules with extra dependencies.
export PYTHON_DISABLE_MODULES="dbm _bsddb gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat"
export PYTHON_DISABLE_SSL="1"
else
# dbm module can be linked against berkdb or gdbm.
# Defaults to gdbm when both are enabled, #204343.
local disable
use berkdb || use gdbm || disable+=" dbm"
use berkdb || disable+=" _bsddb"
use gdbm || disable+=" gdbm"
use ncurses || disable+=" _curses _curses_panel"
use readline || disable+=" readline"
use sqlite || disable+=" _sqlite3"
use ssl || export PYTHON_DISABLE_SSL="1"
use tk || disable+=" _tkinter"
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
export PYTHON_DISABLE_MODULES="${disable}"
if ! use xml; then
ewarn "You have configured Python without XML support."
ewarn "This is NOT a recommended configuration as you"
ewarn "may face problems parsing any XML documents."
fi
fi
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
fi
if [[ "$(gcc-major-version)" -ge 4 ]]; then
append-flags -fwrapv
fi
filter-flags -malign-double
[[ "${ARCH}" == "alpha" ]] && append-flags -fPIC
# https://bugs.gentoo.org/show_bug.cgi?id=50309
if is-flagq -O3; then
is-flagq -fstack-protector-all && replace-flags -O3 -O2
use hardened && replace-flags -O3 -O2
fi
# Export CXX so it ends up in /usr/lib/python2.X/config/Makefile.
tc-export CXX
# The configure script fails to use pkg-config correctly.
# http://bugs.python.org/issue15506
export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG)
# Set LDFLAGS so we link modules with -lpython2.7 correctly.
# Needed on FreeBSD unless Python 2.7 is already installed.
# Please query BSD team before removing this!
append-ldflags "-L."
local dbmliborder
if use gdbm; then
dbmliborder+="${dbmliborder:+:}gdbm"
fi
if use berkdb; then
dbmliborder+="${dbmliborder:+:}bdb"
fi
BUILD_DIR="${WORKDIR}/${CHOST}"
mkdir -p "${BUILD_DIR}" || die
cd "${BUILD_DIR}" || die
ECONF_SOURCE="${S}" OPT="" \
econf \
--with-fpectl \
--enable-shared \
$(use_enable ipv6) \
$(use_with threads) \
$(use wide-unicode && echo "--enable-unicode=ucs4" || echo "--enable-unicode=ucs2") \
--infodir='${prefix}/share/info' \
--mandir='${prefix}/share/man' \
--with-dbmliborder="${dbmliborder}" \
--with-libc="" \
--enable-loadable-sqlite-extensions \
--with-system-expat \
--with-system-ffi
if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
eerror "configure has detected that the sem_open function is broken."
eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
die "Broken sem_open function (bug 496328)"
fi
}
src_compile() {
# Avoid invoking pgen for cross-compiles.
touch Include/graminit.h Python/graminit.c
cd "${BUILD_DIR}" || die
emake
# Work around bug 329499. See also bug 413751 and 457194.
if has_version dev-libs/libffi[pax_kernel]; then
pax-mark E python
else
pax-mark m python
fi
}
src_test() {
# Tests will not work when cross compiling.
if tc-is-cross-compiler; then
elog "Disabling tests due to crosscompiling."
return
fi
cd "${BUILD_DIR}" || die
# Skip failing tests.
local skipped_tests="distutils gdb"
for test in ${skipped_tests}; do
mv "${S}"/Lib/test/test_${test}.py "${T}"
done
# Rerun failed tests in verbose mode (regrtest -w).
emake test EXTRATESTOPTS="-w" < /dev/tty
local result="$?"
for test in ${skipped_tests}; do
mv "${T}/test_${test}.py" "${S}"/Lib/test
done
elog "The following tests have been skipped:"
for test in ${skipped_tests}; do
elog "test_${test}.py"
done
elog "If you would like to run them, you may:"
elog "cd '${EPREFIX}/usr/$(get_libdir)/python${SLOT}/test'"
elog "and run the tests separately."
if [[ "${result}" -ne 0 ]]; then
die "emake test failed"
fi
}
src_install() {
local libdir=${ED}/usr/$(get_libdir)/python${SLOT}
cd "${BUILD_DIR}" || die
emake DESTDIR="${D}" altinstall
sed -e "s/\(LDFLAGS=\).*/\1/" -i "${libdir}/config/Makefile" || die "sed failed"
# Backwards compat with Gentoo divergence.
dosym python${SLOT}-config /usr/bin/python-config-${SLOT}
# Fix collisions between different slots of Python.
mv "${ED}usr/bin/2to3" "${ED}usr/bin/2to3-${SLOT}"
mv "${ED}usr/bin/pydoc" "${ED}usr/bin/pydoc${SLOT}"
mv "${ED}usr/bin/idle" "${ED}usr/bin/idle${SLOT}"
rm -f "${ED}usr/bin/smtpd.py"
if use build; then
rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{bsddb,dbhash.py,idlelib,lib-tk,sqlite3,test}
else
use berkdb || rm -r "${libdir}/"{bsddb,dbhash.py,test/test_bsddb*} || die
use sqlite || rm -r "${libdir}/"{sqlite3,test/test_sqlite*} || die
use tk || rm -r "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,lib-tk} || die
use elibc_uclibc && rm -fr "${libdir}/"{bsddb/test,test}
fi
use threads || rm -r "${libdir}/multiprocessing" || die
use wininst || rm -r "${libdir}/distutils/command/"wininst-*.exe || die
dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS} || die "dodoc failed"
if use examples; then
insinto /usr/share/doc/${PF}/examples
doins -r "${S}"/Tools
fi
insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \
emake --no-print-directory -s -f - 2>/dev/null)
newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py
newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT}
newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT}
sed \
-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${SLOT/./_}_PORT:" \
-e "s:@PYDOC@:pydoc${SLOT}:" \
-i "${ED}etc/conf.d/pydoc-${SLOT}" "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed"
# for python-exec
python_export python${SLOT} EPYTHON PYTHON PYTHON_SITEDIR
# if not using a cross-compiler, use the fresh binary
if ! tc-is-cross-compiler; then
local PYTHON=./python
local -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}.
fi
echo "EPYTHON='${EPYTHON}'" > epython.py
python_domodule epython.py
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version "${CATEGORY}/${PN}:2.7"; then
python_updater_warning="1"
fi
}
eselect_python_update() {
if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
eselect python update
fi
if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
eselect python update --python${PV%%.*}
fi
}
pkg_postinst() {
eselect_python_update
if [[ "${python_updater_warning}" == "1" ]]; then
ewarn "You have just upgraded from an older version of Python."
ewarn "You should switch active version of Python ${PV%%.*} and run"
ewarn "'python-updater [options]' to rebuild Python modules."
fi
}
pkg_postrm() {
eselect_python_update
}

View File

@ -0,0 +1,356 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.7.5-r4.ebuild,v 1.4 2014/01/18 11:37:42 vapier Exp $
EAPI="4"
WANT_AUTOMAKE="none"
WANT_LIBTOOL="none"
inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs multiprocessing
MY_P="Python-${PV}"
PATCHSET_REVISION="0"
DESCRIPTION="An interpreted, interactive, object-oriented programming language"
HOMEPAGE="http://www.python.org/"
SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz
mirror://gentoo/python-gentoo-patches-${PV}-${PATCHSET_REVISION}.tar.xz"
LICENSE="PSF-2"
SLOT="2.7"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
IUSE="-berkdb build doc elibc_uclibc examples gdbm hardened ipv6 +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml"
# Do not add a dependency on dev-lang/python to this ebuild.
# If you need to apply a patch which requires python for bootstrapping, please
# run the bootstrap code on your dev box and include the results in the
# patchset. See bug 447752.
RDEPEND="app-arch/bzip2
>=sys-libs/zlib-1.1.3
virtual/libffi
virtual/libintl
!build? (
berkdb? ( || (
sys-libs/db:5.3
sys-libs/db:5.2
sys-libs/db:5.1
sys-libs/db:5.0
sys-libs/db:4.8
sys-libs/db:4.7
sys-libs/db:4.6
sys-libs/db:4.5
sys-libs/db:4.4
sys-libs/db:4.3
sys-libs/db:4.2
) )
gdbm? ( sys-libs/gdbm[berkdb] )
ncurses? (
>=sys-libs/ncurses-5.2
readline? ( >=sys-libs/readline-4.1 )
)
sqlite? ( >=dev-db/sqlite-3.3.8:3 )
ssl? ( dev-libs/openssl )
tk? (
>=dev-lang/tk-8.0
dev-tcltk/blt
)
xml? ( >=dev-libs/expat-2.1 )
)
!!<sys-apps/portage-2.1.9"
DEPEND="${RDEPEND}
virtual/pkgconfig
>=sys-devel/autoconf-2.65
!sys-devel/gcc[libffi]"
RDEPEND+=" !build? ( app-misc/mime-types )
doc? ( dev-python/python-docs:${SLOT} )"
PDEPEND="app-admin/eselect-python
app-admin/python-updater"
S="${WORKDIR}/${MY_P}"
pkg_setup() {
if use berkdb; then
ewarn "'bsddb' module is out-of-date and no longer maintained inside"
ewarn "dev-lang/python. 'bsddb' and 'dbhash' modules have been additionally"
ewarn "removed in Python 3. A maintained alternative of 'bsddb3' module"
ewarn "is provided by dev-python/bsddb3."
else
if has_version "=${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"; then
ewarn "You are migrating from =${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"
ewarn "to =${CATEGORY}/${PN}-${PV%%.*}*[-berkdb]."
ewarn "You might need to migrate your databases."
fi
fi
}
src_prepare() {
# Ensure that internal copies of expat, libffi and zlib are not used.
rm -r Modules/expat || die
rm -r Modules/_ctypes/libffi* || die
rm -r Modules/zlib || die
if tc-is-cross-compiler; then
local EPATCH_EXCLUDE="*_regenerate_platform-specific_modules.patch"
fi
EPATCH_SUFFIX="patch" epatch "${WORKDIR}/${PV}-${PATCHSET_REVISION}"
epatch "${FILESDIR}/${P}-library-path.patch" #474882
epatch "${FILESDIR}/${P}-re_unsigned_ptrdiff.patch" #476426
epatch "${FILESDIR}/CVE-2013-4238_py27.patch"
epatch "${FILESDIR}/python-2.7-issue16248.patch"
epatch "${FILESDIR}/python-2.7-issue18851.patch"
# Fix for cross-compiling.
epatch "${FILESDIR}/python-2.7.5-nonfatal-compileall.patch"
sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
Lib/distutils/command/install.py \
Lib/distutils/sysconfig.py \
Lib/site.py \
Lib/sysconfig.py \
Lib/test/test_site.py \
Makefile.pre.in \
Modules/Setup.dist \
Modules/getpath.c \
setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
epatch_user
eautoconf
eautoheader
}
src_configure() {
if use build; then
# Disable extraneous modules with extra dependencies.
export PYTHON_DISABLE_MODULES="dbm _bsddb gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat"
export PYTHON_DISABLE_SSL="1"
else
# dbm module can be linked against berkdb or gdbm.
# Defaults to gdbm when both are enabled, #204343.
local disable
use berkdb || use gdbm || disable+=" dbm"
use berkdb || disable+=" _bsddb"
use gdbm || disable+=" gdbm"
use ncurses || disable+=" _curses _curses_panel"
use readline || disable+=" readline"
use sqlite || disable+=" _sqlite3"
use ssl || export PYTHON_DISABLE_SSL="1"
use tk || disable+=" _tkinter"
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
export PYTHON_DISABLE_MODULES="${disable}"
if ! use xml; then
ewarn "You have configured Python without XML support."
ewarn "This is NOT a recommended configuration as you"
ewarn "may face problems parsing any XML documents."
fi
fi
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
fi
if [[ "$(gcc-major-version)" -ge 4 ]]; then
append-flags -fwrapv
fi
filter-flags -malign-double
[[ "${ARCH}" == "alpha" ]] && append-flags -fPIC
# https://bugs.gentoo.org/show_bug.cgi?id=50309
if is-flagq -O3; then
is-flagq -fstack-protector-all && replace-flags -O3 -O2
use hardened && replace-flags -O3 -O2
fi
# Export CXX so it ends up in /usr/lib/python2.X/config/Makefile.
tc-export CXX
# The configure script fails to use pkg-config correctly.
# http://bugs.python.org/issue15506
export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG)
# Set LDFLAGS so we link modules with -lpython2.7 correctly.
# Needed on FreeBSD unless Python 2.7 is already installed.
# Please query BSD team before removing this!
append-ldflags "-L."
local dbmliborder
if use gdbm; then
dbmliborder+="${dbmliborder:+:}gdbm"
fi
if use berkdb; then
dbmliborder+="${dbmliborder:+:}bdb"
fi
BUILD_DIR="${WORKDIR}/${CHOST}"
mkdir -p "${BUILD_DIR}" || die
cd "${BUILD_DIR}" || die
ECONF_SOURCE="${S}" OPT="" \
econf \
--with-fpectl \
--enable-shared \
$(use_enable ipv6) \
$(use_with threads) \
$(use wide-unicode && echo "--enable-unicode=ucs4" || echo "--enable-unicode=ucs2") \
--infodir='${prefix}/share/info' \
--mandir='${prefix}/share/man' \
--with-dbmliborder="${dbmliborder}" \
--with-libc="" \
--enable-loadable-sqlite-extensions \
--with-system-expat \
--with-system-ffi
if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
eerror "configure has detected that the sem_open function is broken."
eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
die "Broken sem_open function (bug 496328)"
fi
}
src_compile() {
# Avoid invoking pgen for cross-compiles.
touch Include/graminit.h Python/graminit.c
cd "${BUILD_DIR}" || die
emake
# Work around bug 329499. See also bug 413751 and 457194.
if has_version dev-libs/libffi[pax_kernel]; then
pax-mark E python
else
pax-mark m python
fi
}
src_test() {
# Tests will not work when cross compiling.
if tc-is-cross-compiler; then
elog "Disabling tests due to crosscompiling."
return
fi
cd "${BUILD_DIR}" || die
# Skip failing tests.
local skipped_tests="distutils gdb"
for test in ${skipped_tests}; do
mv "${S}"/Lib/test/test_${test}.py "${T}"
done
# Rerun failed tests in verbose mode (regrtest -w).
emake test EXTRATESTOPTS="-w" < /dev/tty
local result="$?"
for test in ${skipped_tests}; do
mv "${T}/test_${test}.py" "${S}"/Lib/test
done
elog "The following tests have been skipped:"
for test in ${skipped_tests}; do
elog "test_${test}.py"
done
elog "If you would like to run them, you may:"
elog "cd '${EPREFIX}/usr/$(get_libdir)/python${SLOT}/test'"
elog "and run the tests separately."
if [[ "${result}" -ne 0 ]]; then
die "emake test failed"
fi
}
src_install() {
local libdir=${ED}/usr/$(get_libdir)/python${SLOT}
cd "${BUILD_DIR}" || die
emake DESTDIR="${D}" altinstall
sed -e "s/\(LDFLAGS=\).*/\1/" -i "${libdir}/config/Makefile" || die "sed failed"
# Backwards compat with Gentoo divergence.
dosym python${SLOT}-config /usr/bin/python-config-${SLOT}
# Fix collisions between different slots of Python.
mv "${ED}usr/bin/2to3" "${ED}usr/bin/2to3-${SLOT}"
mv "${ED}usr/bin/pydoc" "${ED}usr/bin/pydoc${SLOT}"
mv "${ED}usr/bin/idle" "${ED}usr/bin/idle${SLOT}"
rm -f "${ED}usr/bin/smtpd.py"
if use build; then
rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{bsddb,dbhash.py,idlelib,lib-tk,sqlite3,test}
else
use berkdb || rm -r "${libdir}/"{bsddb,dbhash.py,test/test_bsddb*} || die
use sqlite || rm -r "${libdir}/"{sqlite3,test/test_sqlite*} || die
use tk || rm -r "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,lib-tk} || die
use elibc_uclibc && rm -fr "${libdir}/"{bsddb/test,test}
fi
use threads || rm -r "${libdir}/multiprocessing" || die
use wininst || rm -r "${libdir}/distutils/command/"wininst-*.exe || die
dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS} || die "dodoc failed"
if use examples; then
insinto /usr/share/doc/${PF}/examples
doins -r "${S}"/Tools
fi
insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \
emake --no-print-directory -s -f - 2>/dev/null)
newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py
newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT}
newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT}
sed \
-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${SLOT/./_}_PORT:" \
-e "s:@PYDOC@:pydoc${SLOT}:" \
-i "${ED}etc/conf.d/pydoc-${SLOT}" "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed"
# for python-exec
python_export python${SLOT} EPYTHON PYTHON PYTHON_SITEDIR
# if not using a cross-compiler, use the fresh binary
if ! tc-is-cross-compiler; then
local PYTHON=./python
local -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}.
fi
echo "EPYTHON='${EPYTHON}'" > epython.py
python_domodule epython.py
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version "${CATEGORY}/${PN}:2.7"; then
python_updater_warning="1"
fi
}
eselect_python_update() {
if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
eselect python update
fi
if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
eselect python update --python${PV%%.*}
fi
}
pkg_postinst() {
eselect_python_update
if [[ "${python_updater_warning}" == "1" ]]; then
ewarn "You have just upgraded from an older version of Python."
ewarn "You should switch active version of Python ${PV%%.*} and run"
ewarn "'python-updater [options]' to rebuild Python modules."
fi
}
pkg_postrm() {
eselect_python_update
}

View File

@ -0,0 +1,357 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.7.6.ebuild,v 1.6 2014/01/18 11:40:40 vapier Exp $
EAPI="4"
WANT_AUTOMAKE="none"
WANT_LIBTOOL="none"
inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs multiprocessing
MY_P="Python-${PV}"
PATCHSET_REVISION="0"
DESCRIPTION="An interpreted, interactive, object-oriented programming language"
HOMEPAGE="http://www.python.org/"
SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz
mirror://gentoo/python-gentoo-patches-${PV}-${PATCHSET_REVISION}.tar.xz
http://dev.gentoo.org/~floppym/python/python-gentoo-patches-${PV}-${PATCHSET_REVISION}.tar.xz"
LICENSE="PSF-2"
SLOT="2.7"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
IUSE="-berkdb build doc elibc_uclibc examples gdbm hardened ipv6 +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml"
# Do not add a dependency on dev-lang/python to this ebuild.
# If you need to apply a patch which requires python for bootstrapping, please
# run the bootstrap code on your dev box and include the results in the
# patchset. See bug 447752.
RDEPEND="app-arch/bzip2
>=sys-libs/zlib-1.1.3
virtual/libffi
virtual/libintl
!build? (
berkdb? ( || (
sys-libs/db:5.3
sys-libs/db:5.2
sys-libs/db:5.1
sys-libs/db:5.0
sys-libs/db:4.8
sys-libs/db:4.7
sys-libs/db:4.6
sys-libs/db:4.5
sys-libs/db:4.4
sys-libs/db:4.3
sys-libs/db:4.2
) )
gdbm? ( sys-libs/gdbm[berkdb] )
ncurses? (
>=sys-libs/ncurses-5.2
readline? ( >=sys-libs/readline-4.1 )
)
sqlite? ( >=dev-db/sqlite-3.3.8:3 )
ssl? ( dev-libs/openssl )
tk? (
>=dev-lang/tk-8.0
dev-tcltk/blt
)
xml? ( >=dev-libs/expat-2.1 )
)
!!<sys-apps/portage-2.1.9"
DEPEND="${RDEPEND}
virtual/pkgconfig
>=sys-devel/autoconf-2.65
!sys-devel/gcc[libffi]"
RDEPEND+=" !build? ( app-misc/mime-types )
doc? ( dev-python/python-docs:${SLOT} )"
PDEPEND="app-admin/eselect-python
app-admin/python-updater"
S="${WORKDIR}/${MY_P}"
pkg_setup() {
if use berkdb; then
ewarn "'bsddb' module is out-of-date and no longer maintained inside"
ewarn "dev-lang/python. 'bsddb' and 'dbhash' modules have been additionally"
ewarn "removed in Python 3. A maintained alternative of 'bsddb3' module"
ewarn "is provided by dev-python/bsddb3."
else
if has_version "=${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"; then
ewarn "You are migrating from =${CATEGORY}/${PN}-${PV%%.*}*[berkdb]"
ewarn "to =${CATEGORY}/${PN}-${PV%%.*}*[-berkdb]."
ewarn "You might need to migrate your databases."
fi
fi
}
src_prepare() {
# Ensure that internal copies of expat, libffi and zlib are not used.
rm -r Modules/expat || die
rm -r Modules/_ctypes/libffi* || die
rm -r Modules/zlib || die
if tc-is-cross-compiler; then
local EPATCH_EXCLUDE="*_regenerate_platform-specific_modules.patch"
fi
EPATCH_SUFFIX="patch" epatch "${WORKDIR}/patches"
# Fix for cross-compiling.
epatch "${FILESDIR}/python-2.7.5-nonfatal-compileall.patch"
sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
Lib/distutils/command/install.py \
Lib/distutils/sysconfig.py \
Lib/site.py \
Lib/sysconfig.py \
Lib/test/test_site.py \
Makefile.pre.in \
Modules/Setup.dist \
Modules/getpath.c \
setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
epatch_user
eautoconf
eautoheader
}
src_configure() {
if use build; then
# Disable extraneous modules with extra dependencies.
export PYTHON_DISABLE_MODULES="dbm _bsddb gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat"
export PYTHON_DISABLE_SSL="1"
else
# dbm module can be linked against berkdb or gdbm.
# Defaults to gdbm when both are enabled, #204343.
local disable
use berkdb || use gdbm || disable+=" dbm"
use berkdb || disable+=" _bsddb"
use gdbm || disable+=" gdbm"
use ncurses || disable+=" _curses _curses_panel"
use readline || disable+=" readline"
use sqlite || disable+=" _sqlite3"
use ssl || export PYTHON_DISABLE_SSL="1"
use tk || disable+=" _tkinter"
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
export PYTHON_DISABLE_MODULES="${disable}"
if ! use xml; then
ewarn "You have configured Python without XML support."
ewarn "This is NOT a recommended configuration as you"
ewarn "may face problems parsing any XML documents."
fi
fi
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
fi
if [[ "$(gcc-major-version)" -ge 4 ]]; then
append-flags -fwrapv
fi
filter-flags -malign-double
[[ "${ARCH}" == "alpha" ]] && append-flags -fPIC
# https://bugs.gentoo.org/show_bug.cgi?id=50309
if is-flagq -O3; then
is-flagq -fstack-protector-all && replace-flags -O3 -O2
use hardened && replace-flags -O3 -O2
fi
if tc-is-cross-compiler; then
# Force some tests that try to poke fs paths.
export ac_cv_file__dev_ptc=no
export ac_cv_file__dev_ptmx=yes
fi
# Export CXX so it ends up in /usr/lib/python2.X/config/Makefile.
tc-export CXX
# The configure script fails to use pkg-config correctly.
# http://bugs.python.org/issue15506
export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG)
# Set LDFLAGS so we link modules with -lpython2.7 correctly.
# Needed on FreeBSD unless Python 2.7 is already installed.
# Please query BSD team before removing this!
append-ldflags "-L."
local dbmliborder
if use gdbm; then
dbmliborder+="${dbmliborder:+:}gdbm"
fi
if use berkdb; then
dbmliborder+="${dbmliborder:+:}bdb"
fi
BUILD_DIR="${WORKDIR}/${CHOST}"
mkdir -p "${BUILD_DIR}" || die
cd "${BUILD_DIR}" || die
ECONF_SOURCE="${S}" OPT="" \
econf \
--with-fpectl \
--enable-shared \
$(use_enable ipv6) \
$(use_with threads) \
$(use wide-unicode && echo "--enable-unicode=ucs4" || echo "--enable-unicode=ucs2") \
--infodir='${prefix}/share/info' \
--mandir='${prefix}/share/man' \
--with-dbmliborder="${dbmliborder}" \
--with-libc="" \
--enable-loadable-sqlite-extensions \
--with-system-expat \
--with-system-ffi
if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
eerror "configure has detected that the sem_open function is broken."
eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
die "Broken sem_open function (bug 496328)"
fi
}
src_compile() {
# Avoid invoking pgen for cross-compiles.
touch Include/graminit.h Python/graminit.c
cd "${BUILD_DIR}" || die
emake
# Work around bug 329499. See also bug 413751 and 457194.
if has_version dev-libs/libffi[pax_kernel]; then
pax-mark E python
else
pax-mark m python
fi
}
src_test() {
# Tests will not work when cross compiling.
if tc-is-cross-compiler; then
elog "Disabling tests due to crosscompiling."
return
fi
cd "${BUILD_DIR}" || die
# Skip failing tests.
local skipped_tests="distutils gdb"
for test in ${skipped_tests}; do
mv "${S}"/Lib/test/test_${test}.py "${T}"
done
# Rerun failed tests in verbose mode (regrtest -w).
emake test EXTRATESTOPTS="-w" < /dev/tty
local result="$?"
for test in ${skipped_tests}; do
mv "${T}/test_${test}.py" "${S}"/Lib/test
done
elog "The following tests have been skipped:"
for test in ${skipped_tests}; do
elog "test_${test}.py"
done
elog "If you would like to run them, you may:"
elog "cd '${EPREFIX}/usr/$(get_libdir)/python${SLOT}/test'"
elog "and run the tests separately."
if [[ "${result}" -ne 0 ]]; then
die "emake test failed"
fi
}
src_install() {
local libdir=${ED}/usr/$(get_libdir)/python${SLOT}
cd "${BUILD_DIR}" || die
emake DESTDIR="${D}" altinstall
sed -e "s/\(LDFLAGS=\).*/\1/" -i "${libdir}/config/Makefile" || die "sed failed"
# Backwards compat with Gentoo divergence.
dosym python${SLOT}-config /usr/bin/python-config-${SLOT}
# Fix collisions between different slots of Python.
mv "${ED}usr/bin/2to3" "${ED}usr/bin/2to3-${SLOT}"
mv "${ED}usr/bin/pydoc" "${ED}usr/bin/pydoc${SLOT}"
mv "${ED}usr/bin/idle" "${ED}usr/bin/idle${SLOT}"
rm -f "${ED}usr/bin/smtpd.py"
if use build; then
rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{bsddb,dbhash.py,idlelib,lib-tk,sqlite3,test}
else
use berkdb || rm -r "${libdir}/"{bsddb,dbhash.py,test/test_bsddb*} || die
use sqlite || rm -r "${libdir}/"{sqlite3,test/test_sqlite*} || die
use tk || rm -r "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,lib-tk} || die
use elibc_uclibc && rm -fr "${libdir}/"{bsddb/test,test}
fi
use threads || rm -r "${libdir}/multiprocessing" || die
use wininst || rm -r "${libdir}/distutils/command/"wininst-*.exe || die
dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS}
if use examples; then
insinto /usr/share/doc/${PF}/examples
doins -r "${S}"/Tools
fi
insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \
emake --no-print-directory -s -f - 2>/dev/null)
newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py
newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT}
newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT}
sed \
-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${SLOT/./_}_PORT:" \
-e "s:@PYDOC@:pydoc${SLOT}:" \
-i "${ED}etc/conf.d/pydoc-${SLOT}" "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed"
# for python-exec
python_export python${SLOT} EPYTHON PYTHON PYTHON_SITEDIR
# if not using a cross-compiler, use the fresh binary
if ! tc-is-cross-compiler; then
local PYTHON=./python
local -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}.
fi
echo "EPYTHON='${EPYTHON}'" > epython.py
python_domodule epython.py
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version "${CATEGORY}/${PN}:2.7"; then
python_updater_warning="1"
fi
}
eselect_python_update() {
if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
eselect python update
fi
if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
eselect python update --python${PV%%.*}
fi
}
pkg_postinst() {
eselect_python_update
if [[ "${python_updater_warning}" == "1" ]]; then
ewarn "You have just upgraded from an older version of Python."
ewarn "You should switch active version of Python ${PV%%.*} and run"
ewarn "'python-updater [options]' to rebuild Python modules."
fi
}
pkg_postrm() {
eselect_python_update
}

View File

@ -0,0 +1,376 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-3.2.5-r3.ebuild,v 1.3 2013/12/30 21:57:26 floppym Exp $
EAPI="4"
WANT_AUTOMAKE="none"
WANT_LIBTOOL="none"
inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs multiprocessing
MY_P="Python-${PV}"
PATCHSET_REVISION="0"
DESCRIPTION="An interpreted, interactive, object-oriented programming language"
HOMEPAGE="http://www.python.org/"
SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz
mirror://gentoo/python-gentoo-patches-${PV}-${PATCHSET_REVISION}.tar.xz"
LICENSE="PSF-2"
SLOT="3.2"
KEYWORDS="alpha amd64 arm hppa ia64 ~m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
IUSE="build doc elibc_uclibc examples gdbm hardened ipv6 +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml"
# Do not add a dependency on dev-lang/python to this ebuild.
# If you need to apply a patch which requires python for bootstrapping, please
# run the bootstrap code on your dev box and include the results in the
# patchset. See bug 447752.
RDEPEND="app-arch/bzip2
>=sys-libs/zlib-1.1.3
virtual/libffi
virtual/libintl
!build? (
gdbm? ( sys-libs/gdbm[berkdb] )
ncurses? (
>=sys-libs/ncurses-5.2
readline? ( >=sys-libs/readline-4.1 )
)
sqlite? ( >=dev-db/sqlite-3.3.8:3 )
ssl? ( dev-libs/openssl )
tk? (
>=dev-lang/tk-8.0
dev-tcltk/blt
)
xml? ( >=dev-libs/expat-2.1 )
)"
DEPEND="${RDEPEND}
virtual/pkgconfig
>=sys-devel/autoconf-2.65
!sys-devel/gcc[libffi]"
RDEPEND+=" !build? ( app-misc/mime-types )
doc? ( dev-python/python-docs:${SLOT} )"
PDEPEND="app-admin/eselect-python
app-admin/python-updater"
S="${WORKDIR}/${MY_P}"
pkg_setup() {
if [[ "${PV}" =~ ^3\.2(\.[1234])?(_pre)? ]]; then
rm -f "${EROOT}usr/$(get_libdir)/llibpython3.so"
else
die "Deprecated code not deleted"
fi
}
src_prepare() {
# Ensure that internal copies of expat, libffi and zlib are not used.
rm -r Modules/expat
rm -r Modules/_ctypes/libffi*
rm -r Modules/zlib
local excluded_patches
if ! tc-is-cross-compiler; then
excluded_patches="*_all_crosscompile.patch"
fi
EPATCH_EXCLUDE="${excluded_patches}" EPATCH_SUFFIX="patch" \
epatch "${WORKDIR}/${PV}-${PATCHSET_REVISION}"
epatch "${FILESDIR}/python-3.2-CVE-2013-2099.patch"
epatch "${FILESDIR}/CVE-2013-4238_py33.patch"
epatch "${FILESDIR}/python-3.2-issue16248.patch"
sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
Lib/distutils/command/install.py \
Lib/distutils/sysconfig.py \
Lib/site.py \
Lib/sysconfig.py \
Lib/test/test_site.py \
Makefile.pre.in \
Modules/Setup.dist \
Modules/getpath.c \
setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
# Disable ABI flags.
sed -e "s/ABIFLAGS=\"\${ABIFLAGS}.*\"/:/" -i configure.ac || die "sed failed"
epatch_user
eautoconf
eautoheader
}
src_configure() {
if use build; then
# Disable extraneous modules with extra dependencies.
export PYTHON_DISABLE_MODULES="gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat"
export PYTHON_DISABLE_SSL="1"
else
local disable
use gdbm || disable+=" gdbm"
use ncurses || disable+=" _curses _curses_panel"
use readline || disable+=" readline"
use sqlite || disable+=" _sqlite3"
use ssl || export PYTHON_DISABLE_SSL="1"
use tk || disable+=" _tkinter"
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
export PYTHON_DISABLE_MODULES="${disable}"
if ! use xml; then
ewarn "You have configured Python without XML support."
ewarn "This is NOT a recommended configuration as you"
ewarn "may face problems parsing any XML documents."
fi
fi
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
fi
if [[ "$(gcc-major-version)" -ge 4 ]]; then
append-flags -fwrapv
fi
filter-flags -malign-double
[[ "${ARCH}" == "alpha" ]] && append-flags -fPIC
# https://bugs.gentoo.org/show_bug.cgi?id=50309
if is-flagq -O3; then
is-flagq -fstack-protector-all && replace-flags -O3 -O2
use hardened && replace-flags -O3 -O2
fi
# Run the configure scripts in parallel.
multijob_init
mkdir -p "${WORKDIR}"/{${CBUILD},${CHOST}}
if tc-is-cross-compiler; then
(
multijob_child_init
cd "${WORKDIR}"/${CBUILD} >/dev/null
OPT="-O1" CFLAGS="" CPPFLAGS="" LDFLAGS="" CC="" \
"${S}"/configure \
--{build,host}=${CBUILD} \
|| die "cross-configure failed"
) &
multijob_post_fork
# The configure script assumes it's buggy when cross-compiling.
export ac_cv_buggy_getaddrinfo=no
export ac_cv_have_long_long_format=yes
fi
# Export CXX so it ends up in /usr/lib/python3.X/config/Makefile.
tc-export CXX
# The configure script fails to use pkg-config correctly.
# http://bugs.python.org/issue15506
export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG)
# Set LDFLAGS so we link modules with -lpython3.2 correctly.
# Needed on FreeBSD unless Python 3.2 is already installed.
# Please query BSD team before removing this!
append-ldflags "-L."
local dbmliborder
if use gdbm; then
dbmliborder+="${dbmliborder:+:}gdbm"
fi
cd "${WORKDIR}"/${CHOST}
ECONF_SOURCE=${S} OPT="" \
econf \
--with-fpectl \
--enable-shared \
$(use_enable ipv6) \
$(use_with threads) \
$(use_with wide-unicode) \
--infodir='${prefix}/share/info' \
--mandir='${prefix}/share/man' \
--with-computed-gotos \
--with-dbmliborder="${dbmliborder}" \
--with-libc="" \
--enable-loadable-sqlite-extensions \
--with-system-expat \
--with-system-ffi
if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
eerror "configure has detected that the sem_open function is broken."
eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
die "Broken sem_open function (bug 496328)"
fi
if tc-is-cross-compiler; then
# Modify the Makefile.pre so we don't regen for the host/ one.
# We need to link the host python programs into $PWD and run
# them from here because the distutils sysconfig module will
# parse Makefile/etc... from argv[0], and we need it to pick
# up the target settings, not the host ones.
sed -i \
-e '1iHOSTPYTHONPATH = ./hostpythonpath:' \
-e '/^HOSTPYTHON/s:=.*:= ./hostpython:' \
-e '/^HOSTPGEN/s:=.*:= ./Parser/hostpgen:' \
Makefile{.pre,} || die "sed failed"
fi
multijob_finish
}
src_compile() {
if tc-is-cross-compiler; then
cd "${WORKDIR}"/${CBUILD}
# Disable as many modules as possible -- but we need a few to install.
PYTHON_DISABLE_MODULES=$(
sed -n "/Extension('/{s:^.*Extension('::;s:'.*::;p}" "${S}"/setup.py | \
egrep -v '(unicodedata|time|cStringIO|_struct|binascii)'
) \
PTHON_DISABLE_SSL="1" \
SYSROOT= \
emake
# See comment in src_configure about these.
ln python ../${CHOST}/hostpython || die
ln Parser/pgen ../${CHOST}/Parser/hostpgen || die
ln -s ../${CBUILD}/build/lib.*/ ../${CHOST}/hostpythonpath || die
fi
cd "${WORKDIR}"/${CHOST}
emake CPPFLAGS="" CFLAGS="" LDFLAGS=""
# Work around bug 329499. See also bug 413751 and 457194.
if has_version dev-libs/libffi[pax_kernel]; then
pax-mark E python
else
pax-mark m python
fi
}
src_test() {
# Tests will not work when cross compiling.
if tc-is-cross-compiler; then
elog "Disabling tests due to crosscompiling."
return
fi
cd "${WORKDIR}"/${CHOST}
# Skip failing tests.
local skipped_tests="gdb"
for test in ${skipped_tests}; do
mv "${S}"/Lib/test/test_${test}.py "${T}"
done
# Rerun failed tests in verbose mode (regrtest -w).
PYTHONDONTWRITEBYTECODE="" emake test EXTRATESTOPTS="-w" CPPFLAGS="" CFLAGS="" LDFLAGS="" < /dev/tty
local result="$?"
for test in ${skipped_tests}; do
mv "${T}/test_${test}.py" "${S}"/Lib/test
done
elog "The following tests have been skipped:"
for test in ${skipped_tests}; do
elog "test_${test}.py"
done
elog "If you would like to run them, you may:"
elog "cd '${EPREFIX}/usr/$(get_libdir)/python${SLOT}/test'"
elog "and run the tests separately."
if [[ "${result}" -ne 0 ]]; then
die "emake test failed"
fi
}
src_install() {
local libdir=${ED}/usr/$(get_libdir)/python${SLOT}
cd "${WORKDIR}"/${CHOST}
emake DESTDIR="${D}" altinstall
sed \
-e "s/\(CONFIGURE_LDFLAGS=\).*/\1/" \
-e "s/\(PY_LDFLAGS=\).*/\1/" \
-i "${libdir}/config-${SLOT}/Makefile" || die "sed failed"
# Backwards compat with Gentoo divergence.
dosym python${SLOT}-config /usr/bin/python-config-${SLOT}
# Fix collisions between different slots of Python.
rm "${ED}usr/$(get_libdir)/libpython3.so" || die
if use build; then
rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,sqlite3,test,tkinter}
else
use elibc_uclibc && rm -fr "${libdir}/test"
use sqlite || rm -fr "${libdir}/"{sqlite3,test/test_sqlite*}
use tk || rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,tkinter,test/test_tk*}
fi
use threads || rm -fr "${libdir}/multiprocessing"
use wininst || rm -f "${libdir}/distutils/command/"wininst-*.exe
dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS}
if use examples; then
insinto /usr/share/doc/${PF}/examples
find "${S}"/Tools -name __pycache__ -print0 | xargs -0 rm -fr
doins -r "${S}"/Tools
fi
insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \
emake --no-print-directory -s -f - 2>/dev/null)
newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py
newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT}
newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT}
sed \
-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${SLOT/./_}_PORT:" \
-e "s:@PYDOC@:pydoc${SLOT}:" \
-i "${ED}etc/conf.d/pydoc-${SLOT}" "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed"
# for python-exec
python_export python${SLOT} EPYTHON PYTHON PYTHON_SITEDIR
# if not using a cross-compiler, use the fresh binary
if ! tc-is-cross-compiler; then
local PYTHON=./python \
LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}.
export LD_LIBRARY_PATH
fi
echo "EPYTHON='${EPYTHON}'" > epython.py
python_domodule epython.py
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version ">=${CATEGORY}/${PN}-${SLOT}_alpha"; then
python_updater_warning="1"
fi
}
eselect_python_update() {
if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
eselect python update
fi
if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
eselect python update --python${PV%%.*}
fi
}
pkg_postinst() {
eselect_python_update
if [[ "${python_updater_warning}" == "1" ]]; then
ewarn "You have just upgraded from an older version of Python."
ewarn "You should switch active version of Python ${PV%%.*} and run"
ewarn "'python-updater [options]' to rebuild Python modules."
fi
}
pkg_postrm() {
eselect_python_update
}

View File

@ -0,0 +1,322 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-3.3.2-r2.ebuild,v 1.21 2014/01/18 11:37:42 vapier Exp $
EAPI="3"
WANT_AUTOMAKE="none"
WANT_LIBTOOL="none"
inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs multiprocessing
MY_P="Python-${PV}"
PATCHSET_REVISION="2"
DESCRIPTION="An interpreted, interactive, object-oriented programming language"
HOMEPAGE="http://www.python.org/"
SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz
mirror://gentoo/python-gentoo-patches-${PV}-${PATCHSET_REVISION}.tar.xz"
LICENSE="PSF-2"
SLOT="3.3"
KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
IUSE="build doc elibc_uclibc examples gdbm hardened ipv6 +ncurses +readline sqlite +ssl +threads tk wininst +xml"
# Do not add a dependency on dev-lang/python to this ebuild.
# If you need to apply a patch which requires python for bootstrapping, please
# run the bootstrap code on your dev box and include the results in the
# patchset. See bug 447752.
RDEPEND="app-arch/bzip2
app-arch/xz-utils
>=sys-libs/zlib-1.1.3
virtual/libffi
virtual/libintl
!build? (
gdbm? ( sys-libs/gdbm[berkdb] )
ncurses? (
>=sys-libs/ncurses-5.2
readline? ( >=sys-libs/readline-4.1 )
)
sqlite? ( >=dev-db/sqlite-3.3.8:3 )
ssl? ( dev-libs/openssl )
tk? (
>=dev-lang/tk-8.0
dev-tcltk/blt
)
xml? ( >=dev-libs/expat-2.1 )
)
!!<sys-apps/sandbox-2.6-r1"
DEPEND="${RDEPEND}
virtual/pkgconfig
>=sys-devel/autoconf-2.65
!sys-devel/gcc[libffi]"
RDEPEND+=" !build? ( app-misc/mime-types )
doc? ( dev-python/python-docs:${SLOT} )"
PDEPEND="app-admin/eselect-python
app-admin/python-updater"
S="${WORKDIR}/${MY_P}"
src_prepare() {
# Ensure that internal copies of expat, libffi and zlib are not used.
rm -fr Modules/expat
rm -fr Modules/_ctypes/libffi*
rm -fr Modules/zlib
if tc-is-cross-compiler; then
# Invokes BUILDPYTHON, which is built for the host arch
local EPATCH_EXCLUDE="05_all_regenerate_platform-specific_modules.patch"
fi
EPATCH_SUFFIX="patch" epatch "${WORKDIR}/${PV}-${PATCHSET_REVISION}"
epatch "${FILESDIR}/python-3.3-CVE-2013-2099.patch"
epatch "${FILESDIR}/CVE-2013-4238_py33.patch"
sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
Lib/distutils/command/install.py \
Lib/distutils/sysconfig.py \
Lib/site.py \
Lib/sysconfig.py \
Lib/test/test_site.py \
Makefile.pre.in \
Modules/Setup.dist \
Modules/getpath.c \
setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
# Disable ABI flags.
sed -e "s/ABIFLAGS=\"\${ABIFLAGS}.*\"/:/" -i configure.ac || die "sed failed"
epatch_user
eautoconf
eautoheader
}
src_configure() {
if use build; then
# Disable extraneous modules with extra dependencies.
export PYTHON_DISABLE_MODULES="gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat"
export PYTHON_DISABLE_SSL="1"
else
local disable
use gdbm || disable+=" gdbm"
use ncurses || disable+=" _curses _curses_panel"
use readline || disable+=" readline"
use sqlite || disable+=" _sqlite3"
use ssl || export PYTHON_DISABLE_SSL="1"
use tk || disable+=" _tkinter"
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
export PYTHON_DISABLE_MODULES="${disable}"
if ! use xml; then
ewarn "You have configured Python without XML support."
ewarn "This is NOT a recommended configuration as you"
ewarn "may face problems parsing any XML documents."
fi
fi
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
fi
if [[ "$(gcc-major-version)" -ge 4 ]]; then
append-flags -fwrapv
fi
filter-flags -malign-double
[[ "${ARCH}" == "alpha" ]] && append-flags -fPIC
# https://bugs.gentoo.org/show_bug.cgi?id=50309
if is-flagq -O3; then
is-flagq -fstack-protector-all && replace-flags -O3 -O2
use hardened && replace-flags -O3 -O2
fi
# Export CXX so it ends up in /usr/lib/python3.X/config/Makefile.
tc-export CXX
# The configure script fails to use pkg-config correctly.
# http://bugs.python.org/issue15506
export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG)
# Set LDFLAGS so we link modules with -lpython3.2 correctly.
# Needed on FreeBSD unless Python 3.2 is already installed.
# Please query BSD team before removing this!
append-ldflags "-L."
local dbmliborder
if use gdbm; then
dbmliborder+="${dbmliborder:+:}gdbm"
fi
BUILD_DIR="${WORKDIR}/${CHOST}"
mkdir -p "${BUILD_DIR}" || die
cd "${BUILD_DIR}" || die
ECONF_SOURCE="${S}" OPT="" \
econf \
--with-fpectl \
--enable-shared \
$(use_enable ipv6) \
$(use_with threads) \
--infodir='${prefix}/share/info' \
--mandir='${prefix}/share/man' \
--with-computed-gotos \
--with-dbmliborder="${dbmliborder}" \
--with-libc="" \
--enable-loadable-sqlite-extensions \
--with-system-expat \
--with-system-ffi
if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
eerror "configure has detected that the sem_open function is broken."
eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
die "Broken sem_open function (bug 496328)"
fi
}
src_compile() {
# Avoid invoking pgen for cross-compiles.
touch Include/graminit.h Python/graminit.c || die
cd "${BUILD_DIR}" || die
emake CPPFLAGS="" CFLAGS="" LDFLAGS="" || die "emake failed"
# Work around bug 329499. See also bug 413751 and 457194.
if has_version dev-libs/libffi[pax_kernel]; then
pax-mark E python
else
pax-mark m python
fi
}
src_test() {
# Tests will not work when cross compiling.
if tc-is-cross-compiler; then
elog "Disabling tests due to crosscompiling."
return
fi
cd "${BUILD_DIR}" || die
# Skip failing tests.
local skipped_tests="gdb"
for test in ${skipped_tests}; do
mv "${S}"/Lib/test/test_${test}.py "${T}"
done
PYTHONDONTWRITEBYTECODE="" emake test EXTRATESTOPTS="-u -network" FLAGS="" CFLAGS="" LDFLAGS="" < /dev/tty
local result="$?"
for test in ${skipped_tests}; do
mv "${T}/test_${test}.py" "${S}"/Lib/test
done
elog "The following tests have been skipped:"
for test in ${skipped_tests}; do
elog "test_${test}.py"
done
elog "If you would like to run them, you may:"
elog "cd '${EPREFIX}/usr/$(get_libdir)/python${SLOT}/test'"
elog "and run the tests separately."
if [[ "${result}" -ne 0 ]]; then
die "emake test failed"
fi
}
src_install() {
local libdir=${ED}/usr/$(get_libdir)/python${SLOT}
cd "${BUILD_DIR}" || die
emake DESTDIR="${D}" altinstall || die "emake altinstall failed"
sed \
-e "s/\(CONFIGURE_LDFLAGS=\).*/\1/" \
-e "s/\(PY_LDFLAGS=\).*/\1/" \
-i "${libdir}/config-${SLOT}/Makefile" || die "sed failed"
# Backwards compat with Gentoo divergence.
dosym python${SLOT}-config /usr/bin/python-config-${SLOT} || die
# Fix collisions between different slots of Python.
rm -f "${ED}usr/$(get_libdir)/libpython3.so"
if use build; then
rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,sqlite3,test,tkinter}
else
use elibc_uclibc && rm -fr "${libdir}/test"
use sqlite || rm -fr "${libdir}/"{sqlite3,test/test_sqlite*}
use tk || rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,tkinter,test/test_tk*}
fi
use threads || rm -fr "${libdir}/multiprocessing"
use wininst || rm -f "${libdir}/distutils/command/"wininst-*.exe
dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS} || die "dodoc failed"
if use examples; then
insinto /usr/share/doc/${PF}/examples
find "${S}"/Tools -name __pycache__ -print0 | xargs -0 rm -fr
doins -r "${S}"/Tools || die "doins failed"
fi
insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \
emake --no-print-directory -s -f - 2>/dev/null)
newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py
newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT} || die "newconfd failed"
newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT} || die "newinitd failed"
sed \
-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${SLOT/./_}_PORT:" \
-e "s:@PYDOC@:pydoc${SLOT}:" \
-i "${ED}etc/conf.d/pydoc-${SLOT}" "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed"
# for python-exec
python_export python${SLOT} EPYTHON PYTHON PYTHON_SITEDIR
# if not using a cross-compiler, use the fresh binary
if ! tc-is-cross-compiler; then
local PYTHON=./python
local -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}.
fi
echo "EPYTHON='${EPYTHON}'" > epython.py
python_domodule epython.py
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version ">=${CATEGORY}/${PN}-${SLOT}_alpha"; then
python_updater_warning="1"
fi
}
eselect_python_update() {
if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
eselect python update
fi
if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
eselect python update --python${PV%%.*}
fi
}
pkg_postinst() {
eselect_python_update
if [[ "${python_updater_warning}" == "1" ]]; then
ewarn "You have just upgraded from an older version of Python."
ewarn
ewarn "Please adjust PYTHON_TARGETS (if so desired), and run emerge with the --newuse or --changed-use option to rebuild packages installing python modules."
ewarn
ewarn "For legacy packages, you should switch active version of Python and run 'python-updater [options]' to rebuild Python modules."
fi
}
pkg_postrm() {
eselect_python_update
}

View File

@ -0,0 +1,320 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-3.3.3.ebuild,v 1.12 2014/01/19 12:34:50 maekke Exp $
EAPI="4"
WANT_AUTOMAKE="none"
WANT_LIBTOOL="none"
inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs multiprocessing
MY_P="Python-${PV}"
PATCHSET_REVISION="0"
DESCRIPTION="An interpreted, interactive, object-oriented programming language"
HOMEPAGE="http://www.python.org/"
SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz
http://dev.gentoo.org/~floppym/python/python-gentoo-patches-${PV}-${PATCHSET_REVISION}.tar.xz
mirror://gentoo/python-gentoo-patches-${PV}-${PATCHSET_REVISION}.tar.xz"
LICENSE="PSF-2"
SLOT="3.3"
KEYWORDS="alpha amd64 arm ~arm64 hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
IUSE="build doc elibc_uclibc examples gdbm hardened ipv6 +ncurses +readline sqlite +ssl +threads tk wininst +xml"
# Do not add a dependency on dev-lang/python to this ebuild.
# If you need to apply a patch which requires python for bootstrapping, please
# run the bootstrap code on your dev box and include the results in the
# patchset. See bug 447752.
RDEPEND="app-arch/bzip2
app-arch/xz-utils
>=sys-libs/zlib-1.1.3
virtual/libffi
virtual/libintl
!build? (
gdbm? ( sys-libs/gdbm[berkdb] )
ncurses? (
>=sys-libs/ncurses-5.2
readline? ( >=sys-libs/readline-4.1 )
)
sqlite? ( >=dev-db/sqlite-3.3.8:3 )
ssl? ( dev-libs/openssl )
tk? (
>=dev-lang/tk-8.0
dev-tcltk/blt
)
xml? ( >=dev-libs/expat-2.1 )
)
!!<sys-apps/sandbox-2.6-r1"
DEPEND="${RDEPEND}
virtual/pkgconfig
>=sys-devel/autoconf-2.65
!sys-devel/gcc[libffi]"
RDEPEND+=" !build? ( app-misc/mime-types )
doc? ( dev-python/python-docs:${SLOT} )"
PDEPEND="app-admin/eselect-python
app-admin/python-updater"
S="${WORKDIR}/${MY_P}"
src_prepare() {
# Ensure that internal copies of expat, libffi and zlib are not used.
rm -fr Modules/expat
rm -fr Modules/_ctypes/libffi*
rm -fr Modules/zlib
if tc-is-cross-compiler; then
# Invokes BUILDPYTHON, which is built for the host arch
local EPATCH_EXCLUDE="05_all_regenerate_platform-specific_modules.patch"
fi
EPATCH_SUFFIX="patch" epatch "${WORKDIR}/patches"
sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
Lib/distutils/command/install.py \
Lib/distutils/sysconfig.py \
Lib/site.py \
Lib/sysconfig.py \
Lib/test/test_site.py \
Makefile.pre.in \
Modules/Setup.dist \
Modules/getpath.c \
setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
# Disable ABI flags.
sed -e "s/ABIFLAGS=\"\${ABIFLAGS}.*\"/:/" -i configure.ac || die "sed failed"
epatch_user
eautoconf
eautoheader
}
src_configure() {
if use build; then
# Disable extraneous modules with extra dependencies.
export PYTHON_DISABLE_MODULES="gdbm _curses _curses_panel readline _sqlite3 _tkinter _elementtree pyexpat"
export PYTHON_DISABLE_SSL="1"
else
local disable
use gdbm || disable+=" gdbm"
use ncurses || disable+=" _curses _curses_panel"
use readline || disable+=" readline"
use sqlite || disable+=" _sqlite3"
use ssl || export PYTHON_DISABLE_SSL="1"
use tk || disable+=" _tkinter"
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
export PYTHON_DISABLE_MODULES="${disable}"
if ! use xml; then
ewarn "You have configured Python without XML support."
ewarn "This is NOT a recommended configuration as you"
ewarn "may face problems parsing any XML documents."
fi
fi
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
fi
if [[ "$(gcc-major-version)" -ge 4 ]]; then
append-flags -fwrapv
fi
filter-flags -malign-double
[[ "${ARCH}" == "alpha" ]] && append-flags -fPIC
# https://bugs.gentoo.org/show_bug.cgi?id=50309
if is-flagq -O3; then
is-flagq -fstack-protector-all && replace-flags -O3 -O2
use hardened && replace-flags -O3 -O2
fi
# Export CXX so it ends up in /usr/lib/python3.X/config/Makefile.
tc-export CXX
# The configure script fails to use pkg-config correctly.
# http://bugs.python.org/issue15506
export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG)
# Set LDFLAGS so we link modules with -lpython3.2 correctly.
# Needed on FreeBSD unless Python 3.2 is already installed.
# Please query BSD team before removing this!
append-ldflags "-L."
local dbmliborder
if use gdbm; then
dbmliborder+="${dbmliborder:+:}gdbm"
fi
BUILD_DIR="${WORKDIR}/${CHOST}"
mkdir -p "${BUILD_DIR}" || die
cd "${BUILD_DIR}" || die
ECONF_SOURCE="${S}" OPT="" \
econf \
--with-fpectl \
--enable-shared \
$(use_enable ipv6) \
$(use_with threads) \
--infodir='${prefix}/share/info' \
--mandir='${prefix}/share/man' \
--with-computed-gotos \
--with-dbmliborder="${dbmliborder}" \
--with-libc="" \
--enable-loadable-sqlite-extensions \
--with-system-expat \
--with-system-ffi
if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
eerror "configure has detected that the sem_open function is broken."
eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
die "Broken sem_open function (bug 496328)"
fi
}
src_compile() {
# Avoid invoking pgen for cross-compiles.
touch Include/graminit.h Python/graminit.c || die
cd "${BUILD_DIR}" || die
emake CPPFLAGS="" CFLAGS="" LDFLAGS=""
# Work around bug 329499. See also bug 413751 and 457194.
if has_version dev-libs/libffi[pax_kernel]; then
pax-mark E python
else
pax-mark m python
fi
}
src_test() {
# Tests will not work when cross compiling.
if tc-is-cross-compiler; then
elog "Disabling tests due to crosscompiling."
return
fi
cd "${BUILD_DIR}" || die
# Skip failing tests.
local skipped_tests="gdb"
for test in ${skipped_tests}; do
mv "${S}"/Lib/test/test_${test}.py "${T}"
done
PYTHONDONTWRITEBYTECODE="" emake test EXTRATESTOPTS="-u -network" FLAGS="" CFLAGS="" LDFLAGS="" < /dev/tty
local result="$?"
for test in ${skipped_tests}; do
mv "${T}/test_${test}.py" "${S}"/Lib/test
done
elog "The following tests have been skipped:"
for test in ${skipped_tests}; do
elog "test_${test}.py"
done
elog "If you would like to run them, you may:"
elog "cd '${EPREFIX}/usr/$(get_libdir)/python${SLOT}/test'"
elog "and run the tests separately."
if [[ "${result}" -ne 0 ]]; then
die "emake test failed"
fi
}
src_install() {
local libdir=${ED}/usr/$(get_libdir)/python${SLOT}
cd "${BUILD_DIR}" || die
emake DESTDIR="${D}" altinstall
sed \
-e "s/\(CONFIGURE_LDFLAGS=\).*/\1/" \
-e "s/\(PY_LDFLAGS=\).*/\1/" \
-i "${libdir}/config-${SLOT}/Makefile" || die "sed failed"
# Backwards compat with Gentoo divergence.
dosym python${SLOT}-config /usr/bin/python-config-${SLOT}
# Fix collisions between different slots of Python.
rm -f "${ED}usr/$(get_libdir)/libpython3.so"
if use build; then
rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,sqlite3,test,tkinter}
else
use elibc_uclibc && rm -fr "${libdir}/test"
use sqlite || rm -fr "${libdir}/"{sqlite3,test/test_sqlite*}
use tk || rm -fr "${ED}usr/bin/idle${SLOT}" "${libdir}/"{idlelib,tkinter,test/test_tk*}
fi
use threads || rm -fr "${libdir}/multiprocessing"
use wininst || rm -f "${libdir}/distutils/command/"wininst-*.exe
dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS}
if use examples; then
insinto /usr/share/doc/${PF}/examples
find "${S}"/Tools -name __pycache__ -print0 | xargs -0 rm -fr
doins -r "${S}"/Tools
fi
insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \
emake --no-print-directory -s -f - 2>/dev/null)
newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py
newconfd "${FILESDIR}/pydoc.conf" pydoc-${SLOT}
newinitd "${FILESDIR}/pydoc.init" pydoc-${SLOT}
sed \
-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${SLOT/./_}_PORT:" \
-e "s:@PYDOC@:pydoc${SLOT}:" \
-i "${ED}etc/conf.d/pydoc-${SLOT}" "${ED}etc/init.d/pydoc-${SLOT}" || die "sed failed"
# for python-exec
python_export python${SLOT} EPYTHON PYTHON PYTHON_SITEDIR
# if not using a cross-compiler, use the fresh binary
if ! tc-is-cross-compiler; then
local PYTHON=./python
local -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}.
fi
echo "EPYTHON='${EPYTHON}'" > epython.py
python_domodule epython.py
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-${SLOT}" && ! has_version ">=${CATEGORY}/${PN}-${SLOT}_alpha"; then
python_updater_warning="1"
fi
}
eselect_python_update() {
if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
eselect python update
fi
if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
eselect python update --python${PV%%.*}
fi
}
pkg_postinst() {
eselect_python_update
if [[ "${python_updater_warning}" == "1" ]]; then
ewarn "You have just upgraded from an older version of Python."
ewarn
ewarn "Please adjust PYTHON_TARGETS (if so desired), and run emerge with the --newuse or --changed-use option to rebuild packages installing python modules."
ewarn
ewarn "For legacy packages, you should switch active version of Python and run 'python-updater [options]' to rebuild Python modules."
fi
}
pkg_postrm() {
eselect_python_update
}