#! /usr/bin/env python # Copyright (C) 2005 by Canonical Ltd # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """Bazaar-NG -- a free distributed version-control tool""" import os, sys if __doc__ is None: print "bzr does not support python -OO." sys.exit(2) try: version_info = sys.version_info except AttributeError: version_info = 1, 5 # 1.5 or older REINVOKE = "__BZR_REINVOKE" NEED_VERS = (2, 4) KNOWN_PYTHONS = ('python2.4',) if version_info < NEED_VERS: if not os.environ.has_key(REINVOKE): # mutating os.environ doesn't work in old Pythons os.putenv(REINVOKE, "1") for python in KNOWN_PYTHONS: try: os.execvp(python, [python] + sys.argv) except OSError: pass print >>sys.stderr, "bzr: error: cannot find a suitable python interpreter" print >>sys.stderr, " (need %d.%d or later)" % NEED_VERS sys.exit(1) if hasattr(os, "unsetenv"): os.unsetenv(REINVOKE) try: import bzrlib import bzrlib.commands import bzrlib.trace except ImportError, e: sys.stderr.write("bzr: ERROR: " "Couldn't import bzrlib and dependencies.\n" "Please check bzrlib is on your PYTHONPATH.\n" "\n") raise if bzrlib.version_info[:3] != (0, 8, 0): sys.stderr.write("bzr: WARNING: bzrlib version doesn't match the bzr program.\n" "This may indicate an installation problem.\n" "bzrlib from %s is version %r\n" % (bzrlib.__path__, bzrlib.version_info)) if __name__ == '__main__': bzrlib.trace.enable_default_logging() sys.exit(bzrlib.commands.main(sys.argv)) else: pass # should this give an error? - it can't be used as a lib