Mercurial 1.8.3 on Jython 2.5.2

Sébastien Deleuze seb at deleuze.fr
Thu May 12 20:32:21 UTC 2011


If I use JNA that already do a Java to native function mapping for all
main platforms, I will have a cross platform Mercurial running on
Jython : http://jna.java.net/#dynamic

On Thu, May 12, 2011 at 4:26 PM, Matt Mackall <mpm at selenic.com> wrote:
> On Thu, 2011-05-12 at 10:02 +0200, Martin Geisler wrote:
>> Sébastien Deleuze <seb at deleuze.fr> writes:
>>
>> > OK, understood, I tried to import java module, wich has nothing to do
>> > with posix ou windows modules.
>>
>> Ah, so the java module is from Jython -- makes sense now that I think
>> about it :)
>>
>> > I also tried with import windows, but if I do I got error sine it uses
>> > ctypes:
>> >
>> >     _kernel32 = ctypes.windll.kernel32
>> >   File "C:\jython2.5.2\Lib\site-packages\mercurial\demandimport.py", line 76, in
>> >  __getattribute__
>> >     return getattr(self._module, attr)
>> > AttributeError: 'module' object has no attribute 'windll'
>> >
>> > From what I understand, the only way to make it work is to write a
>> > pure equivalent of posix.py or win32.py. Do you think it is technicaly
>> > possible ?
>>
>> That is what Matt commented on: we use ctypes to get access to low-level
>> details like the number of hardlinks for a file. So I think you need to
>> implement this in Java.
>>
>> To get something running, then I think I would create a mercurial.java
>> module with empty stub functions:
>>
>>   def posixfile(name, mode='r', buffering=-1):
>>       pass
>>
>>   def openhardlinks():
>>       pass
>>
>>   ...
>>
>> Then add a third branch to the if-statement in util.py so that java.py
>> is imported in your environment.
>
> ..which will eventually get you a Mercurial that runs in Jython.. on
> Windows. You're still going to need Unix and Windows variants.
>
> --
> Mathematics is the supreme nostalgia of our time.
>
>
>



More information about the Mercurial mailing list