I've been working on getting pike packages set up using pkgsrc, and I've
run into some strange behavior on (at least) Linux:
The configure scripts for modules seem to be using the smartlink binary
and the generated Makefiles use the smartlink script at bin/smartlink.
Is that intentional?
Also, I think the configure test that controls how the smartlink binary
works is broken (or at least different than the script), and causes
configure and compilation to work incorrectly when using the pkgsrc
cwrappers:
The smartlink script converts -R options to -Wl,-rpath,..., and that the
smartlink binary at least on the current system I'm using, seems to just
drop them in favor of environment variables. For example (I modified the
script to print the command it would run):
[root@pkgsrc-pbulk Pike-v8.0.462]# SMARTLINK_DEBUG=true ./smartlink gcc
-R/tmp -L/tmp
SMARTLINK: gcc -L/tmp -L/tmp
...
[root@pkgsrc-pbulk Pike-v8.0.462]# SMARTLINK_DEBUG=true bin/smartlink
gcc -R/tmp -L/tmp
SMARTLINK: gcc -L/tmp -Wl,-rpath,/tmp
...
It seems to be because of the results of this test:
checking for ld.so run path method... use LD_LIBRARY_PATH/LD_RUN_PATH
It would seem like using the environment variables would be a use case
of last resort. Perhaps -Wl should be used for more than just Linux 2.x?
bill