Python / Debian package dependencies

Discussion in 'Python' started by Steven Samuel Cole, Nov 20, 2008.

  1. Hi all,

    I am trying to build a debian package for my python modules using
    stdeb and dpkg-buildpackage. The package building itself works, I also
    managed to have an entry point created and I can use my python modules
    on the Ubuntu virtual machine I use to test the package.

    The problem is that my modules require the psycopg2 python package and
    the entry point seems to require setuptools.
    I can't figure out how to declare a dependency that actually results
    in the dependency Debian packages being installed.
    I tried adding these lines to setup.py:

    requires = ['psycopg2', 'setuptools'],
    requires = ['psycopg2 (>=0.1)', 'setuptools (>=0.1)'],
    install_requires = ['psycopg2', 'setuptools'],
    install_requires = ['psycopg2>=0.1', 'setuptools>=0.1'],

    and then run stdeb_run_setup and dpkg-buildpackage -rfakeroot -uc -us
    in the deb_dist/<package name> folder created, but when I copy the
    ..deb file over to the virtual machine and do dpkg -i <.deb file>, none
    of them would actually install psycopg2 and setuptools.

    What am I doing wrong ? Am I actually somewhat on the right track or
    am I doing complete nonsense ?

    Thanks for your help!

    Cheers,

    Steve
     
    Steven Samuel Cole, Nov 20, 2008
    #1
    1. Advertising

  2. Steven Samuel Cole

    Paul Boddie Guest

    On 20 Nov, 02:14, "Steven Samuel Cole" <>
    wrote:
    >
    > I am trying to build a debian package for my python modules using
    > stdeb and dpkg-buildpackage. The package building itself works, I also
    > managed to have an entry point created and I can use my python modules
    > on the Ubuntu virtual machine I use to test the package.
    >
    > The problem is that my modules require the psycopg2 python package and
    > the entry point seems to require setuptools.


    Are you saying that psycopg2 needs setuptools for the setup.py script
    to work? This isn't generally the case (or wasn't), but maybe the
    "entry point" is a setuptools thing which would then demand that
    software's presence.

    > I can't figure out how to declare a dependency that actually results
    > in the dependency Debian packages being installed.
    > I tried adding these lines to setup.py:
    >
    > requires = ['psycopg2', 'setuptools'],
    > requires = ['psycopg2 (>=0.1)', 'setuptools (>=0.1)'],
    > install_requires = ['psycopg2', 'setuptools'],
    > install_requires = ['psycopg2>=0.1', 'setuptools>=0.1'],


    How does stdeb know which package provides psycopg2? I'm not really
    familiar with stdeb - I write my own packaging files - but might it be
    the case that you need to specify python-psycopg2 instead?

    Paul
     
    Paul Boddie, Nov 20, 2008
    #2
    1. Advertising

  3. Hey Paul

    thanks for your reply! :)

    2008/11/21 Paul Boddie <>:
    > Are you saying that psycopg2 needs setuptools for the setup.py script
    > to work? This isn't generally the case (or wasn't), but maybe the
    > "entry point" is a setuptools thing which would then demand that
    > software's presence.


    Not exactly. My package requires psycopg2 to run and (from what it
    looks like to me) setuptools must be available in order to use its
    installation mechanism (setup.py, entry points, etc.)

    > How does stdeb know which package provides psycopg2? I'm not really
    > familiar with stdeb - I write my own packaging files - but might it be
    > the case that you need to specify python-psycopg2 instead?


    I tried python-psycopg2, but that caused a ValueError in stdeb about a
    'parenthesized list' -psycopg2.
    By trial & error I found out that I seem to have to use the package
    name without the python- bit, because then stdeb does run without
    error.

    If the name was really the issue, I would at least expect stdeb to
    report an error about an unknown package or so...

    Cheers,

    Stefan

    2008/11/21 Steven Samuel Cole <>:
    > Hey Paul
    >
    > thanks for your reply! :)
    >
    > 2008/11/21 Paul Boddie <>:
    >> Are you saying that psycopg2 needs setuptools for the setup.py script
    >> to work? This isn't generally the case (or wasn't), but maybe the
    >> "entry point" is a setuptools thing which would then demand that
    >> software's presence.

    >
    > Not exactly. My package requires psycopg2 to run and (from what it
    > looks like to me) setuptools must be available in order to use its
    > installation mechanism (setup.py, entry points, etc.)
    >
    >> How does stdeb know which package provides psycopg2? I'm not really
    >> familiar with stdeb - I write my own packaging files - but might it be
    >> the case that you need to specify python-psycopg2 instead?

    >
    > I tried python-psycopg2, but that caused a ValueError in stdeb about a
    > 'parenthesized list' -psycopg2.
    > By trial & error I found out that I seem to have to use the package
    > name without the python- bit, because then stdeb does run without
    > error.
    >
    > If the name was really the issue, I would at least expect stdeb to
    > report an error about an unknown package or so...
    >
    > Cheers,
    >
    > Stefan
    >
     
    Steven Samuel Cole, Nov 21, 2008
    #3
  4. That's exactly the piece of information I needed! :)

    The control file created by setdeb (stdeb_run_setup, to be precise)
    looks like this (some lines will get wrapped):

    Source: <my package name>
    Maintainer: <my name> <my email address>
    Section: python
    Priority: optional
    Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>=
    2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)
    Standards-Version: 3.7.2
    XS-Python-Version: all

    Package: python-<my package name>
    Architecture: all
    Depends: ${python:Depends}
    Recommends:
    Suggests:
    XB-Python-Version: ${python:Versions}
    Provides: ${python:provides}
    Description: <my description>

    So apparently, stdeb adds setuptools by itself already, but it does not
    add the dependency packages I specified in setup.py.

    When I now append python-psycopg2 (>= 2.0.6-3) to the Depends: copy the
    ..deb file to the virtual machine and run sudo dpkg -i python-<my package
    name>-all.deb, I get the following output:

    Selecting previously deselected package python-<my package name>.
    (Reading database ... 17508 files and directories currently installed.)
    Unpacking python-<my package name> (from python-<my package
    name>_0.0.1-4927-1_all.deb) ...
    dpkg: dependency problems prevent configuration of python-inro-marvin-setup:
    python-<my package name> depends on python-psycopg2 (>= 2.0.6-3); however:
    Package python-psycopg2 is not installed.
    dpkg: error processing python-<my package name> (--install):
    dependency problems - leaving unconfigured
    Errors were encountered while processing:
    python-<my package name>


    My conclusions:

    1. I must use a 'higher-level' tool than dpkg to install the package
    which automatically resolves and installs dependency packages. There has
    got to be a way to use apt-get for .deb files which do not reside
    (yet) in a repository.

    2. stdeb does not seem to 'transform' dependencies specified in setup.py
    into dependencies in its output files. There seems to be a mailing list
    for stedb at http://mail.python.org/mailman/listinfo/distutils-sig. I'll
    try there.

    Thanks for your help!

    Cheers,

    Steve


    Stephane Bulot schrieb:
    > I'm not familiar with stdeb, but dpkg-buildpackage needs a file called
    > "control". This is this file that will be used to generate deb archive
    > with the good dependancies. Into this file, there are two fields,
    > Build-Depends and Depends, that give to dpkg-buildpackage what are the
    > package dependancies.
    > Check this "control" file content, you should have psycopg2 and
    > setuptools (if it is really a dependancy) in the Depends field. If it
    > not the case, do it manually. Do not forget to check and notify the
    > version of this dependancies.
    > Regards.
    > Stephane
    >
    > 2008/11/21 Steven Samuel Cole <
    > <mailto:>>
    >
    > Hey Paul
    >
    > thanks for your reply! :)
    >
    > 2008/11/21 Paul Boddie < <mailto:p>>:
    > > Are you saying that psycopg2 needs setuptools for the setup.py script
    > > to work? This isn't generally the case (or wasn't), but maybe the
    > > "entry point" is a setuptools thing which would then demand that
    > > software's presence.

    >
    > Not exactly. My package requires psycopg2 to run and (from what it
    > looks like to me) setuptools must be available in order to use its
    > installation mechanism (setup.py, entry points, etc.)
    >
    > > How does stdeb know which package provides psycopg2? I'm not really
    > > familiar with stdeb - I write my own packaging files - but might

    > it be
    > > the case that you need to specify python-psycopg2 instead?

    >
    > I tried python-psycopg2, but that caused a ValueError in stdeb about a
    > 'parenthesized list' -psycopg2.
    > By trial & error I found out that I seem to have to use the package
    > name without the python- bit, because then stdeb does run without
    > error.
    >
    > If the name was really the issue, I would at least expect stdeb to
    > report an error about an unknown package or so...
    >
    > Cheers,
    >
    > Stefan
    >
    > 2008/11/21 Steven Samuel Cole <
    > <mailto:>>:
    > > Hey Paul
    > >
    > > thanks for your reply! :)
    > >
    > > 2008/11/21 Paul Boddie <

    > <mailto:p>>:
    > >> Are you saying that psycopg2 needs setuptools for the setup.py

    > script
    > >> to work? This isn't generally the case (or wasn't), but maybe the
    > >> "entry point" is a setuptools thing which would then demand that
    > >> software's presence.

    > >
    > > Not exactly. My package requires psycopg2 to run and (from what it
    > > looks like to me) setuptools must be available in order to use its
    > > installation mechanism (setup.py, entry points, etc.)
    > >
    > >> How does stdeb know which package provides psycopg2? I'm not really
    > >> familiar with stdeb - I write my own packaging files - but might

    > it be
    > >> the case that you need to specify python-psycopg2 instead?

    > >
    > > I tried python-psycopg2, but that caused a ValueError in stdeb

    > about a
    > > 'parenthesized list' -psycopg2.
    > > By trial & error I found out that I seem to have to use the package
    > > name without the python- bit, because then stdeb does run without
    > > error.
    > >
    > > If the name was really the issue, I would at least expect stdeb to
    > > report an error about an unknown package or so...
    > >
    > > Cheers,
    > >
    > > Stefan
    > >

    > --
    > http://mail.python.org/mailman/listinfo/python-list
    >
    >
     
    Steven Samuel Cole, Nov 21, 2008
    #4
  5. Steven Samuel Cole

    Paul Boddie Guest

    On 21 Nov, 23:09, Steven Samuel Cole <>
    wrote:
    >
    > 1. I must use a 'higher-level' tool than dpkg to install the package
    > which automatically resolves and installs dependency packages. There has
    > got to be a way to use apt-get for .deb files which do not reside
    > (yet) in a repository.


    I more or less skipped the part about installation, but had the
    dependencies been included correctly in the package description and
    had they not been available, dpkg would have complained. You can use
    apt-get with local repositories, although the magic required for
    initialising them isn't too obvious. That said, if it's like the
    package building scene, I'm sure various tools exist for initialising
    repositories; I use a very short shell script to run the programs that
    update the repository records.

    > 2. stdeb does not seem to 'transform' dependencies specified in setup.py
    > into dependencies in its output files. There seems to be a mailing list
    > for stedb athttp://mail.python.org/mailman/listinfo/distutils-sig. I'll
    > try there.


    Good luck! One of the issues with such transformations is that they
    cannot generally be done trivially, but perhaps some kind of mapping
    between "upstream" source packages and Debian packages would alleviate
    such difficulties.

    Paul
     
    Paul Boddie, Nov 22, 2008
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Kent Tenney
    Replies:
    4
    Views:
    2,850
    David M. Cooke
    Jul 21, 2003
  2. Luke Kenneth Casson Leighton
    Replies:
    0
    Views:
    506
    Luke Kenneth Casson Leighton
    Dec 31, 2008
  3. Klein Stéphane
    Replies:
    3
    Views:
    623
    Steve Holden
    Dec 20, 2009
  4. Hans Fugal

    FXRuby Debian Package?

    Hans Fugal, Jun 28, 2003, in forum: Ruby
    Replies:
    1
    Views:
    238
    Mauricio Fernández
    Jun 29, 2003
  5. Thursday
    Replies:
    4
    Views:
    124
    Adeodato Simó
    Dec 20, 2004
Loading...

Share This Page