Differences between revisions 4 and 13 (spanning 9 versions)
Revision 4 as of 2008-01-12 07:52:57
Size: 2329
Editor: PhilipJenvey
Comment: some updates, convert to rST
Revision 13 as of 2008-01-18 00:42:50
Size: 4006
Editor: PhilipJenvey
Comment: updates to another nose issue and clarify simplejson problems
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Getting Pylons (0.9.6.1) to run on Jython
=========================================
Pylons (0.9.6.1) on Jython Requirements/TODO
============================================
Line 6: Line 6:
* The ability to install Pylons and all its dependencies: Installing Pylons and its dependencies
--------------------------------------
Line 8: Line 9:
  * distutils and setuptools (Mostly finished, See `SetuptoolsOnJython`_)   * distutils and setuptools **(Mostly finished, See** `SetuptoolsOnJython`_ **)**
Line 10: Line 11:
Ensure all dependencies' tests pass:   * Ensure all dependencies' tests pass
Line 12: Line 13:
* Paste, PasteDeploy and PasteScript nose
----
Line 14: Line 16:
* Mako Pylons projects require nose, but most packages (including Pylons) use nose as their own test runners.
Line 16: Line 18:
  - mako uses the compiler module to parse Python code into AST. The compiler module is mostly pure Python code, but its guts are really the native parser module (which Jython lacks) requires:
Line 18: Line 20:
* Beaker   * optparse module **(added in r4018)**
Line 20: Line 22:
* nose   * a fix for the cell variable (variables used in closures) bug here: http://pylonshq.com/pasties/667 **(fixed in r4038)**
Line 22: Line 24:
  - nose requires the optparse module (which Jython does not include and whose tests currently fail, last time I checked) and compiler modules (compiler requires the parser module which Jython lacks). nose only needs the compiler module to use compiler.consts.CO_GENERATOR; until there's a parser, maybe jython could provide a broken compiler module that doesn't import parser   * fix for new.instancemethod not allowing a PyType as its class argument **(fixed in r4051)**
Line 24: Line 26:
* Routes   * fix for inspect.argspec not working (also needed for Pylons, among other things) **(fixed in r4053)**
Line 26: Line 28:
  - I got all of routes' tests to pass on Jython well over a year ago so I don't expect too much trouble here -pjenvey   * compiler package (and compiler requires the parser module which Jython lacks). nose only needs the compiler module to use compiler.consts.CO_GENERATOR; until there's a parser, maybe jython could provide a broken compiler module that doesn't import parser
Line 28: Line 30:
* WebHelpers Routes
------
All tests, except some which require paste.fixture (Paste is troublesome to import at this point), pass
Line 30: Line 34:
* FormEncode
Line 32: Line 35:
* simplejson Paste, PasteDeploy and PasteScript
----------------------------------
requires:
Line 34: Line 39:
  * `SetuptoolsOnJython`_ currently has trouble installing simplejson, because it attempts to compile its optional C extensions (that help performance). It expects to catch a distutils.errors.CCompilerError if the compilation fails, but Jython dies much earlier:   * modulefinder module (imported in paste/__init__.py). Jython currently lacks it, and modulefinder relies on reading code objects via marshal.load

  * subprocess module: if it doesn't exist (Python 2.3) it uses a version copied over from CPython 2.4 (paste.util.subprocess24). paste.util.subprocess24 dies on attempting to import fcntl, so Jython needs to provide subprocess

  * webbrowser module: paste.fixture imports it. Jython doesn't include it. It's a pretty simple module -- though it doesn't seem to work right on Jython when launching a console browser (like lynx or links). I think it's an os.system problem

Mako
----
requires:

  * compiler module: to parse Python code into AST. The compiler module is mostly pure Python code, but its guts are really the native parser module (which Jython lacks)

Beaker
------
requires:

  * Paste (for paste.fixture)
  * base64.b64encode: might die on an attempting to import b64encode in beaker.crypto.PBKDF2 (at least it does when the tests are run)

WebHelpers
----------
requires:

  * routes
  * simplejson

FormEncode
----------
requires:

  * gettext (which requires the locale module, which Jython lacks)

simplejson
----------

  * `SetuptoolsOnJython`_ (actually distutils) currently has trouble installing simplejson, because it attempts to compile its optional C extensions (that help performance). It expects to catch a distutils.errors.CCompilerError if the compilation fails, but Jython dies much earlier:
Line 40: Line 80:
* decorator decorator
---------
Line 42: Line 83:
  - Note: decorators aren't currently supported in Jython, however the decorator module doesn't actually use decorators (works on CPython 2.3)   * Note: decorators aren't currently supported in Jython, however the decorator module doesn't actually use decorators (works on CPython 2.3)
Line 44: Line 85:
Later down the road: Later down the road
===================
Line 46: Line 88:
* SQLAlchemy SQLAlchemy
----------
Line 48: Line 91:
  - The [http://www.sqlalchemy.org/trac/ticket/672 Dialect Refactor II] ticket will need to be implemented to properly support using SQLAlchemy via Jython's DBAPI jdbc driver, [http://jython.org/Project/userguide.html#database-connectivity-in-jython zxJDBC].
  - Frank Wierzbicki has done some preliminary work on using SQLAlchemy with Jython, info [http://groups.google.com/group/sqlalchemy/browse_frm/thread/d60db24fe1683a41/09320033f406d78b?hl=en&lnk=gst here], and is scheduled to give a talk at PyCon 2008: "Database development with Jython, SQLAlchemy, and Hibernate"
  * The `Dialect Refactor II <http://www.sqlalchemy.org/trac/ticket/672>`_ ticket will need to be implemented to properly support using SQLAlchemy via Jython's DBAPI jdbc driver, `zxJDBC <http://jython.org/Project/userguide.html#database-connectivity-in-jython>`_.
  
  *
Frank Wierzbicki has done some preliminary work on using SQLAlchemy with Jython, info `here <http://groups.google.com/group/sqlalchemy/browse_frm/thread/d60db24fe1683a41/09320033f406d78b?hl=en&lnk=gst>`_, and is scheduled to give a talk at PyCon 2008: "Database development with Jython, SQLAlchemy, and Hibernate"

Turbogears 2
------------

  * Jim Baker has already started playing with Genshi on the `Jython modern branch <http://fisheye3.cenqua.com/browse/jython/branches/modern>`_

Pylons (0.9.6.1) on Jython Requirements/TODO

Installing Pylons and its dependencies

  • distutils and setuptools (Mostly finished, See SetuptoolsOnJython )
  • Ensure all dependencies' tests pass

nose

Pylons projects require nose, but most packages (including Pylons) use nose as their own test runners.

requires:

  • optparse module (added in r4018)
  • a fix for the cell variable (variables used in closures) bug here: http://pylonshq.com/pasties/667 (fixed in r4038)
  • fix for new.instancemethod not allowing a PyType as its class argument (fixed in r4051)
  • fix for inspect.argspec not working (also needed for Pylons, among other things) (fixed in r4053)
  • compiler package (and compiler requires the parser module which Jython lacks). nose only needs the compiler module to use compiler.consts.CO_GENERATOR; until there's a parser, maybe jython could provide a broken compiler module that doesn't import parser

Routes

All tests, except some which require paste.fixture (Paste is troublesome to import at this point), pass

Paste, PasteDeploy and PasteScript

requires:

  • modulefinder module (imported in paste/__init__.py). Jython currently lacks it, and modulefinder relies on reading code objects via marshal.load
  • subprocess module: if it doesn't exist (Python 2.3) it uses a version copied over from CPython 2.4 (paste.util.subprocess24). paste.util.subprocess24 dies on attempting to import fcntl, so Jython needs to provide subprocess
  • webbrowser module: paste.fixture imports it. Jython doesn't include it. It's a pretty simple module -- though it doesn't seem to work right on Jython when launching a console browser (like lynx or links). I think it's an os.system problem

Mako

requires:

  • compiler module: to parse Python code into AST. The compiler module is mostly pure Python code, but its guts are really the native parser module (which Jython lacks)

Beaker

requires:

  • Paste (for paste.fixture)
  • base64.b64encode: might die on an attempting to import b64encode in beaker.crypto.PBKDF2 (at least it does when the tests are run)

WebHelpers

requires:

  • routes
  • simplejson

FormEncode

requires:

  • gettext (which requires the locale module, which Jython lacks)

simplejson

  • SetuptoolsOnJython (actually distutils) currently has trouble installing simplejson, because it attempts to compile its optional C extensions (that help performance). It expects to catch a distutils.errors.CCompilerError if the compilation fails, but Jython dies much earlier:

File "/Users/pjenvey/src/java/jython-trunk/dist/Lib/distutils/command/build_ext.py", line 598, in get_ext_filename

TypeError: cannot concatenate 'str' and 'NoneType' objects

decorator

  • Note: decorators aren't currently supported in Jython, however the decorator module doesn't actually use decorators (works on CPython 2.3)

Later down the road

SQLAlchemy

  • The Dialect Refactor II ticket will need to be implemented to properly support using SQLAlchemy via Jython's DBAPI jdbc driver, zxJDBC.
  • Frank Wierzbicki has done some preliminary work on using SQLAlchemy with Jython, info here, and is scheduled to give a talk at PyCon 2008: "Database development with Jython, SQLAlchemy, and Hibernate"

Turbogears 2

PylonsOnJython (last edited 2009-09-14 22:04:24 by PhilipJenvey)