--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package lowdown, a key package, through:
bind9 -> libmaxminddb -> lowdown
[ Reason ]
lowdown is a Markdown to HTML/roff/LaTeX/etc. translator. A regression
was introduced at some point where the -Tman (manpage) output used a
roff macro that is not present in the "man" package but in the "ms"
package. I reported this upstream[1], and it was subsequently fixed[2].
This is a bookworm-targeted backport of that specific upstream commit,
that applies cleanly as-is.
1: https://github.com/kristapsdz/lowdown/issues/111
2: https://github.com/kristapsdz/lowdown/commit/02491bf4ae2a39df2dfed10382512449a5b3262f
[ Impact ]
The output difference is minor from a visual standpoint, e.g.
OPTIONS
-batch_size ______
- Maximum number of entries to request per call to get-entries.
- You should not generally need to change this. Defaults to 1000.
+ Maximum number of entries to request per call to get-entries. You
+ should not generally need to change this. Defaults to 1000.
However, the roff output is technically invalid.
In Debian, this manifests in reverse build-dependencies that are using
lowdown to generate their manpage to emit lintian warnings, e.g.:
W: certspotter: groff-message 29: warning: macro 'PI' not defined [usr/share/man/man8/certspotter-script.8.gz:1]
W: certspotter: groff-message 56: warning: macro 'PI' not defined [usr/share/man/man8/certspotter.8.gz:1]
There are three reverse build-dependencies in testing:
1) src:libmaxminddb
2) src:certspotter
3) src:nix
Only the first two are using -Tman. I am the maintainer for both.
src:libmaxminddb was built with an pre-regression version of lowdown and
is not affected. It can be binNMUed, although not strictly necessary.
src:certspotter is affected and should probably be binNMUed, although as
explained, the visual impact is relatively minor.
[ Tests ]
Upstream has a comprehensive test suite that runs as part of the build.
The package also has autopkgtests that pass.
[ Risks ]
The code for the fix is trivial. The package is technically a key
package, but only as a reverse build-dep of another package, and is only
a B-D for three packages in total.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
[ Other info ]
debdiff attached; you can also find the git diff at:
https://salsa.debian.org/debian/lowdown/-/commit/0e2160bb23e194edc5c15c7772042857fd18f2f7
unblock lowdown/1.0.0-2
Also probably:
nmu certspotter_0.16.0-1 . ANY . unstable . -m "Rebuild with lowdown 1.0.0-2"
(but no idea how to ensure the ordering of those two, not fluent in
wanna-build)
diff -Nru lowdown-1.0.0/debian/changelog lowdown-1.0.0/debian/changelog
--- lowdown-1.0.0/debian/changelog 2023-01-07 06:52:41.000000000 +0200
+++ lowdown-1.0.0/debian/changelog 2023-04-09 03:39:15.000000000 +0300
@@ -1,3 +1,13 @@
+lowdown (1.0.0-2) unstable; urgency=medium
+
+ * Backport upstream patch to avoid the use of an -ms macro, PI, in the -Tman
+ output. This addresses a man warning ("macro 'PI' not defined") which in
+ turn is a lintian warning for packages using lowdown to generate their
+ manpage(s).
+ * Bump Standards-Version to 4.6.2, no changes needed.
+
+ -- Faidon Liambotis <paravoid@debian.org> Sun, 09 Apr 2023 03:39:15 +0300
+
lowdown (1.0.0-1) unstable; urgency=medium
* New upstream release.
diff -Nru lowdown-1.0.0/debian/control lowdown-1.0.0/debian/control
--- lowdown-1.0.0/debian/control 2023-01-07 04:49:43.000000000 +0200
+++ lowdown-1.0.0/debian/control 2023-04-09 03:39:15.000000000 +0300
@@ -6,7 +6,7 @@
libbsd-dev,
libmd-dev,
pkgconf | pkg-config,
-Standards-Version: 4.6.1
+Standards-Version: 4.6.2
Section: text
Homepage: https://kristaps.bsd.lv/lowdown/
Vcs-Browser: https://salsa.debian.org/debian/lowdown
diff -Nru lowdown-1.0.0/debian/patches/dont-use-PI-for-tman.patch lowdown-1.0.0/debian/patches/dont-use-PI-for-tman.patch
--- lowdown-1.0.0/debian/patches/dont-use-PI-for-tman.patch 1970-01-01 02:00:00.000000000 +0200
+++ lowdown-1.0.0/debian/patches/dont-use-PI-for-tman.patch 2023-04-09 03:38:19.000000000 +0300
@@ -0,0 +1,83 @@
+From: Kristaps Dz <kristaps@bsd.lv>
+Subject: [PATCH] Don't use \(PI for -tman: it doesn't exist.
+
+The \(PI register only exists for -ms macros. Use the default value
+of 5n for this (for definition lists) when emitting for -tman.
+
+References #111
+
+Origin: upstream, https://github.com/kristapsdz/lowdown/commit/02491bf4ae2a39df2dfed10382512449a5b3262f
+Bug: https://github.com/kristapsdz/lowdown/issues/111
+Last-Update: 2023-04-09
+
+--- a/nroff.c
++++ b/nroff.c
+@@ -745,7 +745,8 @@ rndr_definition_title(struct bnodeq *obq
+ }
+
+ static int
+-rndr_definition_data(struct bnodeq *obq, struct bnodeq *bq)
++rndr_definition_data(const struct nroff *st, struct bnodeq *obq,
++ struct bnodeq *bq)
+ {
+ /*
+ * The IP creates an empty vertical space til I figure out a
+@@ -760,9 +761,18 @@ rndr_definition_data(struct bnodeq *obq,
+
+ if (bqueue_block(obq, ".if n \\\n.sp -1v") == NULL)
+ return 0;
+- if (bqueue_block(obq, ".if t \\\n.sp -0.25v\n") == NULL)
++ if (bqueue_block(obq, ".if t \\\n.sp -0.25v") == NULL)
+ return 0;
+- if (bqueue_block(obq, ".IP \"\" \\*(PI") == NULL)
++
++ /*
++ * The \(PI register exists in -ms for the paragraph indent.
++ * Use it for -ms and hard-code 5n (the default for -ms) in
++ * -man.
++ */
++
++ if (st->man && bqueue_block(obq, ".IP \"\" 5n") == NULL)
++ return 0;
++ if (!st->man && bqueue_block(obq, ".IP \"\" \\*(PI") == NULL)
+ return 0;
+
+ /* Strip out leading paragraphs. */
+@@ -1753,7 +1763,7 @@ rndr(struct lowdown_metaq *mq, struct nr
+ rc = rndr_list(st, obq, n, &tmpbq);
+ break;
+ case LOWDOWN_DEFINITION_DATA:
+- rc = rndr_definition_data(obq, &tmpbq);
++ rc = rndr_definition_data(st, obq, &tmpbq);
+ break;
+ case LOWDOWN_DEFINITION_TITLE:
+ rc = rndr_definition_title(obq, &tmpbq);
+--- a/regress/simple.man
++++ b/regress/simple.man
+@@ -178,7 +178,7 @@ apples
+ .sp -1v
+ .if t \
+ .sp -0.25v
+-.IP "" \*(PI
++.IP "" 5n
+ Good for making applesauce.
+ .LP
+ oranges
+@@ -186,7 +186,7 @@ oranges
+ .sp -1v
+ .if t \
+ .sp -0.25v
+-.IP "" \*(PI
++.IP "" 5n
+ Citrus!
+ .LP
+ tomatoes
+@@ -194,7 +194,7 @@ tomatoes
+ .sp -1v
+ .if t \
+ .sp -0.25v
+-.IP "" \*(PI
++.IP "" 5n
+ There\(cqs no \(lqe\(rq in tomatoe.
+ .LP
+ Again, text is indented 4 spaces. (Put a blank line between each
diff -Nru lowdown-1.0.0/debian/patches/series lowdown-1.0.0/debian/patches/series
--- lowdown-1.0.0/debian/patches/series 2023-01-07 06:52:39.000000000 +0200
+++ lowdown-1.0.0/debian/patches/series 2023-04-09 03:38:12.000000000 +0300
@@ -1,2 +1,3 @@
liblowdown-lm.patch
pkg-config-libmd-libbsd.patch
+dont-use-PI-for-tman.patch
--- End Message ---