Opened 6 years ago

Closed 5 years ago

#47773 closed enhancement (fixed)

libcryptopp @5.6.2: also install the dynamic library

Reported by: flyaaway@… Owned by: raphael-st (Raphael Straub)
Priority: Normal Milestone:
Component: ports Version: 2.3.3
Keywords: Cc:
Port: libcryptopp

Description (last modified by ryandesign (Ryan Schmidt))

$ sudo port install libcryptopp
--->  Fetching archive for libcryptopp
--->  Attempting to fetch libcryptopp-5.6.2_0.darwin_13.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/libcryptopp
--->  Attempting to fetch libcryptopp-5.6.2_0.darwin_13.x86_64.tbz2.rmd160 from http://mse.uk.packages.macports.org/sites/packages.macports.org/libcryptopp
--->  Installing libcryptopp @5.6.2_0
--->  Activating libcryptopp @5.6.2_0
--->  Cleaning libcryptopp
--->  Updating database of binaries
--->  Scanning binaries for linking errors
--->  No broken files found.
$ port contents libcryptopp | grep lib/
  /opt/local/lib/libcryptopp.a
$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
$ uname -a
Darwin mb.local 13.4.0 Darwin Kernel Version 13.4.0: Wed Mar 18 16:20:14 PDT 2015; root:xnu-2422.115.14~1/RELEASE_X86_64 x86_64

Change History (6)

comment:1 Changed 6 years ago by ryandesign (Ryan Schmidt)

Description: modified (diff)
Keywords: libcryptopp removed
Owner: changed from macports-tickets@… to raphael@…
Summary: libcryptopp.so missed in 5.6.2_0 port, only libcryptopp.a exist.libcryptopp @5.6.2: also install the dynamic library
Type: defectenhancement

comment:2 Changed 6 years ago by raphael-st (Raphael Straub)

Status: newassigned

comment:3 Changed 6 years ago by raphael-st (Raphael Straub)

Resolution: fixed
Status: assignedclosed

comment:4 Changed 5 years ago by cawka (Alex Afanasyev)

Please revert this patch or ensure that the shared library conforms to OS X:

  • extension is .dylib not .so
  • it contains proper rpath, pointing to ${prefix}/lib/libcryptopp.so, not just libcryptopp.so

The last part is actually critical for my project. When compiling, the linker prefers the dynamic library (according to my research, on OSX this behavior is hard-coded and cannot be changed), which includes an invalid entry to the shared libraries used section:

otool -L /opt/local/bin/<app>
/opt/local/bin/ndnping:
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1153.18.0)
	/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57031.20.26)
        ...
	libcryptopp.so (compatibility version 0.0.0, current version 0.0.0)
        ...
	/opt/local/lib/libsqlite3.0.dylib (compatibility version 9.0.0, current version 9.6.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)}}}

As a result, my package fails to work.

comment:5 Changed 5 years ago by cawka (Alex Afanasyev)

Resolution: fixed
Status: closedreopened

comment:6 in reply to:  4 Changed 5 years ago by raphael-st (Raphael Straub)

Resolution: fixed
Status: reopenedclosed

Replying to alexander.afanasyev@…:

Please revert this patch or ensure that the shared library conforms to OS X:

  • extension is .dylib not .so
  • it contains proper rpath, pointing to ${prefix}/lib/libcryptopp.so, not just libcryptopp.so

Thanks for your report. The portfile in r138213 patches the makefile so that the .dylib extension and the correct install name is used.

Note: See TracTickets for help on using tickets.