yeah I tried to build something with flat_namespace today just so I could see the symbols file but the validator wouldn’t pass, I guess I could have turned off -m though ;) I’ll try again since I just thought of that now. --- TS http://www.southofheaven.org/ Life begins and ends with chaos, live between the chaos!
> On Apr 28, 2015, at 3:15 PM, Jack Howarth <howarth.at.f...@gmail.com> wrote: > > Note that we are using the absence of TWOLEVEL in the otool -hv output > in Validation.pm... > > if (open (OTOOL, "$otool -hv '$dylib_temp' |")) > { > <OTOOL>; <OTOOL>; <OTOOL>; # > skip first three lines > unless ( <OTOOL> =~ /TWOLEVEL/ ) { > print "Error: > $dylib_temp appears to have been linked using a flat namespace.\n"; > print " If this > package BuildDepends on libtool2, make sure that you use\n"; > print " > BuildDepends: libtool2 (>= 2.4.2-4).\n"; > print " and use > autoreconf to regenerate the configure script.\n"; > print " If the > package doesn't BuildDepend on libtool2, you'll need to\n"; > print " update > its build procedure to avoid passing\n"; > print " > -Wl,-flat_namespace\n"; > print " when > linking libraries.\n"; > $looks_good = 0; > } > close (OTOOL); > } > > On Tue, Apr 28, 2015 at 5:12 PM, Jack Howarth <howarth.at.f...@gmail.com> > wrote: >> There are a couple of trivial tests for flat_namespace linkage. >> >> % /Library/Developer/CommandLineTools/usr/bin/dyldinfo -bind >> /sw/lib/openmpi/libmpi.1.dylib >> bind information: >> segment section address type addend dylib >> symbol >> __DATA __got 0x001CC000 pointer 0 flat-namespace >> _ADIOI_DFLT_ERR_HANDLER >> __DATA __got 0x001CC008 pointer 0 flat-namespace >> _ADIOI_Datarep_head >> >> or >> >> % otool -hv /sw/lib/openmpi/libmpi.1.dylib >> /sw/lib/openmpi/libmpi.1.dylib: >> Mach header >> magic cputype cpusubtype caps filetype ncmds sizeofcmds flags >> MH_MAGIC_64 X86_64 ALL 0x00 DYLIB 17 1888 >> DYLDLINK NO_REEXPORTED_DYLIBS >> >> where the absence of TWOLEVEL indicates flat_namespace linkage... >> >> % otool -hvi /sw/lib/libfftw3.3.dylib >> /sw/lib/libfftw3.3.dylib: >> Mach header >> magic cputype cpusubtype caps filetype ncmds sizeofcmds flags >> MH_MAGIC_64 X86_64 ALL 0x00 DYLIB 15 1768 >> NOUNDEFS DYLDLINK TWOLEVEL NO_REEXPORTED_DYLIBS >> >> On Tue, Apr 28, 2015 at 1:46 PM, TheSin <the...@southofheaven.org> wrote: >>> if we upgrade to my PR I think we could use the symbols files in the dpkg >>> info die to find flat libs, I’m not 100% certain as I’d need an example to >>> test, but if flat_namespace creates a symbol it would be possible, it could >>> even be a trigger to process and sort all libs known to use flat_namespace, >>> then just check that. Either options is pretty easy to do. >>> --- >>> TS >>> http://www.southofheaven.org/ >>> Life begins and ends with chaos, live between the chaos! >>> >>>> On Apr 28, 2015, at 11:14 AM, Alexander Hansen >>>> <alexanderk.han...@gmail.com> wrote: >>>> >>>> >>>>> On Apr 28, 2015, at 09:41, Alexander Hansen <alexanderk.han...@gmail.com> >>>>> wrote: >>>>> >>>>> >>>>>> On Apr 28, 2015, at 09:36, Jack Howarth <howarth.at.f...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> Looking at the code, it seem we would have to do this check in sub >>>>>> validate_dpkg_file and use global boolean called >>>>>> skip_flat_namespace_check or such. In validate_dpkg_file, regex check >>>>>> $dpkg_filename against both openmpi-shlibs_*.deb or openmpi_*.deb. If >>>>>> either match, set skip_flat_namespace_check to true >>>>>> and otherwise to false. Then add skip_flat_namespace_check as a >>>>>> conditional in the... >>>>>> >>>>>> if (open (OTOOL, "$otool -hv '$dylib_temp' |")) { >>>>>> >>>>>> state that controls the flat namespace checks on each file. >>>>>> >>>>> >>>>> As Daniel said, adding a new .info field (if that’s what you mean by >>>>> global boolean) involves adding on another hack to the .deb control field >>>>> for 2 packages out of more than 10000. For something that end-users >>>>> never see. >>>>> >>>>> It’d be easier just to get Brendan to whitelist the packages for his auto >>>>> builder. >>>>> -- >>>>> Alexander Hansen, Ph.D. >>>>> Fink User Liaison >>>>> >>>> >>>> Oh wait, I re-parsed that, so I think I understand better what you’re >>>> getting at. And I don’t think it will work as intended, since I believe >>>> $validate_dpkg_file is run only on actual .debs and not on root >>>> directories before they get packed. >>>> >>>> In principle we could just check individual dylib’s names against a >>>> whitelist of filename patterns and if they match we can skip the >>>> flat_namespace check via a ‘next’. >>>> >>>> -- >>>> Alexander Hansen, Ph.D. >>>> Fink User Liaison >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> One dashboard for servers and applications across Physical-Virtual-Cloud >>>> Widest out-of-the-box monitoring support with 50+ applications >>>> Performance metrics, stats and reports that give you Actionable Insights >>>> Deep dive visibility with transaction tracing using APM Insight. >>>> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y >>>> _______________________________________________ >>>> 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 >>> ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ 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