groff
[Top][All Lists]
Advanced

[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.

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]