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.


-- 
Alexander Hansen, Ph.D.
Fink User Liaison

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