summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/install-spack56
1 files changed, 56 insertions, 0 deletions
diff --git a/bin/install-spack b/bin/install-spack
new file mode 100755
index 0000000000..9d35bbf0e4
--- /dev/null
+++ b/bin/install-spack
@@ -0,0 +1,56 @@
+#!/usr/bin/python
+usage="""\
+This script installs spack in a new prefix.
+To use: cd to the prefix and execute this script.
+"""
+import os
+import sys
+import getpass
+from subprocess import check_call
+
+def escape(s):
+ """Returns a TTY escape code if stdout is a tty, otherwise empty string"""
+ if sys.stdout.isatty():
+ return "\033[{}m".format(s)
+ return ''
+
+def bold(n):
+ return escape("1;{}".format(n))
+
+blue = bold(34)
+red = bold(31)
+white = bold(39)
+reset = escape(0)
+
+def msg(msg):
+ print "{}==>{} {}{}".format(blue, white, str(msg), reset)
+
+def error(msg):
+ print "{}==> ERROR: {} {}{}".format(red, white, str(msg), reset)
+ sys.exit(1)
+
+
+user = getpass.getuser()
+if not user:
+ error("Couldn't determine username!")
+
+spack_repo = "https://%s@lc.llnl.gov/stash/scm/SCALE/spack.git" % user
+msg("Fetching spack from %s" % spack_repo)
+
+prefix = os.getcwd()
+
+if os.path.exists(".git"):
+ error("There already seems to be a git repository here.")
+if os.listdir("."):
+ error("There is already something in this directory.")
+
+msg("This script will install:")
+print " %s/bin/spack" % prefix
+print " %s/lib/spack/..." % prefix
+
+check_call(["git", "init", "--shared", "-q"])
+check_call(["git", "remote", "add", "origin", spack_repo])
+check_call(["git", "fetch", "origin", "master:refs/remotes/origin/master", "-n", "-q"])
+check_call(["git", "reset", "--hard", "origin/master", "-q"])
+
+msg("Successfully installed spack in %s" % prefix)