[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Disposition of groff 1.23.0.rc4 feedback issues as of June
From: |
G. Branden Robinson |
Subject: |
Disposition of groff 1.23.0.rc4 feedback issues as of June |
Date: |
Thu, 1 Jun 2023 10:58:58 -0500 |
Hi Bertrand,
I hope this message finds you well.
Here's an update to a similar message I sent back on 20 April.[1]
I've pushed a new personal staging branch, branden-2023-06-01[11] to
groff's Git repository. Since RC4 I have pushed many documentation
corrections and improvements to the master branch. These are low-risk
changes that affect only text, and don't require alteration of build
scripts, Makefiles, or similar.
Would you like to tag the HEAD of the master branch as "1.23.0"?
There do remain issues, of course--groff is not a bug-free code base.
I will recapitulate and update the list from 20 April. If you (or
anyone reading this) feels any should be a release blocker, please let
me know.
RC4 enjoyed successful builds, with test suite passage, on the following
platforms courtesy of Bruno Haible.
* Linux
Ubuntu 22.04
Debian 9.1
Debian 11.1
CentOS 8-stream
CentOS Stream 9
OpenSUSE Leap 15.2
Manjaro 17
* Hurd
Debian GNU/Hurd
I also had a successful build and "make check" with macOS 12.
The feedback we've received as verified RC4 issues are as follows.
We can add these to the release notes as "errata" and/or keep this list
handy for users or distributors who may want to cherry-pick the fixes.
If you'd like to see any of these merged onto master for an RC5, please
advise. My personal view, due to RC exhaustion, a desire to get the
many improvements in groff 1.23.0 into the field, and eagerness to
resume feature development, is that we should tag master as 1.23.0 and
release. But I value your opinion too.
> * Two distinct complaints about ms(7)
> 1. raw .bp requests sometimes not working (Savannah #64005)
This is a regression from groff 1.22.4. I have a fix ready for
merge.[2]
> 2. raw .sp requests being nilpotent sometimes
This is a deliberate change. As far as I can tell, historically, ms
users were expected to know what they were doing if they resorted to
formatter requests. No one has ever specified the package rigorously
enough for us to know what should be done at every point of intersection
between *roff requests and the macro package's internal implementation.
I think we should reserve to our own discretion replication of AT&T ms
behavior in unspecified areas.
Since April 20, there have been 2 further reports of regressions in
groff man(7). These were reported and analyzed around 1 May.
> 9. man: user-selected font family not preserved
This was a regression from 1.22.4; I have a fix ready for merge.[9]
> 10. man: `HP` sometimes puts extra blank line on output
This was NOT a regression from 1.22.4; I have a fix ready for merge.[10]
Returning to issues we'd heard about by 20 April, the rest involve
portability.
> * Portability issues
> 3. build failure when building out of tree and the prerequisites for
> running mom(7)'s test script are unavailable
>
> This was a latent groff 1.22.4 bug exposed by a commit of mine on 2
> March.
>
> https://git.savannah.gnu.org/cgit/groff.git/commit/?id=1ec02e805e2448bb17a27e3d9398cc83fd272743
>
> I reckon this counts as a regression since a Makefile code path is
> being followed now that wasn't in 1.22.4 when mom's test prerequisites
> were not available. On the other hand, if someone tried to produce a
> distribution archive ("make dist") on such a system, I think that it
> would have been erroneously missing mom's test script. ... I found
> this alarming.
I have a fix ready for merge.[3]
> 4. build failure in gxditview on AIX
>
> I think it unlikely that this is a regression. I predict that groff
> 1.22.4 would _also_ fail to build on an AIX system where Xaw linked
> with Xpm and Xext. (I suspect this has been the case for years.) But
> I have no access to an AIX system to be sure.
Bruno prepared a fix for us; I have it ready for merge.[4]
> 5. build failure with Sun C/C++ compiler due to use of GNU attribute
> extension
>
> I have no information about whether groff 1.22.4 ever built
> successfully with the Sun C/C++ compiler, but the uses of the GCC
> __attribute__ extension were both post-1.22.4 additions to the groff
> source code, so we can regard this as a regression since this usage
> would (it seems) be a sufficient condition for causing that compiler
> to fail.
I have a fix ready for merge.[5]
> 6. build failure on MinGW due to platform not supplying <sys/wait.h>
>
> I'm not sure groff 1.22.4 built on MinGW without being patched, but
> the requirement for the this header file is a post-1.22.4 change, so
> we can call this a regression.
I have a fix ready for merge.[6]
> 7. test failure: gdiffmk
>
> Not a regression.
This was a bug in GNU diffutils 3.9. GNU diffutils 3.10 is out now and
should fix this.[7]
> 8. test failure: pdfpic.tmac
>
> Not a regression; in fact, thanks to macOS 12 sed supporting a (GNU?)
> extension to the POSIX specification for sed, this failure does not
> occur where on older releases of Mac OS X, it would have.
I have a much improved and more portable implementation of pdfpic.tmac
ready for merge.[8]
What is your view of our releasebility?
Regards,
Branden
[1] https://lists.gnu.org/archive/html/groff/2023-04/msg00192.html
[2] commit 72820ac3e1fd4c3421486b80c6b791503ae268a7
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date: Wed Apr 5 20:04:17 2023 -0500
[ms]: Fix Savannah #64005.
* tmac/s.tmac (@break-page, bp): Define alias for `bp` request and
wrapper for `bp` to (if needed) temporarily disable no-space mode, so
that a document's `bp` requests are honored even if no-space mode is
on, as can happen after displays. Fixes a regression from groff
1.22.4 and historical ms implementations introduced by me on 6 July
when resolving Savannah #62688.
Fixes <https://savannah.gnu.org/bugs/?64005>. Thanks to Michał
Kruszewski for reporting the problem and Dave Kemper for identifying the
cause.
ANNOUNCE: Acknowledge Michał.
commit 355a495a31b4560242067eeb8b9a46fe96bc3fa3
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date: Wed Apr 5 19:08:03 2023 -0500
[ms]: Regression-test Savannah #64005.
* tmac/tests/s_honor-page-break-after-display.sh: Do it.
* tmac/tmac.am (tmac_TESTS): Run test.
Test fails at this commit.
[3] commit 6a09665af4f7a526c87053f1a48bbcdcea355823
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date: Sat Apr 15 17:37:18 2023 -0500
[mom]: Ensure parent dir of test script exists.
* contrib/mom/mom.am (contrib/mom/examples/tests-mom.sh): Do it.
Fixes out-of-tree build failure on systems where the prerequisites for
running mom's test script are unavailable. Thanks to Bruno Haible for
the report.
[4] commit fdc402f4c19fa6a0d9e52211c17b27fca2305d3e
Author: Bruno Haible <bruno@clisp.org>
Date: Sun Apr 16 14:26:01 2023 +0200
[build]: Fix gxditview linking on AIX.
* m4/groff.m4 (GROFF_X11): Add macro dependency on `AC_CANONICAL_HOST`.
Introduce new variable `X_AW_DEPS`, empty on most hosts. If we
otherwise have Athena widget library support, and the host is AIX,
force linkage against Xpm and Xext libraries to reflect modern Athena
dependencies, which AIX's linker doesn't figure out on its own.
`AC_SUBST` this variable, exposing it to Automake files.
* src/devices/xditview/xditview.am (gxditview_LDADD): Use it.
[5] commit 4f89d7ef1fd3f94e422d635bcb06f4112bc269b7
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date: Sun Apr 16 00:30:29 2023 -0500
[build]: Improve portability to unfree compilers.
* bootstrap.conf (gnulib_modules): Add "attribute".
* src/libs/libgroff/getopt.c:
* src/libs/libgroff/new.cpp: Include gnulib's "attribute.h" header file.
* src/libs/libgroff/getopt.c (_getopt_initialize):
* src/libs/libgroff/new.cpp (operator delete): Replace GNU C unused
attribute syntax with gnulib's "MAYBE_UNUSED".
Thanks to Bruno Haible for the report and suggested remedy.
ANNOUNCE: Drop item about builds failing with MSVC due to GNU C-style
attribute usage. This might no longer happen, but there could be other
reasons we don't successfully build with it.
[6] commit bf1c48c44488cab04d3979ed4915ca65eec63d63
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date: Sun Apr 16 00:50:35 2023 -0500
bootstrap.conf: Add "sys_wait" module.
* bootstrap.conf (gnulib_modules): Add "sys_wait" module. MinGW does
not provide "sys/wait.h", which we require in
src/preproc/html/pre-html.cpp since commit 11137209ed, 27 June.
[7] https://lists.gnu.org/archive/html/info-gnu/2023-05/msg00009.html
[8] commit e0c27d6c19152f245b4886f92957c128c2fa8565
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date: Mon Apr 17 16:41:33 2023 -0500
[pdfpic]: Fix Savannah #64061.
* tmac/pdfpic.tmac: Refactor to make comprehensible some woefully
undocumented cleverness and improve efficiency.
(PDFPIC): Break out flaming-hoop-leaping "clever" bit of `sy` usage
into its own macro, calling from here and relocating its requests from
here...
(pdfpic@get-image-dimensions): ...to here. When using `sy` request to
collect and munge output of pdfinfo(1), (a) disable the escape
character while defining the macro; (b) construct the command in a
roff string, appending to it in discrete, hopefully comprehensible
chunks; (c) disable the escape character during macro interpretation
wherever possible (most of it); (d) retain doubled backslashes so that
they survive subsequent string interpolation; (e) stop using grep(1)
in the pipeline when sed(1) is perfectly capable of performing its own
input filtering; (f) invoke sed with '-n' option and emit output only
upon a successful substitution; (g) replace unportable(!) POSIX BRE
character class '[:digit:]' in substitution match text with '[0-9]';
and most importantly (h) replace multi-line sed 's' replacement text
(see below for the reason we can't use it) with single roff control
line employing the groff extension escape sequence `\R` to assign
multiple registers. Annotate portability and escaping challenges.
Tested on GNU/Linux, macOS 12, and (with simulated pdfinfo(1) output)
Solaris 11.
There is a problem with trying to embed true newlines into the arguments
of a `sy` request. The C++ function that GNU troff uses to assemble the
command string (character by character) _does not recognize C/C++ string
literal escape sequences_. This means that you _cannot_ embed "\n" in
`sy`'s arguments and have it survive, as a newline character, into the
command string passed to the standard C library's system(3) function.
("A\nB" gets encoded as 'A', '\\', 'n', 'B', not 'A', '\n', 'B'.)
Unfortunately, this appears to be AT&T troff-compatible behavior. But
it means that you _cannot_ portably construct multi-line replacement
text for sed's 's' command. (Other sed commands like 'a', 'c', and 'i'
will be similarly affected.) See Savannah #64071.
* PROBLEMS: Drop item.
Fixes <https://savannah.gnu.org/bugs/?64061>. Thanks to Bruno Haible
for the report, and to him and Ralph Corderoy for the discussion of
portable and efficient sed constructs.
[9] commit 820c1fd561e9a86d6570d597c41453bcb062643f
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date: Mon May 1 13:59:56 2023 -0500
[man]: Preserve user-selected font family.
* tmac/an.tmac: When initializing, save the currently selected font
family as `an*body-family` instead of forcing 'T' (Times, which is the
formatter's default, even on nroff-mode devices that can't switch
families). This change makes the formatter's `-f` option work on
man(7) documents again (important for Japanese man pages, but there is
now once again nothing stopping you from viewing man pages in Palatino
or Helvetica on the 'ps' and 'pdf' devices where these families are
available). It also reopens an avenue for rogue pages to affect the
rendering of unrelated documents later in batch rendering, but there
are many other, and worse, ways for rogue pages to do damage. Problem
introduced by me in commit e0e16d8e65, 15 March 2022.
Fixes <https://savannah.gnu.org/bugs/?64130>. Thanks to Deri James for
the report.
[10] commit 53ceb8f807ac36b3ff4bf35d60773e0084af4eb4
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date: Mon May 1 05:14:26 2023 -0500
[man]: Stop `HP` producing excess vertical space.
* tmac/an.tmac (HP): Fix thinko/typo when expanding macro as string to
call `an-deprecation-warn`.
* tmac/an-ext.tmac (SY): Put 1v of vertical space on the output if we
are starting a (non-nested) synopsis.
Thanks to Alex Colomar for the report. Problem introduced by me in
commit aea1dfb11b, 6 March 2022.
https://lists.gnu.org/archive/html/groff/2023-04/msg00369.html
[11] Actually, I now see that it's named "branden-2022-06-01". Wrong
year. Sigh.
signature.asc
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Disposition of groff 1.23.0.rc4 feedback issues as of June,
G. Branden Robinson <=