On 11/8/14, 1:03 PM, David Fang wrote:
> Alex,
>
>> On Nov 4, 2014, at 11:07 AM, David Fang <f...@csl.cornell.edu> wrote:
>>
>>> Hi all,
>>>      Sitting in my experimental tree is a draft of llvm35's packaging
>>> that bootstraps (much like its predecessor llvm34), but fails Shlib
>>> validation because the install_names for shlibs all start with @rpath
>>> (or
>>> on older darwin @executable_path or @loader_path).  This was a
>>> decision by
>>> upstream build maintainers that allows this package to be
>>> binary-relocatable, even though fink makes no such guarantees about its
>>> packages -- fink's remain in fixed install locations.
>>> dmacks and akh began to look into a patch that would allow this to pass
>>> validation.  Can you guys comment on the status/issues/obstacles?
>>> Such a fix would unblock llvm35 from hitting dists.
>>>
>>> Thanks!
>>>
>>> Fang
>>>
>>> --
>>> David Fang
>>> http://www.csl.cornell.edu/~fang/
>>>
>>
>>
>> Here?s the change I injected thus far:
>>
>> diff --git a/perlmod/Fink/Validation.pm b/perlmod/Fink/Validation.pm
>> index 29fc4ab..a5010dd 100644
>> --- a/perlmod/Fink/Validation.pm
>> +++ b/perlmod/Fink/Validation.pm
>> @@ -2198,12 +2198,12 @@ sub _validate_dpkg {
>>                                        <OTOOL>; # skip first line
>>                                        my ($libname, $compat_version)
>> = <OTOOL> =~ /^\s*(\S+)\s*\(compatibility version ([\d\.]+)/;
>>                                        close (OTOOL);
>> -                                       if ($libname !~ /^\//) {
>> +                                       if (($libname !~ /^\//) and
>> ($libname !~ /\@.*path\//)) {
>>                                                print "Error: package
>> contains the shared library\n";
>>                                                print "
>> $dylib\n";
>>                                                print "       but the
>> corresponding install_name\n";
>>                                                print "
>> $libname\n";
>> -                                               print "       is not
>> an absolute pathname.\n";
>> +                                               print "       is not
>> an absolute pathname or runtime path.\n";
>>                                                $looks_good = 0;
>>                                        } elsif (not exists
>> $deb_shlibs->{$libname}) {
>>                                                $libname =~
>> s/^$basepath/%p/;
>>
>> And the validator moves on:
>>
>> Validating .deb file
>> /sw/fink/debs/polly35-shlibs_3.5.0-0_darwin-x86_64.deb...
>> Error: package contains the shared library
>>          /sw/opt/llvm-3.5/lib/libPolly.dylib
>>       but the corresponding install_name and compatibility_version
>>          @rpath/libPolly.dylib 0.0.0
>>       are not listed in the Shlibs field.  See the packaging manual.
>
> Thanks for working on this patch.
> I'm a little puzzled about the libPolly error, since my .info file has:
>
>      Package: polly35-shlibs
>      ...
>          Files: <<
>                  opt/llvm-3.5/lib/LLVMPolly.so
>                  opt/llvm-3.5/lib/libPolly*.dylib
>          <<
>          DocFiles: tools/polly/LICENSE.txt tools/polly/CREDITS.txt
>          Shlibs: <<
>                  !%p/opt/llvm-3.5/lib/LLVMPolly.so
>                  !%p/opt/llvm-3.5/lib/libPolly.dylib
>          <<
>
> Am I missing some obvious fix?
>
> Fang
>

I assumed that it was because Shlibs entries refer to the install_name, 
which happens not to map onto the filename when using @rpath and 
friends.  Maybe

Shlibs: <<
        !@rpath/LLVMPolly.so
        !@rpath/LLVMPolly.dylib
<<

would do the job.  I'll check that.
-- 
Alexander Hansen, Ph.D.
Fink User Liaison
My package updates: http://finkakh.wordpress.com/

------------------------------------------------------------------------------
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
List archive:
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to