Hi, dh_python2 is now available in experimental in python-dev package (pycompile and pyclean in python-minimal, please depend on python package if you want to use it outside dh_python). For now only the non-PEP3147 part is working¹ (i.e. you can use it with Python <= 3.1). This is the part of dh_python that is controversial as it requires source uploads for "Architecture: all" packages, Python >= 3.2 will not need that.
I don't expect many packages to be converted before Squeeze release. In Squeeze+1 I hope we will have only one version that will not use Barry's changes (i.e. python2.7) so we will no need that many sourceful uploads (packages converted in Squeeze+1 will not need one at all, unless Python 2.8 will be released). I hope we will drop python-central and python-support in Squeeze+1. I also plan to rename dh_python2 to dh_python before package will be uploaded to unstable (and ask debhelper maintainers to remove theirs or rewrite mine in Perl and move it to debhelper package). What's missing to have full PEP3147 support? * discussion about the idea of hardcoding version range in file path (/usr/lib/python3/foo/3.2-3.5/bar.py), see also this² PoC, * PEP 382 implementation (with .pth extensions that will allow us to use versioned paths without touching __init__.py files), * PEP 384 implementation (will allow us to share (most?) .so files) * few fixes in the algorithm that moves files to versioned path (if needed) and/or a way to override its results (let maintainer decide which Python versions given file supports; `mv ..` after dh_python call is ugly and will not always work) Few other items from my TODO: * documentation (there's only dh_python2 --help, pycompile --help, pyclean --help and docstrings for now), * more tests in tests/ directory (I have 2 that are too big to be included in python-defaults), FTBFS if tests do not pass (i.e. something better than checking dh_python's debug output in build logs), * parsing requires.txt is not perfect - figure out something better to translate Python dependencies (see also .pydist files below) or work on grep patterns, * install (optional) debian/package.pydist files in /usr/share/python/dist/<whatever> with a list of Python distributions that Debian package provides, minimum/maximum required version (can be used if your upstream is sane and you can predict when the API/ABI will break), watch-like patterns to translate upstream's versioning schema (and/or "PEP386" tag)... and use it later in dh_python; example .pydist file content: SQLAlchemy\t\tpython-sqlalchemy (>= 0.5-6~), python-sqlalchemy (<< 0.6) Mako\t\tpython-mako\tPEP386 Jinja2\t-3.0\tpython-jinja2\ts/(beta|rc)/~$1/;s/^/4:/ Jinja2\t3.0-\tpython3-jinja2\ts/(beta|rc)/~$1/ (replace \t with a sane separator) * allow to override false positives in requires.txt translator, f.e. debian/package.pydep file with something like: SQLAlchemy: python-sqlalchemy (>= 0.5.6), python-sqlalchemy (<< 0.6) Mako: python-mako * parse PEP 390 metadata once it will be ready, * add symlinks in /usr/lib/pyshared/pythonX.Y for .so files (I forgot about it), * add more exception types to be used in /usr/share/python/bcep/ (right now only "re" and "dir" are supported), * lots of bug fixes ;-) [¹] actually I didn't test it very carefully yet, I want to implement few more things before starting serious tests, feel free to report bugs against python-defaults package or ping me on IRC, though [²] http://people.debian.org/~piotr/__path__.tar.gz PS python-defaults 2.6.5-1 has Python 2.6 set as default one :-) -- Piotr Ożarowski Debian GNU/Linux Developer www.ozarowski.pl www.griffith.cc www.debian.org GPG Fingerprint: 1D2F A898 58DA AF62 1786 2DF7 AEF6 F1A2 A745 7645
signature.asc
Description: Digital signature