New, cleaner package repository structure.

Package repositories now look like this:

    top-level-dir/
        repo.yaml
        packages/
            libelf/
                package.py
            mpich/
                package.py
            ...

This leaves room at the top level for additional metadata, source,
per-repo configs, indexes, etc., and it makes it easy to see that
something is a spack repo (just look for repo.yaml and packages).
This commit is contained in:
Todd Gamblin
2015-11-26 14:19:27 -08:00
parent 04f032d6e3
commit 89d5127900
285 changed files with 137 additions and 64 deletions

View File

@@ -0,0 +1,12 @@
from spack import *
class A(Package):
"""Simple package with no dependencies"""
homepage = "http://www.example.com"
url = "http://www.example.com/a-1.0.tar.gz"
version('1.0', '0123456789abcdef0123456789abcdef')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,12 @@
from spack import *
class B(Package):
"""Simple package with no dependencies"""
homepage = "http://www.example.com"
url = "http://www.example.com/b-1.0.tar.gz"
version('1.0', '0123456789abcdef0123456789abcdef')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,12 @@
from spack import *
class C(Package):
"""Simple package with no dependencies"""
homepage = "http://www.example.com"
url = "http://www.example.com/c-1.0.tar.gz"
version('1.0', '0123456789abcdef0123456789abcdef')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,41 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Callpath(Package):
homepage = "https://github.com/tgamblin/callpath"
url = "http://github.com/tgamblin/callpath-1.0.tar.gz"
version(0.8, 'foobarbaz')
version(0.9, 'foobarbaz')
version(1.0, 'foobarbaz')
depends_on("dyninst")
depends_on("mpi")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,36 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class DirectMpich(Package):
homepage = "http://www.example.com"
url = "http://www.example.com/direct_mpich-1.0.tar.gz"
version('1.0', 'foobarbaz')
depends_on('mpich')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,44 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Dyninst(Package):
homepage = "https://paradyn.org"
url = "http://www.paradyn.org/release8.1/DyninstAPI-8.1.1.tgz"
version('8.2', 'cxyzab',
url='http://www.paradyn.org/release8.2/DyninstAPI-8.2.tgz')
version('8.1.2', 'bcxyza',
url='http://www.paradyn.org/release8.1.2/DyninstAPI-8.1.2.tgz')
version('8.1.1', 'abcxyz',
url='http://www.paradyn.org/release8.1/DyninstAPI-8.1.1.tgz')
depends_on("libelf")
depends_on("libdwarf")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,12 @@
from spack import *
class E(Package):
"""Simple package with no dependencies"""
homepage = "http://www.example.com"
url = "http://www.example.com/e-1.0.tar.gz"
version('1.0', '0123456789abcdef0123456789abcdef')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,34 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Fake(Package):
homepage = "http://www.fake-spack-example.org"
url = "http://www.fake-spack-example.org/downloads/fake-1.0.tar.gz"
version('1.0', 'foobarbaz')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,10 @@
from spack import *
class GitTest(Package):
"""Mock package that uses git for fetching."""
homepage = "http://www.git-fetch-example.com"
version('git', git='to-be-filled-in-by-test')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,10 @@
from spack import *
class HgTest(Package):
"""Test package that does fetching with mercurial."""
homepage = "http://www.hg-fetch-example.com"
version('hg', hg='to-be-filled-in-by-test')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,41 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class IndirectMpich(Package):
"""Test case for a package that depends on MPI and one of its
dependencies requires a *particular version* of MPI.
"""
homepage = "http://www.example.com"
url = "http://www.example.com/indirect_mpich-1.0.tar.gz"
version(1.0, 'foobarbaz')
depends_on('mpi')
depends_on('direct_mpich')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,44 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
import os
# Only build certain parts of dwarf because the other ones break.
dwarf_dirs = ['libdwarf', 'dwarfdump2']
class Libdwarf(Package):
homepage = "http://www.prevanders.net/dwarf.html"
url = "http://www.prevanders.net/libdwarf-20130729.tar.gz"
list_url = homepage
version(20130729, "64b42692e947d5180e162e46c689dfbf")
version(20130207, 'foobarbaz')
version(20111030, 'foobarbaz')
version(20070703, 'foobarbaz')
depends_on("libelf")
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,43 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Libelf(Package):
homepage = "http://www.mr511.de/software/english.html"
url = "http://www.mr511.de/software/libelf-0.8.13.tar.gz"
version('0.8.13', '4136d7b4c04df68b686570afa26988ac')
version('0.8.12', 'e21f8273d9f5f6d43a59878dc274fec7')
version('0.8.10', '9db4d36c283d9790d8fa7df1f4d7b4d9')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
"--enable-shared",
"--disable-dependency-tracking",
"--disable-debug")
make()
# The mkdir commands in libelf's intsall can fail in parallel
make("install", parallel=False)

View File

@@ -0,0 +1,46 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Mpich(Package):
homepage = "http://www.mpich.org"
url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz"
list_url = "http://www.mpich.org/static/downloads/"
list_depth = 2
variant('debug', default=False,
description="Compile MPICH with debug flags.")
version('3.0.4', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
version('3.0.3', 'foobarbaz')
version('3.0.2', 'foobarbaz')
version('3.0.1', 'foobarbaz')
version('3.0', 'foobarbaz')
provides('mpi@:3', when='@3:')
provides('mpi@:1', when='@:1')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,47 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Mpich2(Package):
homepage = "http://www.mpich.org"
url = "http://www.mpich.org/static/downloads/1.5/mpich2-1.5.tar.gz"
list_url = "http://www.mpich.org/static/downloads/"
list_depth = 2
version('1.5', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
version('1.4', 'foobarbaz')
version('1.3', 'foobarbaz')
version('1.2', 'foobarbaz')
version('1.1', 'foobarbaz')
version('1.0', 'foobarbaz')
provides('mpi@:2.0')
provides('mpi@:2.1', when='@1.1:')
provides('mpi@:2.2', when='@1.2:')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,43 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Mpileaks(Package):
homepage = "http://www.llnl.gov"
url = "http://www.llnl.gov/mpileaks-1.0.tar.gz"
version(1.0, 'foobarbaz')
version(2.1, 'foobarbaz')
version(2.2, 'foobarbaz')
version(2.3, 'foobarbaz')
variant('debug', default=False, description='Debug variant')
variant('opt', default=False, description='Optimized variant')
depends_on("mpi")
depends_on("callpath")
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,143 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Multimethod(Package):
"""This package is designed for use with Spack's multimethod test.
It has a bunch of test cases for the @when decorator that the
test uses.
"""
homepage = 'http://www.example.com/'
url = 'http://www.example.com/example-1.0.tar.gz'
#
# These functions are only valid for versions 1, 2, and 3.
#
@when('@1.0')
def no_version_2(self):
return 1
@when('@3.0')
def no_version_2(self):
return 3
@when('@4.0')
def no_version_2(self):
return 4
#
# These functions overlap, so there is ambiguity, but we'll take
# the first one.
#
@when('@:4')
def version_overlap(self):
return 1
@when('@2:')
def version_overlap(self):
return 2
#
# More complicated case with cascading versions.
#
def mpi_version(self):
return 0
@when('^mpi@3:')
def mpi_version(self):
return 3
@when('^mpi@2:')
def mpi_version(self):
return 2
@when('^mpi@1:')
def mpi_version(self):
return 1
#
# Use these to test whether the default method is called when no
# match is found. This also tests whether we can switch methods
# on compilers
#
def has_a_default(self):
return 'default'
@when('%gcc')
def has_a_default(self):
return 'gcc'
@when('%intel')
def has_a_default(self):
return 'intel'
#
# Make sure we can switch methods on different architectures
#
@when('=x86_64')
def different_by_architecture(self):
return 'x86_64'
@when('=ppc64')
def different_by_architecture(self):
return 'ppc64'
@when('=ppc32')
def different_by_architecture(self):
return 'ppc32'
@when('=arm64')
def different_by_architecture(self):
return 'arm64'
#
# Make sure we can switch methods on different dependencies
#
@when('^mpich')
def different_by_dep(self):
return 'mpich'
@when('^zmpi')
def different_by_dep(self):
return 'zmpi'
#
# Make sure we can switch on virtual dependencies
#
def different_by_virtual_dep(self):
return 1
@when('^mpi@2:')
def different_by_virtual_dep(self):
return 2

View File

@@ -0,0 +1,18 @@
from spack import *
class OptionalDepTest2(Package):
"""Depends on the optional-dep-test package"""
homepage = "http://www.example.com"
url = "http://www.example.com/optional-dep-test-2-1.0.tar.gz"
version('1.0', '0123456789abcdef0123456789abcdef')
variant('odt', default=False)
variant('mpi', default=False)
depends_on('optional-dep-test', when='+odt')
depends_on('optional-dep-test+mpi', when='+mpi')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,17 @@
from spack import *
class OptionalDepTest3(Package):
"""Depends on the optional-dep-test package"""
homepage = "http://www.example.com"
url = "http://www.example.com/optional-dep-test-3-1.0.tar.gz"
version('1.0', '0123456789abcdef0123456789abcdef')
variant('var', default=False)
depends_on('a', when='~var')
depends_on('b', when='+var')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,29 @@
from spack import *
class OptionalDepTest(Package):
"""Description"""
homepage = "http://www.example.com"
url = "http://www.example.com/optional_dep_test-1.0.tar.gz"
version('1.0', '0123456789abcdef0123456789abcdef')
version('1.1', '0123456789abcdef0123456789abcdef')
variant('a', default=False)
variant('f', default=False)
variant('mpi', default=False)
depends_on('a', when='+a')
depends_on('b', when='@1.1')
depends_on('c', when='%intel')
depends_on('d', when='%intel@64.1')
depends_on('e', when='%clang@34:40')
depends_on('f', when='+f')
depends_on('g', when='^f')
depends_on('mpi', when='^g')
depends_on('mpi', when='+mpi')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,10 @@
from spack import *
class SvnTest(Package):
"""Mock package that uses svn for fetching."""
url = "http://www.example.com/svn-test-1.0.tar.gz"
version('svn', 'to-be-filled-in-by-test')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,38 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class TrivialInstallTestPackage(Package):
"""This package is a stub with a trivial install method. It allows us
to test the install and uninstall logic of spack."""
homepage = "http://www.example.com/trivial_install"
url = "http://www.unit-test-should-replace-this-url/trivial_install-1.0.tar.gz"
version('1.0', 'foobarbaz')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
make()
make('install')

View File

@@ -0,0 +1,39 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Zmpi(Package):
"""This is a fake MPI package used to demonstrate virtual package providers
with dependencies."""
homepage = "http://www.spack-fake-zmpi.org"
url = "http://www.spack-fake-zmpi.org/downloads/zmpi-1.0.tar.gz"
version('1.0', 'foobarbaz')
provides('mpi@:10.0')
depends_on('fake')
def install(self, spec, prefix):
pass

View File

@@ -0,0 +1,2 @@
repo:
namespace: builtin.mock

View File

@@ -0,0 +1,37 @@
from spack import *
class Imagemagick(Package):
"""ImageMagick is a image processing library"""
homepage = "http://www.imagemagic.org"
#-------------------------------------------------------------------------
# ImageMagick does not keep around anything but *-10 versions, so
# this URL may change. If you want the bleeding edge, you can
# uncomment it and see if it works but you may need to try to
# fetch a newer version (-6, -7, -8, -9, etc.) or you can stick
# wtih the older, stable, archived -10 versions below.
#
# TODO: would be nice if spack had a way to recommend avoiding a
# TODO: bleeding edge version, but not comment it out.
# -------------------------------------------------------------------------
# version('6.9.0-6', 'c1bce7396c22995b8bdb56b7797b4a1b',
# url="http://www.imagemagick.org/download/ImageMagick-6.9.0-6.tar.bz2")
#-------------------------------------------------------------------------
# *-10 versions are archived, so these versions should fetch reliably.
# -------------------------------------------------------------------------
version('6.8.9-10', 'aa050bf9785e571c956c111377bbf57c',
url="http://sourceforge.net/projects/imagemagick/files/old-sources/6.x/6.8/ImageMagick-6.8.9-10.tar.gz/download")
depends_on('libtool')
depends_on('jpeg')
depends_on('libpng')
depends_on('freetype')
depends_on('fontconfig')
depends_on('libtiff')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,19 @@
from spack import *
class Mitos(Package):
"""Mitos is a library and a tool for collecting sampled memory
performance data to view with MemAxes"""
homepage = "https://github.com/scalability-llnl/Mitos"
url = "https://github.com/scalability-llnl/Mitos"
version('0.9.1', 'c6cb57f3cae54f5157affd97ef7ef79e', git='https://github.com/scalability-llnl/Mitos.git', tag='v0.9.1')
depends_on('dyninst@8.2.1:')
depends_on('hwloc')
def install(self, spec, prefix):
with working_dir('spack-build', create=True):
cmake('..', *std_cmake_args)
make()
make("install")

View File

@@ -0,0 +1,33 @@
from spack import *
class R(Package):
"""R is 'GNU S', a freely available language and environment for
statistical computing and graphics which provides a wide va
riety of statistical and graphical techniques: linear and
nonlinear modelling, statistical tests, time series analysis,
classification, clustering, etc. Please consult the R project
homepage for further information."""
homepage = "http://www.example.com"
url = "http://cran.cnr.berkeley.edu/src/base/R-3/R-3.1.2.tar.gz"
version('3.1.2', '3af29ec06704cbd08d4ba8d69250ae74')
depends_on("readline")
depends_on("ncurses")
depends_on("icu")
depends_on("glib")
depends_on("zlib")
depends_on("libtiff")
depends_on("jpeg")
depends_on("cairo")
depends_on("pango")
depends_on("freetype")
depends_on("tcl")
depends_on("tk")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
"--enable-R-shlib",
"--enable-BLAS-shlib")
make()
make("install")

View File

@@ -0,0 +1,20 @@
--- SAMRAI/Makefile.in 2013-05-31 11:04:32.000000000 -0700
+++ SAMRAI/Makefile.in.notools 2014-05-30 10:31:15.135979900 -0700
@@ -8,7 +8,7 @@
##
#########################################################################
-default: library tools
+default: library
SAMRAI = @top_srcdir@
SUBDIR = .
@@ -135,7 +135,7 @@
done
$(MAKE) archive_remove_obj_names
-install: library tools
+install: library
$(INSTALL) -d -m 755 $(INSTDIR)/config
$(INSTALL) -d -m 755 $(INSTDIR)/lib
$(INSTALL) -d -m 755 $(INSTDIR)/bin

View File

@@ -0,0 +1,53 @@
from spack import *
class Samrai(Package):
"""SAMRAI (Structured Adaptive Mesh Refinement Application Infrastructure)
is an object-oriented C++ software library enables exploration of numerical,
algorithmic, parallel computing, and software issues associated with applying
structured adaptive mesh refinement (SAMR) technology in large-scale parallel
application development.
"""
homepage = "https://computation.llnl.gov/project/SAMRAI/"
url = "https://computation.llnl.gov/project/SAMRAI/download/SAMRAI-v3.9.1.tar.gz"
list_url = homepage
version('3.9.1', '232d04d0c995f5abf20d94350befd0b2')
version('3.7.3', '12d574eacadf8c9a70f1bb4cd1a69df6')
version('3.7.2', 'f6a716f171c9fdbf3cb12f71fa6e2737')
version('3.6.3-beta', 'ef0510bf2893042daedaca434e5ec6ce')
version('3.5.2-beta', 'd072d9d681eeb9ada15ce91bea784274')
version('3.5.0-beta', '1ad18a319fc573e12e2b1fbb6f6b0a19')
version('3.4.1-beta', '00814cbee2cb76bf8302aff56bbb385b')
version('3.3.3-beta', '1db3241d3e1cab913dc310d736c34388')
version('3.3.2-beta', 'e598a085dab979498fcb6c110c4dd26c')
version('2.4.4', '04fb048ed0efe7c531ac10c81cc5f6ac')
depends_on("mpi")
depends_on("zlib")
depends_on("hdf5")
depends_on("boost")
# don't build tools with gcc
patch('no-tool-build.patch', when='%gcc')
# TODO: currently hard-coded to use openmpi - be careful!
def install(self, spec, prefix):
mpi = next(m for m in ('openmpi', 'mpich', 'mvapich')
if m in spec)
configure(
"--prefix=%s" % prefix,
"--with-CXX=%s" % spec[mpi].prefix.bin + "/mpic++",
"--with-CC=%s" % spec[mpi].prefix.bin + "/mpicc",
"--with-hdf5=%s" % spec['hdf5'].prefix,
"--with-boost=%s" % spec['boost'].prefix,
"--with-zlib=%s" % spec['zlib'].prefix,
"--without-blas",
"--without-lapack",
"--with-hypre=no",
"--with-petsc=no",
"--enable-opt",
"--disable-debug")
make()
make("install")

View File

@@ -0,0 +1,15 @@
from spack import *
class Activeharmony(Package):
"""Active Harmony: a framework for auto-tuning (the automated search for values to improve the performance of a target application)."""
homepage = "http://www.dyninst.org/harmony"
url = "http://www.dyninst.org/sites/default/files/downloads/harmony/ah-4.5.tar.gz"
version('4.5', 'caee5b864716d376e2c25d739251b2a9')
def install(self, spec, prefix):
make("CFLAGS=-O3")
make("install", 'PREFIX=%s' % prefix)
from spack import *

View File

@@ -0,0 +1,42 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class AdeptUtils(Package):
"""Utility libraries for LLNL performance tools."""
homepage = "https://github.com/scalability-llnl/adept-utils"
url = "https://github.com/scalability-llnl/adept-utils/archive/v1.0.tar.gz"
version('1.0.1', '731a310717adcb004d9d195130efee7d')
version('1.0', '5c6cd9badce56c945ac8551e34804397')
depends_on("boost")
depends_on("mpi")
def install(self, spec, prefix):
cmake(*std_cmake_args)
make()
make("install")

View File

@@ -0,0 +1,34 @@
from spack import *
from spack.util.environment import *
class Apex(Package):
homepage = "http://github.com/khuck/xpress-apex"
#url = "http://github.com/khuck/xpress-apex/archive/v0.1-release-candidate.tar.gz"
url = "http://github.com/khuck/xpress-apex"
#version('0.1', '6e039c224387348296739f6bf360d081')
#version('master', branch='master', git='https://github.com/khuck/xpress-apex.git')
version('2015-10-21', git='https://github.com/khuck/xpress-apex.git', commit='d2e66ddde689120472fc57fc546d8cd80aab745c')
depends_on("binutils+libiberty")
depends_on("boost@1.54:")
depends_on("cmake@2.8.12:")
depends_on("activeharmony@4.5:")
depends_on("ompt-openmp")
def install(self, spec, prefix):
path=get_path("PATH")
path.remove(spec["binutils"].prefix.bin)
path_set("PATH", path)
with working_dir("build", create=True):
cmake('-DBOOST_ROOT=%s' % spec['boost'].prefix,
'-DUSE_BFD=TRUE',
'-DBFD_ROOT=%s' % spec['binutils'].prefix,
'-DUSE_ACTIVEHARMONY=TRUE',
'-DACTIVEHARMONY_ROOT=%s' % spec['activeharmony'].prefix,
'-DUSE_OMPT=TRUE',
'-DOMPT_ROOT=%s' % spec['ompt-openmp'].prefix,
'..', *std_cmake_args)
make()
make("install")

View File

@@ -0,0 +1,41 @@
from spack import *
import os
import shutil
class Arpack(Package):
"""A collection of Fortran77 subroutines designed to solve large scale
eigenvalue problems.
"""
homepage = "http://www.caam.rice.edu/software/ARPACK/"
url = "http://www.caam.rice.edu/software/ARPACK/SRC/arpack96.tar.gz"
version('96', 'fffaa970198b285676f4156cebc8626e')
depends_on('blas')
depends_on('lapack')
def patch(self):
# Filter the cray makefile to make a spack one.
shutil.move('ARMAKES/ARmake.CRAY', 'ARmake.inc')
makefile = FileFilter('ARmake.inc')
# Be sure to use Spack F77 wrapper
makefile.filter('^FC.*', 'FC = f77')
makefile.filter('^FFLAGS.*', 'FFLAGS = -O2 -g')
# Set up some variables.
makefile.filter('^PLAT.*', 'PLAT = ')
makefile.filter('^home.*', 'home = %s' % os.getcwd())
makefile.filter('^BLASdir.*', 'BLASdir = %s' % self.spec['blas'].prefix)
makefile.filter('^LAPACKdir.*', 'LAPACKdir = %s' % self.spec['lapack'].prefix)
# build the library in our own prefix.
makefile.filter('^ARPACKLIB.*', 'ARPACKLIB = %s/libarpack.a' % os.getcwd())
def install(self, spec, prefix):
with working_dir('SRC'):
make('all')
mkdirp(prefix.lib)
install('libarpack.a', prefix.lib)

View File

@@ -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")

View File

@@ -0,0 +1,18 @@
from spack import *
class Atk(Package):
"""ATK provides the set of accessibility interfaces that are
implemented by other toolkits and applications. Using the ATK
interfaces, accessibility tools have full access to view and
control running applications."""
homepage = "https://developer.gnome.org/atk/"
url = "http://ftp.gnome.org/pub/gnome/sources/atk/2.14/atk-2.14.0.tar.xz"
version('2.14.0', 'ecb7ca8469a5650581b1227d78051b8b')
depends_on("glib")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,60 @@
from spack import *
from spack.util.executable import Executable
import os
class Atlas(Package):
"""
Automatically Tuned Linear Algebra Software, generic shared
ATLAS is an approach for the automatic generation and optimization of
numerical software. Currently ATLAS supplies optimized versions for the
complete set of linear algebra kernels known as the Basic Linear Algebra
Subroutines (BLAS), and a subset of the linear algebra routines in the
LAPACK library.
"""
homepage = "http://math-atlas.sourceforge.net/"
version('3.11.34', '0b6c5389c095c4c8785fd0f724ec6825',
url='http://sourceforge.net/projects/math-atlas/files/Developer%20%28unstable%29/3.11.34/atlas3.11.34.tar.bz2/download')
version('3.10.2', 'a4e21f343dec8f22e7415e339f09f6da',
url='http://downloads.sourceforge.net/project/math-atlas/Stable/3.10.2/atlas3.10.2.tar.bz2')
# TODO: make this provide BLAS once it works better. Create a way
# TODO: to mark "beta" packages and require explicit invocation.
# provides('blas')
def patch(self):
# Disable thraed check. LLNL's environment does not allow
# disabling of CPU throttling in a way that ATLAS actually
# understands.
filter_file(r'^\s+if \(thrchk\) exit\(1\);', 'if (0) exit(1);',
'CONFIG/src/config.c')
# TODO: investigate a better way to add the check back in
# TODO: using, say, MSRs. Or move this to a variant.
@when('@:3.10')
def install(self, spec, prefix):
with working_dir('ATLAS-Build', create=True):
configure = Executable('../configure')
configure('--prefix=%s' % prefix, '-C', 'ic', 'cc', '-C', 'if', 'f77', "--dylibs")
make()
make('check')
make('ptcheck')
make('time')
make("install")
def install(self, spec, prefix):
with working_dir('ATLAS-Build', create=True):
configure = Executable('../configure')
configure('--incdir=%s' % prefix.include,
'--libdir=%s' % prefix.lib,
'--cc=cc',
"--shared")
make()
make('check')
make('ptcheck')
make('time')
make("install")

View File

@@ -0,0 +1,14 @@
from spack import *
class Autoconf(Package):
"""Autoconf -- system configuration part of autotools"""
homepage = "https://www.gnu.org/software/autoconf/"
url = "http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz"
version('2.69', '82d05e03b93e45f5a39b828dc9c6c29b')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,51 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Automaded(Package):
"""AutomaDeD (Automata-based Debugging for Dissimilar parallel
tasks) is a tool for automatic diagnosis of performance and
correctness problems in MPI applications. It creates
control-flow models of each MPI process and, when a failure
occurs, these models are leveraged to find the origin of
problems automatically. MPI calls are intercepted (using
wrappers) to create the models. When an MPI application hangs,
AutomaDeD creates a progress-dependence graph that helps
finding the process (or group of processes) that caused the hang.
"""
homepage = "https://github.com/scalability-llnl/AutomaDeD"
url = "https://github.com/scalability-llnl/AutomaDeD/archive/v1.0.tar.gz"
version('1.0', '16a3d4def2c4c77d0bc4b21de8b3ab03')
depends_on('mpi')
depends_on('boost')
depends_on('callpath')
def install(self, spec, prefix):
cmake("-DSTATE_TRACKER_WITH_CALLPATH=ON", *std_cmake_args)
make()
make("install")

View File

@@ -0,0 +1,16 @@
from spack import *
class Automake(Package):
"""Automake -- make file builder part of autotools"""
homepage = "http://www.gnu.org/software/automake/"
url = "http://ftp.gnu.org/gnu/automake/automake-1.14.tar.gz"
version('1.14.1', 'd052a3e884631b9c7892f2efce542d75')
depends_on('autoconf')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -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")

View File

@@ -0,0 +1,27 @@
from spack import *
from glob import glob
class Bib2xhtml(Package):
"""bib2xhtml is a program that converts BibTeX files into HTML."""
homepage = "http://www.spinellis.gr/sw/textproc/bib2xhtml/"
url='http://www.spinellis.gr/sw/textproc/bib2xhtml/bib2xhtml-v3.0-15-gf506.tar.gz'
version('3.0-15-gf506', 'a26ba02fe0053bbbf2277bdf0acf8645')
def url_for_version(self, v):
return ('http://www.spinellis.gr/sw/textproc/bib2xhtml/bib2xhtml-v%s.tar.gz' % v)
def install(self, spec, prefix):
# Add the bst include files to the install directory
bst_include = join_path(prefix.share, 'bib2xhtml')
mkdirp(bst_include)
for bstfile in glob('html-*bst'):
install(bstfile, bst_include)
# Install the script and point it at the user's favorite perl
# and the bst include directory.
mkdirp(prefix.bin)
install('bib2xhtml', prefix.bin)
filter_file(r'#!/usr/bin/perl',
'#!/usr/bin/env BSTINPUTS=%s perl' % bst_include,
join_path(prefix.bin, 'bib2xhtml'))

View File

@@ -0,0 +1,30 @@
from spack import *
class Binutils(Package):
"""GNU binutils, which contain the linker, assembler, objdump and others"""
homepage = "http://www.gnu.org/software/binutils/"
url = "ftp://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2"
version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66')
version('2.24', 'e0f71a7b2ddab0f8612336ac81d9636b')
version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')
variant('libiberty', default=False, description='Also install libiberty.')
def install(self, spec, prefix):
configure_args = [
'--prefix=%s' % prefix,
'--disable-dependency-tracking',
'--enable-interwork',
'--enable-multilib',
'--enable-shared',
'--enable-64-bit-bfd',
'--enable-targets=all']
if '+libiberty' in spec:
configure_args.append('--enable-install-libiberty')
configure(*configure_args)
make()
make("install")

View File

@@ -0,0 +1,17 @@
from spack import *
class Bison(Package):
"""Bison is a general-purpose parser generator that converts
an annotated context-free grammar into a deterministic LR or
generalized LR (GLR) parser employing LALR(1) parser tables."""
homepage = "http://www.gnu.org/software/bison/"
url = "http://ftp.gnu.org/gnu/bison/bison-3.0.tar.gz"
version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,66 @@
from spack import *
class Boost(Package):
"""Boost provides free peer-reviewed portable C++ source
libraries, emphasizing libraries that work well with the C++
Standard Library.
Boost libraries are intended to be widely useful, and usable
across a broad spectrum of applications. The Boost license
encourages both commercial and non-commercial use.
"""
homepage = "http://www.boost.org"
url = "http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2"
list_url = "http://sourceforge.net/projects/boost/files/boost/"
list_depth = 2
version('1.59.0', '6aa9a5c6a4ca1016edd0ed1178e3cb87')
version('1.58.0', 'b8839650e61e9c1c0a89f371dd475546')
version('1.57.0', '1be49befbdd9a5ce9def2983ba3e7b76')
version('1.56.0', 'a744cf167b05d72335f27c88115f211d')
version('1.55.0', 'd6eef4b4cacb2183f2bf265a5a03a354')
version('1.54.0', '15cb8c0803064faef0c4ddf5bc5ca279')
version('1.53.0', 'a00d22605d5dbcfb4c9936a9b35bc4c2')
version('1.52.0', '3a855e0f919107e0ca4de4d84ad3f750')
version('1.51.0', '4b6bd483b692fd138aef84ed2c8eb679')
version('1.50.0', '52dd00be775e689f55a987baebccc462')
version('1.49.0', '0d202cb811f934282dea64856a175698')
version('1.48.0', 'd1e9a7a7f532bb031a3c175d86688d95')
version('1.47.0', 'a2dc343f7bc7f83f8941e47ed4a18200')
version('1.46.1', '7375679575f4c8db605d426fc721d506')
version('1.46.0', '37b12f1702319b73876b0097982087e0')
version('1.45.0', 'd405c606354789d0426bc07bea617e58')
version('1.44.0', 'f02578f5218f217a9f20e9c30e119c6a')
version('1.43.0', 'dd49767bfb726b0c774f7db0cef91ed1')
version('1.42.0', '7bf3b4eb841b62ffb0ade2b82218ebe6')
version('1.41.0', '8bb65e133907db727a2a825c5400d0a6')
version('1.40.0', 'ec3875caeac8c52c7c129802a8483bd7')
version('1.39.0', 'a17281fd88c48e0d866e1a12deecbcc0')
version('1.38.0', '5eca2116d39d61382b8f8235915cb267')
version('1.37.0', '8d9f990bfb7e83769fa5f1d6f065bc92')
version('1.36.0', '328bfec66c312150e4c2a78dcecb504b')
version('1.35.0', 'dce952a7214e72d6597516bcac84048b')
version('1.34.1', '2d938467e8a448a2c9763e0a9f8ca7e5')
version('1.34.0', 'ed5b9291ffad776f8757a916e1726ad0')
def url_for_version(self, version):
"""Handle Boost's weird URLs, which write the version two different ways."""
parts = [str(p) for p in Version(version)]
dots = ".".join(parts)
underscores = "_".join(parts)
return "http://downloads.sourceforge.net/project/boost/boost/%s/boost_%s.tar.bz2" % (
dots, underscores)
def install(self, spec, prefix):
bootstrap = Executable('./bootstrap.sh')
bootstrap()
# b2 used to be called bjam, before 1.47 (sigh)
b2name = './b2' if spec.satisfies('@1.47:') else './bjam'
b2 = Executable(b2name)
b2('install',
'-j %s' % make_jobs,
'--prefix=%s' % prefix)

View File

@@ -0,0 +1,16 @@
--- Makefile 2015-02-26 10:50:00.000000000 -0800
+++ Makefile.new 2015-07-29 18:03:59.891357399 -0700
@@ -22,10 +22,10 @@
#
INC =
-GCC_PREFIX = $(shell dirname `which gcc`)
+GCC_PREFIX =
GCC_SUFFIX =
-CC = $(GCC_PREFIX)/gcc$(GCC_SUFFIX)
-CPP = $(GCC_PREFIX)/g++$(GCC_SUFFIX)
+CC = cc
+CPP = c++
CXX = $(CPP)
HEADERS = $(wildcard *.h)
BOWTIE_MM = 1

View File

@@ -0,0 +1,24 @@
from spack import *
from glob import glob
class Bowtie2(Package):
"""Description"""
homepage = "bowtie-bio.sourceforge.net/bowtie2/index.shtml"
version('2.2.5','51fa97a862d248d7ee660efc1147c75f', url = "http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.5/bowtie2-2.2.5-source.zip")
patch('bowtie2-2.5.patch',when='@2.2.5', level=0)
def install(self, spec, prefix):
make()
mkdirp(prefix.bin)
for bow in glob("bowtie2*"):
install(bow, prefix.bin)
# install('bowtie2',prefix.bin)
# install('bowtie2-align-l',prefix.bin)
# install('bowtie2-align-s',prefix.bin)
# install('bowtie2-build',prefix.bin)
# install('bowtie2-build-l',prefix.bin)
# install('bowtie2-build-s',prefix.bin)
# install('bowtie2-inspect',prefix.bin)
# install('bowtie2-inspect-l',prefix.bin)
# install('bowtie2-inspect-s',prefix.bin)

View File

@@ -0,0 +1,25 @@
from spack import *
class Boxlib(Package):
"""BoxLib, a software framework for massively parallel
block-structured adaptive mesh refinement (AMR) codes."""
homepage = "https://ccse.lbl.gov/BoxLib/"
url = "https://ccse.lbl.gov/pub/Downloads/BoxLib.git";
# TODO: figure out how best to version this. No tags in the repo!
version('master', git='https://ccse.lbl.gov/pub/Downloads/BoxLib.git')
depends_on('mpi')
def install(self, spec, prefix):
args = std_cmake_args
args += ['-DCCSE_ENABLE_MPI=1',
'-DCMAKE_C_COMPILER=%s' % which('mpicc'),
'-DCMAKE_CXX_COMPILER=%s' % which('mpicxx'),
'-DCMAKE_Fortran_COMPILER=%s' % which('mpif90')]
cmake('.', *args)
make()
make("install")

View File

@@ -0,0 +1,36 @@
from spack import *
from glob import glob
class Bzip2(Package):
"""bzip2 is a freely available, patent free high-quality data
compressor. It typically compresses files to within 10% to 15%
of the best available techniques (the PPM family of statistical
compressors), whilst being around twice as fast at compression
and six times faster at decompression."""
homepage = "http://www.bzip.org"
url = "http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz"
version('1.0.6', '00b516f4704d4a7cb50a1d97e6e8e15b')
def install(self, spec, prefix):
# No configure system -- have to filter the makefile for this package.
filter_file(r'CC=gcc', 'CC=cc', 'Makefile', string=True)
make('-f', 'Makefile-libbz2_so')
make('clean')
make("install", "PREFIX=%s" % prefix)
bzip2_exe = join_path(prefix.bin, 'bzip2')
install('bzip2-shared', bzip2_exe)
for i, libfile in enumerate(glob('libbz2.so*')):
install(libfile, prefix.lib)
if i == 0:
symlink(join_path(prefix.lib, libfile), join_path(prefix.lib, 'libbz2.so'))
bunzip2 = join_path(prefix.bin, 'bunzip2')
remove(bunzip2)
symlink(bzip2_exe, bunzip2)
bzcat = join_path(prefix.bin, 'bzcat')
remove(bzcat)
symlink(bzip2_exe, bzcat)

View File

@@ -0,0 +1,19 @@
from spack import *
class Cairo(Package):
"""Cairo is a 2D graphics library with support for multiple output devices."""
homepage = "http://cairographics.org"
url = "http://cairographics.org/releases/cairo-1.14.0.tar.xz"
version('1.14.0', 'fc3a5edeba703f906f2241b394f0cced')
depends_on("libpng")
depends_on("glib")
depends_on("pixman")
depends_on("fontconfig@2.10.91:") # Require newer version of fontconfig.
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
"--enable-tee")
make()
make("install")

View File

@@ -0,0 +1,47 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Callpath(Package):
"""Library for representing callpaths consistently in
distributed-memory performance tools."""
homepage = "https://github.com/scalability-llnl/callpath"
url = "https://github.com/scalability-llnl/callpath/archive/v1.0.1.tar.gz"
version('1.0.2', 'b1994d5ee7c7db9d27586fc2dcf8f373')
version('1.0.1', '0047983d2a52c5c335f8ba7f5bab2325')
depends_on("libelf")
depends_on("libdwarf")
depends_on("dyninst")
depends_on("adept-utils")
depends_on("mpi")
def install(self, spec, prefix):
# TODO: offer options for the walker used.
cmake('.', "-DCALLPATH_WALKER=dyninst", *std_cmake_args)
make()
make("install")

View File

@@ -0,0 +1,35 @@
from spack import *
import os
class Cblas(Package):
"""The BLAS (Basic Linear Algebra Subprograms) are routines that
provide standard building blocks for performing basic vector and
matrix operations."""
homepage = "http://www.netlib.org/blas/_cblas/"
# tarball has no version, but on the date below, this MD5 was correct.
version('2015-06-06', '1e8830f622d2112239a4a8a83b84209a',
url='http://www.netlib.org/blas/blast-forum/cblas.tgz')
depends_on('blas')
parallel = False
def patch(self):
mf = FileFilter('Makefile.in')
mf.filter('^BLLIB =.*', 'BLLIB = %s/libblas.a' % self.spec['blas'].prefix.lib)
mf.filter('^CC =.*', 'CC = cc')
mf.filter('^FC =.*', 'FC = f90')
def install(self, spec, prefix):
make('all')
mkdirp(prefix.lib)
mkdirp(prefix.include)
# Rename the generated lib file to libcblas.a
install('./lib/cblas_LINUX.a', '%s/libcblas.a' % prefix.lib)
install('./include/cblas.h','%s' % prefix.include)
install('./include/cblas_f77.h','%s' % prefix.include)

View File

@@ -0,0 +1,30 @@
from spack import *
class Cgm(Package):
"""The Common Geometry Module, Argonne (CGMA) is a code library
which provides geometry functionality used for mesh generation and
other applications."""
homepage = "http://trac.mcs.anl.gov/projects/ITAPS/wiki/CGM"
url = "http://ftp.mcs.anl.gov/pub/fathom/cgm13.1.1.tar.gz"
version('13.1.1', '4e8dbc4ba8f65767b29f985f7a23b01f')
version('13.1.0', 'a6c7b22660f164ce893fb974f9cb2028')
version('13.1' , '95f724bda04919fc76818a5b7bc0b4ed')
depends_on("mpi")
def patch(self):
filter_file('^(#include "CGMParallelConventions.h")',
'//\1',
'geom/parallel/CGMReadParallel.cpp')
def install(self, spec, prefix):
configure("--with-mpi",
"--prefix=%s" % prefix,
"CFLAGS=-static",
"CXXFLAGS=-static",
"FCFLAGS=-static")
make()
make("install")

View File

@@ -0,0 +1,51 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Clang(Package):
"""The goal of the Clang project is to create a new C, C++,
Objective C and Objective C++ front-end for the LLVM compiler.
"""
homepage = 'http://clang.llvm.org'
url = 'http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz'
depends_on('llvm@3.7.0', when='@3.7.0')
depends_on('llvm@3.6.2', when='@3.6.2')
depends_on('llvm@3.5.1', when='@3.5.1')
version('3.7.0', '8f9d27335e7331cf0a4711e952f21f01', url='http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz')
version('3.6.2', 'ff862793682f714bb7862325b9c06e20', url='http://llvm.org/releases/3.6.2/cfe-3.6.2.src.tar.xz')
version('3.5.1', '93f9532f8f7e6f1d8e5c1116907051cb', url='http://llvm.org/releases/3.5.1/cfe-3.5.1.src.tar.xz')
def install(self, spec, prefix):
env['CXXFLAGS'] = self.compiler.cxx11_flag
with working_dir('spack-build', create=True):
cmake('..',
'-DCLANG_PATH_TO_LLVM_BUILD=%s' % spec['llvm'].prefix,
'-DLLVM_MAIN_SRC_DIR=%s' % spec['llvm'].prefix,
*std_cmake_args)
make()
make("install")

View File

@@ -0,0 +1,26 @@
from spack import *
class Cloog(Package):
"""CLooG is a free software and library to generate code for
scanning Z-polyhedra. That is, it finds a code (e.g. in C,
FORTRAN...) that reaches each integral point of one or more
parameterized polyhedra."""
homepage = "http://www.cloog.org"
url = "http://www.bastoul.net/cloog/pages/download/count.php3?url=./cloog-0.18.1.tar.gz"
list_url = "http://www.bastoul.net/cloog/pages/download"
version('0.18.1', 'e34fca0540d840e5d0f6427e98c92252')
version('0.18.0', 'be78a47bd82523250eb3e91646db5b3d')
version('0.17.0', '0aa3302c81f65ca62c114e5264f8a802')
depends_on("gmp")
depends_on("isl")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
"--with-osl=no",
"--with-isl=%s" % spec['isl'].prefix,
"--with-gmp=%s" % spec['gmp'].prefix)
make()
make("install")

View File

@@ -0,0 +1,45 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Cmake(Package):
"""A cross-platform, open-source build system. CMake is a family of
tools designed to build, test and package software."""
homepage = 'https://www.cmake.org'
version('2.8.10.2', '097278785da7182ec0aea8769d06860c',
url = 'http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz')
version('3.0.2', 'db4c687a31444a929d2fdc36c4dfb95f',
url = 'http://www.cmake.org/files/v3.0/cmake-3.0.2.tar.gz')
# version('3.0.1', 'e2e05d84cb44a42f1371d9995631dcf5')
# version('3.0.0', '21a1c85e1a3b803c4b48e7ff915a863e')
def install(self, spec, prefix):
configure('--prefix=' + prefix,
'--parallel=' + str(make_jobs))
make()
make('install')

View File

@@ -0,0 +1,17 @@
from spack import *
class Coreutils(Package):
"""The GNU Core Utilities are the basic file, shell and text
manipulation utilities of the GNU operating system. These are
the core utilities which are expected to exist on every
operating system.
"""
homepage = "http://www.gnu.org/software/coreutils/"
url = "http://ftp.gnu.org/gnu/coreutils/coreutils-8.23.tar.xz"
version('8.23', 'abed135279f87ad6762ce57ff6d89c41')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,15 @@
from spack import *
class Cppcheck(Package):
"""A tool for static C/C++ code analysis."""
homepage = "http://cppcheck.sourceforge.net/"
url = "http://downloads.sourceforge.net/project/cppcheck/cppcheck/1.68/cppcheck-1.68.tar.bz2"
version('1.68', 'c015195f5d61a542f350269030150708')
def install(self, spec, prefix):
# cppcheck does not have a configure script
make()
# manually install the final cppcheck binary
mkdirp(prefix.bin)
install('cppcheck', prefix.bin)

View File

@@ -0,0 +1,15 @@
from spack import *
class Cram(Package):
"""Cram runs many small MPI jobs inside one large MPI job."""
homepage = "https://github.com/scalability-llnl/cram"
url = "http://github.com/scalability-llnl/cram/archive/v1.0.1.tar.gz"
version('1.0.1', 'c73711e945cf5dc603e44395f6647f5e')
depends_on("mpi")
def install(self, spec, prefix):
cmake(".", *std_cmake_args)
make()
make("install")

View File

@@ -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")

View File

@@ -0,0 +1,55 @@
# FIXME: Add copyright statement
#
from spack import *
from contextlib import closing
class Cube(Package):
"""Cube the profile viewer for Score-P and Scalasca profiles. It
displays a multi-dimensional performance space consisting
of the dimensions (i) performance metric, (ii) call path,
and (iii) system resource."""
homepage = "http://www.scalasca.org/software/cube-4.x/download.html"
url = "http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz"
version('4.2.3', '8f95b9531f5a8f8134f279c2767c9b20')
version('4.3TP1', 'a2090fbc7b2ba394bd5c09ba971e237f',
url = 'http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3-TP1.tar.gz')
# Using CC as C++ compiler provides quirky workaround for a Score-P build system attempt
# to guess a matching C compiler when configuring scorep-score
backend_user_provided = """\
CC=cc
CXX=CC
F77=f77
FC=f90
#CFLAGS=-fPIC
#CXXFLAGS=-fPIC
"""
frontend_user_provided = """\
CC_FOR_BUILD=cc
CXX_FOR_BUILD=CC
F77_FOR_BUILD=f70
FC_FOR_BUILD=f90
"""
def install(self, spec, prefix):
# Use a custom compiler configuration, otherwise the score-p
# build system messes with spack's compiler settings.
# Create these three files in the build directory
with closing(open("vendor/common/build-config/platforms/platform-backend-user-provided", "w")) as backend_file:
backend_file.write(self.backend_user_provided)
with closing(open("vendor/common/build-config/platforms/platform-frontend-user-provided", "w")) as frontend_file:
frontend_file.write(self.frontend_user_provided)
configure_args = ["--prefix=%s" % prefix,
"--with-custom-compilers",
"--without-paraver",
"--without-gui"]
configure(*configure_args)
make(parallel=False)
make("install", parallel=False)

View File

@@ -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")

View File

@@ -0,0 +1,31 @@
from spack import *
class Dbus(Package):
"""D-Bus is a message bus system, a simple way for applications to
talk to one another. D-Bus supplies both a system daemon (for
events such new hardware device printer queue ) and a
per-user-login-session daemon (for general IPC needs among user
applications). Also, the message bus is built on top of a
general one-to-one message passing framework, which can be used
by any two applications to communicate directly (without going
through the message bus daemon)."""
homepage = "http://dbus.freedesktop.org/"
url = "http://dbus.freedesktop.org/releases/dbus/dbus-1.8.8.tar.gz"
version('1.9.0', 'ec6895a4d5c0637b01f0d0e7689e2b36')
version('1.8.8', 'b9f4a18ee3faa1e07c04aa1d83239c43')
version('1.8.6', '6a08ba555d340e9dfe2d623b83c0eea8')
version('1.8.4', '4717cb8ab5b80978fcadf2b4f2f72e1b')
version('1.8.2', 'd6f709bbec0a022a1847c7caec9d6068')
def install(self, spec, prefix):
configure(
"--prefix=%s" % prefix,
"--disable-systemd")
make()
make("install")
# dbus needs a machine id generated after install
dbus_uuidgen = Executable(join_path(prefix.bin, 'dbus-uuidgen'))
dbus_uuidgen('--ensure')

View File

@@ -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)

View File

@@ -0,0 +1,25 @@
#------------------------------------------------------------------------------
# Author: Justin Too <justin@doubleotoo.com>
# Date: September 11, 2015
#------------------------------------------------------------------------------
from spack import *
class Doxygen(Package):
"""Doxygen is the de facto standard tool for generating documentation
from annotated C++ sources, but it also supports other popular programming
languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba,
Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D..
"""
homepage = "http://www.stack.nl/~dimitri/doxygen/"
url = "http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.10.src.tar.gz"
version('1.8.10', '79767ccd986f12a0f949015efb5f058f')
depends_on("cmake@2.8.12:")
def install(self, spec, prefix):
cmake('.', *std_cmake_args)
make()
make("install")

View File

@@ -0,0 +1,14 @@
from spack import *
class Dri2proto(Package):
"""DRI2 Protocol Headers."""
homepage = "http://http://cgit.freedesktop.org/xorg/proto/dri2proto/"
url = "http://xorg.freedesktop.org/releases/individual/proto/dri2proto-2.8.tar.gz"
version('2.8', '19ea18f63d8ae8053c9fa84b60365b77')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,20 @@
import os
from spack import *
class Dtcmp(Package):
"""The Datatype Comparison Library provides comparison operations and
parallel sort algorithms for MPI applications."""
homepage = "https://github.com/hpc/dtcmp"
url = "https://github.com/hpc/dtcmp/releases/download/v1.0.3/dtcmp-1.0.3.tar.gz"
version('1.0.3', 'cdd8ccf71e8ff67de2558594a7fcd317')
depends_on('mpi')
depends_on('lwgrp')
def install(self, spec, prefix):
configure("--prefix=" + prefix,
"--with-lwgrp=" + spec['lwgrp'].prefix)
make()
make("install")

View File

@@ -0,0 +1,68 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Dyninst(Package):
"""API for dynamic binary instrumentation. Modify programs while they
are executing without recompiling, re-linking, or re-executing."""
homepage = "https://paradyn.org"
url = "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1.2/DyninstAPI-8.1.2.tgz"
list_url = "http://www.dyninst.org/downloads/dyninst-8.x"
version('8.2.1', 'abf60b7faabe7a2e4b54395757be39c7',
url="http://www.paradyn.org/release8.2/DyninstAPI-8.2.1.tgz")
version('8.1.2', 'bf03b33375afa66fe0efa46ce3f4b17a',
url="http://www.paradyn.org/release8.1.2/DyninstAPI-8.1.2.tgz")
version('8.1.1', 'd1a04e995b7aa70960cd1d1fac8bd6ac',
url="http://www.paradyn.org/release8.1/DyninstAPI-8.1.1.tgz")
depends_on("libelf")
depends_on("libdwarf")
depends_on("boost@1.42:")
# new version uses cmake
def install(self, spec, prefix):
libelf = spec['libelf'].prefix
libdwarf = spec['libdwarf'].prefix
with working_dir('spack-build', create=True):
cmake('..',
'-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include,
'-DBoost_LIBRARY_DIR=%s' % spec['boost'].prefix.lib,
'-DBoost_NO_SYSTEM_PATHS=TRUE',
'-DLIBELF_INCLUDE_DIR=%s' % join_path(libelf.include, 'libelf'),
'-DLIBELF_LIBRARIES=%s' % join_path(libelf.lib, 'libelf.so'),
'-DLIBDWARF_INCLUDE_DIR=%s' % libdwarf.include,
'-DLIBDWARF_LIBRARIES=%s' % join_path(libdwarf.lib, 'libdwarf.so'),
*std_cmake_args)
make()
make("install")
@when('@:8.1')
def install(self, spec, prefix):
configure("--prefix=" + prefix)
make()
make("install")

View File

@@ -0,0 +1,26 @@
from spack import *
class Elfutils(Package):
"""elfutils is a collection of various binary tools such as
eu-objdump, eu-readelf, and other utilities that allow you to
inspect and manipulate ELF files. Refer to Table 5.Tools Included
in elfutils for Red Hat Developer for a complete list of binary
tools that are distributed with the Red Hat Developer Toolset
version of elfutils."""
homepage = "https://fedorahosted.org/elfutils/"
version('0.163',
git='git://git.fedorahosted.org/git/elfutils.git',
tag='elfutils-0.163')
provides('elf')
def install(self, spec, prefix):
autoreconf = which('autoreconf')
autoreconf('-if')
configure('--prefix=%s' % prefix, '--enable-maintainer-mode')
make()
make("install")

View File

@@ -0,0 +1,46 @@
from spack import *
# typical working line with extrae 3.0.1
# ./configure --prefix=/usr/local --with-mpi=/usr/lib64/mpi/gcc/openmpi --with-unwind=/usr/local --with-papi=/usr --with-dwarf=/usr --with-elf=/usr --with-dyninst=/usr --with-binutils=/usr --with-xml-prefix=/usr --enable-openmp --enable-nanos --enable-pthread --disable-parallel-merge LDFLAGS=-pthread
class Extrae(Package):
"""Extrae is the package devoted to generate tracefiles which can
be analyzed later by Paraver. Extrae is a tool that uses
different interposition mechanisms to inject probes into the
target application so as to gather information regarding the
application performance. The Extrae instrumentation package can
instrument the MPI programin model, and the following parallel
programming models either alone or in conjunction with MPI :
OpenMP, CUDA, OpenCL, pthread, OmpSs"""
homepage = "http://www.bsc.es/computer-sciences/extrae"
url = "http://www.bsc.es/ssl/apps/performanceTools/files/extrae-3.0.1.tar.bz2"
version('3.0.1', 'a6a8ca96cd877723cd8cc5df6bdb922b')
depends_on("mpi")
depends_on("dyninst")
depends_on("libunwind")
depends_on("boost")
depends_on("libdwarf")
depends_on("papi")
def install(self, spec, prefix):
if 'openmpi' in spec:
mpi = spec['openmpi']
elif 'mpich' in spec:
mpi = spec['mpich']
elif 'mvapich2' in spec:
mpi = spec['mvapich2']
configure("--prefix=%s" % prefix,
"--with-mpi=%s" % mpi.prefix,
"--with-unwind=%s" % spec['libunwind'].prefix,
"--with-dyninst=%s" % spec['dyninst'].prefix,
"--with-boost=%s" % spec['boost'].prefix,
"--with-dwarf=%s" % spec['libdwarf'].prefix,
"--with-papi=%s" % spec['papi'].prefix,
"--with-dyninst-headers=%s" % spec['dyninst'].prefix.include,
"--with-dyninst-libs=%s" % spec['dyninst'].prefix.lib)
make()
make("install", parallel=False)

View File

@@ -0,0 +1,14 @@
from spack import *
class ExuberantCtags(Package):
"""The canonical ctags generator"""
homepage = "ctags.sourceforge.net"
url = "http://downloads.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz"
version('5.8', 'c00f82ecdcc357434731913e5b48630d')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
make()
make("install")

View File

@@ -0,0 +1,18 @@
from spack import *
class Fish(Package):
"""fish is a smart and user-friendly command line shell for OS X, Linux, and
the rest of the family.
"""
homepage = "http://fishshell.com/"
url = "http://fishshell.com/files/2.2.0/fish-2.2.0.tar.gz"
list_url = homepage
version('2.2.0', 'a76339fd14ce2ec229283c53e805faac48c3e99d9e3ede9d82c0554acfc7b77a')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
make()
make("install")

View File

@@ -0,0 +1,15 @@
from spack import *
class Flex(Package):
"""Flex is a tool for generating scanners."""
homepage = "http://flex.sourceforge.net/"
url = "http://download.sourceforge.net/flex/flex-2.5.39.tar.gz"
version('2.5.39', 'e133e9ead8ec0a58d81166b461244fde')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -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")

View File

@@ -0,0 +1,16 @@
from spack import *
class Fontconfig(Package):
"""Fontconfig customizing font access"""
homepage = "http://www.freedesktop.org/wiki/Software/fontconfig/"
url = "http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.1.tar.gz"
version('2.11.1' , 'e75e303b4f7756c2b16203a57ac87eba')
depends_on('freetype')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,16 @@
from spack import *
class Freetype(Package):
"""Font package"""
homepage = "http://http://www.freetype.org"
url = "http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz"
version('2.5.3' , 'cafe9f210e45360279c730d27bf071e9')
depends_on('libpng')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,35 @@
from spack import *
class Gasnet(Package):
"""GASNet is a language-independent, low-level networking layer
that provides network-independent, high-performance communication
primitives tailored for implementing parallel global address space
SPMD languages and libraries such as UPC, Co-Array Fortran, SHMEM,
Cray Chapel, and Titanium.
"""
homepage = "http://gasnet.lbl.gov"
url = "http://gasnet.lbl.gov/GASNet-1.24.0.tar.gz"
version('1.24.0', 'c8afdf48381e8b5a7340bdb32ca0f41a')
def install(self, spec, prefix):
# TODO: don't use paths with @ in them.
change_sed_delimiter('@', ';', 'configure')
configure("--prefix=%s" % prefix,
# TODO: factor IB suport out into architecture description.
"--enable-ibv",
"--enable-udp",
"--disable-mpi",
"--enable-par",
"--enable-mpi-compat",
"--enable-segment-fast",
"--disable-aligned-segments",
# TODO: make an option so that Legion can request builds with/without this.
# See the Legion webpage for details on when to/not to use.
"--disable-pshm",
"--with-segment-mmap-max=64MB")
make()
make("install")

View File

@@ -0,0 +1,122 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
from contextlib import closing
from glob import glob
class Gcc(Package):
"""The GNU Compiler Collection includes front ends for C, C++,
Objective-C, Fortran, and Java."""
homepage = "https://gcc.gnu.org"
url = "http://open-source-box.org/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2"
list_url = 'http://open-source-box.org/gcc/'
list_depth = 2
DEPENDS_ON_ISL_PREDICATE = '@5.0:'
version('5.2.0', 'a51bcfeb3da7dd4c623e27207ed43467')
version('4.9.3', '6f831b4d251872736e8e9cc09746f327')
version('4.9.2', '4df8ee253b7f3863ad0b86359cd39c43')
version('4.9.1', 'fddf71348546af523353bd43d34919c1')
version('4.8.5', '80d2c2982a3392bb0b89673ff136e223')
version('4.8.4', '5a84a30839b2aca22a2d723de2a626ec')
version('4.7.4', '4c696da46297de6ae77a82797d2abe28')
version('4.6.4', 'b407a3d1480c11667f293bfb1f17d1a4')
version('4.5.4', '27e459c2566b8209ab064570e1b378f7')
depends_on("mpfr")
depends_on("gmp")
depends_on("mpc") # when @4.5:
depends_on("binutils~libiberty")
# Save these until we can do optional deps.
depends_on("isl", when=DEPENDS_ON_ISL_PREDICATE)
#depends_on("ppl")
#depends_on("cloog")
def install(self, spec, prefix):
# libjava/configure needs a minor fix to install into spack paths.
filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure', string=True)
enabled_languages = set(('c', 'c++', 'fortran', 'java', 'objc'))
if spec.satisfies("@4.7.1:"):
enabled_languages.add('go')
# Generic options to compile GCC
options = ["--prefix=%s" % prefix,
"--libdir=%s/lib64" % prefix,
"--disable-multilib",
"--enable-languages=" + ','.join(enabled_languages),
"--with-mpc=%s" % spec['mpc'].prefix,
"--with-mpfr=%s" % spec['mpfr'].prefix,
"--with-gmp=%s" % spec['gmp'].prefix,
"--enable-lto",
"--with-gnu-ld",
"--with-gnu-as",
"--with-quad"]
# Binutils
binutils_options = ["--with-stage1-ldflags=%s" % self.rpath_args,
"--with-boot-ldflags=%s" % self.rpath_args,
"--with-ld=%s/bin/ld" % spec['binutils'].prefix,
"--with-as=%s/bin/as" % spec['binutils'].prefix]
options.extend(binutils_options)
# Isl
if spec.satisfies(Gcc.DEPENDS_ON_ISL_PREDICATE):
isl_options = ["--with-isl=%s" % spec['isl'].prefix]
options.extend(isl_options)
# Rest of install is straightforward.
configure(*options)
make()
make("install")
self.write_rpath_specs()
@property
def spec_dir(self):
# e.g. lib64/gcc/x86_64-unknown-linux-gnu/4.9.2
spec_dir = glob("%s/lib64/gcc/*/*" % self.prefix)
return spec_dir[0] if spec_dir else None
def write_rpath_specs(self):
"""Generate a spec file so the linker adds a rpath to the libs
the compiler used to build the executable."""
if not self.spec_dir:
tty.warn("Could not install specs for %s." % self.spec.format('$_$@'))
return
gcc = Executable(join_path(self.prefix.bin, 'gcc'))
lines = gcc('-dumpspecs', return_output=True).strip().split("\n")
specs_file = join_path(self.spec_dir, 'specs')
with closing(open(specs_file, 'w')) as out:
for line in lines:
out.write(line + "\n")
if line.startswith("*link:"):
out.write("-rpath %s/lib:%s/lib64 \\\n"% (self.prefix, self.prefix))
set_install_permissions(specs_file)

View File

@@ -0,0 +1,22 @@
from spack import *
class GdkPixbuf(Package):
"""The Gdk Pixbuf is a toolkit for image loading and pixel buffer
manipulation. It is used by GTK+ 2 and GTK+ 3 to load and
manipulate images. In the past it was distributed as part of
GTK+ 2 but it was split off into a separate package in
preparation for the change to GTK+ 3."""
homepage = "https://developer.gnome.org/gdk-pixbuf/"
url = "http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.31/gdk-pixbuf-2.31.1.tar.xz"
version('2.31.2', '6be6bbc4f356d4b79ab4226860ab8523')
depends_on("glib")
depends_on("jpeg")
depends_on("libpng")
depends_on("libtiff")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,31 @@
from spack import *
class Geos(Package):
"""GEOS (Geometry Engine - Open Source) is a C++ port of the Java
Topology Suite (JTS). As such, it aims to contain the complete
functionality of JTS in C++. This includes all the OpenGIS
Simple Features for SQL spatial predicate functions and spatial
operators, as well as specific JTS enhanced topology functions."""
homepage = "http://trac.osgeo.org/geos/"
url = "http://download.osgeo.org/geos/geos-3.4.2.tar.bz2"
version('3.4.2', 'fc5df2d926eb7e67f988a43a92683bae')
version('3.4.1', '4c930dec44c45c49cd71f3e0931ded7e')
version('3.4.0', 'e41318fc76b5dc764a69d43ac6b18488')
version('3.3.9', '4794c20f07721d5011c93efc6ccb8e4e')
version('3.3.8', '75be476d0831a2d14958fed76ca266de')
version('3.3.7', '95ab996d22672b067d92c7dee2170460')
version('3.3.6', '6fadfb941541875f4976f75fb0bbc800')
version('3.3.5', '2ba61afb7fe2c5ddf642d82d7b16e75b')
version('3.3.4', '1bb9f14d57ef06ffa41cb1d67acb55a1')
version('3.3.3', '8454e653d7ecca475153cc88fd1daa26')
extends('python')
depends_on('swig')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
"--enable-python")
make()
make("install")

View File

@@ -0,0 +1,21 @@
import os
from spack import *
class Gflags(Package):
"""The gflags package contains a C++ library that implements
commandline flags processing. It includes built-in support for
standard types such as string and the ability to define flags
in the source file in which they are used. Online documentation
available at: https://gflags.github.io/gflags/"""
homepage = "https://gflags.github.io/gflags"
url = "https://github.com/gflags/gflags/archive/v2.1.2.tar.gz"
version('2.1.2', 'ac432de923f9de1e9780b5254884599f')
def install(self, spec, prefix):
cmake("-DCMAKE_INSTALL_PREFIX=" + prefix,
"-DBUILD_SHARED_LIBS=ON")
make()
make("test")
make("install")

View File

@@ -0,0 +1,17 @@
from spack import *
class Ghostscript(Package):
"""an interpreter for the PostScript language and for PDF. """
homepage = "http://ghostscript.com/"
url = "http://downloads.ghostscript.com/public/ghostscript-9.16.tar.gz"
version('9.16', '829319325bbdb83f5c81379a8f86f38f')
parallel = False
def install(self, spec, prefix):
configure("--prefix=%s" %prefix, "--enable-shared")
make()
make("install")

View File

@@ -0,0 +1,27 @@
from spack import *
class Git(Package):
"""Git is a free and open source distributed version control
system designed to handle everything from small to very large
projects with speed and efficiency."""
homepage = "http://git-scm.com"
url = "https://www.kernel.org/pub/software/scm/git/git-2.2.1.tar.xz"
version('2.2.1', '43e01f9d96ba8c11611e0eef0d9f9f28')
# Use system openssl.
# depends_on("openssl")
# Use system perl for now.
# depends_on("perl")
# depends_on("pcre")
depends_on("zlib")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
"--without-pcre",
"--without-python")
make()
make("install")

View File

@@ -0,0 +1,18 @@
from spack import *
class Glib(Package):
"""The GLib package contains a low-level libraries useful for
providing data structure handling for C, portability wrappers
and interfaces for such runtime functionality as an event loop,
threads, dynamic loading and an object system."""
homepage = "https://developer.gnome.org/glib/"
url = "http://ftp.gnome.org/pub/gnome/sources/glib/2.42/glib-2.42.1.tar.xz"
version('2.42.1', '89c4119e50e767d3532158605ee9121a')
depends_on("libffi")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,19 @@
from spack import *
class Glm(Package):
"""
OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on
the OpenGL Shading Language (GLSL) specification.
"""
homepage = "https://github.com/g-truc/glm"
url = "https://github.com/g-truc/glm/archive/0.9.7.1.tar.gz"
version('0.9.7.1', '61af6639cdf652d1cdd7117190afced8')
def install(self, spec, prefix):
with working_dir('spack-build', create=True):
cmake('..', *std_cmake_args)
make()
make("install")

View File

@@ -0,0 +1,24 @@
from spack import *
import os
class Global(Package):
""" The Gnu Global tagging system """
# FIXME: add a proper url for your package's homepage here.
homepage = "http://www.gnu.org/software/global"
url = "http://tamacom.com/global/global-6.5.tar.gz"
version('6.5', 'dfec818b4f53d91721e247cf7b218078')
depends_on('exuberant-ctags')
def install(self, spec, prefix):
config_args = ['--prefix={}'.format(prefix)]
config_args.append('--with-exuberant-ctags={}'.format(
os.path.join(spec['exuberant-ctags'].prefix.bin, 'ctags')))
configure(*config_args)
make()
make("install")

View File

@@ -0,0 +1,15 @@
import os
from spack import *
class Glog(Package):
"""C++ implementation of the Google logging module."""
homepage = "https://github.com/google/glog"
url = "https://github.com/google/glog/archive/v0.3.3.tar.gz"
version('0.3.3', 'c1f86af27bd9c73186730aa957607ed0')
def install(self, spec, prefix):
configure("--prefix=" + prefix)
make()
make("install")

View File

@@ -0,0 +1,40 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Gmp(Package):
"""GMP is a free library for arbitrary precision arithmetic,
operating on signed integers, rational numbers, and
floating-point numbers."""
homepage = "https://gmplib.org"
url = "https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2"
version('6.0.0a', 'b7ff2d88cae7f8085bd5006096eed470')
version('6.0.0' , '6ef5869ae735db9995619135bd856b84')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,22 @@
from spack import *
class Gnutls(Package):
"""GnuTLS is a secure communications library implementing the SSL,
TLS and DTLS protocols and technologies around them. It
provides a simple C language application programming interface
(API) to access the secure communications protocols as well as
APIs to parse and write X.509, PKCS #12, OpenPGP and other
required structures. It is aimed to be portable and efficient
with focus on security and interoperability."""
homepage = "http://www.gnutls.org"
url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.9.tar.xz"
version('3.3.9', 'ff61b77e39d09f1140ab5a9cf52c58b6')
depends_on("nettle")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,19 @@
from spack import *
class Gperf(Package):
"""GNU gperf is a perfect hash function generator. For a given
list of strings, it produces a hash function and hash table, in
form of C or C++ code, for looking up a value depending on the
input string. The hash function is perfect, which means that the
hash table has no collisions, and the hash table lookup needs a
single string comparison only."""
homepage = "https://www.gnu.org/software/gperf/"
url = "http://ftp.gnu.org/pub/gnu/gperf/gperf-3.0.4.tar.gz"
version('3.0.4', 'c1f1db32fb6598d6a93e6e88796a8632')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,38 @@
##############################################################################
# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://scalability-llnl.github.io/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# 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) version 2.1 dated February 1999.
#
# 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 terms and
# conditions of the GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
##############################################################################
from spack import *
class Gperftools(Package):
"""Google's fast malloc/free implementation, especially for multi-threaded applications.
Contains tcmalloc, heap-checker, heap-profiler, and cpu-profiler."""
homepage = "https://code.google.com/p/gperftools"
url = "https://googledrive.com/host/0B6NtGsLhIcf7MWxMMF9JdTN3UVk/gperftools-2.3.tar.gz"
version('2.3', 'f54dd119f0e46ac1f13264f8d97adf90', url="https://googledrive.com/host/0B6NtGsLhIcf7MWxMMF9JdTN3UVk/gperftools-2.3.tar.gz")
def install(self, spec, prefix):
configure("--prefix=" + prefix)
make()
make("install")

View File

@@ -0,0 +1,14 @@
from spack import *
class Graphlib(Package):
"""Library to create, manipulate, and export graphs Graphlib."""
homepage = "http://https://github.com/lee218llnl/graphlib"
url = "https://github.com/lee218llnl/graphlib/archive/v2.0.0.tar.gz"
version('2.0.0', '43c6df84f1d38ba5a5dce0ae19371a70')
def install(self, spec, prefix):
cmake(".", *std_cmake_args)
make()
make("install")

View File

@@ -0,0 +1,21 @@
from spack import *
class Graphviz(Package):
"""Graph Visualization Software"""
homepage = "http://www.graphviz.org"
url = "http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.38.0.tar.gz"
version('2.38.0', '5b6a829b2ac94efcd5fa3c223ed6d3ae')
parallel = False
depends_on("swig")
depends_on("python")
depends_on("ghostscript")
def install(self, spec, prefix):
configure("--prefix=%s" %prefix)
make()
make("install")

View File

@@ -0,0 +1,22 @@
from spack import *
class Gtkplus(Package):
"""The GTK+ 2 package contains libraries used for creating graphical user interfaces for applications."""
homepage = "http://www.gtk.org"
version('2.24.25', '612350704dd3aacb95355a4981930c6f',
url="http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.25.tar.xz")
depends_on("atk")
depends_on("gdk-pixbuf")
depends_on("pango")
def patch(self):
# remove disable deprecated flag.
filter_file(r'CFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CFLAGS"',
'', 'configure', string=True)
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,20 @@
from spack import *
class Harfbuzz(Package):
"""The Harfbuzz package contains an OpenType text shaping engine."""
homepage = "http://www.freedesktop.org/wiki/Software/HarfBuzz/"
url = "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.37.tar.bz2"
version('0.9.37', 'bfe733250e34629a188d82e3b971bc1e')
depends_on("glib")
depends_on("icu")
depends_on("freetype")
def patch(self):
change_sed_delimiter('@', ';', 'src/Makefile.in')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,42 @@
from spack import *
class Hdf5(Package):
"""HDF5 is a data model, library, and file format for storing and managing
data. It supports an unlimited variety of datatypes, and is designed for
flexible and efficient I/O and for high volume and complex data.
"""
homepage = "http://www.hdfgroup.org/HDF5/"
url = "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.13/src/hdf5-1.8.13.tar.gz"
list_url = "http://www.hdfgroup.org/ftp/HDF5/releases"
list_depth = 3
version('1.8.15', '03cccb5b33dbe975fdcd8ae9dc021f24')
version('1.8.13', 'c03426e9e77d7766944654280b467289')
depends_on("mpi")
depends_on("zlib")
# TODO: currently hard-coded to use OpenMPI
def install(self, spec, prefix):
configure(
"--prefix=%s" % prefix,
"--with-zlib=%s" % spec['zlib'].prefix,
"--enable-parallel",
"--enable-shared",
"CC=%s" % spec['mpich'].prefix.bin + "/mpicc",
"CXX=%s" % spec['mpich'].prefix.bin + "/mpic++")
make()
make("install")
def url_for_version(self, version):
v = str(version)
if version == Version("1.2.2"):
return "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-" + v + ".tar.gz"
elif version < Version("1.7"):
return "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-" + version.up_to(2) + "/hdf5-" + v + ".tar.gz"
else:
return "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-" + v + "/src/hdf5-" + v + ".tar.gz"

View File

@@ -0,0 +1,25 @@
from spack import *
class Hwloc(Package):
"""The Portable Hardware Locality (hwloc) software package
provides a portable abstraction (across OS, versions,
architectures, ...) of the hierarchical topology of modern
architectures, including NUMA memory nodes, sockets, shared
caches, cores and simultaneous multithreading. It also gathers
various system attributes such as cache and memory information
as well as the locality of I/O devices such as network
interfaces, InfiniBand HCAs or GPUs. It primarily aims at
helping applications with gathering information about modern
computing hardware so as to exploit it accordingly and
efficiently."""
homepage = "http://www.open-mpi.org/projects/hwloc/"
url = "http://www.open-mpi.org/software/hwloc/v1.9/downloads/hwloc-1.9.tar.gz"
version('1.9', '1f9f9155682fe8946a97c08896109508')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,32 @@
from spack import *
class Hypre(Package):
"""Hypre is a library of high performance preconditioners that
features parallel multigrid methods for both structured and
unstructured grid problems."""
homepage = "https://computation.llnl.gov/project/linear_solvers/software.php"
url = "https://computation.llnl.gov/project/linear_solvers/download/hypre-2.10.0b.tar.gz"
version('2.10.0b', '768be38793a35bb5d055905b271f5b8e')
depends_on("mpi")
depends_on("blas")
depends_on("lapack")
def install(self, spec, prefix):
blas_dir = spec['blas'].prefix
lapack_dir = spec['lapack'].prefix
# Hypre's source is staged under ./src so we'll have to manually
# cd into it.
with working_dir("src"):
configure(
"--prefix=%s" % prefix,
"--with-blas-libs=blas",
"--with-blas-lib-dirs=%s/lib" % blas_dir,
"--with-lapack-libs=\"lapack blas\"",
"--with-lapack-lib-dirs=%s/lib" % lapack_dir,
"--with-MPI")
make()
make("install")

View File

@@ -0,0 +1,25 @@
from spack import *
class Icu(Package):
"""The International Components for Unicode (ICU) package is a
mature, widely used set of C/C++ libraries providing Unicode and
Globalization support for software applications. ICU is widely
portable and gives applications the same results on all
platforms."""
# FIXME: add a proper url for your package's homepage here.
homepage = "http://www.example.com"
url = "http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz"
version('54.1', 'e844caed8f2ca24c088505b0d6271bc0')
def url_for_version(self, version):
return "http://download.icu-project.org/files/icu4c/%s/icu4c-%s-src.tgz" % (
version, str(version).replace('.', '_'))
def install(self, spec, prefix):
with working_dir("source"):
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,17 @@
from spack import *
class Icu4c(Package):
"""ICU is a mature, widely used set of C/C++ and Java libraries
providing Unicode and Globalization support for software applications."""
homepage = "http://site.icu-project.org/"
url = "http://downloads.sourceforge.net/project/icu/ICU4C/54.1/icu4c-54_1-src.tgz"
version('54_1', 'e844caed8f2ca24c088505b0d6271bc0')
def install(self, spec, prefix):
cd("source")
configure("--prefix=%s" % prefix)
make()
make("install")

View File

@@ -0,0 +1,17 @@
from spack import *
class Isl(Package):
"""isl is a thread-safe C library for manipulating sets and
relations of integer points bounded by affine constraints."""
homepage = "http://isl.gforge.inria.fr"
url = "http://isl.gforge.inria.fr/isl-0.14.tar.bz2"
version('0.14', 'acd347243fca5609e3df37dba47fd0bb')
depends_on("gmp")
def install(self, spec, prefix):
configure("--prefix=%s" % prefix,
"--with-gmp-prefix=%s" % spec['gmp'].prefix)
make()
make("install")

Some files were not shown because too many files have changed in this diff Show More