[pkg] Use sections from requires.txt to populate Recommends and Suggests
As Denis Laxalde pointed out, dh_python can also generate Recommends and
Suggests from Python package names. So let's use that instead of
manually populating these fields in `debian/control`.
Optional dependencies are currently specified in `setup.py` grouped by
feature. These dependency groups are turned into sections in
`requires.txt`. Thankfully `dh_python3` has options to populate
Recommends or Suggests with all package from a given section.
`debian/rules` now contains a list of which sections should go
to Recommends and which section should go to Suggests. Because such
extra list easily gets out-of-sync, we add a third list for ignored
sections, and ensure that all sections currently in `requires.txt`
get a mentioned in `debian/rules`.
Here are the results compared to the previous version with explicit
Recommends and Suggests (only listing Python packages):
|==============================================================|
| only in previous | common | only in new |
|==============================================================|
| Recommends |
|--------------------------------------------------------------|
| | python3-docutils | |
| python3-fyzz | | |
| python3-imaging | | |
| | python3-pycryptodome | |
| | python3-pyramid | |
| | python3-pyramid-multiauth | |
| python3-pysqlite2 | | |
| | python3-rdflib | |
| | python3-repoze.lru | |
| python3-simpletal | | |
| | python3-vobject | |
| | python3-waitress | |
| python3-werkzeug | | |
| | python3-wsgicors | |
|--------------------------------------------------------------|
| Suggests |
|--------------------------------------------------------------|
| | | python3-pil |
We also lose versioned dependencies which should not really be an issue
for Recommends and Suggests.
import webtest
from pyramid.config import Configurator
from cubicweb.devtools.webtest import CubicWebTestTC
class PyramidCWTest(CubicWebTestTC):
settings = {}
@classmethod
def init_config(cls, config):
super(PyramidCWTest, cls).init_config(config)
config.global_set_option('anonymous-user', 'anon')
def setUp(self):
# Skip CubicWebTestTC setUp
super(CubicWebTestTC, self).setUp()
settings = {
'cubicweb.bwcompat': False,
'cubicweb.session.secret': 'test',
}
settings.update(self.settings)
config = Configurator(settings=settings)
config.registry['cubicweb.repository'] = self.repo
config.include('cubicweb.pyramid')
self.includeme(config)
self.pyr_registry = config.registry
self.webapp = webtest.TestApp(
config.make_wsgi_app(),
extra_environ={'wsgi.url_scheme': 'https'})
def includeme(self, config):
pass