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

Alexander Hansen <[email protected]>
Newsgroups gmane.os.apple.fink.devel
Message-ID <[email protected]>
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.


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

------------------------------------------------------------------------------

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