[prev in list] [next in list] [prev in thread] [next in thread] 

List:       fink-devel
Subject:    Re: [Fink-devel] Help with shlib
From:       Hanspeter Niederstrasser <fink () snaggledworks ! com>
Date:       2017-07-10 1:50:02
Message-ID: 8718b11d-7eaa-a826-cafb-a22147a59179 () snaggledworks ! com
[Download RAW message or body]

On 7/9/17 1:03 PM, Scott Hannahs wrote:
> 
> > On Jun 26, 2017, at 11:46 AM, Alexander Hansen <alexanderk.hansen@gmail.com> \
> > wrote: 
> > > On Jun 25, 2017, at 17:39, Scott Hannahs <sth@magnet.fsu.edu> 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
Fink-devel@lists.sourceforge.net
List archive:
https://sourceforge.net/p/fink/mailman/fink-devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic