Re: llvm35/clang35 validation requires @rpath acceptance in shlib validation

Alexander Hansen <[email protected]>
Newsgroups gmane.os.apple.fink.devel
Organization Fink Core Team
Message-ID <[email protected]>
On 11/8/14, 1:03 PM, David Fang wrote:
> Alex,
>
>> On Nov 4, 2014, at 11:07 AM, David Fang <[email protected]> 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
[email protected]
List archive:
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.