Make the system paths more configurable
authorNathan Binkert <binkertn@umich.edu>
Sat, 17 Jun 2006 22:14:16 +0000 (18:14 -0400)
committerNathan Binkert <binkertn@umich.edu>
Sat, 17 Jun 2006 22:14:16 +0000 (18:14 -0400)
configs/test/SysPaths.py:
    Make the paths more configurable

--HG--
extra : convert_revision : c426b102dfe55e4b601a23e980e1b01140e0ee93

configs/test/SysPaths.py

index c7c7db4e7f01376ac800ca49c3045936a9a7fa83..9acfedc8b169f070dcbb876d8c9b39a73a8098ef 100644 (file)
@@ -1,32 +1,42 @@
-from m5 import *
-
-import os.path
-import sys
-
-# Edit the following list to include the possible paths to the binary
-# and disk image directories.  The first directory on the list that
-# exists will be selected.
-SYSTEMDIR_PATH = ['/n/poolfs/z/dist/m5/system']
-
-SYSTEMDIR = None
-for d in SYSTEMDIR_PATH:
-    if os.path.exists(d):
-        SYSTEMDIR = d
-        break
-
-if not SYSTEMDIR:
-    print >>sys.stderr, "Can't find a path to system files."
-    sys.exit(1)
-
-BINDIR = SYSTEMDIR + '/binaries'
-DISKDIR = SYSTEMDIR + '/disks'
+import os, sys
+from os.path import isdir, join as joinpath
+from os import environ as env
+
+systemdir = None
+bindir = None
+diskdir = None
+scriptdir = None
+
+def load_defaults():
+    global systemdir, bindir, diskdir, scriptdir
+    if not systemdir:
+        try:
+                path = env['M5_PATH'].split(':')
+        except KeyError:
+                path = [ '/dist/m5/system' ]
+
+        for systemdir in path:
+            if os.path.isdir(systemdir):
+                break
+        else:
+            raise ImportError, "Can't find a path to system files."
+
+    if not bindir:
+        bindir = joinpath(systemdir, 'binaries')
+    if not diskdir:
+        diskdir = joinpath(systemdir, 'disks')
+    if not scriptdir:
+        scriptdir = joinpath(systemdir, 'boot')
 
 def disk(file):
-    return os.path.join(DISKDIR, file)
+    load_defaults()
+    return joinpath(diskdir, file)
 
 def binary(file):
-    return os.path.join(BINDIR, file)
+    load_defaults()
+    return joinpath(bindir, file)
 
 def script(file):
-    return os.path.join(SYSTEMDIR, 'boot', file)
+    load_defaults()
+    return joinpath(scriptdir, file)