[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bits from dh_python2 author ;-)



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

Attachment: signature.asc
Description: Digital signature


Reply to: