Subject: bug#70982: test suite failures on OpenBSD

From: Bruno Haible <[email-masked]>
Date: Fri, 08 Nov 2024 19:56:51 +0100

Hi Ileana,

> > * In which situations is the user expected to pass one of these options?
> >    - Is it only for libtool's own test suite?
> 
> No, but I can see where I may have created that confusion. I can update
> the documentation to make this more clear.
> ...
> No, this should be specific to "--mode=finish" and "--mode=install" for
> shared libraries where the shared library cache may be updated by
> finish_cmds. The command(s) should not have any effect on other libtool
> modes.

Documenting this would make sense. It was not clear to me.

> Depending on what a package's testsuite looks like, it should
> ensure that local changes to a shared library (that has previously been
> installed) will be utilized when linking to an executable, instead of an
> old installed version.
> ...
> I think --test and --check
> should only be useful for checking and testing of local changes to
> shared libraries, without the need to install the updated shared
> library. I have only seen this as an issue with ldconfig on OpenBSD 7.5.

I am still confused.

On one hand, when you say "only on OpenBSD", it reminds me of the problem
that I have seen repeatedly on OpenBSD over the last years (e.g. with
GNU libunistring, when built without --disable-shared): If I have an
older version of GNU libunistring installed (in the directory specified
through --prefix), when building a newer version of GNU libunistring
(i.e. "make && make check") the "make check" part fails because it
apparently uses the older version. Whereas "make && make install && make check"
succeeds. OpenBSD is the only ELF platform on which this 'make install'
before 'make check' is (or used to be) needed.

On the other hand, during "make && make check", none of the libtool
modes --mode=finish and --mode=install is used. Automake does not
generate invocations of "libtool --mode=finish ..." at all, and it
generates invocations of "libtool --mode=install ..." only as part
of 'make install', which is typically the last thing I do in a build
tree. (In the build tree, doing source code modifications and "make"
will regenerate the libraries using "libtool --mode=link ...", but
not invoke "libtool --mode=finish ..." nor "libtool --mode=install ...".)

So, it's not clear to me how your change can have any effect in a
usual build tree as generated by Automake.

Bruno