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