Re: rc2 testing: groff uses bogus putenv test

Collin Funk <[email protected]>
Newsgroups gmane.comp.printing.groff.general
Message-ID <[email protected]>
"G. Branden Robinson" <[email protected]> writes:

> Hi Ingo,
>
> Thanks for the build report.
>
> At 2026-02-05T04:09:25+0100, Ingo Schwarze wrote:
>> i just tested rc2 for the first time.  As far as my testing in rc1 went
>> previously (i never completed testing rc1), i see no further
>> regressions in rc2 beyond what i already reported for rc1.
>> 
>> It appears parallel building now works (at least it did when i
>> tested it once, which is admittedly not conclusive evidence because
>> for parallel build errors, intermittent failures are typical).
>> For now, i will do test builds in serial mode anyway because
>> that makes diff(1)ing build logs easier.  Thoroughly testing
>> parallel builds is not a priority at this point.
>> 
>> Here is the next crash on OpenBSD, present in both rc1 and rc2.
>> 
>> Groff uses the gnulib putenv module.  That module tests putenv(3)
>> in a bogus way, which causes my OpenBSD build to crash:
> [...]
>> With the workaround appended below, i now managed for the first time
>> to get groff to build on OpenBSD.  I do not think it is building
>> correctly just yet, but at least the build now finishes without
>> crashing.
>
> I wonder why Bruno Haible has so much less difficulty building on
> OpenBSD than you do.
>
> Do you not build stock groff, but only attempt a build after applying
> your raft of patches to make the formatter work more like mandoc(1)?
>
> Regards,
> Branden

Here is the linker error Ingo saw:

    c++ -O2 -pipe -o grops src/devices/grops/ps.o src/devices/grops/psrm.o \
        -lm libdriver.a  libgroff.a  lib/libgnu.a
    ld: error: undefined symbol: rpl_putenv
    >>> referenced by psrm.cpp
    >>>   src/devices/grops/psrm.o:(resource_manager::output_prolog(ps_output&))
    >>> referenced by ps.cpp
    >>>   src/devices/grops/ps.o:(main)
    c++: error: linker command failed with exit code 1 (use -v to see invocation)
    *** Error 1 in . (Makefile:8416 'grops')

These make flags get rid of all Gnulib objects [1]:

    # Even after the above CONFIGURE_ENV cleanup, gnulib compiles in
    # several bogus files that groff does not need, merely because
    # gnulib enables them by default.  Get rid of them.
    MAKE_FLAGS +=		lib_libgnu_a_OBJECTS=

Getting rid of objects tends to make the linker unhappy.

Collin

[1] https://github.com/ischwarze/groff-port/blob/1.24/Makefile
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.