-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't let pkg-config add system lib dirs to the search path #50
Conversation
Adding system-wide library directories to the linker search path causes these directories to be searched before other paths added by later crates. If a library is present in the system-wide directory and a later crate wants to specifically link against a different version of that library in another path, the linker will choose the library from the first search directory it finds. If the linker doesn't find a library in any of the specified search directories, it falls back on system-wide paths, so we don't need to print the path we found zlib in if it is in one of those system paths.
@joshtriplett can you take a look at this? |
@alexcrichton Why does pkg-config-rs default to allowing system library directories by default, rather than sticking with the default behavior of the pkg-config executable and stripping them out? This seems like what any library should be doing, not just libz-sys. |
Agreed, I'd prefer that to be the default, but @alexcrichton didn't want to do this this because it changes the behavior of pkg-config-rs (rust-lang/pkg-config-rs#35). There's a longer discussion in rust-lang/pkg-config-rs#11. |
@joshtriplett way long ago when it first came up I didn't want to maintain a list of "what are the system library directories" for all platforms, but times change! |
Why would |
Just wanted to ping this PR and see if it can be merged. |
Looks reasonable; thank you for the patch. |
In its default configuration, pkg-config adds system-wide library directories to the linker search path (rust-lang/pkg-config-rs#11). This causes these directories to be searched before other paths added by later crates or by `-Clink-arg` in rustflags. If a library is present in the system-wide directory and a later build step wants to specifically link against a different version of that library in another path, the linker will choose the library from the first search directory it finds. If the linker doesn't find a library in any of the specified search directories, it falls back on system-wide paths, so we don't need to print the path we found lubcurl in if it is in one of those system paths. rust-lang/libz-sys#50
In its default configuration, pkg-config adds system-wide library directories to the linker search path (rust-lang/pkg-config-rs#11). This causes these directories to be searched before other paths added by later crates or by `-Clink-arg` in rustflags. If a library is present in the system-wide directory and a later build step wants to specifically link against a different version of that library in another path, the linker will choose the library from the first search directory it finds. If the linker doesn't find a library in any of the specified search directories, it falls back on system-wide paths, so we don't need to print the path we found lubcurl in if it is in one of those system paths. See rust-lang/libz-sys#50 for the same fix to libz that landed a while back.
In its default configuration, pkg-config adds system-wide library directories to the linker search path (rust-lang/pkg-config-rs#11). This causes these directories to be searched before other paths added by later crates or by -Clink-arg in rustflags. If a library is present in the system-wide directory and a later build step wants to specifically link against a different version of that library in another path, the linker will choose the library from the first search directory it finds. If the linker doesn't find a library in any of the specified search directories, it falls back on system-wide paths, so we don't need to print the path we found libssh2 in if it is in one of those system paths. See rust-lang/libz-sys#50 for the same fix to libz that landed a while back. See also alexcrichton/curl-rust#441 for the same fix to libcurl-sys.
In its default configuration, pkg-config adds system-wide library directories to the linker search path (rust-lang/pkg-config-rs#11). This causes these directories to be searched before other paths added by later crates or by -Clink-arg in rustflags. If a library is present in the system-wide directory and a later build step wants to specifically link against a different version of that library in another path, the linker will choose the library from the first search directory it finds. If the linker doesn't find a library in any of the specified search directories, it falls back on system-wide paths, so we don't need to print the path we found libssh2 in if it is in one of those system paths. See rust-lang/libz-sys#50 for the same fix to libz that landed a while back. See also alexcrichton/curl-rust#441 for the same fix to libcurl-sys.
Adding system-wide library directories to the linker search path causes these
directories to be searched before other paths added by later crates. If a
library is present in the system-wide directory and a later crate wants to
specifically link against a different version of that library in another path,
the linker will choose the library from the first search directory it
finds. If the linker doesn't find a library in any of the specified search
directories, it falls back on system-wide paths, so we don't need to print the
path we found zlib in if it is in one of those system paths.
This resolves issue #49.