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

Re: multiple modules in one source



Brian May <brian@microcomaustralia.com.au> writes:

> Just wondered if there are any examples in Debian of python packages
> where upstream distribute multiple distinct python modules in the one
> source package.

Just about any non-trivial Python package (and some trivial ones) in
Debian will have many distinct modules.

You're familiar with ‘python-django’, as just one example.

Do you mean “multiple distinct Python packages”?

> I have such a package, and am wondering if I should be splitting up
> the source, package, or just the binary package, leaving everything
> combined, or maybe trying to convincing upstream that they shouldn't
> combine the (very much related) modules into one source.

I think the decision of whether to keep components in a single VCS
repository is an important one; the question is mostly about whether the
components should always be talked about as a single body of source,
with a single version string for releases. If so, then it makes sense to
track them in the same VCS repository.

The decision of whether components should be separately-installable is a
different one, and has more to do with the utility of the components as
discrete entities. If it would be useful to have one component installed
but not the other associated ones, then efforts should be made to enable
that.

For decisions about the Debian package, the questions are likewise
separate:

* If it makes sense for the source to all be in the same VCS repository,
  I think there is no general need to split it into multiple source
  packages, and one Debian *source* package is fine.

* If components should be separately-installable, those should be built
  to separate Debian *binary* packages — perhaps from the single Debian
  *source* package.

So those are, IMO, largely distinct questions; you can answer yes to
both, or only to one, or to neither. They depend on somewhat-separate
factors.


As for Python source distributions: the ‘distutils’ library allows
nominating multiple top-level packages to build, and those can be
shipped in a single ‘sdist’ and appear in a single Debian source
package. Once built to a ‘bdist’, the resulting Python packages can be
built to distinct Debian binary packages. Often that makes sense.

An example of a single source repository which contains multiple
distinct Python packages is Docutils. The ‘python-docutils’ Debian
source package builds Debian binary packages ‘python-docutils’,
‘python-roman’, and the Python 3 equivalents.

-- 
 \      “We suffer primarily not from our vices or our weaknesses, but |
  `\    from our illusions.” —Daniel J. Boorstin, historian, 1914–2004 |
_o__)                                                                  |
Ben Finney


Reply to: