Merge remote-tracking branch 'upstream/develop' into pkg-subversion

This commit is contained in:
Kelly (KT) Thompson
2016-03-29 17:14:27 -06:00
17 changed files with 532 additions and 231 deletions

View File

@@ -0,0 +1,17 @@
from spack import *
import os
class Astyle(Package):
"""A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, Objective-C, C#, and Java Source Code."""
homepage = "http://astyle.sourceforge.net/"
url = "http://downloads.sourceforge.net/project/astyle/astyle/astyle%202.04/astyle_2.04_linux.tar.gz"
version('2.04', '30b1193a758b0909d06e7ee8dd9627f6')
def install(self, spec, prefix):
with working_dir('src'):
make('-f',
join_path(self.stage.source_path,'build','clang','Makefile'),
parallel=False)
install(join_path(self.stage.source_path, 'src','bin','astyle'), self.prefix.bin)

View File

@@ -2,6 +2,9 @@
import spack
import sys
import os
import sys
class Boost(Package):
"""Boost provides free peer-reviewed portable C++ source
libraries, emphasizing libraries that work well with the C++
@@ -173,6 +176,16 @@ def determine_b2_options(self, spec, options):
return threadingOpts
def install(self, spec, prefix):
# On Darwin, Boost expects the Darwin libtool. However, one of the
# dependencies may have pulled in Spack's GNU libtool, and these two are
# not compatible. We thus create a symlink to Darwin's libtool and add
# it at the beginning of PATH.
if sys.platform == 'darwin':
newdir = os.path.abspath('darwin-libtool')
mkdirp(newdir)
force_symlink('/usr/bin/libtool', join_path(newdir, 'libtool'))
env['PATH'] = newdir + ':' + env['PATH']
withLibs = list()
for lib in Boost.all_libs:
if "+{0}".format(lib) in spec:

View File

@@ -0,0 +1,42 @@
diff --git a/gcc/configure b/gcc/configure
index 9523773..52b0bf7 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -24884,7 +24884,7 @@ if test "${gcc_cv_as_ix86_filds+set}" = set; then :
else
gcc_cv_as_ix86_filds=no
if test x$gcc_cv_as != x; then
- $as_echo 'filds mem; fists mem' > conftest.s
+ $as_echo 'filds (%ebp); fists (%ebp)' > conftest.s
if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
@@ -24915,7 +24915,7 @@ if test "${gcc_cv_as_ix86_fildq+set}" = set; then :
else
gcc_cv_as_ix86_fildq=no
if test x$gcc_cv_as != x; then
- $as_echo 'fildq mem; fistpq mem' > conftest.s
+ $as_echo 'fildq (%ebp); fistpq (%ebp)' > conftest.s
if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 68b0ee8..bd53978 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3869,13 +3869,13 @@ foo: nop
gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
gcc_cv_as_ix86_filds,,,
- [filds mem; fists mem],,
+ [filds (%ebp); fists (%ebp)],,
[AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
[Define if your assembler uses filds and fists mnemonics.])])
gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
gcc_cv_as_ix86_fildq,,,
- [fildq mem; fistpq mem],,
+ [fildq (%ebp); fistpq (%ebp)],,
[AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
[Define if your assembler uses fildq and fistq mnemonics.])])

View File

@@ -0,0 +1,28 @@
From 82f81877458ea372176eabb5de36329431dce99b Mon Sep 17 00:00:00 2001
From: Iain Sandoe <iain@codesourcery.com>
Date: Sat, 21 Dec 2013 00:30:18 +0000
Subject: [PATCH] don't try to mark local symbols as no-dead-strip
---
gcc/config/darwin.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 40804b8..0080299 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -1259,6 +1259,11 @@ darwin_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED)
void
darwin_mark_decl_preserved (const char *name)
{
+ /* Actually we shouldn't mark any local symbol this way, but for now
+ this only happens with ObjC meta-data. */
+ if (darwin_label_is_anonymous_local_objc_name (name))
+ return;
+
fprintf (asm_out_file, "\t.no_dead_strip ");
assemble_name (asm_out_file, name);
fputc ('\n', asm_out_file);
--
2.2.1

View File

@@ -26,6 +26,8 @@
from contextlib import closing
from glob import glob
import sys
import os
class Gcc(Package):
"""The GNU Compiler Collection includes front ends for C, C++,
@@ -47,24 +49,33 @@ class Gcc(Package):
version('4.6.4', 'b407a3d1480c11667f293bfb1f17d1a4')
version('4.5.4', '27e459c2566b8209ab064570e1b378f7')
variant('gold', default=True, description="Build the gold linker plugin for ld-based LTO")
variant('binutils', default=sys.platform != 'darwin',
description="Build via binutils")
variant('gold', default=sys.platform != 'darwin',
description="Build the gold linker plugin for ld-based LTO")
depends_on("mpfr")
depends_on("gmp")
depends_on("mpc", when='@4.5:')
depends_on("isl", when='@5.0:')
depends_on("binutils~libiberty", when='~gold')
depends_on("binutils~libiberty+gold", when='+gold')
depends_on("binutils~libiberty", when='+binutils ~gold')
depends_on("binutils~libiberty+gold", when='+binutils +gold')
# TODO: integrate these libraries.
#depends_on("ppl")
#depends_on("cloog")
if sys.platform == 'darwin':
patch('darwin/gcc-4.9.patch1', when='@4.9.3')
patch('darwin/gcc-4.9.patch2', when='@4.9.3')
def install(self, spec, prefix):
# libjava/configure needs a minor fix to install into spack paths.
filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure', string=True)
filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure',
string=True)
enabled_languages = set(('c', 'c++', 'fortran', 'java', 'objc'))
if spec.satisfies("@4.7.1:"):
if spec.satisfies("@4.7.1:") and sys.platform != 'darwin':
enabled_languages.add('go')
# Generic options to compile GCC
@@ -72,32 +83,40 @@ def install(self, spec, 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,
"--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
static_bootstrap_flags = "-static-libstdc++ -static-libgcc"
binutils_options = ["--with-sysroot=/",
"--with-stage1-ldflags=%s %s" % (self.rpath_args, static_bootstrap_flags),
"--with-boot-ldflags=%s %s" % (self.rpath_args, static_bootstrap_flags),
"--with-ld=%s/bin/ld" % spec['binutils'].prefix,
"--with-as=%s/bin/as" % spec['binutils'].prefix]
options.extend(binutils_options)
if spec.satisfies('+binutils'):
static_bootstrap_flags = "-static-libstdc++ -static-libgcc"
binutils_options = ["--with-sysroot=/",
"--with-stage1-ldflags=%s %s" %
(self.rpath_args, static_bootstrap_flags),
"--with-boot-ldflags=%s %s" %
(self.rpath_args, static_bootstrap_flags),
"--with-gnu-ld",
"--with-ld=%s/bin/ld" % spec['binutils'].prefix,
"--with-gnu-as",
"--with-as=%s/bin/as" % spec['binutils'].prefix]
options.extend(binutils_options)
# Isl
if 'isl' in spec:
isl_options = ["--with-isl=%s" % spec['isl'].prefix]
options.extend(isl_options)
if sys.platform == 'darwin' :
darwin_options = [ "--with-build-config=bootstrap-debug" ]
options.extend(darwin_options)
build_dir = join_path(self.stage.path, 'spack-build')
configure = Executable( join_path(self.stage.source_path, 'configure') )
with working_dir(build_dir, create=True):
# Rest of install is straightforward.
configure(*options)
make()
if sys.platform == 'darwin' : make("bootstrap")
else: make()
make("install")
self.write_rpath_specs()
@@ -114,7 +133,8 @@ 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('$_$@'))
tty.warn("Could not install specs for %s." %
self.spec.format('$_$@'))
return
gcc = Executable(join_path(self.prefix.bin, 'gcc'))
@@ -124,5 +144,6 @@ def write_rpath_specs(self):
for line in lines:
out.write(line + "\n")
if line.startswith("*link:"):
out.write("-rpath %s/lib:%s/lib64 \\\n"% (self.prefix, self.prefix))
out.write("-rpath %s/lib:%s/lib64 \\\n" %
(self.prefix, self.prefix))
set_install_permissions(specs_file)

View File

@@ -0,0 +1,69 @@
from spack import *
class Gdal(Package):
"""
GDAL is a translator library for raster and vector geospatial
data formats that is released under an X/MIT style Open Source
license by the Open Source Geospatial Foundation. As a library,
it presents a single raster abstract data model and vector
abstract data model to the calling application for all supported
formats. It also comes with a variety of useful command line
utilities for data translation and processing
"""
homepage = "http://www.gdal.org/"
url = "http://download.osgeo.org/gdal/2.0.2/gdal-2.0.2.tar.gz"
list_url = "http://download.osgeo.org/gdal/"
list_depth = 2
version('2.0.2', '573865f3f59ba7b4f8f4cddf223b52a5')
extends('python')
variant('hdf5', default=False, description='Enable HDF5 support')
variant('hdf', default=False, description='Enable HDF4 support')
variant('openjpeg', default=False, description='Enable JPEG2000 support')
variant('geos', default=False, description='Enable GEOS support')
variant('kea', default=False, description='Enable KEA support')
variant('netcdf', default=False, description='Enable netcdf support')
depends_on('swig')
depends_on("hdf5", when='+hdf5')
depends_on("hdf", when='+hdf')
depends_on("openjpeg", when='+openjpeg')
depends_on("geos", when='+geos')
depends_on("kealib", when='+kea')
depends_on("netcdf", when='+netcdf')
depends_on("libtiff")
depends_on("libpng")
depends_on("zlib")
depends_on("proj")
depends_on("py-numpy")
parallel = False
def install(self, spec, prefix):
args = []
args.append("--prefix=%s" % prefix)
args.append("--with-liblzma=yes")
args.append("--with-zlib=%s" % spec['zlib'].prefix)
args.append("--with-python=%s" % spec['python'].prefix.bin + "/python")
args.append("--without-libtool")
if '+geos' in spec:
args.append('--with-geos=yes')
if '+hdf' in spec:
args.append('--with-hdf4=%s' % spec['hdf'].prefix)
if '+hdf5' in spec:
args.append('--with-hdf5=%s' % spec['hdf5'].prefix)
if '+openjpeg' in spec:
args.append('--with-openjpeg=%s' % spec['openjpeg'].prefix)
if '+kea' in spec:
args.append('--with-kea=yes')
if '+netcdf' in spec:
args.append('--with-netcdf=%s' % spec['netcdf'].prefix)
configure(*args)
make()
make("install")

View File

@@ -42,6 +42,9 @@ def install(self, spec, prefix):
if '~internal-superlu' in self.spec:
configure_args.append("--without-superlu")
# MLI and FEI do not build without superlu on Linux
configure_args.append("--without-mli")
configure_args.append("--without-fei")
# Hypre's source is staged under ./src so we'll have to manually
# cd into it.

View File

@@ -0,0 +1,35 @@
from spack import *
class Kealib(Package):
"""An HDF5 Based Raster File Format
KEALib provides an implementation of the GDAL data model.
The format supports raster attribute tables, image pyramids,
meta-data and in-built statistics while also handling very
large files and compression throughout.
Based on the HDF5 standard, it also provides a base from which
other formats can be derived and is a good choice for long
term data archiving. An independent software library (libkea)
provides complete access to the KEA image format and a GDAL
driver allowing KEA images to be used from any GDAL supported software.
Development work on this project has been funded by Landcare Research.
"""
homepage = "http://kealib.org/"
url = "https://bitbucket.org/chchrsc/kealib/get/kealib-1.4.5.tar.gz"
version('1.4.5', '112e9c42d980b2d2987a3c15d0833a5d')
depends_on("hdf5")
def install(self, spec, prefix):
with working_dir('trunk', create=False):
cmake_args = []
cmake_args.append("-DCMAKE_INSTALL_PREFIX=%s" % prefix)
cmake_args.append("-DHDF5_INCLUDE_DIR=%s" % spec['hdf5'].prefix.include)
cmake_args.append("-DHDF5_LIB_PATH=%s" % spec['hdf5'].prefix.lib)
cmake('.', *cmake_args)
make()
make("install")

View File

@@ -8,12 +8,9 @@ IORDERINGSF = $(ISCOTCH)
IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH)
PLAT =
LIBEXT = .a
OUTC = -o
OUTC = -o
OUTF = -o
RM = /bin/rm -f
AR = ar vr
RANLIB = ranlib
INCSEQ = -I$(topdir)/libseq
LIBSEQ = -L$(topdir)/libseq -lmpiseq

View File

@@ -1,6 +1,5 @@
from spack import *
import os
import os, sys
class Mumps(Package):
"""MUMPS: a MUltifrontal Massively Parallel sparse direct Solver"""
@@ -19,6 +18,7 @@ class Mumps(Package):
variant('float', default=True, description='Activate the compilation of smumps')
variant('complex', default=True, description='Activate the compilation of cmumps and/or zmumps')
variant('idx64', default=False, description='Use int64_t/integer*8 as default index type')
variant('shared', default=True, description='Build shared libraries')
depends_on('scotch + esmumps', when='~ptscotch+scotch')
@@ -70,6 +70,9 @@ def write_makefile_inc(self):
makefile_conf.append("ORDERINGSF = %s" % (' '.join(orderings)))
# when building shared libs need -fPIC, otherwise
# /usr/bin/ld: graph.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
fpic = '-fPIC' if '+shared' in self.spec else ''
# TODO: test this part, it needs a full blas, scalapack and
# partitionning environment with 64bit integers
if '+idx64' in self.spec:
@@ -77,14 +80,14 @@ def write_makefile_inc(self):
# the fortran compilation flags most probably are
# working only for intel and gnu compilers this is
# perhaps something the compiler should provide
['OPTF = -O -DALLOW_NON_INIT %s' % '-fdefault-integer-8' if self.compiler.name == "gcc" else '-i8',
'OPTL = -O ',
'OPTC = -O -DINTSIZE64'])
['OPTF = %s -O -DALLOW_NON_INIT %s' % (fpic,'-fdefault-integer-8' if self.compiler.name == "gcc" else '-i8'),
'OPTL = %s -O ' % fpic,
'OPTC = %s -O -DINTSIZE64' % fpic])
else:
makefile_conf.extend(
['OPTF = -O -DALLOW_NON_INIT',
'OPTL = -O ',
'OPTC = -O '])
['OPTF = %s -O -DALLOW_NON_INIT' % fpic,
'OPTL = %s -O ' % fpic,
'OPTC = %s -O ' % fpic])
if '+mpi' in self.spec:
@@ -105,6 +108,27 @@ def write_makefile_inc(self):
# compiler possible values are -DAdd_, -DAdd__ and/or -DUPPER
makefile_conf.append("CDEFS = -DAdd_")
if '+shared' in self.spec:
if sys.platform == 'darwin':
# Building dylibs with mpif90 causes segfaults on 10.8 and 10.10. Use gfortran. (Homebrew)
makefile_conf.extend([
'LIBEXT=.dylib',
'AR=%s -dynamiclib -Wl,-install_name -Wl,%s/$(notdir $@) -undefined dynamic_lookup -o ' % (os.environ['FC'],prefix.lib),
'RANLIB=echo'
])
else:
makefile_conf.extend([
'LIBEXT=.so',
'AR=$(FL) -shared -Wl,-soname -Wl,%s/$(notdir $@) -o' % prefix.lib,
'RANLIB=echo'
])
else:
makefile_conf.extend([
'LIBEXT = .a',
'AR = ar vr',
'RANLIB = ranlib'
])
makefile_inc_template = join_path(os.path.dirname(self.module.__file__),
'Makefile.inc')
@@ -121,7 +145,7 @@ def write_makefile_inc(self):
def install(self, spec, prefix):
make_libs = []
# the coice to compile ?examples is to have kind of a sanity
# the choice to compile ?examples is to have kind of a sanity
# check on the libraries generated.
if '+float' in spec:
make_libs.append('sexamples')
@@ -135,10 +159,24 @@ def install(self, spec, prefix):
self.write_makefile_inc()
# Build fails in parallel, at least on OS-X
# Build fails in parallel
make(*make_libs, parallel=False)
install_tree('lib', prefix.lib)
install_tree('include', prefix.include)
if '~mpi' in spec:
install('libseq/libmpiseq.a', prefix.lib)
lib_dsuffix = '.dylib' if sys.platform == 'darwin' else '.so'
lib_suffix = lib_dsuffix if '+shared' in spec else '.a'
install('libseq/libmpiseq%s' % lib_suffix, prefix.lib)
# FIXME: extend the tests to mpirun -np 2 (or alike) when build with MPI
# FIXME: use something like numdiff to compare blessed output with the current
with working_dir('examples'):
if '+float' in spec:
os.system('./ssimpletest < input_simpletest_real')
if '+complex' in spec:
os.system('./csimpletest < input_simpletest_real')
if '+double' in spec:
os.system('./dsimpletest < input_simpletest_real')
if '+complex' in spec:
os.system('./zsimpletest < input_simpletest_cmplx')

View File

@@ -14,5 +14,5 @@ def install(self, spec, prefix):
configure(*options)
make()
make(parallel=False)
make("install")

View File

@@ -0,0 +1,26 @@
from spack import *
class Openjpeg(Package):
"""
OpenJPEG is an open-source JPEG 2000 codec written in C language.
It has been developed in order to promote the use of JPEG 2000, a
still-image compression standard from the Joint Photographic
Experts Group (JPEG).
Since April 2015, it is officially recognized by ISO/IEC and
ITU-T as a JPEG 2000 Reference Software.
"""
homepage = "https://github.com/uclouvain/openjpeg"
url = "https://github.com/uclouvain/openjpeg/archive/version.2.1.tar.gz"
version('2.1' , '3e1c451c087f8462955426da38aa3b3d')
version('2.0.1', '105876ed43ff7dbb2f90b41b5a43cfa5')
version('2.0' , 'cdf266530fee8af87454f15feb619609')
version('1.5.2', '545f98923430369a6b046ef3632ef95c')
version('1.5.1', 'd774e4b5a0db5f0f171c4fc0aabfa14e')
def install(self, spec, prefix):
cmake('.', *std_cmake_args)
make()
make("install")

View File

@@ -1,15 +0,0 @@
from spack import *
class PyLibxml2(Package):
"""A Python wrapper around libxml2."""
homepage = "https://xmlsoft.org/python.html"
url = "ftp://xmlsoft.org/libxml2/python/libxml2-python-2.6.21.tar.gz"
version('2.6.21', '229dd2b3d110a77defeeaa73af83f7f3')
extends('python')
depends_on('libxml2')
depends_on('libxslt')
def install(self, spec, prefix):
python('setup.py', 'install', '--prefix=%s' % prefix)

View File

@@ -0,0 +1,19 @@
from spack import *
class PyTuiview(Package):
"""
TuiView is a lightweight raster GIS with powerful raster attribute
table manipulation abilities.
"""
homepage = "https://bitbucket.org/chchrsc/tuiview"
url = "https://bitbucket.org/chchrsc/tuiview/get/tuiview-1.1.7.tar.gz"
version('1.1.7', '4b3b38a820cc239c8ab4a181ac5d4c30')
extends("python")
depends_on("py-pyqt")
depends_on("py-numpy")
depends_on("gdal")
def install(self, spec, prefix):
python('setup.py', 'install', '--prefix=%s' % prefix)