Merge lp:~mitya57/ubuntu/raring/python-defaults/resync into lp:ubuntu/raring/python-defaults

Proposed by Dmitry Shachnev
Status: Merged
Merged at revision: 95
Proposed branch: lp:~mitya57/ubuntu/raring/python-defaults/resync
Merge into: lp:ubuntu/raring/python-defaults
Diff against target: 2405 lines (+681/-309)
52 files modified
Makefile (+4/-1)
README.derivatives (+2/-2)
debian/changelog (+124/-1)
debian/control (+15/-13)
debian/control.in (+10/-8)
debian/idle.desktop (+1/-1)
debian/idle.menu (+1/-1)
debian/python-policy.sgml (+34/-40)
debian/python.postinst.in (+2/-2)
debian/python.postrm.in (+1/-2)
debian/python.preinst.in (+3/-3)
debian/python.prerm.in (+1/-2)
debian/pyversions.py (+8/-4)
debian/rules (+2/-2)
debpython/debhelper.py (+3/-3)
debpython/depends.py (+15/-15)
debpython/files.py (+1/-1)
debpython/namespace.py (+1/-1)
debpython/option.py (+1/-1)
debpython/pydist.py (+65/-13)
debpython/tools.py (+42/-6)
debpython/version.py (+20/-12)
dh_python2 (+37/-20)
dh_python2.rst (+49/-24)
pyclean (+3/-4)
pycompile (+5/-6)
pydist/dist_fallback (+120/-69)
pydist/generate_fallback_list.py (+3/-0)
python2.pm (+1/-1)
tests/Makefile (+1/-1)
tests/common.mk (+12/-0)
tests/t1/Makefile (+4/-8)
tests/t1/debian/pydist-overrides (+1/-1)
tests/t1/debian/rules (+1/-1)
tests/t2/Makefile (+2/-8)
tests/t3/Makefile (+7/-8)
tests/t3/debian/rules (+8/-0)
tests/t4/Makefile (+2/-8)
tests/t5/Makefile (+2/-8)
tests/t6/Makefile (+2/-8)
tests/t7/Makefile (+18/-0)
tests/t7/bar.py (+2/-0)
tests/t7/baz.py (+2/-0)
tests/t7/debian/changelog (+5/-0)
tests/t7/debian/compat (+1/-0)
tests/t7/debian/control (+13/-0)
tests/t7/debian/copyright (+2/-0)
tests/t7/debian/install (+7/-0)
tests/t7/debian/rules (+11/-0)
tests/t7/debian/source/format (+1/-0)
tests/t7/foo.py (+2/-0)
tests/t7/spam.py (+1/-0)
To merge this branch: bzr merge lp:~mitya57/ubuntu/raring/python-defaults/resync
Reviewer Review Type Date Requested Status
Barry Warsaw (community) Approve
Ubuntu branches Pending
Scott Kitterman Pending
Review via email: mp+131193@code.launchpad.net

Description of the change

python-defaults (2.7.3-3ubuntu1) raring-proposed; urgency=low

  * Resynchronize with Debian unstable, remaining Ubuntu changes:
    - debian/control.in: Build depend on lsb-release to set correct
      Maintainer fields when building on Ubuntu.
    - debian/rules: Ignore version check, as our default versions differ
      from Debian's.
    - debian/control.in, debian/debian_defaults: Drop python2.6 support.
    - debian/rules: Provide Python pkgconfig defaults.
    - debian/rules: Re-add the python2 and python2-config symlinks,
      formerly present in the python2.7 packages (see PEP 394).
    - debian/control.in, debian/rules: Build dependency packages as
      architecture dependent packages (for cross-building python
      extension packages, see LP: #934593).
  * debian/rules: in binary-arch section, use -a argument for dh_* commands.

 -- Dmitry Shachnev <email address hidden> Wed, 28 Nov 2012 14:50:19 +0400

The diff against the previous Ubuntu version is below, use `bzr diff -r 56` to see the diff against (a bit outdated) Debian.

To post a comment you must log in.
Revision history for this message
Barry Warsaw (barry) wrote :

I'm not able to do a full review at the moment, but one thing jumped out at me.

On Oct 24, 2012, at 02:28 PM, Dmitry Shachnev wrote:

>The proposal to merge lp:~mitya57/ubuntu/raring/python-defaults/resync into lp:ubuntu/python-defaults has been updated.
>
>Description changed to:
>
>python-defaults (2.7.3-3ubuntu1) raring-proposed; urgency=low
>
>  * Resynchronize with Debian unstable, remaining Ubuntu changes:
>    - Build depend on lsb-release.
>    - Ignore vesion check.

s/vesion/version/

>    - Drop python2.6 support.
>    - Provide Python pkgconfig defaults.
>    - Re-add the python2 and python2-config symlinks, formerly present
>      in the python2.7 packages.
>    - Build dependency packages as architecture dependent packages again.
>    - Move idle.xpm into the idle package.
>    - Remove Essential flag from python-minimal.
>  * debian/rules: in binary-arch section, use -a argument for dh_* commands.
>
> -- Dmitry Shachnev <email address hidden> Wed, 24 Oct 2012 18:14:31 +0400

64. By Dmitry Shachnev

Fix a typo, thanks Barry!

Revision history for this message
Dmitry Shachnev (mitya57) wrote :

> s/vesion/version

Fixed, thanks!

65. By Dmitry Shachnev

Don't build idle twice

Revision history for this message
Dmitry Shachnev (mitya57) wrote :

Will you review it or should I subscribe "regular" sponsors here?

Revision history for this message
Scott Kitterman (kitterman) wrote :

I didn't look at the diff yet, but from the changelog entry, I notice "Remove Essential flag from python-minimal." is backwards. It should be adding it for Ubuntu.

Revision history for this message
Dmitry Shachnev (mitya57) wrote :

Really? The essential flag was removed in Ubuntu (http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/raring/python-defaults/raring/revision/90) because the package becomes not really essential here with the python3 switch (I hope we'll even ship raring without it).

We'll maybe want to add that flag to python3-defaults, though.

Revision history for this message
Scott Kitterman (kitterman) wrote :

You can't remove essential until it's been verified nothing in the archive assumes it's present. Also, it's not essential in Debian.

Revision history for this message
Dmitry Shachnev (mitya57) wrote :

Again — that was not me who removed it, it was Colin Watson. I've added it back now.

66. By Dmitry Shachnev

Re-add Essential flag to python-mimimal as recommended by Scott Kitterman.

67. By Dmitry Shachnev

Fix the changelog

Revision history for this message
Colin Watson (cjwatson) wrote :

I removed Essential in 12.10. Please don't put it back. It will impede our ability to ever get rid of Python 2. It would be particularly daft to put it back now that we've managed to get python-minimal down to Priority: optional!

python-minimal was never Essential in Debian; it was only ever Essential in Ubuntu for political reasons, and those reasons no longer make sense now that we're trying to move to Python 3. The way Python policy is laid out means that the odds of anything sensible trying to use python without a dependency on it are very slim. The only remotely plausible things that might be affected were in the base system, and I grepped for that. The only bug I found was bug 1058029, which is in a utility script that I don't consider to be at all important for this purpose.

Revision history for this message
Colin Watson (cjwatson) wrote :

It is of course wrong to mention the removal of this flag in the changelog in any event, because it is no longer part of the delta with Debian.

68. By Dmitry Shachnev

Revert r66.

Revision history for this message
Scott Kitterman (kitterman) wrote :

I talked to Colin and dropping it's fine, but as he said, don't mention it in the changelog.

Revision history for this message
Barry Warsaw (barry) wrote :

One thing that would be very helpful would be to organize the remaining Ubuntu changes by file, adding these descriptions to the changelog entry. E.g. in d/changelog:

 * Resynchronize ...
   - debian/control: Build depend on lsb-release

and so on. If you need extra levels, do it like this:

 * Resynchronize ...
   - debian/control
     + Build depend on lsb-release
     + frobnicate the foobar

This would make it much easier to trace the differences we're keeping. It will also make it easier to reduce those deltas in the future. (I know that previous changes don't have these, and you're just copying them from earlier changelog entries, but I think this is a good habit to get into, so let's start now :).

I also wish there were more rationales in the changelog entries. For example, *why* is "make check_version" status being ignored? Without reasons, these just become long lived onions in the varnish[1].

Other than that, I think this looks okay. I built the package and did some limited testing in a chroot and it looks okay. Please let me know if you want me to sponsor this upload into Ubuntu once you've fixed the few things mentioned above.

[1] http://c2.com/cgi/wiki?OnionInTheVarnish

review: Needs Fixing
69. By Dmitry Shachnev

Make tests/t6/{foo,bar}.py executable, to reduce delta with Debian

70. By Dmitry Shachnev

Update debian/changelog as suggested by Barry

Revision history for this message
Dmitry Shachnev (mitya57) wrote :

Added some comments to the changelog. Please sponsor it if you want to make seb128 happy :)

Revision history for this message
Barry Warsaw (barry) wrote :

Thanks for making the changes! I'll sponsor it now.

review: Approve
Revision history for this message
Barry Warsaw (barry) wrote :

Thanks for the awesome contribution!

review: Approve
Revision history for this message
Barry Warsaw (barry) wrote :

So, the build failed on some arches because rst2man was missing.

https://launchpad.net/ubuntu/raring/+source/python-defaults/+builds

Moving python-docutils and debiandoc-sgml to Build-Depends from Build-Depends-Indep in d/control.in fixes the problem. I'll upload a -3ubuntu2 to fix this.

Revision history for this message
Scott Kitterman (kitterman) wrote :

On Wednesday, November 28, 2012 10:04:24 PM you wrote:
> So, the build failed on some arches because rst2man was missing.
>
> https://launchpad.net/ubuntu/raring/+source/python-defaults/+builds
>
> Moving python-docutils and debiandoc-sgml to Build-Depends from
> Build-Depends-Indep in d/control.in fixes the problem. I'll upload a
> -3ubuntu2 to fix this.

A better solution would be to only build the arch any parts of the package on
!i386 archs.

Scott K

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Makefile'
2--- Makefile 2011-10-13 22:39:31 +0000
3+++ Makefile 2012-11-28 12:53:22 +0000
4@@ -30,13 +30,16 @@
5 %.1: %.rst
6 rst2man $< > $@
7
8+%.html: %.rst
9+ rst2html $< > $@
10+
11 manpages: $(MANPAGES)
12
13 dist_fallback:
14 make -C pydist $@
15
16 check_versions:
17- @set -ex;\
18+ @set -e;\
19 DEFAULT=`sed -rn 's,^DEFAULT = \(([0-9]+)\, ([0-9]+)\),\1.\2,p' debpython/version.py`;\
20 SUPPORTED=`sed -rn 's,^SUPPORTED = \[\(([0-9]+)\, ([0-9]+)\)\, \(([0-9]+)\, ([0-9]+)\)\],\1.\2 \3.\4,p' debpython/version.py`;\
21 DEB_DEFAULT=`sed -rn 's,^default-version = python([0-9.]*),\1,p' debian/debian_defaults`;\
22
23=== modified file 'README.derivatives'
24--- README.derivatives 2010-09-12 18:41:04 +0000
25+++ README.derivatives 2012-11-28 12:53:22 +0000
26@@ -6,7 +6,7 @@
27 python-all-dbg's Depends line (add or remove pythonX.Y packages)
28 * Open debian/pyversions.py file and edit `_supported_versions` list
29 around line 141
30-* Open debpython/versions.py file and edit `SUPPORTED` list around
31+* Open debpython/version.py file and edit `SUPPORTED` list around
32 line 26
33
34
35@@ -18,7 +18,7 @@
36 (default + 1 version) and `PVER` (default version with "python" prefix)
37 * Open debian/pyversions.py file and edit `debian_default` variable around
38 line 171
39-* Open debpython/versions.py file and edit `DEFAULT` variable around line 27
40+* Open debpython/version.py file and edit `DEFAULT` variable around line 27
41
42
43 How to bump minimum required Python version by dh_python2?
44
45=== modified file 'debian/changelog'
46--- debian/changelog 2012-10-10 15:45:02 +0000
47+++ debian/changelog 2012-11-28 12:53:22 +0000
48@@ -1,3 +1,84 @@
49+python-defaults (2.7.3-3ubuntu1) raring-proposed; urgency=low
50+
51+ * Resynchronize with Debian unstable, remaining Ubuntu changes:
52+ - debian/control.in: Build depend on lsb-release to set correct
53+ Maintainer fields when building on Ubuntu.
54+ - debian/rules: Ignore version check, as our default versions differ
55+ from Debian's.
56+ - debian/control.in, debian/debian_defaults: Drop python2.6 support.
57+ - debian/rules: Provide Python pkgconfig defaults.
58+ - debian/rules: Re-add the python2 and python2-config symlinks,
59+ formerly present in the python2.7 packages (see PEP 394).
60+ - debian/control.in, debian/rules: Build dependency packages as
61+ architecture dependent packages (for cross-building python
62+ extension packages, see LP: #934593).
63+ * debian/rules: in binary-arch section, use -a argument for dh_* commands.
64+
65+ -- Dmitry Shachnev <mitya57@ubuntu.com> Wed, 28 Nov 2012 14:50:19 +0400
66+
67+python-defaults (2.7.3-3) unstable; urgency=low
68+
69+ [ Piotr Ożarowski ]
70+ * dh_python2:
71+ - no longer sensitive to trailing slash in private dir names
72+ (closes: #686358)
73+ - ignore /usr/bin/python3 shebangs in all packages, not just in
74+ python3-* ones
75+ - generates correct "python (<< 2.X)" dependencies for packages with
76+ private Python extensions (typo fixed)
77+ * pyversions.py: fix parsing DEBPYTHON_SUPPORTED env. variable
78+ (versions should be separated using comma, as in debian_defaults
79+ config file)
80+
81+ [ Dmitry Shachnev ]
82+ * debian/python.{pre,post}rm.in: Handle purge command the same way as
83+ remove (thanks to Mitsuya Shibata for the bug report)
84+
85+ -- Piotr Ożarowski <piotr@debian.org> Sun, 21 Oct 2012 22:40:55 +0200
86+
87+python-defaults (2.7.3-2) unstable; urgency=low
88+
89+ * dh_python2: ignore empty files while trying to normalize shebangs
90+ (Closes: #680793)
91+ * Fix lack of python-imaging in pydist/dist_fallback
92+ - Add python-imaging override to pydist/generate_fallback_list.py
93+ - pydist/dist_fallback: Regenerate to add python-imaging (which wasn't
94+ recognized before due to .pth file) along with a few automatic
95+ adjustments
96+
97+ -- Piotr Ożarowski <piotr@debian.org> Thu, 26 Jul 2012 23:03:32 +0200
98+
99+python-defaults (2.7.3-1) unstable; urgency=low
100+
101+ [ Piotr Ożarowski ]
102+ * dh_python2:
103+ - remove even more \.so.* dangling symlinks, thanks to Stefano
104+ Rivera for providing a test case
105+ - rewrite shebangs by default (disable via --no-shebang-rewrite),
106+ examples:
107+ + "/usr/bin/env python*" → "/usr/bin/python*"
108+ + "/usr/local/bin/python foo" → "/usr/bin/python foo"
109+ + "/usr/bin/python2" → "/usr/bin/python"
110+ - new --shebang option to replace all shebangs in bin dirs
111+ (example: --shebang /usr/bin/python2.6)
112+ - no longer generates python2.X | python2.Y depenendies for public modules
113+ (Closes: 625740)
114+ - translate Python version numbers into Debian ones for those
115+ require.txt items that have a pydist file with (uscan like) rules
116+ or PEP386 flag (Closes: #653740)
117+ * Improve dh_python2 manpage a bit, add information about cleaning debug
118+ packages (Closes: #653741)
119+ * pyversions, dh_python2, pycompile: allow to override system's list of
120+ supported Python versions via DEBPYTHON_SUPPORTED and default Python
121+ version via DEBPYTHON_DEFAULT env. variables
122+ * Debhelper's python2 sequence now inserts dh_python2 before dh_installinit
123+ (closes: 670418)
124+
125+ [ Scott Kitterman ]
126+ * Bump upstream version to match current unstable/wheezy python2.7 version
127+
128+ -- Piotr Ożarowski <piotr@debian.org> Sat, 30 Jun 2012 20:23:59 +0200
129+
130 python-defaults (2.7.3-0ubuntu7) quantal; urgency=low
131
132 * Avoid TypeError in dh_python when maximum version is specified.
133@@ -49,6 +130,49 @@
134
135 -- Matthias Klose <doko@ubuntu.com> Thu, 12 Apr 2012 23:54:23 +0200
136
137+python-defaults (2.7.3~rc2-1) unstable; urgency=low
138+
139+ [ Scott Kitterman ]
140+ * Bump minimum debhelper version to 8 so all tests will run
141+ - dh_python2 tests 1 - 5 require dh 7 and test 6 needs dh 8
142+ * Move idle.xpm symlink from python to idle and add Breaks/Replaces
143+ * Move /usr/bin/pyversions from python to python-minimal since that's where
144+ the actual script it's a symlink to lives, add Breaks/Replaces
145+ * Bump standards version to 3.9.3 without further change
146+ * Correct Python package names with hyphens in them being ignored
147+ (Closes: #657665)
148+ * Drop -n from /usr/bin/idle invocations in debian/idle.desktop and
149+ debian/idle.menu (Closes: #482156)
150+ * Update Python policy
151+ - Describe addition of /usr/bin/python2 due to upstream changes
152+ - Remove redundant text on Python provides and clarify when they should be
153+ used
154+ - Update description of functionality related to X-Python-Version for
155+ Wheezy
156+ - Update X/XS-Python-Versions to also include X-Python-Version examples
157+ - Add appropriage Breaks/Replaces
158+ * Bump upstream version to match current unstable/wheezy python2.7 version
159+
160+ [ Piotr Ożarowski ]
161+ * dh_python2, pyversions: make comparison of X(S)-Python-Version field names
162+ case-insensitive (Closes: #676224)
163+
164+ -- Scott Kitterman <scott@kitterman.com> Tue, 05 Jun 2012 22:43:11 -0400
165+
166+python-defaults (2.7.2-10) unstable; urgency=low
167+
168+ [ Matthias Klose ]
169+ * dh_python2: For argparse eggs, generate dependencies of the form
170+ "python (>= 2.7) | python-argparse". Closes: #653644, #657119.
171+ * Regenerate pydist/dist_fallback.
172+
173+ [ Piotr Ożarowski ]
174+ * pycompile: fix -O option
175+ * dh_python2: do not try to add python2.X dependency if private dir works
176+ with all Python versions
177+
178+ -- Matthias Klose <doko@debian.org> Tue, 24 Jan 2012 11:49:24 +0100
179+
180 python-defaults (2.7.2-9ubuntu6) precise; urgency=low
181
182 * Revert to 2.7.2-9ubuntu2 as the arch:all -> arch:any change needs to be
183@@ -1642,4 +1766,3 @@
184 * Update to the proposed python-policy: byte-compile using -E.
185
186 -- Matthias Klose <doko@debian.org> Wed, 4 Feb 2004 23:16:35 +0100
187-
188
189=== modified file 'debian/control'
190--- debian/control 2012-05-23 10:50:46 +0000
191+++ debian/control 2012-11-28 12:53:22 +0000
192@@ -4,7 +4,8 @@
193 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
194 XSBC-Original-Maintainer: Matthias Klose <doko@debian.org>
195 Uploaders: Scott Kitterman <scott@kitterman.com>, Piotr Ożarowski <piotr@debian.org>
196-Build-Depends: debhelper (>= 6.0.7~), lsb-release, libhtml-tree-perl, debiandoc-sgml, python-docutils (>= 0.4-3)
197+Build-Depends: debhelper (>= 8~)
198+Build-Depends-Indep: lsb-release, libhtml-tree-perl, debiandoc-sgml, python-docutils (>= 0.4-3)
199 Standards-Version: 3.9.3
200 Homepage: http://www.python.org/
201 Vcs-Bzr: http://alioth.debian.org/anonscm/bzr/pkg-python/python-defaults-debian
202@@ -12,8 +13,8 @@
203
204 Package: python
205 Architecture: any
206-Priority: important
207-Depends: ${misc:Depends}, python2.7 (>= 2.7.3), python-minimal (= ${binary:Version})
208+Priority: standard
209+Depends: ${misc:Depends}, python2.7 (>= 2.7.3-1~), python-minimal (= ${binary:Version})
210 Suggests: python-doc (= ${binary:Version}), python-tk (= ${binary:Version})
211 Conflicts: python-central (<< 0.5.5)
212 Breaks: python-csv (<< 1.0-4), python-bz2 (<< 1.1-8), python-email (<< 2.5.5-3), update-manager-core (<< 0.200.5-2)
213@@ -29,12 +30,12 @@
214
215 Package: python-minimal
216 Architecture: any
217-Priority: required
218-Depends: ${misc:Depends}, python2.7-minimal (>= 2.7.3), dpkg (>= 1.13.20)
219+Priority: standard
220+Depends: ${misc:Depends}, python2.7-minimal (>= 2.7.3-1~), dpkg (>= 1.13.20)
221 Recommends: python
222 Conflicts: python-central (<< 0.5.5)
223-Breaks: python (<= 2.4-1), python-dev (<< 2.6), python-dbg (<< 2.6), python-all (<< 2.6), python-all-dev (<< 2.6), python-all-dbg (<< 2.6), python-examples (<< 2.6), idle (<< 2.6), python2.5-minimal (<< 2.5.5-7), python2.6-minimal (<< 2.6.5~rc2-2), python3.1-minimal (<< 3.1.2~rc1-2), python-support (<< 1.0.10ubuntu2)
224-Replaces: python (<= 2.4-1), python2.7 (<< 2.7.3)
225+Breaks: python (<= 2.7.3-1~), python-dev (<< 2.6), python-dbg (<< 2.6), python-all (<< 2.6), python-all-dev (<< 2.6), python-all-dbg (<< 2.6), python-examples (<< 2.6), idle (<< 2.6), python2.5-minimal (<< 2.5.5-7), python2.6-minimal (<< 2.6.5~rc2-2), python3.1-minimal (<< 3.1.2~rc1-2), python-support (<< 1.0.10ubuntu2)
226+Replaces: python (<= 2.7.3-1~)
227 Description: minimal subset of the Python language (default version)
228 This package contains the interpreter and some essential modules. It's used
229 in the boot process for some basic tasks.
230@@ -43,7 +44,7 @@
231
232 Package: python-examples
233 Architecture: all
234-Depends: ${misc:Depends}, python (>= ${binary:Version}), python2.7-examples (>= 2.7.3)
235+Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-examples (>= 2.7.3-1~)
236 Description: examples for the Python language (default version)
237 Examples, Demos and Tools for Python. These are files included in
238 the upstream Python distribution.
239@@ -53,7 +54,7 @@
240
241 Package: python-dev
242 Architecture: any
243-Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-dev (>= 2.7.3)
244+Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-dev (>= 2.7.3-1~)
245 Replaces: python2.7 (<< 2.7.3)
246 Description: header files and a static library for Python (default)
247 Header files, a static library and development tools for building
248@@ -65,9 +66,10 @@
249
250 Package: idle
251 Architecture: all
252-Depends: ${misc:Depends}, python (>= ${binary:Version}), python-tk (>= 2.4.3-3), idle-python2.7
253-Replaces: python (<< 2.7.3-0ubuntu2)
254+Depends: ${misc:Depends}, python (= ${binary:Version}), python-tk (>= 2.4.3-3), idle-python2.7
255 Enhances: python
256+Replaces: python (<< 2.7.3-1~)
257+Breaks: python (<< 2.7.3-1~)
258 Description: IDE for Python using Tkinter (default version)
259 IDLE is an Integrated Development Environment for Python.
260 IDLE is written using Tkinter and therefore quite platform-independent.
261@@ -78,7 +80,7 @@
262 Package: python-doc
263 Section: doc
264 Architecture: all
265-Depends: ${misc:Depends}, python2.7-doc (>= 2.7.3)
266+Depends: ${misc:Depends}, python2.7-doc (>= 2.7.3-1~)
267 Suggests: python-examples, python (= ${binary:Version})
268 Breaks: python (<< 2.3.5)
269 Replaces: python (<< 2.3.5)
270@@ -104,7 +106,7 @@
271 Architecture: any
272 Section: debug
273 Priority: extra
274-Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-dbg (>= 2.7.3)
275+Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7-dbg (>= 2.7.3-1~)
276 Provides: python-gdbm-dbg, python-tk-dbg
277 Description: debug build of the Python Interpreter (version 2.7)
278 Python interpreter configured with --pydebug. Dynamically loaded modules are
279
280=== modified file 'debian/control.in'
281--- debian/control.in 2012-05-23 10:50:46 +0000
282+++ debian/control.in 2012-11-28 12:53:22 +0000
283@@ -3,7 +3,8 @@
284 Priority: optional
285 Maintainer: Matthias Klose <doko@debian.org>
286 Uploaders: Scott Kitterman <scott@kitterman.com>, Piotr Ożarowski <piotr@debian.org>
287-Build-Depends: debhelper (>= 6.0.7~), lsb-release, libhtml-tree-perl, debiandoc-sgml, python-docutils (>= 0.4-3)
288+Build-Depends: debhelper (>= 8~)
289+Build-Depends-Indep: lsb-release, libhtml-tree-perl, debiandoc-sgml, python-docutils (>= 0.4-3)
290 Standards-Version: 3.9.3
291 Homepage: http://www.python.org/
292 Vcs-Bzr: http://alioth.debian.org/anonscm/bzr/pkg-python/python-defaults-debian
293@@ -11,7 +12,7 @@
294
295 Package: python
296 Architecture: any
297-Priority: important
298+Priority: standard
299 Depends: ${misc:Depends}, @PVER@ (>= @PREVVER@), python-minimal (= ${binary:Version})
300 Suggests: python-doc (= ${binary:Version}), python-tk (= ${binary:Version})
301 Conflicts: python-central (<< 0.5.5)
302@@ -28,12 +29,12 @@
303
304 Package: python-minimal
305 Architecture: any
306-Priority: required
307+Priority: standard
308 Depends: ${misc:Depends}, @PVER@-minimal (>= @PREVVER@), dpkg (>= 1.13.20)
309 Recommends: python
310 Conflicts: python-central (<< 0.5.5)
311-Breaks: python (<= 2.4-1), python-dev (<< 2.6), python-dbg (<< 2.6), python-all (<< 2.6), python-all-dev (<< 2.6), python-all-dbg (<< 2.6), python-examples (<< 2.6), idle (<< 2.6), python2.5-minimal (<< 2.5.5-7), python2.6-minimal (<< 2.6.5~rc2-2), python3.1-minimal (<< 3.1.2~rc1-2), python-support (<< 1.0.10ubuntu2)
312-Replaces: python (<= 2.4-1), python2.7 (<< 2.7.3)
313+Breaks: python (<= 2.7.3-1~), python-dev (<< 2.6), python-dbg (<< 2.6), python-all (<< 2.6), python-all-dev (<< 2.6), python-all-dbg (<< 2.6), python-examples (<< 2.6), idle (<< 2.6), python2.5-minimal (<< 2.5.5-7), python2.6-minimal (<< 2.6.5~rc2-2), python3.1-minimal (<< 3.1.2~rc1-2), python-support (<< 1.0.10ubuntu2)
314+Replaces: python (<= 2.7.3-1~)
315 Description: minimal subset of the Python language (default version)
316 This package contains the interpreter and some essential modules. It's used
317 in the boot process for some basic tasks.
318@@ -42,7 +43,7 @@
319
320 Package: python-examples
321 Architecture: all
322-Depends: ${misc:Depends}, python (>= ${binary:Version}), @PVER@-examples (>= @PREVVER@)
323+Depends: ${misc:Depends}, python (= ${binary:Version}), @PVER@-examples (>= @PREVVER@)
324 Description: examples for the Python language (default version)
325 Examples, Demos and Tools for Python. These are files included in
326 the upstream Python distribution.
327@@ -64,9 +65,10 @@
328
329 Package: idle
330 Architecture: all
331-Depends: ${misc:Depends}, python (>= ${binary:Version}), python-tk (>= 2.4.3-3), idle-@PVER@
332-Replaces: python (<< 2.7.3-0ubuntu2)
333+Depends: ${misc:Depends}, python (= ${binary:Version}), python-tk (>= 2.4.3-3), idle-@PVER@
334 Enhances: python
335+Replaces: python (<< 2.7.3-1~)
336+Breaks: python (<< 2.7.3-1~)
337 Description: IDE for Python using Tkinter (default version)
338 IDLE is an Integrated Development Environment for Python.
339 IDLE is written using Tkinter and therefore quite platform-independent.
340
341=== modified file 'debian/idle.desktop'
342--- debian/idle.desktop 2010-06-26 15:38:28 +0000
343+++ debian/idle.desktop 2012-11-28 12:53:22 +0000
344@@ -1,7 +1,7 @@
345 [Desktop Entry]
346 Name=IDLE
347 Comment=Integrated Development Environment for Python
348-Exec=/usr/bin/idle -n
349+Exec=/usr/bin/idle
350 Icon=/usr/share/pixmaps/idle.xpm
351 Terminal=false
352 MultipleArgs=false
353
354=== modified file 'debian/idle.menu'
355--- debian/idle.menu 2009-12-14 06:03:32 +0000
356+++ debian/idle.menu 2012-11-28 12:53:22 +0000
357@@ -1,5 +1,5 @@
358 ?package(idle):needs="X11" section="Applications/Programming"\
359 title="IDLE (Python IDE)"\
360 icon="/usr/share/pixmaps/idle.xpm"\
361- command="/usr/bin/idle -n" \
362+ command="/usr/bin/idle" \
363 hints="Environments"
364
365=== modified file 'debian/python-policy.sgml'
366--- debian/python-policy.sgml 2011-10-06 00:22:16 +0000
367+++ debian/python-policy.sgml 2012-11-28 12:53:22 +0000
368@@ -32,7 +32,7 @@
369 <name>Scott Kitterman</name>
370 <email>scott@kitterman.com</email>
371 </author>
372- <version>version 0.9.4.1</version>
373+ <version>version 0.9.4.2</version>
374
375 <abstract>
376 This document describes the packaging of Python within the
377@@ -42,8 +42,8 @@
378
379 <copyright>
380 <copyrightsummary>
381- Copyright &copy; 1999, 2001, 2003, 2006, 2009, 2010, 2011 Software in the
382- Public Interest
383+ Copyright &copy; 1999, 2001, 2003, 2006, 2009, 2010, 2011, 2012
384+ Software in the Public Interest
385 </copyrightsummary>
386 <p>
387 This manual is free software; you can redistribute it and/or
388@@ -106,8 +106,8 @@
389 are needed by other packages, or as long as it seems
390 reasonable to provide them. (Note: For the scope of this
391 document, Python versions are synonymous to feature
392- releases, i.e. Python 2.5 and 2.5.1 are sub-minor versions of
393- the same Python version 2.5, but Python 2.4 and 2.5 are
394+ releases, i.e. Python 2.7 and 2.7.1 are sub-minor versions of
395+ the same Python version 2.7, but Python 2.6 and 2.7 are
396 indeed different versions.)
397 </p>
398 <p>
399@@ -184,11 +184,11 @@
400 than <var>X</var>.<var>Y+1</var>.
401 </p>
402 <p>
403- There is no symlink for <file>/usr/bin/python2</file>. This is
404- consistent with current upstream practice. This is being discussed
405- in <url id="http://www.python.org/dev/peps/pep-0394/"
406- name="PEP-0394">. If this PEP is approved, then the policy for
407- Debian should be reconsidered.
408+ Because upstream has started providing it, there will be a symlink
409+ for <file>/usr/bin/python2</file> for Wheezy and later releases. See
410+ <url id="http://www.python.org/dev/peps/pep-0394/" name="PEP-0394">
411+ for details. Packages must be careful to depend on a sufficient
412+ version of <package>python</package> if they make use of this symlink.
413 </p>
414 </sect>
415
416@@ -330,7 +330,7 @@
417 <item>
418 <p>
419 /usr/share/python/runtime.d/*.rtremove: these are called when
420- a runtime is installed or stops being supported. The first
421+ a runtime is removed or stops being supported. The first
422 argument is "rtremove", and the second argument is the
423 affected runtime (for example
424 python<var>X</var>.<var>Y</var>).
425@@ -432,14 +432,14 @@
426
427 Such a package should support the current Debian Python version,
428 and more if possible (there are several tools to help implement
429- this, see <ref id="packaging_tools">). For example, if Python 2.3,
430- 2.4, and 2.5 are supported, the Python statement
431+ this, see <ref id="packaging_tools">). For example, if Python 2.5,
432+ 2.6, and 2.7 are supported, the Python statement
433 <example>
434 import foo
435 </example>
436 should import the module when the user is running any
437- of <prgn>/usr/bin/python2.3</prgn>, <prgn>/usr/bin/python2.4</prgn>,
438- and <prgn>/usr/bin/python2.5</prgn>. This requirement also
439+ of <prgn>/usr/bin/python2.5</prgn>, <prgn>/usr/bin/python2.6</prgn>,
440+ and <prgn>/usr/bin/python2.7</prgn>. This requirement also
441 applies to extension modules; binaries for all the supported
442 Python versions should be included in a single package.
443 </p>
444@@ -460,8 +460,8 @@
445 appropriate Depends and Provides lines. The format of the
446 field may be one of the following:
447 <example>
448-XS-Python-Version: >= X.Y
449-XS-Python-Version: >= A.B, << X.Y
450+X-Python-Version: >= X.Y
451+X-Python-Version: >= A.B, << X.Y
452 XS-Python-Version: A.B, X.Y
453 XS-Python-Version: all
454 </example>
455@@ -471,9 +471,9 @@
456 information. The keyword "all" is limited to Python versions and
457 must be ignored for Python 3 versions. Lists of multiple individual
458 versions (e.g. 2.4, 2.5, 2.6) work for <tt>XS-Python-Version</tt> and
459- will continue to be supported, but are not recommended and will not
460- be supported by <tt>X-Python-Version</tt> or <tt>X-Python3-Version</tt>
461- after the Squeeze release.
462+ will continue to be supported, but are not recommended and are not
463+ supported by <tt>X-Python-Version</tt> or <tt>X-Python3-Version</tt>
464+ for Wheezy and later releases.
465
466 The keyword "current" has been deprecated and used to mean that
467 the package would only have to support a single version (even
468@@ -488,12 +488,6 @@
469 transitions. This can be adequately accomplished by examining
470 package dependencies.
471 </p>
472- <p>
473- If your package is used by another module or application
474- that requires a specific Python version, it should also
475- <tt>Provide: python<var>X</var>.<var>Y</var>-foo</tt> for
476- each version it supports.
477- </p>
478 </sect>
479
480 <sect id="dependencies">
481@@ -522,11 +516,11 @@
482 <heading>Provides</heading>
483 <p>
484 Provides in binary packages of the form
485- <package>python-<var>foo</var></package> must be specified,
486- if the package contains an extension for more than one
487- python version. Provides should also be added on request of
488- maintainers who depend on a non-default python version. Provides
489- are only for extensions, not modules.
490+ <package>python-<var>X</var>.<var>Y</var><var>>foo</var></package>
491+ must be specified if the package contains an extension for more
492+ than one python version and other package with version specific
493+ dependencies on the package require it. Provides are only for
494+ extensions, not modules.
495 </p>
496 </sect>
497
498@@ -606,7 +600,7 @@
499 Programs that have private compiled extensions must either
500 handle multiple version support themselves, or declare a
501 tight dependency on the current Python version
502- (e.g. <tt>Depends: python (>= 2.4), python (<= 2.5)</tt>. No
503+ (e.g. <tt>Depends: python (>= 2.6), python (<< 2.7)</tt>. No
504 tools currently exist to alleviate this situation.
505 </p>
506 </sect1>
507@@ -627,7 +621,7 @@
508 requires a specific version of the package (since virtual
509 packages cannot be versioned). If this is the case, it
510 should depend on both the virtual package and the main
511- package (e.g. <tt>Depends: python2.4-foo, python-foo (>=
512+ package (e.g. <tt>Depends: python2.7-foo, python-foo (>=
513 1.0)</tt>).
514 </p>
515 <p>
516@@ -704,16 +698,16 @@
517 <p>
518 Build-Depend on at least:
519 <example>
520-Build-Depends: python2.3 (>= 2.3-1)
521-Build-Depends: python2.4 (>= 2.4-1)
522-Build-Depends: python (>= 2.3.5-7)
523+Build-Depends: python2.7
524+Build-Depends: python2.6 (>= 2.6-1)
525+Build-Depends: python (>= 2.6.6-9)
526 Build-Depends: python-all
527
528-Build-Depends: python2.3-dev (>= 2.3-1)
529-Build-Depends: python2.4-dev (>= 2.4-1)
530-Build-Depends: python-dev (>= 2.3.5-7)
531+Build-Depends: python2.7-dev
532+Build-Depends: python2.6-dev (>= 2.6-1)
533+Build-Depends: python-dev (>= 2.6.6-9)
534 Build-Depends: python-all-dev
535-Build-Depends: python3-all-dev (>= 3.1)
536+Build-Depends: python3-all-dev (>= 3.2)
537 </example>
538 </p>
539 <p>
540
541=== modified file 'debian/python.postinst.in'
542--- debian/python.postinst.in 2011-10-06 00:22:16 +0000
543+++ debian/python.postinst.in 2012-11-28 12:53:22 +0000
544@@ -40,7 +40,7 @@
545 fi
546
547 # run the rtinstall script, when 2.7 became a supported version
548- if [ -x /usr/bin/python2.7 ] && [ -n "$2" ] && dpkg --compare-versions $2 lt 2.6.6-4; then
549+ if [ -x /usr/bin/python2.7 ] && [ -n "$2" ] && dpkg --compare-versions $2 lt 2.6.6-13; then
550 if [ "$DEBIAN_FRONTEND" != noninteractive ]; then
551 echo "Linking and byte-compiling packages for runtime python2.7..."
552 fi
553@@ -51,7 +51,7 @@
554 done
555 fi
556
557- if [ -n "$2" ] && dpkg --compare-versions $2 lt 2.7.1-0ubuntu1~; then
558+ if [ -n "$2" ] && dpkg --compare-versions $2 lt 2.7.2-7~; then
559 oldv=$(echo $2 | sed 's/^\(...\).*/\1/')
560 if [ "$DEBIAN_FRONTEND" != noninteractive ]; then
561 echo "running python rtupdate hooks for @PVER@..."
562
563=== modified file 'debian/python.postrm.in'
564--- debian/python.postrm.in 2010-07-11 17:08:19 +0000
565+++ debian/python.postrm.in 2012-11-28 12:53:22 +0000
566@@ -1,8 +1,7 @@
567 #! /bin/sh
568 set -e
569
570-case "$1" in
571- purge)
572+case "$1" in remove|purge)
573 rm -rf /etc/python
574 esac
575
576
577=== modified file 'debian/python.preinst.in'
578--- debian/python.preinst.in 2011-06-04 20:23:29 +0000
579+++ debian/python.preinst.in 2012-11-28 12:53:22 +0000
580@@ -12,7 +12,7 @@
581
582 case "$1" in
583 upgrade)
584- if dpkg --compare-versions $2 lt 2.6.1-0ubuntu1; then
585+ if dpkg --compare-versions $2 lt 2.6.1-1~; then
586 oldv=$(echo $2 | sed 's/^\(...\).*/\1/')
587 if [ "$DEBIAN_FRONTEND" != noninteractive ]; then
588 echo "running python pre-rtupdate hooks for @PVER@..."
589@@ -47,9 +47,9 @@
590 echo "$version" > /var/lib/python/python2.6_already_installed
591 fi
592
593- # 2.6.6-4 is the first version, which adds python2.7 as supported
594+ # 2.6.6-13 is now the first version, which adds python2.7 as supported
595 # version; need to run an rtinstall python2.7 in the postinst.
596- if dpkg --compare-versions $2 lt 2.6.6-4 && [ -x /usr/bin/python2.7 ]; then
597+ if dpkg --compare-versions $2 lt 2.6.6-13 && [ -x /usr/bin/python2.7 ]; then
598 version=$(dpkg -s python2.7-minimal | awk '/^Version:/ {print $2}')
599 mkdir -p /var/lib/python
600 echo "$version" > /var/lib/python/python2.7_already_installed
601
602=== modified file 'debian/python.prerm.in'
603--- debian/python.prerm.in 2012-09-22 05:15:14 +0000
604+++ debian/python.prerm.in 2012-11-28 12:53:22 +0000
605@@ -1,8 +1,7 @@
606 #! /bin/sh
607 set -e
608
609-case "$1" in
610- remove|purge)
611+case "$1" in remove|purge)
612 rm -f /usr/share/python/pyversions.py[co]
613 esac
614
615
616=== modified file 'debian/pyversions.py'
617--- debian/pyversions.py 2011-10-06 00:22:16 +0000
618+++ debian/pyversions.py 2012-11-28 12:53:22 +0000
619@@ -110,7 +110,9 @@
620 else:
621 return _unsupported_versions
622
623-_supported_versions = None
624+_supported_versions = ["python%s" % ver.strip() for ver in
625+ os.environ.get('DEBPYTHON_SUPPORTED', '').split(',')
626+ if ver.strip()]
627 def supported_versions(version_only=False):
628 global _supported_versions
629 if not _supported_versions:
630@@ -144,7 +146,9 @@
631 else:
632 return _supported_versions
633
634-_default_version = None
635+_default_version = "python%s" % os.environ.get('DEBPYTHON_DEFAULT', '')
636+if _default_version == 'python':
637+ _default_version = None
638 def default_version(version_only=False):
639 global _default_version
640 if not _default_version:
641@@ -261,12 +265,12 @@
642 section = 'Source'
643 elif line.startswith('Package: ' + pkg):
644 section = pkg
645- elif line.startswith('XS-Python-Version:') or line.startswith('X-Python-Version:'):
646+ elif line.lower().startswith(('xs-python-version:', 'x-python-version:')):
647 if section != 'Source':
648 raise ValueError, \
649 'attribute X(S)-Python-Version not in Source section'
650 sversion = line.split(':', 1)[1].strip()
651- elif line.startswith('XB-Python-Version:'):
652+ elif line.lower().startswith('xb-python-version:'):
653 if section == pkg:
654 version = line.split(':', 1)[1].strip()
655 if section == None:
656
657=== modified file 'debian/rules'
658--- debian/rules 2012-04-17 15:54:22 +0000
659+++ debian/rules 2012-11-28 12:53:22 +0000
660@@ -20,7 +20,7 @@
661 export PVER=python2.7
662
663 PREVVER := $(shell awk '/^python/ && NR > 1 {print substr($$2,2,length($$2)-2); exit}' debian/changelog)
664-PREVVER := 2.7.3
665+PREVVER := 2.7.3-1~
666
667 PWD := $(shell pwd)
668
669@@ -229,7 +229,7 @@
670 debian/python-minimal/usr/share/python/
671 install -m 644 debian/pyversions.1 \
672 debian/python-minimal/usr/share/man/man1/
673- dh_link -ppython /usr/share/python/pyversions.py /usr/bin/pyversions
674+ dh_link -ppython-minimal /usr/share/python/pyversions.py /usr/bin/pyversions
675
676 # install -m 755 debian/pycompile \
677 # debian/python-minimal/usr/bin/
678
679=== modified file 'debpython/debhelper.py'
680--- debpython/debhelper.py 2011-10-06 00:22:16 +0000
681+++ debpython/debhelper.py 2012-11-28 12:53:22 +0000
682@@ -1,5 +1,5 @@
683 # -*- coding: UTF-8 -*-
684-# Copyright © 2010 Piotr Ożarowski <piotr@debian.org>
685+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
686 #
687 # Permission is hereby granted, free of charge, to any person obtaining a copy
688 # of this software and associated documentation files (the "Software"), to deal
689@@ -79,11 +79,11 @@
690 elif line.startswith('Source:'):
691 self.source_name = line[7:].strip()
692 elif source_section:
693- if line.startswith('XS-Python-Version:'):
694+ if line.lower().startswith('xs-python-version:'):
695 xspv = True
696 if not self.python_version:
697 self.python_version = line[18:].strip()
698- if line.startswith('X-Python-Version:'):
699+ if line.lower().startswith('x-python-version:'):
700 xpv = True
701 self.python_version = line[17:].strip()
702
703
704=== modified file 'debpython/depends.py'
705--- debpython/depends.py 2012-10-10 15:45:02 +0000
706+++ debpython/depends.py 2012-11-28 12:53:22 +0000
707@@ -1,5 +1,5 @@
708 # -*- coding: UTF-8 -*-
709-# Copyright © 2010 Piotr Ożarowski <piotr@debian.org>
710+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
711 #
712 # Permission is hereby granted, free of charge, to any person obtaining a copy
713 # of this software and associated documentation files (the "Software"), to deal
714@@ -94,11 +94,13 @@
715 tpl = 'python-dbg' if dbgpkg else 'python'
716 minv = pub_vers[0]
717 maxv = pub_vers[-1]
718- if dbgpkg:
719- tpl2 = 'python%d.%d-dbg'
720- else:
721- tpl2 = 'python%d.%d'
722- self.depend(' | '.join(tpl2 % i for i in debsorted(pub_vers)))
723+ # generating "python2.X | python2.Y | python2.Z" dependencies
724+ # disabled (see #625740):
725+ #if dbgpkg:
726+ # tpl2 = 'python%d.%d-dbg'
727+ #else:
728+ # tpl2 = 'python%d.%d'
729+ #self.depend(' | '.join(tpl2 % i for i in debsorted(pub_vers)))
730
731 # additional Depends to block python package transitions
732 if minv <= DEFAULT:
733@@ -112,21 +114,17 @@
734 if stats['compile']:
735 self.depend(MINPYCDEP)
736
737- if not options.ignore_shebangs:
738- for interpreter, version in stats['shebangs']:
739- self.depend(interpreter)
740+ for interpreter, version in stats['shebangs']:
741+ self.depend(interpreter)
742
743 for private_dir, details in stats['private_dirs'].iteritems():
744- if options.ignore_shebangs:
745- versions = []
746- else:
747- versions = list(v for i, v in details.get('shebangs', []) if v)
748+ versions = list(v for i, v in details.get('shebangs', []) if v)
749
750 for v in versions:
751 if v in SUPPORTED:
752 self.depend("python%d.%d" % v)
753 else:
754- log.warn('dependency on python%s (from shebang) ignored'
755+ log.info('dependency on python%s (from shebang) ignored'
756 ' - it\'s not supported anymore', vrepr(v))
757 # /usr/bin/python shebang → add python to Depends
758 if any(True for i, v in details.get('shebangs', []) if v is None):
759@@ -143,7 +141,9 @@
760 # are scripts for different Python versions: compile with
761 # default Python version (or the one requested via X-P-V)
762 args += "-V %s" % vrange_str(vr)
763- if vr[0] == vr[1]:
764+ if vr == (None, None):
765+ pass
766+ elif vr[0] == vr[1]:
767 self.depend("python%s" % vrepr(vr[0]))
768 else:
769 if vr[0]: # minimum version specified
770
771=== modified file 'debpython/files.py'
772--- debpython/files.py 2011-04-15 00:04:07 +0000
773+++ debpython/files.py 2012-11-28 12:53:22 +0000
774@@ -1,5 +1,5 @@
775 # -*- coding: UTF-8 -*-
776-# Copyright © 2010 Piotr Ożarowski <piotr@debian.org>
777+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
778 #
779 # Permission is hereby granted, free of charge, to any person obtaining a copy
780 # of this software and associated documentation files (the "Software"), to deal
781
782=== modified file 'debpython/namespace.py'
783--- debpython/namespace.py 2011-10-06 00:22:16 +0000
784+++ debpython/namespace.py 2012-11-28 12:53:22 +0000
785@@ -1,5 +1,5 @@
786 # -*- coding: UTF-8 -*-
787-# Copyright © 2011 Piotr Ożarowski <piotr@debian.org>
788+# Copyright © 2011-2012 Piotr Ożarowski <piotr@debian.org>
789 #
790 # Permission is hereby granted, free of charge, to any person obtaining a copy
791 # of this software and associated documentation files (the "Software"), to deal
792
793=== modified file 'debpython/option.py'
794--- debpython/option.py 2011-10-06 00:22:16 +0000
795+++ debpython/option.py 2012-11-28 12:53:22 +0000
796@@ -1,5 +1,5 @@
797 # -*- coding: UTF-8 -*-
798-# Copyright © 2010 Piotr Ożarowski <piotr@debian.org>
799+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
800 #
801 # Permission is hereby granted, free of charge, to any person obtaining a copy
802 # of this software and associated documentation files (the "Software"), to deal
803
804=== modified file 'debpython/pydist.py'
805--- debpython/pydist.py 2011-10-06 00:22:16 +0000
806+++ debpython/pydist.py 2012-11-28 12:53:22 +0000
807@@ -1,5 +1,5 @@
808 # -*- coding: UTF-8 -*-
809-# Copyright © 2010 Piotr Ożarowski <piotr@debian.org>
810+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
811 #
812 # Permission is hereby granted, free of charge, to any person obtaining a copy
813 # of this software and associated documentation files (the "Software"), to deal
814@@ -24,6 +24,7 @@
815 import os
816 import re
817 from os.path import exists, isdir, join
818+from string import maketrans
819 from subprocess import PIPE, Popen
820 from debpython.version import vrepr, getver, get_requested_versions
821 from debpython.tools import memoize
822@@ -32,7 +33,7 @@
823
824 PUBLIC_DIR_RE = re.compile(r'.*?/usr/lib/python(\d.\d+)/(site|dist)-packages')
825 PYDIST_RE = re.compile(r"""
826- (?P<name>[A-Za-z][A-Za-z0-9_.]*) # Python distribution name
827+ (?P<name>[A-Za-z][A-Za-z0-9_.\-]*) # Python distribution name
828 \s*
829 (?P<vrange>(?:-?\d\.\d+(?:-(?:\d\.\d+)?)?)?) # version range
830 \s*
831@@ -41,7 +42,7 @@
832 ;\s*
833 (?P<standard>PEP386)? # PEP-386 mode
834 \s*
835- (?P<rules>s/.*)? # translator rules
836+ (?P<rules>(?:s|tr|y).*)? # translator rules
837 )?
838 """, re.VERBOSE)
839 REQUIRES_RE = re.compile(r'''
840@@ -117,13 +118,13 @@
841 req = safe_name(name) + rest
842
843 data = load()
844- req_dict = REQUIRES_RE.match(req)
845- if not req_dict:
846+ req_d = REQUIRES_RE.match(req)
847+ if not req_d:
848 log.info('please ask dh_python2 author to fix REQUIRES_RE '
849 'or your upstream author to fix requires.txt')
850 raise Exception('requirement is not valid: %s' % req)
851- req_dict = req_dict.groupdict()
852- name = req_dict['name']
853+ req_d = req_d.groupdict()
854+ name = req_d['name']
855 details = data.get(name.lower())
856 if details:
857 for item in details:
858@@ -134,12 +135,13 @@
859 if not item['dependency']:
860 return # this requirement should be ignored
861 if item['dependency'].endswith(')'):
862- # no need to translate versions if version is hardcoded in Debian
863- # dependency
864- return item['dependency']
865- if req_dict['version']:
866- # FIXME: translate it (rules, versions)
867- return item['dependency']
868+ # no need to translate versions if version is hardcoded in
869+ # Debian dependency
870+ return item['dependency']
871+ if req_d['version'] and (item['standard'] or item['rules']) and\
872+ req_d['operator'] not in (None, '=='):
873+ v = _translate(req_d['version'], item['rules'], item['standard'])
874+ return "%s (%s %s)" % (item['dependency'], req_d['operator'], v)
875 else:
876 return item['dependency']
877
878@@ -231,3 +233,53 @@
879 def ci_regexp(name):
880 """Return case insensitive dpkg -S regexp."""
881 return ''.join("[%s%s]" % (i.upper(), i) if i.isalpha() else i for i in name.lower())
882+
883+
884+PRE_VER_RE = re.compile(r'[-.]?(alpha|beta|rc|dev|a|b|c)')
885+GROUP_RE = re.compile(r'\$(\d+)')
886+
887+
888+def _pl2py(pattern):
889+ """Convert Perl RE patterns used in uscan to Python's
890+
891+ >>> print _pl2py('foo$3')
892+ foo\g<3>
893+ """
894+ return GROUP_RE.sub(r'\\g<\1>', pattern)
895+
896+
897+def _translate(version, rules, standard):
898+ """Translate Python version into Debian one.
899+
900+ >>> _translate('1.C2betac', ['s/c//gi'], None)
901+ '1.2beta'
902+ >>> _translate('5-fooa1.2beta3-fooD',
903+ ... ['s/^/1:/', 's/-foo//g', 's:([A-Z]):+$1:'], 'PEP386')
904+ '1:5~a1.2~beta3+D'
905+ >>> _translate('x.y.x.z', ['tr/xy/ab/', 'y,z,Z,'], None)
906+ 'a.b.a.Z'
907+ """
908+ for rule in rules:
909+ # uscan supports s, tr and y operations
910+ if rule.startswith(('tr', 'y')):
911+ # Note: no support for escaped separator in the pattern
912+ pos = 1 if rule.startswith('y') else 2
913+ tmp = rule[pos + 1:].split(rule[pos])
914+ version = version.translate(maketrans(tmp[0], tmp[1]))
915+ elif rule.startswith('s'):
916+ # uscan supports: g, u and x flags
917+ tmp = rule[2:].split(rule[1])
918+ pattern = re.compile(tmp[0])
919+ count = 1
920+ if tmp[2:]:
921+ flags = tmp[2]
922+ if 'g' in flags:
923+ count = 0
924+ if 'i' in flags:
925+ pattern = re.compile(tmp[0], re.I)
926+ version = pattern.sub(_pl2py(tmp[1]), version, count)
927+ else:
928+ log.warn('unknown rule ignored: %s', rule)
929+ if standard == 'PEP386':
930+ version = PRE_VER_RE.sub('~\g<1>', version)
931+ return version
932
933=== modified file 'debpython/tools.py'
934--- debpython/tools.py 2011-10-06 00:22:16 +0000
935+++ debpython/tools.py 2012-11-28 12:53:22 +0000
936@@ -1,5 +1,5 @@
937 # -*- coding: UTF-8 -*-
938-# Copyright © 2010 Piotr Ożarowski <piotr@debian.org>
939+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
940 #
941 # Permission is hereby granted, free of charge, to any person obtaining a copy
942 # of this software and associated documentation files (the "Software"), to deal
943@@ -33,7 +33,7 @@
944
945 log = logging.getLogger(__name__)
946 EGGnPTH_RE = re.compile(r'(.*?)(-py\d\.\d(?:-[^.]*)?)?(\.egg-info|\.pth)$')
947-SHEBANG_RE = re.compile(r'^#!\s*/usr/bin/(?:env\s+)?(python(\d+\.\d+)?(?:-dbg)?).*')
948+SHEBANG_RE = re.compile(r'^#!\s*(.*?/bin/.*?)(python(2\.\d+)?(?:-dbg)?)(?:\s(.*))?[$\r\n].*')
949 SHAREDLIB_RE = re.compile(r'NEEDED.*libpython(\d\.\d)')
950 INSTALL_RE = re.compile(r"""
951 (?P<pattern>.+?) # file pattern
952@@ -92,6 +92,42 @@
953 return os.symlink(relpath(target, link), link)
954
955
956+def fix_shebang(fpath, replacement=None):
957+ """Normalize file's shebang.
958+
959+ :param replacement: new shebang command (path to interpreter and options)
960+ """
961+ try:
962+ with open(fpath) as fp:
963+ fcontent = fp.readlines()
964+ if not fcontent:
965+ log.debug('fix_shebang: ignoring empty file: %s', fpath)
966+ return None
967+ except IOError:
968+ log.error('cannot open %s', fpath)
969+ return False
970+
971+ match = SHEBANG_RE.match(fcontent[0])
972+ if not match:
973+ return None
974+ if not replacement:
975+ path, interpreter, version, argv = match.groups()
976+ if path != '/usr/bin': # f.e. /usr/local/* or */bin/env
977+ replacement = "/usr/bin/%s" % interpreter
978+ if interpreter == 'python2':
979+ replacement = '/usr/bin/python'
980+ if replacement and argv:
981+ replacement += " %s" % argv
982+ if replacement:
983+ log.info('replacing shebang in %s (%s)', fpath, fcontent[0])
984+ # do not catch IOError here, the file is zeroed at this stage so it's
985+ # better to fail dh_python2
986+ with open(fpath, 'w') as fp:
987+ fp.write("#! %s\n" % replacement)
988+ fp.writelines(fcontent[1:])
989+ return True
990+
991+
992 def shebang2pyver(fpath):
993 """Check file's shebang.
994
995@@ -105,10 +141,10 @@
996 if not match:
997 return None
998 res = match.groups()
999- if res != (None, None):
1000- if res[1]:
1001- res = res[0], getver(res[1])
1002- return res
1003+ if res[1:3] != (None, None):
1004+ if res[2]:
1005+ return res[1], getver(res[2])
1006+ return res[1], None
1007 except IOError:
1008 log.error('cannot open %s', fpath)
1009
1010
1011=== modified file 'debpython/version.py'
1012--- debpython/version.py 2011-10-11 16:07:04 +0000
1013+++ debpython/version.py 2012-11-28 12:53:22 +0000
1014@@ -1,5 +1,5 @@
1015 # -*- coding: UTF-8 -*-
1016-# Copyright © 2010 Piotr Ożarowski <piotr@debian.org>
1017+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
1018 #
1019 # Permission is hereby granted, free of charge, to any person obtaining a copy
1020 # of this software and associated documentation files (the "Software"), to deal
1021@@ -22,6 +22,7 @@
1022 import logging
1023 import re
1024 from ConfigParser import SafeConfigParser
1025+from os import environ
1026 from os.path import exists, dirname, join
1027 from types import GeneratorType
1028
1029@@ -36,18 +37,23 @@
1030
1031 # try to read debian_defaults and get a list of supported Python versions and
1032 # the default one from there
1033-_config = SafeConfigParser()
1034-_config.read(['/usr/share/python/debian_defaults',
1035- join(dirname(__file__), '..', 'debian', 'debian_defaults')])
1036+_supported = environ.get('DEBPYTHON_SUPPORTED')
1037+_default = environ.get('DEBPYTHON_DEFAULT')
1038+if not _supported or not _default:
1039+ _config = SafeConfigParser()
1040+ _config.read('/usr/share/python/debian_defaults')
1041+ if not _default:
1042+ _default = _config.get('DEFAULT', 'default-version')[6:]
1043+ if not _supported:
1044+ _supported = _config.get('DEFAULT', 'supported-versions')\
1045+ .replace('python', '')
1046 try:
1047- DEFAULT = tuple(int(i) for i in _config.get('DEFAULT',
1048- 'default-version')[6:].split('.'))
1049+ DEFAULT = tuple(int(i) for i in _default.split('.'))
1050 except Exception:
1051 log.exception('cannot read debian_defaults')
1052 try:
1053- SUPPORTED = tuple(tuple(int(j) for j in i.strip()[6:].split('.'))\
1054- for i in _config.get('DEFAULT',
1055- 'supported-versions').split(','))
1056+ SUPPORTED = tuple(tuple(int(j) for j in i.strip().split('.'))
1057+ for i in _supported.split(','))
1058 except Exception:
1059 log.exception('cannot read debian_defaults')
1060
1061@@ -83,10 +89,10 @@
1062 versions = set(v for v in SUPPORTED if minv <= v < maxv)
1063
1064 if available:
1065- versions = set(v for v in versions \
1066+ versions = set(v for v in versions
1067 if exists("/usr/bin/python%d.%d" % v))
1068 elif available is False:
1069- versions = set(v for v in versions \
1070+ versions = set(v for v in versions
1071 if not exists("/usr/bin/python%d.%d" % v))
1072
1073 return versions
1074@@ -151,6 +157,8 @@
1075 ((2, 6), (2, 6))
1076 >>> parse_pycentral_vrange('2.5, 2.6')
1077 ((2, 5), None)
1078+ >>> parse_pycentral_vrange('>= 2.6.3')
1079+ ((2, 6), None)
1080 """
1081 get = lambda x: get_requested_versions(parse_vrange(x))
1082
1083@@ -188,7 +196,7 @@
1084 minv = sorted(hardcoded)[0]
1085
1086 if current:
1087- versions = sorted(get("%s-%s" % (minv if minv else '', \
1088+ versions = sorted(get("%s-%s" % (minv if minv else '',
1089 maxv if maxv else '')))
1090 if not versions:
1091 raise ValueError("version range doesn't match installed Python versions: %s" % value)
1092
1093=== modified file 'dh_python2'
1094--- dh_python2 2012-05-22 11:23:40 +0000
1095+++ dh_python2 2012-11-28 12:53:22 +0000
1096@@ -1,7 +1,7 @@
1097 #! /usr/bin/python
1098 # -*- coding: UTF-8 -*- vim: et ts=4 sw=4
1099
1100-# Copyright © 2010-2011 Piotr Ożarowski <piotr@debian.org>
1101+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
1102 #
1103 # Permission is hereby granted, free of charge, to any person obtaining a copy
1104 # of this software and associated documentation files (the "Software"), to deal
1105@@ -42,8 +42,8 @@
1106 from debpython.pydist import validate as validate_pydist, \
1107 PUBLIC_DIR_RE
1108 from debpython.tools import sitedir, relative_symlink, \
1109- shebang2pyver, so2pyver, \
1110- clean_egg_name, \
1111+ fix_shebang, shebang2pyver, \
1112+ so2pyver, clean_egg_name, \
1113 pyinstall, pyremove
1114 from debpython.option import Option
1115
1116@@ -299,7 +299,7 @@
1117
1118
1119 ### PACKAGE DETAILS ############################################
1120-def scan(package, dname=None, clean_dbg_pkg=True):
1121+def scan(package, dname=None, options=None):
1122 """Gather statistics about Python files in given package."""
1123 r = {'requires.txt': set(),
1124 'nsp.txt': set(),
1125@@ -321,8 +321,9 @@
1126 'usr/share/%s', 'usr/share/games/%s')]
1127 else:
1128 # scan private directory *only*
1129- proot = join('debian', package, dname.strip('/'))
1130- private_to_check = [dname[1:]]
1131+ dname = dname.strip('/')
1132+ proot = join('debian', package, dname)
1133+ private_to_check = [dname]
1134
1135 for root, dirs, file_names in os.walk(proot):
1136 # ignore Python 3.X locations
1137@@ -358,7 +359,7 @@
1138 # handle some EGG related data (.egg-info dirs)
1139 for name in dirs:
1140 if name.endswith('.egg-info'):
1141- if dbg_package and clean_dbg_pkg:
1142+ if dbg_package and options.clean_dbg_pkg:
1143 rmtree(join(root, name))
1144 dirs.remove(name)
1145 continue
1146@@ -380,6 +381,11 @@
1147 fpath = join(root, fn)
1148 if not exists(fpath):
1149 # could be removed while handling .so symlinks
1150+ if islink(fpath) and '.so.' in split(fpath)[-1]:
1151+ # dangling symlink to (now removed/renamed) .so file
1152+ # which wasn't removed yet (see test3's quux.so.0)
1153+ log.info('removing symlink: %s', fpath)
1154+ os.remove(fpath)
1155 continue
1156 fext = fn.rsplit('.', 1)[-1]
1157 if fext in ('pyc', 'pyo'):
1158@@ -399,18 +405,22 @@
1159 os.remove(lpath)
1160 log.info('renaming %s to %s', dstfpath, fn)
1161 os.rename(dstfpath, fpath)
1162- if dbg_package and clean_dbg_pkg and fext not in ('so', 'h'):
1163+ if dbg_package and options.clean_dbg_pkg and \
1164+ fext not in ('so', 'h'):
1165 os.remove(join(root, fn))
1166 continue
1167
1168 elif private_dir:
1169- if exists(join(root, fn)):
1170- mode = os.stat(join(root, fn))[ST_MODE]
1171+ if exists(fpath):
1172+ mode = os.stat(fpath)[ST_MODE]
1173 if mode & S_IXUSR or mode & S_IXGRP or mode & S_IXOTH:
1174- res = shebang2pyver(join(root, fn))
1175- if res:
1176- r['private_dirs'].setdefault(private_dir, {})\
1177- .setdefault('shebangs', set()).add(res)
1178+ if (options.no_shebang_rewrite or \
1179+ fix_shebang(fpath, options.shebang)) and \
1180+ not options.ignore_shebangs:
1181+ res = shebang2pyver(fpath)
1182+ if res:
1183+ r['private_dirs'].setdefault(private_dir, {})\
1184+ .setdefault('shebangs', set()).add(res)
1185
1186 if public_dir or private_dir:
1187 if fext == 'so':
1188@@ -447,11 +457,14 @@
1189 continue
1190 # search for scripts in bin dirs
1191 if bin_dir:
1192- res = shebang2pyver(fpath)
1193- if res:
1194- r['shebangs'].add(res)
1195+ if (options.no_shebang_rewrite or \
1196+ fix_shebang(fpath, options.shebang)) and \
1197+ not options.ignore_shebangs:
1198+ res = shebang2pyver(fpath)
1199+ if res:
1200+ r['shebangs'].add(res)
1201
1202- if dbg_package and clean_dbg_pkg:
1203+ if dbg_package and options.clean_dbg_pkg:
1204 # remove empty directories in -dbg packages
1205 proot = proot + '/usr/lib'
1206 for root, dirs, file_names in os.walk(proot, topdown=False):
1207@@ -468,7 +481,7 @@
1208 ################################################################
1209 def main():
1210 usage = '%prog -p PACKAGE [-V [X.Y][-][A.B]] DIR [-X REGEXPR]\n'
1211- parser = OptionParser(usage, version='%prog 2.0~beta1',
1212+ parser = OptionParser(usage, version='%prog 2.1',
1213 option_class=Option)
1214 parser.add_option('--no-guessing-versions', action='store_false',
1215 dest='guess_versions', default=True,
1216@@ -514,6 +527,8 @@
1217 help='recreate __init__.py files for given namespaces at install time')
1218 parser.add_option('--clean-pycentral', action='store_true', default=False,
1219 help='generate maintainer script that will remove pycentral files')
1220+ parser.add_option('--shebang',
1221+ help='use given command as shebang in scripts')
1222 parser.add_option('--ignore-shebangs', action='store_true', default=False,
1223 help='do not translate shebangs into Debian dependencies')
1224 parser.add_option('--ignore-namespace', action='store_true', default=False,
1225@@ -521,6 +536,8 @@
1226 parser.add_option('--no-dbg-cleaning', action='store_false',
1227 dest='clean_dbg_pkg', default=True,
1228 help='do not remove files from debug packages')
1229+ parser.add_option('--no-shebang-rewrite', action='store_true',
1230+ default=False, help='do not rewrite shebangs')
1231 # ignore some debhelper options:
1232 parser.add_option('-O', help=SUPPRESS_HELP)
1233
1234@@ -588,7 +605,7 @@
1235 if not pyremove(package, options.vrange):
1236 exit(5)
1237 fix_locations(package)
1238- stats = scan(package, private_dir, options.clean_dbg_pkg)
1239+ stats = scan(package, private_dir, options)
1240 if not private_dir:
1241 share(package, stats, options)
1242 pyshared_dir = "debian/%s/usr/share/pyshared/" % package
1243
1244=== modified file 'dh_python2.rst'
1245--- dh_python2.rst 2011-10-06 00:22:16 +0000
1246+++ dh_python2.rst 2012-11-28 12:53:22 +0000
1247@@ -22,13 +22,13 @@
1248 * build module/application using its standard build system,
1249 remember to build extensions for all supported Python versions (loop over
1250 ``pyversions -vr``),
1251- * install files to the *standard* locations, add ``--install-layout=deb`` to
1252+ * install files to the *standard* locations, add `--install-layout=deb` to
1253 setup.py's install command if your package is using distutils,
1254- * add ``python2`` to dh's ``--with`` option, or:
1255- * include /usr/share/cdbs/1/class/python-distutils.mk in debian/rules and
1256- depend on cdbs (>= 0.4.90), or:
1257- * call dh_python2 in the binary-* target,
1258- * add ${python:Depends} to Depends,
1259+ * add `python2` to dh's --with option, or:
1260+ * `include /usr/share/cdbs/1/class/python-distutils.mk` in debian/rules and
1261+ depend on `cdbs (>= 0.4.90)`, or:
1262+ * call ``dh_python2`` in the `binary-*` target,
1263+ * add `${python:Depends}` to Depends
1264
1265 NOTES
1266 -----
1267@@ -43,17 +43,19 @@
1268 dependencies
1269 ~~~~~~~~~~~~
1270 dh_python2 tries to translate Python dependencies from requires.txt file to
1271-Debian dependencies, use debian/pydist-overrides or --no-guessing-deps option
1272-to override it. If you want dh_python2 to generate more strict dependencies
1273-(f.e. to avoid ABI problems) create debian/python-foo.pydist file. See
1274-/usr/share/doc/python-doc/README.PyDist (provided by python-doc package) for
1275-more information.
1276+Debian dependencies. Use debian/pydist-overrides or --no-guessing-deps option
1277+to override it if the guess is incorrect. If you want dh_python2 to generate
1278+more strict dependencies (f.e. to avoid ABI problems) create
1279+debian/python-foo.pydist file. See /usr/share/doc/python-doc/README.PyDist
1280+(provided by python-doc package) for more information. If the pydist file
1281+contains PEP386 flag or set of (uscan like) rules, dh_python2 will make the
1282+depedency versioned (version requirements are ignored by default).
1283
1284 namespace feature
1285 ~~~~~~~~~~~~~~~~~
1286 dh_python2 parses Egg's namespace_packages.txt files (in addition to
1287 --namespace command line argument(s)) and drops empty __init__.py files from
1288-binary package. pycompile will regenerates them at install time and pyclean
1289+binary package. pycompile will regenerate them at install time and pyclean
1290 will remove them at uninstall time (if they're no longer used in installed
1291 packages). It's still a good idea to provide __init__.py file in one of
1292 binary packages (even if all other packages use this feature).
1293@@ -70,24 +72,33 @@
1294 dh_python2 with --skip-private option and add another call with a path to this
1295 directory and new options.
1296
1297+debug packages
1298+~~~~~~~~~~~~~~
1299+In binary packages which name ends with `-dbg`, all files in
1300+`/usr/lib/python2.X/{site,dist}-packages/` directory
1301+that have extensions different than `so` or `h` are removed by default.
1302+Use --no-dbg-cleaning option to disable this feature.
1303+
1304 pyinstall files
1305 ~~~~~~~~~~~~~~~
1306 Files listed in debian/pkg.pyinstall file will be installed as public modules
1307 for all requested Python versions (dh_install doesn't know about python's site-
1308 vs. dist-packages issue).
1309
1310-Syntax: "path/to/file [VERSION_RANGE] [NAMESPACE]". debian directory is
1311-automatically removed from the path, so you can place your files in debian/
1312-directory and install them from this location (if you want to install them in
1313-"debian" namespace, set NAMESPACE to debian). If NAMESPACE is set, all listed
1314-files will be installed in .../dist-packages/NAMESPACE/ directory.
1315+Syntax: ``path/to/file [VERSION_RANGE] [NAMESPACE]``
1316+
1317+debian directory is automatically removed from the path, so you can place your
1318+files in debian/ directory and install them from this location (if you want to
1319+install them in "debian" namespace, set NAMESPACE to debian). If NAMESPACE is
1320+set, all listed files will be installed in .../dist-packages/NAMESPACE/
1321+directory.
1322
1323 Examples:
1324- * `foo.py` (installs .../dist-packages/foo.py for all supported Python versions)
1325- * `foo/bar.py 2.6-` (installs .../dist-packages/foo/bar.py for versions >= 2.6)
1326- * `foo/bar.py spam` (installs .../dist-packages/spam/bar.py)
1327- * `debian/*.py spam.egg 2.5` (installs .../python2.5/site-packages/spam/egg/\*.py
1328- files)
1329+ * ``foo.py`` installs .../dist-packages/foo.py for all supported Python versions
1330+ * ``foo/bar.py 2.6-`` installs .../dist-packages/foo/bar.py for versions >= 2.6
1331+ * ``foo/bar.py spam`` installs .../dist-packages/spam/bar.py
1332+ * ``debian/*.py spam.egg 2.5`` installs .../python2.5/site-packages/spam/egg/\*.py
1333+ files
1334
1335 pyremove files
1336 ~~~~~~~~~~~~~~
1337@@ -96,8 +107,18 @@
1338 debian/pkg.pyremove file.
1339
1340 Examples:
1341- * `*.pth` (removes .pth files from .../dist-packages/)
1342- * `bar/baz.py 2.5` (removes .../python2.5/site-packages/bar/baz.py)
1343+ * ``*.pth`` removes .pth files from .../dist-packages/
1344+ * ``bar/baz.py 2.5`` removes .../python2.5/site-packages/bar/baz.py
1345+
1346+overriding supported / default Python versions
1347+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1348+If you want to override system's list of supported Python versions or the
1349+default one (f.e. to build a package that includes symlinks for older version
1350+of Python or compile .py files only for given interpreter version), you can do
1351+that via `DEBPYTHON_SUPPORTED` and/or `DEBPYTHON_DEFAULT` env. variables.
1352+
1353+Example: ``2.5,2.7`` limits the list of supported Python versions to Python 2.5
1354+and Python 2.7.
1355
1356
1357 OPTIONS
1358@@ -112,6 +133,8 @@
1359
1360 --no-dbg-cleaning do not remove any files from debug packages
1361
1362+--no-shebang-rewrite do not rewrite shebangs
1363+
1364 --skip-private don't check private directories
1365
1366 -v, --verbose turn verbose mode on
1367@@ -156,6 +179,8 @@
1368 --clean-pycentral generate maintainer script that will remove byte code
1369 generated by python-central helper
1370
1371+--shebang=COMMAND use given command as shebang in scripts
1372+
1373 --ignore-shebangs do not translate shebangs into Debian dependencies
1374
1375 SEE ALSO
1376
1377=== modified file 'pyclean'
1378--- pyclean 2011-09-27 18:21:42 +0000
1379+++ pyclean 2012-11-28 12:53:22 +0000
1380@@ -1,8 +1,7 @@
1381 #! /usr/bin/python
1382-# -*- coding: UTF-8 -*-
1383-# vim: et ts=4 sw=4
1384-
1385-# Copyright © 2010-2011 Piotr Ożarowski <piotr@debian.org>
1386+# -*- coding: UTF-8 -*- vim: et ts=4 sw=4
1387+#
1388+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
1389 #
1390 # Permission is hereby granted, free of charge, to any person obtaining a copy
1391 # of this software and associated documentation files (the "Software"), to deal
1392
1393=== modified file 'pycompile'
1394--- pycompile 2011-10-06 00:22:16 +0000
1395+++ pycompile 2012-11-28 12:53:22 +0000
1396@@ -1,8 +1,7 @@
1397 #! /usr/bin/python
1398-# -*- coding: utf-8 -*-
1399-# vim: et ts=4 sw=4
1400-
1401-# Copyright © 2010-2011 Piotr Ożarowski <piotr@debian.org>
1402+# -*- coding: utf-8 -*- vim: et ts=4 sw=4
1403+#
1404+# Copyright © 2010-2012 Piotr Ożarowski <piotr@debian.org>
1405 # Copyright © 2010 Canonical Ltd
1406 #
1407 # Permission is hereby granted, free of charge, to any person obtaining a copy
1408@@ -132,7 +131,7 @@
1409 if not isinstance(version, basestring):
1410 version = vrepr(version)
1411 cmd = "/usr/bin/python%s%s -m py_compile -" \
1412- % (version, '' if (__debug__ or not optimize) else ' -O')
1413+ % (version, ' -O' if optimize else '')
1414 process = Popen(cmd, bufsize=1, shell=True,
1415 stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
1416 workers[version] = process # keep the reference for .communicate()
1417@@ -153,7 +152,7 @@
1418
1419 # byte compile files
1420 for fn, versions_to_compile in filter_files(files, e_patterns, versions):
1421- cfn = fn + 'c' if (__debug__ or not optimize) else 'o'
1422+ cfn = fn + 'o' if optimize else 'c'
1423 if not exists(fn):
1424 # pycentral's hook should clean it later
1425 if islink(fn):
1426
1427=== modified file 'pydist/dist_fallback'
1428--- pydist/dist_fallback 2011-10-06 00:22:16 +0000
1429+++ pydist/dist_fallback 2012-11-28 12:53:22 +0000
1430@@ -1,51 +1,46 @@
1431 python python
1432 setuptools python-pkg-resources
1433 wsgiref python (>= 2.5) | python-wsgiref
1434+argparse python (>= 2.7) | python-argparse
1435+pil python-imaging
1436 AddOns python-peak.util
1437+BatchModify trac-batchmodify
1438 BitTornado bittornado
1439 BitTorrent bittorrent
1440-Bitten trac-bitten
1441-Bugs_Everywhere bugs-everywhere
1442+Bitten trac-bitten-slave
1443 BytecodeAssembler python-peak.util
1444 BzrPipeline bzr-pipeline
1445 BzrTools bzrtools
1446+Calendar_and_Contacts_Server calendarserver
1447 CedarBackup2 cedar-backup2
1448 CherryPy python-cherrypy3
1449+CherryTree cherrytree
1450 ClusterShell clustershell
1451 Codeville codeville
1452-Connectome_Viewer connectomeviewer
1453 ControlAula controlaula
1454-Couchapp couchapp
1455 CoverageTestRunner python-coverage-test-runner
1456-Cython cython
1457 DITrack ditrack
1458 DebTorrent debtorrent
1459 DecoratorTools python-peak.util.decorators
1460+DiaVisViewPlugin trac-diavisview
1461 Djapian python-django-djapian
1462-Djblets python-django-djblets
1463-Dockbarx dockbarx
1464+Doconce doconce
1465 Dosage dosage
1466 DouF00 douf00
1467 Editra editra
1468-Eikazo eikazo
1469 Extremes python-peak.util
1470 Fabric fabric
1471 FeinCMS python-django-feincms
1472 Flask_WTF python-flaskext.wtf
1473-GGZChess python-ggz
1474-GGZCore python-ggz
1475-GGZDMod python-ggz
1476-GGZMod python-ggz
1477-Gally gally
1478 GaussSum gausssum
1479 GeoIP_Python python-geoip
1480 GitPython python-git
1481-Gufw gufw
1482 HarvestMan harvestman
1483 ISO8583_Module python-iso8583
1484 Ibid ibid
1485 JCC jcc
1486 Loom bzr-loom
1487+MAT mat
1488 Magic_file_extensions python-magic
1489 Mirage mirage
1490 Mnemosyne mnemosyne
1491@@ -53,11 +48,11 @@
1492 MySQL_python python-mysqldb
1493 Nautilus_scripts_manager nautilus-scripts-manager
1494 Nulog nulog
1495+OdtExportPlugin trac-odtexport
1496 PEAK_Rules python-peak.rules
1497 PIDA pida
1498 Photon photon
1499 Plywood plywood
1500-Pootle pootle
1501 Postr postr
1502 PreludeEasy python-prelude
1503 PsychoPy psychopy
1504@@ -66,8 +61,11 @@
1505 PyBluez python-bluez
1506 PyCAPTCHA python-captcha
1507 PyCoCuMa pycocuma
1508+PyFFTW3 python-fftw
1509+PyHamcrest python-hamcrest
1510 PyMca pymca
1511 PyMetrics pymetrics
1512+PyNAST pynast
1513 PyOpenGL python-opengl
1514 PyProtocols python-protocols
1515 PyRoom pyroom
1516@@ -76,53 +74,63 @@
1517 PyWavelets python-pywt
1518 PyWebDAV python-webdav
1519 PyYAML python-yaml
1520+Py_ python-py++
1521 Pygmy pygmy
1522-Pyjamas pyjamas-pyjs
1523 Pymacs pymacs
1524-Pyro pyro
1525-Pyste libboost-python1.46-dev
1526+Pyste libboost-python1.49-dev
1527 PythonDaap python-daap
1528 QuantLib_Python quantlib-python
1529 Quixote python-quixote1
1530-RSVGSDL python-ggz
1531-SSSDConfig python-sss
1532+Ren_Py python-renpy
1533+Roadmap_Plugin trac-roadmap
1534+RunSnakeRun runsnakerun
1535 ScientificPython python-scientific
1536 Shinken shinken-core
1537 Sonata sonata
1538 South python-django-south
1539-SpreadModule python-spread
1540-Starch coop-computing-tools
1541 SymbolType python-peak.util
1542 Symbolic python-swiginac
1543+TcosConfigurator tcos-configurator
1544 The_FreeSmartphone_Framework_Daemon fso-frameworkd
1545 TileCache tilecache
1546 TileStache tilestache
1547 Trac trac
1548 TracAccountManager trac-accountmanager
1549+TracAnnouncer trac-announcer
1550 TracAuthOpenId trac-authopenid
1551 TracBzr trac-bzr
1552 TracCustomFieldAdmin trac-customfieldadmin
1553 TracDateField trac-datefieldplugin
1554 TracGit trac-git
1555+TracHTTPAuth trac-httpauth
1556 TracMasterTickets trac-mastertickets
1557 TracMercurial trac-mercurial
1558-TracPrivateTickets trac-privateticketsplugin
1559+TracPrivateTickets trac-privatetickets
1560 TracSpamFilter trac-spamfilter
1561+TracSubTicketsPlugin trac-subtickets
1562 TracTags trac-tags
1563+TracVirtualTicketPermissions trac-virtualticketpermissions
1564 TracWikiPrintPlugin trac-wikiprint
1565-TracWikiRename trac-wikirename
1566 TracWysiwyg trac-wysiwyg
1567 TracXMLRPC trac-xmlrpc
1568+Trac_jsGantt trac-jsgantt
1569 Turtle_Art turtleart
1570 UNKNOWN python-pdfrw
1571+UnknownHorizons unknown-horizons
1572+VirtualMailManager vmm
1573 WikiTableMacro trac-wikitablemacro
1574 Wikkid wikkid
1575+WordPress_Library python-wordpresslib
1576+X_Tile x-tile
1577 ZODB3 python-zodb
1578+_tifffile tifffile
1579 activity_log_manager activity-log-manager
1580 adns_python python-adns
1581 agtl agtl
1582+alembic alembic
1583 allmydata_tahoe tahoe-lafs
1584 apache_libcloud python-libcloud
1585+apparmor apparmor-utils
1586 apt_clone apt-clone
1587 apt_p2p apt-p2p
1588 apt_xapian_index apt-xapian-index
1589@@ -131,14 +139,13 @@
1590 arandr arandr
1591 archivemail archivemail
1592 archmage archmage
1593-arcjobtool arcjobtool
1594 arista arista
1595-astk code-aster-run
1596 atheist atheist
1597 autokey autokey-common
1598+beautifulsoup4 python-bs4
1599 bicyclerepair bicyclerepair
1600-bitbake bitbake
1601 bley bley
1602+bookletimposer bookletimposer
1603 bpython bpython
1604 buildbot buildbot
1605 buildbot_slave buildbot-slave
1606@@ -154,8 +161,6 @@
1607 bzr_git bzr-git
1608 bzr_grep bzr-grep
1609 bzr_gtk bzr-gtk
1610-bzr_hg bzr-hg
1611-bzr_pqm bzr-pqm
1612 bzr_rewrite bzr-rewrite
1613 bzr_search bzr-search
1614 bzr_stats bzr-stats
1615@@ -163,32 +168,38 @@
1616 bzr_upload bzr-upload
1617 bzr_xmloutput bzr-xmloutput
1618 cappuccino cappuccino
1619+carbon graphite-carbon
1620 cardstories cardstories
1621 cfget cfget
1622+chirp chirp
1623 chm2pdf chm2pdf
1624 cm config-manager
1625+cmdtest cmdtest
1626+cpuset cpuset
1627 cvs2svn cvs2svn
1628-cwm python-swap
1629 d_feet d-feet
1630+d_rats d-rats
1631+datapm datapm
1632+dblatex dblatex
1633 dctrl2xml dctrl2xml
1634 debpartial_mirror debpartial-mirror
1635 deluge deluge-common
1636 devscripts devscripts
1637+dicompyler dicompyler
1638 dissy dissy
1639-distro_info distro-info
1640 djagios djagios
1641 django_ajax_selects django-ajax-selects
1642 django_filter django-filter
1643 django_openid_auth python-django-auth-openid
1644-django_tables django-tables
1645+django_tables2 django-tables
1646+django_tastypie python-tastypie
1647 djextdirect python-django-extdirect
1648+dkimpy python-dkim
1649 dot2tex dot2tex
1650 driconf driconf
1651 dtrx dtrx
1652 duplicity duplicity
1653 dvcs_autosync dvcs-autosync
1654-earcandy earcandy
1655-ears ears
1656 eficas eficas
1657 elisa python-moovida
1658 elisa_plugin_amazon moovida-plugins-bad
1659@@ -224,81 +235,93 @@
1660 elisa_plugin_wmd moovida-plugins-bad
1661 elisa_plugin_youtube moovida-plugins-ugly
1662 epigrass epigrass
1663+epoptes epoptes
1664+espeak_gui espeak-gui
1665 euca2ools euca2ools
1666 explorer bzr-explorer
1667 flashbake flashbake
1668 flickrfs flickrfs
1669 fontypython fontypython
1670+frescobaldi frescobaldi
1671+fts fts
1672+fts_clacks fts-clacks
1673+fts_fai fts-fai-ldap
1674+fts_ltsp fts-ltsp-ldap
1675+fts_opsi fts-opsi
1676 funkload funkload
1677 fuse_python python-fuse
1678 fusil fusil
1679-fusion_icon fusion-icon
1680 fuss_launcher fuss-launcher
1681-gEcrit gecrit
1682 galternatives galternatives
1683+gameclock gameclock
1684 gaphor gaphor
1685 gastablesgui gastables
1686+gbp git-buildpackage
1687 gdevilspie gdevilspie
1688 gdmodule python-gd
1689 genbackupdata genbackupdata
1690 getmail getmail4
1691 geximon geximon
1692-git_build_package git-buildpackage
1693+git_review git-review
1694 github_cli github-cli
1695 giws giws
1696 gjots2 gjots2
1697+glipper glipper
1698 globs globs
1699+glue glue-sprite
1700 gmobilemedia gmobilemedia
1701 gnome_activity_journal gnome-activity-journal
1702 gnome_app_install gnome-codec-install
1703 gnomecatalog gnomecatalog
1704 gnuplot_py python-gnuplot
1705 go2 go2
1706-googlecl googlecl
1707 gozerbot gozerbot
1708 gozerplugs gozerbot-plugins
1709 gpodder gpodder
1710 gquilt gquilt
1711-gracie gracie
1712 graphviz trac-graphviz
1713-groundcontrol groundcontrol
1714 gunicorn gunicorn
1715 gvb gvb
1716 gwrite gwrite
1717 gyp gyp
1718-hellanzb hellanzb
1719 hgnested mercurial-nested
1720 hgsvn hgsvn
1721-hgview hgview
1722+hitchhhiker hitchhiker
1723 hotwire hotwire
1724+httpcode httpcode
1725+httpie httpie
1726+hyde hyde
1727 ibus_tegaki ibus-tegaki
1728 icalview trac-icalviewplugin
1729 identicurse identicurse
1730 imposm.parser python-imposm-parser
1731-include_server distcc-pump
1732-indywiki indywiki
1733 iotop iotop
1734 ipython ipython
1735+isoquery isoquery
1736 jack jack
1737 jsb jsonbot
1738+juju juju
1739+kedpm kedpm
1740+keepnote keepnote
1741 key_mon key-mon
1742 keymapper keymapper
1743 kiki kiki
1744 lastfmsubmitd lastfmsubmitd
1745 lazygal lazygal
1746+legit legit
1747 libtpclient_py python-tp-client
1748 libtpproto_py python-tp-netlib
1749-live_magic live-magic
1750+lio lio-utils
1751 llnl_babel python-sidl
1752 llnl_babel_sidl_sidlx python-sidl
1753 loggerhead loggerhead
1754 londonlaw londonlaw
1755 lptools lptools
1756 lshell lshell
1757-lucene pylucene
1758 ludev_t ludevit
1759 lybniz lybniz
1760 mayavi mayavi2
1761+mcomix mcomix
1762 mecab_python python-mecab
1763 mercurial mercurial-common
1764 mic mic2
1765@@ -306,19 +329,23 @@
1766 mingc python-ming
1767 mini_dinstall mini-dinstall
1768 miro miro
1769+mitmproxy mitmproxy
1770 mod_python libapache2-mod-python
1771 moin python-moinmoin
1772 moosic moosic
1773 mozilla_devscripts mozilla-devscripts
1774 mpDris mpdris
1775-msgpack_python msgpack-python
1776 museek_python_bindings python-museek
1777 musiclibrarian musiclibrarian
1778+mysql_utilities mysql-utilities
1779+nautilus_pastebin nautilus-pastebin
1780 neso tryton-neso
1781 netsnmp_python libsnmp-python
1782 nfoview nfoview
1783 nglister nglister
1784+nml nml
1785 nsscache nsscache
1786+nxt_python python-nxt
1787 obMenu obmenu
1788 obnam obnam
1789 oboinus oboinus
1790@@ -329,14 +356,16 @@
1791 openbmap_logger openbmap-logger
1792 openoffice_python python-openoffice
1793 openshot openshot
1794+openstack.common python-openstack-common
1795 osc osc
1796-ows ows
1797 pYsearch python-yahoo
1798+pbundler pbundler
1799 pdfposter pdfposter
1800 pdfshuffler pdfshuffler
1801 pep8 pep8
1802 perroquet perroquet
1803-picard picard
1804+pgxnclient pgxnclient
1805+photofilmstrip photofilmstrip
1806 pithos pithos
1807 pkpgcounter pkpgcounter
1808 playitslowly playitslowly
1809@@ -344,14 +373,18 @@
1810 prelude_correlator prelude-correlator
1811 prelude_notify prelude-notify
1812 preprocess preprocess
1813+presage_dbus_service presage-dbus
1814 prewikka prewikka
1815 prioritized_methods python-peak.rules
1816 proteus tryton-proteus
1817 prover9_mace4 prover9-mace4
1818 pssh pssh
1819+ptex2tex ptex2tex
1820 puddletag puddletag
1821 purity_ng purity-ng
1822 pyExcelerator python-excelerator
1823+pyFAI pyfai
1824+pyLibravatar python-libravatar
1825 pyOpenSSL python-openssl
1826 pyPortMidi python-pypm
1827 py_Asterisk python-asterisk
1828@@ -359,8 +392,8 @@
1829 py_rrdtool python-rrdtool
1830 py_sendfile python-sendfile
1831 pyacidobasic python-acidobasic
1832+pyacoustid python-acoustid
1833 pyalsaaudio python-alsaaudio
1834-pybackpack pybackpack
1835 pybloom python-bloomfilter
1836 pybridge pybridge
1837 pybtex pybtex
1838@@ -370,9 +403,7 @@
1839 pychm python-chm
1840 pycrypto python-crypto
1841 pydicom python-dicom
1842-pydkim python-dkim
1843 pydns python-dns
1844-pyelemental python-elemental
1845 pyenchant python-enchant
1846 pyepr python-epr
1847 pyfacebook python-facebook
1848@@ -381,38 +412,42 @@
1849 pygopherd pygopherd
1850 pygpgme python-gpgme
1851 pygpiv python-gpiv
1852+pygrib python-grib
1853 pyliblo python-liblo
1854 pyliblzma python-lzma
1855 pylibpcap python-libpcap
1856-pylibssh2 python-libssh2
1857 pylint pylint
1858+pylogsparser python-logsparser
1859 pymecavideo python-mecavideo
1860 pymilter python-milter
1861 pymol pymol
1862 pymucipher python-museek
1863 pymvpa python-mvpa
1864+pymvpa2 python-mvpa2
1865 pyneighborhood pyneighborhood
1866 pynids python-nids
1867 pynifti python-nifti
1868 pyogg python-ogg
1869+pyp pyp
1870 pyparallel python-parallel
1871 pyppd pyppd
1872 pyprompter pyprompter
1873-pyqonsole pyqonsole
1874 pyremctl python-remctl
1875 pyrit pyrit
1876 pyrite_publisher pyrite-publisher
1877 pysane python-imaging-sane
1878 pysatellites python-satellites
1879 pyserial python-serial
1880-pysnmp python-pysnmp2
1881+pysnmp python-pysnmp4
1882 pysnmp_apps python-pysnmp4-apps
1883 pysnmp_mibs python-pysnmp4-mibs
1884 pysparse python-sparse
1885+pyspf python-spf
1886 pyspi python-at-spi
1887 pysqlite python-pysqlite1.1
1888 pystatgrab python-statgrab
1889 pysubnettree python-subnettree
1890+pysurfer python-surfer
1891 pytagsfs pytagsfs
1892 pytcpwrap python-tcpwrap
1893 python2_biggles python-pybiggles
1894@@ -425,10 +460,10 @@
1895 python_logging_extra python-loggingx
1896 python_memcached python-memcache
1897 python_policyd_spf postfix-policyd-spf-python
1898-python_workqueue coop-computing-tools
1899 python_yapps yapps2
1900 pythontracer pythontracer
1901 pytidylib python-tidylib
1902+pytimechart pytimechart
1903 pytrainer pytrainer
1904 pytz python-tz
1905 pyusb python-usb
1906@@ -439,6 +474,10 @@
1907 qbzr qbzr
1908 qct qct
1909 qmtest qmtest
1910+qpid_python python-qpid
1911+qpid_qmf python-qpid-extras-qmf
1912+qpid_tools qpid-tools
1913+quisk quisk
1914 quodlibet exfalso
1915 qweborf qweborf
1916 rabbitvcs rabbitvcs-core
1917@@ -450,9 +489,9 @@
1918 rebuildd rebuildd
1919 recaptcha_client python-recaptcha
1920 relational_gui relational
1921+relational_pyside relational
1922 relational_readline relational-cli
1923 remuco remuco-base
1924-renpy_module python-renpy
1925 repoze.what.plugins.sql python-repoze.what-plugins
1926 repoze.what.plugins.xml python-repoze.what-plugins
1927 repoze.what_pylons python-repoze.what-plugins
1928@@ -465,18 +504,27 @@
1929 roundup roundup
1930 rpl rpl
1931 rst2pdf rst2pdf
1932-scikits.learn python-scikits-learn
1933+rubber rubber
1934+salt salt-common
1935+scikit_learn python-sklearn
1936+scikits_image python-skimage
1937 screenlets screenlets
1938 seivot seivot
1939-sessioninstaller sessioninstaller
1940+sensitivetickets trac-sensitivetickets
1941+servefile servefile
1942+shedskin shedskin
1943 slapos.core slapos-client
1944+slimit slimit
1945 smart python-smartpm
1946-smart_notifier smart-notifier
1947 snimpy snimpy
1948 spambayes spambayes
1949 spectacle spectacle
1950 specto specto
1951+sphinxcontrib_actdiag python-sphinxcontrib.actdiag
1952+sphinxcontrib_blockdiag python-sphinxcontrib.blockdiag
1953 sphinxcontrib_issuetracker python-sphinxcontrib.issuetracker
1954+sphinxcontrib_nwdiag python-sphinxcontrib.nwdiag
1955+sphinxcontrib_seqdiag python-sphinxcontrib.seqdiag
1956 sphinxcontrib_spelling python-sphinxcontrib.spelling
1957 spyder python-spyderlib
1958 sqlalchemy_migrate python-migrate
1959@@ -486,19 +534,22 @@
1960 supervisor supervisor
1961 supybot supybot
1962 svnmailer svnmailer
1963-synce_kpm synce-kpm
1964-synce_sync_engine synce-sync-engine
1965+synaptiks kde-config-touchpad
1966 tailor tailor
1967+targetcli targetcli
1968+tcm lio-utils
1969+tcosconfig tcosconfig
1970 tegaki_pygtk python-tegaki-gtk
1971 tegaki_python python-tegaki
1972 tegaki_tools python-tegakitools
1973 tegaki_train tegaki-train
1974 tgext.crud python-tgext.admin
1975+tilelite tilelite
1976 tinyeartrainer tinyeartrainer
1977 tortoisehg tortoisehg
1978 transifex_client transifex-client
1979 translate_toolkit translate-toolkit
1980-trash trash-cli
1981+trash_cli trash-cli
1982 trimage trimage
1983 tritium tritium
1984 tryton tryton-client
1985@@ -553,34 +604,34 @@
1986 ttb ttb
1987 turpial turpial
1988 tw.forms python-toscawidgets
1989+txLibravatar python-twisted-libravatar
1990 ubuntu_dev_tools ubuntu-dev-tools
1991-ubuntu_sso_client ubuntu-sso-client
1992 ufw ufw
1993 unattended_upgrades unattended-upgrades
1994-undertaker undertaker
1995 unittest_xml_reporting python-xmlrunner
1996 urlscan urlscan
1997+vamos undertaker
1998 vboxapi virtualbox
1999 virtaal virtaal
2000 virtinst virtinst
2001+virtualbricks virtualbricks
2002 virtualenvwrapper virtualenvwrapper
2003 wammu wammu
2004 web.py python-webpy
2005+weboob python-weboob-core
2006 whyteboard whyteboard
2007-wiican wiican
2008 wikipediafs wikipediafs
2009 winpdb winpdb
2010-wxPython_common python-wxgtk2.6
2011+wxPython_common python-wxgtk2.8
2012+wxgeometrie wxgeometrie
2013 xgflib xgridfit
2014 xml_marshaller python-xmlmarshaller
2015 xmldiff xmldiff
2016 xmms2tray xmms2tray
2017-xxdiff_scripts xxdiff-scripts
2018 yagtd yagtd
2019 yokadi yokadi
2020 yum_metadata_parser python-sqlitecachec
2021 zenmap zenmap
2022 zeroinstall_injector zeroinstall-injector
2023-zhone zhone-illume-glue
2024 zim zim
2025 zinnia_python python-zinnia
2026
2027=== modified file 'pydist/generate_fallback_list.py'
2028--- pydist/generate_fallback_list.py 2011-10-06 00:22:16 +0000
2029+++ pydist/generate_fallback_list.py 2012-11-28 12:53:22 +0000
2030@@ -71,4 +71,7 @@
2031 fp.write('python python\n')
2032 fp.write('setuptools python-pkg-resources\n')
2033 fp.write('wsgiref python (>= 2.5) | python-wsgiref\n')
2034+fp.write('argparse python (>= 2.7) | python-argparse\n')
2035+# wasn't recognized due to .pth file (egg-info is in PIL/ and not in *-packages/)
2036+fp.write('pil python-imaging\n')
2037 fp.writelines(result)
2038
2039=== modified file 'python2.pm'
2040--- python2.pm 2010-06-17 23:47:08 +0000
2041+++ python2.pm 2012-11-28 12:53:22 +0000
2042@@ -5,7 +5,7 @@
2043 use strict;
2044 use Debian::Debhelper::Dh_Lib;
2045
2046-insert_after("dh_perl", "dh_python2");
2047+insert_before("dh_installinit", "dh_python2");
2048 remove_command("dh_pycentral");
2049 remove_command("dh_pysupport");
2050
2051
2052=== modified file 'tests/Makefile'
2053--- tests/Makefile 2011-11-22 08:54:54 +0000
2054+++ tests/Makefile 2012-11-28 12:53:22 +0000
2055@@ -1,7 +1,7 @@
2056 #!/usr/bin/make -f
2057
2058 # enable or disable tests here:
2059-TESTS := test1 test2 test3 test4 test5 test6
2060+TESTS := test1 test2 test3 test4 test5 test6 test7
2061
2062 all: $(TESTS)
2063
2064
2065=== added file 'tests/common.mk'
2066--- tests/common.mk 1970-01-01 00:00:00 +0000
2067+++ tests/common.mk 2012-11-28 12:53:22 +0000
2068@@ -0,0 +1,12 @@
2069+#!/usr/bin/make -f
2070+
2071+export DEBPYTHON_DEFAULT ?= $(shell sed -rne 's,^default-version = python(.*),\1,p' ../../debian/debian_defaults)
2072+export DEBPYTHON_SUPPORTED ?= $(shell sed -rne '/^supported-versions/{s/^supported-versions = (.*)/\1/g;s/python//g}' ../../debian/debian_defaults)
2073+
2074+all: run check
2075+
2076+run: clean
2077+ dpkg-buildpackage -b -us -uc
2078+
2079+clean-common:
2080+ ./debian/rules clean
2081
2082=== modified file 'tests/t1/Makefile'
2083--- tests/t1/Makefile 2011-09-27 18:21:42 +0000
2084+++ tests/t1/Makefile 2012-11-28 12:53:22 +0000
2085@@ -1,20 +1,16 @@
2086 #!/usr/bin/make -f
2087
2088-all: run check
2089-
2090-DPY=$(shell PYTHONPATH=../../ python -c 'import debpython.version as v; print(v.vrepr(v.DEFAULT))')
2091-
2092-run: clean
2093- dpkg-buildpackage -b -us -uc
2094+include ../common.mk
2095+DPY=$(DEBPYTHON_DEFAULT)
2096
2097 check:
2098 grep -q "Depends: .*python-mako" debian/python-foo/DEBIAN/control
2099+ grep -q 'python-foo (>= 2:0.1~rc2)' debian/python-foo/DEBIAN/control
2100 test -f debian/python-foo/usr/lib/python2.6/dist-packages/foo/__init__.py
2101 test ! -f debian/python-foo/usr/lib/python2.6/dist-packages/foo/spam.py
2102 grep -q "Depends: .*python (<<" debian/python-foo/DEBIAN/control
2103 [ `readlink debian/python-foo/usr/lib/python$(DPY)/dist-packages/foo/absolute_link_to_tmp` = /tmp ]
2104 [ `readlink debian/python-foo/usr/lib/python$(DPY)/dist-packages/foo/link_to_parent_dir` = .. ]
2105
2106-clean:
2107- ./debian/rules clean
2108+clean: clean-common
2109 rm -rf lib/Foo.egg-info
2110
2111=== modified file 'tests/t1/debian/pydist-overrides'
2112--- tests/t1/debian/pydist-overrides 2010-09-12 18:41:04 +0000
2113+++ tests/t1/debian/pydist-overrides 2012-11-28 12:53:22 +0000
2114@@ -1,5 +1,5 @@
2115 Mako python-mako (>= 0.2)
2116 SQLAlchemy python-sqlalchemy (>= 0.6)
2117-Foo python-foo
2118+Foo python-foo; PEP386 s/^/2:/
2119 Bar python-bar
2120 Baz
2121
2122=== modified file 'tests/t1/debian/rules'
2123--- tests/t1/debian/rules 2011-09-27 18:21:42 +0000
2124+++ tests/t1/debian/rules 2012-11-28 12:53:22 +0000
2125@@ -12,5 +12,5 @@
2126 DH_VERBOSE=1 ../../dh_python2\
2127 --depends 'SQLAlchemy >= 0.6.1'\
2128 --recommends Mako\
2129- --suggests 'Foo >= 0.1'\
2130+ --suggests 'Foo >= 0.1rc2'\
2131 --suggests 'bar >= 1.0'
2132
2133=== modified file 'tests/t2/Makefile'
2134--- tests/t2/Makefile 2011-03-21 10:22:06 +0000
2135+++ tests/t2/Makefile 2012-11-28 12:53:22 +0000
2136@@ -1,16 +1,10 @@
2137 #!/usr/bin/make -f
2138
2139-all: run check
2140-
2141-
2142-run: clean
2143- dpkg-buildpackage -b -us -uc
2144+include ../common.mk
2145+clean: clean-common
2146
2147 check:
2148 test -f debian/python-foo/usr/lib/python2.6/dist-packages/foo.py
2149 test -f debian/python-foo/usr/lib/python2.6/dist-packages/bar/bar.py
2150 grep -q pycompile debian/python-foo/DEBIAN/postinst
2151 grep -q pyclean debian/python-foo/DEBIAN/prerm
2152-
2153-clean:
2154- ./debian/rules clean
2155
2156=== modified file 'tests/t3/Makefile'
2157--- tests/t3/Makefile 2011-10-06 00:22:16 +0000
2158+++ tests/t3/Makefile 2012-11-28 12:53:22 +0000
2159@@ -1,11 +1,7 @@
2160 #!/usr/bin/make -f
2161
2162-all: run check
2163-
2164-DPY=$(shell PYTHONPATH=../../ python -c 'import debpython.version as v; print(v.vrepr(v.DEFAULT))')
2165-
2166-run: clean
2167- dpkg-buildpackage -b -us -uc
2168+include ../common.mk
2169+DPY=$(DEBPYTHON_DEFAULT)
2170
2171 check:
2172 grep -q "pycompile -p python-foo /usr/lib/python-foo -V $(DPY)"\
2173@@ -17,7 +13,10 @@
2174 test -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/baz.so
2175 test ! -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1
2176 test ! -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1.2
2177+ test -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so
2178+ test ! -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so.0
2179+ test ! -L debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so.0
2180+ test ! -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0
2181
2182-clean:
2183- ./debian/rules clean
2184+clean: clean-common
2185 rm -rf lib/Foo.egg-info build
2186
2187=== modified file 'tests/t3/debian/rules'
2188--- tests/t3/debian/rules 2011-10-06 00:22:16 +0000
2189+++ tests/t3/debian/rules 2012-11-28 12:53:22 +0000
2190@@ -19,4 +19,12 @@
2191 /usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1
2192 dh_link /usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1 \
2193 /usr/lib/python${DPY}/dist-packages/foo/baz.so
2194+ # ... second style of multiple symlinks
2195+ cp debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/bar.so \
2196+ debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0
2197+ dh_link /usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0 \
2198+ /usr/lib/python${DPY}/dist-packages/foo/quux.so.0
2199+ dh_link /usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0 \
2200+ /usr/lib/python${DPY}/dist-packages/foo/quux.so
2201+ # ... and complex multiple symlinks
2202 DH_VERBOSE=1 ../../dh_python2
2203
2204=== modified file 'tests/t4/Makefile'
2205--- tests/t4/Makefile 2011-09-27 18:21:42 +0000
2206+++ tests/t4/Makefile 2012-11-28 12:53:22 +0000
2207@@ -1,10 +1,7 @@
2208 #!/usr/bin/make -f
2209
2210-all: run check
2211-
2212-
2213-run: clean
2214- dpkg-buildpackage -b -us -uc
2215+include ../common.mk
2216+clean: clean-common
2217
2218 check:
2219 grep -q python2.6 debian/foo/usr/share/foo/foo.py
2220@@ -14,6 +11,3 @@
2221 grep -q python2.4 debian/foo/usr/share/foo/baz.py
2222 test ! -x debian/foo/usr/share/foo/baz.py
2223 grep -q Depends:.*python2.4 debian/foo/DEBIAN/control && false || true
2224-
2225-clean:
2226- ./debian/rules clean
2227
2228=== modified file 'tests/t5/Makefile'
2229--- tests/t5/Makefile 2011-04-15 00:04:07 +0000
2230+++ tests/t5/Makefile 2012-11-28 12:53:22 +0000
2231@@ -1,10 +1,7 @@
2232 #!/usr/bin/make -f
2233
2234-all: run check
2235-
2236-
2237-run: clean
2238- dpkg-buildpackage -b -us -uc
2239+include ../common.mk
2240+clean: clean-common
2241
2242 check:
2243 # test dh_python2
2244@@ -29,6 +26,3 @@
2245 do [ `ls debian/python-foo/usr/lib/python2.*/*-packages/$$i/__init__.py 2>/dev/null || true | wc -l` = 0 ];\
2246 [ `ls debian/python-foo/usr/lib/python2.*/*-packages/$$i/__init__.pyc 2>/dev/null || true | wc -l` = 0 ];\
2247 done
2248-
2249-clean:
2250- ./debian/rules clean
2251
2252=== modified file 'tests/t6/Makefile'
2253--- tests/t6/Makefile 2011-11-22 08:54:54 +0000
2254+++ tests/t6/Makefile 2012-11-28 12:53:22 +0000
2255@@ -1,10 +1,7 @@
2256 #!/usr/bin/make -f
2257
2258-all: run check
2259-
2260-
2261-run: clean
2262- dpkg-buildpackage -b -us -uc
2263+include ../common.mk
2264+clean: clean-common
2265
2266 check:
2267 # python2.4 hardcoded via `dh_python2 -V 2.4`
2268@@ -19,6 +16,3 @@
2269 grep -q Depends:.*python2.6 debian/foo/DEBIAN/control
2270 grep -q '\-V 2.6 /usr/share/foo' debian/foo/usr/share/python/runtime.d/foo.rtupdate
2271 grep -q '/usr/share/foo \-V 2.6' debian/foo/DEBIAN/postinst
2272-
2273-clean:
2274- ./debian/rules clean
2275
2276=== modified file 'tests/t6/bar.py' (properties changed: -x to +x)
2277=== modified file 'tests/t6/foo.py' (properties changed: -x to +x)
2278=== added directory 'tests/t7'
2279=== added file 'tests/t7/Makefile'
2280--- tests/t7/Makefile 1970-01-01 00:00:00 +0000
2281+++ tests/t7/Makefile 2012-11-28 12:53:22 +0000
2282@@ -0,0 +1,18 @@
2283+#!/usr/bin/make -f
2284+
2285+include ../common.mk
2286+clean: clean-common
2287+
2288+check:
2289+ # python2.4 hardcoded via `dh_python2 -shebang ...python2.4`
2290+ grep -q '\-V 2.4 /usr/share/baz24' debian/foo/usr/share/python/runtime.d/foo.rtupdate
2291+ grep -q '/usr/share/baz24 \-V 2.4' debian/foo/DEBIAN/postinst
2292+ grep -q '#! /usr/bin/python2.4 -OO' debian/foo/usr/share/baz24/baz.py
2293+ # python2.6 hardcoded via shebang
2294+ grep -q '\-V 2.6 /usr/share/foo' debian/foo/usr/share/python/runtime.d/foo.rtupdate
2295+ grep -q '/usr/share/foo \-V 2.6' debian/foo/DEBIAN/postinst
2296+ # /env removed from shebang
2297+ grep -q '#! /usr/bin/python' debian/foo/usr/share/bar/bar.py
2298+ # /local removed from shebang
2299+ grep -q '#! /usr/bin/python' debian/foo/usr/share/foo/baz.py
2300+ grep -q '#! /usr/bin/python2.6' debian/foo/usr/share/foo/foo.py
2301
2302=== added file 'tests/t7/bar.py'
2303--- tests/t7/bar.py 1970-01-01 00:00:00 +0000
2304+++ tests/t7/bar.py 2012-11-28 12:53:22 +0000
2305@@ -0,0 +1,2 @@
2306+#!/usr/bin/env python
2307+"env in shebang"
2308
2309=== added file 'tests/t7/baz.py'
2310--- tests/t7/baz.py 1970-01-01 00:00:00 +0000
2311+++ tests/t7/baz.py 2012-11-28 12:53:22 +0000
2312@@ -0,0 +1,2 @@
2313+#!/usr/local/bin/python
2314+"/usr/local in shebang"
2315
2316=== added directory 'tests/t7/debian'
2317=== added file 'tests/t7/debian/changelog'
2318--- tests/t7/debian/changelog 1970-01-01 00:00:00 +0000
2319+++ tests/t7/debian/changelog 2012-11-28 12:53:22 +0000
2320@@ -0,0 +1,5 @@
2321+foo (1.0) unstable; urgency=low
2322+
2323+ * Initial release
2324+
2325+ -- Piotr Ożarowski <piotr@debian.org> Sun, 10 Jun 2012 14:09:45 +0200
2326
2327=== added file 'tests/t7/debian/compat'
2328--- tests/t7/debian/compat 1970-01-01 00:00:00 +0000
2329+++ tests/t7/debian/compat 2012-11-28 12:53:22 +0000
2330@@ -0,0 +1,1 @@
2331+8
2332
2333=== added file 'tests/t7/debian/control'
2334--- tests/t7/debian/control 1970-01-01 00:00:00 +0000
2335+++ tests/t7/debian/control 2012-11-28 12:53:22 +0000
2336@@ -0,0 +1,13 @@
2337+Source: foo
2338+Section: misc
2339+Priority: optional
2340+Maintainer: Piotr Ożarowski <piotr@debian.org>
2341+Build-Depends: debhelper (>= 7.0.50~)
2342+Build-Depends-Indep: python
2343+Standards-Version: 3.9.3
2344+
2345+Package: foo
2346+Architecture: all
2347+Depends: ${python:Depends}, ${misc:Depends}
2348+Description: example 7 - shebangs
2349+ exemple package #7 - shebang related tests
2350
2351=== added file 'tests/t7/debian/copyright'
2352--- tests/t7/debian/copyright 1970-01-01 00:00:00 +0000
2353+++ tests/t7/debian/copyright 2012-11-28 12:53:22 +0000
2354@@ -0,0 +1,2 @@
2355+The Debian packaging is © 2012, Piotr Ożarowski <piotr@debian.org> and
2356+is licensed under the MIT License.
2357
2358=== added file 'tests/t7/debian/install'
2359--- tests/t7/debian/install 1970-01-01 00:00:00 +0000
2360+++ tests/t7/debian/install 2012-11-28 12:53:22 +0000
2361@@ -0,0 +1,7 @@
2362+foo.py /usr/share/foo/
2363+baz.py /usr/share/foo/
2364+spam.py /usr/share/foo/
2365+bar.py /usr/share/bar/
2366+spam.py /usr/share/bar/
2367+baz.py /usr/share/baz24/
2368+spam.py /usr/share/baz24/
2369
2370=== added file 'tests/t7/debian/rules'
2371--- tests/t7/debian/rules 1970-01-01 00:00:00 +0000
2372+++ tests/t7/debian/rules 2012-11-28 12:53:22 +0000
2373@@ -0,0 +1,11 @@
2374+#!/usr/bin/make -f
2375+%:
2376+ dh $@ --buildsystem=python_distutils
2377+
2378+override_dh_pysupport:
2379+ DH_VERBOSE=1 ../../dh_python2
2380+ DH_VERBOSE=1 ../../dh_python2 /usr/share/bar
2381+ DH_VERBOSE=1 ../../dh_python2 /usr/share/baz24 --shebang '/usr/bin/python2.4 -OO'
2382+
2383+clean:
2384+ dh_clean
2385
2386=== added directory 'tests/t7/debian/source'
2387=== added file 'tests/t7/debian/source/format'
2388--- tests/t7/debian/source/format 1970-01-01 00:00:00 +0000
2389+++ tests/t7/debian/source/format 2012-11-28 12:53:22 +0000
2390@@ -0,0 +1,1 @@
2391+3.0 (native)
2392
2393=== added file 'tests/t7/foo.py'
2394--- tests/t7/foo.py 1970-01-01 00:00:00 +0000
2395+++ tests/t7/foo.py 2012-11-28 12:53:22 +0000
2396@@ -0,0 +1,2 @@
2397+#!/usr/local/bin/python2.6
2398+"/usr/local/bin/python2.6 hardcoded in shebang"
2399
2400=== added file 'tests/t7/setup.py'
2401=== added file 'tests/t7/spam.py'
2402--- tests/t7/spam.py 1970-01-01 00:00:00 +0000
2403+++ tests/t7/spam.py 2012-11-28 12:53:22 +0000
2404@@ -0,0 +1,1 @@
2405+print('spam')

Subscribers

People subscribed via source and target branches