577
Comment: setuptools on jython status
|
2624
we now have file descriptors and mkstemp, update status
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Setuptools needs: | Setuptools requirements: |
Line 3: | Line 3: |
* PEP 302 (added in Jython 2.2) * PEP 273 (the zipimport module) - Jython's ZipFileImporter is somewhat different that the CPython zipimport module -- it's not a module, and it does not maintain its own _zip_importer_cache (which setuptools utilizes) apart from sys.path_importer_cache |
* PEP 302 style zipimport module '''''Added in r3463''''' * number of misc. Jython bug fixes '''''most already committed''''' * file descriptor support for tempfile.mkstemp and os.open ''''''Added in r3711'''''' |
Line 7: | Line 9: |
- The Jython zipimport machinery is somewhat different: ZipFileImporter only imports zips if they're SyspathArchives: currently .zips and .jars * distutils - requires this small patch: http://pylonshq.com/pasties/390 (jython's sys.executable is None) |
* tempfile.mkstemp ''''''Added in r3712'''''' We don't have: * the kicker, a working os.chdir. I hacked together [http://hg.underboss.org/jython-pjenvey/rev/51246729a616 a really quick version of this ], and setuptools was able to get pretty far at installing Pylons. Pylons itself and a number of its dependencies installed fine, but the process died installing the decorator module due to marshal raising a KeyError * working marshal. setuptools uses marshal.load, and there's some bugs with our current marshaller * tarfile module. This requires [http://hg.underboss.org/jython-pjenvey/rev/3507a9b953fa a small patch to PyString] to work for setuptools. I believe it may require some additions to the os module for test_tarfile.py to pass * a valid sys.executable. required by setuptools and distutils for spawning subprocesses. It's impossible to determine argv[0] from java: I'm thinking the jython executable should pass this information along to Jython (java -Dpython.executable=$0) * distutils: requires [http://hg.underboss.org/jython-pjenvey/rev/1026fe32c01c a number of small patches]: - distutils metadata for the os.name == 'java' (like path names, default bdist type, etc) - a jython spawn-like function: "error: don't know how to spawn programs on platform 'java'". os.system works as a replacement - a valid sys.executable * imp.acquire/release_lock This is just a simple lock, but may have to be used by internal imp operations. I'm not sure * setuptools runs a test to ensure .pth files work by running "sys.executable -E -c pass". -E is ignore environment on CPython, but is different on Jython (takes an argument): -E codec : Use a different codec the reading from the console. * a site-packages dir (jython needs to include it on sys.path by default) * os.chmod. This can be implemented with JNA. We can still support setuptools on deployments lacking JNA if we submit a patch back to setuptools to only use chmod if it exists Possibly a small upstream patch to setuptools, this includes so far: * os.lstat setuptools cut and pasted shutil's rmtree from CPython 2.3, which uses lstat to check for directories. We can support an os.stat that fills in st_mode's directory bit, but what about lstat? We may want to submit a patch to setuptools to avoid lstat |
Setuptools requirements:
PEP 302 style zipimport module Added in r3463
number of misc. Jython bug fixes most already committed
file descriptor support for tempfile.mkstemp and os.open Added in r3711
tempfile.mkstemp Added in r3712
We don't have:
the kicker, a working os.chdir. I hacked together [http://hg.underboss.org/jython-pjenvey/rev/51246729a616 a really quick version of this ], and setuptools was able to get pretty far at installing Pylons. Pylons itself and a number of its dependencies installed fine, but the process died installing the decorator module due to marshal raising a KeyError
- working marshal. setuptools uses marshal.load, and there's some bugs with our current marshaller
tarfile module. This requires [http://hg.underboss.org/jython-pjenvey/rev/3507a9b953fa a small patch to PyString] to work for setuptools. I believe it may require some additions to the os module for test_tarfile.py to pass
- a valid sys.executable. required by setuptools and distutils for spawning subprocesses. It's impossible to determine argv[0] from java: I'm thinking the jython executable should pass this information along to Jython (java -Dpython.executable=$0)
distutils: requires [http://hg.underboss.org/jython-pjenvey/rev/1026fe32c01c a number of small patches]:
- - distutils metadata for the os.name == 'java' (like path names, default bdist type, etc) - a jython spawn-like function: "error: don't know how to spawn programs on platform 'java'". os.system works as a replacement - a valid sys.executable
- imp.acquire/release_lock
- This is just a simple lock, but may have to be used by internal imp operations. I'm not sure
- setuptools runs a test to ensure .pth files work by running "sys.executable -E -c pass". -E is ignore environment on CPython, but is different on Jython (takes an argument):
- -E codec : Use a different codec the reading from the console.
- a site-packages dir (jython needs to include it on sys.path by default)
- os.chmod. This can be implemented with JNA. We can still support setuptools on deployments lacking JNA if we submit a patch back to setuptools to only use chmod if it exists
Possibly a small upstream patch to setuptools, this includes so far:
- os.lstat setuptools cut and pasted shutil's rmtree from CPython 2.3, which uses lstat to check for directories. We can support an os.stat that fills in st_mode's directory bit, but what about lstat? We may want to submit a patch to setuptools to avoid lstat