bug-texinfo
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Build from git broken - missing gperf?


From: Gavin Smith
Subject: Re: Build from git broken - missing gperf?
Date: Mon, 5 Feb 2024 19:35:59 +0000

On Sun, Feb 04, 2024 at 07:59:37PM +0000, Gavin Smith wrote:
> I can't build from commit 5154587461e (2024-02-04).  It ends with the
> errors:
> 
> make[2]: Entering directory '/home/g/src/texinfo/GIT/tp/Texinfo/XS/gnulib/lib'
> gperf -m 10 ./iconv_open-aix.gperf > ./iconv_open-aix.h-t && \
> mv ./iconv_open-aix.h-t ./iconv_open-aix.h
> /bin/bash: line 1: gperf: command not found
> make[2]: *** [Makefile:3550: iconv_open-aix.h] Error 127
> make[2]: Leaving directory '/home/g/src/texinfo/GIT/tp/Texinfo/XS/gnulib/lib'
> make[1]: *** [Makefile:2849: all-recursive] Error 1
> make[1]: Leaving directory '/home/g/src/texinfo/GIT/tp/Texinfo/XS'
> make: *** [Makefile:1970: all] Error 2
> 
> It appears that some of the gnulib modules use gperf.  Any idea why this
> would have stopped working?

By running "git log" on the offending file (gnulib/lib/iconv_open-aix.h)
I found the commit 0bfbc74287b9b8 (2023-01-30 21:52:45 +0100).

The commit message there is

    Update tp/Texinfo/XS/gnulib/, add u8-strconv-from-enc and u8-mbsnlen

It's also in the ChangeLog for 2023-01-30:

    in tp/Texinfo/XS gnulib-tool --add-import uniconv/u8-strconv-from-enc 
unistr/u8-mbsnlen.

I found it was being rebuilt by "make" because a dependency was updated:

$ ls -l gnulib/lib/iconv_open-aix.gperf 
-rw-rw-r-- 1 g g 1.8k Jan 31 18:24 gnulib/lib/iconv_open-aix.gperf

which came from a gnulib update to another module (all that happened
was that copyright years changed from 2023 to 2024).

Gnulib documents that "gperf" is a required tool for using the "iconv_open"
module.  It's not especially easy, I find, to find why a particular gnulib
module was brought in, but looking at the files under the "modules" directory
of a gnulib checkout, I found the chain of dependencies

uniconv/u8-strconv-from-enc -> uniconv/u8-conv-from-enc -> striconveha
  -> striconveh -> iconv_open

(Of course, there could other dependency chains that also brought this module
in.)

Short of extirpating this dependency, the only solution appears to
be to require anyone building from git to have gperf installed, which
doesn't seem like a good situation, as it was never required before.

I don't know if uniconv/u8-conv-from-enc is a necessary module.  It's
not easy to find out how the module is used as the documentation is
lacking, but it appears to match libunistring.  The documentation is
here:
https://www.gnu.org/software/libunistring/manual/html_node/uniconv_002eh.html

I found uses of "u8_strconv_from_encoding" throughout the XS code,
although most of the uses (I didn't check them all) have "UTF-8" as one
of the arguments, making it appear that we are converting from UTF-8
to UTF-8.



reply via email to

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