Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Spack
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
eic_tools
Spack
Commits
0c846272
Commit
0c846272
authored
8 years ago
by
Andrew Williams
Browse files
Options
Downloads
Patches
Plain Diff
Found upstream plumed package and modified this one to match
parent
90e5ccd9
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
var/spack/repos/builtin/packages/plumed/package.py
+89
-36
89 additions, 36 deletions
var/spack/repos/builtin/packages/plumed/package.py
with
89 additions
and
36 deletions
var/spack/repos/builtin/packages/plumed/package.py
+
89
−
36
View file @
0c846272
...
...
@@ -22,17 +22,26 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import
subprocess
from
spack
import
*
class
Plumed
(
Package
):
"""
PLUMED is an open source library for free energy calculations in
molecular systems which works together with some of the most popular
molecular dynamics engines.
"""
molecular systems which works together with some of the most popular
molecular dynamics engines.
Free energy calculations can be performed as a function of many order
parameters with a particular focus on biological problems, using state
of the art methods such as metadynamics, umbrella sampling and
Jarzynski-equation based steered MD.
# PLUMED homepage. The source is available on github.
homepage
=
"
http://www.plumed.org/home
"
url
=
"
https://github.com/plumed/plumed2
"
The software, written in C++, can be easily interfaced with both fortran
and C/C++ codes.
"""
homepage
=
'
http://www.plumed.org/
'
url
=
'
https://github.com/plumed/plumed2
'
version
(
'
2.2.3
'
,
git
=
"
https://github.com/plumed/plumed2.git
"
,
tag
=
'
v2.2.3
'
)
...
...
@@ -45,17 +54,80 @@ class Plumed(Package):
description
=
'
Build support for optional imd module.
'
)
variant
(
'
manyrestraints
'
,
default
=
False
,
description
=
'
Build support for optional manyrestraints module.
'
)
variant
(
'
mpi
'
,
default
=
False
,
description
=
'
Enable MPI support.
'
)
variant
(
'
shared
'
,
default
=
True
,
description
=
'
Builds shared libraries
'
)
variant
(
'
mpi
'
,
default
=
True
,
description
=
'
Activates MPI support
'
)
variant
(
'
gsl
'
,
default
=
True
,
description
=
'
Activates GSL support
'
)
# Dependencies. LAPACK and BLAS are recommended but not essentia
depends_on
(
'
zlib
'
)
depends_on
(
'
blas
'
)
depends_on
(
'
lapack
'
)
depends_on
(
'
mpi
'
,
when
=
'
+mpi
'
)
depends_on
(
'
gsl
'
,
when
=
'
+gsl
'
)
# Dependencies. LAPACK and BLAS are recommended but not essential.
depends_on
(
"
mpi
"
,
when
=
"
+mpi
"
)
depends_on
(
"
netlib-lapack
"
)
depends_on
(
"
openblas
"
)
# Dictionary mapping PLUMED versions to the patches it provides
# interactively
plumed_patches
=
{
'
2.2.3
'
:
{
'
amber-14
'
:
'
1
'
,
'
gromacs-4.5.7
'
:
'
2
'
,
'
gromacs-4.6.7
'
:
'
3
'
,
'
gromacs-5.0.7
'
:
'
4
'
,
'
gromacs-5.1.2
'
:
'
5
'
,
'
lammps-6Apr13
'
:
'
6
'
,
'
namd-2.8
'
:
'
7
'
,
'
namd-2.9
'
:
'
8
'
,
'
espresso-5.0.2
'
:
'
9
'
}
}
def
apply_patch
(
self
,
other
):
plumed
=
subprocess
.
Popen
(
[
join_path
(
self
.
spec
.
prefix
.
bin
,
'
plumed
'
),
'
patch
'
,
'
-p
'
],
stdin
=
subprocess
.
PIPE
)
opts
=
Plumed
.
plumed_patches
[
str
(
self
.
version
)]
search
=
'
{0.name}-{0.version}
'
.
format
(
other
)
choice
=
opts
[
search
]
+
'
\n
'
plumed
.
stdin
.
write
(
choice
)
plumed
.
wait
()
def
setup_dependent_package
(
self
,
module
,
ext_spec
):
# Make plumed visible from dependent packages
module
.
plumed
=
Executable
(
join_path
(
self
.
spec
.
prefix
.
bin
,
'
plumed
'
))
def
install
(
self
,
spec
,
prefix
):
# Prefix is the only compulsory argument.
config_args
=
[
"
--prefix=
"
+
prefix
]
# From plumed docs :
# Also consider that this is different with respect to what some other
# configure script does in that variables such as MPICXX are
# completely ignored here. In case you work on a machine where CXX is
# set to a serial compiler and MPICXX to a MPI compiler, to compile
# with MPI you should use:
#
# > ./configure CXX="$MPICXX"
configure_opts
=
[
"
--prefix=
"
+
prefix
]
# If using MPI then ensure the correct compiler wrapper is used.
if
'
+mpi
'
in
spec
:
configure_opts
.
extend
([
'
--enable-mpi
'
,
'
CXX={0}
'
.
format
(
spec
[
'
mpi
'
].
mpicxx
)
])
# If the MPI dependency is provided by the intelmpi package then
# the following additional argument is required to allow it to
# build.
if
spec
.
satisfies
(
'
^intelmpi
'
):
configure_opts
.
extend
([
'
STATIC_LIBS=-mt_mpi
'
])
# Additional arguments
configure_opts
.
extend
([
'
--enable-shared={0}
'
.
format
(
'
yes
'
if
'
+shared
'
in
spec
else
'
no
'
),
'
--enable-gsl={0}
'
.
format
(
'
yes
'
if
'
+gsl
'
in
spec
else
'
no
'
)
])
# Construct list of optional modules
module_opts
=
[]
...
...
@@ -70,28 +142,9 @@ def install(self, spec, prefix):
# If we have specified any optional modules then add the argument to
# enable or disable them.
if
module_opts
:
config_args
.
extend
([
"
--enable-modules=%s
"
%
""
.
join
(
module_opts
)])
# If using MPI then ensure the correct compiler wrapper is used.
if
'
+mpi
'
in
spec
:
config_args
.
extend
([
"
--enable-mpi
"
,
"
CC=%s
"
%
self
.
spec
[
'
mpi
'
].
mpicc
,
"
CXX=%s
"
%
self
.
spec
[
'
mpi
'
].
mpicxx
,
"
FC=%s
"
%
self
.
spec
[
'
mpi
'
].
mpifc
,
"
F77=%s
"
%
self
.
spec
[
'
mpi
'
].
mpif77
])
# If the MPI dependency is provided by the intelmpi package then
# the following additional argument is required to allow it to
# build.
if
spec
.
satisfies
(
'
^intelmpi
'
):
config_args
.
extend
([
"
STATIC_LIBS=-mt_mpi
"
])
# Configure
configure
(
*
config_args
)
configure_opts
.
extend
([
'
--enable-modules={0}
'
.
format
(
""
.
join
(
module_opts
))])
configure
(
*
configure_opts
)
make
()
make
(
"
install
"
)
make
(
'
install
'
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment