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

-- 
David Fang
http://www.csl.cornell.edu/~fang/


------------------------------------------------------------------------------
_______________________________________________
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