mailRe: Temperature calibration & relax @ Mac OS X 10.7. 3 „Lion“


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Edward d'Auvergne on April 05, 2012 - 10:34:
Hi Ben,

Thank you for that info, that will really help in solving some of
these problems!  I never though that one of the issues is that of the
machine architecture.  This is obviously a multi-layer, i.e. not just
one failure point, problem with the py2app script for converting
Python programs/scripts into full Mac Applications
(http://wiki.python.org/moin/MacPython/py2app,
http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html).  I might
have to approach this in a number of ways, some fixes will probably
allow relax to run for some Mac users while others will not be so
lucky.  In the first attack, I will try to eliminate this TickCount
problem.  This seams to be a problem with program argument emulation
on the Mac with certain Python versions.  A solution is posted at
http://stackoverflow.com/questions/3461983/evt-tickcount-not-found-with-python2-6-on-osx-10-6-3,
where the suggested code is:

APP = ['MyApp.py']
OPTIONS = {
   'argv_emulation': False,
   ...
}

setup(
    app=APP,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

In relax's py2app setup.py script, the 'argv_emulation' is currently
set to True (see
http://svn.gna.org/viewcvs/*checkout*/relax/1.3/setup.py?revision=15481&content-type=text%2Fplain).
 relax currently requires arguments, but maybe I can hack the code to
catch this and skip the argument processing.  But only for this
situation as the prompt/scripting UI modes will be important for some
users.

This fix doesn't solve the problem of the py2app created relax app not
using the bundled Python version and internal Python modules, so some
users will still be affected by that.  For some people this is not an
issue while for others it causes relax to fail.

A third problem might be in the wxPython code, as was seen and
reported by Jack Howarth when creating the Fink distribution of relax
(see the threads starting at
https://mail.gna.org/public/relax-users/2012-03/msg00053.html and
https://mail.gna.org/public/relax-users/2012-04/msg00003.html, and
http://pdb.finkproject.org/pdb/browse.php?name=relax).  This will
probably also affect those who install relax from the sources
distribution file
(http://www.nmr-relax.com/download.html#Source_code_release).  The
problem might require a workaround inside the relax GUI code.  I will
try to tackle each problem one by one, and hopefully as each is solved
more and more users will have luck in running relax in GUI mode on the
Mac.

Cheers,

Edward


P. S.  For those users who can currently run the relax application in
GUI mode from the DMG file, these fixes should not affect you.



On 4 April 2012 18:58, Ben Eisenbraun <bene@xxxxxxxxxxxxxxxxxxx> wrote:
Hi Edward,

I am seeing the same issues reported by others.

 $ open /programs/i386-mac/relax/1.3.14/relax.app

Output in Console.app:

4/4/12 12:15:26.639 PM [0x0-0x18a28a1].com.nmr-relax.relax: Traceback (most 
recent call last):
4/4/12 12:15:26.639 PM [0x0-0x18a28a1].com.nmr-relax.relax:   File 
"/nfs/programs/i386-mac/relax/1.3.14/relax.app/Contents/Resources/__boot__.py",
 line 126, in <module>
4/4/12 12:15:26.640 PM [0x0-0x18a28a1].com.nmr-relax.relax:     
_argv_emulation()
4/4/12 12:15:26.640 PM [0x0-0x18a28a1].com.nmr-relax.relax:   File 
"/nfs/programs/i386-mac/relax/1.3.14/relax.app/Contents/Resources/__boot__.py",
 line 124, in _argv_emulation
4/4/12 12:15:26.640 PM [0x0-0x18a28a1].com.nmr-relax.relax:     
_get_argvemulator().mainloop()
4/4/12 12:15:26.640 PM [0x0-0x18a28a1].com.nmr-relax.relax:   File 
"/nfs/programs/i386-mac/relax/1.3.14/relax.app/Contents/Resources/__boot__.py",
 line 63, in mainloop
4/4/12 12:15:26.640 PM [0x0-0x18a28a1].com.nmr-relax.relax:     stoptime = 
Evt.TickCount() + timeout
4/4/12 12:15:26.640 PM [0x0-0x18a28a1].com.nmr-relax.relax: AttributeError: 
'module' object has no attribute 'TickCount'
4/4/12 12:15:26.715 PM relax: relax Error

This is a problem related to Carbon support in 32-bit vs 64-bit Python. I
can reproduce this on the command line in 10.6 and 10.7 like so:

 $ type python
python is hashed (/usr/bin/python)
 $ python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on 
darwin
Type "help", "copyright", "credits" or "license" for more information.
from Carbon import Evt
Evt.TickCount()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'TickCount'

And it's because the 64-bit Python doesn't have full Carbon support:

 $ export VERSIONER_PYTHON_PREFER_32_BIT=true
 $ python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:06)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on 
darwin
Type "help", "copyright", "credits" or "license" for more information.
from Carbon import Evt
Evt.TickCount()
278493166

Similar thread here:

http://stackoverflow.com/questions/3461983/evt-tickcount-not-found-with-python2-6-on-osx-10-6-3

I can run the relax binary directly if I force 32-bit:

 $ arch -i386 relax.app/Contents/MacOS/relax

And I can get the relax.app bundle to work if I lipo the relax binary:

 $ mv relax relax.orig
 $ lipo -thin i386 -output relax relax.orig

I tried various other ways of forcing 32-bitness for Python: lipo'ing the
python binaries, export VERISONER_PYTHON_PREFER_32_BIT=true,
LSArchitecturePriority in the Info.plist without effect.

-ben

--
| Ben Eisenbraun
| SBGrid Consortium                          | http://sbgrid.org       |
| Harvard Medical School                     | http://hms.harvard.edu  |



Related Messages


Powered by MHonArc, Updated Thu Apr 05 16:40:06 2012