Re: libtool (use with autotest)

Nick Bowler <[email protected]>
Newsgroups gmane.comp.sysutils.autoconf.general,gmane.comp.gnu.libtool.general
Message-ID <CADyTPEzF69XYHEp4Yv2ko1VwBBu1YBfYJS4f4mknHrXfQ5De9A@mail.gmail.com>
On 2023-07-24, Simon Sobisch <[email protected]> wrote:
>
> I hope to possibly get an answer by moving this question to the
> appropriate lists :-)
> For more context I provide the original responses to this topic.
>
> Am 06.07.2023 um 14:55 schrieb Jose E. Marchesi:
>>
>>> On 2023-07-03 17:16:59 +0200, Bruno Haible wrote:
>>>> Someone wrote:
>>>>> Without relinking at install time, I don't see how tests can
>>>>> reliably load the just-built library from the sources (objdir
>>>>> really) rather than loading the installed library.  Unless
>>>>> perhaps there is a belief that LD_LIBARY_PATH is reliable and
>>>>> supercedes, and there are wrappers
>>>>
>>>> Yes, on all ELF systems, libtool creates wrappers that set
>>>> LD_LIBRARY_PATH, for all programs that link to shared libraries in
>>>> the build dir.
>>>
>>> But wrappers have drawbacks: they make the use of gdb or valgrind
>>> less convenient.
>>
>> Just a tiny bit less convenient:
>>
>> $ libtool --mode=execute gdb ./prog
>> $ libtool --mode=execute valgrind ./prog
>
> Just to recheck:
>
> When using both autotest (autoconf) generated testsuites and libtool,
> then how should we handle the following, given that we generate
>
> bin/runner
> bin2/compiler
> runtime/librun
>
> * specify binaries to test AT_TESTED
> They are not in PATH, so should we add the libtool generated binaries'
> path to PATH for `make check` before the testsuite is executed?

The normal way is to set AUTOTEST_PATH so that all the programs under
test are in it.  When using Autoconf, this is usually done via the
the second argument to the AC_CONFIG_TESTDIR macro.

I must be missing some context here, as I'm afraid I don't understand
what the problem is.  To use valgrind in an Autotest test suite together
with libtool, I would do something like this (untested):

  m4_divert_text([PREPARE_TESTS], [: ${LIBTOOL="$SHELL $builddir/libtool"}
  ])

  AT_TESTED([my_program])

  AT_SETUP([my test w/ valgrind])

  AT_CHECK([$LIBTOOL --mode=execute valgrind my_program], [...])
  [...]

  AT_CLEANUP

> Bonus:
> How to do this in a way that allows `make installcheck`?

If you use AUTOTEST_PATH to locate the programs under test, I wouldn't
expect there to be any particular problem with installcheck.

Hope that helps,
  Nick
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.