From 6ad5210216f07dc2119f5d000ff7ed43d407e623 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Wed, 22 Jul 2015 11:35:51 -0700 Subject: [PATCH 01/14] adding a zsh package --- var/spack/packages/zsh/package.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 var/spack/packages/zsh/package.py diff --git a/var/spack/packages/zsh/package.py b/var/spack/packages/zsh/package.py new file mode 100644 index 0000000000..99ef9de2e5 --- /dev/null +++ b/var/spack/packages/zsh/package.py @@ -0,0 +1,16 @@ +from spack import * + +class Zsh(Package): + """ The ZSH shell """ + homepage = "http://www.zsh.org" + url = "http://www.zsh.org/pub/zsh-5.0.8.tar.bz2" + + version('5.0.8', 'e6759e8dd7b714d624feffd0a73ba0fe') + + depends_on("pcre") + + def install(self, spec, prefix): + configure('--prefix=%s' % prefix) + + make() + make("install") From 00ab6eb6162f0ee43f8868c4cbdfc9ca151abf0b Mon Sep 17 00:00:00 2001 From: Alfredo Gimenez Date: Thu, 23 Jul 2015 11:38:02 -0700 Subject: [PATCH 02/14] Vim with added feature support, including gvim --- var/spack/packages/vim/package.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/var/spack/packages/vim/package.py b/var/spack/packages/vim/package.py index d0cf80b898..229929539e 100644 --- a/var/spack/packages/vim/package.py +++ b/var/spack/packages/vim/package.py @@ -35,6 +35,10 @@ class Vim(Package): variant('ruby', default=False, description="build with Ruby") depends_on('ruby', when='+ruby') + variant('cscope', default=False, description="build cscope support") + + variant('gui', default=False, description="build gui (gvim)") + def install(self, spec, prefix): feature_set = None for fs in self.feature_sets: @@ -44,6 +48,11 @@ def install(self, spec, prefix): feature_set, fs)) feature_set = fs + if '+gui' in spec: + if feature_set is not None: + if feature_set is not 'huge': + tty.error("+gui variant requires 'huge' feature set, {} was specified".format(feature_set)) + feature_set = 'huge' if feature_set is None: feature_set = 'normal' @@ -60,6 +69,12 @@ def install(self, spec, prefix): else: configure_args.append("--enable-rubyinterp=dynamic") + if '+gui' in spec: + configure_args.append("--enable-gui=auto") + + if '+cscope' in spec: + configure_args.append("--enable-cscope") + configure("--prefix=%s" % prefix, *configure_args) make() From 1e2f421faa62455033ea6c3db941221723da3599 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 23 Jul 2015 17:01:33 -0700 Subject: [PATCH 03/14] Fix Python 2.6 compatibility issue. --- lib/spack/spack/cmd/find.py | 2 +- lib/spack/spack/util/executable.py | 27 +++++++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index a0232d2f12..3c993990b1 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -92,7 +92,7 @@ def display_specs(specs, **kwargs): # Print one spec per line along with prefix path width = max(len(s) for s in abbreviated) width += 2 - format = " %-{}s%s".format(width) + format = " %%-%ds%%s" % width for abbrv, spec in zip(abbreviated, specs): if hashes: diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 67e8cddd98..d1dfb62ffb 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -34,6 +34,7 @@ import spack import spack.error + class Executable(object): """Class representing a program that can be run on the command line.""" def __init__(self, name): @@ -58,7 +59,20 @@ def __call__(self, *args, **kwargs): return_output = kwargs.get("return_output", False) fail_on_error = kwargs.get("fail_on_error", True) ignore_errors = kwargs.get("ignore_errors", ()) + + output = kwargs.get("output", sys.stdout) error = kwargs.get("error", sys.stderr) + input = kwargs.get("input", None) + + def streamify(arg, mode): + if isinstance(arg, basestring): + return open(arg, mode), True + elif arg is None and mode != 'r': + return open(os.devnull, mode), True + return arg, False + output, ostream = streamify(output, 'w') + error, estream = streamify(error, 'w') + input, istream = streamify(input, 'r') # if they just want to ignore one error code, make it a tuple. if isinstance(ignore_errors, int): @@ -77,16 +91,12 @@ def __call__(self, *args, **kwargs): cmd_line = ' '.join(cmd) tty.debug(cmd_line) - close_error = False try: - if error is None: - error = open(os.devnull, 'w') - close_error = True - proc = subprocess.Popen( cmd, + stdin=input, stderr=error, - stdout=subprocess.PIPE if return_output else sys.stdout) + stdout=subprocess.PIPE if return_output else output) out, err = proc.communicate() self.returncode = proc.returncode @@ -110,8 +120,9 @@ def __call__(self, *args, **kwargs): % (proc.returncode, cmd_line)) finally: - if close_error: - error.close() + if ostream: output.close() + if estream: error.close() + if istream: input.close() def __eq__(self, other): From 27ca697b43458c76fd7e079c2a6395fbb5b6126e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 24 Jul 2015 14:22:28 -0700 Subject: [PATCH 04/14] Add Python version test to detect {} in version strings. - {} is not compatible with Python 2.6 --- lib/spack/external/pyqver2.py | 12 ++++++++++++ lib/spack/spack/test/python_version.py | 17 +++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/lib/spack/external/pyqver2.py b/lib/spack/external/pyqver2.py index cd45bf948f..4a16e2811e 100755 --- a/lib/spack/external/pyqver2.py +++ b/lib/spack/external/pyqver2.py @@ -165,12 +165,24 @@ def visitCallFunc(self, node): def rollup(n): if isinstance(n, compiler.ast.Name): return n.name + elif isinstance(n, compiler.ast.Const): + return type(n.value).__name__ elif isinstance(n, compiler.ast.Getattr): r = rollup(n.expr) if r: return r + "." + n.attrname name = rollup(node.node) if name: + # Special handling for empty format strings, which aren't + # allowed in Python 2.6 + if name in ('unicode.format', 'str.format'): + n = node.node + if isinstance(n, compiler.ast.Getattr): + n = n.expr + if isinstance(n, compiler.ast.Const): + if '{}' in n.value: + self.add(node, (2,7), name + ' with {} format string') + v = Functions.get(name) if v is not None: self.add(node, v, name) diff --git a/lib/spack/spack/test/python_version.py b/lib/spack/spack/test/python_version.py index 5b803b4cf3..5779d31ed2 100644 --- a/lib/spack/spack/test/python_version.py +++ b/lib/spack/spack/test/python_version.py @@ -41,13 +41,10 @@ class PythonVersionTest(unittest.TestCase): - def spack_python_files(self): + def pyfiles(self, *search_paths): # first file is the spack script. yield spack.spack_file - # Next files are all the source files and package files. - search_paths = [spack.lib_path, spack.var_path] - # Iterate through the whole spack source tree. for path in search_paths: for root, dirnames, filenames in os.walk(path): @@ -56,16 +53,20 @@ def spack_python_files(self): yield os.path.join(root, filename) - def all_package_py_files(self): + def package_py_files(self): for name in spack.db.all_package_names(): yield spack.db.filename_for_package_name(name) - def check_python_versions(self, files): + def check_python_versions(self, *files): # dict version -> filename -> reasons all_issues = {} for fn in files: + if fn != '/Users/gamblin2/src/spack/var/spack/packages/vim/package.py': + continue + print fn + with open(fn) as pyfile: versions = pyqver2.get_versions(pyfile.read()) for ver, reasons in versions.items(): @@ -101,8 +102,8 @@ def check_python_versions(self, files): def test_core_module_compatibility(self): - self.check_python_versions(self.spack_python_files()) + self.check_python_versions(*self.pyfiles(spack.lib_path)) def test_package_module_compatibility(self): - self.check_python_versions(self.all_package_py_files()) + self.check_python_versions(*self.pyfiles(spack.packages_path)) From 9174c06598609241c1e6d66785e7aaeeb91e98a2 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Mon, 27 Jul 2015 14:03:04 -0700 Subject: [PATCH 05/14] adding a fallback on failure with git --depth Certain remote protocols don't support the `--depth` option. Since this can't be checked by URL type or in any sane way locally, this version attempts to clone git repositories with the --depth option, and if that fails attempts the clone again without it. --- lib/spack/spack/fetch_strategy.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index 0ba0251caa..b810023c5a 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -425,12 +425,21 @@ def fetch(self): if self.git_version > ver('1.7.10'): args.append('--single-branch') + cloned = False # Yet more efficiency, only download a 1-commit deep tree if self.git_version >= ver('1.7.1'): - args.extend(['--depth','1']) + try: + self.git(*(args + ['--depth','1', self.url])) + cloned = True + except spack.error.SpackError: + # This will fail with the dumb HTTP transport + # continue and try without depth, cleanup first + pass + + if not cloned: + args.append(self.url) + self.git(*args) - args.append(self.url) - self.git(*args) self.stage.chdir_to_source() # For tags, be conservative and check them out AFTER From 016eef6a165f8cee2fa5b249f09d964e2521ba94 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Wed, 29 Jul 2015 14:21:03 -0700 Subject: [PATCH 06/14] adding the bear compilation database generator --- var/spack/packages/bear/package.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 var/spack/packages/bear/package.py diff --git a/var/spack/packages/bear/package.py b/var/spack/packages/bear/package.py new file mode 100644 index 0000000000..0d4436fccc --- /dev/null +++ b/var/spack/packages/bear/package.py @@ -0,0 +1,17 @@ +from spack import * + +class Bear(Package): + """Bear is a tool that generates a compilation database for clang tooling from non-cmake build systems.""" + homepage = "https://github.com/rizsotto/Bear" + url = "https://github.com/rizsotto/Bear/archive/2.0.4.tar.gz" + + version('2.0.4', 'fd8afb5e8e18f8737ba06f90bd77d011') + + depends_on("cmake") + depends_on("python") + + def install(self, spec, prefix): + cmake('.', *std_cmake_args) + + make("all") + make("install") From 7ebb4fcedc804c009eabee9ba24d10ea6b1c8b98 Mon Sep 17 00:00:00 2001 From: Mike Nolta Date: Sat, 1 Aug 2015 16:00:13 -0400 Subject: [PATCH 07/14] add missing gmp dependency to mpfr package --- var/spack/packages/mpfr/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/packages/mpfr/package.py b/var/spack/packages/mpfr/package.py index 3cd8ec41e4..9c744a22df 100644 --- a/var/spack/packages/mpfr/package.py +++ b/var/spack/packages/mpfr/package.py @@ -33,6 +33,8 @@ class Mpfr(Package): version('3.1.3', '5fdfa3cfa5c86514ee4a241a1affa138') # version('3.1.2', 'ee2c3ac63bf0c2359bf08fc3ee094c19') + depends_on('gmp') + def install(self, spec, prefix): configure("--prefix=%s" % prefix) make() From 7182671f8f63d4071ad7cfae5fec8ffda9c5b901 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Mon, 3 Aug 2015 11:59:52 -0700 Subject: [PATCH 08/14] pre-alpha flux build and requisite dependencies NOTE: the ncurses package now installs *BOTH* versions, wide and non-wide character for compatibility with packages that require either one. It may be desirable for this to be an option in the future. --- var/spack/packages/asciidoc/package.py | 18 ++++++++++++ var/spack/packages/czmq/package.py | 19 ++++++++++++ var/spack/packages/docbook-xml/package.py | 19 ++++++++++++ var/spack/packages/flux/package.py | 36 +++++++++++++++++++++++ var/spack/packages/libjson-c/package.py | 14 +++++++++ var/spack/packages/libsodium/package.py | 19 ++++++++++++ var/spack/packages/lua/package.py | 26 ++++++++++++++++ var/spack/packages/munge/package.py | 20 +++++++++++++ var/spack/packages/ncurses/package.py | 8 +++++ var/spack/packages/zeromq/package.py | 20 +++++++++++++ 10 files changed, 199 insertions(+) create mode 100644 var/spack/packages/asciidoc/package.py create mode 100644 var/spack/packages/czmq/package.py create mode 100644 var/spack/packages/docbook-xml/package.py create mode 100644 var/spack/packages/flux/package.py create mode 100644 var/spack/packages/libjson-c/package.py create mode 100644 var/spack/packages/libsodium/package.py create mode 100644 var/spack/packages/lua/package.py create mode 100644 var/spack/packages/munge/package.py create mode 100644 var/spack/packages/zeromq/package.py diff --git a/var/spack/packages/asciidoc/package.py b/var/spack/packages/asciidoc/package.py new file mode 100644 index 0000000000..828f3b3f4f --- /dev/null +++ b/var/spack/packages/asciidoc/package.py @@ -0,0 +1,18 @@ +from spack import * + +class Asciidoc(Package): + """ A presentable text document format for writing articles, UNIX man + pages and other small to medium sized documents.""" + homepage = "http://asciidoc.org" + url = "http://downloads.sourceforge.net/project/asciidoc/asciidoc/8.6.9/asciidoc-8.6.9.tar.gz" + + version('8.6.9', 'c59018f105be8d022714b826b0be130a') + + depends_on('libxml2') + depends_on('libxslt') + + def install(self, spec, prefix): + configure('--prefix=%s' % prefix) + + make() + make("install") diff --git a/var/spack/packages/czmq/package.py b/var/spack/packages/czmq/package.py new file mode 100644 index 0000000000..a2f1947554 --- /dev/null +++ b/var/spack/packages/czmq/package.py @@ -0,0 +1,19 @@ +from spack import * + +class Czmq(Package): + """ A C interface to the ZMQ library """ + homepage = "http://czmq.zeromq.org" + url = "https://github.com/zeromq/czmq/archive/v3.0.2.tar.gz" + + version('3.0.2', '23e9885f7ee3ce88d99d0425f52e9be1', url='https://github.com/zeromq/czmq/archive/v3.0.2.tar.gz') + + depends_on('zeromq') + + def install(self, spec, prefix): + bash = which("bash") + bash("./autogen.sh") + configure("--prefix=%s" % prefix) + + make() + make("install") + diff --git a/var/spack/packages/docbook-xml/package.py b/var/spack/packages/docbook-xml/package.py new file mode 100644 index 0000000000..fce1de7deb --- /dev/null +++ b/var/spack/packages/docbook-xml/package.py @@ -0,0 +1,19 @@ +import os +import glob +from spack import * + + +class DocbookXml(Package): + """Docbook DTD XML files.""" + homepage = "http://www.oasis-open.org/docbook" + url = "http://www.oasis-open.org/docbook/xml/4.5/docbook-xml-4.5.zip" + + version('4.5', '03083e288e87a7e829e437358da7ef9e') + + def install(self, spec, prefix): + cp = which('cp') + + install_args = ['-a', '-t', prefix] + install_args.extend(glob.glob('*')) + + cp(*install_args) diff --git a/var/spack/packages/flux/package.py b/var/spack/packages/flux/package.py new file mode 100644 index 0000000000..c128f46be8 --- /dev/null +++ b/var/spack/packages/flux/package.py @@ -0,0 +1,36 @@ +from spack import * +import os + +class Flux(Package): + """ A next-generation resource manager (pre-alpha) """ + + homepage = "https://github.com/flux-framework/flux-core" + url = "https://github.com/flux-framework/flux-core" + + version('master', branch='master', git='https://github.com/flux-framework/flux-core') + + # Also needs autotools, but should use the system version if available + depends_on("zeromq@4.0.4:") + depends_on("czmq@2.2:") + depends_on("lua@5.1:5.1.99") + depends_on("munge") + depends_on("libjson-c") + depends_on("libxslt") + # TODO: This provides a catalog, hacked with environment below for now + depends_on("docbook-xml") + depends_on("asciidoc") + depends_on("python") + depends_on("py-cffi") + + def install(self, spec, prefix): + # Bootstrap with autotools + bash = which('bash') + bash('./autogen.sh') + + # Fix asciidoc dependency on xml style sheets and whatnot + os.environ['XML_CATALOG_FILES'] = os.path.join(spec['docbook-xml'].prefix, + 'catalog.xml') + # Configure, compile & install + configure("--prefix=" + prefix) + make("install", "V=1") + diff --git a/var/spack/packages/libjson-c/package.py b/var/spack/packages/libjson-c/package.py new file mode 100644 index 0000000000..c0801cce9c --- /dev/null +++ b/var/spack/packages/libjson-c/package.py @@ -0,0 +1,14 @@ +from spack import * + +class LibjsonC(Package): + """ A JSON implementation in C """ + homepage = "https://github.com/json-c/json-c/wiki" + url = "https://s3.amazonaws.com/json-c_releases/releases/json-c-0.11.tar.gz" + + version('0.11', 'aa02367d2f7a830bf1e3376f77881e98') + + def install(self, spec, prefix): + configure('--prefix=%s' % prefix) + + make() + make("install") diff --git a/var/spack/packages/libsodium/package.py b/var/spack/packages/libsodium/package.py new file mode 100644 index 0000000000..1c8a16d998 --- /dev/null +++ b/var/spack/packages/libsodium/package.py @@ -0,0 +1,19 @@ +from spack import * + +class Libsodium(Package): + """Sodium is a modern, easy-to-use software library for encryption, + decryption, signatures, password hashing and more.""" + homepage = "https://download.libsodium.org/doc/" + url = "https://download.libsodium.org/libsodium/releases/libsodium-1.0.3.tar.gz" + + version('1.0.3', 'b3bcc98e34d3250f55ae196822307fab') + version('1.0.2', 'dc40eb23e293448c6fc908757738003f') + version('1.0.1', '9a221b49fba7281ceaaf5e278d0f4430') + version('1.0.0', '3093dabe4e038d09f0d150cef064b2f7') + version('0.7.1', 'c224fe3923d1dcfe418c65c8a7246316') + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix) + + make() + make("install") diff --git a/var/spack/packages/lua/package.py b/var/spack/packages/lua/package.py new file mode 100644 index 0000000000..57c443cc2d --- /dev/null +++ b/var/spack/packages/lua/package.py @@ -0,0 +1,26 @@ +from spack import * +import os + +class Lua(Package): + """ The Lua programming language interpreter and library """ + homepage = "http://www.lua.org" + url = "http://www.lua.org/ftp/lua-5.1.5.tar.gz" + + version('5.3.1', '797adacada8d85761c079390ff1d9961') + version('5.3.0', 'a1b0a7e92d0c85bbff7a8d27bf29f8af') + version('5.2.4', '913fdb32207046b273fdb17aad70be13') + version('5.2.3', 'dc7f94ec6ff15c985d2d6ad0f1b35654') + version('5.2.2', 'efbb645e897eae37cad4344ce8b0a614') + version('5.2.1', 'ae08f641b45d737d12d30291a5e5f6e3') + version('5.2.0', 'f1ea831f397214bae8a265995ab1a93e') + version('5.1.5', '2e115fe26e435e33b0d5c022e4490567') + version('5.1.4', 'd0870f2de55d59c1c8419f36e8fac150') + version('5.1.3', 'a70a8dfaa150e047866dc01a46272599') + + depends_on('ncurses') + + def install(self, spec, prefix): + make('INSTALL_TOP=%s' % prefix, + 'MYLDFLAGS=-L%s/lib' % spec['ncurses'].prefix, + 'linux', + 'install') diff --git a/var/spack/packages/munge/package.py b/var/spack/packages/munge/package.py new file mode 100644 index 0000000000..c737ca0354 --- /dev/null +++ b/var/spack/packages/munge/package.py @@ -0,0 +1,20 @@ +from spack import * +import os + +class Munge(Package): + """ MUNGE Uid 'N' Gid Emporium """ + homepage = "https://code.google.com/p/munge/" + url = "https://github.com/dun/munge/releases/download/munge-0.5.11/munge-0.5.11.tar.bz2" + + version('0.5.11', 'bd8fca8d5f4c1fcbef1816482d49ee01', url='https://github.com/dun/munge/releases/download/munge-0.5.11/munge-0.5.11.tar.bz2') + + depends_on('openssl') + depends_on('libgcrypt') + + def install(self, spec, prefix): + os.makedirs(os.path.join(prefix, "lib/systemd/system")) + configure("--prefix=%s" % prefix) + + make() + make("install") + diff --git a/var/spack/packages/ncurses/package.py b/var/spack/packages/ncurses/package.py index a22e83503f..8f5763bfdd 100644 --- a/var/spack/packages/ncurses/package.py +++ b/var/spack/packages/ncurses/package.py @@ -21,3 +21,11 @@ def install(self, spec, prefix): make() make("install") + configure("--prefix=%s" % prefix, + "--with-shared", + "--disable-widec", + "--disable-pc-files", + "--without-ada") + make() + make("install") + diff --git a/var/spack/packages/zeromq/package.py b/var/spack/packages/zeromq/package.py new file mode 100644 index 0000000000..b5a1e3d4cd --- /dev/null +++ b/var/spack/packages/zeromq/package.py @@ -0,0 +1,20 @@ +from spack import * + +class Zeromq(Package): + """ The ZMQ networking/concurrency library and core API """ + homepage = "http://zguide.zeromq.org/" + url = "http://download.zeromq.org/zeromq-4.1.2.tar.gz" + + version('4.1.2', '159c0c56a895472f02668e692d122685') + version('4.1.1', '0a4b44aa085644f25c177f79dc13f253') + version('4.0.7', '9b46f7e7b0704b83638ef0d461fd59ab') + version('4.0.6', 'd47dd09ed7ae6e7fd6f9a816d7f5fdf6') + version('4.0.5', '73c39f5eb01b9d7eaf74a5d899f1d03d') + + depends_on("libsodium") + + def install(self, spec, prefix): + configure("--with-libsodium","--prefix=%s" % prefix) + + make() + make("install") From 1792115b4df2f6ecca18bddf462ccd4a618d9698 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 4 Aug 2015 09:57:06 -0700 Subject: [PATCH 09/14] Use absolute paths to spack compiler wrappers in CC/CXX/F77/FC --- lib/spack/spack/build_environment.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 81fbedc689..a133faa629 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -88,10 +88,10 @@ def set_compiler_environment_variables(pkg): compiler = pkg.compiler # Set compiler variables used by CMake and autotools - os.environ['CC'] = 'cc' - os.environ['CXX'] = 'c++' - os.environ['F77'] = 'f77' - os.environ['FC'] = 'f90' + os.environ['CC'] = join_path(spack.build_env_path, 'cc') + os.environ['CXX'] = join_path(spack.build_env_path, 'c++') + os.environ['F77'] = join_path(spack.build_env_path, 'f77') + os.environ['FC'] = join_path(spack.build_env_path, 'f90') # Set SPACK compiler variables so that our wrapper knows what to call if compiler.cc: From 067ecb90b901ce8b64569986d4b1ff9ad2279a54 Mon Sep 17 00:00:00 2001 From: Alfredo Gimenez Date: Thu, 6 Aug 2015 09:28:28 -0700 Subject: [PATCH 10/14] Added cscope (dependency for vim+cscope) --- var/spack/packages/cscope/package.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 var/spack/packages/cscope/package.py diff --git a/var/spack/packages/cscope/package.py b/var/spack/packages/cscope/package.py new file mode 100644 index 0000000000..9aac0f7304 --- /dev/null +++ b/var/spack/packages/cscope/package.py @@ -0,0 +1,17 @@ +from spack import * + +class Cscope(Package): + """Cscope is a developer's tool for browsing source code.""" + homepage = "http://http://cscope.sourceforge.net/" + url = "http://downloads.sourceforge.net/project/cscope/cscope/15.8b/cscope-15.8b.tar.gz" + + version('15.8b', '8f9409a238ee313a96f9f87fe0f3b176') + + # Can be configured to use flex (not necessary) + # ./configure --with-flex + + def install(self, spec, prefix): + configure('--prefix=%s' % prefix) + + make() + make("install") From d017c5080a49bc6c2dee231234f8535198350b16 Mon Sep 17 00:00:00 2001 From: Alfredo Gimenez Date: Fri, 7 Aug 2015 00:03:14 -0700 Subject: [PATCH 11/14] Fixed py-pandas package --- var/spack/packages/libpciaccess/package.py | 21 +++++++++++++++++++++ var/spack/packages/libxml2/package.py | 5 +++-- var/spack/packages/mesa/package.py | 5 +++-- var/spack/packages/py-mock/package.py | 17 +++++++++++++++++ var/spack/packages/py-pandas/package.py | 4 ++++ var/spack/packages/py-setuptools/package.py | 1 + 6 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 var/spack/packages/libpciaccess/package.py create mode 100644 var/spack/packages/py-mock/package.py diff --git a/var/spack/packages/libpciaccess/package.py b/var/spack/packages/libpciaccess/package.py new file mode 100644 index 0000000000..6022fc34a3 --- /dev/null +++ b/var/spack/packages/libpciaccess/package.py @@ -0,0 +1,21 @@ +from spack import * + +class Libpciaccess(Package): + """Generic PCI access library.""" + + homepage = "http://cgit.freedesktop.org/xorg/lib/libpciaccess/" + url = "http://cgit.freedesktop.org/xorg/lib/libpciaccess/" + + version('0.13.4', git='http://anongit.freedesktop.org/git/xorg/lib/libpciaccess.git', + tag='libpciaccess-0.13.4') + + depends_on('autoconf') + depends_on('libtool') + + def install(self, spec, prefix): + from subprocess import call + call(["./autogen.sh"]) + configure("--prefix=%s" % prefix) + + make() + make("install") diff --git a/var/spack/packages/libxml2/package.py b/var/spack/packages/libxml2/package.py index 72199d8def..3a0af6b368 100644 --- a/var/spack/packages/libxml2/package.py +++ b/var/spack/packages/libxml2/package.py @@ -9,11 +9,12 @@ class Libxml2(Package): version('2.9.2', '9e6a9aca9d155737868b3dc5fd82f788') + extends('python') depends_on('zlib') depends_on('xz') def install(self, spec, prefix): - configure("--prefix=%s" % prefix, - "--without-python") + configure("--prefix=%s" % prefix) + make() make("install") diff --git a/var/spack/packages/mesa/package.py b/var/spack/packages/mesa/package.py index 2dba878a77..2a04a8fd51 100644 --- a/var/spack/packages/mesa/package.py +++ b/var/spack/packages/mesa/package.py @@ -1,7 +1,7 @@ from spack import * class Mesa(Package): - """Mesa is an open-source implementation of the OpenGL + """Mesa is an open-source implementation of the OpenGL specification - a system for rendering interactive 3D graphics.""" homepage = "http://www.mesa3d.org" @@ -11,9 +11,10 @@ class Mesa(Package): # version('10.4.4', '8d863a3c209bf5116b2babfccccc68ce') version('8.0.5', 'cda5d101f43b8784fa60bdeaca4056f2') - # mesa 7.x, 8.x, 9.x + # mesa 7.x, 8.x, 9.x depends_on("libdrm@2.4.33") depends_on("llvm@3.0") + depends_on("libxml2") # patch("llvm-fixes.patch") # using newer llvm diff --git a/var/spack/packages/py-mock/package.py b/var/spack/packages/py-mock/package.py new file mode 100644 index 0000000000..3b08428ba0 --- /dev/null +++ b/var/spack/packages/py-mock/package.py @@ -0,0 +1,17 @@ +from spack import * + +class PyMock(Package): + """mock is a library for testing in Python. It allows you to replace parts + of your system under test with mock objects and make assertions about how + they have been used.""" + + homepage = "https://github.com/testing-cabal/mock" + url = "https://pypi.python.org/packages/source/m/mock/mock-1.3.0.tar.gz" + + version('1.3.0', '73ee8a4afb3ff4da1b4afa287f39fdeb') + + extends('python') + depends_on('py-setuptools@17.1:') + + def install(self, spec, prefix): + python('setup.py', 'install', '--prefix=%s' % prefix) diff --git a/var/spack/packages/py-pandas/package.py b/var/spack/packages/py-pandas/package.py index acbb5114a3..5b9997faa9 100644 --- a/var/spack/packages/py-pandas/package.py +++ b/var/spack/packages/py-pandas/package.py @@ -16,6 +16,10 @@ class PyPandas(Package): depends_on('py-scipy') depends_on('py-setuptools') depends_on('py-pytz') + depends_on('libdrm') + depends_on('libpciaccess') + depends_on('llvm') + depends_on('mesa') def install(self, spec, prefix): python('setup.py', 'install', '--prefix=%s' % prefix) diff --git a/var/spack/packages/py-setuptools/package.py b/var/spack/packages/py-setuptools/package.py index d3f11ed469..760ad4d6db 100644 --- a/var/spack/packages/py-setuptools/package.py +++ b/var/spack/packages/py-setuptools/package.py @@ -7,6 +7,7 @@ class PySetuptools(Package): version('11.3.1', '01f69212e019a2420c1693fb43593930') version('16.0', '0ace0b96233516fc5f7c857d086aa3ad') + version('18.1', 'f72e87f34fbf07f299f6cb46256a0b06') extends('python') From d6bf9c9887a26dc8237a8962cb1aad48d85cbaff Mon Sep 17 00:00:00 2001 From: Alfredo Gimenez Date: Fri, 7 Aug 2015 07:58:04 -0700 Subject: [PATCH 12/14] Cscope vim variant depends on cscope --- var/spack/packages/vim/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/packages/vim/package.py b/var/spack/packages/vim/package.py index 229929539e..710d5dfffc 100644 --- a/var/spack/packages/vim/package.py +++ b/var/spack/packages/vim/package.py @@ -35,9 +35,11 @@ class Vim(Package): variant('ruby', default=False, description="build with Ruby") depends_on('ruby', when='+ruby') - variant('cscope', default=False, description="build cscope support") + variant('cscope', default=False, description="build with cscope support") + depends_on('cscope', when='+cscope') - variant('gui', default=False, description="build gui (gvim)") + variant('gui', default=False, description="build with gui (gvim)") + # virtual dependency? def install(self, spec, prefix): feature_set = None From a2b5b61e7fda38f6526ce8c10c54db466a0d6164 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 1 Aug 2015 15:06:37 -0700 Subject: [PATCH 13/14] Add .mailmap file --- .mailmap | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .mailmap diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000000..1cc13c1eb1 --- /dev/null +++ b/.mailmap @@ -0,0 +1,11 @@ +Todd Gamblin George Todd Gamblin +Adam Moody Adam T. Moody +Alfredo Gimenez Alfredo Gimenez +David Boehme David Boehme +David Boehme David Boehme +Kevin Brandstatter Kevin Brandstatter +Luc Jaulmes Luc Jaulmes +Saravan Pantham Saravan Pantham Tom Scogland +Tom Scogland Tom Scogland +Joachim Protze jprotze From c8f65c15306683a5d505d4bcafa603e75c09feca Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 13 Aug 2015 00:21:02 -0700 Subject: [PATCH 14/14] Fix 2.6 incompatibility --- var/spack/packages/vim/package.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/var/spack/packages/vim/package.py b/var/spack/packages/vim/package.py index 710d5dfffc..4099b3257f 100644 --- a/var/spack/packages/vim/package.py +++ b/var/spack/packages/vim/package.py @@ -46,14 +46,14 @@ def install(self, spec, prefix): for fs in self.feature_sets: if "+" + fs in spec: if feature_set is not None: - tty.error("Only one feature set allowed, both {} and {} specified".format( - feature_set, - fs)) + tty.error("Only one feature set allowed, both %s and %s specified" + % (feature_set, fs)) feature_set = fs if '+gui' in spec: if feature_set is not None: if feature_set is not 'huge': - tty.error("+gui variant requires 'huge' feature set, {} was specified".format(feature_set)) + tty.error("+gui variant requires 'huge' feature set, %s was specified" + % feature_set) feature_set = 'huge' if feature_set is None: feature_set = 'normal'