summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2014-11-08 22:30:46 -0800
committerTodd Gamblin <tgamblin@llnl.gov>2014-11-08 22:30:46 -0800
commit79414947aef73ca48b9b2810c68cac34472efc37 (patch)
tree2240e280f126509d26b61a26292c3eaf3d88be34 /var
parent9033ae646006bf6c4c1e482c024af9217fcdea99 (diff)
parent0d044cdc1b70f9e522b61b7b5cb8f03d188a686b (diff)
downloadspack-79414947aef73ca48b9b2810c68cac34472efc37.tar.gz
spack-79414947aef73ca48b9b2810c68cac34472efc37.tar.bz2
spack-79414947aef73ca48b9b2810c68cac34472efc37.tar.xz
spack-79414947aef73ca48b9b2810c68cac34472efc37.zip
Merge branch 'features/gcc' into develop
Conflicts: lib/spack/spack/package.py
Diffstat (limited to 'var')
-rw-r--r--var/spack/packages/gcc/package.py90
-rw-r--r--var/spack/packages/gmp/package.py40
-rw-r--r--var/spack/packages/jpeg/package.py2
-rw-r--r--var/spack/packages/mpc/package.py42
-rw-r--r--var/spack/packages/mpfr/package.py38
-rw-r--r--var/spack/packages/openmpi/package.py6
6 files changed, 214 insertions, 4 deletions
diff --git a/var/spack/packages/gcc/package.py b/var/spack/packages/gcc/package.py
new file mode 100644
index 0000000000..da0debd5dc
--- /dev/null
+++ b/var/spack/packages/gcc/package.py
@@ -0,0 +1,90 @@
+##############################################################################
+# 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"
+
+ list_url = 'http://open-source-box.org/gcc/'
+ list_depth = 2
+
+ version('4.9.2', '4df8ee253b7f3863ad0b86359cd39c43',
+ url="http://open-source-box.org/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2")
+ version('4.9.1', 'fddf71348546af523353bd43d34919c1',
+ url="http://open-source-box.org/gcc/gcc-4.9.1/gcc-4.9.1.tar.bz2")
+
+ depends_on("mpc")
+ depends_on("mpfr")
+ depends_on("gmp")
+ depends_on("libelf")
+
+
+ def install(self, spec, prefix):
+ # libjava/configure needs a minor fix to install into spack paths.
+ filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure', string=True)
+
+ # Rest of install is straightforward.
+ configure("--prefix=%s" % prefix,
+ "--libdir=%s/lib64" % prefix,
+ "--disable-multilib",
+ "--enable-languages=c,c++,fortran,java,objc,go",
+ "--enable-lto",
+ "--with-quad")
+ 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).split("\n")
+ for i, line in enumerate(lines):
+ if line.startswith("*link:"):
+ specs_file = join_path(self.spec_dir, 'specs')
+ with closing(open(specs_file, 'w')) as out:
+ out.write(lines[i] + "\n")
+ out.write("-rpath %s/lib:%s/lib64 \\\n"
+ % (self.prefix, self.prefix))
+ out.write(lines[i+1] + "\n")
+ set_install_permissions(specs_file)
diff --git a/var/spack/packages/gmp/package.py b/var/spack/packages/gmp/package.py
new file mode 100644
index 0000000000..d6af821b34
--- /dev/null
+++ b/var/spack/packages/gmp/package.py
@@ -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")
diff --git a/var/spack/packages/jpeg/package.py b/var/spack/packages/jpeg/package.py
index b34fd5cb2d..bb5b77e01c 100644
--- a/var/spack/packages/jpeg/package.py
+++ b/var/spack/packages/jpeg/package.py
@@ -5,7 +5,7 @@ class Jpeg(Package):
homepage = "http://www.ijg.org"
url = "http://www.ijg.org/files/jpegsrc.v9a.tar.gz"
- version('9', 'b397211ddfd506b92cd5e02a22ac924d')
+ version('9a', 'b397211ddfd506b92cd5e02a22ac924d')
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
diff --git a/var/spack/packages/mpc/package.py b/var/spack/packages/mpc/package.py
new file mode 100644
index 0000000000..6fbfca3007
--- /dev/null
+++ b/var/spack/packages/mpc/package.py
@@ -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 Mpc(Package):
+ """Gnu Mpc is a C library for the arithmetic of complex numbers
+ with arbitrarily high precision and correct rounding of the
+ result."""
+ homepage = "http://www.multiprecision.org"
+ url = "ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz"
+
+ version('1.0.2', '68fadff3358fb3e7976c7a398a0af4c3')
+
+ depends_on("gmp")
+ depends_on("mpfr")
+
+ def install(self, spec, prefix):
+ configure("--prefix=%s" % prefix)
+ make()
+ make("install")
diff --git a/var/spack/packages/mpfr/package.py b/var/spack/packages/mpfr/package.py
new file mode 100644
index 0000000000..62dac63206
--- /dev/null
+++ b/var/spack/packages/mpfr/package.py
@@ -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 Mpfr(Package):
+ """The MPFR library is a C library for multiple-precision
+ floating-point computations with correct rounding."""
+ homepage = "http://www.mpfr.org"
+ url = "http://www.mpfr.org/mpfr-current/mpfr-3.1.2.tar.bz2"
+
+ version('3.1.2', 'ee2c3ac63bf0c2359bf08fc3ee094c19')
+
+ def install(self, spec, prefix):
+ configure("--prefix=%s" % prefix)
+ make()
+ make("install")
diff --git a/var/spack/packages/openmpi/package.py b/var/spack/packages/openmpi/package.py
index 1ef8a8f000..7e84cbaf65 100644
--- a/var/spack/packages/openmpi/package.py
+++ b/var/spack/packages/openmpi/package.py
@@ -13,9 +13,9 @@ class Openmpi(Package):
version('1.8.2', 'ab538ed8e328079d566fc797792e016e',
url='http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.2.tar.gz')
-
version('1.6.5', '03aed2a4aa4d0b27196962a2a65fc475',
url = "http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2")
+
patch('ad_lustre_rwcontig_open_source.patch', when="@1.6.5")
patch('llnl-platforms.patch', when="@1.6.5")
@@ -27,8 +27,8 @@ class Openmpi(Package):
# TODO: use variants for this, e.g. +lanl, +llnl, etc.
# use this for LANL builds, but for LLNL builds, we need:
# "--with-platform=contrib/platform/llnl/optimized"
- if self.version == ver("1.6.5"):
- confg_args.append("--with-platform=contrib/platform/lanl/tlcc2/optimized-nopanasas")
+ if self.version == ver("1.6.5") and '+lanl' in spec:
+ config_args.append("--with-platform=contrib/platform/lanl/tlcc2/optimized-nopanasas")
# TODO: Spack should make it so that you can't actually find
# these compilers if they're "disabled" for the current