On Sun, Nov 17, 2024 at 07:41:37PM +0100, Patrice Dumas wrote:
> Hello,
>
> I noticed that the macos parser runs the tests with the Pure Perl parser
> in the CI, although for macos 12 and macos 13 it seemed that everything
> was going on well regarding compilation. I could reproduce this issue
> with an access to this platform.
>
> Launching texi2any.pl with TEXINFO_XS=debug shows the issue:
> checking ../tp/maintain/lib/Text-Unidecode/lib/Parsetexi.la
> checking ../tp/maintain/lib/Unicode-EastAsianWidth/lib/Parsetexi.la
> checking ../tp/maintain/lib/libintl-perl/lib/Parsetexi.la
> checking ../tp/Texinfo/XS/Parsetexi.la
> found ../tp/Texinfo/XS/Parsetexi.la
> Parsetexi: couldn't load file ../tp/Texinfo/XS/.libs/Parsetexi.so:
> dlopen(../tp/Texinfo/XS/.libs/Parsetexi.so, 0x0001): Library not loaded:
> '/usr/local/lib/texi2any/libtexinfoxs.0.dylib'
> Referenced from: '..../texinfo/tp/Texinfo/XS/.libs/Parsetexi.so'
> Reason: tried: '/usr/local/lib/texi2any/libtexinfoxs.0.dylib' (no such
> file), '/usr/local/lib/libtexinfoxs.0.dylib' (no such file),
> '/usr/lib/libtexinfoxs.0.dylib' (no such file) at ../tp/Texinfo/XSLoader.pm
> line 183, <$fh> line 8.
>
> The problem is that libtexinfoxs.0.dylib is only searched for in the
> directory where it will be installed, not in the build directory. My
> feeling is that it is wrong. My intuition would be that it is an issue
> with libtool but I am not sure. I have checked that
> ../tp/Texinfo/XS/.libs/ is in @DynaLoader::dl_library_path and that
> libtexinfoxs.0.dylib is in ../tp/Texinfo/XS/.libs/.
It does look like a bug somewhere. It could be an issue with how
libtool treats this platform. I know that it is frequent for libtool
libraries to be "re-linked" at the time of installation to work in their
installed locations. Here it appears that the library is in its final,
installed form before being installed.
On GNU/Linux I can run a command on .libs/Parsetexi.so:
ldd Parsetexi.so
linux-vdso.so.1 (0x00007ffe2e98c000)
libtexinfoxs.so.0 =>
/home/g/src/texinfo/GIT/tp/Texinfo/XS/.libs/libtexinfoxs.so.0
(0x00007f1940f28000)
libtexinfo.so.0 =>
/home/g/src/texinfo/GIT/tp/Texinfo/XS/.libs/libtexinfo.so.0 (0x00007f1940e4f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1940c00000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1940f82000)
If you could do something similar on macos it could help to investigate
the problem.
Parsetexi.la has the line:
relink_command="(cd /home/g/src/texinfo/GIT/tp/Texinfo/XS; /bin/bash
\"/home/g/src/texinfo/GIT/tp/Texinfo/XS/libtool\" --tag CC --mode=relink
x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv
-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -O2 -g -fPIC -avoid-version -module -Wl,-E -o
Parsetexi.la -rpath /usr/local/lib/texi2any parsetexi/Parsetexi_la-Parsetexi.lo
libtexinfoxs.la libtexinfo.la @inst_prefix_dir@)"
This shows it needs to be relinked.
The contents of libtexinfoxs.la could also be relevant and might give
some hints why the installed locations are being used.
>
> It is not so problematic, as the pure Perl can be used and I do not
> believe that there are that many users on macos, so I do not think that
> it should delay a release, but it should probably be fixed some day.
> Also it could be possible that the BSD have the same issue, I'll try to
> investigate a bit using the CI.
>
> --
> Pat
>