# HG changeset patch # User Jérémy Bobbio # Date 1560953419 -7200 # Node ID 91178bc271c764339076aa5d95dfcc8e9b7ebcaf # Parent 5b0ce10a7046d19a1665590fdaada4eb8e7739f4 [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. diff -r 5b0ce10a7046 -r 91178bc271c7 debian/control --- a/debian/control Wed Jun 19 15:44:17 2019 +0200 +++ b/debian/control Wed Jun 19 16:10:19 2019 +0200 @@ -26,6 +26,7 @@ python3-repoze.lru, python3-wsgicors, python3-filelock, + python3-pycryptodome, sphinx-common, Standards-Version: 4.3.0 Homepage: https://www.cubicweb.org @@ -40,30 +41,13 @@ graphviz, gettext, Recommends: + ${python3:Recommends}, cubicweb-ctl (= ${source:Version}), python3-cubicweb-postgresql-support (= ${source:Version}) | sqlite3, -# pyramid recommends - python3-pyramid (>= 1.5.0), - python3-pyramid-multiauth, - python3-waitress (>= 0.8.9), - python3-wsgicors, - python3-repoze.lru, -# common recommends - python3-simpletal (>= 4.0), - python3-pycryptodome, -# web recommends (mostly) - python3-docutils (>= 0.6), - python3-vobject, fckeditor, - python3-fyzz, - python3-imaging, - python3-rdflib, - python3-werkzeug, -# dev recommends - python3-pysqlite2, Suggests: - python3-zmq, + ${python3:Suggests}, python3-cwclientlib (>= 0.4.0), python3-cubicweb-documentation (= ${source:Version}), w3c-dtd-xhtml, diff -r 5b0ce10a7046 -r 91178bc271c7 debian/rules --- a/debian/rules Wed Jun 19 15:44:17 2019 +0200 +++ b/debian/rules Wed Jun 19 16:10:19 2019 +0200 @@ -27,3 +27,28 @@ 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))