summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2021-07-12 07:35:43 -0400
committerGitHub <noreply@github.com>2021-07-12 13:35:43 +0200
commit4c7aed5d57b5b19978e59610848d4739b1a0472f (patch)
treeec8a7c1ced2eaa02f67292ecad738082a249d115 /var
parente957c58a1e27b366d1ffad47d5da6773c7443949 (diff)
downloadspack-4c7aed5d57b5b19978e59610848d4739b1a0472f.tar.gz
spack-4c7aed5d57b5b19978e59610848d4739b1a0472f.tar.bz2
spack-4c7aed5d57b5b19978e59610848d4739b1a0472f.tar.xz
spack-4c7aed5d57b5b19978e59610848d4739b1a0472f.zip
lorene, pgplot: new packages (#24549)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/lorene/local_settings.template20
-rw-r--r--var/spack/repos/builtin/packages/lorene/package.py96
-rw-r--r--var/spack/repos/builtin/packages/pgplot/g77_gcc.conf.patch55
-rw-r--r--var/spack/repos/builtin/packages/pgplot/package.py84
4 files changed, 255 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/lorene/local_settings.template b/var/spack/repos/builtin/packages/lorene/local_settings.template
new file mode 100644
index 0000000000..03ede31fee
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lorene/local_settings.template
@@ -0,0 +1,20 @@
+CXX = @CXX@
+CXXFLAGS = @CXXFLAGS@
+CXXFLAGS_G = @CXXFLAGS_G@
+
+F77 = @F77@
+F77FLAGS = @F77FLAGS@
+F77FLAGS_G = @F77FLAGS_G@
+
+INC = @INC@
+RANLIB = @RANLIB@
+
+MAKEDEPEND = @MAKEDEPEND@
+DEPDIR = .deps
+
+FFT_DIR = @FFT_DIR@
+LIB_CXX = @LIB_CXX@
+
+LIB_GSL = @LIB_GSL@
+LIB_LAPACK = @LIB_LAPACK@
+LIB_PGPLOT = @LIB_PGPLOT@
diff --git a/var/spack/repos/builtin/packages/lorene/package.py b/var/spack/repos/builtin/packages/lorene/package.py
new file mode 100644
index 0000000000..daf2967418
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lorene/package.py
@@ -0,0 +1,96 @@
+# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+import inspect
+import os
+
+from spack import *
+
+
+class Lorene(MakefilePackage):
+ """LORENE: Langage Objet pour la RElativite NumeriquE
+
+ LORENE is a set of C++ classes to solve various problems
+ arising in numerical relativity, and more generally in
+ computational astrophysics. It provides tools to solve
+ partial differential equations by means of multi-domain
+ spectral methods."""
+
+ homepage = "https://lorene.obspm.fr/index.html"
+ cvs = ":pserver:anonymous:anonymous@octane.obspm.fr:/cvsroot%module=Lorene"
+
+ maintainers = ['eschnett']
+
+ version('2021.4.22', date='2021-04-22')
+
+ variant('fftw', default=True,
+ description='Use external FFTW for spectral transformations')
+ variant('bin_star', default=True,
+ description='Build Bin_star solver for binary neutron star systems')
+
+ depends_on('fftw @3:', when='+fftw')
+ depends_on('gsl')
+ depends_on('lapack')
+ depends_on('pgplot')
+
+ parallel = False
+
+ def edit(self, spec, prefix):
+ fftw_incdirs = "-I" + spec['fftw'].prefix.include if '+fftw' in spec else ""
+ fftw_libdirs = "-L" + spec['fftw'].prefix.lib if '+fftw' in spec else ""
+ gsl_incdirs = "-I" + spec['gsl'].prefix.include
+ gsl_libdirs = "-L" + spec['gsl'].prefix.lib
+ pgplot_incdirs = "-I" + spec['pgplot'].prefix.include
+ pgplot_libdirs = "-L" + spec['pgplot'].prefix.lib
+
+ substitutions = [
+ ('@CXX@', self.compiler.cxx),
+ ('@CXXFLAGS@', "-g -I$(HOME_LORENE)/C++/Include -O3 -DNDEBUG"),
+ ('@CXXFLAGS_G@', "-g -I$(HOME_LORENE)/C++/Include"),
+ ('@F77@', self.compiler.f77),
+ ('@F77FLAGS@', "-ffixed-line-length-none -g -O3"),
+ ('@F77FLAGS_G@', "-ffixed-line-length-none -g"),
+ ('@INC@',
+ ("-I$(HOME_LORENE)/C++/Include " +
+ "-I$(HOME_LORENE)/C++/Include_extra " +
+ fftw_incdirs + " " + gsl_incdirs + " " + pgplot_incdirs)),
+ ('@RANLIB@', "ls"),
+ ('@MAKEDEPEND@', "cpp $(INC) -M >> $(df).d $<"),
+ ('@FFT_DIR@', "FFTW3"),
+ ('@LIB_CXX@', fftw_libdirs + " -lfftw3 -lgfortran"),
+ ('@LIB_GSL@', gsl_libdirs + " -lgsl -lgslcblas"),
+ ('@LIB_LAPACK@', "-llapack -lblas"),
+ ('@LIB_PGPLOT@', pgplot_libdirs + " -lcpgplot -lpgplot"),
+ ]
+ local_settings_template = join_path(
+ os.path.dirname(inspect.getmodule(self).__file__),
+ 'local_settings.template'
+ )
+ local_settings = join_path(
+ self.stage.source_path, 'local_settings'
+ )
+ copy(local_settings_template, local_settings)
+ for key, value in substitutions:
+ filter_file(key, value, local_settings)
+
+ def build(self, spec, prefix):
+ args = ['HOME_LORENE=' + self.build_directory]
+ # (We could build the documentation as well.)
+ # (We could circumvent the build system and simply compile all
+ # source files, and do so in parallel.)
+ make('cpp', 'fortran', 'export', *args)
+ if '+bin_star' in spec:
+ with working_dir(join_path('Codes', 'Bin_star')):
+ make('-f', 'Makefile_O2',
+ 'coal', 'lit_bin', 'init_bin', 'coal_regu', 'init_bin_regu',
+ 'analyse', 'prepare_seq',
+ *args)
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.lib)
+ install_tree('Lib', prefix.lib)
+ mkdirp(prefix.bin)
+ if '+bin_star' in spec:
+ install_tree(join_path('Codes', 'Bin_star'), prefix.bin)
diff --git a/var/spack/repos/builtin/packages/pgplot/g77_gcc.conf.patch b/var/spack/repos/builtin/packages/pgplot/g77_gcc.conf.patch
new file mode 100644
index 0000000000..e41e387cad
--- /dev/null
+++ b/var/spack/repos/builtin/packages/pgplot/g77_gcc.conf.patch
@@ -0,0 +1,55 @@
+diff -ruN a/sys_linux/g77_gcc.conf b/sys_linux/g77_gcc.conf
+--- a/sys_linux/g77_gcc.conf 1969-12-31 19:00:00.000000000 -0500
++++ b/sys_linux/g77_gcc.conf 2021-04-22 16:48:45.000000000 -0400
+@@ -34,13 +34,13 @@
+ # Mandatory.
+ # The FORTRAN compiler to use.
+
+- FCOMPL="g77"
++ FCOMPL="@FCOMPL@"
+
+ # Mandatory.
+ # The FORTRAN compiler flags to use when compiling the pgplot library.
+ # (NB. makemake prepends -c to $FFLAGC where needed)
+
+- FFLAGC="-u -Wall -fPIC -O"
++ FFLAGC="@FFLAGC@"
+
+ # Mandatory.
+ # The FORTRAN compiler flags to use when compiling fortran demo programs.
+@@ -52,12 +52,12 @@
+ # Mandatory.
+ # The C compiler to use.
+
+- CCOMPL="gcc"
++ CCOMPL="@CCOMPL@"
+
+ # Mandatory.
+ # The C compiler flags to use when compiling the pgplot library.
+
+- CFLAGC="-Wall -fPIC -DPG_PPU -O"
++ CFLAGC="@CFLAGC@"
+
+ # Mandatory.
+ # The C compiler flags to use when compiling C demo programs.
+@@ -73,9 +73,9 @@
+ # Mandatory.
+ # The library-specification flags to use when linking normal pgplot
+ # demo programs.
+
+- LIBS="-L/usr/X11R6/lib -lX11"
++ LIBS="@LIBS@"
+
+ # Optional: Needed by XMDRIV (/xmotif).
+ # The library-specification flags to use when linking motif
+ # demo programs.
+@@ -108,8 +108,8 @@
+ # Optional: Needed if SHARED_LIB is set.
+ # How to create a shared library from a trailing list of object files.
+
+- SHARED_LD="gcc -shared -o $SHARED_LIB"
++ SHARED_LD="@SHARED_LD@"
+
+ # Optional:
+ # On systems such as Solaris 2.x, that allow specification of the
+ # libraries that a shared library needs to be linked with when a
diff --git a/var/spack/repos/builtin/packages/pgplot/package.py b/var/spack/repos/builtin/packages/pgplot/package.py
new file mode 100644
index 0000000000..1cad3f68c3
--- /dev/null
+++ b/var/spack/repos/builtin/packages/pgplot/package.py
@@ -0,0 +1,84 @@
+# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack import *
+
+
+class Pgplot(MakefilePackage):
+ """PGPLOT Graphics Subroutine Library
+
+ The PGPLOT Graphics Subroutine Library is a Fortran- or
+ C-callable, device-independent graphics package for making
+ simple scientific graphs. It is intended for making
+ graphical images of publication quality with minimum effort
+ on the part of the user. For most applications, the program
+ can be device-independent, and the output can be directed to
+ the appropriate device at run time."""
+
+ homepage = "https://sites.astro.caltech.edu/~tjp/pgplot/"
+ url = "ftp://ftp.astro.caltech.edu/pub/pgplot/pgplot5.2.tar.gz"
+
+ maintainers = ['eschnett']
+
+ version('5.2.2',
+ url="ftp://ftp.astro.caltech.edu/pub/pgplot/pgplot5.2.tar.gz",
+ sha256='a5799ff719a510d84d26df4ae7409ae61fe66477e3f1e8820422a9a4727a5be4')
+
+ # Replace hard-coded compilers and options by tokens, so that Spack can
+ # edit the file more easily
+ patch('g77_gcc.conf.patch')
+
+ parallel = False
+
+ def edit(self, spec, prefix):
+ substitutions = [
+ ('@CCOMPL@', self.compiler.cc),
+ ('@CFLAGC@', ("-Wall -fPIC -DPG_PPU -O -std=c89 " +
+ "-Wno-error=implicit-function-declaration")),
+ ('@FCOMPL@', self.compiler.f77),
+ ('@FFLAGC@', "-Wall -fPIC -O -ffixed-line-length-none -fallow-invalid-boz"),
+ ('@LIBS@', "-lgfortran"),
+ ('@SHARED_LD@', self.compiler.cc + " -shared -o $SHARED_LIB -lgfortran"),
+ ]
+ conf = join_path(
+ self.stage.source_path, 'sys_linux/g77_gcc.conf'
+ )
+ for key, value in substitutions:
+ filter_file(key, value, conf)
+
+ def build(self, spec, prefix):
+ makemake = which('./makemake')
+ makemake(self.build_directory, 'linux', 'g77_gcc')
+ make()
+ make('clean')
+ make('cpg')
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+ install('cpgdemo', prefix.bin)
+ install('pgbind', prefix.bin)
+ install('pgdemo1', prefix.bin)
+ install('pgdemo2', prefix.bin)
+ install('pgdemo3', prefix.bin)
+ install('pgdemo4', prefix.bin)
+ install('pgdemo5', prefix.bin)
+ install('pgdemo6', prefix.bin)
+ install('pgdemo7', prefix.bin)
+ install('pgdemo8', prefix.bin)
+ install('pgdemo9', prefix.bin)
+ install('pgdemo10', prefix.bin)
+ install('pgdemo11', prefix.bin)
+ install('pgdemo12', prefix.bin)
+ install('pgdemo13', prefix.bin)
+ install('pgdemo14', prefix.bin)
+ install('pgdemo15', prefix.bin)
+ install('pgdemo16', prefix.bin)
+ install('pgdemo17', prefix.bin)
+ mkdirp(prefix.include)
+ install('cpgplot.h', prefix.include)
+ mkdirp(prefix.lib)
+ install('libcpgplot.a', prefix.lib)
+ install('libpgplot.a', prefix.lib)
+ install('libpgplot.so', prefix.lib)