lorene, pgplot: new packages (#24549)
This commit is contained in:
parent
e957c58a1e
commit
4c7aed5d57
@ -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@
|
96
var/spack/repos/builtin/packages/lorene/package.py
Normal file
96
var/spack/repos/builtin/packages/lorene/package.py
Normal file
@ -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)
|
55
var/spack/repos/builtin/packages/pgplot/g77_gcc.conf.patch
Normal file
55
var/spack/repos/builtin/packages/pgplot/g77_gcc.conf.patch
Normal file
@ -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
|
84
var/spack/repos/builtin/packages/pgplot/package.py
Normal file
84
var/spack/repos/builtin/packages/pgplot/package.py
Normal file
@ -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)
|
Loading…
Reference in New Issue
Block a user