[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.
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Uncomment this to turn on verbose mode.
# export DH_VERBOSE=1
export PYBUILD_NAME=cubicweb
export PYBUILD_DISABLE_python3=test
%:
dh $@ --with python3,sphinxdoc --buildsystem=pybuild
override_dh_auto_build: export http_proxy=127.0.0.1:9
override_dh_auto_build: export https_proxy=127.0.0.1:9
override_dh_auto_build:
dh_auto_build
ifeq (,$(findstring nodocs, $(DEB_BUILD_OPTIONS)))
PYTHONPATH=. sphinx-build -N -bhtml doc/ debian/cubicweb-doc/html
endif
override_dh_auto_install:
dh_auto_install
mv debian/python3-${PYBUILD_NAME}/usr/bin/cubicweb-ctl \
debian/cubicweb-ctl/usr/bin/cubicweb-ctl
override_dh_installchangelogs:
dh_installchangelogs -Xdoc/changes
# Should extra sections in requires.txt go to Recommends, Suggests or be
# ignored?
#
# All sections must be listed so we don't forget any in cases of future
# changes.
RECOMMENDS_SECTIONS = ext crypto ical pyramid rdf
SUGGESTS_SECTIONS = captcha zmq
# sparql currently requires fyzz which is not compatible with Python 3
IGNORED_SECTIONS = sparql
override_dh_python3:
@set -e && trap 'rm -f requires-sections debian-sections' EXIT && \
sed -n -e 's/\[\(.*\)\]/\1/p' cubicweb.egg-info/requires.txt | sort > requires-sections && \
printf "%s\n" $(RECOMMENDS_SECTIONS) $(SUGGESTS_SECTIONS) $(IGNORED_SECTIONS) | sort > debian-sections && \
FORGOTTEN_SECTIONS=$$(comm -23 requires-sections debian-sections) && \
if [ "$$FORGOTTEN_SECTIONS" ]; then \
echo "The following sections are not listed in debian/rules:" && \
echo "$$FORGOTTEN_SECTIONS" && \
echo "Please add them in either RECOMMENDS_SECTIONS, SUGGESTS_SECTIONS or IGNORED_SECTIONS" && \
exit 1; \
fi
dh_python3 \
$(foreach section,$(RECOMMENDS_SECTIONS),--recommends-section=$(section)) \
$(foreach section,$(SUGGESTS_SECTIONS),--suggests-section=$(section))