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