On 11/8/14, 3:33 PM, David Fang wrote: > On Sat, 8 Nov 2014, Alexander Hansen wrote: > >> 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. > > Did any of the other split-offs trigger that diagnostic? All shlib > split-offs follow the same form. >
Yeah, they all did. -- 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