2009/6/27 Dr. David Kirkby <david.kir...@onetel.net>: > > John H Palmieri wrote: >> >> >> On Jun 27, 6:50 pm, "Dr. David Kirkby" <david.kir...@onetel.net> >> wrote: >>>> #!/usr/bin/bash >>>> if [ `uname` = "SunOS" -a "`ld --version 2>&1 | grep GNU`" = "" ]; then >>>> echo "Solaris system. The linker is NOT the GNU linker" >>>> echo "The correct compiler flags are '-Wl,-h,'" >>>> elif [ `uname` = "darwin" ]; then >>>> echo "OS X" >>>> echo "Correct compiler flags are '-Wl,-h,'" >>>> else >>>> echo "Not OSX, or Solaris with the Sun linker" >>>> echo "The correct flags are '-Wl,-soname,'" >>>> fi >>> Actually, what i put above is printing the wrong flags for OS X, but you >>> should see what I mean. I want something like this, which returns the >>> right flags in python. >>> >>> #!/usr/bin/bash >>> if [ `uname` = "SunOS" -a "`ld --version 2>&1 | grep GNU`" = "" ]; then >>> echo "Solaris system. The linker is NOT the GNU linker" >>> echo "The correct compiler flags are '-Wl,-h,'" >>> elif [ `uname` = "darwin" ]; then >>> echo "OS X" >>> echo "Correct compiler flags are -Wl,-dylib_install_name -Wl," >>> else >>> echo "Not OSX, or Solaris with the Sun linker" >>> echo "The correct flags are '-Wl,-soname,'" >>> fi >> >> I'm not exactly sure what you're looking for, but maybe try this: >> >> (interactively) >> >> sage: import os >> sage: os.uname() >> ('Darwin', >> 'Macintosh.local', >> '9.7.0', >> 'Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009; >> root:xnu-1228.12.14~1/RELEASE_I386', >> 'i386') >> >> os.environ and os.system('ld --version') might also be helpful. In a >> python file: >> >> >> import os >> >> sysname = os.uname()[0] >> ld_version = (something involving os.system('ld --version')) >> if sysname == 'Darwin' and ld_version == blahblahblah: >> print "hello, this is Darwin" >> elif sysname == 'Solaris': # I don't really know what the right thing >> is for sysname here >> print "solaris" >> else: >> print "other system" >> >> See <http://docs.python.org/library/os.html> for more on the Python os >> module. >> >> John > > Thanks john > > I was hoping to try to make the minimum changes to the code which > exists, which seems almost what I want, but I somehow need to add the > test. I assume this stuff below, which is the polybori file, defines > some function which gets called elsewhere. I tried playing interactively > with it, but can't seem to work out what is going on. > > def sonameprefix(env): > if env['PLATFORM']=="darwin": > return "-Wl,-dylib_install_name -Wl," > else: > return '-Wl,-soname,'
print debugging time! (although this is not really debugging) Change the function to this: def sonameprefix(env): print "####### LOOK HERE :", env['PLATFORM'] if env['PLATFORM']=="darwin": return "-Wl,-dylib_install_name -Wl," else: return '-Wl,-soname,' Run it under solaris and note the value that is printed in the output. That is the platform name. Then change the function to this: def sonameprefix(env): if env['PLATFORM']=="darwin": return "-Wl,-dylib_install_name -Wl," elif env['PLATFORM']==<what you found>: if 'GNU' in os.system('ld --version'): return <GNU flags> else: return <non-GNU flags> else: return '-Wl,-soname,' And it should work. Arnaud P.S. Don't copy and paste the code that I wrote since I am certain the indentation doesn't match because it was typed in the mail client. > I've used the 'os' module before, but the code in polybori seems to do > it another way. I don't really want to change it too much, since not > understanding it, I'm more likely to do harm than good. > > dave > > > > >> > > > > > -- La brigade SnW veut vous recruter - http://brigade.snw.googlepages.com --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---