From fc753aaa1480a4c7043e359e8fac22a2f0deeec1 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Fri, 22 Aug 2003 10:39:13 +0000 Subject: [PATCH] Get ROX-Lib via Zero Install. git-svn-id: https://rox.svn.sourceforge.net/svnroot/rox/trunk/Archive@3004 66de3db3-b00d-0410-b41b-f4738ad19bea --- AppRun | 2 +- Help/Changes | 4 ++-- findrox.py | 58 ++++++++++++++++++++++++++++++++++++++++++---------------- 3 files changed, 45 insertions(+), 19 deletions(-) diff --git a/AppRun b/AppRun index 04ce67c..8f06b14 100755 --- a/AppRun +++ b/AppRun @@ -1,6 +1,6 @@ #!/usr/bin/env python -import findrox +import findrox; findrox.version(1, 9, 6) import sys, os, formats import rox diff --git a/Help/Changes b/Help/Changes index 89924c5..256743a 100644 --- a/Help/Changes +++ b/Help/Changes @@ -4,8 +4,8 @@ 20-Aug-2003 (Release 1.9.3) ~~~~~~~~~~~ -If an error occurs while extracting, still try not to leave a directory-within-a-directory -layout. +If an error occurs while extracting, still try not to leave a +directory-within-a-directory layout. 17-Aug-2003 ~~~~~~~~~~~ diff --git a/findrox.py b/findrox.py index 830794f..e05bede 100644 --- a/findrox.py +++ b/findrox.py @@ -8,22 +8,48 @@ import os, sys from os.path import exists import string -try: - path = os.environ['LIBDIRPATH'] - paths = string.split(path, ':') -except KeyError: - paths = [ os.environ['HOME'] + '/lib', '/usr/local/lib', '/usr/lib' ] - -paths = map(lambda p: os.path.join(p, 'ROX-Lib2'), paths) -for p in paths: - if exists(p): - sys.path.append(os.path.join(p, 'python')) - break -else: - err = "This program needs ROX-Lib2 to run.\n" + \ - "I tried all of these places:\n\n" + \ - string.join(paths, '\n') + '\n\n' + \ - "ROX-Lib2 is available from:\nhttp://rox.sourceforge.net" +def version(major, minor, micro): + """Find ROX-Lib2, with a version >= (major, minor, micro), and + add it to sys.path. If version is missing or too old, either + prompt the user, or (if possible) upgrade it automatically.""" + + if os.path.exists('/uri/0install/rox.sourceforge.net'): + # We're using ZeroInstall. Good :-) + zpath = '/uri/0install/rox.sourceforge.net/lib/ROX-Lib2/' \ + 'latest' + if os.path.exists(zpath): + vs = os.readlink(zpath).split('-')[-1] + v = map(int, vs.split('.')) + if v[0] < major or v[1] < minor or v[2] < micro: + if os.system('cd /uri/0install/rox.sourceforge.net; 0refresh'): + report_error('Using ROX-Lib in Zero Install, but cached version (%s) is too old (need %d.%d.%d) and updating failed (is zero-install running?)' % (vs, major, minor, micro)) + sys.path.append(zpath + '/python') + return + print >>sys.stderr, "Using Zero Install, but failed to " \ + "fetch", zpath, "-- trying non-0install system." + + try: + path = os.environ['LIBDIRPATH'] + paths = string.split(path, ':') + except KeyError: + paths = [os.environ['HOME'] + '/lib', + '/usr/local/lib', '/usr/lib' ] + + for p in paths: + p = os.path.join(p, 'ROX-Lib2') + if exists(p): + # TODO: check version is new enough + sys.path.append(os.path.join(p, 'python')) + break + else: + report_error("This program needs ROX-Lib2 to run.\n" + \ + "I tried all of these places:\n\n" + \ + string.join(paths, '\n') + '\n\n' + \ + "ROX-Lib2 is available from:\n" + \ + "http://rox.sourceforge.net") + +def report_error(err): + "Write 'error' to stderr and, if possible, display a dialog box too." try: sys.stderr.write('*** ' + err + '\n') except: -- 2.11.4.GIT