Ben Klein wrote:
2010/1/26 Michael Ost most@museresearch.com:
Alexandre Julliard wrote: I think it makes more sense to require, as Hin-Tak Leung's patch does, that a user put /usr/lib/wine in WINEDLLPATH if they use WINEDLLPATH. This is how LD_LIBRARY_PATH works for ld and PATH works in bash --- so it's expected behavior.
Actually, it's not how LD_LIBRARY_PATH works. $ LD_LIBRARY_PATH=/path/that/does/not/exist/ /bin/echo Hi there Hi there
It is the way it works for PATH in all shells (not just bash), but this is a different matter because your shell environment (often a login or profile script) provides a default, sensible value for PATH. $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/games $ echo $LD_LIBRARY_PATH
OK - fair enough.
But, if I read the man page correctly LD_LIBRARY_PATH _prepends_ your path before the standard paths. That would do fine for me. WINEDLLPATH is appended after /usr/lib/wine.
WINEDLLPATH should certainly behave more like LD_LIBRARY_PATH than PATH, but wine should always follow the same DLL search pattern as Windows. How would Windows handle adding a directory to the DLL search path? (Is this even possible?)
I'm not getting why Windows DLL searching is relevant here. This is a Linux-side issue.
Also, from my reading of the code, you jump through some special hoops to deal with running from the build directory which could be more easily solved by putting WINEDLLPATH first.
How, exactly?
This was a slightly uninformed comment on my part, so I could be totally off base here. And the code supporting dll directory lookups is complicated. But ... I saw special cases for dealing with the build directory, including this comment "/* if no build dir skip all the build dir magic cases */" libs/wine/loader.c/first_dll_path. Those suggest to me that someone was trying to stick a path in before /usr/lib/wine.
All that said, this isn't at all central to what I would like to do. All I want is that WINEDLLPATH comes before /usr/lib/wine.
- mo
PS: Hin-Tak Leung, who got bit by this before me, found that WINEDLLPATH broke/changed in November of 2006.