Ticket #25475 (closed defect: fixed)
cmake: libidn dependency should be depends_lib not depends_build
| Reported by: | snc@… | Owned by: | css@… |
|---|---|---|---|
| Priority: | Normal | Milestone: | |
| Component: | ports | Version: | 1.9.99 |
| Keywords: | Cc: | michaelld@…, ryandesign@… | |
| Port: | cmake |
Description (last modified by snc@…) (diff)
cmake's dependency on libidn is needed in depends_lib as well. Without libidn installed, using cmake results in missing dylib errors.
dyld: Library not loaded: /opt/local/lib/libidn.11.dylib Referenced from: /opt/local/bin/cmake Reason: image not found
Attachments
Change History
comment:2 Changed 3 years ago by css@…
- Status changed from new to assigned
I can add this after the holiday weekend.
comment:3 Changed 3 years ago by michaelld@…
I'm running MacPorts (latest SVN) on 10.5.8 i386. 'cmake' compiles and works for me, with or without 'libidn' being included as depends_lib (i.e., as the Portfile is now or with "depends_lib port:libidn" added), with or without 'libidn' being installed or active. If 'libidn' isn't installed, then port installs it & if 'libidn' isn't active then port activates it -- before trying to compile 'cmake'. I think this is normal behavior for 'port'. Is there a more extended log file, or other context info?
comment:5 Changed 3 years ago by snc@…
Try deactivating the port or make an archive of it as I do. Then uninstall all the build dependencies it had (for example, use port_cutleaves). Now try to activate the port. It will not have the dependency it needs to activate the port as it was declared as only needed for building and is therefore "released" after that phase and can be uninstalled.
comment:6 Changed 3 years ago by michaelld@…
Not sure if I understand what you want me to try. I changed the cmake Portfile to include "depends_lib port:libidn", bumped the revision, and did 'portindex' at the top level to get the change registered. Here's my shell log, following what I think you said to do. I get this same logfile no matter which Portfile I use (original or with the depends_lib added) ... maybe I don't understand the issue?
% port installed cmake libidn The following ports are currently installed: cmake @2.8.1_4 (active) libidn @1.19_0 (active) % port deps cmake Full Name: cmake @2.8.1_4 Build Dependencies: libidn, openssl Library Dependencies: libidn % which cmake /opt/local/bin/cmake % cmake --version cmake version 2.8.1 % sudo port deactivate cmake ---> Deactivating cmake % sudo port uninstall libidn ---> Unable to uninstall libidn 1.19_0, the following ports depend on it: ---> wget ---> curl ---> kdelibs4 ---> cmake Error: port uninstall failed: Please uninstall the ports that depend on libidn first. % sudo port -f uninstall libidn ---> Unable to uninstall libidn 1.19_0, the following ports depend on it: ---> wget ---> curl ---> kdelibs4 ---> cmake Warning: Uninstall forced. Proceeding despite dependencies. ---> Deactivating libidn @1.19_0 ---> Uninstalling libidn @1.19_0 % sudo port activate cmake ---> Activating cmake % which cmake /opt/local/bin/cmake % cmake --version dyld: Library not loaded: /opt/local/lib/libidn.11.dylib Referenced from: /opt/local/bin/cmake Reason: image not found Trace/BPT trap % sudo port install libidn ---> Computing dependencies for libidn ---> Fetching libidn ---> Verifying checksum(s) for libidn ---> Extracting libidn ---> Configuring libidn ---> Building libidn ---> Staging libidn into destroot ---> Installing libidn @1.19_0 ---> Activating libidn @1.19_0 ---> Cleaning libidn % which cmake /opt/local/bin/cmake % cmake --version cmake version 2.8.1
comment:7 Changed 3 years ago by ryandesign@…
- Cc ryandesign@… added
- Summary changed from cmake missing dependency to cmake: libidn dependency should be depends_lib not depends_build
cmake links with libidn, as evidenced by otool -L:
$ otool -L /opt/local/bin/cmake /opt/local/bin/cmake: /opt/local/lib/libidn.11.dylib (compatibility version 18.0.0, current version 18.2.0) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.29.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
Thus cmake's dependency on libidn should be in depends_lib, not in depends_build.
The libidn dependency was added at the same time as the openssl dependency, in #20532. But there we see cmake was also linking with openssl's libraries, which it isn't now. So maybe the openssl dependency should now be removed.
cmake should also be updated to 2.8.2. I will attach a patch to do all these things shortly, after I've tested it builds.
comment:8 Changed 3 years ago by ryandesign@…
Well, here's a patch. cmake now links with openssl again, but with the system's openssl. So I removed the openssl dependency. And ccmake links with the system's ncurses. Bleh.
$ otool -L /opt/local/bin/ccmake /opt/local/bin/ccmake: /usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) /usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) /opt/local/lib/libidn.11.dylib (compatibility version 18.0.0, current version 18.2.0) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.29.0) /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
I say we commit this now, then deal with getting it to link with MacPorts openssl and ncurses in a separate ticket later.
comment:9 Changed 3 years ago by css@…
Returning from more travel, but this patch looks ok to me. I'll verify a build today.
comment:10 Changed 3 years ago by css@…
- Status changed from assigned to closed
- Resolution set to fixed

