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

Re: new dh_python proposal



Just a follow-up the clear some things up:

* about the -common package (i.e. pysupport namespace issue):
  - it's not a must, if one package can act as namespace provider,
    there's no need to provide another one, of course,
  - being able to list all files provided by packages is something we
    really want to have
* dh_python[1] will try to avoid moving files to pyshared if
  package supports only one Python version (f.e. the latest one)
* py{,3}compile will support -X/--exclude option
  I maintain one module that uses site-packages to keep templates with
  .py files inside and although I patched it to move these files outside
  site-packages, I know that not every maintainer will want to do that,
  so -X will disable byte compilation of files for given directory/file
* about lack of XS-Python-Version and debian/pyversions
  - if available, both previous places will be used to get
    minimum/maximum required Python version, it will complicate
    detection of packages that need binNMU, so I want to drop both of
    them at some point,
  - dh/cdbs/dh_python will get minimum/maximum required Python versions
    from Build-Depends{,-Indep} and/or python-all's Depends.
    If one will need to build depend on newer version of
    python{,-all,-dev} (due to some Debian specific changes) - tools
    will ignore versioned dependencies that include dash sign or use the
    lower one if two different dependencies are provided
    (f.e. "Build-Depends: python-all-dev (>= 2.5.8), python-all-dev (>= 2.4)"
    will be equivalent of "XS-Python-Version: >=2.4")
* how to detect which package needs binNMU?
  I think parsing Build-Depends{,-Indep}, Contents file and Depends
  header will be enough to detect such packages, i.e. packages that:
  - Build-Depends{,-Indep} on python-all{,-dev}
    AND there's no <<X.Y build dependency (where X.Y is the one to be introduced)
  - Build-Depends on python-dev ("python-dev (>=X.Y) | pythonX.Y-dev" or
    "python-dev (<<X.Y)" might help to detect some false positives)
    AND provide private extension (/usr/lib/*/*.so)
  - Build-Depends{,-Indep} on "python (>=X.Y) | pythonX.Y" and Depend on pythonX.Y
    (i.e. "python (>=X.Y) | pythonX.Y" will NOT be in Depends)
    [arch:all packages with hardcoded shebang due to default python not
     being good enough]
  - Build-Depends{,-Indep} on "python" or "python (>=X.Y) | pythonX.Y"
    and there's no rtupdate script in binary package
    [private modules without hardcoded shebang]
  will need binNMU once new Python version will be added to the
  supported ones

[1] or "dh_pypython" - I'm still not sure if using the same name is
    a good idea as I want to write it in Python and maybe at some point
    let someone rewrite it in Perl so that it could be included in
    debhelper package.


[Piotr Ożarowski, 2009-08-02]
> $ python3.1 ./3.x/setup.py install --root=debian/python3-foo/
>  debian/python3-foo/usr/lib/python3.1/dist-packages/foo/__init__.py
>  debian/python3-foo/usr/lib/python3.1/dist-packages/foo/_foo.so
>  debian/python3-foo/usr/lib/python3.1/dist-packages/foo/bar.py

will be debian/python3-foo/usr/local/lib... here by default, of course

[...]
> # baz uses Python >= 2.5 and has private extension
> $ python ./setup.py install --root=debian/foo/ --install-lib=/usr/share/privatedir4/ --install-scripts=/usr/share/privatedir4

s,/usr/share/,/usr/lib/,g

>  debian/foo/usr/lib/privatedir4/baz/__init__.py
>  debian/foo/usr/lib/privatedir4/baz/baz.so
>  debian/foo/usr/lib/privatedir4/run.py
-- 
-=[     Piotr Ożarowski     ]=-
-=[ http://www.ozarowski.pl ]=-

Attachment: signature.asc
Description: Digital signature


Reply to: