Re: Help with shlib
Hanspeter Niederstrasser <[email protected]> Sun, 9 Jul 2017 20:50:02 -0500
| Newsgroups | gmane.os.apple.fink.devel |
|---|---|
| Organization | Snaggled Works |
| Message-ID | <[email protected]> |
On 7/9/17 1:03 PM, Scott Hannahs wrote: > >> On Jun 26, 2017, at 11:46 AM, Alexander Hansen <[email protected]> wrote: >> >>> On Jun 25, 2017, at 17:39, Scott Hannahs <[email protected]> wrote: >>> >>> So do I need to modify the install phase to install the /sw/lib/libcryptopp.5.dylib file? Should it be a hard link to the libcryptopp.dylib or should that file not exist. >>> >> >> The preferred option is actually the reverse: real libcryptopp.5.dylib with libcryptopp.dylib as a symbolic link. >> >>> When there are two split off packages, I think I have the following >>> all packages: Install.txt License.txt Readme.txt in share/doc/libcryptopp5 >>> package: cryptest.exe in /bin testdata in share/libcryptopp/ headers in include/libcryptopp >>> package-shlib: lib/libcryptopp.5.dylib and libcryptopp.dylib (and maybe libcryptopp.a but I think I can delete it??) >> >> Ideally, package-shlibs should only contain the shared library/libraries and the DocFiles you noted earlier. >> >>> package-dev: headers in include/libcryptopp >> >> If libcryptopp.dylib is a symlink as I suggested above, it needs to go here. This structure helps us to have multiple versions of the library available for builds, since by swapping the -dev package we can change what -lFOO on a build line really points to. >> >> Moving rather than is intentional, since you aren’t supposed to have the same file provided by multiple splitoffs in a package build. We’d wind up with files duplicated between the main package and splitoffs, or we’d have to go back and delete them after the fact. >> >> Make sure that you didn’t declare it in multiple Files lines, and otherwise check what’s actually in the directory. > > I seem to still be missing something essential here. I have separated the symbolic link to the -dev split off and renamed the package to contain the major version number. > > I can’t seem to get a match between the shilib and the file name. I have set it up so that the symbolic link gets made and then installed by the -dev split off. But the deb package does not pass the test. I am having a match problem for the files: and shilibs: fields. > > I have tried various different prefixes and relative and absolute paths but still do not seem to get a clean DEB file. I have used as templates some of the other .info files in lib. Such as canna.info and lhasa.info. > > Currently I get a mismatch: > > Validating .deb dir /sw/src/fink.build/root-libcryptopp5-shlibs-5.6.5-23... > Error: Name '/sw/lib/libcryptopp.5.dylib' specified in Shlibs does not match install_name '/sw/src/fink.build/root-libcryptopp5-5.6.5-23/sw/lib/libcryptopp.5.dylib' > Error: package contains the shared library > /sw/lib/libcryptopp.5.dylib > but the corresponding install_name and compatibility_version > %p/src/fink.build/root-libcryptopp5-5.6.5-23/sw/lib/libcryptopp.5.dylib 5.6.0 > are not listed in the Shlibs field. See the packaging manual. The real libcryptopp.5.dylib file needs to have its install_name fixed (this is a bug in upstream's makefile). You can either edit the Makefile to do it properly, or run install_name_tool at the end of InstallScript: to give it the proper install_name. The command for the latter option would be something like: install_name_tool -id %p/lib/libcryptopp.5.dylib %i/lib/libcryptopp.5.dylib This fixes the file in "%i/lib/libcryptopp.5.dylib" to have an install_name of "%p/lib/libcryptopp.5.dylib". What files are in the base libcryptopp5 package? If there are any executables, you need to make sure they show linkage (via otool -L) to the file in %p and not the file in %i. If there are files there that link to the library, it might be easier to fix the build process than to fix the results after the build. Hanspeter ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Fink-devel mailing list [email protected] List archive: https://sourceforge.net/p/fink/mailman/fink-devel Subscription management: https://lists.sourceforge.net/lists/listinfo/fink-devel