[looping in groff@gnu list]

[was: '^\}$' is (not) changed to a space character]

Hi Alex,

At 2025-10-06T12:25:23+0200, Alejandro Colomar wrote:
> On Mon, Oct 06, 2025 at 03:51:49AM -0500, G. Branden Robinson wrote:
> > Right, but the excess space in the document should not still be
> > present, either.
> 
> Hmmm, it's weird.  If I produce the PDF in my computer, the space is
> now correct.  However, the PDF book served on my website still has the
> wrong space.  I know it has the correct source code, because it
> doesn't use CW anymore.
> 
> The only difference I can see is the groff(1) version.  In my computer,
> I have
> 
>       GNU groff version 1.23.0.2695-49927
> 
> but on my server I have
> 
>       GNU groff version 1.23.0.1254-19a18
> 
> But I also tested 1.23.0, and it does the right thing.  Maybe the
> version on my server has a temporary bug that appeared after 1.23.0
> and was fixed before 1.23.0.2695-49927.

That could explain it.  I find bugs I introduced myself all the time.
(Such discoveries often drive new regression test scripts.) This one
doesn't ring a bell, but that doesn't mean much.

> I tried building groff from git HEAD to see if that fixed the issues
> in my server.  However, it seems groff doesn't build at the moment:
> 
>       $ make 
>       make  all-recursive
>       make[1]: Entering directory '/srv/alx/src/gnu/groff/master'
>       make[2]: Entering directory '/srv/alx/src/gnu/groff/master'
>         CXX      src/roff/troff/div.o
>       In file included from src/roff/troff/div.cpp:29:
>       src/roff/troff/hvunits.h: In member function ‘units vunits::to_units()’:
>       src/roff/troff/hvunits.h:91:7: error: ‘ckd_mul’ was not declared in 
> this scope
>          91 |   if (ckd_mul(&r, n, vresolution))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘vunits operator+(const vunits&, 
> const vunits&)’:
>       src/roff/troff/hvunits.h:105:7: error: ‘ckd_add’ was not declared in 
> this scope
>         105 |   if (ckd_add(&r.n, r.n, y.n))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘vunits operator-(const vunits&, 
> const vunits&)’:
>       src/roff/troff/hvunits.h:114:7: error: ‘ckd_sub’ was not declared in 
> this scope
>         114 |   if (ckd_sub(&r.n, r.n, y.n))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘vunits operator-(const vunits&)’:
>       src/roff/troff/hvunits.h:123:7: error: ‘ckd_mul’ was not declared in 
> this scope
>         123 |   if (ckd_mul(&r.n, x.n, -1))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘vunits operator*(const vunits&, 
> int)’:
>       src/roff/troff/hvunits.h:145:7: error: ‘ckd_mul’ was not declared in 
> this scope
>         145 |   if (ckd_mul(&r.n, x.n, n))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘vunits operator*(int, const 
> vunits&)’:
>       src/roff/troff/hvunits.h:154:7: error: ‘ckd_mul’ was not declared in 
> this scope
>         154 |   if (ckd_mul(&r.n, n, x.n))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In member function ‘units hunits::to_units()’:
>       src/roff/troff/hvunits.h:208:7: error: ‘ckd_mul’ was not declared in 
> this scope
>         208 |   if (ckd_mul(&r, n, hresolution))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘hunits operator+(const hunits&, 
> const hunits&)’:
>       src/roff/troff/hvunits.h:222:7: error: ‘ckd_add’ was not declared in 
> this scope
>         222 |   if (ckd_add(&r.n, r.n, y.n))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘hunits operator-(const hunits&, 
> const hunits&)’:
>       src/roff/troff/hvunits.h:231:7: error: ‘ckd_sub’ was not declared in 
> this scope
>         231 |   if (ckd_sub(&r.n, r.n, y.n))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘hunits operator-(const hunits&)’:
>       src/roff/troff/hvunits.h:241:7: error: ‘ckd_mul’ was not declared in 
> this scope
>         241 |   if (ckd_mul(&r.n, x.n, -1))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘hunits operator*(const hunits&, 
> int)’:
>       src/roff/troff/hvunits.h:263:7: error: ‘ckd_mul’ was not declared in 
> this scope
>         263 |   if (ckd_mul(&r.n, x.n, n))
>             |       ^~~~~~~
>       src/roff/troff/hvunits.h: In function ‘hunits operator*(int, const 
> hunits&)’:
>       src/roff/troff/hvunits.h:272:7: error: ‘ckd_mul’ was not declared in 
> this scope
>         272 |   if (ckd_mul(&r.n, x.n, n))
>             |       ^~~~~~~
>       src/roff/troff/div.cpp: In member function ‘virtual void 
> macro_diversion::output(node*, bool, vunits, vunits, hunits)’:
>       src/roff/troff/div.cpp:325:7: error: ‘ckd_add’ was not declared in this 
> scope
>         325 |   if (ckd_add(&new_vpos, vpos, lineht))
>             |       ^~~~~~~
>       make[2]: *** [Makefile:9395: src/roff/troff/div.o] Error 1
>       make[2]: Leaving directory '/srv/alx/src/gnu/groff/master'
>       make[1]: *** [Makefile:11776: all-recursive] Error 1
>       make[1]: Leaving directory '/srv/alx/src/gnu/groff/master'
>       make: *** [Makefile:6977: all] Error 2
> 
> Did you forget some #include?

It builds for me and others, like Deri and Grisha Levit.

https://lists.gnu.org/archive/html/groff/2025-10/msg00009.html

Have you "bootstrapped" lately?  That's necessary for Git users when we
bump the version of gnulib we include, which we probably did after
either 1.23.0.2695-49927 or 1.23.0.1254-19a18, and maybe both.  One
thing I do recall is bumping gnulib to get at the checked arithmetic
functions--precisely the ones you see above.

Also, FYI:

$ git describe origin/master
1.23.0-4017-g3ea378d35

I'll probably be bumping gnulib again soon--the version we're using hits
end-of-support in less than three months.

Regards,
Branden

Attachment: signature.asc
Description: PGP signature

Reply via email to