Description
This came up in sgrif/pq-sys#1. It seems when trying to run/test anything using beta or later this crate fails to run (not build) with the below error.
Note: I don't have DYLD_LIBRARY_PATH
set as an env var anywhere. It seems to be picking up the wrong libJPEG.dylib
in beta (/usr/local/lib
) instead of in the OSX library location (/System/Library/Frameworks/ImageIO.framework/Resources/...
). In part, I believe this to be due do the fact that the pg-sql
crate is adding native=/usr/local/lib
via -L
because that's where the postgresql libraries from homebrew end up being installed. Curiously though, this linking problem does not occur on stable, leading me to believe it is resolving to the proper libJPEG.dylib
instead of the one in /usr/local/lib
.
Running OSX 10.11.5.
Also, not sure if related or not, but I tried the workaround specified in #34754, codegen-units=1
, but it did not eliminate the error.
Beta (or nightly):
~/D/pq-sys git:master ❯❯❯ rustup override set beta
info: using existing install for 'beta-x86_64-apple-darwin'
info: override toolchain for '/Users/chris/Documents/pq-sys' set to 'beta-x86_64-apple-darwin'
beta-x86_64-apple-darwin unchanged - rustc 1.11.0-beta.1 (8dc253bcf 2016-07-05)
~/D/pq-sys git:master ❯❯❯ cargo test --verbose
Compiling pq-sys v0.2.1 (file:///Users/chris/Documents/pq-sys)
Compiling libc v0.2.14
Running `rustc build.rs --crate-name build_script_build --crate-type bin -g --out-dir /Users/chris/Documents/pq-sys/target/debug/build/pq-sys-683de9b8454d5f4b --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps`
Running `rustc /Users/chris/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.14/src/lib.rs --crate-name libc --crate-type lib -g --cfg feature=\"use_std\" --cfg feature=\"default\" -C metadata=1f3392fe1afd1313 -C extra-filename=-1f3392fe1afd1313 --out-dir /Users/chris/Documents/pq-sys/target/debug/deps --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --cap-lints allow`
Running `/Users/chris/Documents/pq-sys/target/debug/build/pq-sys-683de9b8454d5f4b/build-script-build`
Running `rustc src/lib.rs --crate-name pq_sys -g --test -C metadata=5b5cdff68186daa5 -C extra-filename=-5b5cdff68186daa5 --out-dir /Users/chris/Documents/pq-sys/target/debug --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib -L native=/usr/local/lib`
Running `rustc src/lib.rs --crate-name pq_sys --crate-type lib -g --out-dir /Users/chris/Documents/pq-sys/target/debug --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib -L native=/usr/local/lib`
Running `/Users/chris/Documents/pq-sys/target/debug/pq_sys-5b5cdff68186daa5`
dyld: Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /usr/local/lib/libJPEG.dylib
in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
error: Process didn't exit successfully: `/Users/chris/Documents/pq-sys/target/debug/pq_sys-5b5cdff68186daa5` (signal: 5, SIGTRAP: trace/breakpoint trap)
Caused by:
Process didn't exit successfully: `/Users/chris/Documents/pq-sys/target/debug/pq_sys-5b5cdff68186daa5` (signal: 5, SIGTRAP: trace/breakpoint trap)
~/D/pq-sys git:master ❯❯❯
Stable:
~/D/pq-sys git:master ❯❯❯ rustup override set stable
info: using existing install for 'stable-x86_64-apple-darwin'
info: override toolchain for '/Users/chris/Documents/pq-sys' set to 'stable-x86_64-apple-darwin'
stable-x86_64-apple-darwin unchanged - rustc 1.10.0 (cfcb716cf 2016-07-03)
~/D/pq-sys git:master ❯❯❯ cargo test --verbose
Fresh libc v0.2.14
Compiling pq-sys v0.2.1 (file:///Users/chris/Documents/pq-sys)
Running `rustc build.rs --crate-name build_script_build --crate-type bin -g --out-dir /Users/chris/Documents/pq-sys/target/debug/build/pq-sys-683de9b8454d5f4b --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps`
Running `/Users/chris/Documents/pq-sys/target/debug/build/pq-sys-683de9b8454d5f4b/build-script-build`
Running `rustc src/lib.rs --crate-name pq_sys --crate-type lib -g --out-dir /Users/chris/Documents/pq-sys/target/debug --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib -L native=/usr/local/lib`
Running `rustc src/lib.rs --crate-name pq_sys --crate-type lib -g --test -C metadata=5b5cdff68186daa5 -C extra-filename=-5b5cdff68186daa5 --out-dir /Users/chris/Documents/pq-sys/target/debug --emit=dep-info,link -L dependency=/Users/chris/Documents/pq-sys/target/debug -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib -L native=/usr/local/lib`
Running `/Users/chris/Documents/pq-sys/target/debug/pq_sys-5b5cdff68186daa5`
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured
Doc-tests pq_sys
Running `rustdoc --test /Users/chris/Documents/pq-sys/src/lib.rs --crate-name pq_sys -L dependency=/Users/chris/Documents/pq-sys/target/debug/deps -L dependency=/Users/chris/Documents/pq-sys/target/debug -L native=/usr/local/lib --extern libc=/Users/chris/Documents/pq-sys/target/debug/deps/liblibc-1f3392fe1afd1313.rlib --extern pq_sys=/Users/chris/Documents/pq-sys/target/debug/libpq_sys.rlib`
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured
I'm not sure of a smaller set to replicate. In order to get into this situation on a mac, you need to have done the following:
brew install postgres
brew install libjpeg
. This will add/usr/local/lib/libjpeg.dylib
which beta ends up linking to.
Also related otool output:
~/D/pq-sys git:master ❯❯❯ otool -L /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO:
/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 600.0.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0)
/System/Library/PrivateFrameworks/AppleVPA.framework/Versions/A/AppleVPA (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1259.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1258.1.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 728.10.0)
/System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)