problem with PATH set by libtool for uninstalled pixman library

Jon TURNEY jon.turney@dronecode.org.uk
Wed Jul 28 20:19:00 GMT 2010


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):

jon@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



More information about the Cygwin mailing list