I have a tinderbox which does daily builds of the X.Org stack for cygwin, and
I've come across a something I don't understand with the way libtool is
working when building the pixman library, and I hope someone can shed a bit of
light.
pixman's 'make check' runs various uninstalled test programs, supposedly
against the uninstalled version of the shared library we have just built.
This doesn't seem to work quite correctly on cygwin, the installed version of
the library gets used instead (causing the test to fail when the value it is
checking for has changed in the just built version):
j...@allegra /opt/jhbuild/build/pixman/test
$ ./blitters-test.exe --lt-debug
(main) argv[0] : ./blitters-test
(main) program_name : blitters-test
(find_executable) : ./blitters-test
(check_executable) : /opt/jhbuild/build/pixman/test/./blitters-test
(main) found exe (before symlink chase) at :
/opt/jhbuild/build/pixman/test/./blitters-test
checking path component for symlinks:
/opt/jhbuild/build/pixman/test/./blitters-test
checking path component for symlinks: /opt/jhbuild/build/pixman/test/.
checking path component for symlinks: /opt/jhbuild/build/pixman/test
checking path component for symlinks: /opt/jhbuild/build/pixman
checking path component for symlinks: /opt/jhbuild/build
checking path component for symlinks: /opt/jhbuild
checking path component for symlinks: /opt
(main) found exe (after symlink chase) at :
/opt/jhbuild/build/pixman/test/./blitters-test
(main) libtool target name: blitters-test.exe
(lt_setenv) setting 'BIN_SH' to 'xpg4'
(lt_setenv) setting 'DUALCASE' to '1'
(lt_update_lib_path) modifying 'PATH' by prepending
'/opt/jhbuild/build/pixman/pixman/.libs:'
(lt_setenv) setting 'PATH' to
'/opt/jhbuild/build/pixman/pixman/.libs:/home/jon/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0/:/bin'
(lt_update_exe_path) modifying 'PATH' by prepending
'/opt/jhbuild/install/lib:/opt/jhbuild/install/bin:/opt/jhbuild/build/pixman/pixman/.libs:'
(lt_setenv) setting 'PATH' to
'/opt/jhbuild/install/lib:/opt/jhbuild/install/bin:/opt/jhbuild/build/pixman/pixman/.libs:/opt/jhbuild/build/pixman/pixman/.libs:/home/jon/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0/:/bin'
(main) lt_argv_zero : /opt/jhbuild/build/pixman/test/./.libs/blitters-test.exe
(main) newargz[0] : /opt/jhbuild/build/pixman/test/./.libs/blitters-test.exe
As you can see, the install path appears before .libs in the PATH the libtool
wrapper constructs, so the installed version from a previous build is used,
rather than the uninstalled version we want to test.
I'm not quite clear why the install path is being added at all, I don't think
libpixman has any dependencies which it needs to find there (at least in the
cygwin build)
I notice if I add '-bindir' to the LDFLAGS, this seems to rearrange the order
of things added to PATH so things work, but the description of -bindir is a
bit opaque to me, so I'm not sure if that's the correct solution.
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple