Search code examples
pythonironpythonbazaardynamic-language-runtime

Bazaar VCS under IronPython?


Has anyone successfully executed the source control system Bazaar in IronPython?


Solution

  • Yes, Bazaar is pure-python with optional extensions and will run on IronPython. There are a few caveats though. Firstly some changes are needed to Bazaar that haven't yet been merged with the main branch. Secondly, IronPython's slow startup time makes it unsuitable for general bzr usage, and there are are some outstanding issues due to missing modules and the like.

    If you want to give it a go yourself though, you can. Download and install IronPython 2.6 and Jeff Hardy's implementation of the zlib module for IronPython (follow the readme in the zip). You'll also need to copy gzip.py from the CPython standard library to the IronPython lib folder. Finally, get a release version of Bazaar so you can get a copy of a development branch.

    With that done, you can follow something like this (adjusting for your own paths as needed) and have a functional(ish) Bazaar-on-IronPython:

    >set IPYDIR="C:\Program Files\IronPython 2.6"\
    
    >bzr branch lp:~gz/bzr/noncpython
    Branched 4715 revision(s).
    
    >cd noncpython
    
    >%IPYDIR%ipy setup.py build_ext --allow-python-fallback install_lib --no-compile install
    ...
    
    >%IPYDIR%ipy %IPYDIR%Scripts\bzr version
    ...
    Bazaar (bzr) 2.1.0dev
      Python interpreter: C:\Program Files\IronPython 2.6\ipy.exe 2.6.0
      Python standard library: C:\Program Files\IronPython 2.6\Lib
      Platform: cli-32bit
      bzrlib: C:\Program Files\IronPython 2.6\lib\site-packages\bzrlib
    ...
    

    Yes, all that junk for setup.py is needed (to tell Bazaar not to compile the pyrex versions of things and disutils not to try and make pyc files). There will probably be some extra (harmless) output complaining about encodings, but you should find that most things with local branches work fine.