From a07056d67b71b7857e32fae2cb19a62a70ded7be Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Jun 2016 16:20:37 -0400 Subject: Add Bliss package --- .../builtin/packages/bliss/Makefile.spack.patch | 38 +++++++++++++++++ var/spack/repos/builtin/packages/bliss/package.py | 48 ++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 var/spack/repos/builtin/packages/bliss/Makefile.spack.patch create mode 100644 var/spack/repos/builtin/packages/bliss/package.py diff --git a/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch b/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch new file mode 100644 index 0000000000..39a3a63b41 --- /dev/null +++ b/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch @@ -0,0 +1,38 @@ +--- old/Makefile.spack ++++ new/Makefile.spack +@@ -0,0 +1,35 @@ ++# Set PREFIX to the install location for both building and installing ++# Set GMP_PREFIX to the location where GMP is installed ++ ++SRCS = \ ++ bliss_C.cc \ ++ defs.cc \ ++ graph.cc \ ++ heap.cc \ ++ orbit.cc \ ++ partition.cc \ ++ timer.cc \ ++ uintseqhash.cc \ ++ utils.cc ++ ++OBJS = $(SRCS:%.cc=%.lo) ++ ++all: libbliss_gmp.la bliss_gmp ++ ++libbliss_gmp.la: $(OBJS) ++ libtool --mode=link --tag=CXX c++ -g -O2 \ ++ -rpath $(PREFIX)/lib -o $@ $^ -L$(GMP_PREFIX)/lib -lgmp ++ ++bliss_gmp: bliss.lo libbliss_gmp.la ++ libtool --mode=link --tag=CXX c++ -g -O2 -o $@ $^ ++ ++%.lo: %.cc ++ libtool --mode=compile --tag=CXX c++ -g -O2 -DBLISS_USE_GMP -c $*.cc ++ ++install: ++ mkdir -p $(PREFIX)/bin ++ mkdir -p $(PREFIX)/lib ++ libtool --mode=install cp bliss_gmp $(PREFIX)/bin/bliss_gmp ++ libtool --mode=install cp libbliss_gmp.la $(PREFIX)/lib/libbliss_gmp.la ++ ++.PHONY: all install diff --git a/var/spack/repos/builtin/packages/bliss/package.py b/var/spack/repos/builtin/packages/bliss/package.py new file mode 100644 index 0000000000..87e9424bcf --- /dev/null +++ b/var/spack/repos/builtin/packages/bliss/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Bliss(Package): + """bliss: A Tool for Computing Automorphism Groups and Canonical Labelings of Graphs""" + + homepage = "http://www.tcs.hut.fi/Software/bliss/" + url = "http://www.tcs.hut.fi/Software/bliss/bliss-0.73.zip" + + # Note: Bliss can also be built without gmp, but we don't support this yet + + depends_on("gmp") + depends_on("libtool") + + version('0.73', '72f2e310786923b5c398ba0fc40b42ce') + + patch("Makefile.spack.patch") + + def install(self, spec, prefix): + # The Makefile isn't portable; use our own instead + makeargs = ["-f", "Makefile.spack", + "PREFIX=%s" % prefix, "GMP_PREFIX=%s" % spec["gmp"].prefix] + make(*makeargs) + make("install", *makeargs) -- cgit v1.2.3-60-g2f50 From 83d4cdc0909e94f5b0a5cfaf472a9d8abc698bf7 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Jun 2016 16:36:43 -0400 Subject: Update Bliss --- var/spack/repos/builtin/packages/bliss/package.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/bliss/package.py b/var/spack/repos/builtin/packages/bliss/package.py index 87e9424bcf..16029ac012 100644 --- a/var/spack/repos/builtin/packages/bliss/package.py +++ b/var/spack/repos/builtin/packages/bliss/package.py @@ -26,18 +26,19 @@ from spack import * class Bliss(Package): - """bliss: A Tool for Computing Automorphism Groups and Canonical Labelings of Graphs""" + """bliss: A Tool for Computing Automorphism Groups and Canonical + Labelings of Graphs""" homepage = "http://www.tcs.hut.fi/Software/bliss/" url = "http://www.tcs.hut.fi/Software/bliss/bliss-0.73.zip" + version('0.73', '72f2e310786923b5c398ba0fc40b42ce') + # Note: Bliss can also be built without gmp, but we don't support this yet depends_on("gmp") depends_on("libtool") - version('0.73', '72f2e310786923b5c398ba0fc40b42ce') - patch("Makefile.spack.patch") def install(self, spec, prefix): -- cgit v1.2.3-60-g2f50 From 64aaf7ba81b19fefe319b5ca2e77bad8eeff9afe Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Jun 2016 16:37:08 -0400 Subject: New package cdd --- .../builtin/packages/cdd/Makefile.spack.patch | 22 ++++++++++ var/spack/repos/builtin/packages/cdd/package.py | 47 ++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cdd/Makefile.spack.patch create mode 100644 var/spack/repos/builtin/packages/cdd/package.py diff --git a/var/spack/repos/builtin/packages/cdd/Makefile.spack.patch b/var/spack/repos/builtin/packages/cdd/Makefile.spack.patch new file mode 100644 index 0000000000..4c97187a57 --- /dev/null +++ b/var/spack/repos/builtin/packages/cdd/Makefile.spack.patch @@ -0,0 +1,22 @@ +--- old/Makefile.spack ++++ new/Makefile.spack +@@ -0,0 +1,19 @@ ++# Set PREFIX to the install location for both building and installing ++ ++all: cdd dplex_test ++ ++cdd: cdd.lo cddio.lo cddarith.lo dplex.lo setoper.lo ++ libtool --mode=link --tag=CC cc -g -O2 -o $@ $^ ++ ++dplex_test: dplex.lo dplex_test.lo setoper.lo ++ libtool --mode=link --tag=CC cc -g -O2 -o $@ $^ ++ ++%.lo: %.c ++ libtool --mode=compile --tag=CC cc -g -O2 -c $*.c ++ ++install: ++ mkdir -p $(PREFIX)/bin ++ libtool --mode=install cp cdd $(PREFIX)/bin/cdd ++ libtool --mode=install cp dplex_test $(PREFIX)/bin/dplex_test ++ ++.PHONY: all install diff --git a/var/spack/repos/builtin/packages/cdd/package.py b/var/spack/repos/builtin/packages/cdd/package.py new file mode 100644 index 0000000000..f48af165fa --- /dev/null +++ b/var/spack/repos/builtin/packages/cdd/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Cdd(Package): + """The program cdd+ (cdd, respectively) is a C++ (ANSI C) + implementation of the Double Description Method [MRTT53] for + generating all vertices (i.e. extreme points) and extreme rays of + a general convex polyhedron given by a system of linear + inequalities""" + homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/cdd.html" + url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cdd-061a.tar.gz" + + version('061a', '22c24a7a9349dd7ec0e24531925a02d9') + + depends_on("libtool") + + patch("Makefile.spack.patch") + + def install(self, spec, prefix): + # The Makefile isn't portable; use our own instead + makeargs = ["-f", "Makefile.spack", "PREFIX=%s" % prefix] + make(*makeargs) + make("install", *makeargs) -- cgit v1.2.3-60-g2f50 From 92a7c0ddd5166a9b94aec1f3682c503ba0a4d9de Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Jun 2016 18:02:52 -0400 Subject: Update Bliss to use -O3 --- var/spack/repos/builtin/packages/bliss/Makefile.spack.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch b/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch index 39a3a63b41..af2386d6cb 100644 --- a/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch +++ b/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch @@ -20,14 +20,14 @@ +all: libbliss_gmp.la bliss_gmp + +libbliss_gmp.la: $(OBJS) -+ libtool --mode=link --tag=CXX c++ -g -O2 \ ++ libtool --mode=link --tag=CXX c++ -g -O3 \ + -rpath $(PREFIX)/lib -o $@ $^ -L$(GMP_PREFIX)/lib -lgmp + +bliss_gmp: bliss.lo libbliss_gmp.la -+ libtool --mode=link --tag=CXX c++ -g -O2 -o $@ $^ ++ libtool --mode=link --tag=CXX c++ -g -O3 -o $@ $^ + +%.lo: %.cc -+ libtool --mode=compile --tag=CXX c++ -g -O2 -DBLISS_USE_GMP -c $*.cc ++ libtool --mode=compile --tag=CXX c++ -g -O3 -DBLISS_USE_GMP -c $*.cc + +install: + mkdir -p $(PREFIX)/bin -- cgit v1.2.3-60-g2f50 From a5086f474e9ca546692acd06ce9e49bf1c9cea26 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Jun 2016 18:03:09 -0400 Subject: New package lrslib --- .../builtin/packages/lrslib/Makefile.spack.patch | 58 ++++++++++++++++++++++ var/spack/repos/builtin/packages/lrslib/package.py | 56 +++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch create mode 100644 var/spack/repos/builtin/packages/lrslib/package.py diff --git a/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch b/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch new file mode 100644 index 0000000000..2a76316fe2 --- /dev/null +++ b/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch @@ -0,0 +1,58 @@ +--- old/Makefile.spack ++++ new/Makefile.spack +@@ -0,0 +1,55 @@ ++# Set PREFIX to the install location for both building and installing ++# Set BOOST_PREFIX to the location where BOOST is installed ++# Set GMP_PREFIX to the location where GMP is installed ++ ++all: liblrsgmp.la 2nash lrs lrs1 lrsnash redund redund1 setnash setnash2 ++ ++liblrsgmp.la: lrslib-GMP.lo lrsgmp-GMP.lo ++ libtool --mode=link --tag=CC cc -g -O3 \ ++ -rpath $(PREFIX)/lib -o $@ $^ \ ++ -L$(GMP_PREFIX)/lib -lgmp ++ ++lrs1: lrs-LONG.lo lrslib-LONG.lo lrslong-LONG.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++redund1: redund-LONG.lo lrslib-LONG.lo lrslong-LONG.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++setnash: setupnash.lo lrslib.lo lrsmp.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++setnash2: setupnash2.lo lrslib.lo lrsmp.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++lrs: lrs.lo lrslib.lo lrsmp.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ \ ++ -L$(GMP_PREFIX)/lib -lgmp ++redund: redund.lo lrslib.lo lrsmp.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ \ ++ -L$(GMP_PREFIX)/lib -lgmp ++lrsnash: lrsnash.lo lrsnashlib.lo lrslib.lo lrsmp.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ \ ++ -L$(GMP_PREFIX)/lib -lgmp ++2nash: 2nash.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++ ++%.lo: %.c ++ libtool --mode=compile --tag=CC cc -g -O3 -o $@ -c $*.c ++%-GMP.lo: %.c ++ libtool --mode=compile --tag=CC cc -g -O3 -o $@ -DGMP -c $*.c ++%-LONG.lo: %.c ++ libtool --mode=compile --tag=CC cc -g -O3 -o $@ -DLRSLONG -c $*.c ++%-SIGNALS.lo: %.c ++ libtool --mode=compile --tag=CC cc -g -O3 -o $@ \ ++ -DTIMES -DSIGNALS -c $*.c ++ ++install: ++ mkdir -p $(PREFIX)/bin ++ mkdir -p $(PREFIX)/lib ++ libtool --mode=install cp 2nash $(PREFIX)/bin/2nash ++ libtool --mode=install cp lrs $(PREFIX)/bin/lrs ++ libtool --mode=install cp lrs1 $(PREFIX)/bin/lrs1 ++ libtool --mode=install cp lrsnash $(PREFIX)/bin/lrsnash ++ libtool --mode=install cp redund $(PREFIX)/bin/redund ++ libtool --mode=install cp redund1 $(PREFIX)/bin/redund1 ++ libtool --mode=install cp setnash $(PREFIX)/bin/setnash ++ libtool --mode=install cp setnash2 $(PREFIX)/bin/setnash2 ++ libtool --mode=install cp liblrsgmp.la $(PREFIX)/lib/liblrsgmp.la ++ ++.PHONY: all install diff --git a/var/spack/repos/builtin/packages/lrslib/package.py b/var/spack/repos/builtin/packages/lrslib/package.py new file mode 100644 index 0000000000..9f02d7c979 --- /dev/null +++ b/var/spack/repos/builtin/packages/lrslib/package.py @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Lrslib(Package): + """lrslib Ver 6.2 is a self-contained ANSI C implementation of the + reverse search algorithm for vertex enumeration/convex hull + problems and comes with a choice of three arithmetic packages""" + homepage = "http://cgm.cs.mcgill.ca/~avis/C/lrs.html" + url = "http://cgm.cs.mcgill.ca/~avis/C/lrslib/archive/lrslib-062.tar.gz" + + version('062', 'be5da7b3b90cc2be628dcade90c5d1b9') + version('061', '0b3687c8693cd7d1f234a3f65e147551') + version('060', 'd600a2e62969ad03f7ab2f85f1b3709c') + version('051', 'cca323eee8bf76f598a13d7bf67cc13d') + version('043', '86dd9a45d20a3a0069f77e61be5b46ad') + + # Note: lrslib can also be built with Boost, and probably without gmp + + # depends_on("boost") + depends_on("gmp") + depends_on("libtool") + + patch("Makefile.spack.patch") + + def install(self, spec, prefix): + # The Makefile isn't portable; use our own instead + makeargs = ["-f", "Makefile.spack", + "PREFIX=%s" % prefix, + # "BOOST_PREFIX=%s" % spec["boost"].prefix, + "GMP_PREFIX=%s" % spec["gmp"].prefix] + make(*makeargs) + make("install", *makeargs) -- cgit v1.2.3-60-g2f50 From 2009354719f5f8c7bd13a927cd325482ece5458b Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Jun 2016 21:38:15 -0400 Subject: Add fourier tool to lrslib --- .../builtin/packages/lrslib/Makefile.spack.patch | 31 +++++++++++----------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch b/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch index 2a76316fe2..afa1c1af13 100644 --- a/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch +++ b/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch @@ -1,11 +1,12 @@ --- old/Makefile.spack +++ new/Makefile.spack -@@ -0,0 +1,55 @@ +@@ -0,0 +1,54 @@ +# Set PREFIX to the install location for both building and installing +# Set BOOST_PREFIX to the location where BOOST is installed +# Set GMP_PREFIX to the location where GMP is installed + -+all: liblrsgmp.la 2nash lrs lrs1 lrsnash redund redund1 setnash setnash2 ++all: liblrsgmp.la \ ++ 2nash fourier lrs lrs1 lrsnash redund redund1 setnash setnash2 + +liblrsgmp.la: lrslib-GMP.lo lrsgmp-GMP.lo + libtool --mode=link --tag=CC cc -g -O3 \ @@ -16,21 +17,21 @@ + libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ +redund1: redund-LONG.lo lrslib-LONG.lo lrslong-LONG.lo + libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ -+setnash: setupnash.lo lrslib.lo lrsmp.lo ++lrs: lrs-GMP.lo lrslib-GMP.lo lrsmp-GMP.lo liblrsgmp.la + libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ -+setnash2: setupnash2.lo lrslib.lo lrsmp.lo ++redund: redund-GMP.lo lrslib-GMP.lo lrsmp-GMP.lo liblrsgmp.la ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++fourier: fourier-GMP.lo lrslib-GMP.lo lrsgmp-GMP.lo liblrsgmp.la ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++lrsnash: lrsnash-GMP.lo lrsnashlib-GMP.lo lrslib-GMP.lo lrsmp-GMP.lo \ ++ liblrsgmp.la + libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ -+lrs: lrs.lo lrslib.lo lrsmp.lo -+ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ \ -+ -L$(GMP_PREFIX)/lib -lgmp -+redund: redund.lo lrslib.lo lrsmp.lo -+ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ \ -+ -L$(GMP_PREFIX)/lib -lgmp -+lrsnash: lrsnash.lo lrsnashlib.lo lrslib.lo lrsmp.lo -+ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ \ -+ -L$(GMP_PREFIX)/lib -lgmp +2nash: 2nash.lo + libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++setnash: setupnash.lo lrslib.lo lrsmp.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++setnash2: setupnash2.lo lrslib.lo lrsmp.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ + +%.lo: %.c + libtool --mode=compile --tag=CC cc -g -O3 -o $@ -c $*.c @@ -38,14 +39,12 @@ + libtool --mode=compile --tag=CC cc -g -O3 -o $@ -DGMP -c $*.c +%-LONG.lo: %.c + libtool --mode=compile --tag=CC cc -g -O3 -o $@ -DLRSLONG -c $*.c -+%-SIGNALS.lo: %.c -+ libtool --mode=compile --tag=CC cc -g -O3 -o $@ \ -+ -DTIMES -DSIGNALS -c $*.c + +install: + mkdir -p $(PREFIX)/bin + mkdir -p $(PREFIX)/lib + libtool --mode=install cp 2nash $(PREFIX)/bin/2nash ++ libtool --mode=install cp fourier $(PREFIX)/bin/fourier + libtool --mode=install cp lrs $(PREFIX)/bin/lrs + libtool --mode=install cp lrs1 $(PREFIX)/bin/lrs1 + libtool --mode=install cp lrsnash $(PREFIX)/bin/lrsnash -- cgit v1.2.3-60-g2f50 From e5b08544ff6506cc6d0352d9c4c1ca7441720bad Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Jun 2016 22:02:36 -0400 Subject: New package Panda --- var/spack/repos/builtin/packages/panda/package.py | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/panda/package.py diff --git a/var/spack/repos/builtin/packages/panda/package.py b/var/spack/repos/builtin/packages/panda/package.py new file mode 100644 index 0000000000..ecfe5e1170 --- /dev/null +++ b/var/spack/repos/builtin/packages/panda/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Panda(Package): + """PANDA: Parallel AdjaceNcy Decomposition Algorithm""" + homepage = "http://comopt.ifi.uni-heidelberg.de/software/PANDA/index.html" + url = "http://comopt.ifi.uni-heidelberg.de/software/PANDA/downloads/current_panda.tar" + + version('panda', 'b06dc312ee56e13eefea9c915b70fcef') + + # Note: Panda can also be built without MPI support + + depends_on("cmake") + depends_on("mpi") + + def install(self, spec, prefix): + with working_dir('spack-build', create=True): + cmake("..", *std_cmake_args) + make() + make("install") -- cgit v1.2.3-60-g2f50 From 8fa8fc239f2afb1f3bd4a22b98f3cc3cbeedf80a Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Jun 2016 22:22:58 -0400 Subject: New package "nauty and Traces" --- var/spack/repos/builtin/packages/nauty/package.py | 83 +++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nauty/package.py diff --git a/var/spack/repos/builtin/packages/nauty/package.py b/var/spack/repos/builtin/packages/nauty/package.py new file mode 100644 index 0000000000..564855e453 --- /dev/null +++ b/var/spack/repos/builtin/packages/nauty/package.py @@ -0,0 +1,83 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 +############################################################################## + +import shutil +from spack import * + +class Nauty(Package): + """nauty and Traces are programs for computing automorphism groups of + graphsq and digraphs""" + homepage = "http://pallini.di.uniroma1.it/index.html" + url = "http://pallini.di.uniroma1.it/nauty26r5.tar.gz" + + version('26r5', '91b03a7b069962e94fc9aac8831ce8d2') + version('25r9', 'e8ecd08b0892a1fb13329c147f08de6d') + + def install(self, spec, prefix): + configure('--prefix=%s' % prefix) + make() + + exes = [ + "NRswitchg", + "addedgeg", + "amtog", + "biplabg", + "catg", + "complg", + "converseg", + "copyg", + "countg", + "cubhamg", + "deledgeg", + "delptg", + "directg", + "dreadnaut", + "dretodot", + "dretog", + "genbg", + "genbgL", + "geng", + "genquarticg", + "genrang", + "genspecialg", + "gentourng", + "gentreeg", + "hamheuristic", + "labelg", + "linegraphg", + "listg", + "multig", + "newedgeg", + "pickg", + "planarg", + "ranlabg", + "shortg", + "subdivideg", + "twohamg", + "vcolg", + "watercluster2"] + mkdirp(prefix.bin) + for exe in exes: + shutil.copyfile(exe, join_path(prefix.bin, exe)) -- cgit v1.2.3-60-g2f50 From 71e92774ebef0194beaa6a56fa2129fed3df70b1 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Jun 2016 22:47:59 -0400 Subject: New package cddlib --- var/spack/repos/builtin/packages/cddlib/package.py | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cddlib/package.py diff --git a/var/spack/repos/builtin/packages/cddlib/package.py b/var/spack/repos/builtin/packages/cddlib/package.py new file mode 100644 index 0000000000..bec3030e25 --- /dev/null +++ b/var/spack/repos/builtin/packages/cddlib/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Cddlib(Package): + """The C-library cddlib is a C implementation of the Double Description + Method of Motzkin et al. for generating all vertices (i.e. extreme points) + and extreme rays of a general convex polyhedron in R^d given by a system + of linear inequalities""" + homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/" + url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-094h.tar.gz" + + version('094h', '1467d270860bbcb26d3ebae424690e7c') + + # Note: It should be possible to build cddlib also without gmp + + depends_on("gmp") + depends_on("libtool") + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix) + make() + make("install") -- cgit v1.2.3-60-g2f50 From d8b9cda632d7a39c580bc7c5bb7f7fea44044f85 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 19 Jun 2016 12:48:47 -0400 Subject: Build Bliss both with and without GMP --- .../builtin/packages/bliss/Makefile.spack.patch | 27 ++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch b/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch index af2386d6cb..19e65ed82b 100644 --- a/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch +++ b/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch @@ -1,6 +1,6 @@ --- old/Makefile.spack +++ new/Makefile.spack -@@ -0,0 +1,35 @@ +@@ -0,0 +1,48 @@ +# Set PREFIX to the install location for both building and installing +# Set GMP_PREFIX to the location where GMP is installed + @@ -15,24 +15,37 @@ + uintseqhash.cc \ + utils.cc + -+OBJS = $(SRCS:%.cc=%.lo) ++all: libbliss.la bliss libbliss_gmp.la bliss_gmp + -+all: libbliss_gmp.la bliss_gmp -+ -+libbliss_gmp.la: $(OBJS) ++libbliss.la: $(SRCS:%.cc=%.lo) ++ libtool --mode=link --tag=CXX c++ -g -O3 \ ++ -rpath $(PREFIX)/lib -o $@ $^ ++libbliss_gmp.la: $(SRCS:%.cc=%.gmp.lo) + libtool --mode=link --tag=CXX c++ -g -O3 \ + -rpath $(PREFIX)/lib -o $@ $^ -L$(GMP_PREFIX)/lib -lgmp + -+bliss_gmp: bliss.lo libbliss_gmp.la ++bliss: bliss.lo libbliss.la ++ libtool --mode=link --tag=CXX c++ -g -O3 -o $@ $^ ++ ++bliss_gmp: bliss.gmp.lo libbliss_gmp.la + libtool --mode=link --tag=CXX c++ -g -O3 -o $@ $^ + +%.lo: %.cc -+ libtool --mode=compile --tag=CXX c++ -g -O3 -DBLISS_USE_GMP -c $*.cc ++ libtool --mode=compile --tag=CXX c++ -g -O3 -o $@ -c $*.cc ++%.gmp.lo: %.cc ++ libtool --mode=compile --tag=CXX c++ -g -O3 -o $@ \ ++ -c -DBLISS_USE_GMP $*.cc + +install: + mkdir -p $(PREFIX)/bin ++ mkdir -p $(PREFIX)/include + mkdir -p $(PREFIX)/lib ++ libtool --mode=install cp bliss $(PREFIX)/bin/bliss + libtool --mode=install cp bliss_gmp $(PREFIX)/bin/bliss_gmp ++ libtool --mode=install cp bliss_C.h $(PREFIX)/include/bliss_C.h ++ libtool --mode=install cp graph.hh $(PREFIX)/include/graph.hh ++ libtool --mode=install cp utils.hh $(PREFIX)/include/utils.hh ++ libtool --mode=install cp libbliss.la $(PREFIX)/lib/libbliss.la + libtool --mode=install cp libbliss_gmp.la $(PREFIX)/lib/libbliss_gmp.la + +.PHONY: all install -- cgit v1.2.3-60-g2f50 From fa471a4ed1a4f03099db5d7e5ed7b1a3894dcf2e Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 19 Jun 2016 13:46:38 -0400 Subject: Add missing header files to Bliss install --- .../builtin/packages/bliss/Makefile.spack.patch | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch b/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch index 19e65ed82b..4f4441bbe9 100644 --- a/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch +++ b/var/spack/repos/builtin/packages/bliss/Makefile.spack.patch @@ -1,6 +1,6 @@ --- old/Makefile.spack +++ new/Makefile.spack -@@ -0,0 +1,48 @@ +@@ -0,0 +1,59 @@ +# Set PREFIX to the install location for both building and installing +# Set GMP_PREFIX to the location where GMP is installed + @@ -33,18 +33,29 @@ +%.lo: %.cc + libtool --mode=compile --tag=CXX c++ -g -O3 -o $@ -c $*.cc +%.gmp.lo: %.cc -+ libtool --mode=compile --tag=CXX c++ -g -O3 -o $@ \ ++ libtool --mode=compile --tag=CXX c++ -g -O3 -o $@ \ + -c -DBLISS_USE_GMP $*.cc + +install: + mkdir -p $(PREFIX)/bin -+ mkdir -p $(PREFIX)/include ++ mkdir -p $(PREFIX)/include/bliss + mkdir -p $(PREFIX)/lib + libtool --mode=install cp bliss $(PREFIX)/bin/bliss + libtool --mode=install cp bliss_gmp $(PREFIX)/bin/bliss_gmp -+ libtool --mode=install cp bliss_C.h $(PREFIX)/include/bliss_C.h -+ libtool --mode=install cp graph.hh $(PREFIX)/include/graph.hh -+ libtool --mode=install cp utils.hh $(PREFIX)/include/utils.hh ++ libtool --mode=install cp bignum.hh $(PREFIX)/include/bliss/bignum.hh ++ libtool --mode=install cp bliss_C.h $(PREFIX)/include/bliss/bliss_C.h ++ libtool --mode=install cp defs.hh $(PREFIX)/include/bliss/defs.hh ++ libtool --mode=install cp graph.hh $(PREFIX)/include/bliss/graph.hh ++ libtool --mode=install cp heap.hh $(PREFIX)/include/bliss/heap.hh ++ libtool --mode=install cp kqueue.hh $(PREFIX)/include/bliss/kqueue.hh ++ libtool --mode=install cp kstack.hh $(PREFIX)/include/bliss/kstack.hh ++ libtool --mode=install cp orbit.hh $(PREFIX)/include/bliss/orbit.hh ++ libtool --mode=install cp partition.hh \ ++ $(PREFIX)/include/bliss/partition.hh ++ libtool --mode=install cp timer.hh $(PREFIX)/include/bliss/timer.hh ++ libtool --mode=install cp uintseqhash.hh \ ++ $(PREFIX)/include/bliss/uintseqhash.hh ++ libtool --mode=install cp utils.hh $(PREFIX)/include/bliss/utils.hh + libtool --mode=install cp libbliss.la $(PREFIX)/lib/libbliss.la + libtool --mode=install cp libbliss_gmp.la $(PREFIX)/lib/libbliss_gmp.la + -- cgit v1.2.3-60-g2f50 From b4da4425ff5b4b1cc064d5ef42a47f4c8db7cee1 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 19 Jun 2016 13:47:02 -0400 Subject: Add header files to lrslib install --- var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch b/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch index afa1c1af13..d4d5e66528 100644 --- a/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch +++ b/var/spack/repos/builtin/packages/lrslib/Makefile.spack.patch @@ -1,6 +1,6 @@ --- old/Makefile.spack +++ new/Makefile.spack -@@ -0,0 +1,54 @@ +@@ -0,0 +1,57 @@ +# Set PREFIX to the install location for both building and installing +# Set BOOST_PREFIX to the location where BOOST is installed +# Set GMP_PREFIX to the location where GMP is installed @@ -42,6 +42,7 @@ + +install: + mkdir -p $(PREFIX)/bin ++ mkdir -p $(PREFIX)/include + mkdir -p $(PREFIX)/lib + libtool --mode=install cp 2nash $(PREFIX)/bin/2nash + libtool --mode=install cp fourier $(PREFIX)/bin/fourier @@ -52,6 +53,8 @@ + libtool --mode=install cp redund1 $(PREFIX)/bin/redund1 + libtool --mode=install cp setnash $(PREFIX)/bin/setnash + libtool --mode=install cp setnash2 $(PREFIX)/bin/setnash2 ++ libtool --mode=install cp lrsgmp.h $(PREFIX)/include/lrsgmp.h ++ libtool --mode=install cp lrslib.h $(PREFIX)/include/lrslib.h + libtool --mode=install cp liblrsgmp.la $(PREFIX)/lib/liblrsgmp.la + +.PHONY: all install -- cgit v1.2.3-60-g2f50 From a0c0728ea86b21505c9880ee63054cc3696b974b Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 19 Jun 2016 13:47:26 -0400 Subject: New package polymake --- .../repos/builtin/packages/polymake/package.py | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/polymake/package.py diff --git a/var/spack/repos/builtin/packages/polymake/package.py b/var/spack/repos/builtin/packages/polymake/package.py new file mode 100644 index 0000000000..a5c2c053ab --- /dev/null +++ b/var/spack/repos/builtin/packages/polymake/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Polymake(Package): + """polymake is open source software for research in polyhedral geometry""" + homepage = "https://polymake.org/doku.php" + url = "https://polymake.org/lib/exe/fetch.php/download/polymake-3.0r1.tar.bz2" + + version('3.0r1', '63ecbecf9697c6826724d8a041d2cac0') + + # Note: Could also be built with nauty instead of bliss + + depends_on("bliss") + depends_on("boost") + depends_on("cddlib") + depends_on("gmp") + depends_on("lrslib") + depends_on("mpfr") + depends_on("ppl") + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix, + "--with-bliss=%s" % spec["bliss"].prefix, + "--with-boost=%s" % spec["boost"].prefix, + "--with-cdd=%s" % spec["cddlib"].prefix, + "--with-gmp=%s" % spec["gmp"].prefix, + "--with-lrs=%s" % spec["lrslib"].prefix, + "--with-mpfr=%s" % spec["mpfr"].prefix, + "--with-ppl=%s" % spec["ppl"].prefix) + make() + make("install") -- cgit v1.2.3-60-g2f50 From e43eaad5570009622bf0b19b2a9df2f7e70f8f3e Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 19 Jun 2016 14:11:36 -0400 Subject: New package porta --- .../builtin/packages/porta/Makefile.spack.patch | 23 ++++++++++++ var/spack/repos/builtin/packages/porta/package.py | 43 ++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 var/spack/repos/builtin/packages/porta/Makefile.spack.patch create mode 100644 var/spack/repos/builtin/packages/porta/package.py diff --git a/var/spack/repos/builtin/packages/porta/Makefile.spack.patch b/var/spack/repos/builtin/packages/porta/Makefile.spack.patch new file mode 100644 index 0000000000..1cd8fcc3c0 --- /dev/null +++ b/var/spack/repos/builtin/packages/porta/Makefile.spack.patch @@ -0,0 +1,23 @@ +--- old/src/Makefile.spack ++++ new/src/Makefile.spack +@@ -0,0 +1,20 @@ ++# Set PREFIX to the install location for both building and installing ++ ++all: valid xporta ++ ++valid: common.lo arith.lo inout.lo log.lo valid.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++ ++xporta: common.lo arith.lo inout.lo log.lo \ ++ porta.lo four_mot.lo portsort.lo largecalc.lo mp.lo ++ libtool --mode=link --tag=CC cc -g -O3 -o $@ $^ ++ ++%.lo: %.c ++ libtool --mode=compile --tag=CC cc -g -O3 -c $*.c ++ ++install: ++ mkdir -p $(PREFIX)/bin ++ libtool --mode=install cp valid $(PREFIX)/bin/valid ++ libtool --mode=install cp xporta $(PREFIX)/bin/xporta ++ ++.PHONY: all install diff --git a/var/spack/repos/builtin/packages/porta/package.py b/var/spack/repos/builtin/packages/porta/package.py new file mode 100644 index 0000000000..a11a8d477c --- /dev/null +++ b/var/spack/repos/builtin/packages/porta/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Porta(Package): + """PORTA is a collection of routines for analyzing polytopes and + polyhedra""" + homepage = "http://porta.zib.de" + url = "http://porta.zib.de/porta-1.4.1.tgz" + + version('1.4.1', '585179bf19d214ed364663a5d17bd5fc') + + depends_on("libtool") + + patch("Makefile.spack.patch") + + def install(self, spec, prefix): + with working_dir("src"): + make("-f", "Makefile.spack", "PREFIX=%s" % prefix) + make("-f", "Makefile.spack", "PREFIX=%s" % prefix, "install") -- cgit v1.2.3-60-g2f50 From 1be486c90a68ca413cf7e0674065c3ecbe80630d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 22 Jul 2016 17:02:45 -0500 Subject: Add CGNS package --- var/spack/repos/builtin/packages/cgns/package.py | 73 ++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cgns/package.py diff --git a/var/spack/repos/builtin/packages/cgns/package.py b/var/spack/repos/builtin/packages/cgns/package.py new file mode 100644 index 0000000000..ba3fd7f821 --- /dev/null +++ b/var/spack/repos/builtin/packages/cgns/package.py @@ -0,0 +1,73 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Cgns(Package): + """The CFD General Notation System (CGNS) provides a general, portable, + and extensible standard for the storage and retrieval of computational + fluid dynamics (CFD) analysis data.""" + + homepage = "http://cgns.github.io/" + url = "https://github.com/CGNS/CGNS/archive/v3.3.0.tar.gz" + + version('3.3.0', '64e5e8d97144c1462bee9ea6b2a81d7f') + + variant('hdf5', default=True, description='Enable HDF5 interface') + + depends_on('cmake', type='build') + depends_on('hdf5', when='+hdf5') + + def install(self, spec, prefix): + cmake_args = std_cmake_args[:] + + if self.compiler.f77 and self.compiler.fc: + cmake_args.append('-DCGNS_ENABLE_FORTRAN=ON') + else: + cmake_args.append('-DCGNS_ENABLE_FORTRAN=OFF') + + if '+hdf5' in spec: + cmake_args.extend([ + '-DCGNS_ENABLE_HDF5=ON', + '-DHDF5_NEEDS_ZLIB=ON' + ]) + + if spec.satisfies('^hdf5+mpi'): + cmake_args.append('-DHDF5_NEEDS_MPI=ON') + else: + cmake_args.append('-DHDF5_NEEDS_MPI=OFF') + + if spec.satisfies('^hdf5+szip'): + cmake_args.append('-DHDF5_NEEDS_SZIP=ON') + else: + cmake_args.append('-DHDF5_NEEDS_SZIP=OFF') + else: + cmake_args.append('-DCGNS_ENABLE_HDF5=OFF') + + with working_dir('spack-build', create=True): + cmake('..', *cmake_args) + + make() + make('install') -- cgit v1.2.3-60-g2f50 From 158deae62599e91c90653857484b4fc7b62f48fb Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 10 Aug 2016 13:51:57 -0400 Subject: Update curl to 7.50.1 --- var/spack/repos/builtin/packages/curl/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 79570205fa..4954e435c0 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -32,6 +32,7 @@ class Curl(Package): homepage = "http://curl.haxx.se" url = "http://curl.haxx.se/download/curl-7.46.0.tar.bz2" + version('7.50.1', '015f6a0217ca6f2c5442ca406476920b') version('7.49.1', '6bb1f7af5b58b30e4e6414b8c1abccab') version('7.47.1', '9ea3123449439bbd960cd25cf98796fb') version('7.46.0', '9979f989a2a9930d10f1b3deeabc2148') -- cgit v1.2.3-60-g2f50 From aa860bf4dfe6ebe96f4de5bd2c91e4223eca4d7b Mon Sep 17 00:00:00 2001 From: Joseph Ciurej Date: Wed, 10 Aug 2016 11:54:33 -0700 Subject: Fixed a bug that was making packages with non-bool default variants to crash. --- lib/spack/spack/spec.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index a37b39be67..714ee82c2a 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -328,11 +328,10 @@ class VariantSpec(object): return VariantSpec(self.name, self.value) def __str__(self): - if self.value in [True, False]: - out = '+' if self.value else '~' - return out + self.name + if type(self.value) == bool: + return '{0}{1}'.format('+' if self.value else '~', self.name) else: - return ' ' + self.name + "=" + self.value + return ' {0}={1}'.format(self.name, self.value) class VariantMap(HashableMap): -- cgit v1.2.3-60-g2f50 From 1edfc82123d2185908feb601be3ac7adf5a6da1d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 Aug 2016 11:09:17 -0500 Subject: Run flake8 checks on changed uncommitted files --- share/spack/qa/run-flake8 | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/share/spack/qa/run-flake8 b/share/spack/qa/run-flake8 index c59bfc9490..2c01800ee9 100755 --- a/share/spack/qa/run-flake8 +++ b/share/spack/qa/run-flake8 @@ -17,11 +17,18 @@ if [[ ! $flake8 ]]; then exit 1 fi -# Check if changed files are flake8 conformant [framework] -changed=$(git diff --name-only --find-renames develop... | grep '.py$') +# Add changed files that have been committed since branching off of develop +changed=($(git diff --name-only --find-renames develop... -- '*.py')) +# Add changed files that have been staged but not yet committed +changed+=($(git diff --name-only --find-renames --cached -- '*.py')) +# Add changed files that are unstaged +changed+=($(git diff --name-only --find-renames -- '*.py')) + +# Ensure that each file in the array is unique +changed=($(printf '%s\n' "${changed[@]}" | sort -u)) # Add approved style exemptions to the changed packages. -for file in $changed; do +for file in "${changed[@]}"; do # Make a backup to restore later cp "$file" "$file.sbak~" @@ -48,14 +55,14 @@ for file in $changed; do done return_code=0 -if [[ $changed ]]; then +if [[ "${changed[@]}" ]]; then echo ======================================================= echo flake8: running flake8 code checks on spack. echo echo Modified files: - echo $changed | perl -pe 's/^/ /;s/ +/\n /g' + echo "${changed[@]}" | perl -pe 's/^/ /;s/ +/\n /g' echo ======================================================= - if flake8 --format pylint $changed; then + if flake8 --format pylint "${changed[@]}"; then echo "Flake8 checks were clean." else echo "Flake8 found errors." @@ -66,7 +73,7 @@ else fi # Restore original package files after modifying them. -for file in $changed; do +for file in "${changed[@]}"; do if [[ -e "${file}.sbak~" ]]; then mv "${file}.sbak~" "${file}" fi -- cgit v1.2.3-60-g2f50 From 09c9786fab620f161e7be1dd2813b3d320724ebd Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 Aug 2016 11:49:37 -0500 Subject: Allow run-flake8 to be run from anywhere --- share/spack/qa/run-flake8 | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/share/spack/qa/run-flake8 b/share/spack/qa/run-flake8 index 2c01800ee9..2b758b7051 100755 --- a/share/spack/qa/run-flake8 +++ b/share/spack/qa/run-flake8 @@ -2,11 +2,6 @@ # # This script runs source code style checks on Spack. # -# It should be executed from the top-level directory of the repo, -# e.g.: -# -# share/spack/qa/run-flake8 -# # To run it, you'll need to have the Python flake8 installed locally. # PYTHONPATH=./lib/spack:$PYTHONPATH @@ -17,6 +12,9 @@ if [[ ! $flake8 ]]; then exit 1 fi +# Move to Spack root; allows script to be run from anywhere +cd "$(dirname "$0")/../../.." + # Add changed files that have been committed since branching off of develop changed=($(git diff --name-only --find-renames develop... -- '*.py')) # Add changed files that have been staged but not yet committed -- cgit v1.2.3-60-g2f50 From 87d0a7c3156070316ca28f356ef97c8208236fab Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 Aug 2016 13:40:28 -0500 Subject: Always clean up tmp files, even if killed --- share/spack/qa/run-flake8 | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/share/spack/qa/run-flake8 b/share/spack/qa/run-flake8 index 2b758b7051..e41cd0d471 100755 --- a/share/spack/qa/run-flake8 +++ b/share/spack/qa/run-flake8 @@ -25,6 +25,18 @@ changed+=($(git diff --name-only --find-renames -- '*.py')) # Ensure that each file in the array is unique changed=($(printf '%s\n' "${changed[@]}" | sort -u)) +function cleanup { + # Restore original package files after modifying them. + for file in "${changed[@]}"; do + if [[ -e "${file}.sbak~" ]]; then + mv "${file}.sbak~" "${file}" + fi + done +} + +# Cleanup temporary files upon exit or when script is killed +trap cleanup EXIT SIGINT SIGTERM + # Add approved style exemptions to the changed packages. for file in "${changed[@]}"; do # Make a backup to restore later @@ -52,7 +64,6 @@ for file in "${changed[@]}"; do perl -i -pe 's/^(.*(https?|file)\:.*)$/\1 # NOQA: ignore=E501/' $file done -return_code=0 if [[ "${changed[@]}" ]]; then echo ======================================================= echo flake8: running flake8 code checks on spack. @@ -64,17 +75,10 @@ if [[ "${changed[@]}" ]]; then echo "Flake8 checks were clean." else echo "Flake8 found errors." - return_code=1 + exit 1 fi else echo No core framework files modified. fi -# Restore original package files after modifying them. -for file in "${changed[@]}"; do - if [[ -e "${file}.sbak~" ]]; then - mv "${file}.sbak~" "${file}" - fi -done - -exit $return_code +exit 0 -- cgit v1.2.3-60-g2f50 From 7769367747db1aaede84956e30c1ccd4b11a5ce0 Mon Sep 17 00:00:00 2001 From: Mayeul d'Avezac Date: Mon, 1 Aug 2016 09:48:18 +0100 Subject: dag_hash stabilised by depending on sorted dict Spec.to_node_dict uses OrderedDict This is to try and ensure that the dag_hash is stable across python version and processes. --- lib/spack/spack/spec.py | 38 +++++++++++++++++++++++--------------- lib/spack/spack/test/spec_dag.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 0d72d454c6..b664c702b3 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -119,6 +119,7 @@ from spack.build_environment import get_path_from_module, load_module from spack.util.naming import mod_to_class from spack.util.prefix import Prefix from spack.util.string import * +from spack.util.spack_yaml import syaml_dict from spack.version import * from spack.provider_index import ProviderIndex @@ -910,22 +911,29 @@ class Spec(object): return b32_hash def to_node_dict(self): - d = {} + ordered_dict = lambda d: syaml_dict(sorted(d.items())) - params = dict((name, v.value) for name, v in self.variants.items()) - params.update(dict((name, value) - for name, value in self.compiler_flags.items())) + d = syaml_dict() + + params = syaml_dict(sorted( + (name, v.value) for name, v in self.variants.items())) + params.update(ordered_dict(self.compiler_flags)) if params: d['parameters'] = params - if self.dependencies(): - deps = self.dependencies_dict(deptype=('link', 'run')) - d['dependencies'] = dict( - (name, { - 'hash': dspec.spec.dag_hash(), - 'type': [str(s) for s in dspec.deptypes]}) - for name, dspec in deps.items()) + deps = self.dependencies_dict(deptype=('link', 'run')) + if deps: + d['dependencies'] = syaml_dict(sorted(( + ( + name, + ordered_dict({ + 'hash': dspec.spec.dag_hash(), + 'type': sorted([str(s) for s in dspec.deptypes]) + }) + ) + for name, dspec in deps.items() + ))) if self.namespace: d['namespace'] = self.namespace @@ -933,15 +941,15 @@ class Spec(object): if self.architecture: # TODO: Fix the target.to_dict to account for the tuple # Want it to be a dict of dicts - d['arch'] = self.architecture.to_dict() + d['arch'] = ordered_dict(self.architecture.to_dict()) if self.compiler: - d.update(self.compiler.to_dict()) + d['compiler'] = syaml_dict(self.compiler.to_dict()['compiler']) if self.versions: - d.update(self.versions.to_dict()) + d.update(ordered_dict(self.versions.to_dict())) - return {self.name: d} + return syaml_dict({self.name: d}) def to_yaml(self, stream=None): node_list = [] diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index 8f61c7ac76..5c2731041c 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -495,3 +495,31 @@ class SpecDagTest(MockPackagesTest): traversal = dag.traverse(deptype='run') self.assertEqual([x.name for x in traversal], names) + + def test_using_ordered_dict(self): + """ Checks that dicts are ordered + + Necessary to make sure that dag_hash is stable across python + versions and processes. + """ + def descend_and_check(iterable, level=0): + from spack.util.spack_yaml import syaml_dict + from collections import Iterable, Mapping + if isinstance(iterable, Mapping): + self.assertTrue(isinstance(iterable, syaml_dict)) + return descend_and_check(iterable.values(), level=level + 1) + max_level = level + for value in iterable: + if isinstance(value, Iterable) and not isinstance(value, str): + nlevel = descend_and_check(value, level=level + 1) + if nlevel > max_level: + max_level = nlevel + return max_level + + specs = ['mpileaks ^zmpi', 'dttop', 'dtuse'] + for spec in specs: + dag = Spec(spec) + dag.normalize() + level = descend_and_check(dag.to_node_dict()) + # level just makes sure we are doing something here + self.assertTrue(level >= 5) -- cgit v1.2.3-60-g2f50 From 58d770406062de9f72bc470c30f5b0ac4b841438 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 29 Jul 2016 16:49:46 -0500 Subject: Overhaul of compression libraries --- var/spack/repos/builtin/packages/expat/package.py | 16 +++---- .../repos/builtin/packages/jsoncpp/package.py | 50 ++++++++++++++++++++++ .../repos/builtin/packages/libxml2/package.py | 2 + var/spack/repos/builtin/packages/lz4/package.py | 44 +++++++++++++++++++ var/spack/repos/builtin/packages/lzo/package.py | 1 + var/spack/repos/builtin/packages/nettle/package.py | 4 +- var/spack/repos/builtin/packages/xz/package.py | 1 + var/spack/repos/builtin/packages/zlib/package.py | 1 + 8 files changed, 110 insertions(+), 9 deletions(-) create mode 100644 var/spack/repos/builtin/packages/jsoncpp/package.py create mode 100644 var/spack/repos/builtin/packages/lz4/package.py diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index 7d0fdae1d4..7e56bddd15 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -28,15 +28,15 @@ from spack import * class Expat(Package): """ is an XML parser library written in C""" homepage = "http://expat.sourceforge.net/" - url = "http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz" - version('2.1.0', 'dd7dab7a5fea97d2a6a43f511449b7cd') - - depends_on('cmake', type='build') + version('2.2.0', '2f47841c829facb346eb6e3fab5212e2', + url="http://downloads.sourceforge.net/project/expat/expat/2.2.0/expat-2.2.0.tar.bz2") + version('2.1.0', 'dd7dab7a5fea97d2a6a43f511449b7cd', + url="http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz") def install(self, spec, prefix): + configure('--prefix={0}'.format(prefix)) - with working_dir('spack-build', create=True): - cmake('..', *std_cmake_args) - make() - make('install') + make() + make('check') + make('install') diff --git a/var/spack/repos/builtin/packages/jsoncpp/package.py b/var/spack/repos/builtin/packages/jsoncpp/package.py new file mode 100644 index 0000000000..6eb4e93b5c --- /dev/null +++ b/var/spack/repos/builtin/packages/jsoncpp/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Jsoncpp(Package): + """JsonCpp is a C++ library that allows manipulating JSON values, + including serialization and deserialization to and from strings. + It can also preserve existing comment in unserialization/serialization + steps, making it a convenient format to store user input files.""" + + homepage = "https://github.com/open-source-parsers/jsoncpp" + url = "https://github.com/open-source-parsers/jsoncpp/archive/1.7.3.tar.gz" + + version('1.7.3', 'aff6bfb5b81d9a28785429faa45839c5') + + # Avoid circular dependency + #depends_on('cmake~jsoncpp', type='build') + depends_on('cmake', type='build') + # depends_on('python', type='test') + + def install(self, spec, prefix): + with working_dir('spack-build', create=True): + cmake('..', '-DBUILD_SHARED_LIBS=ON', *std_cmake_args) + + make() + # make('test') # Python needed to run tests + make('install') diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 0f4810fa8a..214a027805 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -32,6 +32,7 @@ class Libxml2(Package): homepage = "http://xmlsoft.org" url = "http://xmlsoft.org/sources/libxml2-2.9.2.tar.gz" + version('2.9.4', 'ae249165c173b1ff386ee8ad676815f5') version('2.9.2', '9e6a9aca9d155737868b3dc5fd82f788') variant('python', default=False, description='Enable Python support') @@ -53,4 +54,5 @@ class Libxml2(Package): *python_args) make() + make("check") make("install") diff --git a/var/spack/repos/builtin/packages/lz4/package.py b/var/spack/repos/builtin/packages/lz4/package.py new file mode 100644 index 0000000000..89356a607c --- /dev/null +++ b/var/spack/repos/builtin/packages/lz4/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Lz4(Package): + """LZ4 is lossless compression algorithm, providing compression speed + at 400 MB/s per core, scalable with multi-cores CPU. It also features + an extremely fast decoder, with speed in multiple GB/s per core, + typically reaching RAM speed limits on multi-core systems.""" + + homepage = "http://cyan4973.github.io/lz4/" + url = "https://github.com/Cyan4973/lz4/archive/r131.tar.gz" + + version('131', '42b09fab42331da9d3fb33bd5c560de9') + + # depends_on('valgrind', type='test') + + def install(self, spec, prefix): + make() + # make('test') # requires valgrind to be installed + make('install', 'PREFIX={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/lzo/package.py b/var/spack/repos/builtin/packages/lzo/package.py index 0961bbb58c..7702186cbd 100644 --- a/var/spack/repos/builtin/packages/lzo/package.py +++ b/var/spack/repos/builtin/packages/lzo/package.py @@ -46,4 +46,5 @@ class Lzo(Package): configure(*configure_args) make() make('check') + make('test') # more exhaustive test make('install') diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py index 02e9ef5f1e..52644fa8a4 100644 --- a/var/spack/repos/builtin/packages/nettle/package.py +++ b/var/spack/repos/builtin/packages/nettle/package.py @@ -29,9 +29,10 @@ class Nettle(Package): """The Nettle package contains the low-level cryptographic library that is designed to fit easily in many contexts.""" - homepage = "http://www.example.com" + homepage = "https://www.lysator.liu.se/~nisse/nettle/" url = "http://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz" + version('3.2', 'afb15b4764ebf1b4e6d06c62bd4d29e4') version('2.7', '2caa1bd667c35db71becb93c5d89737f') depends_on('gmp') @@ -39,4 +40,5 @@ class Nettle(Package): def install(self, spec, prefix): configure("--prefix=%s" % prefix) make() + make("check") make("install") diff --git a/var/spack/repos/builtin/packages/xz/package.py b/var/spack/repos/builtin/packages/xz/package.py index a8ab959a62..5b46e838ed 100644 --- a/var/spack/repos/builtin/packages/xz/package.py +++ b/var/spack/repos/builtin/packages/xz/package.py @@ -39,4 +39,5 @@ class Xz(Package): def install(self, spec, prefix): configure("--prefix=%s" % prefix) make() + make("check") make("install") diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 6d799fb05a..7145b78d63 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -38,4 +38,5 @@ class Zlib(Package): configure("--prefix=%s" % prefix) make() + make("test") make("install") -- cgit v1.2.3-60-g2f50 From ee5e20dae3034032d166bd5361811530397a503e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 1 Aug 2016 11:18:48 -0500 Subject: Add dependencies to libarchive and cmake --- var/spack/repos/builtin/packages/cmake/package.py | 85 ++++++++++++++++++---- .../repos/builtin/packages/jsoncpp/package.py | 2 - .../repos/builtin/packages/libarchive/package.py | 43 ++++++++++- var/spack/repos/builtin/packages/lzma/package.py | 48 ++++++++++++ 4 files changed, 160 insertions(+), 18 deletions(-) create mode 100644 var/spack/repos/builtin/packages/lzma/package.py diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 90a7c20d19..7789d67f88 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -31,6 +31,7 @@ class Cmake(Package): homepage = 'https://www.cmake.org' url = 'https://cmake.org/files/v3.4/cmake-3.4.3.tar.gz' + version('3.6.1', 'd6dd661380adacdb12f41b926ec99545') version('3.6.0', 'aa40fbecf49d99c083415c2411d12db9') version('3.5.2', '701386a1b5ec95f8d1075ecf96383e02') version('3.5.1', 'ca051f4a66375c89d1a524e726da0296') @@ -41,19 +42,30 @@ class Cmake(Package): version('3.0.2', 'db4c687a31444a929d2fdc36c4dfb95f') version('2.8.10.2', '097278785da7182ec0aea8769d06860c') - variant('ncurses', default=True, - description='Enables the build of the ncurses gui') - variant('openssl', default=True, - description="Enables CMake's OpenSSL features") - variant('qt', default=False, description='Enables the build of cmake-gui') - variant('doc', default=False, - description='Enables the generation of html and man page docs') - - depends_on('ncurses', when='+ncurses') - depends_on('openssl', when='+openssl') - depends_on('qt', when='+qt') + variant('curl', default=True, description='Build external curl library') + variant('expat', default=True, description='Build external expat library') + # variant('jsoncpp', default=True, description='Build external jsoncpp library') + variant('zlib', default=True, description='Build external zlib library') + variant('bzip2', default=True, description='Build external bzip2 library') + variant('xz', default=True, description='Build external lzma library') + variant('archive', default=True, description='Build external archive library') + variant('qt', default=False, description='Enables the build of cmake-gui') + variant('doc', default=False, description='Enables the generation of html and man page documentation') + variant('openssl', default=True, description="Enables CMake's OpenSSL features") + variant('ncurses', default=True, description='Enables the build of the ncurses gui') + + depends_on('curl', when='+curl') + depends_on('expat', when='+expat') + # depends_on('jsoncpp', when='+jsoncpp') # circular dependency + depends_on('zlib', when='+zlib') + depends_on('bzip2', when='+bzip2') + depends_on('xz', when='+xz') + depends_on('libarchive', when='+archive') + depends_on('qt', when='+qt') depends_on('python@2.7.11:', when='+doc', type='build') - depends_on('py-sphinx', when='+doc', type='build') + depends_on('py-sphinx', when='+doc', type='build') + depends_on('openssl', when='+openssl') + depends_on('ncurses', when='+ncurses') def url_for_version(self, version): """Handle CMake's version-based custom URLs.""" @@ -77,11 +89,51 @@ class Cmake(Package): self.validate(spec) # configure, build, install: - options = ['--prefix=%s' % prefix] - options.append('--parallel=%s' % str(make_jobs)) + options = [ + '--prefix={0}'.format(prefix), + '--parallel={0}'.format(make_jobs) + ] + + if '+curl' in spec: + options.append('--system-curl') + else: + options.append('--no-system-curl') + + if '+expat' in spec: + options.append('--system-expat') + else: + options.append('--no-system-expat') + + # if '+jsoncpp' in spec: + # options.append('--system-jsoncpp') + # else: + # options.append('--no-system-jsoncpp') + options.append('--no-system-jsoncpp') + + if '+zlib' in spec: + options.append('--system-zlib') + else: + options.append('--no-system-zlib') + + if '+bzip2' in spec: + options.append('--system-bzip2') + else: + options.append('--no-system-bzip2') + + if '+xz' in spec: + options.append('--system-liblzma') + else: + options.append('--no-system-liblzma') + + if '+archive' in spec: + options.append('--system-libarchive') + else: + options.append('--no-system-libarchive') if '+qt' in spec: options.append('--qt-gui') + else: + options.append('--no-qt-gui') if '+doc' in spec: options.append('--sphinx-html') @@ -91,6 +143,9 @@ class Cmake(Package): options.append('--') options.append('-DCMAKE_USE_OPENSSL=ON') - configure(*options) + bootstrap = Executable('./bootstrap') + bootstrap(*options) + make() + make('test') make('install') diff --git a/var/spack/repos/builtin/packages/jsoncpp/package.py b/var/spack/repos/builtin/packages/jsoncpp/package.py index 6eb4e93b5c..77f18cb6ab 100644 --- a/var/spack/repos/builtin/packages/jsoncpp/package.py +++ b/var/spack/repos/builtin/packages/jsoncpp/package.py @@ -36,8 +36,6 @@ class Jsoncpp(Package): version('1.7.3', 'aff6bfb5b81d9a28785429faa45839c5') - # Avoid circular dependency - #depends_on('cmake~jsoncpp', type='build') depends_on('cmake', type='build') # depends_on('python', type='test') diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py index 0cf3932957..db8f4e0065 100644 --- a/var/spack/repos/builtin/packages/libarchive/package.py +++ b/var/spack/repos/builtin/packages/libarchive/package.py @@ -31,11 +31,52 @@ class Libarchive(Package): homepage = "http://www.libarchive.org" url = "http://www.libarchive.org/downloads/libarchive-3.1.2.tar.gz" + version('3.2.1', 'afa257047d1941a565216edbf0171e72') version('3.1.2', 'efad5a503f66329bb9d2f4308b5de98a') version('3.1.1', '1f3d883daf7161a0065e42a15bbf168f') version('3.1.0', '095a287bb1fd687ab50c85955692bf3a') + variant('zlib', default=True, description='Build support for gzip through zlib') + variant('bzip2', default=True, description='Build support for bzip2 through bz2lib') + variant('lzma', default=True, description='Build support for lzma through lzmadec') + variant('lz4', default=True, description='Build support for lz4 through liblz4') + variant('xz', default=True, description='Build support for xz through lzma') + variant('lzo', default=True, description='Build support for lzop through liblzo2') + variant('nettle', default=True, description='Build with crypto support from Nettle') + variant('openssl', default=True, description='Build support for mtree and xar hashes through openssl') + variant('libxml2', default=True, description='Build support for xar through libxml2') + variant('expat', default=True, description='Build support for xar through expat') + + depends_on('zlib', when='+zlib') + depends_on('bzip2', when='+bzip2') + depends_on('lzma', when='+lzma') + depends_on('lz4', when='+lz4') + depends_on('xz', when='+xz') + depends_on('lzo', when='+lzo') + depends_on('nettle', when='+nettle') + depends_on('openssl', when='+openssl') + depends_on('libxml2', when='+libxml2') + depends_on('expat', when='+expat') + def install(self, spec, prefix): - configure("--prefix=%s" % prefix) + def variant_to_bool(variant): + return 'with' if variant in spec else 'without' + + config_args = [ + '--prefix={0}'.format(prefix), + '--{0}-zlib'.format(variant_to_bool('+zlib')), + '--{0}-bz2lib'.format(variant_to_bool('+bzip2')), + '--{0}-lzmadec'.format(variant_to_bool('+lzma')), + '--{0}-lz4'.format(variant_to_bool('+lz4')), + '--{0}-lzma'.format(variant_to_bool('+xz')), + '--{0}-lzo2'.format(variant_to_bool('+lzo')), + '--{0}-nettle'.format(variant_to_bool('+nettle')), + '--{0}-openssl'.format(variant_to_bool('+openssl')), + '--{0}-xml2'.format(variant_to_bool('+libxml2')), + '--{0}-expat'.format(variant_to_bool('+expat')) + ] + + configure(*config_args) make() + make("check") make("install") diff --git a/var/spack/repos/builtin/packages/lzma/package.py b/var/spack/repos/builtin/packages/lzma/package.py new file mode 100644 index 0000000000..f363569930 --- /dev/null +++ b/var/spack/repos/builtin/packages/lzma/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Lzma(Package): + """LZMA Utils are legacy data compression software with high compression + ratio. LZMA Utils are no longer developed, although critical bugs may be + fixed as long as fixing them doesn't require huge changes to the code. + + Users of LZMA Utils should move to XZ Utils. XZ Utils support the legacy + .lzma format used by LZMA Utils, and can also emulate the command line + tools of LZMA Utils. This should make transition from LZMA Utils to XZ + Utils relatively easy.""" + + homepage = "http://tukaani.org/lzma/" + url = "http://tukaani.org/lzma/lzma-4.32.7.tar.gz" + + version('4.32.7', '2a748b77a2f8c3cbc322dbd0b4c9d06a') + + def install(self, spec, prefix): + configure('--prefix={0}'.format(prefix)) + + make() + make('check') + make('install') -- cgit v1.2.3-60-g2f50 From 534e1cbf1b1f11ce37e216e2ebf48d623846120b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 1 Aug 2016 12:23:39 -0500 Subject: Some tests don't pass with Intel compilers --- var/spack/repos/builtin/packages/cmake/package.py | 50 ++++++---------------- .../repos/builtin/packages/libarchive/package.py | 2 +- 2 files changed, 13 insertions(+), 39 deletions(-) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 7789d67f88..da94de8dd7 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -88,48 +88,22 @@ class Cmake(Package): # Consistency check self.validate(spec) + def variant_to_bool(variant): + return 'system' if variant in spec else 'no-system' + # configure, build, install: options = [ '--prefix={0}'.format(prefix), - '--parallel={0}'.format(make_jobs) + '--parallel={0}'.format(make_jobs), + '--{0}-curl'.format(variant_to_bool('+curl')), + '--{0}-expat'.format(variant_to_bool('+expat')), + '--{0}-jsoncpp'.format(variant_to_bool('+jsoncpp')), + '--{0}-zlib'.format(variant_to_bool('+zlib')), + '--{0}-bzip2'.format(variant_to_bool('+bzip2')), + '--{0}-liblzma'.format(variant_to_bool('+xz')), + '--{0}-libarchive'.format(variant_to_bool('+archive')) ] - if '+curl' in spec: - options.append('--system-curl') - else: - options.append('--no-system-curl') - - if '+expat' in spec: - options.append('--system-expat') - else: - options.append('--no-system-expat') - - # if '+jsoncpp' in spec: - # options.append('--system-jsoncpp') - # else: - # options.append('--no-system-jsoncpp') - options.append('--no-system-jsoncpp') - - if '+zlib' in spec: - options.append('--system-zlib') - else: - options.append('--no-system-zlib') - - if '+bzip2' in spec: - options.append('--system-bzip2') - else: - options.append('--no-system-bzip2') - - if '+xz' in spec: - options.append('--system-liblzma') - else: - options.append('--no-system-liblzma') - - if '+archive' in spec: - options.append('--system-libarchive') - else: - options.append('--no-system-libarchive') - if '+qt' in spec: options.append('--qt-gui') else: @@ -147,5 +121,5 @@ class Cmake(Package): bootstrap(*options) make() - make('test') + # make('test') # some tests fail, takes forever make('install') diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py index db8f4e0065..2397075d42 100644 --- a/var/spack/repos/builtin/packages/libarchive/package.py +++ b/var/spack/repos/builtin/packages/libarchive/package.py @@ -78,5 +78,5 @@ class Libarchive(Package): configure(*config_args) make() - make("check") + # make("check") # cannot build test suite with Intel compilers make("install") -- cgit v1.2.3-60-g2f50 From 5fc20487e488c2306b36d83e2188554aebae4b31 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 1 Aug 2016 12:37:36 -0500 Subject: Flake8 and formatting changes --- var/spack/repos/builtin/packages/cmake/package.py | 4 ++-- var/spack/repos/builtin/packages/libarchive/package.py | 5 +++-- var/spack/repos/builtin/packages/libxml2/package.py | 15 ++++++++------- var/spack/repos/builtin/packages/nettle/package.py | 7 ++++--- var/spack/repos/builtin/packages/xz/package.py | 7 ++++--- var/spack/repos/builtin/packages/zlib/package.py | 6 +++--- 6 files changed, 24 insertions(+), 20 deletions(-) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index da94de8dd7..d8b4eefff4 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -44,7 +44,7 @@ class Cmake(Package): variant('curl', default=True, description='Build external curl library') variant('expat', default=True, description='Build external expat library') - # variant('jsoncpp', default=True, description='Build external jsoncpp library') + # variant('jsoncpp', default=True, description='Build external jsoncpp library') # NOQA: ignore=E501 variant('zlib', default=True, description='Build external zlib library') variant('bzip2', default=True, description='Build external bzip2 library') variant('xz', default=True, description='Build external lzma library') @@ -88,7 +88,7 @@ class Cmake(Package): # Consistency check self.validate(spec) - def variant_to_bool(variant): + def variant_to_bool(variant): return 'system' if variant in spec else 'no-system' # configure, build, install: diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py index 2397075d42..387af47b26 100644 --- a/var/spack/repos/builtin/packages/libarchive/package.py +++ b/var/spack/repos/builtin/packages/libarchive/package.py @@ -77,6 +77,7 @@ class Libarchive(Package): ] configure(*config_args) + make() - # make("check") # cannot build test suite with Intel compilers - make("install") + # make('check') # cannot build test suite with Intel compilers + make('install') diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 214a027805..6b25097bcd 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -45,14 +45,15 @@ class Libxml2(Package): def install(self, spec, prefix): if '+python' in spec: - python_args = ["--with-python=%s" % spec['python'].prefix, - "--with-python-install-dir=%s" % site_packages_dir] + python_args = [ + '--with-python={0}'.format(spec['python'].prefix), + '--with-python-install-dir={0}'.format(site_packages_dir) + ] else: - python_args = ["--without-python"] + python_args = ['--without-python'] - configure("--prefix=%s" % prefix, - *python_args) + configure('--prefix={0}'.format(prefix), *python_args) make() - make("check") - make("install") + make('check') + make('install') diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py index 52644fa8a4..bf49423605 100644 --- a/var/spack/repos/builtin/packages/nettle/package.py +++ b/var/spack/repos/builtin/packages/nettle/package.py @@ -38,7 +38,8 @@ class Nettle(Package): depends_on('gmp') def install(self, spec, prefix): - configure("--prefix=%s" % prefix) + configure('--prefix={0}'.format(prefix)) + make() - make("check") - make("install") + make('check') + make('install') diff --git a/var/spack/repos/builtin/packages/xz/package.py b/var/spack/repos/builtin/packages/xz/package.py index 5b46e838ed..815d898504 100644 --- a/var/spack/repos/builtin/packages/xz/package.py +++ b/var/spack/repos/builtin/packages/xz/package.py @@ -37,7 +37,8 @@ class Xz(Package): version('5.2.2', 'f90c9a0c8b259aee2234c4e0d7fd70af') def install(self, spec, prefix): - configure("--prefix=%s" % prefix) + configure('--prefix={0}'.format(prefix)) + make() - make("check") - make("install") + make('check') + make('install') diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 7145b78d63..8834a05804 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -35,8 +35,8 @@ class Zlib(Package): version('1.2.8', '44d667c142d7cda120332623eab69f40') def install(self, spec, prefix): - configure("--prefix=%s" % prefix) + configure('--prefix={0}'.format(prefix)) make() - make("test") - make("install") + make('test') + make('install') -- cgit v1.2.3-60-g2f50 From b47357d73c66c3ae9f2a5fa6bcba011b14f1d162 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 4 Aug 2016 15:07:43 -0500 Subject: Add patch for Intel compilers --- .../builtin/packages/cmake/intel-c-gnu11.patch | 23 ++++++++++++++++++++++ var/spack/repos/builtin/packages/cmake/package.py | 4 ++++ 2 files changed, 27 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cmake/intel-c-gnu11.patch diff --git a/var/spack/repos/builtin/packages/cmake/intel-c-gnu11.patch b/var/spack/repos/builtin/packages/cmake/intel-c-gnu11.patch new file mode 100644 index 0000000000..afe6f871ec --- /dev/null +++ b/var/spack/repos/builtin/packages/cmake/intel-c-gnu11.patch @@ -0,0 +1,23 @@ +diff --git a/Modules/Compiler/Intel-C.cmake b/Modules/Compiler/Intel-C.cmake +index eb9602a..edca154 100644 +--- a/Modules/Compiler/Intel-C.cmake ++++ b/Modules/Compiler/Intel-C.cmake +@@ -16,14 +16,14 @@ endif() + + if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0) + set(CMAKE_C11_STANDARD_COMPILE_OPTION "${_std}=c11") +- set(CMAKE_C11_EXTENSION_COMPILE_OPTION "${_std}=c11") ++ set(CMAKE_C11_EXTENSION_COMPILE_OPTION "${_std}=gnu11") + endif() + +-if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1) ++if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0) + set(CMAKE_C90_STANDARD_COMPILE_OPTION "${_std}=c89") +- set(CMAKE_C90_EXTENSION_COMPILE_OPTION "${_std}=c89") ++ set(CMAKE_C90_EXTENSION_COMPILE_OPTION "${_std}=gnu89") + set(CMAKE_C99_STANDARD_COMPILE_OPTION "${_std}=c99") +- set(CMAKE_C99_EXTENSION_COMPILE_OPTION "${_std}=c99") ++ set(CMAKE_C99_EXTENSION_COMPILE_OPTION "${_std}=gnu99") + endif() + + if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index d8b4eefff4..4e2c37993c 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -67,6 +67,10 @@ class Cmake(Package): depends_on('openssl', when='+openssl') depends_on('ncurses', when='+ncurses') + # Cannot build with Intel, should be fixed in 3.6.2 + # https://gitlab.kitware.com/cmake/cmake/issues/16226 + patch('intel-c-gnu11.patch', when='@3.6.0:3.6.1') + def url_for_version(self, version): """Handle CMake's version-based custom URLs.""" return 'https://cmake.org/files/v%s/cmake-%s.tar.gz' % ( -- cgit v1.2.3-60-g2f50 From 11e595089d14423025c5c46eedb568616181e19f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 10 Jun 2016 09:25:53 -0500 Subject: Matplotlib overhaul --- .../repos/builtin/packages/py-cycler/package.py | 39 ++++++++++ .../builtin/packages/py-matplotlib/package.py | 84 +++++++++++----------- .../repos/builtin/packages/py2cairo/package.py | 43 +++++++++++ .../repos/builtin/packages/pygobject/package.py | 45 ++++++++++++ var/spack/repos/builtin/packages/pygtk/package.py | 48 +++++++++++++ var/spack/repos/builtin/packages/qhull/package.py | 2 +- .../repos/builtin/packages/wxPython/package.py | 47 ++++++++++++ 7 files changed, 267 insertions(+), 41 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-cycler/package.py create mode 100644 var/spack/repos/builtin/packages/py2cairo/package.py create mode 100644 var/spack/repos/builtin/packages/pygobject/package.py create mode 100644 var/spack/repos/builtin/packages/pygtk/package.py create mode 100644 var/spack/repos/builtin/packages/wxPython/package.py diff --git a/var/spack/repos/builtin/packages/py-cycler/package.py b/var/spack/repos/builtin/packages/py-cycler/package.py new file mode 100644 index 0000000000..764239d5f3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-cycler/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PyCycler(Package): + """Composable style cycles.""" + + homepage = "http://matplotlib.org/cycler/" + url = "https://github.com/matplotlib/cycler/archive/v0.10.0.tar.gz" + + version('0.10.0', '83dd0df7810e838b59e4dd9fa6e2d198') + + extends('python') + + def install(self, spec, prefix): + python('setup.py', 'install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index c454a47ec3..c1400a6c18 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -23,59 +23,63 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os + class PyMatplotlib(Package): - """Python plotting package.""" + """matplotlib is a python 2D plotting library which produces publication + quality figures in a variety of hardcopy formats and interactive + environments across platforms.""" + homepage = "https://pypi.python.org/pypi/matplotlib" url = "https://pypi.python.org/packages/source/m/matplotlib/matplotlib-1.4.2.tar.gz" + version('1.5.1', 'f51847d8692cb63df64cd0bd0304fd20') version('1.4.2', '7d22efb6cce475025733c50487bd8898') version('1.4.3', '86af2e3e3c61849ac7576a6f5ca44267') variant('gui', default=False, description='Enable GUI') - variant('ipython', default=False, description='Enable ipython support') - extends('python', ignore=r'bin/nosetests.*$|bin/pbr$') + # Required dependencies + extends('python@2.7:2.8,3.4:3.5', ignore=r'bin/nosetests.*$|bin/pbr$') + #extends('python', ignore=r'bin/nosetests.*$|bin/pbr$') + depends_on('py-numpy@1.6:') + depends_on('py-setuptools') + depends_on('py-dateutil@1.1:') + depends_on('py-pyparsing') + depends_on('libpng@1.2:') + depends_on('py-pytz') + depends_on('freetype@2.3:') + depends_on('py-cycler@0.9:') + # depends_on('py-tornado') + + # Optional GUI framework + depends_on('tk@8.3:', when='+gui') + depends_on('py-pyqt@4.0:', when='+gui') + depends_on('pygtk@2.4:', when='+gui') + depends_on('wxPython@2.8:', when='+gui') + + # Optional external programs + depends_on('ImageMagick') - depends_on('py-setuptools', type='build') - depends_on('py-pyside', when='+gui', type=nolink) - depends_on('py-ipython', when='+ipython', type=nolink) - depends_on('py-pyparsing', type=nolink) - depends_on('py-six', type=nolink) - depends_on('py-dateutil', type=nolink) - depends_on('py-pytz', type=nolink) - depends_on('py-nose', type=nolink) - depends_on('py-numpy', type=nolink) - depends_on('py-mock', type=nolink) - depends_on('py-pbr', type=nolink) - depends_on('py-funcsigs', type=nolink) + # Optional dependencies + depends_on('py-pillow') + depends_on('pkg-config') - depends_on('pkg-config', type='build') - depends_on('freetype') - depends_on('qt', when='+gui') - depends_on('bzip2') - depends_on('tcl', when='+gui') - depends_on('tk', when='+gui') - depends_on('qhull') + # Required libraries that ship with matplotlib + # depends_on('agg@2.4:') + depends_on('qhull@2012.1') + # depends_on('ttconv') + depends_on('py-six@1.9.0:') def install(self, spec, prefix): - python('setup.py', 'install', '--prefix=%s' % prefix) + site_packages = '{0}/lib/python{1}/site-packages'.format( + prefix, spec['python'].version.up_to(2)) + + # site-packages directory must already exist + mkdirp(site_packages) - if str(self.version) in ['1.4.2', '1.4.3']: - # hack to fix configuration file - config_file = None - for p, d, f in os.walk(prefix.lib): - for file in f: - if file.find('matplotlibrc') != -1: - config_file = join_path(p, 'matplotlibrc') - print config_file - if config_file is None: - raise InstallError('could not find config file') - filter_file(r'backend : pyside', - 'backend : Qt4Agg', - config_file) - filter_file(r'#backend.qt4 : PyQt4', - 'backend.qt4 : PySide', - config_file) + # PYTHONPATH must include site-packages directory + env['PYTHONPATH'] += ':{0}'.format(site_packages) + + python('setup.py', 'install', '--prefix=%s' % prefix) diff --git a/var/spack/repos/builtin/packages/py2cairo/package.py b/var/spack/repos/builtin/packages/py2cairo/package.py new file mode 100644 index 0000000000..f74868e6d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py2cairo/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Py2cairo(Package): + """Pycairo is a set of Python bindings for the cairo graphics library.""" + + homepage = "https://cairographics.org/pycairo/" + url = "https://cairographics.org/releases/py2cairo-1.10.0.tar.bz2" + + version('1.10.0', '20337132c4ab06c1146ad384d55372c5') + + depends_on('python@2.6:2.7') + depends_on('cairo@1.10.0:') + + def install(self, spec, prefix): + configure('--prefix={0}'.format(prefix)) + + make() + make('install') diff --git a/var/spack/repos/builtin/packages/pygobject/package.py b/var/spack/repos/builtin/packages/pygobject/package.py new file mode 100644 index 0000000000..89cf13a349 --- /dev/null +++ b/var/spack/repos/builtin/packages/pygobject/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Pygobject(Package): + """PyGObject is a Python extension module that gives clean and consistent + access to the entire GNOME software platform through the use of GObject + Introspection.""" + + homepage = "https://wiki.gnome.org/Projects/PyGObject" + url = "http://ftp.gnome.org/pub/GNOME/sources/pygobject/3.10/pygobject-3.10.2.tar.xz" + + version('3.10.2', 'f311155be8510df6ad8e4edf1cb463d4') + + depends_on('python@2.7:') + + def install(self, spec, prefix): + configure('--prefix={0}'.format(prefix), + '--with-python={0}/python'.format(spec['python'].prefix.bin)) + + make() + make('install') diff --git a/var/spack/repos/builtin/packages/pygtk/package.py b/var/spack/repos/builtin/packages/pygtk/package.py new file mode 100644 index 0000000000..134bfd47b6 --- /dev/null +++ b/var/spack/repos/builtin/packages/pygtk/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Pygtk(Package): + """PyGTK lets you to easily create programs with a graphical user + interface using the Python programming language.""" + + homepage = "http://www.pygtk.org/" + url = "http://ftp.gnome.org/pub/GNOME/sources/pygtk/2.24/pygtk-2.24.0.tar.gz" + + version('2.24.0', 'd27c7f245a9e027f6b6cd9acb7468e36') + + depends_on('python@2.3.5:') + depends_on('pygobject@2.21.3:') + depends_on('pycairo@1.0.2:') + depends_on('glib@2.8.0:') + depends_on('gtkplus') + depends_on('py-numpy') + + def install(self, spec, prefix): + configure('--prefix={0}'.format(prefix)) + + make() + make('install') diff --git a/var/spack/repos/builtin/packages/qhull/package.py b/var/spack/repos/builtin/packages/qhull/package.py index 2733d8b652..2a06750ffd 100644 --- a/var/spack/repos/builtin/packages/qhull/package.py +++ b/var/spack/repos/builtin/packages/qhull/package.py @@ -40,7 +40,7 @@ class Qhull(Package): version('7.2.0', 'e6270733a826a6a7c32b796e005ec3dc', url="http://www.qhull.org/download/qhull-2015-src-7.2.0.tgz") - version('1.0', 'd0f978c0d8dfb2e919caefa56ea2953c', + version('2012.1', 'd0f978c0d8dfb2e919caefa56ea2953c', url="http://www.qhull.org/download/qhull-2012.1-src.tgz") # https://github.com/qhull/qhull/pull/5 diff --git a/var/spack/repos/builtin/packages/wxPython/package.py b/var/spack/repos/builtin/packages/wxPython/package.py new file mode 100644 index 0000000000..4f2bcce5ec --- /dev/null +++ b/var/spack/repos/builtin/packages/wxPython/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Wxpython(Package): + """A blending of the wxWidgets C++ class library with the Python + programming language.""" + + homepage = "http://www.wxpython.org/" + url = "http://downloads.sourceforge.net/wxpython/wxPython-src-3.0.2.0.tar.bz2" + + version('3.0.2.0', '922b02ff2c0202a7bf1607c98bbbbc04') + + depends_on('python') + depends_on('libpng') + depends_on('zlib') + depends_on('jpeg') + depends_on('libtiff') + + def install(self, spec, prefix): + configure('--prefix={0}'.format(prefix)) + + make() + make('install') -- cgit v1.2.3-60-g2f50 From e905ce16c90c98acba98fe30a1d568244c70ea1c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 10 Jun 2016 15:13:01 -0500 Subject: Flake8 --- var/spack/repos/builtin/packages/py-matplotlib/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index c1400a6c18..b988161301 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -42,7 +42,6 @@ class PyMatplotlib(Package): # Required dependencies extends('python@2.7:2.8,3.4:3.5', ignore=r'bin/nosetests.*$|bin/pbr$') - #extends('python', ignore=r'bin/nosetests.*$|bin/pbr$') depends_on('py-numpy@1.6:') depends_on('py-setuptools') depends_on('py-dateutil@1.1:') -- cgit v1.2.3-60-g2f50 From aa6a6df640558d93add9cbfd4f94ba6a2c80fc54 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 2 Aug 2016 11:19:44 -0500 Subject: Undo changes to GUI framework --- .../builtin/packages/py-matplotlib/package.py | 63 +++++++++++++--------- .../repos/builtin/packages/py2cairo/package.py | 43 --------------- .../repos/builtin/packages/pygobject/package.py | 45 ---------------- var/spack/repos/builtin/packages/pygtk/package.py | 48 ----------------- .../repos/builtin/packages/wxPython/package.py | 47 ---------------- 5 files changed, 37 insertions(+), 209 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/py2cairo/package.py delete mode 100644 var/spack/repos/builtin/packages/pygobject/package.py delete mode 100644 var/spack/repos/builtin/packages/pygtk/package.py delete mode 100644 var/spack/repos/builtin/packages/wxPython/package.py diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index b988161301..51a198bd2b 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -35,50 +35,61 @@ class PyMatplotlib(Package): url = "https://pypi.python.org/packages/source/m/matplotlib/matplotlib-1.4.2.tar.gz" version('1.5.1', 'f51847d8692cb63df64cd0bd0304fd20') - version('1.4.2', '7d22efb6cce475025733c50487bd8898') version('1.4.3', '86af2e3e3c61849ac7576a6f5ca44267') + version('1.4.2', '7d22efb6cce475025733c50487bd8898') variant('gui', default=False, description='Enable GUI') + variant('ipython', default=False, description='Enable ipython support') + + # Python 2.7, 3.4, or 3.5 + extends('python', ignore=r'bin/nosetests.*$|bin/pbr$') # Required dependencies - extends('python@2.7:2.8,3.4:3.5', ignore=r'bin/nosetests.*$|bin/pbr$') - depends_on('py-numpy@1.6:') - depends_on('py-setuptools') - depends_on('py-dateutil@1.1:') - depends_on('py-pyparsing') + depends_on('py-numpy@1.6:', type=nolink) + depends_on('py-setuptools', type='build') + depends_on('py-dateutil@1.1:', type=nolink) + depends_on('py-pyparsing', type=nolink) depends_on('libpng@1.2:') - depends_on('py-pytz') + depends_on('py-pytz', type=nolink) depends_on('freetype@2.3:') - depends_on('py-cycler@0.9:') - # depends_on('py-tornado') + depends_on('py-cycler@0.9:', type=nolink) # Optional GUI framework - depends_on('tk@8.3:', when='+gui') - depends_on('py-pyqt@4.0:', when='+gui') - depends_on('pygtk@2.4:', when='+gui') - depends_on('wxPython@2.8:', when='+gui') + depends_on('tk@8.3:', when='+gui') # not 8.6.0 or 8.6.1 + depends_on('qt', when='+gui') + depends_on('py-pyside', when='+gui', type=nolink) + # TODO: Add more GUI dependencies # Optional external programs + # ffmpeg/avconv or mencoder depends_on('ImageMagick') # Optional dependencies - depends_on('py-pillow') - depends_on('pkg-config') + depends_on('py-pillow', type=nolink) + depends_on('pkg-config', type='build') # Required libraries that ship with matplotlib # depends_on('agg@2.4:') - depends_on('qhull@2012.1') + depends_on('qhull@2012.1:') # depends_on('ttconv') - depends_on('py-six@1.9.0:') + depends_on('py-six@1.9.0:', type=nolink) def install(self, spec, prefix): - site_packages = '{0}/lib/python{1}/site-packages'.format( - prefix, spec['python'].version.up_to(2)) - - # site-packages directory must already exist - mkdirp(site_packages) - - # PYTHONPATH must include site-packages directory - env['PYTHONPATH'] += ':{0}'.format(site_packages) - python('setup.py', 'install', '--prefix=%s' % prefix) + + if str(self.version) in ['1.4.2', '1.4.3']: + # hack to fix configuration file + config_file = None + for p,d,f in os.walk(prefix.lib): + for file in f: + if file.find('matplotlibrc') != -1: + config_file = join_path(p, 'matplotlibrc') + print config_file + if config_file == None: + raise InstallError('could not find config file') + filter_file(r'backend : pyside', + 'backend : Qt4Agg', + config_file) + filter_file(r'#backend.qt4 : PyQt4', + 'backend.qt4 : PySide', + config_file) diff --git a/var/spack/repos/builtin/packages/py2cairo/package.py b/var/spack/repos/builtin/packages/py2cairo/package.py deleted file mode 100644 index f74868e6d4..0000000000 --- a/var/spack/repos/builtin/packages/py2cairo/package.py +++ /dev/null @@ -1,43 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Py2cairo(Package): - """Pycairo is a set of Python bindings for the cairo graphics library.""" - - homepage = "https://cairographics.org/pycairo/" - url = "https://cairographics.org/releases/py2cairo-1.10.0.tar.bz2" - - version('1.10.0', '20337132c4ab06c1146ad384d55372c5') - - depends_on('python@2.6:2.7') - depends_on('cairo@1.10.0:') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/pygobject/package.py b/var/spack/repos/builtin/packages/pygobject/package.py deleted file mode 100644 index 89cf13a349..0000000000 --- a/var/spack/repos/builtin/packages/pygobject/package.py +++ /dev/null @@ -1,45 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Pygobject(Package): - """PyGObject is a Python extension module that gives clean and consistent - access to the entire GNOME software platform through the use of GObject - Introspection.""" - - homepage = "https://wiki.gnome.org/Projects/PyGObject" - url = "http://ftp.gnome.org/pub/GNOME/sources/pygobject/3.10/pygobject-3.10.2.tar.xz" - - version('3.10.2', 'f311155be8510df6ad8e4edf1cb463d4') - - depends_on('python@2.7:') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix), - '--with-python={0}/python'.format(spec['python'].prefix.bin)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/pygtk/package.py b/var/spack/repos/builtin/packages/pygtk/package.py deleted file mode 100644 index 134bfd47b6..0000000000 --- a/var/spack/repos/builtin/packages/pygtk/package.py +++ /dev/null @@ -1,48 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Pygtk(Package): - """PyGTK lets you to easily create programs with a graphical user - interface using the Python programming language.""" - - homepage = "http://www.pygtk.org/" - url = "http://ftp.gnome.org/pub/GNOME/sources/pygtk/2.24/pygtk-2.24.0.tar.gz" - - version('2.24.0', 'd27c7f245a9e027f6b6cd9acb7468e36') - - depends_on('python@2.3.5:') - depends_on('pygobject@2.21.3:') - depends_on('pycairo@1.0.2:') - depends_on('glib@2.8.0:') - depends_on('gtkplus') - depends_on('py-numpy') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/wxPython/package.py b/var/spack/repos/builtin/packages/wxPython/package.py deleted file mode 100644 index 4f2bcce5ec..0000000000 --- a/var/spack/repos/builtin/packages/wxPython/package.py +++ /dev/null @@ -1,47 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Wxpython(Package): - """A blending of the wxWidgets C++ class library with the Python - programming language.""" - - homepage = "http://www.wxpython.org/" - url = "http://downloads.sourceforge.net/wxpython/wxPython-src-3.0.2.0.tar.bz2" - - version('3.0.2.0', '922b02ff2c0202a7bf1607c98bbbbc04') - - depends_on('python') - depends_on('libpng') - depends_on('zlib') - depends_on('jpeg') - depends_on('libtiff') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') -- cgit v1.2.3-60-g2f50 From 0b8a3ad8ad0ec5139f2fa83d67cfee98a709eacc Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 2 Aug 2016 11:21:23 -0500 Subject: Flake8 --- var/spack/repos/builtin/packages/py-matplotlib/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 51a198bd2b..fdc312509d 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import os @@ -80,12 +81,12 @@ class PyMatplotlib(Package): if str(self.version) in ['1.4.2', '1.4.3']: # hack to fix configuration file config_file = None - for p,d,f in os.walk(prefix.lib): + for p, d, f in os.walk(prefix.lib): for file in f: if file.find('matplotlibrc') != -1: config_file = join_path(p, 'matplotlibrc') print config_file - if config_file == None: + if not config_file: raise InstallError('could not find config file') filter_file(r'backend : pyside', 'backend : Qt4Agg', -- cgit v1.2.3-60-g2f50 From f56de639721e24348fc889209036b22836232669 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 2 Aug 2016 12:02:06 -0500 Subject: Fix cycler dependencies, update qhull version names --- .../repos/builtin/packages/py-cycler/package.py | 5 ++- .../builtin/packages/py-matplotlib/package.py | 5 ++- var/spack/repos/builtin/packages/qhull/package.py | 7 +--- .../builtin/packages/qhull/qhull-iterator.patch | 45 ---------------------- 4 files changed, 9 insertions(+), 53 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/qhull/qhull-iterator.patch diff --git a/var/spack/repos/builtin/packages/py-cycler/package.py b/var/spack/repos/builtin/packages/py-cycler/package.py index 764239d5f3..16da057f21 100644 --- a/var/spack/repos/builtin/packages/py-cycler/package.py +++ b/var/spack/repos/builtin/packages/py-cycler/package.py @@ -35,5 +35,8 @@ class PyCycler(Package): extends('python') + depends_on('py-setuptools', type='build') + depends_on('py-six', type=nolink) + def install(self, spec, prefix): - python('setup.py', 'install', '--prefix={0}'.format(prefix)) + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index fdc312509d..d9f859eca2 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -39,7 +39,7 @@ class PyMatplotlib(Package): version('1.4.3', '86af2e3e3c61849ac7576a6f5ca44267') version('1.4.2', '7d22efb6cce475025733c50487bd8898') - variant('gui', default=False, description='Enable GUI') + variant('gui', default=False, description='Enable GUI') variant('ipython', default=False, description='Enable ipython support') # Python 2.7, 3.4, or 3.5 @@ -76,7 +76,8 @@ class PyMatplotlib(Package): depends_on('py-six@1.9.0:', type=nolink) def install(self, spec, prefix): - python('setup.py', 'install', '--prefix=%s' % prefix) + setup_py('build') + setup_py('install', '--prefix={0}'.format(prefix)) if str(self.version) in ['1.4.2', '1.4.3']: # hack to fix configuration file diff --git a/var/spack/repos/builtin/packages/qhull/package.py b/var/spack/repos/builtin/packages/qhull/package.py index 2a06750ffd..462a681ad9 100644 --- a/var/spack/repos/builtin/packages/qhull/package.py +++ b/var/spack/repos/builtin/packages/qhull/package.py @@ -37,16 +37,13 @@ class Qhull(Package): homepage = "http://www.qhull.org" - version('7.2.0', 'e6270733a826a6a7c32b796e005ec3dc', + version('2015.2', 'e6270733a826a6a7c32b796e005ec3dc', url="http://www.qhull.org/download/qhull-2015-src-7.2.0.tgz") version('2012.1', 'd0f978c0d8dfb2e919caefa56ea2953c', url="http://www.qhull.org/download/qhull-2012.1-src.tgz") - # https://github.com/qhull/qhull/pull/5 - patch('qhull-iterator.patch', when='@1.0') - - depends_on('cmake', type='build') + depends_on('cmake@2.6:', type='build') def install(self, spec, prefix): with working_dir('spack-build', create=True): diff --git a/var/spack/repos/builtin/packages/qhull/qhull-iterator.patch b/var/spack/repos/builtin/packages/qhull/qhull-iterator.patch deleted file mode 100644 index 88e931d84f..0000000000 --- a/var/spack/repos/builtin/packages/qhull/qhull-iterator.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 93f4b306c54bb5be7724dcc19c6e747b62ac76dd Mon Sep 17 00:00:00 2001 -From: Ben Boeckel -Date: Thu, 28 May 2015 11:12:25 -0400 -Subject: [PATCH] iterator: use the header - -Standard libraries are doing funky things with inline namespaces which -make these declarations impossible to get right. Just include the -header. ---- - src/libqhullcpp/QhullIterator.h | 3 +-- - src/libqhullcpp/QhullLinkedList.h | 5 +---- - 2 files changed, 2 insertions(+), 6 deletions(-) - -diff --git a/src/libqhullcpp/QhullIterator.h b/src/libqhullcpp/QhullIterator.h -index 9dde894..49f3a3b 100644 ---- a/src/libqhullcpp/QhullIterator.h -+++ b/src/libqhullcpp/QhullIterator.h -@@ -14,10 +14,9 @@ extern "C" { - } - - #include -+#include - #include - #include --//! Avoid dependence on --namespace std { struct bidirectional_iterator_tag; struct random_access_iterator_tag; } - - namespace orgQhull { - -diff --git a/src/libqhullcpp/QhullLinkedList.h b/src/libqhullcpp/QhullLinkedList.h -index d828ac6..00b9008 100644 ---- a/src/libqhullcpp/QhullLinkedList.h -+++ b/src/libqhullcpp/QhullLinkedList.h -@@ -9,10 +9,7 @@ - #ifndef QHULLLINKEDLIST_H - #define QHULLLINKEDLIST_H - --namespace std { -- struct bidirectional_iterator_tag; -- struct random_access_iterator_tag; --}//std -+#include - - #include "QhullError.h" - extern "C" { -- cgit v1.2.3-60-g2f50 From 2b83ea30e7f09a686568ae09ae3b8c1cf7086de8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 2 Aug 2016 13:48:16 -0500 Subject: Re-add ipython support --- var/spack/repos/builtin/packages/py-matplotlib/package.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index d9f859eca2..e56d162232 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -56,9 +56,9 @@ class PyMatplotlib(Package): depends_on('py-cycler@0.9:', type=nolink) # Optional GUI framework - depends_on('tk@8.3:', when='+gui') # not 8.6.0 or 8.6.1 - depends_on('qt', when='+gui') - depends_on('py-pyside', when='+gui', type=nolink) + depends_on('tk@8.3:', when='+gui') # not 8.6.0 or 8.6.1 + depends_on('qt', when='+gui') + depends_on('py-pyside', when='+gui', type=nolink) # TODO: Add more GUI dependencies # Optional external programs @@ -68,6 +68,7 @@ class PyMatplotlib(Package): # Optional dependencies depends_on('py-pillow', type=nolink) depends_on('pkg-config', type='build') + depends_on('py-ipython', when='+ipython') # Required libraries that ship with matplotlib # depends_on('agg@2.4:') -- cgit v1.2.3-60-g2f50 From a388871083f60d0c35f78ceb4b0a4235458b57cb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 3 Aug 2016 10:27:55 -0500 Subject: Update ImageMagick to latest version --- .../repos/builtin/packages/ImageMagick/package.py | 33 +++++++--------------- .../repos/builtin/packages/ghostscript/package.py | 12 +++++--- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/var/spack/repos/builtin/packages/ImageMagick/package.py b/var/spack/repos/builtin/packages/ImageMagick/package.py index b0ccba1009..966e375d48 100644 --- a/var/spack/repos/builtin/packages/ImageMagick/package.py +++ b/var/spack/repos/builtin/packages/ImageMagick/package.py @@ -26,29 +26,13 @@ from spack import * class Imagemagick(Package): - """ImageMagick is a image processing library""" - homepage = "http://www.imagemagic.org" + """ImageMagick is a software suite to create, edit, compose, + or convert bitmap images.""" - # ------------------------------------------------------------------------- - # ImageMagick does not keep around anything but *-10 versions, so - # this URL may change. If you want the bleeding edge, you can - # uncomment it and see if it works but you may need to try to - # fetch a newer version (-6, -7, -8, -9, etc.) or you can stick - # wtih the older, stable, archived -10 versions below. - # - # TODO: would be nice if spack had a way to recommend avoiding a - # TODO: bleeding edge version, but not comment it out. - # ------------------------------------------------------------------------- - # version('6.9.0-6', 'c1bce7396c22995b8bdb56b7797b4a1b', - # url="http://www.imagemagick.org/download/ImageMagick-6.9.0-6.tar.bz2") + homepage = "http://www.imagemagick.org" + url = "http://www.imagemagick.org/download/ImageMagick-7.0.2-6.tar.gz" - # ------------------------------------------------------------------------- - # *-10 versions are archived, so these versions should fetch reliably. - # ------------------------------------------------------------------------- - version( - '6.8.9-10', - 'aa050bf9785e571c956c111377bbf57c', - url="http://sourceforge.net/projects/imagemagick/files/old-sources/6.x/6.8/ImageMagick-6.8.9-10.tar.gz/download") + version('7.0.2-6', 'c29c98d2496fbc66adb05a28d8fad21a') depends_on('jpeg') depends_on('libtool', type='build') @@ -56,8 +40,11 @@ class Imagemagick(Package): depends_on('freetype') depends_on('fontconfig') depends_on('libtiff') + depends_on('ghostscript') def install(self, spec, prefix): - configure("--prefix=%s" % prefix) + configure('--prefix={0}'.format(prefix)) + make() - make("install") + make('check') + make('install') diff --git a/var/spack/repos/builtin/packages/ghostscript/package.py b/var/spack/repos/builtin/packages/ghostscript/package.py index c22b90088e..f63ebac0c1 100644 --- a/var/spack/repos/builtin/packages/ghostscript/package.py +++ b/var/spack/repos/builtin/packages/ghostscript/package.py @@ -26,16 +26,20 @@ from spack import * class Ghostscript(Package): - """an interpreter for the PostScript language and for PDF. """ + """An interpreter for the PostScript language and for PDF.""" + homepage = "http://ghostscript.com/" - url = "http://downloads.ghostscript.com/public/old-gs-releases/ghostscript-9.18.tar.gz" + url = "http://downloads.ghostscript.com/public/old-gs-releases/ghostscript-9.18.tar.gz" version('9.18', '33a47567d7a591c00a253caddd12a88a') parallel = False + depends_on('libtiff') + def install(self, spec, prefix): - configure("--prefix=%s" % prefix, "--enable-shared") + configure('--prefix={0}'.format(prefix), + '--with-system-libtiff') make() - make("install") + make('install') -- cgit v1.2.3-60-g2f50 From 8a0824df09dfe5d8ff0b34a35ee93be81fc75380 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 3 Aug 2016 12:35:09 -0500 Subject: Update matplotlibrc filtering for GUI backends --- .../repos/builtin/packages/py-matplotlib/package.py | 18 ++++++++---------- var/spack/repos/builtin/packages/python/package.py | 2 ++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index e56d162232..7b7239d1f0 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -80,19 +80,17 @@ class PyMatplotlib(Package): setup_py('build') setup_py('install', '--prefix={0}'.format(prefix)) - if str(self.version) in ['1.4.2', '1.4.3']: - # hack to fix configuration file + if '+gui' in spec: + # Set backend in matplotlib configuration file config_file = None for p, d, f in os.walk(prefix.lib): for file in f: if file.find('matplotlibrc') != -1: config_file = join_path(p, 'matplotlibrc') - print config_file if not config_file: - raise InstallError('could not find config file') - filter_file(r'backend : pyside', - 'backend : Qt4Agg', - config_file) - filter_file(r'#backend.qt4 : PyQt4', - 'backend.qt4 : PySide', - config_file) + raise InstallError('Could not find matplotlibrc') + + kwargs = {'ignore_absent': False, 'backup': False, 'string': False} + rc = FileFilter(config_file) + rc.filter('^backend.*', 'backend : Qt4Agg', **kwargs) + rc.filter('^#backend.qt4.*', 'backend.qt4 : PySide', **kwargs) diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index c4e6754969..57783b0542 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -133,6 +133,8 @@ class Python(Package): # TODO: Once better testing support is integrated, add the following tests # https://wiki.python.org/moin/TkInter # + # Note: Only works if ForwardX11Trusted is enabled, i.e. `ssh -Y` + # # if '+tk' in spec: # env['TK_LIBRARY'] = join_path(spec['tk'].prefix.lib, # 'tk{0}'.format(spec['tk'].version.up_to(2))) -- cgit v1.2.3-60-g2f50 From 80742b264743f4db814997656c5c72f9a8e8fad8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 4 Aug 2016 10:59:01 -0500 Subject: Add latest version of qt --- var/spack/repos/builtin/packages/qt/package.py | 32 +++++++++++++++----------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index e496a3e4d5..bae0873c44 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -29,7 +29,11 @@ import os class Qt(Package): """Qt is a comprehensive cross-platform C++ application framework.""" homepage = 'http://qt.io' + url = 'http://download.qt.io/archive/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz' + list_url = 'http://download.qt.io/archive/qt/' + list_depth = 4 + version('5.7.0', '9a46cce61fc64c20c3ac0a0e0fa41b42') version('5.5.1', '59f0216819152b77536cf660b015d784') version('5.4.2', 'fa1c4d819b401b267eb246a543a63ea5') version('5.4.0', 'e8654e4b37dd98039ba20da7a53877e6') @@ -127,7 +131,7 @@ class Qt(Package): @property def common_config_args(self): - config_args = [ + return [ '-prefix', self.prefix, '-v', '-opensource', @@ -144,20 +148,13 @@ class Qt(Package): '-no-nis' ] - if '+gtk' in self.spec: - config_args.append('-gtkstyle') - else: - config_args.append('-no-gtkstyle') - - return config_args - # Don't disable all the database drivers, but should # really get them into spack at some point. @when('@3') def configure(self): - # An user report that this was necessary to link Qt3 on ubuntu - os.environ['LD_LIBRARY_PATH'] = os.getcwd() + '/lib' + # A user reported that this was necessary to link Qt3 on ubuntu + os.environ['LD_LIBRARY_PATH'] = os.getcwd()+'/lib' configure('-prefix', self.prefix, '-v', '-thread', @@ -169,18 +166,27 @@ class Qt(Package): def configure(self): configure('-fast', '-no-webkit', + '{0}-gtkstyle'.format('' if '+gtk' in self.spec else '-no'), *self.common_config_args) - @when('@5') + @when('@5.0:5.6') def configure(self): configure('-no-eglfs', '-no-directfb', '-qt-xcb', - # If someone wants to get a webkit build working, be my - # guest! + '{0}-gtkstyle'.format('' if '+gtk' in self.spec else '-no'), + # If someone wants to get a webkit build working, be my guest! '-skip', 'qtwebkit', *self.common_config_args) + @when('@5.7:') + def configure(self): + configure('-no-eglfs', + '-no-directfb', + '-qt-xcb', + '{0}-gtk'.format('' if '+gtk' in self.spec else '-no'), + *self.common_config_args) + def install(self, spec, prefix): self.configure() make() -- cgit v1.2.3-60-g2f50 From eac9a5905f2ac51b76ef53b409136038cc7b2b89 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 4 Aug 2016 12:14:40 -0500 Subject: Flake8 and url_for_version changes --- var/spack/repos/builtin/packages/qt/package.py | 61 +++++++++++++------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index bae0873c44..54d475932f 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -44,8 +44,7 @@ class Qt(Package): # Add patch for compile issues with qt3 found with use in the # OpenSpeedShop project - variant('krellpatch', default=False, - description="Build with openspeedshop based patch.") + variant('krellpatch', default=False, description="Build with openspeedshop based patch.") variant('mesa', default=False, description="Depend on mesa.") variant('gtk', default=False, description="Build with gtkplus.") @@ -77,29 +76,33 @@ class Qt(Package): depends_on("libxcb") def url_for_version(self, version): - url = "http://download.qt.io/archive/qt/" + # URL keeps getting more complicated with every release + url = self.list_url + + if version >= Version('4.0'): + url += version.up_to(2) + '/' + else: + url += version.up_to(1) + '/' + + if version >= Version('4.8'): + url += str(version) + '/' if version >= Version('5'): - url += "%s/%s/single/qt-everywhere-opensource-src-%s.tar.gz" % \ - (version.up_to(2), version, version) - elif version >= Version('4.8'): - url += "%s/%s/qt-everywhere-opensource-src-%s.tar.gz" % \ - (version.up_to(2), version, version) - elif version >= Version('4.6'): - url += "%s/qt-everywhere-opensource-src-%s.tar.gz" % \ - (version.up_to(2), version) - elif version >= Version('4.0'): - url += "%s/qt-x11-opensource-src-%s.tar.gz" % \ - (version.up_to(2), version) - elif version >= Version('3'): - url += "%s/qt-x11-free-%s.tar.gz" % \ - (version.up_to(1), version) + url += 'single/' + + url += 'qt-' + + if version >= Version('4.6'): + url += 'everywhere-' elif version >= Version('2.1'): - url += "%s/qt-x11-%s.tar.gz" % \ - (version.up_to(1), version) - else: - url += "%s/qt-%s.tar.gz" % \ - (version.up_to(1), version) + url += 'x11-' + + if version >= Version('4.0'): + url += 'opensource-src-' + elif version >= Version('3'): + url += 'free-' + + url += str(version) + '.tar.gz' return url @@ -120,13 +123,10 @@ class Qt(Package): return # Fix qmake compilers in the default mkspec - filter_file(r'^QMAKE_COMPILER *=.*$', - 'QMAKE_COMPILER = cc', qmake_conf) - filter_file(r'^QMAKE_CC *=.*$', - 'QMAKE_CC = cc', qmake_conf) - filter_file(r'^QMAKE_CXX *=.*$', - 'QMAKE_CXX = c++', qmake_conf) - filter_file(r'^QMAKE_LFLAGS_NOUNDEF *\+?=.*$', + filter_file('^QMAKE_COMPILER.*', 'QMAKE_COMPILER = cc', qmake_conf) + filter_file('^QMAKE_CC.*', 'QMAKE_CC = cc', qmake_conf) + filter_file('^QMAKE_CXX.*', 'QMAKE_CXX = c++', qmake_conf) + filter_file('^QMAKE_LFLAGS_NOUNDEF.*', 'QMAKE_LFLAGS_NOUNDEF =', qmake_unix_conf) @property @@ -154,7 +154,7 @@ class Qt(Package): @when('@3') def configure(self): # A user reported that this was necessary to link Qt3 on ubuntu - os.environ['LD_LIBRARY_PATH'] = os.getcwd()+'/lib' + os.environ['LD_LIBRARY_PATH'] = os.getcwd() + '/lib' configure('-prefix', self.prefix, '-v', '-thread', @@ -175,7 +175,6 @@ class Qt(Package): '-no-directfb', '-qt-xcb', '{0}-gtkstyle'.format('' if '+gtk' in self.spec else '-no'), - # If someone wants to get a webkit build working, be my guest! '-skip', 'qtwebkit', *self.common_config_args) -- cgit v1.2.3-60-g2f50 From ac15d5d6191f4a8e90dd307249d7ed8f8bfb466b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 8 Aug 2016 11:44:29 -0500 Subject: Add patch for qt gamepad compilation problems --- .../repos/builtin/packages/qt/btn_trigger_happy.patch | 17 +++++++++++++++++ var/spack/repos/builtin/packages/qt/package.py | 3 +++ 2 files changed, 20 insertions(+) create mode 100644 var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch diff --git a/var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch b/var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch new file mode 100644 index 0000000000..711e209136 --- /dev/null +++ b/var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch @@ -0,0 +1,17 @@ +--- a/qtgamepad/src/plugins/gamepads/evdev/qevdevgamepadbackend.cpp 2016-08-08 11:34:44.517184658 -0500 ++++ b/qtgamepad/src/plugins/gamepads/evdev/qevdevgamepadbackend.cpp 2016-08-08 11:36:42.371995567 -0500 +@@ -262,10 +262,10 @@ + m_buttonsMap[BTN_TR2] = QGamepadManager::ButtonR2; + m_buttonsMap[BTN_THUMB] = m_buttonsMap[BTN_THUMBL] = QGamepadManager::ButtonL3; + m_buttonsMap[BTN_THUMBR] = QGamepadManager::ButtonR3; +- m_buttonsMap[BTN_TRIGGER_HAPPY1] = QGamepadManager::ButtonLeft; +- m_buttonsMap[BTN_TRIGGER_HAPPY2] = QGamepadManager::ButtonRight; +- m_buttonsMap[BTN_TRIGGER_HAPPY3] = QGamepadManager::ButtonUp; +- m_buttonsMap[BTN_TRIGGER_HAPPY4] = QGamepadManager::ButtonDown; ++ m_buttonsMap[BTN_TRIGGER_HAPPY1] = 0x2c0; ++ m_buttonsMap[BTN_TRIGGER_HAPPY2] = 0x2c1; ++ m_buttonsMap[BTN_TRIGGER_HAPPY3] = 0x2c2; ++ m_buttonsMap[BTN_TRIGGER_HAPPY4] = 0x2c3; + + if (m_productId) + m_backend->saveSettings(m_productId, QVariant()); diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 54d475932f..6438714a57 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -50,6 +50,9 @@ class Qt(Package): patch('qt3krell.patch', when='@3.3.8b+krellpatch') + # https://github.com/xboxdrv/xboxdrv/issues/188 + patch('btn_trigger_happy.patch', when='@5.7.0:') + # Use system openssl for security. # depends_on("openssl") -- cgit v1.2.3-60-g2f50 From 7135299a66ead59b9e58e71844331cee6204791f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 8 Aug 2016 13:51:45 -0500 Subject: Add latest version of pcre --- var/spack/repos/builtin/packages/pcre/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/pcre/package.py b/var/spack/repos/builtin/packages/pcre/package.py index 6f306ab0f9..a2236e682b 100644 --- a/var/spack/repos/builtin/packages/pcre/package.py +++ b/var/spack/repos/builtin/packages/pcre/package.py @@ -32,10 +32,10 @@ class Pcre(Package): homepage = "http://www.pcre.org""" url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2" - version('8.36', 'b767bc9af0c20bc9c1fe403b0d41ad97') + version('8.39', 'e3fca7650a0556a2647821679d81f585') version('8.38', '00aabbfe56d5a48b270f999b508c5ad2') - patch("intel.patch") + patch("intel.patch", when='@8.38') variant('utf', default=True, description='Enable support for UTF-8/16/32, ' -- cgit v1.2.3-60-g2f50 From 90dd26397c87748f0693271d538ae0e37a1c67a0 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 8 Aug 2016 14:59:05 -0500 Subject: Fix qt patch --- var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch b/var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch index 711e209136..e6a27d5fab 100644 --- a/var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch +++ b/var/spack/repos/builtin/packages/qt/btn_trigger_happy.patch @@ -8,10 +8,10 @@ - m_buttonsMap[BTN_TRIGGER_HAPPY2] = QGamepadManager::ButtonRight; - m_buttonsMap[BTN_TRIGGER_HAPPY3] = QGamepadManager::ButtonUp; - m_buttonsMap[BTN_TRIGGER_HAPPY4] = QGamepadManager::ButtonDown; -+ m_buttonsMap[BTN_TRIGGER_HAPPY1] = 0x2c0; -+ m_buttonsMap[BTN_TRIGGER_HAPPY2] = 0x2c1; -+ m_buttonsMap[BTN_TRIGGER_HAPPY3] = 0x2c2; -+ m_buttonsMap[BTN_TRIGGER_HAPPY4] = 0x2c3; ++ m_buttonsMap[0x2c0] = QGamepadManager::ButtonLeft; ++ m_buttonsMap[0x2c1] = QGamepadManager::ButtonRight; ++ m_buttonsMap[0x2c2] = QGamepadManager::ButtonUp; ++ m_buttonsMap[0x2c3] = QGamepadManager::ButtonDown; if (m_productId) m_backend->saveSettings(m_productId, QVariant()); -- cgit v1.2.3-60-g2f50 From ddf1879bed09dd0b323f393ab82cdda9d7143af9 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 8 Aug 2016 17:52:35 -0500 Subject: Remove glib dependency, causes problems with PCRE and JavaScript --- var/spack/repos/builtin/packages/qt/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 6438714a57..ecc38f32db 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -56,7 +56,6 @@ class Qt(Package): # Use system openssl for security. # depends_on("openssl") - depends_on("glib") depends_on("gtkplus", when='+gtk') depends_on("libxml2") depends_on("zlib") -- cgit v1.2.3-60-g2f50 From 59ce0c751409af36c13da64843f4ee6d7d3419ef Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 Aug 2016 16:13:57 -0500 Subject: Add patch to build qt 4 with GCC 6 --- .../repos/builtin/packages/py-pyside/package.py | 3 +- var/spack/repos/builtin/packages/qt/package.py | 38 ++++++++++++++-------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pyside/package.py b/var/spack/repos/builtin/packages/py-pyside/package.py index 1cb3e4745f..eda14660da 100644 --- a/var/spack/repos/builtin/packages/py-pyside/package.py +++ b/var/spack/repos/builtin/packages/py-pyside/package.py @@ -31,13 +31,14 @@ class PyPyside(Package): homepage = "https://pypi.python.org/pypi/pyside" url = "https://pypi.python.org/packages/source/P/PySide/PySide-1.2.2.tar.gz" + version('1.2.4', '3cb7174c13bd45e3e8f77638926cb8c0') version('1.2.2', 'c45bc400c8a86d6b35f34c29e379e44d') depends_on('cmake', type='build') extends('python') depends_on('py-setuptools', type='build') - depends_on('qt@:4') + depends_on('qt@4.6:4.999') def patch(self): """Undo PySide RPATH handling and add Spack RPATH.""" diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index ecc38f32db..44dbc7f709 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -114,22 +114,34 @@ class Qt(Package): def setup_dependent_environment(self, spack_env, run_env, dspec): spack_env.set('QTDIR', self.prefix) + @when('@4') def patch(self): - if self.spec.satisfies('@4'): - qmake_conf = 'mkspecs/common/g++-base.conf' - qmake_unix_conf = 'mkspecs/common/g++-unix.conf' - elif self.spec.satisfies('@5'): - qmake_conf = 'qtbase/mkspecs/common/g++-base.conf' - qmake_unix_conf = 'qtbase/mkspecs/common/g++-unix.conf' - else: - return + # Fix qmake compilers in the default mkspec + filter_file('^QMAKE_CC .*', 'QMAKE_CC = cc', + 'mkspecs/common/g++-base.conf') + filter_file('^QMAKE_CXX .*', 'QMAKE_CXX = c++', + 'mkspecs/common/g++-base.conf') + # Necessary to build with GCC 6 and other modern compilers + # http://stackoverflow.com/questions/10354371/ + filter_file('(^QMAKE_CXXFLAGS .*)', r'\1 -std=gnu++98', + 'mkspecs/common/gcc-base.conf') + + filter_file('^QMAKE_LFLAGS_NOUNDEF .*', 'QMAKE_LFLAGS_NOUNDEF = ', + 'mkspecs/common/g++-unix.conf') + + @when('@5:') + def patch(self): # Fix qmake compilers in the default mkspec - filter_file('^QMAKE_COMPILER.*', 'QMAKE_COMPILER = cc', qmake_conf) - filter_file('^QMAKE_CC.*', 'QMAKE_CC = cc', qmake_conf) - filter_file('^QMAKE_CXX.*', 'QMAKE_CXX = c++', qmake_conf) - filter_file('^QMAKE_LFLAGS_NOUNDEF.*', - 'QMAKE_LFLAGS_NOUNDEF =', qmake_unix_conf) + filter_file('^QMAKE_COMPILER .*', 'QMAKE_COMPILER = cc', + 'qtbase/mkspecs/common/g++-base.conf') + filter_file('^QMAKE_CC .*', 'QMAKE_CC = cc', + 'qtbase/mkspecs/common/g++-base.conf') + filter_file('^QMAKE_CXX .*', 'QMAKE_CXX = c++', + 'qtbase/mkspecs/common/g++-base.conf') + + filter_file('^QMAKE_LFLAGS_NOUNDEF .*', 'QMAKE_LFLAGS_NOUNDEF = ', + 'qtbase/mkspecs/common/g++-unix.conf') @property def common_config_args(self): -- cgit v1.2.3-60-g2f50 From 5cc76f7d841fccfe2b2bdb4b4a4e540d6152f6d6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 Aug 2016 17:00:31 -0500 Subject: Fix patch for py-pyside 1.2.4 --- var/spack/repos/builtin/packages/py-pyside/package.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pyside/package.py b/var/spack/repos/builtin/packages/py-pyside/package.py index eda14660da..032ae50440 100644 --- a/var/spack/repos/builtin/packages/py-pyside/package.py +++ b/var/spack/repos/builtin/packages/py-pyside/package.py @@ -59,10 +59,12 @@ class PyPyside(Package): # PySide tries to patch ELF files to remove RPATHs # Disable this and go with the one we set. - filter_file( - r'^\s*rpath_cmd\(pyside_path, srcpath\)', - r'#rpath_cmd(pyside_path, srcpath)', - 'pyside_postinstall.py') + if self.spec.satisfies('@1.2.4:'): + rpath_file = 'setup.py' + else: + rpath_file = 'pyside_postinstall.py' + + filter_file(r'(^\s*)(rpath_cmd\(.*\))', r'\1#\2', rpath_file) def install(self, spec, prefix): python('setup.py', 'install', -- cgit v1.2.3-60-g2f50 From 1363b05e93dc5ba48cdfe73d2f9ad4c2cc68b08a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 Aug 2016 17:10:30 -0500 Subject: Add test dependencies --- var/spack/repos/builtin/packages/py-matplotlib/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 7b7239d1f0..aae18d0fa3 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -70,6 +70,10 @@ class PyMatplotlib(Package): depends_on('pkg-config', type='build') depends_on('py-ipython', when='+ipython') + # Testing dependencies + depends_on('py-nose') # type='test' + depends_on('py-mock') # type='test' + # Required libraries that ship with matplotlib # depends_on('agg@2.4:') depends_on('qhull@2012.1:') -- cgit v1.2.3-60-g2f50 From b6fad65f52c781e63065e68e9d42be5f3dfc8ace Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 10 Aug 2016 10:39:49 -0500 Subject: Combine patch for all versions Patch doesn't work with @when unless you specify a patch for every version. When running `spack patch` for a version without a patch, spack thinks that a patch exists, tries to apply it, but it doesn't exist. Spack gets very confused. --- var/spack/repos/builtin/packages/qt/package.py | 52 +++++++++++++------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 44dbc7f709..ba701d5253 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -114,34 +114,32 @@ class Qt(Package): def setup_dependent_environment(self, spack_env, run_env, dspec): spack_env.set('QTDIR', self.prefix) - @when('@4') - def patch(self): - # Fix qmake compilers in the default mkspec - filter_file('^QMAKE_CC .*', 'QMAKE_CC = cc', - 'mkspecs/common/g++-base.conf') - filter_file('^QMAKE_CXX .*', 'QMAKE_CXX = c++', - 'mkspecs/common/g++-base.conf') - - # Necessary to build with GCC 6 and other modern compilers - # http://stackoverflow.com/questions/10354371/ - filter_file('(^QMAKE_CXXFLAGS .*)', r'\1 -std=gnu++98', - 'mkspecs/common/gcc-base.conf') - - filter_file('^QMAKE_LFLAGS_NOUNDEF .*', 'QMAKE_LFLAGS_NOUNDEF = ', - 'mkspecs/common/g++-unix.conf') - - @when('@5:') def patch(self): - # Fix qmake compilers in the default mkspec - filter_file('^QMAKE_COMPILER .*', 'QMAKE_COMPILER = cc', - 'qtbase/mkspecs/common/g++-base.conf') - filter_file('^QMAKE_CC .*', 'QMAKE_CC = cc', - 'qtbase/mkspecs/common/g++-base.conf') - filter_file('^QMAKE_CXX .*', 'QMAKE_CXX = c++', - 'qtbase/mkspecs/common/g++-base.conf') - - filter_file('^QMAKE_LFLAGS_NOUNDEF .*', 'QMAKE_LFLAGS_NOUNDEF = ', - 'qtbase/mkspecs/common/g++-unix.conf') + if self.spec.satisfies('@4'): + # Fix qmake compilers in the default mkspec + filter_file('^QMAKE_CC .*', 'QMAKE_CC = cc', + 'mkspecs/common/g++-base.conf') + filter_file('^QMAKE_CXX .*', 'QMAKE_CXX = c++', + 'mkspecs/common/g++-base.conf') + + # Necessary to build with GCC 6 and other modern compilers + # http://stackoverflow.com/questions/10354371/ + filter_file('(^QMAKE_CXXFLAGS .*)', r'\1 -std=gnu++98', + 'mkspecs/common/gcc-base.conf') + + filter_file('^QMAKE_LFLAGS_NOUNDEF .*', 'QMAKE_LFLAGS_NOUNDEF = ', + 'mkspecs/common/g++-unix.conf') + elif self.spec.satisfies('@5:'): + # Fix qmake compilers in the default mkspec + filter_file('^QMAKE_COMPILER .*', 'QMAKE_COMPILER = cc', + 'qtbase/mkspecs/common/g++-base.conf') + filter_file('^QMAKE_CC .*', 'QMAKE_CC = cc', + 'qtbase/mkspecs/common/g++-base.conf') + filter_file('^QMAKE_CXX .*', 'QMAKE_CXX = c++', + 'qtbase/mkspecs/common/g++-base.conf') + + filter_file('^QMAKE_LFLAGS_NOUNDEF .*', 'QMAKE_LFLAGS_NOUNDEF = ', + 'qtbase/mkspecs/common/g++-unix.conf') @property def common_config_args(self): -- cgit v1.2.3-60-g2f50 From 2b0444b6f43a83d4408a4f13054f4d3b4960460a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 10 Aug 2016 11:26:15 -0500 Subject: Latest version of pyside still has problems, add deps --- var/spack/repos/builtin/packages/py-pyside/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pyside/package.py b/var/spack/repos/builtin/packages/py-pyside/package.py index 032ae50440..c938c5a3ce 100644 --- a/var/spack/repos/builtin/packages/py-pyside/package.py +++ b/var/spack/repos/builtin/packages/py-pyside/package.py @@ -31,14 +31,16 @@ class PyPyside(Package): homepage = "https://pypi.python.org/pypi/pyside" url = "https://pypi.python.org/packages/source/P/PySide/PySide-1.2.2.tar.gz" - version('1.2.4', '3cb7174c13bd45e3e8f77638926cb8c0') + # version('1.2.4', '3cb7174c13bd45e3e8f77638926cb8c0') # rpath problems version('1.2.2', 'c45bc400c8a86d6b35f34c29e379e44d') depends_on('cmake', type='build') extends('python') depends_on('py-setuptools', type='build') - depends_on('qt@4.6:4.999') + depends_on('qt@4.5:4.9') + depends_on('libxml2@2.6.32:') + depends_on('libxslt@1.1.19:') def patch(self): """Undo PySide RPATH handling and add Spack RPATH.""" @@ -66,6 +68,10 @@ class PyPyside(Package): filter_file(r'(^\s*)(rpath_cmd\(.*\))', r'\1#\2', rpath_file) + # TODO: rpath handling for PySide 1.2.4 still doesn't work. + # PySide can't find the Shiboken library, even though it comes + # bundled with it and is installed in the same directory. + def install(self, spec, prefix): python('setup.py', 'install', '--prefix=%s' % prefix, -- cgit v1.2.3-60-g2f50 From 04cee45ac927eb49ecc274383f766f0974b9cf7d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 10 Aug 2016 13:36:16 -0500 Subject: Skip webengine until webkit support is added --- var/spack/repos/builtin/packages/qt/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index ba701d5253..e66be34db2 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -196,6 +196,7 @@ class Qt(Package): '-no-directfb', '-qt-xcb', '{0}-gtk'.format('' if '+gtk' in self.spec else '-no'), + '-skip', 'webengine', *self.common_config_args) def install(self, spec, prefix): -- cgit v1.2.3-60-g2f50 From f147d645272bc96e57c707f39a80b64d1e637fb1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 11 Aug 2016 11:01:57 -0500 Subject: Rebase messed up flake8 --- var/spack/repos/builtin/packages/py-matplotlib/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index aae18d0fa3..0b8ff4715d 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -26,7 +26,6 @@ from spack import * import os - class PyMatplotlib(Package): """matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive -- cgit v1.2.3-60-g2f50 From 568305ddffdaf475979589a0dad85c339ad88b7d Mon Sep 17 00:00:00 2001 From: Matt Belhorn Date: Thu, 11 Aug 2016 13:56:21 -0400 Subject: Corrects Cray compiler name and adds missing version flag. --- lib/spack/spack/compilers/cce.py | 55 ++++++++++++++++++++++++++++++++++++ lib/spack/spack/compilers/craype.py | 56 ------------------------------------- 2 files changed, 55 insertions(+), 56 deletions(-) create mode 100644 lib/spack/spack/compilers/cce.py delete mode 100644 lib/spack/spack/compilers/craype.py diff --git a/lib/spack/spack/compilers/cce.py b/lib/spack/spack/compilers/cce.py new file mode 100644 index 0000000000..43d000dd69 --- /dev/null +++ b/lib/spack/spack/compilers/cce.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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.compiler import * + + +class Cce(Compiler): + """Cray compiler environment compiler.""" + # Subclasses use possible names of C compiler + cc_names = ['cc'] + + # Subclasses use possible names of C++ compiler + cxx_names = ['CC'] + + # Subclasses use possible names of Fortran 77 compiler + f77_names = ['ftn'] + + # Subclasses use possible names of Fortran 90 compiler + fc_names = ['ftn'] + + # MacPorts builds gcc versions with prefixes and -mp-X.Y suffixes. + suffixes = [r'-mp-\d\.\d'] + + PrgEnv = 'PrgEnv-cray' + PrgEnv_compiler = 'cce' + + link_paths = {'cc': 'cc', + 'cxx': 'c++', + 'f77': 'f77', + 'fc': 'fc'} + + @classmethod + def default_version(cls, comp): + return get_compiler_version(comp, '-V', r'[Vv]ersion.*(\d+(\.\d+)+)') diff --git a/lib/spack/spack/compilers/craype.py b/lib/spack/spack/compilers/craype.py deleted file mode 100644 index c92e5c131a..0000000000 --- a/lib/spack/spack/compilers/craype.py +++ /dev/null @@ -1,56 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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.compiler import * - - -class Craype(Compiler): - """Cray programming environment compiler.""" - - # Subclasses use possible names of C compiler - cc_names = ['cc'] - - # Subclasses use possible names of C++ compiler - cxx_names = ['CC'] - - # Subclasses use possible names of Fortran 77 compiler - f77_names = ['ftn'] - - # Subclasses use possible names of Fortran 90 compiler - fc_names = ['ftn'] - - # MacPorts builds gcc versions with prefixes and -mp-X.Y suffixes. - suffixes = [r'-mp-\d\.\d'] - - PrgEnv = 'PrgEnv-cray' - PrgEnv_compiler = 'craype' - - link_paths = {'cc': 'cc', - 'cxx': 'c++', - 'f77': 'f77', - 'fc': 'fc'} - - @classmethod - def default_version(cls, comp): - return get_compiler_version(comp, r'([Vv]ersion).*(\d+(\.\d+)+)') -- cgit v1.2.3-60-g2f50 From 633e540a1718a5cc515725b13d3f1740bb950bb6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 11 Aug 2016 14:13:33 -0500 Subject: Use GitHub URL for ImageMagick --- var/spack/repos/builtin/packages/ImageMagick/package.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/ImageMagick/package.py b/var/spack/repos/builtin/packages/ImageMagick/package.py index 966e375d48..61d4cc0cb4 100644 --- a/var/spack/repos/builtin/packages/ImageMagick/package.py +++ b/var/spack/repos/builtin/packages/ImageMagick/package.py @@ -30,9 +30,10 @@ class Imagemagick(Package): or convert bitmap images.""" homepage = "http://www.imagemagick.org" - url = "http://www.imagemagick.org/download/ImageMagick-7.0.2-6.tar.gz" + url = "https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz" - version('7.0.2-6', 'c29c98d2496fbc66adb05a28d8fad21a') + version('7.0.2-7', 'c59cdc8df50e481b2bd1afe09ac24c08') + version('7.0.2-6', 'aa5689129c39a5146a3212bf5f26d478') depends_on('jpeg') depends_on('libtool', type='build') @@ -42,6 +43,9 @@ class Imagemagick(Package): depends_on('libtiff') depends_on('ghostscript') + def url_for_version(self, version): + return "https://github.com/ImageMagick/ImageMagick/archive/{0}.tar.gz".format(version) + def install(self, spec, prefix): configure('--prefix={0}'.format(prefix)) -- cgit v1.2.3-60-g2f50 From d4377c129358c8e1ab05a75e8728d1db439625ba Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 12 Aug 2016 09:59:38 -0500 Subject: Add Python 3.5 support, latest version of PySide --- var/spack/repos/builtin/packages/py-pyside/package.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pyside/package.py b/var/spack/repos/builtin/packages/py-pyside/package.py index c938c5a3ce..186f4556bf 100644 --- a/var/spack/repos/builtin/packages/py-pyside/package.py +++ b/var/spack/repos/builtin/packages/py-pyside/package.py @@ -31,8 +31,8 @@ class PyPyside(Package): homepage = "https://pypi.python.org/pypi/pyside" url = "https://pypi.python.org/packages/source/P/PySide/PySide-1.2.2.tar.gz" - # version('1.2.4', '3cb7174c13bd45e3e8f77638926cb8c0') # rpath problems - version('1.2.2', 'c45bc400c8a86d6b35f34c29e379e44d') + version('1.2.4', '3cb7174c13bd45e3e8f77638926cb8c0') # rpath problems + version('1.2.2', 'c45bc400c8a86d6b35f34c29e379e44d', preferred=True) depends_on('cmake', type='build') @@ -72,6 +72,13 @@ class PyPyside(Package): # PySide can't find the Shiboken library, even though it comes # bundled with it and is installed in the same directory. + # PySide does not provide official support for + # Python 3.5, but it should work fine + filter_file("'Programming Language :: Python :: 3.4'", + "'Programming Language :: Python :: 3.4',\r\n " + "'Programming Language :: Python :: 3.5'", + "setup.py") + def install(self, spec, prefix): python('setup.py', 'install', '--prefix=%s' % prefix, -- cgit v1.2.3-60-g2f50 From c815aed2073b43af81af6d376cd398047f260c6b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 12 Aug 2016 10:51:56 -0500 Subject: Update documentation for spack md5 --- lib/spack/docs/packaging_guide.rst | 21 ++++++++++++++++----- lib/spack/spack/cmd/md5.py | 5 +++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 70def5c39a..a082b85efa 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -467,14 +467,25 @@ to use based on the hash length. ``spack md5`` ^^^^^^^^^^^^^^^^^^^^^^ -If you have a single file to checksum, you can use the ``spack md5`` -command to do it. Here's how you might download an archive and get a -checksum for it: +If you have one or more files to checksum, you can use the ``spack md5`` +command to do it: .. code-block:: sh - $ curl -O http://exmaple.com/foo-8.2.1.tar.gz' - $ spack md5 foo-8.2.1.tar.gz + $ spack md5 foo-8.2.1.tar.gz foo-8.2.2.tar.gz + ==> 2 MD5 checksums: + 4136d7b4c04df68b686570afa26988ac foo-8.2.1.tar.gz + 1586b70a49dfe05da5fcc29ef239dce0 foo-8.2.2.tar.gz + +``spack md5`` also accepts one or more URLs and automatically downloads +the files for you: + +.. code-block:: sh + + $ spack md5 http://example.com/foo-8.2.1.tar.gz + ==> Trying to fetch from http://example.com/foo-8.2.1.tar.gz + ######################################################################## 100.0% + ==> 1 MD5 checksum: 4136d7b4c04df68b686570afa26988ac foo-8.2.1.tar.gz Doing this for lots of files, or whenever a new package version is diff --git a/lib/spack/spack/cmd/md5.py b/lib/spack/spack/cmd/md5.py index 3ba3c71562..506cf0913f 100644 --- a/lib/spack/spack/cmd/md5.py +++ b/lib/spack/spack/cmd/md5.py @@ -36,7 +36,7 @@ description = "Calculate md5 checksums for files/urls." def setup_parser(subparser): setup_parser.parser = subparser subparser.add_argument('files', nargs=argparse.REMAINDER, - help="Files to checksum.") + help="Files/urls to checksum.") def compute_md5_checksum(url): @@ -67,6 +67,7 @@ def md5(parser, args): tty.warn("%s" % e) # Dump the MD5s at last without interleaving them with downloads - tty.msg("%d MD5 checksums:" % len(results)) + checksum = 'checksum' if len(results) == 1 else 'checksums' + tty.msg("%d MD5 %s:" % (len(results), checksum)) for checksum, url in results: print "%s %s" % (checksum, url) -- cgit v1.2.3-60-g2f50 From bc64990bc65bba623f789116ab0937c896c840ea Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 12 Aug 2016 12:16:48 -0500 Subject: Replace python('setup.py' with setup_py( --- var/spack/repos/builtin/packages/py-pyside/package.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pyside/package.py b/var/spack/repos/builtin/packages/py-pyside/package.py index 186f4556bf..e575864fab 100644 --- a/var/spack/repos/builtin/packages/py-pyside/package.py +++ b/var/spack/repos/builtin/packages/py-pyside/package.py @@ -80,6 +80,4 @@ class PyPyside(Package): "setup.py") def install(self, spec, prefix): - python('setup.py', 'install', - '--prefix=%s' % prefix, - '--jobs=%s' % make_jobs) + setup_py('install', '--prefix=%s' % prefix, '--jobs=%s' % make_jobs) -- cgit v1.2.3-60-g2f50 From 3edfa390f7abc902cbb1a2c66423f5228cd7b467 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 15 Aug 2016 11:19:40 +0100 Subject: Basic package file for plumed and boilerplate for external intel mpi --- etc/spack/packages.yaml | 5 ++ .../repos/builtin/packages/intelmpi/package.py | 17 ++++ var/spack/repos/builtin/packages/plumed/package.py | 100 +++++---------------- 3 files changed, 46 insertions(+), 76 deletions(-) create mode 100644 etc/spack/packages.yaml create mode 100644 var/spack/repos/builtin/packages/intelmpi/package.py diff --git a/etc/spack/packages.yaml b/etc/spack/packages.yaml new file mode 100644 index 0000000000..41d8c5f9f6 --- /dev/null +++ b/etc/spack/packages.yaml @@ -0,0 +1,5 @@ +packages: + intelmpi: + paths: + intelmpi@4.1.0%gcc@4.4.7 arch=linux-x86_64: /software/compilers/intel/13.0/impi/4.1.0.024 + buildable: False diff --git a/var/spack/repos/builtin/packages/intelmpi/package.py b/var/spack/repos/builtin/packages/intelmpi/package.py new file mode 100644 index 0000000000..16cfbab260 --- /dev/null +++ b/var/spack/repos/builtin/packages/intelmpi/package.py @@ -0,0 +1,17 @@ +from spack import * + +class Intelmpi(Package): + """Intel MPI""" + + homepage = "http://www.example.com" + url = "https://software.intel.com/en-us/intel-mpi-library" + + version('4.1.0') + + # Provides a virtual dependency 'mpi' + provides('mpi') + +# def install(self, spec, prefix): +# configure("--prefix=%s" % prefix) +# make() +# make("install") diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index b670b4c2b8..b179076b7f 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -22,91 +22,39 @@ # 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 - +# +# This is a template package file for Spack. We've put "FIXME" +# next to all the things you'll want to change. Once you've handled +# them, you can save this file and test your package like this: +# +# spack install plumed +# +# You can edit this file again by typing: +# +# spack edit plumed +# +# See the Spack documentation for more information on packaging. +# If you submit this package back to Spack as a pull request, +# please first remove this boilerplate and all FIXME comments. +# 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. - - 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. + molecular systems which works together with some of the most popular + molecular dynamics engines.""" - 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/archive/v2.2.3.tar.gz' + # FIXME: Add a proper url for your package's homepage here. + homepage = "http://www.plumed.org/home" + url = "https://github.com/plumed/plumed2" - version('2.2.3', 'a6e3863e40aac07eb8cf739cbd14ecf8') + version('2.2.3', git="https://github.com/plumed/plumed2.git", tag='v2.2.3') - variant('shared', default=True, description='Builds shared libraries') - variant('mpi', default=True, description='Activates MPI support') - variant('gsl', default=True, description='Activates GSL support') - - depends_on('zlib') - depends_on('blas') - depends_on('lapack') - - depends_on('mpi', when='+mpi') - depends_on('gsl', when='+gsl') - - # 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')) + # FIXME: Add additional dependencies if required. + depends_on('intelmpi') def install(self, spec, 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 = [ - 'CXX={0}'.format(spec['mpi'].mpicxx) - ] if '+mpi' in self.spec else [] - - configure_opts.extend([ - '--prefix={0}'.format(prefix), - '--enable-shared={0}'.format('yes' if '+shared' in spec else 'no'), - '--enable-mpi={0}'.format('yes' if '+mpi' in spec else 'no'), - '--enable-gsl={0}'.format('yes' if '+gsl' in spec else 'no') - ]) - - configure(*configure_opts) + # FIXME: Unknown build system make() make('install') -- cgit v1.2.3-60-g2f50 From 0d17d90b2923e7593268d69614f9ae4266bae08f Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 15 Aug 2016 10:45:19 -0400 Subject: packages: mark builddeps as type='build' --- var/spack/repos/builtin/packages/bpp-core/package.py | 2 +- var/spack/repos/builtin/packages/bpp-phyl/package.py | 2 +- var/spack/repos/builtin/packages/bpp-seq/package.py | 2 +- var/spack/repos/builtin/packages/bpp-suite/package.py | 2 +- var/spack/repos/builtin/packages/cp2k/package.py | 2 +- var/spack/repos/builtin/packages/parmetis/package.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/bpp-core/package.py b/var/spack/repos/builtin/packages/bpp-core/package.py index 40360a03b3..f716a2ee05 100644 --- a/var/spack/repos/builtin/packages/bpp-core/package.py +++ b/var/spack/repos/builtin/packages/bpp-core/package.py @@ -33,7 +33,7 @@ class BppCore(Package): version('2.2.0', '5789ed2ae8687d13664140cd77203477') - depends_on('cmake') + depends_on('cmake', type='build') def install(self, spec, prefix): cmake('-DBUILD_TESTING=FALSE', '.', *std_cmake_args) diff --git a/var/spack/repos/builtin/packages/bpp-phyl/package.py b/var/spack/repos/builtin/packages/bpp-phyl/package.py index 62db8d5545..4ff77f1540 100644 --- a/var/spack/repos/builtin/packages/bpp-phyl/package.py +++ b/var/spack/repos/builtin/packages/bpp-phyl/package.py @@ -33,7 +33,7 @@ class BppPhyl(Package): version('2.2.0', '5c40667ec0bf37e0ecaba321be932770') - depends_on('cmake') + depends_on('cmake', type='build') depends_on('bpp-core') depends_on('bpp-seq') diff --git a/var/spack/repos/builtin/packages/bpp-seq/package.py b/var/spack/repos/builtin/packages/bpp-seq/package.py index 7132c668b3..15c99da2b1 100644 --- a/var/spack/repos/builtin/packages/bpp-seq/package.py +++ b/var/spack/repos/builtin/packages/bpp-seq/package.py @@ -33,7 +33,7 @@ class BppSeq(Package): version('2.2.0', '44adef0ff4d5ca4e69ccf258c9270633') - depends_on('cmake') + depends_on('cmake', type='build') depends_on('bpp-core') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/bpp-suite/package.py b/var/spack/repos/builtin/packages/bpp-suite/package.py index 41e90e375d..ae8b7e6b1a 100644 --- a/var/spack/repos/builtin/packages/bpp-suite/package.py +++ b/var/spack/repos/builtin/packages/bpp-suite/package.py @@ -35,7 +35,7 @@ class BppSuite(Package): version('2.2.0', 'd8b29ad7ccf5bd3a7beb701350c9e2a4') # FIXME: Add dependencies if required. - depends_on('cmake') + depends_on('cmake', type='build') depends_on('texinfo') depends_on('bpp-core') depends_on('bpp-seq') diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 5f59286323..ce9675d300 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -42,7 +42,7 @@ class Cp2k(Package): variant('mpi', default=True, description='Enable MPI support') variant('plumed', default=False, description='Enable PLUMED support') - depends_on('python') # Build dependency + depends_on('python', type='build') depends_on('lapack') depends_on('blas') diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py index 2750df2bdb..8afae91af1 100644 --- a/var/spack/repos/builtin/packages/parmetis/package.py +++ b/var/spack/repos/builtin/packages/parmetis/package.py @@ -44,7 +44,7 @@ class Parmetis(Package): description='Builds the library in debug mode') variant('gdb', default=False, description='Enables gdb support') - depends_on('cmake@2.8:', type='build') # build dependency + depends_on('cmake@2.8:', type='build') depends_on('mpi') depends_on('metis@5:') -- cgit v1.2.3-60-g2f50 From eb13cbe9bdeca32f9c3cc4040e739c27bab2fc63 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 15 Aug 2016 10:46:05 -0400 Subject: r-datatable: fix nolink dependency --- var/spack/repos/builtin/packages/r-datatable/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/r-datatable/package.py b/var/spack/repos/builtin/packages/r-datatable/package.py index 8b50643341..fb0b2f1053 100644 --- a/var/spack/repos/builtin/packages/r-datatable/package.py +++ b/var/spack/repos/builtin/packages/r-datatable/package.py @@ -39,7 +39,7 @@ class RDatatable(Package): extends('R') - depends_on('r-chron') + depends_on('r-chron', type='nolink') def install(self, spec, prefix): R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir), -- cgit v1.2.3-60-g2f50 From 826732efec7ed605258106f9a3e3ae57344bbda9 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 15 Aug 2016 10:46:23 -0400 Subject: packages: mark builddeps as type='build' Less sure about these. --- var/spack/repos/builtin/packages/bpp-suite/package.py | 2 +- var/spack/repos/builtin/packages/ibmisc/package.py | 2 +- var/spack/repos/builtin/packages/openspeedshop/package.py | 6 +++--- var/spack/repos/builtin/packages/qt/package.py | 2 +- var/spack/repos/builtin/packages/texlive/package.py | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/bpp-suite/package.py b/var/spack/repos/builtin/packages/bpp-suite/package.py index ae8b7e6b1a..ef7f25a7ce 100644 --- a/var/spack/repos/builtin/packages/bpp-suite/package.py +++ b/var/spack/repos/builtin/packages/bpp-suite/package.py @@ -36,7 +36,7 @@ class BppSuite(Package): # FIXME: Add dependencies if required. depends_on('cmake', type='build') - depends_on('texinfo') + depends_on('texinfo', type='build') depends_on('bpp-core') depends_on('bpp-seq') depends_on('bpp-phyl') diff --git a/var/spack/repos/builtin/packages/ibmisc/package.py b/var/spack/repos/builtin/packages/ibmisc/package.py index 8e83058e94..736886df96 100644 --- a/var/spack/repos/builtin/packages/ibmisc/package.py +++ b/var/spack/repos/builtin/packages/ibmisc/package.py @@ -34,7 +34,7 @@ class Ibmisc(CMakePackage): depends_on('blitz', when='+blitz') depends_on('netcdf-cxx4', when='+netcdf') depends_on('udunits2', when='+udunits2') - depends_on('googletest', when='+googletest') + depends_on('googletest', when='+googletest', type='build') depends_on('py-cython', when='+python', type=nolink) depends_on('py-numpy', when='+python', type=nolink) depends_on('boost', when='+boost') diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 5e141060b2..270a4e68d8 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -104,9 +104,9 @@ class Openspeedshop(Package): depends_on("cmake@3.0.2", type='build') # Dependencies for openspeedshop that are common to all the variants of # the OpenSpeedShop build - depends_on("bison") - depends_on("flex") - depends_on("binutils@2.24+krellpatch") + depends_on("bison", type='build') + depends_on("flex", type='build') + depends_on("binutils@2.24+krellpatch", type='build') depends_on("libelf") depends_on("libdwarf") depends_on("sqlite") diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index e496a3e4d5..4239fa292b 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -65,7 +65,7 @@ class Qt(Package): # depends_on("gperf") # depends_on("flex", type='build') # depends_on("bison", type='build') - # depends_on("ruby") + # depends_on("ruby", type='build') # depends_on("icu4c") # OpenGL hardware acceleration diff --git a/var/spack/repos/builtin/packages/texlive/package.py b/var/spack/repos/builtin/packages/texlive/package.py index 64158e74cb..9b947787d2 100644 --- a/var/spack/repos/builtin/packages/texlive/package.py +++ b/var/spack/repos/builtin/packages/texlive/package.py @@ -47,7 +47,7 @@ class Texlive(Package): variant('scheme', default="small", description='Package subset to install (e.g. full, small, basic)') - depends_on('perl') + depends_on('perl', type='build') def install(self, spec, prefix): env = os.environ -- cgit v1.2.3-60-g2f50 From 042666eb7e17ab1222a0ae8edf194a8fcd8a89a9 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 15 Aug 2016 10:46:45 -0400 Subject: go: mark git as also being a runtime dependency --- var/spack/repos/builtin/packages/go/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index ff2c2f6781..259498c145 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -25,7 +25,7 @@ class Go(Package): # to-do, make non-c self-hosting compilers feasible without backflips # should be a dep on external go compiler depends_on('go-bootstrap', type='build') - depends_on('git') + depends_on('git', type='alldeps') def install(self, spec, prefix): bash = which('bash') -- cgit v1.2.3-60-g2f50 From 9ec1c0e18edc512a14e4e1085602793a7d141281 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 15 Aug 2016 10:47:00 -0400 Subject: opencv: make py-numpy a nolink dependency --- var/spack/repos/builtin/packages/opencv/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index 8f592342b0..03cc7ba427 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -76,7 +76,7 @@ class Opencv(Package): depends_on('vtk', when='+vtk') depends_on('qt', when='+qt') depends_on('jdk', when='+java') - depends_on('py-numpy', when='+python') + depends_on('py-numpy', when='+python', type='nolink') extends('python', when='+python') -- cgit v1.2.3-60-g2f50 From 27793d97dc18d235d4548d3f58176b60c70a2e40 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 15 Aug 2016 16:16:00 +0100 Subject: temp commit in current state --- var/spack/repos/builtin/packages/intelmpi/package.py | 6 ++++++ var/spack/repos/builtin/packages/plumed/package.py | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/intelmpi/package.py b/var/spack/repos/builtin/packages/intelmpi/package.py index 16cfbab260..7fec2a5832 100644 --- a/var/spack/repos/builtin/packages/intelmpi/package.py +++ b/var/spack/repos/builtin/packages/intelmpi/package.py @@ -11,6 +11,12 @@ class Intelmpi(Package): # Provides a virtual dependency 'mpi' provides('mpi') + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc')) + spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpic++')) + spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77')) + spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90')) + # def install(self, spec, prefix): # configure("--prefix=%s" % prefix) # make() diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index b179076b7f..58b3ba17c4 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -52,9 +52,10 @@ class Plumed(Package): version('2.2.3', git="https://github.com/plumed/plumed2.git", tag='v2.2.3') # FIXME: Add additional dependencies if required. - depends_on('intelmpi') + depends_on('mpi') def install(self, spec, prefix): - # FIXME: Unknown build system + configure("--prefix=" + prefix, + "--enable-mpi", + "-enable-modules=crystallization") make() - make('install') -- cgit v1.2.3-60-g2f50 From 1e673bfa42c16afe296de6bc1ce3559af96c10c1 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 15 Aug 2016 10:49:09 -0700 Subject: Don't assume spack is in the path when buildign docs. --- lib/spack/docs/conf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 3d2a8251aa..f3cb268177 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -51,7 +51,8 @@ os.environ['SPACK_ROOT'] = spack_root os.environ['PATH'] += os.pathsep + '$SPACK_ROOT/bin' spack_version = subprocess.Popen( - ['spack', '-V'], stderr=subprocess.PIPE).communicate()[1].strip().split('.') + [spack_root + '/bin/spack', '-V'], + stderr=subprocess.PIPE).communicate()[1].strip().split('.') # Set an environment variable so that colify will print output like it would to # a terminal. -- cgit v1.2.3-60-g2f50 From 37faa41b6f1160de5e15d13fafdcefe42cb40bde Mon Sep 17 00:00:00 2001 From: Nicolas Richart Date: Mon, 15 Aug 2016 21:13:25 +0200 Subject: stripping the links to remove spaces and '\n' --- lib/spack/spack/util/web.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index 25f1e605d6..29ed6e0d32 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -109,7 +109,7 @@ def _spider(args): while link_parser.links: raw_link = link_parser.links.pop() - abs_link = urlparse.urljoin(response_url, raw_link) + abs_link = urlparse.urljoin(response_url, raw_link.strip()) links.add(abs_link) -- cgit v1.2.3-60-g2f50 From bd8aab00e4c2ab00938e2d2658989d87b1f871f4 Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Thu, 28 Jul 2016 13:17:06 -0700 Subject: updated stat and added pygtk and dependent packages --- .../repos/builtin/packages/dyninst/package.py | 3 ++ var/spack/repos/builtin/packages/glib/package.py | 3 ++ .../packages/gobject-introspection/package.py | 48 +++++++++++++++++++++ .../repos/builtin/packages/graphlib/package.py | 5 ++- .../repos/builtin/packages/py-py2cairo/package.py | 46 ++++++++++++++++++++ .../repos/builtin/packages/py-pygobject/package.py | 49 ++++++++++++++++++++++ .../pygobject-2.28.6-introspection-1.patch | 35 ++++++++++++++++ .../repos/builtin/packages/py-pygtk/package.py | 47 +++++++++++++++++++++ var/spack/repos/builtin/packages/stat/package.py | 18 ++++++-- 9 files changed, 249 insertions(+), 5 deletions(-) create mode 100644 var/spack/repos/builtin/packages/gobject-introspection/package.py create mode 100644 var/spack/repos/builtin/packages/py-py2cairo/package.py create mode 100644 var/spack/repos/builtin/packages/py-pygobject/package.py create mode 100644 var/spack/repos/builtin/packages/py-pygobject/pygobject-2.28.6-introspection-1.patch create mode 100644 var/spack/repos/builtin/packages/py-pygtk/package.py diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 90c83bdc3a..856bd26d66 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -28,10 +28,13 @@ from spack import * class Dyninst(Package): """API for dynamic binary instrumentation. Modify programs while they are executing without recompiling, re-linking, or re-executing.""" + homepage = "https://paradyn.org" url = "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1.2/DyninstAPI-8.1.2.tgz" list_url = "http://www.dyninst.org/downloads/dyninst-8.x" + version('9.2.0', 'ad023f85e8e57837ed9de073b59d6bab', + url="https://github.com/dyninst/dyninst/archive/v9.2.0.tar.gz") version('9.1.0', '5c64b77521457199db44bec82e4988ac', url="http://www.paradyn.org/release9.1.0/DyninstAPI-9.1.0.tgz") version('8.2.1', 'abf60b7faabe7a2e4b54395757be39c7', diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index 2720831e4f..15e89afc43 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -30,11 +30,14 @@ class Glib(Package): providing data structure handling for C, portability wrappers and interfaces for such runtime functionality as an event loop, threads, dynamic loading and an object system.""" + homepage = "https://developer.gnome.org/glib/" url = "http://ftp.gnome.org/pub/gnome/sources/glib/2.42/glib-2.42.1.tar.xz" version('2.49.4', 'e2c87c03017b0cd02c4c73274b92b148') version('2.42.1', '89c4119e50e767d3532158605ee9121a') + version('2.48.1', '67bd3b75c9f6d5587b457dc01cdcd5bb', + url='http://ftp.gnome.org/pub/GNOME/sources/glib/2.48/glib-2.48.1.tar.xz') depends_on('libffi') depends_on('zlib') diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py new file mode 100644 index 0000000000..a1efdbe2b4 --- /dev/null +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 GobjectIntrospection(Package): + """The GObject Introspection is used to describe the program APIs and + collect them in a uniform, machine readable format.Cairo is a 2D graphics + library with support for multiple output""" + + homepage = "https://wiki.gnome.org/Projects/GObjectIntrospection" + url = "http://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.48/gobject-introspection-1.48.0.tar.xz" + + version('1.48.0', '01301fa9019667d48e927353e08bc218') + + depends_on("glib") + depends_on("python") + depends_on("cairo") + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix) + # we need to filter this file to avoid an overly long hashbang line + filter_file('@PYTHON@', 'python', + 'tools/g-ir-tool-template.in') + make() + make("install") diff --git a/var/spack/repos/builtin/packages/graphlib/package.py b/var/spack/repos/builtin/packages/graphlib/package.py index 0c3cd9b649..1e0eb2bf3b 100644 --- a/var/spack/repos/builtin/packages/graphlib/package.py +++ b/var/spack/repos/builtin/packages/graphlib/package.py @@ -27,10 +27,11 @@ from spack import * class Graphlib(Package): """Library to create, manipulate, and export graphs Graphlib.""" - homepage = "http://https://github.com/lee218llnl/graphlib" - url = "https://github.com/lee218llnl/graphlib/archive/v2.0.0.tar.gz" + homepage = "https://github.com/LLNL/graphlib" + url = "https://github.com/LLNL/graphlib/archive/v2.0.0.tar.gz" version('2.0.0', '43c6df84f1d38ba5a5dce0ae19371a70') + version('3.0.0', '625d199f97ab1b84cbc8daabcaee5e2a') depends_on('cmake', type='build') diff --git a/var/spack/repos/builtin/packages/py-py2cairo/package.py b/var/spack/repos/builtin/packages/py-py2cairo/package.py new file mode 100644 index 0000000000..131e8986f2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-py2cairo/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 * +import re + + +class PyPy2cairo(Package): + """bindings for the Cairo for Python 2, + to be used in Python.""" + + homepage = "https://pypi.python.org/pypi/pycairo" + url = "https://cairographics.org/releases/py2cairo-1.10.0.tar.bz2" + + version('1.10.0', '20337132c4ab06c1146ad384d55372c5') + + extends('python') + depends_on("cairo") + depends_on("pixman") + + def install(self, spec, prefix): + python('waf', 'configure', '--prefix=%s' % prefix) + python('waf', 'build') + python('waf', 'install') + diff --git a/var/spack/repos/builtin/packages/py-pygobject/package.py b/var/spack/repos/builtin/packages/py-pygobject/package.py new file mode 100644 index 0000000000..73eb47138d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pygobject/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 * +import re + + +class PyPygobject(Package): + """bindings for the GLib, and GObject, + to be used in Python.""" + + homepage = "https://pypi.python.org/pypi/pygobject" + url = "https://pypi.python.org/packages/6d/15/97c8b5ccca2be14cf59a2f79e15e3a82a1c3408a6b76b4107689a8b94846/pygobject-2.28.3.tar.bz2" + + version('2.28.3', 'aa64900b274c4661a5c32e52922977f9') + + extends('python') + depends_on("libffi") + depends_on('glib') + depends_on('py-py2cairo') + depends_on('gobject-introspection') + + patch('pygobject-2.28.6-introspection-1.patch') + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix) + make() + make("install", parallel=False) diff --git a/var/spack/repos/builtin/packages/py-pygobject/pygobject-2.28.6-introspection-1.patch b/var/spack/repos/builtin/packages/py-pygobject/pygobject-2.28.6-introspection-1.patch new file mode 100644 index 0000000000..ef96ba3352 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pygobject/pygobject-2.28.6-introspection-1.patch @@ -0,0 +1,35 @@ +Submitted By: Andrew Benton +Date: 2012-03-29 +Initial Package Version: 2.28.6 +Upstream Status: not submitted +Origin: me +Description: Fixes compiling with a recent version of gobject-introspection + +--- pygobject-2.28.6/gi/pygi-info.c-orig 2012-03-29 02:27:37.494228732 +0100 ++++ pygobject-2.28.6/gi/pygi-info.c 2012-03-29 02:26:37.735132310 +0100 +@@ -162,9 +162,6 @@ + case GI_INFO_TYPE_CONSTANT: + type = &PyGIConstantInfo_Type; + break; +- case GI_INFO_TYPE_ERROR_DOMAIN: +- type = &PyGIErrorDomainInfo_Type; +- break; + case GI_INFO_TYPE_UNION: + type = &PyGIUnionInfo_Type; + break; +@@ -481,7 +478,6 @@ + case GI_INFO_TYPE_INVALID: + case GI_INFO_TYPE_FUNCTION: + case GI_INFO_TYPE_CONSTANT: +- case GI_INFO_TYPE_ERROR_DOMAIN: + case GI_INFO_TYPE_VALUE: + case GI_INFO_TYPE_SIGNAL: + case GI_INFO_TYPE_PROPERTY: +@@ -860,7 +856,6 @@ + case GI_INFO_TYPE_INVALID: + case GI_INFO_TYPE_FUNCTION: + case GI_INFO_TYPE_CONSTANT: +- case GI_INFO_TYPE_ERROR_DOMAIN: + case GI_INFO_TYPE_VALUE: + case GI_INFO_TYPE_SIGNAL: + case GI_INFO_TYPE_PROPERTY: diff --git a/var/spack/repos/builtin/packages/py-pygtk/package.py b/var/spack/repos/builtin/packages/py-pygtk/package.py new file mode 100644 index 0000000000..359b844a72 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pygtk/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 * +import re + + +class PyPygtk(Package): + """bindings for the Gtk in Python""" + homepage = "http://www.pygtk.org/" + url = "http://ftp.gnome.org/pub/GNOME/sources/pygtk/2.24/pygtk-2.24.0.tar.gz" + + version('2.24.0', 'd27c7f245a9e027f6b6cd9acb7468e36') + + extends('python') + depends_on("libffi") + depends_on('cairo') + depends_on('glib') + depends_on('gtkplus') + depends_on('py-pygobject') + depends_on('py-py2cairo') + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix) + make() + make("install", parallel=False) diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index ec2fae5e9b..32ea8aef54 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -27,22 +27,34 @@ from spack import * class Stat(Package): """Library to create, manipulate, and export graphs Graphlib.""" + homepage = "http://paradyn.org/STAT/STAT.html" url = "https://github.com/lee218llnl/stat/archive/v2.0.0.tar.gz" version('2.2.0', '26bd69dd57a15afdd5d0ebdb0b7fb6fc') version('2.1.0', 'ece26beaf057aa9134d62adcdda1ba91') version('2.0.0', 'c7494210b0ba26b577171b92838e1a9b') + version('3.0.0b', '31df1c2e56ce6ab2a0fe963cd47b769a', url='https://github.com/LLNL/STAT/files/382650/STAT-3.0.0b.tar.gz') + # TODO: dysect requires Dyninst patch for version 3.0.0b variant('dysect', default=False, description="enable DySectAPI") + variant('examples', default=False, description="enable examples") + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') depends_on('libelf') depends_on('libdwarf') depends_on('dyninst') - depends_on('graphlib') + depends_on('graphlib@2.0.0', when='@2.0.0:2.2.0') + depends_on('graphlib@3.0.0', when='@3:') depends_on('graphviz', type=alldeps) depends_on('launchmon') depends_on('mrnet') + depends_on('python') + depends_on('py-pygtk') + depends_on('swig') + depends_on('mpi', when='+examples') patch('configure_mpicxx.patch', when='@2.1.0') @@ -50,8 +62,6 @@ class Stat(Package): configure_args = [ "--enable-gui", "--prefix=%s" % prefix, - # Examples require MPI: avoid this dependency. - "--disable-examples", "--with-launchmon=%s" % spec['launchmon'].prefix, "--with-mrnet=%s" % spec['mrnet'].prefix, "--with-graphlib=%s" % spec['graphlib'].prefix, @@ -60,6 +70,8 @@ class Stat(Package): ] if '+dysect' in spec: configure_args.append('--enable-dysectapi') + if '~examples' in spec: + configure_args.append('--disable-examples') configure(*configure_args) make(parallel=False) -- cgit v1.2.3-60-g2f50 From 8b949376092e66d415bad473331dbc08eaa2e021 Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Thu, 28 Jul 2016 13:49:35 -0700 Subject: flake 8 fixes for stat and dependents flake 8 fixes for dyninst flake 8 fixes for dyninst flake 8 fixes for dyninst --- var/spack/repos/builtin/packages/dyninst/package.py | 4 ++-- var/spack/repos/builtin/packages/py-py2cairo/package.py | 2 -- var/spack/repos/builtin/packages/py-pygobject/package.py | 1 - var/spack/repos/builtin/packages/py-pygtk/package.py | 1 - var/spack/repos/builtin/packages/stat/package.py | 3 ++- 5 files changed, 4 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 856bd26d66..997f012992 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -30,7 +30,7 @@ class Dyninst(Package): are executing without recompiling, re-linking, or re-executing.""" homepage = "https://paradyn.org" - url = "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1.2/DyninstAPI-8.1.2.tgz" + url = "https://github.com/dyninst/dyninst/archive/v9.2.0.tar.gz" list_url = "http://www.dyninst.org/downloads/dyninst-8.x" version('9.2.0', 'ad023f85e8e57837ed9de073b59d6bab', @@ -50,7 +50,7 @@ class Dyninst(Package): depends_on('cmake', type='build') # new version uses cmake - def install(self, spec, prefix): + def install(self, spec, prefix): # NOQA: ignore=F811 libelf = spec['libelf'].prefix libdwarf = spec['libdwarf'].prefix diff --git a/var/spack/repos/builtin/packages/py-py2cairo/package.py b/var/spack/repos/builtin/packages/py-py2cairo/package.py index 131e8986f2..efc3645745 100644 --- a/var/spack/repos/builtin/packages/py-py2cairo/package.py +++ b/var/spack/repos/builtin/packages/py-py2cairo/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import re class PyPy2cairo(Package): @@ -43,4 +42,3 @@ class PyPy2cairo(Package): python('waf', 'configure', '--prefix=%s' % prefix) python('waf', 'build') python('waf', 'install') - diff --git a/var/spack/repos/builtin/packages/py-pygobject/package.py b/var/spack/repos/builtin/packages/py-pygobject/package.py index 73eb47138d..3af849e758 100644 --- a/var/spack/repos/builtin/packages/py-pygobject/package.py +++ b/var/spack/repos/builtin/packages/py-pygobject/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import re class PyPygobject(Package): diff --git a/var/spack/repos/builtin/packages/py-pygtk/package.py b/var/spack/repos/builtin/packages/py-pygtk/package.py index 359b844a72..ab0a139f02 100644 --- a/var/spack/repos/builtin/packages/py-pygtk/package.py +++ b/var/spack/repos/builtin/packages/py-pygtk/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import re class PyPygtk(Package): diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index 32ea8aef54..859f570266 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -34,7 +34,8 @@ class Stat(Package): version('2.2.0', '26bd69dd57a15afdd5d0ebdb0b7fb6fc') version('2.1.0', 'ece26beaf057aa9134d62adcdda1ba91') version('2.0.0', 'c7494210b0ba26b577171b92838e1a9b') - version('3.0.0b', '31df1c2e56ce6ab2a0fe963cd47b769a', url='https://github.com/LLNL/STAT/files/382650/STAT-3.0.0b.tar.gz') + version('3.0.0b', '31df1c2e56ce6ab2a0fe963cd47b769a', + url='https://github.com/LLNL/STAT/files/382650/STAT-3.0.0b.tar.gz') # TODO: dysect requires Dyninst patch for version 3.0.0b variant('dysect', default=False, description="enable DySectAPI") -- cgit v1.2.3-60-g2f50 From 0074ecd6fa31707bc56a79ac2c9d378fd308d0f4 Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Fri, 29 Jul 2016 14:26:30 -0700 Subject: dyninst package use spec.satisfies instead of @when --- var/spack/repos/builtin/packages/dyninst/package.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 997f012992..5f4ae2e9d6 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -50,7 +50,13 @@ class Dyninst(Package): depends_on('cmake', type='build') # new version uses cmake - def install(self, spec, prefix): # NOQA: ignore=F811 + def install(self, spec, prefix): + if spec.satisfies('@:8.1'): + configure("--prefix=" + prefix) + make() + make("install") + return + libelf = spec['libelf'].prefix libdwarf = spec['libdwarf'].prefix -- cgit v1.2.3-60-g2f50 From f9cb21e8868ebf7555c715e353a5ec6bec4aad39 Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Fri, 29 Jul 2016 15:42:16 -0700 Subject: flake 8 fixes for dyninst --- var/spack/repos/builtin/packages/dyninst/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 5f4ae2e9d6..55c319165f 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -56,7 +56,7 @@ class Dyninst(Package): make() make("install") return - + libelf = spec['libelf'].prefix libdwarf = spec['libdwarf'].prefix -- cgit v1.2.3-60-g2f50 From 69931996bf88a74fb256ee778691ec775963e904 Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Mon, 8 Aug 2016 16:02:33 -0700 Subject: added dyninst patches for stat+dysect --- .../repos/builtin/packages/dyninst/package.py | 6 ++ .../builtin/packages/dyninst/stackanalysis_h.patch | 11 +++ .../builtin/packages/dyninst/stat_dysect.patch | 96 ++++++++++++++++++++++ var/spack/repos/builtin/packages/stat/package.py | 7 +- 4 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin/packages/dyninst/stackanalysis_h.patch create mode 100644 var/spack/repos/builtin/packages/dyninst/stat_dysect.patch diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 55c319165f..3df7ca551d 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -44,11 +44,17 @@ class Dyninst(Package): version('8.1.1', 'd1a04e995b7aa70960cd1d1fac8bd6ac', url="http://www.paradyn.org/release8.1/DyninstAPI-8.1.1.tgz") + variant('stat_dysect', default=False, + description="patch for STAT's DySectAPI") + depends_on("libelf") depends_on("libdwarf") depends_on("boost@1.42:") depends_on('cmake', type='build') + patch('stat_dysect.patch', when='+stat_dysect') + patch('stackanalysis_h.patch', when='@9.2.0') + # new version uses cmake def install(self, spec, prefix): if spec.satisfies('@:8.1'): diff --git a/var/spack/repos/builtin/packages/dyninst/stackanalysis_h.patch b/var/spack/repos/builtin/packages/dyninst/stackanalysis_h.patch new file mode 100644 index 0000000000..2c04d935d9 --- /dev/null +++ b/var/spack/repos/builtin/packages/dyninst/stackanalysis_h.patch @@ -0,0 +1,11 @@ +--- a/dataflowAPI/h/stackanalysis.h 2016-06-29 14:54:14.000000000 -0700 ++++ b/dataflowAPI/h/stackanalysis.h 2016-08-02 09:50:13.619079000 -0700 +@@ -331,7 +331,7 @@ + + // To build intervals, we must replay the effect of each instruction. + // To avoid sucking enormous time, we keep those transfer functions around... +- typedef std::map> ++ typedef std::map > + InstructionEffects; + + DATAFLOW_EXPORT StackAnalysis(); diff --git a/var/spack/repos/builtin/packages/dyninst/stat_dysect.patch b/var/spack/repos/builtin/packages/dyninst/stat_dysect.patch new file mode 100644 index 0000000000..c15403683f --- /dev/null +++ b/var/spack/repos/builtin/packages/dyninst/stat_dysect.patch @@ -0,0 +1,96 @@ +From 3aebb41ce0ea5b578a1ebf6810446c660066c525 Mon Sep 17 00:00:00 2001 +From: Jesper Puge Nielsen +Date: Wed, 12 Aug 2015 21:07:52 -0700 +Subject: [PATCH] =?UTF-8?q?Exposed=20stackwalker=20and=20proc=20callback=20status=20to=20DySect +=20=C3c?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + dyninstAPI/h/BPatch_process.h | 13 +++++++++++++ + dyninstAPI/src/BPatch_process.C | 18 ++++++++++++++++++ + dyninstAPI/src/dynProcess.h | 3 ++- + 3 files changed, 33 insertions(+), 1 deletions(-) + +diff --git a/dyninstAPI/h/BPatch_process.h b/dyninstAPI/h/BPatch_process.h +index 5e01bbb..1316bb2 100644 +--- a/dyninstAPI/h/BPatch_process.h ++++ b/dyninstAPI/h/BPatch_process.h +@@ -225,6 +225,10 @@ class BPATCH_DLL_EXPORT BPatch_process : public BPatch_addressSpace { + // + // this function should go away as soon as Paradyn links against Dyninst + PCProcess *lowlevel_process() const { return llproc; } ++ ++ // Expose walker from Dyninst proces ++ void *get_walker() const; ++ + // These internal funcs trigger callbacks registered to matching events + bool triggerStopThread(instPoint *intPoint, func_instance *intFunc, + int cb_ID, void *retVal); +@@ -281,6 +285,15 @@ class BPATCH_DLL_EXPORT BPatch_process : public BPatch_addressSpace { + + bool continueExecution(); + ++ // BPatch_process::keepStopped ++ // ++ // Changes the desired process stat to prevent ++ // Dyninst from resuming the process after ++ // handling the current event. ++ // Must be called from an event handler. ++ ++ void keepStopped(); ++ + // BPatch_process::terminateExecution + // + // Terminate mutatee process +diff --git a/dyninstAPI/src/BPatch_process.C b/dyninstAPI/src/BPatch_process.C +index 115f215..809e797 100644 +--- a/dyninstAPI/src/BPatch_process.C ++++ b/dyninstAPI/src/BPatch_process.C +@@ -507,6 +507,19 @@ bool BPatch_process::continueExecution() + } + + /* ++ * BPatch_process::keepStopped ++ * ++ * Changes the desired process stat to prevent ++ * Dyninst from resuming the process after ++ * handling the current event. ++ * Must be called from an event handler. ++ */ ++void BPatch_process::keepStopped() ++{ ++ llproc->setDesiredProcessState(PCProcess::ps_stopped); ++} ++ ++/* + * BPatch_process::terminateExecution + * + * Kill the thread. +@@ -1754,3 +1767,8 @@ bool BPatch_process::protectAnalyzedCode() + } + return ret; + } ++ ++void *BPatch_process::get_walker() const ++{ ++ return llproc->get_walker(); ++} +diff --git a/dyninstAPI/src/dynProcess.h b/dyninstAPI/src/dynProcess.h +index 54b0c6e..00721d1 100644 +--- a/dyninstAPI/src/dynProcess.h ++++ b/dyninstAPI/src/dynProcess.h +@@ -302,7 +302,8 @@ public: + // Stackwalking internals + bool walkStack(pdvector &stackWalk, PCThread *thread); + bool getActiveFrame(Frame &frame, PCThread *thread); +- ++ Dyninst::Stackwalker::Walker *get_walker() { return stackwalker_; } ++ + void addSignalHandler(Address, unsigned); + bool isInSignalHandler(Address addr); + +-- +1.7.1 + diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index 859f570266..7c54f22251 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -34,8 +34,8 @@ class Stat(Package): version('2.2.0', '26bd69dd57a15afdd5d0ebdb0b7fb6fc') version('2.1.0', 'ece26beaf057aa9134d62adcdda1ba91') version('2.0.0', 'c7494210b0ba26b577171b92838e1a9b') - version('3.0.0b', '31df1c2e56ce6ab2a0fe963cd47b769a', - url='https://github.com/LLNL/STAT/files/382650/STAT-3.0.0b.tar.gz') + version('3.0.0b', '4977afd3de2d444a5e1b1fc3b26a38c6', + url='https://github.com/LLNL/STAT/files/397809/STAT-3.0.0b.tar.gz') # TODO: dysect requires Dyninst patch for version 3.0.0b variant('dysect', default=False, description="enable DySectAPI") @@ -46,7 +46,8 @@ class Stat(Package): depends_on('libtool', type='build') depends_on('libelf') depends_on('libdwarf') - depends_on('dyninst') + depends_on('dyninst', when='~dysect') + depends_on('dyninst@8.2.1+stat_dysect', when='+dysect') depends_on('graphlib@2.0.0', when='@2.0.0:2.2.0') depends_on('graphlib@3.0.0', when='@3:') depends_on('graphviz', type=alldeps) -- cgit v1.2.3-60-g2f50 From 3df208efc0a6a7c7ee74e8a21dcfd999dcc1aa53 Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Tue, 9 Aug 2016 21:16:39 -0700 Subject: stat and dependences package updates --- var/spack/repos/builtin/packages/glib/package.py | 5 ++--- var/spack/repos/builtin/packages/launchmon/package.py | 2 ++ var/spack/repos/builtin/packages/stat/package.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index 15e89afc43..94ef95e7ab 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -35,15 +35,14 @@ class Glib(Package): url = "http://ftp.gnome.org/pub/gnome/sources/glib/2.42/glib-2.42.1.tar.xz" version('2.49.4', 'e2c87c03017b0cd02c4c73274b92b148') + version('2.48.1', '67bd3b75c9f6d5587b457dc01cdcd5bb') version('2.42.1', '89c4119e50e767d3532158605ee9121a') - version('2.48.1', '67bd3b75c9f6d5587b457dc01cdcd5bb', - url='http://ftp.gnome.org/pub/GNOME/sources/glib/2.48/glib-2.48.1.tar.xz') depends_on('libffi') depends_on('zlib') depends_on('pkg-config', type='build') depends_on('gettext') - depends_on('pcre+utf', when='@2.49:') + depends_on('pcre+utf', when='@2.48:') # The following patch is needed for gcc-6.1 patch('g_date_strftime.patch', when='@2.42.1') diff --git a/var/spack/repos/builtin/packages/launchmon/package.py b/var/spack/repos/builtin/packages/launchmon/package.py index d7c96a03d8..c2b289da4f 100644 --- a/var/spack/repos/builtin/packages/launchmon/package.py +++ b/var/spack/repos/builtin/packages/launchmon/package.py @@ -36,6 +36,8 @@ class Launchmon(Package): depends_on('autoconf', type='build') depends_on('automake', type='build') depends_on('libtool', type='build') + depends_on('libgcrypt') + depends_on('libgpg-error') def install(self, spec, prefix): configure( diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index 7c54f22251..db28c35c0f 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -34,8 +34,8 @@ class Stat(Package): version('2.2.0', '26bd69dd57a15afdd5d0ebdb0b7fb6fc') version('2.1.0', 'ece26beaf057aa9134d62adcdda1ba91') version('2.0.0', 'c7494210b0ba26b577171b92838e1a9b') - version('3.0.0b', '4977afd3de2d444a5e1b1fc3b26a38c6', - url='https://github.com/LLNL/STAT/files/397809/STAT-3.0.0b.tar.gz') + version('3.0.0b', '653f961192e84f4611cabbe31c4dcd89', + url='https://github.com/LLNL/STAT/files/410276/STAT-3.0.0b.tar.gz') # TODO: dysect requires Dyninst patch for version 3.0.0b variant('dysect', default=False, description="enable DySectAPI") -- cgit v1.2.3-60-g2f50 From 749a4e78c73139ab7a884b68a9956a184dd93dfa Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Wed, 10 Aug 2016 10:12:13 -0700 Subject: gobject-introspection requires glib version 2.48.1 --- var/spack/repos/builtin/packages/gobject-introspection/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index a1efdbe2b4..02ec87826d 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -35,7 +35,8 @@ class GobjectIntrospection(Package): version('1.48.0', '01301fa9019667d48e927353e08bc218') - depends_on("glib") + # version 1.48.0 build fails with glib 2.49.4 + depends_on("glib@2.48.1") depends_on("python") depends_on("cairo") -- cgit v1.2.3-60-g2f50 From 74dd7a36b58e3f18dd3c654ddab82737bb8c5f7c Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Wed, 10 Aug 2016 10:12:46 -0700 Subject: allow parallel build of stat --- var/spack/repos/builtin/packages/stat/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index db28c35c0f..20c6ee984f 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -76,5 +76,4 @@ class Stat(Package): configure_args.append('--disable-examples') configure(*configure_args) - make(parallel=False) make("install") -- cgit v1.2.3-60-g2f50 From 54ef9443d3e357a595040f6b684aa371c10432bf Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Wed, 10 Aug 2016 10:36:01 -0700 Subject: fix atk url_for_version --- var/spack/repos/builtin/packages/atk/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py index d5b6933ec3..0a7d48774d 100644 --- a/var/spack/repos/builtin/packages/atk/package.py +++ b/var/spack/repos/builtin/packages/atk/package.py @@ -42,7 +42,7 @@ class Atk(Package): def url_for_version(self, version): """Handle atk's version-based custom URLs.""" url = 'http://ftp.gnome.org/pub/gnome/sources/atk' - return 'url+/%s/atk-%s.tar.xz' % (version.up_to(2), version) + return url + '/%s/atk-%s.tar.xz' % (version.up_to(2), version) def install(self, spec, prefix): configure("--prefix=%s" % prefix) -- cgit v1.2.3-60-g2f50 From f182590aae0ec228eab44b99f5f0aceccda88084 Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Mon, 15 Aug 2016 15:17:53 -0700 Subject: added pkg-config to build deps of cairo and pixman --- var/spack/repos/builtin/packages/cairo/package.py | 1 + var/spack/repos/builtin/packages/pixman/package.py | 1 + 2 files changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/cairo/package.py b/var/spack/repos/builtin/packages/cairo/package.py index ddb8d2fd03..b2911e126a 100644 --- a/var/spack/repos/builtin/packages/cairo/package.py +++ b/var/spack/repos/builtin/packages/cairo/package.py @@ -37,6 +37,7 @@ class Cairo(Package): depends_on("glib") depends_on("pixman") depends_on("freetype") + depends_on("pkg-config", type="build") depends_on("fontconfig@2.10.91:") # Require newer version of fontconfig. def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py index 3d7e332a3f..39041587f5 100644 --- a/var/spack/repos/builtin/packages/pixman/package.py +++ b/var/spack/repos/builtin/packages/pixman/package.py @@ -34,6 +34,7 @@ class Pixman(Package): version('0.32.6', '3a30859719a41bd0f5cccffbfefdd4c2') + depends_on("pkg-config", type="build") depends_on("libpng") def install(self, spec, prefix): -- cgit v1.2.3-60-g2f50 From 9509c1006451b14e42df364ba61eb5f412d5ae3a Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 16 Aug 2016 19:38:38 +0200 Subject: octopus: new package --- .../repos/builtin/packages/octopus/package.py | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 var/spack/repos/builtin/packages/octopus/package.py diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py new file mode 100644 index 0000000000..6fa2e0368f --- /dev/null +++ b/var/spack/repos/builtin/packages/octopus/package.py @@ -0,0 +1,86 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Octopus(Package): + """A real-space finite-difference (time-dependent) density-functional + theory code.""" + + homepage = "http://www.tddft.org/programs/octopus/" + url = "http://www.tddft.org/programs/octopus/down.php?file=5.0.1/octopus-5.0.1.tar.gz" + + version('5.0.1', '2b6392ab67b843f9d4ca7413fc07e822') + + depends_on('blas') + depends_on('gsl') + depends_on('lapack') + depends_on('libxc') + depends_on('mpi') + depends_on('fftw+mpi') + + # optional dependencies: + # TODO: scalapack, metis, parmetis, netcdf, etsf_io, SPARSKIT, ARPACK, + # FEAST, Libfm, PFFT, ISF, PNFFT + + def install(self, spec, prefix): + args = [] + args.extend([ + '--prefix=%s' % prefix, + '--with-blas=%s' % to_link_flags( + spec['blas'].blas_shared_lib), + '--with-lapack=%s' % to_link_flags( + spec['lapack'].lapack_shared_lib), + '--with-gsl-prefix=%s' % spec['gsl'].prefix, + '--with-libxc-prefix=%s' % spec['libxc'].prefix, + 'CC=%s' % spec['mpi'].mpicc, + 'FC=%s' % spec['mpi'].mpifc, + '--enable-mpi', + '--with-fft-lib=-L%s -lfftw3' % spec['fftw'].prefix.lib + # --with-blacs=${prefix}/lib/libscalapack.dylib + # --with-netcdf-prefix=netcdf-fortran + # --with-etsf-io-prefix= + # --with-sparskit=${prefix}/lib/libskit.a + # --with-pfft-prefix=${prefix} --with-mpifftw-prefix=${prefix} + # --with-arpack=${prefix}/lib/libarpack.dylib + # --with-parpack=${prefix}/lib/libparpack.dylib + # --with-metis-prefix=${prefix} --with-parmetis-prefix=${prefix} + # --with-berkeleygw-prefix=${prefix} + ]) + + # Supposedly configure does not pick up the required flags for gfortran + # Without it there are: + # Error: Line truncated @ global.F90:157:132 + # Error: Unterminated character constant @ global.F90:157:20 + if spec.satisfies('%clang') or spec.satisfies('%gcc'): + args.extend([ + 'FCFLAGS=-O2 -ffree-line-length-none' + ]) + + configure(*args) + make() + # short tests take forever... + # make('check-short') + make('install') -- cgit v1.2.3-60-g2f50 From 5dcc0f7802428b59a760210f0d76a50c8a3b749c Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 8 Aug 2016 09:51:45 +0200 Subject: ape: add new package --- var/spack/repos/builtin/packages/ape/package.py | 55 +++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ape/package.py diff --git a/var/spack/repos/builtin/packages/ape/package.py b/var/spack/repos/builtin/packages/ape/package.py new file mode 100644 index 0000000000..b1647798b5 --- /dev/null +++ b/var/spack/repos/builtin/packages/ape/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Ape(Package): + """A tool for generating atomic pseudopotentials within a Density-Functional + Theory framework""" + + homepage = "http://www.tddft.org/programs/APE/" + url = "http://www.tddft.org/programs/APE/sites/default/files/ape-2.2.1.tar.gz" + + version('2.2.1', 'ab81da85bd749c0c136af088c7f9ad58') + + depends_on('gsl') + depends_on('libxc') + + def install(self, spec, prefix): + args = [] + args.extend([ + '--prefix=%s' % prefix, + '--with-gsl-prefix=%s' % spec['gsl'].prefix, + '--with-libxc-prefix=%s' % spec['libxc'].prefix + ]) + + if spec.satisfies('%clang') or spec.satisfies('%gcc'): + args.extend([ + 'FCFLAGS=-O2 -ffree-line-length-none' + ]) + + configure(*args) + make() + make('install') -- cgit v1.2.3-60-g2f50 From b99e945e6da8f3e38090fe8e30f21bf105449240 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Wed, 17 Aug 2016 15:43:59 +0100 Subject: Added variants and dependencies to plumed but I'm getting an error when trying to resolve mpi to a valid virtual package --- etc/spack/packages.yaml | 5 +- .../repos/builtin/packages/intelmpi/package.py | 31 +++++++++++ var/spack/repos/builtin/packages/plumed/package.py | 61 +++++++++++++++------- 3 files changed, 76 insertions(+), 21 deletions(-) diff --git a/etc/spack/packages.yaml b/etc/spack/packages.yaml index 41d8c5f9f6..e89562e8d2 100644 --- a/etc/spack/packages.yaml +++ b/etc/spack/packages.yaml @@ -1,5 +1,8 @@ packages: intelmpi: paths: - intelmpi@4.1.0%gcc@4.4.7 arch=linux-x86_64: /software/compilers/intel/13.0/impi/4.1.0.024 + intelmpi@4.1.0%gcc@4.4.7 arch=linux-x86_64: /software/compilers/intel/13.0/impi/4.1.0.024/intel64 buildable: False + all: + providers: + mpi: [intelmpi, openmpi] diff --git a/var/spack/repos/builtin/packages/intelmpi/package.py b/var/spack/repos/builtin/packages/intelmpi/package.py index 7fec2a5832..6750ee695a 100644 --- a/var/spack/repos/builtin/packages/intelmpi/package.py +++ b/var/spack/repos/builtin/packages/intelmpi/package.py @@ -1,3 +1,27 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Intelmpi(Package): @@ -17,6 +41,13 @@ class Intelmpi(Package): spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77')) spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90')) + def setup_dependent_package(self, module, dep_spec): + self.spec.mpicc = join_path(self.prefix.bin, 'mpicc') + self.spec.mpicxx = join_path(self.prefix.bin, 'mpic++') + self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') + self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') + self.spec.cppflags = '-DMPICH_IGNORE_CXX_SEEK' + # def install(self, spec, prefix): # configure("--prefix=%s" % prefix) # make() diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 58b3ba17c4..023de82b9b 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -22,21 +22,6 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -# -# This is a template package file for Spack. We've put "FIXME" -# next to all the things you'll want to change. Once you've handled -# them, you can save this file and test your package like this: -# -# spack install plumed -# -# You can edit this file again by typing: -# -# spack edit plumed -# -# See the Spack documentation for more information on packaging. -# If you submit this package back to Spack as a pull request, -# please first remove this boilerplate and all FIXME comments. -# from spack import * @@ -51,11 +36,47 @@ class Plumed(Package): version('2.2.3', git="https://github.com/plumed/plumed2.git", tag='v2.2.3') - # FIXME: Add additional dependencies if required. - depends_on('mpi') + # Variants + variant('crystallization', default=False, + description='Build support for optional crystallization module.') + variant('imd', default=False, + 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.') + + # Dependencies + depends_on("mpi", when="+mpi") + depends_on("netlib-lapack") + depends_on("openblas") def install(self, spec, prefix): - configure("--prefix=" + prefix, - "--enable-mpi", - "-enable-modules=crystallization") + configure("--prefix=" + prefix) +# "--enable-mpi", +# "-enable-modules=crystallization") + + # Construct list of optional modules + module_opts=[] + module_opts.extend([ + '+crystallization' if '+crystallization' in spec else '-crystallization', + '+imd' if '+imd' in spec else '-imd', + '+manyrestraints' if '+manyrestraints' in spec else '-manyrestraints' + ]) + + # Add optional arguments based on specs and variants +# config_args.extend([ + # Modules +# "--enable-modules=%s" % "".join(module_opts) if module_opts is not None, +# "--enable-mpi" if '+mpi' in spec +# ]) + + if modules_opts: + config_args.extend(["--enable-modules=%s" % "".join(module_opts)]) + + config_args.extend([ + "--enable-mpi" if '+mpi' in spec else "--disable-mpi" + ]) + make() + make("install") -- cgit v1.2.3-60-g2f50 From f4ec99ecb491560336242081142d1753afa94dd7 Mon Sep 17 00:00:00 2001 From: Marty McFadden Date: Wed, 17 Aug 2016 09:28:21 -0700 Subject: Added +piclibs variant for building PIC versions of libgfortran.a and libstdc++.a --- var/spack/repos/builtin/packages/gcc/package.py | 5 ++ var/spack/repos/builtin/packages/gcc/piclibs.patch | 62 ++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gcc/piclibs.patch diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 72a5cb22f8..6bcd64104b 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -33,6 +33,9 @@ class Gcc(Package): variant('gold', default=sys.platform != 'darwin', description="Build the gold linker plugin for ld-based LTO") + variant('piclibs', + default=False, + description="Build PIC versions of libgfortran.a and libstdc++.a") depends_on("mpfr") depends_on("gmp") @@ -50,6 +53,8 @@ class Gcc(Package): else: provides('golang', when='@4.7.1:') + patch('piclibs.patch', when='+piclibs') + def install(self, spec, prefix): # libjava/configure needs a minor fix to install into spack paths. filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure', diff --git a/var/spack/repos/builtin/packages/gcc/piclibs.patch b/var/spack/repos/builtin/packages/gcc/piclibs.patch new file mode 100644 index 0000000000..0ecb793067 --- /dev/null +++ b/var/spack/repos/builtin/packages/gcc/piclibs.patch @@ -0,0 +1,62 @@ +diff --git a/libgfortran/Makefile.in b/libgfortran/Makefile.in +index 62b9f7a..7666fdb 100644 +--- a/libgfortran/Makefile.in ++++ b/libgfortran/Makefile.in +@@ -357,11 +357,11 @@ AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ + CCDEPMODE = @CCDEPMODE@ +-CFLAGS = @CFLAGS@ ++CFLAGS = @CFLAGS@ -fPIC + CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ ++CPPFLAGS = @CPPFLAGS@ -fPIC + CYGPATH_W = @CYGPATH_W@ +-DEFS = @DEFS@ ++DEFS = @DEFS@ -fPIC + DEPDIR = @DEPDIR@ + DSYMUTIL = @DSYMUTIL@ + DUMPBIN = @DUMPBIN@ +@@ -371,7 +371,7 @@ ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ + FC = @FC@ +-FCFLAGS = @FCFLAGS@ ++FCFLAGS = @FCFLAGS@ -fPIC + FGREP = @FGREP@ + FPU_HOST_HEADER = @FPU_HOST_HEADER@ + GREP = @GREP@ +diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in +index bede542..9b3e442 100644 +--- a/libstdc++-v3/Makefile.in ++++ b/libstdc++-v3/Makefile.in +@@ -115,7 +115,7 @@ CC = @CC@ + CCODECVT_CC = @CCODECVT_CC@ + CCOLLATE_CC = @CCOLLATE_CC@ + CCTYPE_CC = @CCTYPE_CC@ +-CFLAGS = @CFLAGS@ ++CFLAGS = @CFLAGS@ -fPIC + CLOCALE_CC = @CLOCALE_CC@ + CLOCALE_H = @CLOCALE_H@ + CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@ +@@ -124,7 +124,7 @@ CMESSAGES_H = @CMESSAGES_H@ + CMONEY_CC = @CMONEY_CC@ + CNUMERIC_CC = @CNUMERIC_CC@ + CPP = @CPP@ +-CPPFLAGS = @CPPFLAGS@ ++CPPFLAGS = @CPPFLAGS@ -fPIC + CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@ + CPU_OPT_BITS_RANDOM = @CPU_OPT_BITS_RANDOM@ + CPU_OPT_EXT_RANDOM = @CPU_OPT_EXT_RANDOM@ +@@ -139,7 +139,7 @@ CYGPATH_W = @CYGPATH_W@ + C_INCLUDE_DIR = @C_INCLUDE_DIR@ + DBLATEX = @DBLATEX@ + DEBUG_FLAGS = @DEBUG_FLAGS@ +-DEFS = @DEFS@ ++DEFS = @DEFS@ -fPIC + DOT = @DOT@ + DOXYGEN = @DOXYGEN@ + DSYMUTIL = @DSYMUTIL@ +-- +2.8.3 + -- cgit v1.2.3-60-g2f50 From 296212d78dd839c51ff3c37319715d79c05e41b2 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 17 Aug 2016 16:36:33 -0400 Subject: hdf5-blosc: Remove commit id from version specification The respective commit seems to have vanished. Now using the master branch without specifying a particular commit. --- var/spack/repos/builtin/packages/hdf5-blosc/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index b9c19dff62..c31f8cfe93 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -51,7 +51,8 @@ class Hdf5Blosc(Package): homepage = "https://github.com/Blosc/hdf5-blosc" url = "https://github.com/Blosc/hdf5-blosc/archive/master.zip" - version('master', '02c04acbf4bec66ec8a35bf157d1c9de') + # version('master', '02c04acbf4bec66ec8a35bf157d1c9de') + version('master', branch='master') depends_on("c-blosc") depends_on("hdf5") -- cgit v1.2.3-60-g2f50 From 6641f424177ca3565a99c493827582f5511b100a Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Thu, 18 Aug 2016 13:19:36 +0100 Subject: Not compiling due to mpi error. Also getting this error from the command line so could be separate issue. Otherwise package definition first draft complete. --- etc/spack/packages.yaml | 6 ++-- .../repos/builtin/packages/intelmpi/package.py | 9 +++-- var/spack/repos/builtin/packages/plumed/package.py | 42 +++++++++++++--------- 3 files changed, 35 insertions(+), 22 deletions(-) diff --git a/etc/spack/packages.yaml b/etc/spack/packages.yaml index e89562e8d2..abdd888351 100644 --- a/etc/spack/packages.yaml +++ b/etc/spack/packages.yaml @@ -3,6 +3,6 @@ packages: paths: intelmpi@4.1.0%gcc@4.4.7 arch=linux-x86_64: /software/compilers/intel/13.0/impi/4.1.0.024/intel64 buildable: False - all: - providers: - mpi: [intelmpi, openmpi] +# all: +# providers: +# mpi: [intelmpi] diff --git a/var/spack/repos/builtin/packages/intelmpi/package.py b/var/spack/repos/builtin/packages/intelmpi/package.py index 6750ee695a..5a9cdcdbf1 100644 --- a/var/spack/repos/builtin/packages/intelmpi/package.py +++ b/var/spack/repos/builtin/packages/intelmpi/package.py @@ -37,16 +37,19 @@ class Intelmpi(Package): def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc')) - spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpic++')) + spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpicxx')) spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77')) spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90')) + # NOTE: Need to find a better way of setting this compiler argument + # which is only required when building packages with intelmpi. + spack_env.set('CXXFLAGS', '-DMPICH_IGNORE_CXX_SEEK') def setup_dependent_package(self, module, dep_spec): self.spec.mpicc = join_path(self.prefix.bin, 'mpicc') - self.spec.mpicxx = join_path(self.prefix.bin, 'mpic++') + self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx') self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') - self.spec.cppflags = '-DMPICH_IGNORE_CXX_SEEK' +# self.spec.cxxflags = '-DMPICH_IGNORE_CXX_SEEK' # def install(self, spec, prefix): # configure("--prefix=%s" % prefix) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 023de82b9b..b1e74c5827 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -30,13 +30,15 @@ class Plumed(Package): molecular systems which works together with some of the most popular molecular dynamics engines.""" - # FIXME: Add a proper url for your package's homepage here. + # PLUMED homepage. The source is available on github. homepage = "http://www.plumed.org/home" url = "https://github.com/plumed/plumed2" version('2.2.3', git="https://github.com/plumed/plumed2.git", tag='v2.2.3') - # Variants + # Variants. PLUMED by default builds a number of optional modules. + # The ones listed here are not built by default for various reasons, + # such as stability, lack of testing, or lack of demand. variant('crystallization', default=False, description='Build support for optional crystallization module.') variant('imd', default=False, @@ -46,15 +48,14 @@ class Plumed(Package): variant('mpi', default=False, description='Enable MPI support.') - # Dependencies + # Dependencies. LAPACK and BLAS are recommended but not essential. depends_on("mpi", when="+mpi") depends_on("netlib-lapack") depends_on("openblas") def install(self, spec, prefix): - configure("--prefix=" + prefix) -# "--enable-mpi", -# "-enable-modules=crystallization") + # Prefix is the only compulsory argument. + config_args = ["--prefix=" + prefix] # Construct list of optional modules module_opts=[] @@ -64,19 +65,28 @@ class Plumed(Package): '+manyrestraints' if '+manyrestraints' in spec else '-manyrestraints' ]) - # Add optional arguments based on specs and variants + # If we have specified any optional modules then add the argument ro + # 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 + ]) + + # Add remaining variant flags. # config_args.extend([ - # Modules -# "--enable-modules=%s" % "".join(module_opts) if module_opts is not None, -# "--enable-mpi" if '+mpi' in spec +# "--enable-mpi" if '+mpi' in spec else "--disable-mpi" # ]) - if modules_opts: - config_args.extend(["--enable-modules=%s" % "".join(module_opts)]) - - config_args.extend([ - "--enable-mpi" if '+mpi' in spec else "--disable-mpi" - ]) + # Configure + configure(*config_args) make() make("install") -- cgit v1.2.3-60-g2f50 From 3445a781ebb8205a44e629568f660e9a5d1d0309 Mon Sep 17 00:00:00 2001 From: Stephen Herbein Date: Mon, 15 Aug 2016 16:30:00 -0700 Subject: py-cffi: set LDSHARED env so that rpath is set py-cffi's .so was being built without the rpath being set. distutils looks at the LDSHARED for which compiler to use to build the final .so. Since it was not set, distutils fell back to the system provided compiler. Setting it forces the shared library to be compiled with the spack compiler (meaning that the rpath is set correctly). --- var/spack/repos/builtin/packages/py-cffi/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-cffi/package.py b/var/spack/repos/builtin/packages/py-cffi/package.py index 3c1044783f..7c08e51de8 100644 --- a/var/spack/repos/builtin/packages/py-cffi/package.py +++ b/var/spack/repos/builtin/packages/py-cffi/package.py @@ -22,6 +22,8 @@ # 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 os + from spack import * @@ -39,4 +41,12 @@ class PyCffi(Package): depends_on('libffi') def install(self, spec, prefix): + # This sets the compiler (and flags) that distutils will use + # to create the final shared library. It will use the + # compiler specified by the environment variable 'CC' for all + # other compilation. We are setting the 'LDSHARED" to the + # spack compiler wrapper plus a few extra flags necessary for + # building the shared library. + os.environ['LDSHARED'] = "{0} -shared -pthread".format(spack_cc) + python('setup.py', 'install', '--prefix=%s' % prefix) -- cgit v1.2.3-60-g2f50 From 13f636ec6879c992b3a73e0e4f8d6843b1de3397 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Fri, 19 Aug 2016 15:00:21 +0100 Subject: Added required arguments to get plumed to build with intelmpi --- var/spack/repos/builtin/packages/plumed/package.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index b1e74c5827..95f32fc42c 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -60,12 +60,14 @@ class Plumed(Package): # Construct list of optional modules module_opts=[] module_opts.extend([ - '+crystallization' if '+crystallization' in spec else '-crystallization', + '+crystallization' if ( + '+crystallization' in spec) else '-crystallization', '+imd' if '+imd' in spec else '-imd', - '+manyrestraints' if '+manyrestraints' in spec else '-manyrestraints' + '+manyrestraints' if ( + '+manyrestraints' in spec) else '-manyrestraints' ]) - # If we have specified any optional modules then add the argument ro + # 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)]) @@ -80,10 +82,13 @@ class Plumed(Package): "F77=%s" % self.spec['mpi'].mpif77 ]) - # Add remaining variant flags. -# config_args.extend([ -# "--enable-mpi" if '+mpi' in spec else "--disable-mpi" -# ]) + # 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) -- cgit v1.2.3-60-g2f50 From 90e5ccd98c8cc5ecbd57c95b22905f6a7060ebf4 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Fri, 19 Aug 2016 15:01:46 +0100 Subject: Cleaned up commented out code in intelmpi package --- var/spack/repos/builtin/packages/intelmpi/package.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/intelmpi/package.py b/var/spack/repos/builtin/packages/intelmpi/package.py index 5a9cdcdbf1..5a0382a392 100644 --- a/var/spack/repos/builtin/packages/intelmpi/package.py +++ b/var/spack/repos/builtin/packages/intelmpi/package.py @@ -49,9 +49,3 @@ class Intelmpi(Package): self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx') self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') -# self.spec.cxxflags = '-DMPICH_IGNORE_CXX_SEEK' - -# def install(self, spec, prefix): -# configure("--prefix=%s" % prefix) -# make() -# make("install") -- cgit v1.2.3-60-g2f50 From 466da3afcc72170d659feeb70d6daad7029e6fe8 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 19 Aug 2016 11:52:40 -0400 Subject: Remove commented-out outdated commit id --- var/spack/repos/builtin/packages/hdf5-blosc/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index c31f8cfe93..0ca16b2bd5 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -51,7 +51,6 @@ class Hdf5Blosc(Package): homepage = "https://github.com/Blosc/hdf5-blosc" url = "https://github.com/Blosc/hdf5-blosc/archive/master.zip" - # version('master', '02c04acbf4bec66ec8a35bf157d1c9de') version('master', branch='master') depends_on("c-blosc") -- cgit v1.2.3-60-g2f50 From d4e369951061717972a5e3d85d3ed2d0155a24d1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 19 Aug 2016 13:44:00 -0500 Subject: Add all Sphinx dependencies --- .../repos/builtin/packages/py-alabaster/package.py | 43 +++++++++++++++++++++ .../repos/builtin/packages/py-babel/package.py | 45 ++++++++++++++++++++++ .../repos/builtin/packages/py-docutils/package.py | 2 +- .../repos/builtin/packages/py-imagesize/package.py | 43 +++++++++++++++++++++ .../repos/builtin/packages/py-jinja2/package.py | 31 ++++++++------- .../builtin/packages/py-markupsafe/package.py | 32 ++++++++------- .../repos/builtin/packages/py-pygments/package.py | 5 ++- .../repos/builtin/packages/py-pytz/package.py | 7 +++- .../builtin/packages/py-setuptools/package.py | 4 +- var/spack/repos/builtin/packages/py-six/package.py | 6 ++- .../builtin/packages/py-snowballstemmer/package.py | 40 +++++++++++++++++++ .../packages/py-sphinx-rtd-theme/package.py | 42 ++++++++++++++++++++ .../repos/builtin/packages/py-sphinx/package.py | 15 +++++++- 13 files changed, 275 insertions(+), 40 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-alabaster/package.py create mode 100644 var/spack/repos/builtin/packages/py-babel/package.py create mode 100644 var/spack/repos/builtin/packages/py-imagesize/package.py create mode 100644 var/spack/repos/builtin/packages/py-snowballstemmer/package.py create mode 100644 var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py diff --git a/var/spack/repos/builtin/packages/py-alabaster/package.py b/var/spack/repos/builtin/packages/py-alabaster/package.py new file mode 100644 index 0000000000..24cb5dce22 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-alabaster/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PyAlabaster(Package): + """Alabaster is a visually (c)lean, responsive, configurable theme + for the Sphinx documentation system.""" + + homepage = "https://pypi.python.org/pypi/alabaster" + url = "https://pypi.python.org/packages/source/a/alabaster/alabaster-0.7.9.tar.gz" + + version('0.7.9', 'b29646a8bbe7aa52830375b7d17b5d7a', + url="https://pypi.python.org/packages/71/c3/70da7d8ac18a4f4c502887bd2549e05745fa403e2cd9d06a8a9910a762bc/alabaster-0.7.9.tar.gz") + + extends('python') + + depends_on('py-setuptools', type='build') + + def install(self, spec, prefix): + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-babel/package.py b/var/spack/repos/builtin/packages/py-babel/package.py new file mode 100644 index 0000000000..a656fa7347 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-babel/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PyBabel(Package): + """Babel is an integrated collection of utilities that assist in + internationalizing and localizing Python applications, with an + emphasis on web-based applications.""" + + homepage = "http://babel.pocoo.org/en/latest/" + url = "https://pypi.python.org/packages/source/b/babel/babel-2.3.4.tar.gz" + + version('2.3.4', 'afa20bc55b0e991833030129ad498f35', + url="https://pypi.python.org/packages/6e/96/ba2a2462ed25ca0e651fb7b66e7080f5315f91425a07ea5b34d7c870c114/Babel-2.3.4.tar.gz") + + extends('python') + + depends_on('py-setuptools', type='build') + depends_on('py-pytz', type=nolink) + + def install(self, spec, prefix): + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-docutils/package.py b/var/spack/repos/builtin/packages/py-docutils/package.py index 3a938d918b..114131df90 100644 --- a/var/spack/repos/builtin/packages/py-docutils/package.py +++ b/var/spack/repos/builtin/packages/py-docutils/package.py @@ -40,4 +40,4 @@ class PyDocutils(Package): extends('python') def install(self, spec, prefix): - python('setup.py', 'install', '--prefix={0}'.format(prefix)) + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-imagesize/package.py b/var/spack/repos/builtin/packages/py-imagesize/package.py new file mode 100644 index 0000000000..941e64610e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-imagesize/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PyImagesize(Package): + """Parses image file headers and returns image size. Supports PNG, JPEG, + JPEG2000, and GIF image file formats.""" + + homepage = "https://pypi.python.org/pypi/imagesize" + url = "https://pypi.python.org/packages/source/i/imagesize/imagesize-0.7.1.tar.gz" + + version('0.7.1', '976148283286a6ba5f69b0f81aef8052', + url="https://pypi.python.org/packages/53/72/6c6f1e787d9cab2cc733cf042f125abec07209a58308831c9f292504e826/imagesize-0.7.1.tar.gz") + + extends('python') + + depends_on('py-setuptools', type='build') + + def install(self, spec, prefix): + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-jinja2/package.py b/var/spack/repos/builtin/packages/py-jinja2/package.py index 943edf521a..8ef4f568c5 100644 --- a/var/spack/repos/builtin/packages/py-jinja2/package.py +++ b/var/spack/repos/builtin/packages/py-jinja2/package.py @@ -22,29 +22,28 @@ # 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 depends_on, extends, version, nolink -from spack import Package +from spack import * class PyJinja2(Package): - """ - Jinja2 is a template engine written in pure Python. It provides + """Jinja2 is a template engine written in pure Python. It provides a Django inspired non-XML syntax but supports inline expressions - and an optional sandboxed environment. - """ + and an optional sandboxed environment.""" homepage = "http://jinja.pocoo.org/" - url = "https://github.com/pallets/jinja/archive/2.8.tar.gz" + url = "https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.8.tar.gz" - version('2.8', '4114200650d7630594e3bc70af23f59e') - version('2.7.3', '55b87bdc8e585b8b5b86734eefce2621') - version('2.7.2', '8e8f226809ae6363009b9296e30adf30') - version('2.7.1', '69b6675553c81b1087f95cae7f2179bb') - version('2.7', 'ec70433f325051dcedacbb2465028a35') + version('2.8', 'edb51693fe22c53cee5403775c71a99e') + version('2.7.3', 'b9dffd2f3b43d673802fe857c8445b1a') + version('2.7.2', 'df1581455564e97010e38bc792012aa5') + version('2.7.1', '282aed153e69f970d6e76f78ed9d027a') + version('2.7', 'c2fb12cbbb523c57d3d15bfe4dc0e8fe') - extends("python") - depends_on("py-setuptools", type='build') - depends_on("py-markupsafe", type=nolink) + extends('python') + + depends_on('py-setuptools', type='build') + depends_on('py-markupsafe', type=nolink) + depends_on('py-babel@0.8:', type=nolink) # optional, required for i18n def install(self, spec, prefix): - python('setup.py', 'install', '--prefix=%s' % prefix) + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-markupsafe/package.py b/var/spack/repos/builtin/packages/py-markupsafe/package.py index 0a039d1d47..5ba5bfb997 100644 --- a/var/spack/repos/builtin/packages/py-markupsafe/package.py +++ b/var/spack/repos/builtin/packages/py-markupsafe/package.py @@ -22,29 +22,27 @@ # 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 depends_on, extends, version -from spack import Package +from spack import * class PyMarkupsafe(Package): - """ - MarkupSafe is a library for Python that implements a unicode - string that is aware of HTML escaping rules and can be used - to implement automatic string escaping. It is used by Jinja 2, - the Mako templating engine, the Pylons web framework and many more. - """ + """MarkupSafe is a library for Python that implements a unicode + string that is aware of HTML escaping rules and can be used to + implement automatic string escaping. It is used by Jinja 2, the + Mako templating engine, the Pylons web framework and many more.""" homepage = "http://www.pocoo.org/projects/markupsafe/" - url = "https://github.com/pallets/markupsafe/archive/0.23.tar.gz" + url = "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.23.tar.gz" - version('0.23', '1a0dadc95169832367c9dcf142155cde') - version('0.22', '7a2ac7427b58def567628d06dc328396') - version('0.21', 'aebcd93ee05269773c8b80bb6c86fc2f') - version('0.20', '0c1fef97c8fd6a986d708f08d7f84a02') - version('0.19', '64b05361adb92c11839fc470e308c593') + version('0.23', 'f5ab3deee4c37cd6a922fb81e730da6e') + version('0.22', 'cb3ec29fd5361add24cfd0c6e2953b3e') + version('0.21', 'fde838d9337fa51744283f46a1db2e74') + version('0.20', '7da066d9cb191a70aa85d0a3d43565d1') + version('0.19', 'ccb3f746c807c5500850987006854a6d') - extends("python") - depends_on("py-setuptools", type='build') + extends('python') + + depends_on('py-setuptools', type='build') def install(self, spec, prefix): - python('setup.py', 'install', '--prefix=%s' % prefix) + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-pygments/package.py b/var/spack/repos/builtin/packages/py-pygments/package.py index 2d22bd9f03..c61b080e14 100644 --- a/var/spack/repos/builtin/packages/py-pygments/package.py +++ b/var/spack/repos/builtin/packages/py-pygments/package.py @@ -27,14 +27,17 @@ from spack import * class PyPygments(Package): """Pygments is a syntax highlighting package written in Python.""" + homepage = "https://pypi.python.org/pypi/pygments" url = "https://pypi.python.org/packages/source/P/Pygments/Pygments-2.0.1.tar.gz" + version('2.1.3', 'ed3fba2467c8afcda4d317e4ef2c6150') version('2.0.1', 'e0daf4c14a4fe5b630da765904de4d6c') version('2.0.2', '238587a1370d62405edabd0794b3ec4a') extends('python') + depends_on('py-setuptools', type='build') def install(self, spec, prefix): - python('setup.py', 'install', '--prefix=%s' % prefix) + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-pytz/package.py b/var/spack/repos/builtin/packages/py-pytz/package.py index 96f686d591..486b86a467 100644 --- a/var/spack/repos/builtin/packages/py-pytz/package.py +++ b/var/spack/repos/builtin/packages/py-pytz/package.py @@ -27,14 +27,19 @@ from spack import * class PyPytz(Package): """World timezone definitions, modern and historical.""" + homepage = "https://pypi.python.org/pypi/pytz" url = "https://pypi.python.org/packages/source/p/pytz/pytz-2014.10.tar.gz" + version('2016.6.1', 'b6c28a3b968bc1d8badfb61b93874e03', + url="https://pypi.python.org/packages/5d/8e/6635d8f3f9f48c03bb925fab543383089858271f9cfd1216b83247e8df94/pytz-2016.6.1.tar.gz") version('2014.10', 'eb1cb941a20c5b751352c52486aa1dd7') version('2015.4', '417a47b1c432d90333e42084a605d3d8') version('2016.3', 'abae92c3301b27bd8a9f56b14f52cb29') extends('python') + depends_on('py-setuptools', type='build') + def install(self, spec, prefix): - python('setup.py', 'install', '--prefix=%s' % prefix) + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 08d5e5d552..d696fdf776 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -32,6 +32,8 @@ class PySetuptools(Package): homepage = "https://pypi.python.org/pypi/setuptools" url = "https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.tar.gz" + version('25.2.0', 'a0dbb65889c46214c691f6c516cf959c', + url="https://pypi.python.org/packages/9f/32/81c324675725d78e7f6da777483a3453611a427db0145dfb878940469692/setuptools-25.2.0.tar.gz") version('20.7.0', '5d12b39bf3e75e80fdce54e44b255615') version('20.6.7', '45d6110f3ec14924e44c33411db64fe6') version('20.5', 'fadc1e1123ddbe31006e5e43e927362b') @@ -43,4 +45,4 @@ class PySetuptools(Package): extends('python') def install(self, spec, prefix): - setup_py('install', '--prefix=%s' % prefix) + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-six/package.py b/var/spack/repos/builtin/packages/py-six/package.py index da0c7aa003..e7b7177586 100644 --- a/var/spack/repos/builtin/packages/py-six/package.py +++ b/var/spack/repos/builtin/packages/py-six/package.py @@ -27,14 +27,16 @@ from spack import * class PySix(Package): """Python 2 and 3 compatibility utilities.""" + homepage = "https://pypi.python.org/pypi/six" url = "https://pypi.python.org/packages/source/s/six/six-1.9.0.tar.gz" - version('1.9.0', '476881ef4012262dfc8adc645ee786c4') version('1.10.0', '34eed507548117b2ab523ab14b2f8b55') + version('1.9.0', '476881ef4012262dfc8adc645ee786c4') extends('python') + depends_on('py-setuptools', type='build') def install(self, spec, prefix): - python('setup.py', 'install', '--prefix=%s' % prefix) + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-snowballstemmer/package.py b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py new file mode 100644 index 0000000000..44c0548932 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PySnowballstemmer(Package): + """This package provides 16 stemmer algorithms (15 + Poerter + English stemmer) generated from Snowball algorithms.""" + + homepage = "https://pypi.python.org/pypi/snowballstemmer" + url = "https://pypi.python.org/packages/source/s/snowballstemmer/snowballstemmer-1.2.1.tar.gz" + + version('1.2.1', '643b019667a708a922172e33a99bf2fa') + + extends('python') + + def install(self, spec, prefix): + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py new file mode 100644 index 0000000000..9c57628e2c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PySphinxRtdTheme(Package): + """ReadTheDocs.org theme for Sphinx.""" + + homepage = "https://pypi.python.org/pypi/sphinx_rtd_theme" + url = "https://pypi.python.org/packages/source/s/sphinx_rtd_theme/sphinx_rtd_theme-0.1.10a0.tar.gz" + + version('0.1.10a0', '83bd95cae55aa8b773a8cc3a41094282', + url="https://pypi.python.org/packages/da/6b/1b75f13d8aa3333f19c6cdf1f0bc9f52ea739cae464fbee050307c121857/sphinx_rtd_theme-0.1.10a0.tar.gz") + + extends('python') + + depends_on('py-setuptools', type='build') + + def install(self, spec, prefix): + setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py index 2295a6a0c3..6e0280999a 100644 --- a/var/spack/repos/builtin/packages/py-sphinx/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx/package.py @@ -30,9 +30,22 @@ class PySphinx(Package): homepage = "http://sphinx-doc.org" url = "https://pypi.python.org/packages/source/S/Sphinx/Sphinx-1.3.1.tar.gz" + version('1.4.5', '5c2cd2dac45dfa6123d067e32a89e89a', + url='https://pypi.python.org/packages/8b/78/eeea2b837f911cdc301f5f05163f9729a2381cadd03ccf35b25afe816c90/Sphinx-1.4.5.tar.gz') version('1.3.1', '8786a194acf9673464c5455b11fd4332') extends('python') + depends_on('py-setuptools', type='build') + depends_on('py-six@1.4:', type=nolink) + depends_on('py-jinja2@2.3:', type=nolink) + depends_on('py-pygments@2.0:', type=nolink) + depends_on('py-docutils@0.11:', type=nolink) + depends_on('py-snowballstemmer@1.1:', type=nolink) + depends_on('py-babel@1.3:', type=nolink) # not 2.0 + depends_on('py-alabaster@0.7:', type=nolink) + depends_on('py-imagesize', when='@1.4:', type=nolink) + depends_on('py-sphinx-rtd-theme@0.1:', type=nolink) # optional as of 1.4 + def install(self, spec, prefix): - python('setup.py', 'install', '--prefix=%s' % prefix) + setup_py('install', '--prefix={0}'.format(prefix)) -- cgit v1.2.3-60-g2f50 From c1af0d3806a336944ab21a2931edd04bd6cf9584 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 19 Aug 2016 13:54:22 -0500 Subject: Fix binary conflicts during sphinx activation --- var/spack/repos/builtin/packages/py-sphinx/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py index 6e0280999a..5dcb31cef8 100644 --- a/var/spack/repos/builtin/packages/py-sphinx/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx/package.py @@ -34,7 +34,7 @@ class PySphinx(Package): url='https://pypi.python.org/packages/8b/78/eeea2b837f911cdc301f5f05163f9729a2381cadd03ccf35b25afe816c90/Sphinx-1.4.5.tar.gz') version('1.3.1', '8786a194acf9673464c5455b11fd4332') - extends('python') + extends('python', ignore='bin/(pybabel|pygmentize)') depends_on('py-setuptools', type='build') depends_on('py-six@1.4:', type=nolink) -- cgit v1.2.3-60-g2f50 From d7873b5319a3d28aaa7b7c12b8a39453052477ad Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 19 Aug 2016 14:00:50 -0500 Subject: Swap lowercase for uppercase in URL --- var/spack/repos/builtin/packages/py-babel/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-babel/package.py b/var/spack/repos/builtin/packages/py-babel/package.py index a656fa7347..8beb216fd3 100644 --- a/var/spack/repos/builtin/packages/py-babel/package.py +++ b/var/spack/repos/builtin/packages/py-babel/package.py @@ -31,7 +31,7 @@ class PyBabel(Package): emphasis on web-based applications.""" homepage = "http://babel.pocoo.org/en/latest/" - url = "https://pypi.python.org/packages/source/b/babel/babel-2.3.4.tar.gz" + url = "https://pypi.python.org/packages/source/B/Babel/Babel-2.3.4.tar.gz" version('2.3.4', 'afa20bc55b0e991833030129ad498f35', url="https://pypi.python.org/packages/6e/96/ba2a2462ed25ca0e651fb7b66e7080f5315f91425a07ea5b34d7c870c114/Babel-2.3.4.tar.gz") -- cgit v1.2.3-60-g2f50 From 835b8f246e40215020c0e794ed1217c224ef0b1c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 19 Aug 2016 14:20:31 -0500 Subject: py-sphinx requires py-setuptools during runtime --- var/spack/repos/builtin/packages/py-sphinx/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py index 5dcb31cef8..923962a2dc 100644 --- a/var/spack/repos/builtin/packages/py-sphinx/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx/package.py @@ -36,7 +36,10 @@ class PySphinx(Package): extends('python', ignore='bin/(pybabel|pygmentize)') - depends_on('py-setuptools', type='build') + # Most Python packages only require py-setuptools as a build dependency. + # However, py-sphinx requires py-setuptools during runtime as well. + depends_on('py-setuptools', type=nolink) + depends_on('py-six@1.4:', type=nolink) depends_on('py-jinja2@2.3:', type=nolink) depends_on('py-pygments@2.0:', type=nolink) -- cgit v1.2.3-60-g2f50 From df623dad159d6ae4f4f688fc6ea7c1a1ef8c281c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 19 Aug 2016 14:31:42 -0500 Subject: Suggest setuptools when creating Python package --- lib/spack/spack/cmd/create.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 52a82eb38f..aa7c42def0 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -120,7 +120,8 @@ dependencies_dict = { extends('python') # FIXME: Add additional dependencies if required. - # depends_on('py-foo', type=nolink)""", + # depends_on('py-setuptools', type='build') + # depends_on('py-foo', type=nolink)""", 'R': """\ extends('R') -- cgit v1.2.3-60-g2f50 From a177b9be8a2dca5aefce904df652ec26d7e0dcba Mon Sep 17 00:00:00 2001 From: "Gregory L. Lee" Date: Mon, 15 Aug 2016 15:18:27 -0700 Subject: updated stat 3.0.0b url --- var/spack/repos/builtin/packages/stat/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index 20c6ee984f..8c4663c524 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -34,8 +34,8 @@ class Stat(Package): version('2.2.0', '26bd69dd57a15afdd5d0ebdb0b7fb6fc') version('2.1.0', 'ece26beaf057aa9134d62adcdda1ba91') version('2.0.0', 'c7494210b0ba26b577171b92838e1a9b') - version('3.0.0b', '653f961192e84f4611cabbe31c4dcd89', - url='https://github.com/LLNL/STAT/files/410276/STAT-3.0.0b.tar.gz') + version('3.0.0b', '8851912ba40e31cf7be6dde3be8e702c', + url='https://github.com/LLNL/STAT/files/427762/STAT-3.0.0b.tar.gz') # TODO: dysect requires Dyninst patch for version 3.0.0b variant('dysect', default=False, description="enable DySectAPI") -- cgit v1.2.3-60-g2f50 From f0f2c6c48673a9c65a1b0990e88b379d7f9678d2 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 19 Aug 2016 17:05:14 -0500 Subject: Add latest version of fftw --- var/spack/repos/builtin/packages/fftw/package.py | 30 ++++++++++++---------- .../repos/builtin/packages/gromacs/package.py | 3 +-- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 570cd1bbdd..da3e8f7328 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -22,8 +22,6 @@ # 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 * @@ -33,22 +31,19 @@ class Fftw(Package): size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which is free software, should become the FFT - library of choice for most applications. + library of choice for most applications.""" - """ homepage = "http://www.fftw.org" url = "http://www.fftw.org/fftw-3.3.4.tar.gz" + version('3.3.5', '6cc08a3b9c7ee06fdd5b9eb02e06f569') version('3.3.4', '2edab8c06b24feeb3b82bbb3ebf3e7b3') - variant( - 'float', default=True, + variant('float', default=True, description='Produces a single precision version of the library') - variant( - 'long_double', default=True, + variant('long_double', default=True, description='Produces a long double precision version of the library') - variant( - 'quad', default=False, + variant('quad', default=False, description='Produces a quad precision version of the library ' '(works only with GCC and libquadmath)') variant('openmp', default=False, description="Enable OpenMP support.") @@ -60,10 +55,13 @@ class Fftw(Package): # targets are supported def install(self, spec, prefix): - options = ['--prefix=%s' % prefix, - '--enable-shared', - '--enable-threads'] - # Add support for OpenMP + options = [ + '--prefix={0}'.format(prefix), + '--enable-shared', + '--enable-threads' + ] + + # Add support for OpenMP if '+openmp' in spec: # Note: Apple's Clang does not support OpenMP. if spec.satisfies('%clang'): @@ -78,17 +76,21 @@ class Fftw(Package): configure(*options) make() + make("check") make("install") if '+float' in spec: configure('--enable-float', *options) make() + make("check") make("install") if '+long_double' in spec: configure('--enable-long-double', *options) make() + make("check") make("install") if '+quad' in spec: configure('--enable-quad-precision', *options) make() + make("check") make("install") diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index d39c9738ef..8611dc2026 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -22,7 +22,6 @@ # 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 * @@ -57,7 +56,7 @@ class Gromacs(Package): depends_on('plumed+mpi', when='+plumed+mpi') depends_on('plumed~mpi', when='+plumed~mpi') depends_on('fftw') - depends_on('cmake', type='build') + depends_on('cmake@2.8.8:', type='build') # TODO : add GPU support -- cgit v1.2.3-60-g2f50 From d5903e461204ae284aca133ca810e12b47f53089 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 19 Aug 2016 17:06:34 -0500 Subject: Flake8 --- var/spack/repos/builtin/packages/fftw/package.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index da3e8f7328..37d272e9c9 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -39,11 +39,14 @@ class Fftw(Package): version('3.3.5', '6cc08a3b9c7ee06fdd5b9eb02e06f569') version('3.3.4', '2edab8c06b24feeb3b82bbb3ebf3e7b3') - variant('float', default=True, + variant( + 'float', default=True, description='Produces a single precision version of the library') - variant('long_double', default=True, + variant( + 'long_double', default=True, description='Produces a long double precision version of the library') - variant('quad', default=False, + variant( + 'quad', default=False, description='Produces a quad precision version of the library ' '(works only with GCC and libquadmath)') variant('openmp', default=False, description="Enable OpenMP support.") -- cgit v1.2.3-60-g2f50 From 78685addbba5711f9b9af54f094b688f3f10a38a Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 21 Aug 2016 14:39:29 -0400 Subject: hdf5-blosc: Correct download url --- var/spack/repos/builtin/packages/hdf5-blosc/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index 0ca16b2bd5..088c1e9d9b 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -49,9 +49,10 @@ def _install_shlib(name, src, dst): class Hdf5Blosc(Package): """Blosc filter for HDF5""" homepage = "https://github.com/Blosc/hdf5-blosc" - url = "https://github.com/Blosc/hdf5-blosc/archive/master.zip" + url = "https://github.com/Blosc/hdf5-blosc" - version('master', branch='master') + version('master', git='https://github.com/Blosc/hdf5-blosc', + branch='master') depends_on("c-blosc") depends_on("hdf5") -- cgit v1.2.3-60-g2f50 From 0c8462723b955fe4b650fb7331a8df3769284a57 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 22 Aug 2016 11:24:03 +0100 Subject: Found upstream plumed package and modified this one to match --- var/spack/repos/builtin/packages/plumed/package.py | 125 +++++++++++++++------ 1 file changed, 89 insertions(+), 36 deletions(-) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 95f32fc42c..c261e90fd8 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -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 @@ class Plumed(Package): # 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') -- cgit v1.2.3-60-g2f50 From 5661afa315f6401b39c5ea354697d80170c6c8f7 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 22 Aug 2016 12:03:47 +0100 Subject: Passed flake8 tests --- var/spack/repos/builtin/packages/plumed/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index c261e90fd8..3d9e8222ba 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -121,7 +121,7 @@ class Plumed(Package): if spec.satisfies('^intelmpi'): configure_opts.extend([ 'STATIC_LIBS=-mt_mpi' - ]) + ]) # Additional arguments configure_opts.extend([ @@ -130,7 +130,7 @@ class Plumed(Package): ]) # Construct list of optional modules - module_opts=[] + module_opts = [] module_opts.extend([ '+crystallization' if ( '+crystallization' in spec) else '-crystallization', -- cgit v1.2.3-60-g2f50 From 226d4f04f3b931755124f6b56741cd89099a3fec Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 22 Aug 2016 12:09:50 +0100 Subject: Spelling tweaks and consistent quoting --- var/spack/repos/builtin/packages/plumed/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 3d9e8222ba..8a0e631463 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -58,7 +58,7 @@ class Plumed(Package): 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 + # Dependencies. LAPACK and BLAS are recommended but not essential. depends_on('zlib') depends_on('blas') depends_on('lapack') @@ -106,7 +106,7 @@ class Plumed(Package): # with MPI you should use: # # > ./configure CXX="$MPICXX" - configure_opts = ["--prefix=" + prefix] + configure_opts = ['--prefix=' + prefix] # If using MPI then ensure the correct compiler wrapper is used. if '+mpi' in spec: -- cgit v1.2.3-60-g2f50 From 87d15212eb468348bf6de114a70e9d3ffbc85fe1 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 22 Aug 2016 12:30:17 +0100 Subject: Cleaned branch to only include plumed package --- etc/spack/packages.yaml | 8 ---- .../repos/builtin/packages/intelmpi/package.py | 51 ---------------------- 2 files changed, 59 deletions(-) delete mode 100644 etc/spack/packages.yaml delete mode 100644 var/spack/repos/builtin/packages/intelmpi/package.py diff --git a/etc/spack/packages.yaml b/etc/spack/packages.yaml deleted file mode 100644 index abdd888351..0000000000 --- a/etc/spack/packages.yaml +++ /dev/null @@ -1,8 +0,0 @@ -packages: - intelmpi: - paths: - intelmpi@4.1.0%gcc@4.4.7 arch=linux-x86_64: /software/compilers/intel/13.0/impi/4.1.0.024/intel64 - buildable: False -# all: -# providers: -# mpi: [intelmpi] diff --git a/var/spack/repos/builtin/packages/intelmpi/package.py b/var/spack/repos/builtin/packages/intelmpi/package.py deleted file mode 100644 index 5a0382a392..0000000000 --- a/var/spack/repos/builtin/packages/intelmpi/package.py +++ /dev/null @@ -1,51 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Intelmpi(Package): - """Intel MPI""" - - homepage = "http://www.example.com" - url = "https://software.intel.com/en-us/intel-mpi-library" - - version('4.1.0') - - # Provides a virtual dependency 'mpi' - provides('mpi') - - def setup_dependent_environment(self, spack_env, run_env, dependent_spec): - spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc')) - spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpicxx')) - spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77')) - spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90')) - # NOTE: Need to find a better way of setting this compiler argument - # which is only required when building packages with intelmpi. - spack_env.set('CXXFLAGS', '-DMPICH_IGNORE_CXX_SEEK') - - def setup_dependent_package(self, module, dep_spec): - self.spec.mpicc = join_path(self.prefix.bin, 'mpicc') - self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx') - self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') - self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') -- cgit v1.2.3-60-g2f50 From 65abd279cda184303922bb610f518009f2e6f6d0 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 22 Aug 2016 13:44:21 +0100 Subject: Renamed intelmpi as suggested --- var/spack/repos/builtin/packages/plumed/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 8a0e631463..02d9852add 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -115,10 +115,10 @@ class Plumed(Package): 'CXX={0}'.format(spec['mpi'].mpicxx) ]) - # If the MPI dependency is provided by the intelmpi package then + # If the MPI dependency is provided by the intel-mpi package then # the following additional argument is required to allow it to # build. - if spec.satisfies('^intelmpi'): + if spec.satisfies('^intel-mpi'): configure_opts.extend([ 'STATIC_LIBS=-mt_mpi' ]) -- cgit v1.2.3-60-g2f50 From a44beee172ec0b666b6caa46e320acffe7430cc7 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 22 Aug 2016 17:25:19 +0200 Subject: nwchem: add new package --- var/spack/repos/builtin/packages/nwchem/package.py | 112 +++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nwchem/package.py diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py new file mode 100644 index 0000000000..f77099f244 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -0,0 +1,112 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 * +import sys + + +class Nwchem(Package): + """High-performance computational chemistry software""" + + homepage = "http://www.nwchem-sw.org" + url = "http://www.nwchem-sw.org/images/Nwchem-6.6.revision27746-src.2015-10-20.tar.gz" + + version('6.6', 'c581001c004ea5e5dfacb783385825e3', + url='http://www.nwchem-sw.org/images/Nwchem-6.6.revision27746-src.2015-10-20.tar.gz') + + depends_on('blas') + depends_on('lapack') + depends_on('mpi') + + depends_on('python@2.7:2.8', type='build') + + # TODO: + # depends_on('scalapack') + + def install(self, spec, prefix): + # see http://www.nwchem-sw.org/index.php/Compiling_NWChem + + args = [] + args.extend([ + 'NWCHEM_TOP=%s' % self.stage.source_path, + 'USE_MPI=y', + 'MPI_LOC=%s' % spec['mpi'].prefix, + 'USE_PYTHONCONFIG=y', + 'PYTHONVERSION=%s' % spec['python'].version.up_to(2), + 'BLASOPT=%s %s' % ( + to_link_flags(spec['lapack'].lapack_shared_lib), + to_link_flags(spec['blas'].blas_shared_lib)), + 'NWCHEM_MODULES=all', + 'NWCHEM_LONG_PATHS=Y' # by default NWCHEM_TOP is 64 char max + ]) + + if sys.platform == 'darwin': + target = 'MACX64' + args.extend([ + 'CFLAGS_FORGA=-DMPICH_NO_ATTR_TYPE_TAGS' + ]) + else: + target = 'LINUX64' + + args.extend(['NWCHEM_TARGET=%s' % target]) + + with working_dir('src'): + make('nwchem_config', *args) + make(*args) + + # need to install by hand. Follow Ubuntu: + # http://packages.ubuntu.com/trusty/all/nwchem-data/filelist + # http://packages.ubuntu.com/trusty/amd64/nwchem/filelist + share_path = join_path(prefix, 'share', 'nwchem') + mkdirp(prefix.bin) + + install_tree('data', share_path) + install_tree(join_path('basis', 'libraries'), + join_path(share_path, 'libraries')) + install_tree(join_path('nwpw', 'libraryps'), + join_path(share_path, 'libraryps')) + + b_path = join_path(self.stage.source_path, 'bin', + target, 'nwchem') + chmod = which('chmod') + chmod('+x', b_path) + install(b_path, prefix.bin) + + # Finally, make user's life easier by creating a .nwchemrc file + # to point to the required data files. + nwchemrc = """\ + nwchem_basis_library {data}/libraries/ + nwchem_nwpw_library {data}/libraryps/ + ffield amber + amber_1 {data}/amber_s/ + amber_2 {data}/amber_q/ + amber_3 {data}/amber_x/ + amber_4 {data}/amber_u/ + spce {data}/solvents/spce.rst + charmm_s {data}/charmm_s/ + charmm_x {data}/charmm_x/ +""".format(data=share_path) + with open(".nwchemrc", 'w') as f: + f.write(nwchemrc) + install(".nwchemrc", share_path) -- cgit v1.2.3-60-g2f50 From 7b49166f9bfbb65ae4e3a306b31333b73ff25bde Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 22 Aug 2016 20:26:54 -0400 Subject: Update gcc to @6.2.0 Also add some missing older version. Update download location to original GNU location. --- var/spack/repos/builtin/packages/gcc/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 72a5cb22f8..915a0a1881 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -10,14 +10,17 @@ class Gcc(Package): Objective-C, Fortran, and Java.""" homepage = "https://gcc.gnu.org" - url = "http://open-source-box.org/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2" - list_url = 'http://open-source-box.org/gcc/' + url = "http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2" + list_url = 'http://ftp.gnu.org/gnu/gcc/' list_depth = 2 + version('6.2.0', '9768625159663b300ae4de2f4745fcc4') version('6.1.0', '8fb6cb98b8459f5863328380fbf06bd1') version('5.4.0', '4c626ac2a83ef30dfb9260e6f59c2b30') version('5.3.0', 'c9616fd448f980259c31de613e575719') version('5.2.0', 'a51bcfeb3da7dd4c623e27207ed43467') + version('5.1.0', 'd5525b1127d07d215960e6051c5da35e') + version('4.9.4', '87c24a4090c1577ba817ec6882602491') version('4.9.3', '6f831b4d251872736e8e9cc09746f327') version('4.9.2', '4df8ee253b7f3863ad0b86359cd39c43') version('4.9.1', 'fddf71348546af523353bd43d34919c1') -- cgit v1.2.3-60-g2f50 From aca8576de4f92498ab15f2a8ca0b0409205520b4 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 22 Aug 2016 23:37:45 +0200 Subject: trilinos: switch to github url; fix missing py-numpy dependency --- .../repos/builtin/packages/trilinos/package.py | 29 +++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index d39e45f054..6537b1c2cf 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -43,18 +43,22 @@ class Trilinos(Package): A unique design feature of Trilinos is its focus on packages. """ homepage = "https://trilinos.org/" - url = "http://trilinos.csbsju.edu/download/files/trilinos-12.2.1-Source.tar.gz" + base_url = "https://github.com/trilinos/Trilinos/archive" - version('12.6.4', 'db25056617c688f6f25092376a03200f') - version('12.6.3', '960f5f4d3f7c3da818e5a5fb4684559eff7e0c25f959ef576561b8a52f0e4d1e') - version('12.6.2', '0c076090508170ddee5efeed317745027f9418319720dc40a072e478775279f9') - version('12.6.1', 'adcf2d3aab74cdda98f88fee19cd1442604199b0515ee3da4d80cbe8f37d00e4') - version('12.4.2', '7c830f7f0f68b8ad324690603baf404e') - version('12.2.1', '6161926ea247863c690e927687f83be9') - version('12.0.1', 'bd99741d047471e127b8296b2ec08017') - version('11.14.3', '2f4f83f8333e4233c57d0f01c4b57426') - version('11.14.2', 'a43590cf896c677890d75bfe75bc6254') - version('11.14.1', '40febc57f76668be8b6a77b7607bb67f') + version('12.6.4', 'c2ea7b5aa0d10bcabdb9b9a6e3bac3ea') + version('12.6.3', '8de5cc00981a0ca0defea6199b2fe4c1') + version('12.6.2', 'dc7f9924872778798149ecadd81605a5') + version('12.6.1', '8aecea78546e7558f63ecc9a3b2949da') + version('12.4.2', '4c25a757d86bde3531090bd900a2cea8') + version('12.2.1', '85d011f7f99a776a9c6c2625e8cb721c') + version('12.0.1', 'bcb3fdefd14d05dd6aa65ba4c5b9aa0e') + version('11.14.3', 'dea62e57ebe51a886bee0b10a2176969') + version('11.14.2', 'e7c3cdbbfe3279a8a68838b873ad6d51') + version('11.14.1', 'b7760b142eef66c79ed13de7c9560f81') + + def url_for_version(self, version): + return '%s/trilinos-release-%s.tar.gz' % \ + (Trilinos.base_url, str(version).replace('.', '-')) variant('metis', default=True, description='Compile with METIS and ParMETIS') @@ -84,7 +88,6 @@ class Trilinos(Package): depends_on('boost', when='+boost') depends_on('matio') depends_on('glm') - depends_on('swig') depends_on('metis@5:', when='+metis') depends_on('suite-sparse', when='+suite-sparse') @@ -106,6 +109,8 @@ class Trilinos(Package): depends_on('hypre~internal-superlu', when='+hypre') depends_on('hdf5+mpi', when='+hdf5') depends_on('python', when='+python') + depends_on('py-numpy', when='+python') + depends_on('swig', when='+python') patch('umfpack_from_suitesparse.patch') -- cgit v1.2.3-60-g2f50 From 5da9116c067984ec84cb34e1c4ad5b08805fc233 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 23 Aug 2016 11:55:00 +0200 Subject: nwchem: add scalapack; extra steps for 32bit blas/lapack --- var/spack/repos/builtin/packages/nwchem/package.py | 26 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index f77099f244..908e106fda 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -38,15 +38,12 @@ class Nwchem(Package): depends_on('blas') depends_on('lapack') depends_on('mpi') + depends_on('scalapack') depends_on('python@2.7:2.8', type='build') - # TODO: - # depends_on('scalapack') - def install(self, spec, prefix): # see http://www.nwchem-sw.org/index.php/Compiling_NWChem - args = [] args.extend([ 'NWCHEM_TOP=%s' % self.stage.source_path, @@ -57,10 +54,29 @@ class Nwchem(Package): 'BLASOPT=%s %s' % ( to_link_flags(spec['lapack'].lapack_shared_lib), to_link_flags(spec['blas'].blas_shared_lib)), + 'USE_SCALAPACK=y', + 'SCALAPACK=%s' % spec['scalapack'].fc_link, 'NWCHEM_MODULES=all', 'NWCHEM_LONG_PATHS=Y' # by default NWCHEM_TOP is 64 char max ]) + # TODO: query if blas/lapack/scalapack uses 64bit Ints + # A flag to distinguish between 32bit and 64bit integers in linear + # algebra (Blas, Lapack, Scalapack) + use32bitLinAlg = True + + if use32bitLinAlg: + args.extend([ + 'USE_64TO32=y', + 'BLAS_SIZE=4', + 'SCALAPACK_SIZE=4' + ]) + else: + args.extend([ + 'BLAS_SIZE=8', + 'SCALAPACK_SIZE=8' + ]) + if sys.platform == 'darwin': target = 'MACX64' args.extend([ @@ -73,6 +89,8 @@ class Nwchem(Package): with working_dir('src'): make('nwchem_config', *args) + if use32bitLinAlg: + make('64_to_32', *args) make(*args) # need to install by hand. Follow Ubuntu: -- cgit v1.2.3-60-g2f50 From 7eb386e55e2e69c968369505ab51b073fb23bdec Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 23 Aug 2016 14:51:40 +0200 Subject: nwchem: add patches --- .../builtin/packages/nwchem/Config_libs66.patch | 46 + .../builtin/packages/nwchem/Gcc6_optfix.patch | 21 + .../builtin/packages/nwchem/Util_gnumakefile.patch | 21 + .../builtin/packages/nwchem/cosmo_dftprint.patch | 26 + .../builtin/packages/nwchem/cosmo_meminit.patch | 172 + .../builtin/packages/nwchem/dplot_tolrho.patch | 45 + .../builtin/packages/nwchem/driver_smalleig.patch | 13 + .../repos/builtin/packages/nwchem/ga_argv.patch | 24 + .../repos/builtin/packages/nwchem/ga_defs.patch | 25 + var/spack/repos/builtin/packages/nwchem/package.py | 21 + .../builtin/packages/nwchem/raman_displ.patch | 311 + .../builtin/packages/nwchem/sym_abelian.patch | 18 + .../builtin/packages/nwchem/tddft_mxvec20.patch | 6858 ++++++++++++++++++++ .../builtin/packages/nwchem/tools_lib64.patch | 14 + .../repos/builtin/packages/nwchem/txs_gcc6.patch | 551 ++ .../repos/builtin/packages/nwchem/xccvs98.patch | 54 + .../repos/builtin/packages/nwchem/zgesdv.patch | 55 + 17 files changed, 8275 insertions(+) create mode 100755 var/spack/repos/builtin/packages/nwchem/Config_libs66.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/Gcc6_optfix.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/Util_gnumakefile.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/cosmo_dftprint.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/cosmo_meminit.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/dplot_tolrho.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/driver_smalleig.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/ga_argv.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/ga_defs.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/raman_displ.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/sym_abelian.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/tddft_mxvec20.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/tools_lib64.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/txs_gcc6.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/xccvs98.patch create mode 100755 var/spack/repos/builtin/packages/nwchem/zgesdv.patch diff --git a/var/spack/repos/builtin/packages/nwchem/Config_libs66.patch b/var/spack/repos/builtin/packages/nwchem/Config_libs66.patch new file mode 100755 index 0000000000..eda3c42ca9 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/Config_libs66.patch @@ -0,0 +1,46 @@ +Index: src/config/makefile.h +=================================================================== +--- src/config/makefile.h (revision 27729) ++++ src/config/makefile.h (revision 27844) +@@ -2257,11 +2258,7 @@ + DEFINES += -DFDIST + endif + +-_TOOLS_BUILD= $(shell [ -e ${NWCHEM_TOP}/src/tools/build/config.h ] && cat ${NWCHEM_TOP}/src/tools/build/config.h | awk ' /HAVE_SQRT/ {print "Y"}') +- +-ifeq ($(_TOOLS_BUILD),Y) + _USE_SCALAPACK = $(shell cat ${NWCHEM_TOP}/src/tools/build/config.h | awk ' /HAVE_SCALAPACK\ 1/ {print "Y"}') +-endif + + ifeq ($(_USE_SCALAPACK),Y) + DEFINES += -DSCALAPACK +@@ -2286,8 +2283,8 @@ + -brename:.pdgetrf_,.pdgetrf \ + -brename:.pdgetrs_,.pdgetrs + endif +- CORE_LIBS += $(ELPA) $(SCALAPACK) $(PBLAS) $(BLACS) + endif ++ CORE_LIBS += $(ELPA) $(SCALAPACK) + + ifdef USE_64TO32 + CORE_LIBS += -l64to32 +@@ -2436,18 +2433,11 @@ + DEFINES += -DUSE_F90_ALLOCATABLE + endif + +-ifeq ($(_TOOLS_BUILD),Y) + # lower level libs used by communication libraries + COMM_LIBS= $(shell grep ARMCI_NETWORK_LIBS\ = ${NWCHEM_TOP}/src/tools/build/Makefile | cut -b 22-) + COMM_LIBS += $(shell grep ARMCI_NETWORK_LDFLAGS\ = ${NWCHEM_TOP}/src/tools/build/Makefile | cut -b 24-) + #comex bit +-HAVE_COMEX = $(shell [ -e ${NWCHEM_TOP}/src/tools/build/comex/config.h ] && cat ${NWCHEM_TOP}/src/tools/build/comex/config.h| grep COMEX_NETWORK| awk ' / 1/ {print "Y"}') +-ifeq ($(HAVE_COMEX),Y) +-COMM_LIBS += $(shell grep LIBS\ = ${NWCHEM_TOP}/src/tools/build/comex/Makefile|grep -v _LIBS| cut -b 8-) +-#we often need pthread, let's add it +-COMM_LIBS += -lpthread +-endif +-endif ++COMM_LIBS += $(shell [ -e ${NWCHEM_TOP}/src/tools/build/comex/config.h ] && grep LIBS\ = ${NWCHEM_TOP}/src/tools/build/comex/Makefile|grep -v _LIBS| cut -b 8-) -lpthread + ifdef COMM_LIBS + CORE_LIBS += $(COMM_LIBS) + endif diff --git a/var/spack/repos/builtin/packages/nwchem/Gcc6_optfix.patch b/var/spack/repos/builtin/packages/nwchem/Gcc6_optfix.patch new file mode 100755 index 0000000000..20964015a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/Gcc6_optfix.patch @@ -0,0 +1,21 @@ +--- src/config/makefile.h.orig 2016-07-22 08:45:52.100229544 -0700 ++++ src/config/makefile.h 2016-07-22 08:49:00.321422169 -0700 +@@ -1565,6 +1565,7 @@ + GNU_GE_4_6 = $(shell [ $(GNUMAJOR) -gt 4 -o \( $(GNUMAJOR) -eq 4 -a $(GNUMINOR) -ge 6 \) ] && echo true) + GNU_GE_4_8 = $(shell [ $(GNUMAJOR) -gt 4 -o \( $(GNUMAJOR) -eq 4 -a $(GNUMINOR) -ge 8 \) ] && echo true) + endif ++ GNU_GE_6 = $(shell [ $(GNUMAJOR) -ge 6 ] && echo true) + ifeq ($(GNU_GE_4_6),true) + DEFINES += -DGCC46 + endif +@@ -1942,6 +1943,10 @@ + FOPTIMIZE += -O3 + FOPTIMIZE += -mfpmath=sse -ffast-math + FOPTIMIZE += -fprefetch-loop-arrays #-ftree-loop-linear ++ ifeq ($(GNU_GE_6),true) ++ FOPTIMIZE += -fno-tree-dominator-opts # solvation/hnd_cosmo_lib breaks ++ endif ++ + ifeq ($(GNU_GE_4_8),true) + FOPTIMIZE += -ftree-vectorize -fopt-info-vec + endif diff --git a/var/spack/repos/builtin/packages/nwchem/Util_gnumakefile.patch b/var/spack/repos/builtin/packages/nwchem/Util_gnumakefile.patch new file mode 100755 index 0000000000..44005c0af3 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/Util_gnumakefile.patch @@ -0,0 +1,21 @@ +Index: src/util/GNUmakefile +=================================================================== +--- src/util/GNUmakefile (revision 27774) ++++ src/util/GNUmakefile (revision 27782) +@@ -234,7 +234,7 @@ + + USES_BLAS = util.fh ga_it_lsolve.F ga_maxelt.F ga_mix.F ga_iter_diag.F \ + ga_orthog.F dabsmax.F ga_normf.F corr_mk_ref.F ga_it2.F ga_lkain_ext.F util_file_name.F dgefa.f util_patch_test.F stpr_sjacobi.F util_dgeev.F \ +- util_test_cholesky.F ++ util_test_cholesky.F dfill.f ga_lkain_2cpl3_ext.F ga_it2.F + + ifdef SPEECH + LIB_DEFINES += -DSPEECH +@@ -254,6 +254,7 @@ + ifeq ($(TARGET),$(findstring $(TARGET),BGL BGP BGQ)) + DEFINES += -DNEED_LOC + LIB_DEFINES += -DNO_UTIL_TESTS ++LIB_DEFINES += -I/bgsys/drivers/ppcfloor/firmware/include -I/bgsys/drivers/ppcfloor/spi/include/kernel + endif + + ifdef SLURM diff --git a/var/spack/repos/builtin/packages/nwchem/cosmo_dftprint.patch b/var/spack/repos/builtin/packages/nwchem/cosmo_dftprint.patch new file mode 100755 index 0000000000..81061a983a --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/cosmo_dftprint.patch @@ -0,0 +1,26 @@ +Index: src/nwdft/scf_dft/dft_scf.F +=================================================================== +--- src/nwdft/scf_dft/dft_scf.F (revision 28116) ++++ src/nwdft/scf_dft/dft_scf.F (revision 28117) +@@ -1884,6 +1884,13 @@ + if (abs(Edisp).gt.0.0d0) then + write(LuOut,224)Edisp + endif ++ if (cosmo_on.and.cosmo_phase.eq.2) then ++ if (do_cosmo_smd) then ++ write(LuOut,225) ecosmo+gcds ++ else ++ write(LuOut,225) ecosmo ++ end if ++ endif + if (do_zora) write(luout,2221) ener_scal + write(luout,2222) rho_n + write(luout,2223) dft_time +@@ -2457,6 +2464,7 @@ + & ' Correlation energy =', f22.12/ + & ' Nuclear repulsion energy =', f22.12/) + 224 format(' Dispersion correction =', f22.12/) ++ 225 format(' COSMO energy =', f22.12/) + c + 2221 format(' Scaling correction =', f22.12/) + 2222 format(' Numeric. integr. density =', f22.12/) diff --git a/var/spack/repos/builtin/packages/nwchem/cosmo_meminit.patch b/var/spack/repos/builtin/packages/nwchem/cosmo_meminit.patch new file mode 100755 index 0000000000..2f56e268ab --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/cosmo_meminit.patch @@ -0,0 +1,172 @@ +Index: src/solvation/hnd_cosmo_lib.F +=================================================================== +--- src/solvation/hnd_cosmo_lib.F (revision 27880) ++++ src/solvation/hnd_cosmo_lib.F (revision 27881) +@@ -92,26 +92,32 @@ + c & i_init,init)) + c & call errquit('hnd_cosset, malloc of init failed',911,MA_ERR) + c +- stat = .true. +- stat = stat.and.ma_push_get(mt_dbl,3*nat,"xyzatm",l_i10,i10) +- stat = stat.and.ma_push_get(mt_dbl, nat,"ratm",l_i20,i20) +- stat = stat.and.ma_push_get(mt_int, nat,"nspa",l_i30,i30) +- stat = stat.and.ma_push_get(mt_int, nat,"nppa",l_i40,i40) +- stat = stat.and.ma_push_get(mt_int,3*mxface,"ijkfac",l_i50,i50) +- stat = stat.and.ma_push_get(mt_dbl,3*mxface,"xyzseg",l_i60,i60) +- stat = stat.and.ma_push_get(mt_int, mxface,"ijkseg",l_i70,i70) +- stat = stat.and.ma_push_get(mt_log, mxface*nat,"insseg", +- & l_i80,i80) +- stat = stat.and.ma_push_get(mt_dbl,3*mxface*nat,"xyzspa", +- & l_i90,i90) +- stat = stat.and.ma_push_get(mt_int, mxface*nat,"ijkspa", +- & l_i100,i100) +- stat = stat.and.ma_push_get(mt_int, mxface*nat,"numpps", +- & l_i110,i110) +- stat = stat.and.ma_push_get(mt_dbl,3*mxapex ,"apex", +- & l_i120,i120) +- stat = stat.and.ma_push_get(mt_dbl, mxface*nat,"xyzff", +- & l_i130,i130) ++ if(.not.ma_push_get(mt_dbl,3*nat,"xyzatm",l_i10,i10)) ++ c call errquit('hndcosset: not enuf mem',0,MA_ERR) ++ if(.not.ma_push_get(mt_dbl, nat,"ratm",l_i20,i20)) ++ c call errquit('hndcosset: not enuf mem',1,MA_ERR) ++ if(.not.ma_push_get(mt_int, nat,"nspa",l_i30,i30)) ++ c call errquit('hndcosset: not enuf mem',2,MA_ERR) ++ if(.not.ma_push_get(mt_int, nat,"nppa",l_i40,i40)) ++ c call errquit('hndcosset: not enuf mem',3,MA_ERR) ++ if(.not.ma_push_get(mt_int,3*mxface,"ijkfac",l_i50,i50)) ++ c call errquit('hndcosset: not enuf mem',4,MA_ERR) ++ if(.not.ma_push_get(mt_dbl,3*mxface,"xyzseg",l_i60,i60)) ++ c call errquit('hndcosset: not enuf mem',5,MA_ERR) ++ if(.not.ma_push_get(mt_int, mxface,"ijkseg",l_i70,i70)) ++ c call errquit('hndcosset: not enuf mem',6,MA_ERR) ++ if(.not.ma_push_get(mt_log, mxface*nat,"insseg",l_i80,i80)) ++ c call errquit('hndcosset: not enuf mem',7,MA_ERR) ++ if(.not.ma_push_get(mt_dbl,3*mxface*nat,"xyzspa",l_i90,i90)) ++ c call errquit('hndcosset: not enuf mem',8,MA_ERR) ++ if(.not.ma_push_get(mt_int, mxface*nat,"ijkspa",l_i100,i100)) ++ c call errquit('hndcosset: not enuf mem',9,MA_ERR) ++ if(.not.ma_push_get(mt_int, mxface*nat,"numpps",l_i110,i110)) ++ c call errquit('hndcosset: not enuf mem',10,MA_ERR) ++ if(.not.ma_push_get(mt_dbl,3*mxapex ,"apex",l_i120,i120)) ++ c call errquit('hndcosset: not enuf mem',11,MA_ERR) ++ if(.not.ma_push_get(mt_dbl, mxface*nat,"xyzff",l_i130,i130)) ++ c call errquit('hndcosset: not enuf mem',12,MA_ERR) + c i10 =init ! xyzatm(3,nat) + c i20 =i10 +3*nat ! ratm( nat) + c i30 =i20 + nat ! nspa( nat) +@@ -129,9 +135,10 @@ + c + call hnd_cossrf(nat,c,radius,nat,mxface,mxapex, + 1 dbl_mb(i10),dbl_mb(i20),int_mb(i30),int_mb(i40), +- 2 int_mb(i50),dbl_mb(i60),int_mb(i70), +- 3 log_mb(i80),dbl_mb(i90),int_mb(i100),int_mb(i110), ++ 2 int_mb(i50),dbl_mb(i60),int_mb(i70),log_mb(i80), ++ 3 dbl_mb(i90),int_mb(i100),int_mb(i110), + 4 dbl_mb(i120),dbl_mb(i130),rtdb) ++ + c + c ----- release memory block ----- + c +@@ -157,7 +164,7 @@ + #include "global.fh" + #include "stdio.fh" + #include "cosmoP.fh" +-c ++#include "mafdecls.fh" + integer rtdb, nat + integer mxatm + integer mxfac +@@ -261,6 +268,7 @@ + c + c ----- create -solvent accessible surface- of the molecule ----- + c ++ + call hnd_cossas(nat,xyzatm,ratm,mxatm, + 1 nspa,nppa,xyzspa,ijkspa, + 2 nseg,nfac,xyzseg,ijkseg,insseg, +@@ -366,6 +374,7 @@ + #include "stdio.fh" + #include "bq.fh" + #include "prop.fh" ++cnew + #include "cosmoP.fh" + c + integer rtdb !< [Input] The RTDB handle +@@ -410,7 +419,6 @@ + integer numpps( mxface,mxatom) + double precision xyzff( mxface,mxatom) + double precision zero, one +- data zero /0.0d+00/ + data one /1.0d+00/ + integer l_efcc, k_efcc, l_efcs, k_efcs, l_efcz, k_efcz + integer l_efclb, k_efclb, k_efciat, l_efciat +@@ -464,7 +472,7 @@ + do i=1,mxface + ijkspa(i,iat)=0 + numpps(i,iat)=0 +- xyzff(i,iat)=zero ++ xyzff(i,iat)=0d0 + enddo + enddo + c +@@ -473,7 +481,7 @@ + c + do iat=1,nat + c +- if(ratm(iat).ne.zero) then ++ if(ratm(iat).ne.0d0) then + do iseg=1,nseg + ijkspa(iseg,iat)=ijkseg(iseg) + xyzff(iseg,iat)=one +@@ -515,7 +523,7 @@ + enddo + endif + else if (do_cosmo_model.eq.DO_COSMO_YK) then +- if((jat.ne.iat).and.(ratm(jat).ne.zero) ++ if((jat.ne.iat).and.(ratm(jat).ne.0d0) + 1 .and.(dij.lt.(ratm(iat)+rout(jat)))) then + do iseg=1,nseg + dum=dist(xyzspa(1,iseg,iat), +@@ -615,7 +623,7 @@ + c + nefc = 0 + do iat=1,nat +- if(ratm(iat).ne.zero) then ++ if(ratm(iat).ne.0d0) then + do iseg=1,nseg + if(.not.insseg(iseg,iat)) nefc = nefc+1 + enddo +@@ -639,11 +647,11 @@ + c save segment surfaces + c save segment to atom mapping + c +- srfmol=zero +- volmol=zero ++ srfmol=0d0 ++ volmol=0d0 + ief =0 + do iat=1,nat +- if(ratm(iat).ne.zero) then ++ if(ratm(iat).ne.0d0) then + if (do_cosmo_model.eq.DO_COSMO_KS) then + ratm_real=ratm(iat)-rsolv/bohr + else if (do_cosmo_model.eq.DO_COSMO_YK) then +@@ -720,7 +728,7 @@ + endif + c + do ief=1,nefc +- dbl_mb(k_efcz+ief-1)=zero ++ dbl_mb(k_efcz+ief-1)=0d0 + enddo + do ief=1,nefc + byte_mb(k_efclb+(ief-1)*8)=' ' +@@ -877,6 +885,8 @@ + implicit double precision (a-h,o-z) + #include "global.fh" + #include "stdio.fh" ++cnew ++#include "cosmoP.fh" + c + c ----- starting from -icosahedron- ----- + c diff --git a/var/spack/repos/builtin/packages/nwchem/dplot_tolrho.patch b/var/spack/repos/builtin/packages/nwchem/dplot_tolrho.patch new file mode 100755 index 0000000000..39db87ea7d --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/dplot_tolrho.patch @@ -0,0 +1,45 @@ +Index: src/dplot/dplot_input.F +=================================================================== +--- src/dplot/dplot_input.F (revision 27986) ++++ src/dplot/dplot_input.F (revision 27987) +@@ -63,6 +63,7 @@ + iroot = 1 + ltransden = .true. + ldiffden = .false. ++ tol_rho = 1d-40 + c + c try to get a scf movecs + c +@@ -263,10 +264,10 @@ + goto 10 + c + 1998 continue +- tol_rho = 1d-15 + If (.not. inp_f(tol_rho)) + & Call ErrQuit('DPlot_Input: failed to read tol_rho',0, + & INPUT_ERR) ++ tol_rho=max(1d-99,tol_rho) + goto 10 + c + 1999 continue +Index: src/dplot/dplot_dump.F +=================================================================== +--- src/dplot/dplot_dump.F (revision 27986) ++++ src/dplot/dplot_dump.F (revision 27987) +@@ -90,7 +90,7 @@ + . No_Of_Spacings(3)) + 99498 format(6E13.5) + enddo +- else ++ else + Do i = 1, nGrid + Write(Out_Unit,'(f15.10)')values(i) + End Do +@@ -107,6 +107,7 @@ + End Do + AppCh = Sum*Volume + Write(LuOut,*) ++ Write(LuOut,'(a,e30.5)')' Tol_rho = ',tol_rho + Write(LuOut,'(a,f30.5)')' Sum of elements = ',sum + Write(LuOut,'(a,f30.5)')' Integration volume = ',volume + Write(LuOut,'(a,f30.5)')' Integrated Charge = ',AppCh diff --git a/var/spack/repos/builtin/packages/nwchem/driver_smalleig.patch b/var/spack/repos/builtin/packages/nwchem/driver_smalleig.patch new file mode 100755 index 0000000000..24c777d78d --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/driver_smalleig.patch @@ -0,0 +1,13 @@ +Index: src/driver/opt_drv.F +=================================================================== +--- src/driver/opt_drv.F (revision 28005) ++++ src/driver/opt_drv.F (revision 28006) +@@ -1641,7 +1641,7 @@ + double precision lattice(6), scaler(3) ! periodic scaling + double precision dum1,dum2,dum3 + double precision smalleig +- parameter (smalleig = 1.0d-4) ++ parameter (smalleig = 1.0d-8) + logical geom_print_zmatrix + external geom_print_zmatrix + logical ophigh diff --git a/var/spack/repos/builtin/packages/nwchem/ga_argv.patch b/var/spack/repos/builtin/packages/nwchem/ga_argv.patch new file mode 100755 index 0000000000..ba13484f7e --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/ga_argv.patch @@ -0,0 +1,24 @@ +Index: src/tools/ga-5-4/gaf2c/gaf2c.c +=================================================================== +--- src/tools/ga-5-4/gaf2c/gaf2c.c (revision 10630) ++++ src/tools/ga-5-4/gaf2c/gaf2c.c (revision 10631) +@@ -106,6 +106,7 @@ + } + *argc = iargc; + *argv = iargv; ++ iargv[iargc] = 0; + } + + +Index: src/tools/ga-5-4/tcgmsg/fapi.c +=================================================================== +--- src/tools/ga-5-4/tcgmsg/fapi.c (revision 10630) ++++ src/tools/ga-5-4/tcgmsg/fapi.c (revision 10631) +@@ -197,6 +197,7 @@ + argv[i] = strdup(arg); + } + ++ argv[argc] = 0; + tcgi_pbegin(argc, argv); + free(argv); + } diff --git a/var/spack/repos/builtin/packages/nwchem/ga_defs.patch b/var/spack/repos/builtin/packages/nwchem/ga_defs.patch new file mode 100755 index 0000000000..f7fc469665 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/ga_defs.patch @@ -0,0 +1,25 @@ +Index: src/util/util_mpinap.c +=================================================================== +--- src/util/util_mpinap.c (revision 28079) ++++ src/util/util_mpinap.c (revision 28083) +@@ -17,7 +17,7 @@ + #ifdef MPI + MPI_Comm_rank(MPI_COMM_WORLD,&myid); + #else +- myid=ga_nodeid_(); ++ myid=GA_Nodeid(); + #endif + sleeptime=(myid+1)/((long) *factor); + #ifdef DEBUG +Index: src/util/util_getppn.c +=================================================================== +--- src/util/util_getppn.c (revision 28079) ++++ src/util/util_getppn.c (revision 28083) +@@ -8,6 +8,7 @@ + #include + #include + #include "ga.h" ++#include "ga-mpi.h" + #include "typesf2c.h" + + #if defined(__bgq__) diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 908e106fda..16e575d576 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -42,6 +42,27 @@ class Nwchem(Package): depends_on('python@2.7:2.8', type='build') + # patches for 6.6-27746: + # TODO: add support for achived patches, i.e. + # http://www.nwchem-sw.org/images/Tddft_mxvec20.patch.gz + patch('Config_libs66.patch', when='@6.6', level=0) + patch('Gcc6_optfix.patch', when='@6.6', level=0) + patch('Util_gnumakefile.patch', when='@6.6', level=0) + patch('cosmo_dftprint.patch', when='@6.6', level=0) + patch('cosmo_meminit.patch', when='@6.6', level=0) + patch('dplot_tolrho.patch', when='@6.6', level=0) + patch('driver_smalleig.patch', when='@6.6', level=0) + patch('ga_argv.patch', when='@6.6', level=0) + patch('ga_defs.patch', when='@6.6', level=0) + patch('raman_displ.patch', when='@6.6', level=0) + patch('sym_abelian.patch', when='@6.6', level=0) + patch('tddft_mxvec20.patch', when='@6.6', level=0) + patch('tools_lib64.patch', when='@6.6', level=0) + patch('txs_gcc6.patch', when='@6.6', level=0) + # patch('util_getppn.patch', when='@6.6', level=0) # FAILS + patch('xccvs98.patch', when='@6.6', level=0) + patch('zgesdv.patch', when='@6.6', level=0) + def install(self, spec, prefix): # see http://www.nwchem-sw.org/index.php/Compiling_NWChem args = [] diff --git a/var/spack/repos/builtin/packages/nwchem/raman_displ.patch b/var/spack/repos/builtin/packages/nwchem/raman_displ.patch new file mode 100755 index 0000000000..7ff9b65ea5 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/raman_displ.patch @@ -0,0 +1,311 @@ +Index: src/property/raman_input.F +=================================================================== +--- src/property/raman_input.F (revision 28032) ++++ src/property/raman_input.F (revision 28033) +@@ -47,6 +47,7 @@ + c + c set some defaults + c ++ field=' ' + plot = 'normal' ! normal or resonance + line = 'lorentzian' ! lorentzian (l) or gaussian (g) lineshape + width = 20.0D+00 ! full-width at half maximum (FWHM) in 1/cm +@@ -54,7 +55,6 @@ + hyperraman = .false. ! flag to calculate hyperaman terms + vroa = .false. ! flag to calculate vibrational raman spec + rmmodes = 0 +- first = 7 + last = 10000 + low = 0.0D+00 + high = 100000.0D+00 +@@ -132,9 +132,9 @@ + else if(inp_compare(.false.,'first',test)) then + if(.not. inp_i(first)) + $ call errquit(pname//'missing value for first',911, INPUT_ERR) +- if (.not. rtdb_put(rtdb,'raman:first',mt_int,1,first)) +- $ call errquit(pname//'rtdb put failed',0, RTDB_ERR) +-c --- determine first normal mode to use --- ++c --- not setting default here, it will be set later after ++c frequency calculation has been done so we know if we have ++c a linear molecule or not + else if(inp_compare(.false.,'last',test)) then + if(.not. inp_i(last)) ! FA-06-16-12 bug-fixed (BEF: first AFT: last) + $ call errquit(pname//'missing value for last',911, INPUT_ERR) +Index: src/property/task_raman.F +=================================================================== +--- src/property/task_raman.F (revision 28032) ++++ src/property/task_raman.F (revision 28033) +@@ -59,6 +59,7 @@ + + integer j,pos,first0 ! FA-06-15-12 + logical preraman ! FA-06-18-12 ++ logical linear + + character*32 pname + +@@ -107,6 +108,12 @@ + $ call errquit(pname//'rtdb_put freq_done',911, RTDB_ERR) + endif + c ++c --------Figure out if molecule is linear------------ ++ ++c if vib module doesn't list molecule as linear, assume it is not ++ if (.not. rtdb_get(rtdb,'vib:linear',mt_log,1,linear)) ++ $ linear=.false. ++c + c --------Create/load reference geometry to get the number of atoms------------ + + if (.not.geom_create(geom,'geometry')) call errquit +@@ -116,7 +123,11 @@ + if (.not. geom_ncent(geom,nat)) + & call errquit(pname//'geom_ncent failed?',3, GEOM_ERR) + nc = nat*3 +- rmmodes = nc-6 ++ if (linear) then ++ rmmodes = nc-5 ++ else ++ rmmodes = nc-6 ++ end if + + c if (ga_nodeid().eq.0) then + c write(*,1) nat,nc,rmmodes +@@ -146,8 +157,13 @@ + $ low = 0.0D+00 ! lowest wavenumber normal mode to use + if (.not. rtdb_get(rtdb,'raman:high',mt_dbl,1,high)) + $ high = 100000.0D+00 ! Highest wavenumber normal mode to use +- if (.not. rtdb_get(rtdb,'raman:first',mt_int,1,first)) +- $ first = 7 ! first normal mode to use ++ if (.not. rtdb_get(rtdb,'raman:first',mt_int,1,first)) then ++ if (linear) then ++ first = 6 ! first normal mode to use ++ else ++ first = 7 ! first normal mode to use ++ end if ++ end if + if (.not. rtdb_get(rtdb,'raman:last',mt_int,1,last)) + $ last = 10000 ! last normal mode to use + if (.not. rtdb_get(rtdb,'raman:hyperraman',mt_log,1,hyperraman)) +@@ -156,7 +172,11 @@ + $ vroa = .false. ! # flag to calculate vibrational + if (.not. rtdb_get(rtdb,'raman:preraman',mt_log,1,preraman)) + $ preraman = .false. ! # flag to do task_freq() and leave +- first0=7 ! constant ++ if (linear) then ++ first0=6 ! constant ++ else ++ first0=7 ! constant ++ end if + c ======== FA-debug =============== START + c if (ga_nodeid().eq.0) then + c write(*,2) plot,line,width,step_size,steps +@@ -172,8 +192,13 @@ + rmmodes = nc + c + c --- in case we want overide the defaults for modes to include --- +- if (.not. rtdb_get(rtdb,'raman:first',mt_int,1,first)) +- $ first = 7 ! srtep size for displacement along modes ++ if (.not. rtdb_get(rtdb,'raman:first',mt_int,1,first)) then ++ if (linear) then ++ first = 6 ! srtep size for displacement along modes ++ else ++ first = 7 ! srtep size for displacement along modes ++ end if ++ end if + endif + c + c ----------alocate space for freq and normal modes---------------------------- +@@ -294,7 +319,7 @@ + c ------------enough setup really do the calculation------------------------ + if (.not.preraman) then + call task_raman_doit(rtdb,geom,nc,nat, +- & first0, ! = 7 constant ++ & first0, ! = 6 or 7 + & first,last,rmmodes, + & steps,nfreq,plot,line,width, + & step_size, +@@ -336,7 +361,7 @@ + c + c == perform raman calculation == + subroutine task_raman_doit(rtdb,geom,nc,nat, +- & first0, ! = 7 constant ++ & first0, ! = 6 or 7 + & first,last,rmmodes, + & steps,nfreq, + & plot,line,width, +@@ -495,7 +520,7 @@ + & lbl_raman, ! in: raman label + & begin, ! in: + & last, ! in: +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +@@ -519,7 +544,7 @@ + & lbl_raman, ! in: raman label + & mode_ini, ! in: + & mode_end, ! in: +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +@@ -541,7 +566,7 @@ + & lbl_raman, ! in: raman label + & begin, ! in: starting mode + & last, ! in: ending mode +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +@@ -596,7 +621,7 @@ + & rmmodes, ! in: total nr. modes + & rminfo, ! in: stores raman info + & nc,nat, ! in: (nc,nat)=(nr coord,nr atoms) +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +@@ -757,7 +782,8 @@ + & step_size, + & rminfo, + & eigenvecs, +- & mass) ++ & mass, ++ & first0) + c ======== FA: Writing to file rminfo ========= START + c if (ga_nodeid().eq.0) + c & write(*,*) 'BEF raman_write() ...' +@@ -783,7 +809,7 @@ + & lbl_raman, ! in: raman label + & begin, ! in: starting mode + & last, ! in: ending mode +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +@@ -890,7 +916,7 @@ + & rmmodes, ! in: total nr. modes + & rminfo, ! in: stores raman info + & nc,nat, ! in: (nc,nat)=(nr coord,nr atoms) +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +@@ -915,7 +941,7 @@ + & lbl_raman, ! in: raman label + & mode_ini, ! in: + & mode_end, ! in: +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +@@ -1036,7 +1062,7 @@ + & rmmodes, ! in: total nr. modes + & rminfo, ! in: stores raman info + & nc,nat, ! in: (nc,nat)=(nr coord,nr atoms) +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +@@ -1058,7 +1084,7 @@ + & lbl_raman, ! in: raman label + & begin, ! in: + & last, ! in: +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +@@ -1139,7 +1165,7 @@ + & rmmodes, ! in: total nr. modes + & rminfo, ! in: stores raman info + & nc,nat, ! in: (nc,nat)=(nr coord,nr atoms) +- & first0, ! in: = 7 constant ++ & first0, ! in: = 6 or 7 + & eigenvecs, ! in: hessian data (modes) + & eigenvals, ! in: hessian data (frequencies) + & mass, ! in: mass(i) i=1,nat +Index: src/property/raman.F +=================================================================== +--- src/property/raman.F (revision 28032) ++++ src/property/raman.F (revision 28033) +@@ -29,8 +29,8 @@ + integer rtdb ! [input] rtdb handle + integer natom ! [input] number of atoms + integer nat3 ! [input] 3*number of atoms +- integer first ! first mode to consider in aoresponse (default =7 ramana =1 hyperraman) +- integer tmpmode ! set to fill rminfo from 1 ( not 7 for raman calc) ++ integer first ! first mode to consider in aoresponse (default =6 or 7 raman =1 hyperraman) ++ integer tmpmode ! set to fill rminfo from 1 ( not 6 or 7 for raman calc) + integer rmmodes ! # of raman active modes + + double precision rminfo(rmmodes,4) ! data for raman spec +@@ -41,6 +41,10 @@ + double precision ncoords(3,natom) ! [scratch] coords after step + double precision steps(3,natom) ! [scratch] step generated by vector and scaled + c ++ double precision length_of_step, scale ++ double precision ddot ++ external ddot ++c + parameter (bohr2ang=0.52917724924D+00) ! CONVERSION OF BOHR to ANGSTROMS + c -------------determine sign of the step--------------------------------- + if (iii.eq.1) then +@@ -57,13 +61,16 @@ + c & i4,',',i4,',',i4,',',i4,',',f15.8,')') + c ======= FA-check rminfo(x,1) ======== END + c -------------------------------------------------------------------- +- ivec = 1 +- do iatom = 1,natom +- do ixyz = 1,3 +- steps(ixyz,iatom)=sign*step_size*eigenvecs(ivec,imode) +- ivec = ivec + 1 +- enddo ! ixyz +- enddo ! iatom ++ ivec = 1 ++ do iatom = 1,natom ++ do ixyz = 1,3 ++ steps(ixyz,iatom)=eigenvecs(ivec,imode) ++ ivec = ivec + 1 ++ enddo ! ixyz ++ enddo ! iatom ++ length_of_step = sqrt(ddot(nat3,steps,1,steps,1)) ++ scale = sign*step_size/length_of_step ++ call dscal(nat3,scale,steps,1) + + call daxpy(nat3,1.0d00,steps,1,ncoords,1) ! mult coords + if (.not. geom_cart_coords_set(geom,ncoords)) +@@ -85,7 +92,8 @@ + & step_size,! in : step of finite differencing + & rminfo, ! in : Raman data + & eigenvecs,! in : normal modes eigenvectors (nat3,nat3) +- & mass) ! in : mass ++ & mass, ! in : mass ++ & first0) ! in : first nonzero mode (6 or 7) + c + c Authors: Jonathan Mullin, Northwestern University (ver 1: Jan. 2011) + c Fredy W. Aquino, Northwestern University (ver 2: Oct. 2012) +@@ -108,6 +116,7 @@ + integer imode ! mode # + integer natom ! [input] number of atoms + integer nat3 ! [input] 3*number of atoms ++ integer first0 ! [input] first nonzero mode (6 or 7) + c + double precision rminfo(rmmodes,4) ! raman data + double precision step_size,stepsize ! [input] step of finite differencing +@@ -134,7 +143,7 @@ + call dfill(3*natom,0.0D+00,tmode,1) ! + c zero + stepsize = zero +- m = imode - 6 ++ m = imode - first0 + 1 + j=1 + i=1 + ar2 = zero ! alpha real diff --git a/var/spack/repos/builtin/packages/nwchem/sym_abelian.patch b/var/spack/repos/builtin/packages/nwchem/sym_abelian.patch new file mode 100755 index 0000000000..8db21440db --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/sym_abelian.patch @@ -0,0 +1,18 @@ +Index: src/symmetry/sym_abelian.F +=================================================================== +--- src/symmetry/sym_abelian.F (revision 27901) ++++ src/symmetry/sym_abelian.F (revision 27902) +@@ -10,9 +10,11 @@ + c + character*8 group + integer nab, ind +- parameter (nab = 8) ++ parameter (nab = 18) + character*4 ab(nab) +- data ab/ 'C1','Cs','Ci','C2','D2','C2v','C2h','D2h'/ ++ data ab/ 'C1','Cs','Ci','C2','D2','C2v','C2h','D2h', ++ C 'C3','C4','C5','C6','C7','C8', ++ C 'C3h','C4h','C5h','C6h'/ + c + call sym_group_name(geom, group) + c diff --git a/var/spack/repos/builtin/packages/nwchem/tddft_mxvec20.patch b/var/spack/repos/builtin/packages/nwchem/tddft_mxvec20.patch new file mode 100755 index 0000000000..26a85820db --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/tddft_mxvec20.patch @@ -0,0 +1,6858 @@ +Index: QA/tests/tddft_h2o_mxvc20/tddft_h2o_mxvc20.nw +=================================================================== +--- QA/tests/tddft_h2o_mxvc20/tddft_h2o_mxvc20.nw (revision 27754) ++++ QA/tests/tddft_h2o_mxvc20/tddft_h2o_mxvc20.nw (revision 27755) +@@ -32,7 +32,7 @@ + cis + nroots 10 + #print convergence +-maxvecs 20 ++#maxvecs 20 + end + + task tddft energy +@@ -42,7 +42,7 @@ + algorithm 3 + nroots 10 + #print convergence +-maxvecs 20 ++#maxvecs 20 + end + + task tddft energy +@@ -50,7 +50,7 @@ + tddft + nroots 9 + #print convergence +-maxvecs 36 ++#maxvecs 36 + end + + task tddft energy +@@ -59,7 +59,7 @@ + algorithm 3 + nroots 9 + #print convergence +-maxvecs 36 ++#maxvecs 36 + end + + task tddft energy +Index: QA/tests/tddft_h2o_mxvc20/tddft_h2o_mxvc20.out +=================================================================== +--- QA/tests/tddft_h2o_mxvc20/tddft_h2o_mxvc20.out (revision 27754) ++++ QA/tests/tddft_h2o_mxvc20/tddft_h2o_mxvc20.out (revision 27755) +@@ -75,7 +75,7 @@ + + + +- Northwest Computational Chemistry Package (NWChem) 6.0 ++ Northwest Computational Chemistry Package (NWChem) 6.6 + ------------------------------------------------------ + + +@@ -83,7 +83,7 @@ + Pacific Northwest National Laboratory + Richland, WA 99352 + +- Copyright (c) 1994-2010 ++ Copyright (c) 1994-2015 + Pacific Northwest National Laboratory + Battelle Memorial Institute + +@@ -108,29 +108,31 @@ + Job information + --------------- + +- hostname = arcen +- program = ../../../bin/LINUX64/nwchem +- date = Thu Jan 27 21:34:51 2011 ++ hostname = moser ++ program = /home/edo/nwchem-6.6/bin/LINUX64/nwchem ++ date = Tue Oct 20 12:50:57 2015 + +- compiled = Thu_Jan_27_18:50:29_2011 +- source = /home/d3y133/nwchem-dev/nwchem-r19858M +- nwchem branch = Development +- input = tddft_h2o_mxvc20.nw +- prefix = tddft_h2o_dat. +- data base = ./tddft_h2o_dat.db +- status = startup +- nproc = 1 +- time left = -1s ++ compiled = Tue_Oct_20_12:33:43_2015 ++ source = /home/edo/nwchem-6.6 ++ nwchem branch = 6.6 ++ nwchem revision = 27746 ++ ga revision = 10594 ++ input = tddft_h2o_mxvc20.nw ++ prefix = tddft_h2o_dat. ++ data base = ./tddft_h2o_dat.db ++ status = startup ++ nproc = 1 ++ time left = -1s + + + + Memory information + ------------------ + +- heap = 16384001 doubles = 125.0 Mbytes +- stack = 16384001 doubles = 125.0 Mbytes +- global = 32768000 doubles = 250.0 Mbytes (distinct from heap & stack) +- total = 65536002 doubles = 500.0 Mbytes ++ heap = 13107194 doubles = 100.0 Mbytes ++ stack = 13107199 doubles = 100.0 Mbytes ++ global = 26214400 doubles = 200.0 Mbytes (distinct from heap & stack) ++ total = 52428793 doubles = 400.0 Mbytes + verify = yes + hardfail = no + +@@ -246,9 +248,6 @@ + + + +- library name resolved from: .nwchemrc +- library file name is: +- + Basis "ao basis" -> "" (cartesian) + ----- + O (Oxygen) +@@ -306,6 +305,24 @@ + TDDFT H2O B3LYP/6-31G** QA TEST + + ++ ++ ++ Summary of "ao basis" -> "ao basis" (cartesian) ++ ------------------------------------------------------------------------------ ++ Tag Description Shells Functions and Types ++ ---------------- ------------------------------ ------ --------------------- ++ O 6-31G** 6 15 3s2p1d ++ H 6-31G** 3 5 2s1p ++ ++ ++ Symmetry analysis of basis ++ -------------------------- ++ ++ a1 12 ++ a2 2 ++ b1 7 ++ b2 4 ++ + Caching 1-el integrals + + General Information +@@ -408,60 +425,71 @@ + + Integral file = ./tddft_h2o_dat.aoints.0 + Record size in doubles = 65536 No. of integs per rec = 43688 +- Max. records in memory = 2 Max. records in file = 58808 ++ Max. records in memory = 2 Max. records in file = 17699 + No. of bits per label = 8 No. of bits per value = 64 + + + Grid_pts file = ./tddft_h2o_dat.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 +- Max. records in memory = 23 Max. recs in file = 313621 ++ Max. records in memory = 23 Max. recs in file = 94394 + + + Memory utilization after 1st SCF pass: +- Heap Space remaining (MW): 15.97 15968615 +- Stack Space remaining (MW): 16.38 16383754 ++ Heap Space remaining (MW): 12.69 12691738 ++ Stack Space remaining (MW): 13.11 13106924 + + convergence iter energy DeltaE RMS-Dens Diis-err time + ---------------- ----- ----------------- --------- --------- --------- ------ +- d= 0,ls=0.0,diis 1 -76.3831043483 -8.55D+01 2.99D-02 3.76D-01 0.4 +- d= 0,ls=0.0,diis 2 -76.3778006993 5.30D-03 1.50D-02 4.71D-01 0.6 +- d= 0,ls=0.0,diis 3 -76.4187590600 -4.10D-02 1.91D-03 1.12D-02 0.8 +- d= 0,ls=0.0,diis 4 -76.4197294137 -9.70D-04 1.79D-04 8.76D-05 1.0 +- d= 0,ls=0.0,diis 5 -76.4197379183 -8.50D-06 8.11D-06 7.61D-08 1.3 +- d= 0,ls=0.0,diis 6 -76.4197379268 -8.52D-09 1.37D-06 1.22D-09 1.5 ++ d= 0,ls=0.0,diis 1 -76.3831043482 -8.55D+01 2.99D-02 3.76D-01 0.3 ++ d= 0,ls=0.0,diis 2 -76.3778001074 5.30D-03 1.50D-02 4.71D-01 0.5 ++ d= 0,ls=0.0,diis 3 -76.4187590321 -4.10D-02 1.91D-03 1.12D-02 0.6 ++ d= 0,ls=0.0,diis 4 -76.4197294136 -9.70D-04 1.79D-04 8.76D-05 0.8 ++ d= 0,ls=0.0,diis 5 -76.4197379182 -8.50D-06 8.11D-06 7.61D-08 0.9 ++ d= 0,ls=0.0,diis 6 -76.4197379267 -8.52D-09 1.37D-06 1.22D-09 1.0 + + +- Total DFT energy = -76.419737926815 +- One electron energy = -123.023412121603 +- Coulomb energy = 46.835755724753 +- Exchange-Corr. energy = -9.351522912517 ++ Total DFT energy = -76.419737926699 ++ One electron energy = -123.023412060652 ++ Coulomb energy = 46.835755655491 ++ Exchange-Corr. energy = -9.351522904089 + Nuclear repulsion energy = 9.119441382552 + + Numeric. integr. density = 10.000001105930 + +- Total iterative time = 1.4s ++ Total iterative time = 0.9s + + + ++ Occupations of the irreducible representations ++ ---------------------------------------------- ++ ++ irrep alpha beta ++ -------- -------- -------- ++ a1 3.0 3.0 ++ a2 0.0 0.0 ++ b1 1.0 1.0 ++ b2 1.0 1.0 ++ ++ + DFT Final Molecular Orbital Analysis + ------------------------------------ + + Vector 1 Occ=2.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.2D-13, -2.2D-16, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -2.2D-13, -2.5D-15, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 1 0.992881 1 O s + + Vector 2 Occ=2.000000D+00 E=-9.973144D-01 Symmetry=a1 +- MO Center= -4.3D-11, -6.3D-13, -8.7D-02, r^2= 5.0D-01 ++ MO Center= -4.8D-11, -1.9D-12, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 2 -0.467607 1 O s 6 -0.422149 1 O s +- 1 0.210485 1 O s 21 -0.151985 3 H s +- 16 -0.151985 2 H s ++ 2 0.467607 1 O s 6 0.422149 1 O s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=2.000000D+00 E=-5.149842D-01 Symmetry=b1 +- MO Center= 7.3D-11, -1.3D-13, -1.1D-01, r^2= 7.9D-01 ++ MO Center= 7.5D-11, -4.0D-13, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 0.513997 1 O px 7 0.247229 1 O px +@@ -469,103 +497,103 @@ + 17 0.157240 2 H s 22 -0.157240 3 H s + + Vector 4 Occ=2.000000D+00 E=-3.710239D-01 Symmetry=a1 +- MO Center= -1.1D-11, -8.8D-25, 1.9D-01, r^2= 7.0D-01 ++ MO Center= -1.3D-13, -1.9D-12, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 -0.552652 1 O pz 6 -0.416361 1 O s +- 9 -0.364042 1 O pz 2 -0.174171 1 O s ++ 5 0.552652 1 O pz 6 0.416361 1 O s ++ 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=2.000000D+00 E=-2.919627D-01 Symmetry=b2 +- MO Center= 6.4D-13, 4.5D-13, 9.4D-02, r^2= 5.9D-01 ++ MO Center= -1.6D-25, 3.6D-12, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534608D-02 Symmetry=a1 +- MO Center= 5.8D-11, 3.7D-13, -6.2D-01, r^2= 2.4D+00 ++ MO Center= -1.8D-11, -6.2D-25, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.261194 1 O s 17 0.969306 2 H s +- 22 0.969306 3 H s 9 0.469997 1 O pz +- 5 0.275960 1 O pz ++ 6 1.261194 1 O s 17 -0.969306 2 H s ++ 22 -0.969306 3 H s 9 -0.469997 1 O pz ++ 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512260D-01 Symmetry=b1 +- MO Center= -1.0D-10, 4.6D-23, -5.7D-01, r^2= 2.5D+00 ++ MO Center= -4.6D-12, -2.5D-14, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 1.286510 3 H s 17 -1.286510 2 H s +- 7 0.758485 1 O px 3 0.410623 1 O px ++ 17 1.286510 2 H s 22 -1.286510 3 H s ++ 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 4.9D-10, 1.9D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 3.9D-10, 1.5D-13, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 17 0.795376 2 H s 22 -0.795376 3 H s +- 16 -0.770846 2 H s 21 0.770846 3 H s +- 12 0.460025 1 O dxz 3 0.202259 1 O px +- 7 0.166493 1 O px ++ 17 -0.795376 2 H s 22 0.795376 3 H s ++ 16 0.770846 2 H s 21 -0.770846 3 H s ++ 12 -0.460025 1 O dxz 3 -0.202259 1 O px ++ 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055100D-01 Symmetry=a1 +- MO Center= -4.5D-10, -8.2D-14, -1.7D-01, r^2= 1.5D+00 ++ MO Center= -3.7D-10, -4.7D-13, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 0.647808 1 O pz 22 -0.601436 3 H s +- 17 -0.601436 2 H s 21 0.566893 3 H s +- 16 0.566893 2 H s 9 -0.558050 1 O pz ++ 5 0.647808 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566893 2 H s ++ 21 0.566893 3 H s 9 -0.558050 1 O pz + 10 0.262150 1 O dxx 6 0.238810 1 O s +- 23 -0.164396 3 H px 18 0.164396 2 H px ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913501D-01 Symmetry=b2 +- MO Center= 8.8D-14, 1.3D-11, 1.1D-01, r^2= 1.1D+00 ++ MO Center= -2.5D-13, -5.7D-11, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 8 1.037304 1 O py 4 -0.959670 1 O py ++ 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935284D-01 Symmetry=a1 +- MO Center= -2.5D-11, -1.3D-11, 2.6D-01, r^2= 1.5D+00 ++ MO Center= -7.9D-12, 5.6D-11, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.350168 1 O s 2 0.816729 1 O s +- 9 -0.807031 1 O pz 5 0.529853 1 O pz +- 21 -0.502430 3 H s 16 -0.502430 2 H s +- 22 0.381526 3 H s 17 0.381526 2 H s +- 13 0.323630 1 O dyy 15 0.272322 1 O dzz ++ 6 1.350168 1 O s 2 -0.816729 1 O s ++ 9 0.807031 1 O pz 5 -0.529853 1 O pz ++ 16 0.502430 2 H s 21 0.502430 3 H s ++ 17 -0.381526 2 H s 22 -0.381526 3 H s ++ 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= 2.7D-13, -2.9D-25, 1.2D-01, r^2= 1.6D+00 ++ MO Center= -1.3D-11, 1.3D-23, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 17 0.963662 2 H s +- 22 -0.963662 3 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152362 2 H s +- 21 -0.152362 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152362 2 H s ++ 21 0.152362 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175374D+00 Symmetry=a1 +- MO Center= 1.5D-11, -1.5D-13, -3.7D-01, r^2= 1.4D+00 ++ MO Center= 1.3D-11, 1.9D-12, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -3.527322 1 O s 2 1.425462 1 O s +- 9 0.990461 1 O pz 17 0.770199 2 H s +- 22 0.770199 3 H s 10 0.625764 1 O dxx +- 5 -0.351436 1 O pz 15 0.333460 1 O dzz +- 21 0.326676 3 H s 16 0.326676 2 H s ++ 6 3.527322 1 O s 2 -1.425462 1 O s ++ 9 -0.990461 1 O pz 17 -0.770199 2 H s ++ 22 -0.770199 3 H s 10 -0.625764 1 O dxx ++ 5 0.351436 1 O pz 15 -0.333460 1 O dzz ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529509D+00 Symmetry=a2 +- MO Center= 8.4D-12, -1.8D-14, -1.3D-01, r^2= 7.7D-01 ++ MO Center= 2.8D-13, 4.1D-13, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 11 1.177966 1 O dxy 19 0.350698 2 H py + 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -3.7D-12, -1.2D-13, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -6.3D-12, -5.2D-14, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 0.901910 1 O s 15 -0.788597 1 O dzz + 9 -0.519667 1 O pz 2 -0.323895 1 O s +- 10 0.255740 1 O dxx 25 0.248205 3 H pz +- 20 0.248205 2 H pz 13 0.245550 1 O dyy +- 21 -0.237555 3 H s 16 -0.237555 2 H s ++ 10 0.255740 1 O dxx 20 0.248205 2 H pz ++ 25 0.248205 3 H pz 13 0.245550 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + center of mass +@@ -583,17 +611,17 @@ + + L x y z total alpha beta nuclear + - - - - ----- ----- ---- ------- +- 0 0 0 0 0.000000 -5.000000 -5.000000 10.000000 ++ 0 0 0 0 -0.000000 -5.000000 -5.000000 10.000000 + +- 1 1 0 0 0.000000 0.000000 0.000000 0.000000 ++ 1 1 0 0 -0.000000 -0.000000 -0.000000 0.000000 + 1 0 1 0 0.000000 0.000000 0.000000 0.000000 + 1 0 0 1 -0.803751 -0.401875 -0.401875 0.000000 + + 2 2 0 0 -3.194726 -3.656400 -3.656400 4.118075 +- 2 1 1 0 0.000000 0.000000 0.000000 0.000000 ++ 2 1 1 0 -0.000000 -0.000000 -0.000000 0.000000 + 2 1 0 1 0.000000 0.000000 0.000000 0.000000 + 2 0 2 0 -5.306780 -2.653390 -2.653390 0.000000 +- 2 0 1 1 0.000000 0.000000 0.000000 0.000000 ++ 2 0 1 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 0 2 -4.442836 -3.236337 -3.236337 2.029839 + + +@@ -638,7 +666,7 @@ + Alpha electrons : 5 + Beta electrons : 5 + No. of roots : 10 +- Max subspacesize : 100 ++ Max subspacesize : 6000 + Max iterations : 100 + Target root : 1 + Target symmetry : none +@@ -648,27 +676,27 @@ + + Memory Information + ------------------ +- Available GA space size is 32767375 doubles +- Available MA space size is 32766361 doubles ++ Available GA space size is 26213775 doubles ++ Available MA space size is 26212684 doubles + Length of a trial vector is 100 + Algorithm : Incore multiple tensor contraction +- Estimated peak GA usage is 82875 doubles ++ Estimated peak GA usage is 1852875 doubles + Estimated peak MA usage is 51000 doubles + +- 10 smallest eigenvalue differences ++ 10 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 4 6 a1 0.06535 -0.37102 11.87 +- 3 1 5 7 a2 0.15123 -0.29196 12.06 +- 4 1 4 7 b1 0.15123 -0.37102 14.21 +- 5 1 3 6 b1 0.06535 -0.51498 15.79 +- 6 1 3 7 a1 0.15123 -0.51498 18.13 +- 7 1 5 8 a2 0.75685 -0.29196 28.54 +- 8 1 2 6 a1 0.06535 -0.99731 28.92 +- 9 1 5 9 b2 0.80551 -0.29196 29.86 +- 10 1 4 8 b1 0.75685 -0.37102 30.69 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 1 4 6 a1 -0.371 0.065 11.874 ++ 3 1 5 7 a2 -0.292 0.151 12.060 ++ 4 1 4 7 b1 -0.371 0.151 14.211 ++ 5 1 3 6 b1 -0.515 0.065 15.792 ++ 6 1 3 7 a1 -0.515 0.151 18.129 ++ 7 1 5 8 a2 -0.292 0.757 28.540 ++ 8 1 2 6 a1 -0.997 0.065 28.916 ++ 9 1 5 9 b2 -0.292 0.806 29.864 ++ 10 1 4 8 b1 -0.371 0.757 30.691 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -676,182 +704,142 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 10 0 0.24E+00 0.10+100 3.0 +- 2 20 0 0.30E-01 0.62E-01 3.0 +- 3 30 3 0.61E-02 0.11E-02 3.0 +- 4 37 7 0.13E-02 0.42E-04 2.2 +- 5 40 10 0.66E-04 0.29E-06 1.3 ++ 1 10 0 0.24E+00 0.10+100 1.9 ++ 2 20 0 0.30E-01 0.62E-01 2.0 ++ 3 30 3 0.61E-02 0.11E-02 1.9 ++ 4 37 7 0.13E-02 0.42E-04 1.5 ++ 5 40 10 0.66E-04 0.29E-06 0.8 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. ++ Ground state a1 -76.419737926699 a.u. + +- ------------------------------------------------------- +- Root 1 singlet b2 0.295377097 a.u. ( 8.0376232 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y -0.26343 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 ++ ---------------------------------------------------------------------------- ++ Root 1 singlet b2 0.295377097 a.u. 8.0376 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.26343 Z -0.00000 ++ Transition Moments XX 0.00000 XY 0.00000 XZ -0.00000 + Transition Moments YY 0.00000 YZ 0.07629 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY -0.95106 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY -1.63778 YYZ 0.00000 YZZ -0.73751 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.01366 ++ Dipole Oscillator Strength 0.01366 + +- Occ. 5 b2 --- Virt. 6 a1 0.99951 +- ------------------------------------------------------- +- Root 2 singlet a2 0.369342122 a.u. ( 10.0503148 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY -0.24181 XZ 0.00000 ++ Occ. 5 b2 --- Virt. 6 a1 -0.99951 ++ ---------------------------------------------------------------------------- ++ Root 2 singlet a2 0.369342122 a.u. 10.0503 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.00000 ++ Transition Moments XX -0.00000 XY 0.24181 XZ 0.00000 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.34811 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 b2 --- Virt. 7 b1 -0.99928 +- ------------------------------------------------------- +- Root 3 singlet a1 0.390030664 a.u. ( 10.6132789 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.63051 +- Transition Moments XX -0.66914 XY 0.00000 XZ 0.00000 ++ Occ. 5 b2 --- Virt. 7 b1 -0.99928 ++ ---------------------------------------------------------------------------- ++ Root 3 singlet a1 0.390030664 a.u. 10.6133 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z 0.63051 ++ Transition Moments XX -0.66914 XY 0.00000 XZ -0.00000 + Transition Moments YY -0.11256 YZ 0.00000 ZZ -0.47960 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 1.78260 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.93744 YZZ 0.00000 +- Transition Moments ZZZ 3.69654 +- Dipole Oscillator Strength 0.10337 ++ Dipole Oscillator Strength 0.10337 + +- Occ. 3 b1 --- Virt. 7 b1 0.14371 +- Occ. 4 a1 --- Virt. 6 a1 0.98714 +- ------------------------------------------------------- +- Root 4 singlet b1 0.469576735 a.u. ( 12.7778385 eV) +- ------------------------------------------------------- +- Transition Moments X -0.49420 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.57166 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX -2.43730 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY -0.51103 XYZ 0.00000 XZZ -1.56449 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.07646 ++ Occ. 3 b1 --- Virt. 7 b1 -0.14371 ++ Occ. 4 a1 --- Virt. 6 a1 0.98714 ++ ---------------------------------------------------------------------------- ++ Root 4 singlet b1 0.469576735 a.u. 12.7778 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.49420 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY 0.00000 XZ -0.57166 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.07646 + +- Occ. 3 b1 --- Virt. 6 a1 -0.21504 +- Occ. 4 a1 --- Virt. 7 b1 -0.97435 +- ------------------------------------------------------- +- Root 5 singlet b1 0.535612366 a.u. ( 14.5747602 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 6 a1 -0.21504 ++ Occ. 4 a1 --- Virt. 7 b1 0.97435 ++ ---------------------------------------------------------------------------- ++ Root 5 singlet b1 0.535612365 a.u. 14.5748 eV ++ ---------------------------------------------------------------------------- + Transition Moments X -1.12071 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 1.01277 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX -7.65908 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY -1.51267 XYZ 0.00000 XZZ -2.70320 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.44848 ++ Transition Moments XX -0.00000 XY -0.00000 XZ 1.01277 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.44848 + +- Occ. 3 b1 --- Virt. 6 a1 0.97526 +- Occ. 4 a1 --- Virt. 7 b1 -0.21256 +- ------------------------------------------------------- +- Root 6 singlet a1 0.663605983 a.u. ( 18.0576453 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.75398 +- Transition Moments XX -2.03689 XY 0.00000 XZ 0.00000 ++ Occ. 3 b1 --- Virt. 6 a1 -0.97526 ++ Occ. 4 a1 --- Virt. 7 b1 -0.21256 ++ ---------------------------------------------------------------------------- ++ Root 6 singlet a1 0.663605983 a.u. 18.0576 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z 0.75398 ++ Transition Moments XX -2.03689 XY 0.00000 XZ -0.00000 + Transition Moments YY -0.12328 YZ 0.00000 ZZ -0.65306 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 2.99076 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.90016 YZZ 0.00000 +- Transition Moments ZZZ 3.17499 +- Dipole Oscillator Strength 0.25150 ++ Dipole Oscillator Strength 0.25150 + +- Occ. 2 a1 --- Virt. 6 a1 0.09486 +- Occ. 3 b1 --- Virt. 7 b1 -0.96292 +- Occ. 4 a1 --- Virt. 6 a1 0.12508 +- Occ. 4 a1 --- Virt. 9 a1 -0.10386 +- Occ. 4 a1 --- Virt. 11 a1 -0.08161 +- Occ. 5 b2 --- Virt. 10 b2 -0.15800 +- ------------------------------------------------------- +- Root 7 singlet a2 0.962306522 a.u. ( 26.1857039 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY -0.42398 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ -0.19812 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Occ. 2 a1 --- Virt. 6 a1 0.09486 ++ Occ. 3 b1 --- Virt. 7 b1 0.96292 ++ Occ. 4 a1 --- Virt. 6 a1 0.12508 ++ Occ. 4 a1 --- Virt. 9 a1 0.10386 ++ Occ. 4 a1 --- Virt. 11 a1 -0.08161 ++ Occ. 5 b2 --- Virt. 10 b2 0.15800 ++ ---------------------------------------------------------------------------- ++ Root 7 singlet a2 0.962306522 a.u. 26.1857 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z 0.00000 ++ Transition Moments XX 0.00000 XY -0.42398 XZ -0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 b2 --- Virt. 8 b1 0.99956 +- ------------------------------------------------------- +- Root 8 singlet b2 1.010100767 a.u. ( 27.4862521 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 8 b1 -0.99956 ++ ---------------------------------------------------------------------------- ++ Root 8 singlet b2 1.010100767 a.u. 27.4863 eV ++ ---------------------------------------------------------------------------- + Transition Moments X 0.00000 Y 0.40833 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.33992 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.48091 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 1.84755 YYZ 0.00000 YZZ 0.67571 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.11228 ++ Transition Moments XX 0.00000 XY -0.00000 XZ -0.00000 ++ Transition Moments YY -0.00000 YZ 0.33992 ZZ 0.00000 ++ Dipole Oscillator Strength 0.11228 + +- Occ. 5 b2 --- Virt. 9 a1 0.97219 +- Occ. 5 b2 --- Virt. 11 a1 0.22508 +- ------------------------------------------------------- +- Root 9 singlet a1 1.020958429 a.u. ( 27.7817042 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z -0.22976 +- Transition Moments XX 0.83086 XY 0.00000 XZ 0.00000 +- Transition Moments YY -0.20565 YZ 0.00000 ZZ 0.50113 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ -1.00281 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ -0.53178 YZZ 0.00000 +- Transition Moments ZZZ -1.63951 +- Dipole Oscillator Strength 0.03593 ++ Occ. 5 b2 --- Virt. 9 a1 0.97219 ++ Occ. 5 b2 --- Virt. 11 a1 -0.22508 ++ ---------------------------------------------------------------------------- ++ Root 9 singlet a1 1.020958429 a.u. 27.7817 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y 0.00000 Z 0.22976 ++ Transition Moments XX -0.83086 XY -0.00000 XZ -0.00000 ++ Transition Moments YY 0.20565 YZ -0.00000 ZZ -0.50113 ++ Dipole Oscillator Strength 0.03593 + +- Occ. 2 a1 --- Virt. 6 a1 0.93893 +- Occ. 4 a1 --- Virt. 9 a1 0.13755 +- Occ. 5 b2 --- Virt. 10 b2 0.30541 +- ------------------------------------------------------- +- Root 10 singlet b1 1.076371786 a.u. ( 29.2895790 eV) +- ------------------------------------------------------- +- Transition Moments X -0.47819 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.13747 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX -1.33945 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY -0.29917 XYZ 0.00000 XZZ -0.95485 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.16409 ++ Occ. 2 a1 --- Virt. 6 a1 -0.93893 ++ Occ. 4 a1 --- Virt. 9 a1 0.13755 ++ Occ. 5 b2 --- Virt. 10 b2 0.30541 ++ ---------------------------------------------------------------------------- ++ Root 10 singlet b1 1.076371786 a.u. 29.2896 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.47819 Y 0.00000 Z 0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ -0.13747 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.16409 + +- Occ. 2 a1 --- Virt. 7 b1 0.58185 +- Occ. 3 b1 --- Virt. 9 a1 -0.17115 +- Occ. 3 b1 --- Virt. 11 a1 0.07118 +- Occ. 4 a1 --- Virt. 8 b1 -0.78998 ++ Occ. 2 a1 --- Virt. 7 b1 -0.58185 ++ Occ. 3 b1 --- Virt. 9 a1 0.17115 ++ Occ. 3 b1 --- Virt. 11 a1 0.07118 ++ Occ. 4 a1 --- Virt. 8 b1 0.78998 + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926815 +- Excitation energy = 0.295377097022 +- Excited state energy = -76.124360829793 ++ Ground state energy = -76.419737926699 ++ Excitation energy = 0.295377096520 ++ Excited state energy = -76.124360830179 + + +- 10 smallest eigenvalue differences ++ 10 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 4 6 a1 0.06535 -0.37102 11.87 +- 3 1 5 7 a2 0.15123 -0.29196 12.06 +- 4 1 4 7 b1 0.15123 -0.37102 14.21 +- 5 1 3 6 b1 0.06535 -0.51498 15.79 +- 6 1 3 7 a1 0.15123 -0.51498 18.13 +- 7 1 5 8 a2 0.75685 -0.29196 28.54 +- 8 1 2 6 a1 0.06535 -0.99731 28.92 +- 9 1 5 9 b2 0.80551 -0.29196 29.86 +- 10 1 4 8 b1 0.75685 -0.37102 30.69 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 1 4 6 a1 -0.371 0.065 11.874 ++ 3 1 5 7 a2 -0.292 0.151 12.060 ++ 4 1 4 7 b1 -0.371 0.151 14.211 ++ 5 1 3 6 b1 -0.515 0.065 15.792 ++ 6 1 3 7 a1 -0.515 0.151 18.129 ++ 7 1 5 8 a2 -0.292 0.757 28.540 ++ 8 1 2 6 a1 -0.997 0.065 28.916 ++ 9 1 5 9 b2 -0.292 0.806 29.864 ++ 10 1 4 8 b1 -0.371 0.757 30.691 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -859,119 +847,119 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 10 0 0.73E-01 0.10+100 3.0 +- 2 20 0 0.32E-01 0.11E-01 3.0 +- 3 30 3 0.16E-01 0.31E-02 3.0 +- 4 37 7 0.22E-01 0.22E-02 2.2 +- 5 40 8 0.53E-02 0.57E-03 1.2 +- 6 42 9 0.63E-03 0.19E-04 1.0 +- 7 43 10 0.54E-04 0.11E-06 0.7 ++ 1 10 0 0.73E-01 0.10+100 1.9 ++ 2 20 0 0.32E-01 0.11E-01 1.9 ++ 3 30 3 0.16E-01 0.31E-02 1.9 ++ 4 37 7 0.22E-01 0.22E-02 1.5 ++ 5 40 8 0.53E-02 0.57E-03 0.8 ++ 6 42 9 0.63E-03 0.19E-04 0.7 ++ 7 43 10 0.54E-04 0.11E-06 0.5 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. ++ Ground state a1 -76.419737926699 a.u. + +- ------------------------------------------------------- +- Root 1 triplet b2 0.267147390 a.u. ( 7.2694534 eV) +- ------------------------------------------------------- ++ ---------------------------------------------------------------------------- ++ Root 1 triplet b2 0.267147390 a.u. 7.2695 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 6 a1 -0.99846 +- ------------------------------------------------------- +- Root 2 triplet a1 0.344563423 a.u. ( 9.3760518 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 6 a1 0.99846 ++ ---------------------------------------------------------------------------- ++ Root 2 triplet a1 0.344563422 a.u. 9.3761 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 7 b1 0.06686 +- Occ. 4 a1 --- Virt. 6 a1 -0.99542 +- Occ. 4 a1 --- Virt. 9 a1 -0.05058 +- ------------------------------------------------------- +- Root 3 triplet a2 0.349308062 a.u. ( 9.5051600 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 7 b1 0.06686 ++ Occ. 4 a1 --- Virt. 6 a1 0.99542 ++ Occ. 4 a1 --- Virt. 9 a1 -0.05058 ++ ---------------------------------------------------------------------------- ++ Root 3 triplet a2 0.349308062 a.u. 9.5052 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 7 b1 -0.99797 +- ------------------------------------------------------- +- Root 4 triplet b1 0.418901619 a.u. ( 11.3988979 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 7 b1 -0.99797 ++ ---------------------------------------------------------------------------- ++ Root 4 triplet b1 0.418901619 a.u. 11.3989 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 6 a1 0.24097 +- Occ. 4 a1 --- Virt. 7 b1 -0.96674 +- Occ. 4 a1 --- Virt. 8 b1 -0.06489 +- ------------------------------------------------------- +- Root 5 triplet b1 0.482245459 a.u. ( 13.1225722 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 6 a1 -0.24097 ++ Occ. 4 a1 --- Virt. 7 b1 -0.96674 ++ Occ. 4 a1 --- Virt. 8 b1 -0.06489 ++ ---------------------------------------------------------------------------- ++ Root 5 triplet b1 0.482245459 a.u. 13.1226 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 6 a1 0.96696 +- Occ. 3 b1 --- Virt. 9 a1 0.05175 +- Occ. 4 a1 --- Virt. 7 b1 0.24346 +- ------------------------------------------------------- +- Root 6 triplet a1 0.547157984 a.u. ( 14.8889326 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 6 a1 -0.96696 ++ Occ. 3 b1 --- Virt. 9 a1 0.05175 ++ Occ. 4 a1 --- Virt. 7 b1 0.24346 ++ ---------------------------------------------------------------------------- ++ Root 6 triplet a1 0.547157984 a.u. 14.8889 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 -0.05763 +- Occ. 3 b1 --- Virt. 7 b1 -0.99063 +- Occ. 3 b1 --- Virt. 8 b1 -0.07149 +- Occ. 3 b1 --- Virt. 12 b1 -0.05439 +- Occ. 4 a1 --- Virt. 6 a1 -0.07162 +- ------------------------------------------------------- +- Root 7 triplet a1 0.946721265 a.u. ( 25.7616073 eV) +- ------------------------------------------------------- ++ Occ. 2 a1 --- Virt. 6 a1 0.05763 ++ Occ. 3 b1 --- Virt. 7 b1 -0.99063 ++ Occ. 3 b1 --- Virt. 8 b1 -0.07149 ++ Occ. 3 b1 --- Virt. 12 b1 -0.05439 ++ Occ. 4 a1 --- Virt. 6 a1 0.07162 ++ ---------------------------------------------------------------------------- ++ Root 7 triplet a1 0.946721265 a.u. 25.7616 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 0.87385 +- Occ. 2 a1 --- Virt. 9 a1 0.06323 +- Occ. 3 b1 --- Virt. 7 b1 -0.07834 +- Occ. 3 b1 --- Virt. 8 b1 0.05758 +- Occ. 3 b1 --- Virt. 12 b1 0.05417 +- Occ. 4 a1 --- Virt. 9 a1 -0.23540 +- Occ. 4 a1 --- Virt. 11 a1 -0.08491 +- Occ. 5 b2 --- Virt. 10 b2 -0.39142 +- ------------------------------------------------------- +- Root 8 triplet a2 0.949755044 a.u. ( 25.8441607 eV) +- ------------------------------------------------------- ++ Occ. 2 a1 --- Virt. 6 a1 0.87385 ++ Occ. 2 a1 --- Virt. 9 a1 -0.06323 ++ Occ. 3 b1 --- Virt. 7 b1 0.07834 ++ Occ. 3 b1 --- Virt. 8 b1 -0.05758 ++ Occ. 3 b1 --- Virt. 12 b1 -0.05417 ++ Occ. 4 a1 --- Virt. 9 a1 0.23540 ++ Occ. 4 a1 --- Virt. 11 a1 -0.08491 ++ Occ. 5 b2 --- Virt. 10 b2 0.39142 ++ ---------------------------------------------------------------------------- ++ Root 8 triplet a2 0.949755044 a.u. 25.8442 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 8 b1 -0.99852 +- ------------------------------------------------------- +- Root 9 triplet b2 0.971912592 a.u. ( 26.4470985 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 8 b1 -0.99852 ++ ---------------------------------------------------------------------------- ++ Root 9 triplet b2 0.971912592 a.u. 26.4471 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 4 a1 --- Virt. 10 b2 0.12215 +- Occ. 5 b2 --- Virt. 9 a1 0.97740 +- Occ. 5 b2 --- Virt. 11 a1 0.16502 +- ------------------------------------------------------- +- Root 10 triplet a1 0.999273171 a.u. ( 27.1916181 eV) +- ------------------------------------------------------- ++ Occ. 4 a1 --- Virt. 10 b2 0.12215 ++ Occ. 5 b2 --- Virt. 9 a1 0.97740 ++ Occ. 5 b2 --- Virt. 11 a1 -0.16502 ++ ---------------------------------------------------------------------------- ++ Root 10 triplet a1 0.999273171 a.u. 27.1916 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 -0.45129 +- Occ. 4 a1 --- Virt. 9 a1 -0.18917 +- Occ. 4 a1 --- Virt. 11 a1 -0.18125 +- Occ. 5 b2 --- Virt. 10 b2 -0.85139 ++ Occ. 2 a1 --- Virt. 6 a1 -0.45129 ++ Occ. 4 a1 --- Virt. 9 a1 0.18917 ++ Occ. 4 a1 --- Virt. 11 a1 -0.18125 ++ Occ. 5 b2 --- Virt. 10 b2 0.85139 + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926815 +- Excitation energy = 0.267147390082 +- Excited state energy = -76.152590536733 ++ Ground state energy = -76.419737926699 ++ Excitation energy = 0.267147389620 ++ Excited state energy = -76.152590537079 + + +- Task times cpu: 28.1s wall: 28.2s ++ Task times cpu: 18.5s wall: 18.6s + + + NWChem Input Module +@@ -986,6 +974,24 @@ + TDDFT H2O B3LYP/6-31G** QA TEST + + ++ ++ ++ Summary of "ao basis" -> "ao basis" (cartesian) ++ ------------------------------------------------------------------------------ ++ Tag Description Shells Functions and Types ++ ---------------- ------------------------------ ------ --------------------- ++ O 6-31G** 6 15 3s2p1d ++ H 6-31G** 3 5 2s1p ++ ++ ++ Symmetry analysis of basis ++ -------------------------- ++ ++ a1 12 ++ a2 2 ++ b1 7 ++ b2 4 ++ + Caching 1-el integrals + + General Information +@@ -1070,64 +1076,75 @@ + 6 a1 7 b1 8 b1 9 a1 10 b2 + 11 a1 12 b1 13 a1 14 a2 15 a1 + +- Time after variat. SCF: 28.1 +- Time prior to 1st pass: 28.1 ++ Time after variat. SCF: 18.6 ++ Time prior to 1st pass: 18.6 + + #quartets = 3.081D+03 #integrals = 2.937D+04 #direct = 0.0% #cached =100.0% + + + Integral file = ./tddft_h2o_dat.aoints.0 + Record size in doubles = 65536 No. of integs per rec = 43688 +- Max. records in memory = 2 Max. records in file = 58808 ++ Max. records in memory = 2 Max. records in file = 17697 + No. of bits per label = 8 No. of bits per value = 64 + + + Grid_pts file = ./tddft_h2o_dat.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 +- Max. records in memory = 23 Max. recs in file = 313621 ++ Max. records in memory = 23 Max. recs in file = 94384 + + + Memory utilization after 1st SCF pass: +- Heap Space remaining (MW): 15.97 15968615 +- Stack Space remaining (MW): 16.38 16383754 ++ Heap Space remaining (MW): 12.69 12691738 ++ Stack Space remaining (MW): 13.11 13106924 + + convergence iter energy DeltaE RMS-Dens Diis-err time + ---------------- ----- ----------------- --------- --------- --------- ------ +- d= 0,ls=0.0,diis 1 -76.4197379270 -8.55D+01 1.06D-07 7.63D-12 28.4 +- d= 0,ls=0.0,diis 2 -76.4197379270 -8.53D-14 6.71D-08 1.13D-11 28.7 ++ d= 0,ls=0.0,diis 1 -76.4197379269 -8.55D+01 1.06D-07 7.64D-12 18.8 ++ d= 0,ls=0.0,diis 2 -76.4197379269 1.42D-14 6.71D-08 1.13D-11 19.0 + + +- Total DFT energy = -76.419737926970 +- One electron energy = -123.023468270435 +- Coulomb energy = 46.835818766090 +- Exchange-Corr. energy = -9.351529805176 ++ Total DFT energy = -76.419737926854 ++ One electron energy = -123.023468265924 ++ Coulomb energy = 46.835818761085 ++ Exchange-Corr. energy = -9.351529804566 + Nuclear repulsion energy = 9.119441382552 + +- Numeric. integr. density = 10.000001105933 ++ Numeric. integr. density = 10.000001105934 + +- Total iterative time = 0.5s ++ Total iterative time = 0.4s + + + ++ Occupations of the irreducible representations ++ ---------------------------------------------- ++ ++ irrep alpha beta ++ -------- -------- -------- ++ a1 3.0 3.0 ++ a2 0.0 0.0 ++ b1 1.0 1.0 ++ b2 1.0 1.0 ++ ++ + DFT Final Molecular Orbital Analysis + ------------------------------------ + + Vector 1 Occ=2.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.3D-13, -1.4D-17, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -8.5D-22, 1.4D-31, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 1 0.992881 1 O s + + Vector 2 Occ=2.000000D+00 E=-9.973141D-01 Symmetry=a1 +- MO Center= -5.2D-11, -8.6D-13, -8.7D-02, r^2= 5.0D-01 ++ MO Center= -5.4D-11, -7.6D-13, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 2 -0.467607 1 O s 6 -0.422148 1 O s +- 1 0.210485 1 O s 21 -0.151985 3 H s +- 16 -0.151985 2 H s ++ 2 0.467607 1 O s 6 0.422148 1 O s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=2.000000D+00 E=-5.149839D-01 Symmetry=b1 +- MO Center= 8.1D-11, -1.5D-13, -1.1D-01, r^2= 7.9D-01 ++ MO Center= 5.2D-11, 1.1D-22, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 0.513996 1 O px 7 0.247229 1 O px +@@ -1135,20 +1152,20 @@ + 17 0.157240 2 H s 22 -0.157240 3 H s + + Vector 4 Occ=2.000000D+00 E=-3.710237D-01 Symmetry=a1 +- MO Center= -1.1D-11, 3.2D-24, 1.9D-01, r^2= 7.0D-01 ++ MO Center= -1.1D-18, -1.1D-28, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 5 0.552652 1 O pz 6 0.416361 1 O s + 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=2.000000D+00 E=-2.919624D-01 Symmetry=b2 +- MO Center= -4.0D-13, 7.7D-13, 9.4D-02, r^2= 5.9D-01 ++ MO Center= -6.5D-13, 7.1D-13, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 4 -0.643967 1 O py 8 -0.494567 1 O py ++ 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534604D-02 Symmetry=a1 +- MO Center= 1.4D-11, 7.3D-14, -6.2D-01, r^2= 2.4D+00 ++ MO Center= 1.7D-11, 1.1D-13, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.261195 1 O s 17 -0.969306 2 H s +@@ -1156,14 +1173,14 @@ + 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512261D-01 Symmetry=b1 +- MO Center= -5.7D-11, 7.0D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= -4.2D-11, 7.6D-14, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 -1.286510 3 H s 17 1.286510 2 H s ++ 17 1.286510 2 H s 22 -1.286510 3 H s + 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 4.3D-10, 1.7D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 4.1D-10, 1.8D-13, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 17 -0.795376 2 H s 22 0.795376 3 H s +@@ -1172,66 +1189,66 @@ + 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055101D-01 Symmetry=a1 +- MO Center= -3.8D-10, -3.2D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= -3.6D-10, -3.1D-13, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 0.647807 1 O pz 22 -0.601436 3 H s +- 17 -0.601436 2 H s 21 0.566894 3 H s +- 16 0.566894 2 H s 9 -0.558049 1 O pz ++ 5 0.647807 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566894 2 H s ++ 21 0.566894 3 H s 9 -0.558049 1 O pz + 10 0.262150 1 O dxx 6 0.238812 1 O s +- 23 -0.164396 3 H px 18 0.164396 2 H px ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913503D-01 Symmetry=b2 +- MO Center= -1.6D-13, 5.5D-12, 1.1D-01, r^2= 1.1D+00 ++ MO Center= -3.2D-13, 1.2D-11, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 8 1.037304 1 O py 4 -0.959670 1 O py ++ 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935286D-01 Symmetry=a1 +- MO Center= -2.0D-11, -5.2D-12, 2.6D-01, r^2= 1.5D+00 ++ MO Center= -1.8D-11, -1.1D-11, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.350166 1 O s 2 0.816728 1 O s +- 9 -0.807033 1 O pz 5 0.529854 1 O pz +- 21 -0.502429 3 H s 16 -0.502429 2 H s +- 22 0.381525 3 H s 17 0.381525 2 H s +- 13 0.323630 1 O dyy 15 0.272322 1 O dzz ++ 6 1.350166 1 O s 2 -0.816728 1 O s ++ 9 0.807033 1 O pz 5 -0.529854 1 O pz ++ 16 0.502429 2 H s 21 0.502429 3 H s ++ 17 -0.381525 2 H s 22 -0.381525 3 H s ++ 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -1.2D-11, 1.2D-13, 1.2D-01, r^2= 1.6D+00 ++ MO Center= -2.6D-12, 1.3D-23, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152363 2 H s +- 21 -0.152363 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152363 2 H s ++ 21 0.152363 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175374D+00 Symmetry=a1 +- MO Center= 1.6D-11, 3.1D-13, -3.7D-01, r^2= 1.4D+00 ++ MO Center= 1.4D-11, 3.0D-13, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -3.527323 1 O s 2 1.425462 1 O s +- 9 0.990461 1 O pz 17 0.770199 2 H s +- 22 0.770199 3 H s 10 0.625764 1 O dxx +- 5 -0.351436 1 O pz 15 0.333460 1 O dzz +- 21 0.326676 3 H s 16 0.326676 2 H s ++ 6 3.527323 1 O s 2 -1.425462 1 O s ++ 9 -0.990461 1 O pz 17 -0.770199 2 H s ++ 22 -0.770199 3 H s 10 -0.625764 1 O dxx ++ 5 0.351436 1 O pz 15 -0.333460 1 O dzz ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529509D+00 Symmetry=a2 +- MO Center= 5.2D-13, 1.3D-14, -1.3D-01, r^2= 7.7D-01 ++ MO Center= -1.9D-12, -1.6D-13, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 11 1.177966 1 O dxy 19 0.350698 2 H py + 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -6.2D-12, -9.2D-14, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -1.6D-12, 4.2D-14, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 0.901910 1 O s 15 -0.788597 1 O dzz + 9 -0.519667 1 O pz 2 -0.323896 1 O s +- 10 0.255739 1 O dxx 25 0.248206 3 H pz +- 20 0.248206 2 H pz 13 0.245549 1 O dyy +- 21 -0.237555 3 H s 16 -0.237555 2 H s ++ 10 0.255739 1 O dxx 20 0.248206 2 H pz ++ 25 0.248206 3 H pz 13 0.245549 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + center of mass +@@ -1249,17 +1266,17 @@ + + L x y z total alpha beta nuclear + - - - - ----- ----- ---- ------- +- 0 0 0 0 0.000000 -5.000000 -5.000000 10.000000 ++ 0 0 0 0 -0.000000 -5.000000 -5.000000 10.000000 + + 1 1 0 0 0.000000 0.000000 0.000000 0.000000 + 1 0 1 0 0.000000 0.000000 0.000000 0.000000 + 1 0 0 1 -0.803750 -0.401875 -0.401875 0.000000 + + 2 2 0 0 -3.194728 -3.656402 -3.656402 4.118075 +- 2 1 1 0 0.000000 0.000000 0.000000 0.000000 +- 2 1 0 1 0.000000 0.000000 0.000000 0.000000 ++ 2 1 1 0 -0.000000 -0.000000 -0.000000 0.000000 ++ 2 1 0 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 2 0 -5.306781 -2.653391 -2.653391 0.000000 +- 2 0 1 1 0.000000 0.000000 0.000000 0.000000 ++ 2 0 1 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 0 2 -4.442837 -3.236338 -3.236338 2.029839 + + +@@ -1304,7 +1321,7 @@ + Alpha electrons : 5 + Beta electrons : 5 + No. of roots : 10 +- Max subspacesize : 100 ++ Max subspacesize : 6000 + Max iterations : 100 + Target root : 1 + Target symmetry : none +@@ -1314,27 +1331,27 @@ + + Memory Information + ------------------ +- Available GA space size is 32767375 doubles +- Available MA space size is 32766361 doubles ++ Available GA space size is 26213775 doubles ++ Available MA space size is 26212684 doubles + Length of a trial vector is 100 + Estimated peak GA usage is 53075 doubles + Estimated peak MA usage is 1301000 doubles +- Estimated peak DRA usage is 30000 doubles ++ Estimated peak DRA usage is 1800000 doubles + +- 10 smallest eigenvalue differences ++ 10 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 4 6 a1 0.06535 -0.37102 11.87 +- 3 1 5 7 a2 0.15123 -0.29196 12.06 +- 4 1 4 7 b1 0.15123 -0.37102 14.21 +- 5 1 3 6 b1 0.06535 -0.51498 15.79 +- 6 1 3 7 a1 0.15123 -0.51498 18.13 +- 7 1 5 8 a2 0.75685 -0.29196 28.54 +- 8 1 2 6 a1 0.06535 -0.99731 28.92 +- 9 1 5 9 b2 0.80551 -0.29196 29.86 +- 10 1 4 8 b1 0.75685 -0.37102 30.69 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 1 4 6 a1 -0.371 0.065 11.874 ++ 3 1 5 7 a2 -0.292 0.151 12.060 ++ 4 1 4 7 b1 -0.371 0.151 14.211 ++ 5 1 3 6 b1 -0.515 0.065 15.792 ++ 6 1 3 7 a1 -0.515 0.151 18.129 ++ 7 1 5 8 a2 -0.292 0.757 28.540 ++ 8 1 2 6 a1 -0.997 0.065 28.916 ++ 9 1 5 9 b2 -0.292 0.806 29.864 ++ 10 1 4 8 b1 -0.371 0.757 30.691 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -1342,182 +1359,142 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 10 0 0.24E+00 0.10+100 3.0 +- 2 20 0 0.30E-01 0.62E-01 3.0 +- 3 30 3 0.61E-02 0.11E-02 3.0 +- 4 37 7 0.13E-02 0.42E-04 2.2 +- 5 40 10 0.66E-04 0.29E-06 1.2 ++ 1 10 0 0.24E+00 0.10+100 2.0 ++ 2 20 0 0.30E-01 0.62E-01 2.0 ++ 3 30 3 0.61E-02 0.11E-02 2.0 ++ 4 37 7 0.13E-02 0.42E-04 1.5 ++ 5 40 10 0.66E-04 0.29E-06 0.9 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. ++ Ground state a1 -76.419737926854 a.u. + +- ------------------------------------------------------- +- Root 1 singlet b2 0.295376754 a.u. ( 8.0376139 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.26343 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ -0.07629 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.95106 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 1.63778 YYZ 0.00000 YZZ 0.73751 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.01366 ++ ---------------------------------------------------------------------------- ++ Root 1 singlet b2 0.295376754 a.u. 8.0376 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.26343 Z 0.00000 ++ Transition Moments XX -0.00000 XY 0.00000 XZ -0.00000 ++ Transition Moments YY 0.00000 YZ 0.07629 ZZ -0.00000 ++ Dipole Oscillator Strength 0.01366 + +- Occ. 5 b2 --- Virt. 6 a1 -0.99951 +- ------------------------------------------------------- +- Root 2 singlet a2 0.369341847 a.u. ( 10.0503073 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY -0.24180 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.34811 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Occ. 5 b2 --- Virt. 6 a1 -0.99951 ++ ---------------------------------------------------------------------------- ++ Root 2 singlet a2 0.369341847 a.u. 10.0503 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z -0.00000 ++ Transition Moments XX -0.00000 XY 0.24180 XZ -0.00000 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 b2 --- Virt. 7 b1 -0.99928 +- ------------------------------------------------------- +- Root 3 singlet a1 0.390030371 a.u. ( 10.6132709 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.63051 +- Transition Moments XX -0.66914 XY 0.00000 XZ 0.00000 +- Transition Moments YY -0.11256 YZ 0.00000 ZZ -0.47960 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 1.78259 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.93744 YZZ 0.00000 +- Transition Moments ZZZ 3.69654 +- Dipole Oscillator Strength 0.10337 ++ Occ. 5 b2 --- Virt. 7 b1 -0.99928 ++ ---------------------------------------------------------------------------- ++ Root 3 singlet a1 0.390030371 a.u. 10.6133 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z 0.63051 ++ Transition Moments XX -0.66914 XY 0.00000 XZ -0.00000 ++ Transition Moments YY -0.11256 YZ -0.00000 ZZ -0.47960 ++ Dipole Oscillator Strength 0.10337 + +- Occ. 3 b1 --- Virt. 7 b1 -0.14371 +- Occ. 4 a1 --- Virt. 6 a1 0.98714 +- ------------------------------------------------------- +- Root 4 singlet b1 0.469576539 a.u. ( 12.7778332 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 7 b1 -0.14371 ++ Occ. 4 a1 --- Virt. 6 a1 0.98714 ++ ---------------------------------------------------------------------------- ++ Root 4 singlet b1 0.469576539 a.u. 12.7778 eV ++ ---------------------------------------------------------------------------- + Transition Moments X 0.49420 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ -0.57166 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 2.43729 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.51103 XYZ 0.00000 XZZ 1.56448 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.07646 ++ Transition Moments XX -0.00000 XY 0.00000 XZ -0.57166 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.07646 + +- Occ. 3 b1 --- Virt. 6 a1 -0.21504 +- Occ. 4 a1 --- Virt. 7 b1 0.97435 +- ------------------------------------------------------- +- Root 5 singlet b1 0.535612101 a.u. ( 14.5747530 eV) +- ------------------------------------------------------- +- Transition Moments X 1.12071 Y 0.00000 Z 0.00000 ++ Occ. 3 b1 --- Virt. 6 a1 -0.21504 ++ Occ. 4 a1 --- Virt. 7 b1 0.97435 ++ ---------------------------------------------------------------------------- ++ Root 5 singlet b1 0.535612101 a.u. 14.5748 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 1.12071 Y -0.00000 Z -0.00000 + Transition Moments XX 0.00000 XY 0.00000 XZ -1.01277 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 7.65908 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 1.51267 XYZ 0.00000 XZZ 2.70320 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.44848 ++ Dipole Oscillator Strength 0.44848 + +- Occ. 3 b1 --- Virt. 6 a1 0.97526 +- Occ. 4 a1 --- Virt. 7 b1 0.21256 +- ------------------------------------------------------- +- Root 6 singlet a1 0.663605774 a.u. ( 18.0576396 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z -0.75398 +- Transition Moments XX 2.03689 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.12328 YZ 0.00000 ZZ 0.65306 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ -2.99076 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ -0.90016 YZZ 0.00000 +- Transition Moments ZZZ -3.17499 +- Dipole Oscillator Strength 0.25150 ++ Occ. 3 b1 --- Virt. 6 a1 0.97526 ++ Occ. 4 a1 --- Virt. 7 b1 0.21256 ++ ---------------------------------------------------------------------------- ++ Root 6 singlet a1 0.663605774 a.u. 18.0576 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z 0.75398 ++ Transition Moments XX -2.03689 XY 0.00000 XZ -0.00000 ++ Transition Moments YY -0.12328 YZ 0.00000 ZZ -0.65306 ++ Dipole Oscillator Strength 0.25150 + +- Occ. 2 a1 --- Virt. 6 a1 0.09486 +- Occ. 3 b1 --- Virt. 7 b1 -0.96292 +- Occ. 4 a1 --- Virt. 6 a1 -0.12508 +- Occ. 4 a1 --- Virt. 9 a1 -0.10386 +- Occ. 4 a1 --- Virt. 11 a1 -0.08161 +- Occ. 5 b2 --- Virt. 10 b2 -0.15800 +- ------------------------------------------------------- +- Root 7 singlet a2 0.962306208 a.u. ( 26.1856954 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 ++ Occ. 2 a1 --- Virt. 6 a1 0.09486 ++ Occ. 3 b1 --- Virt. 7 b1 0.96292 ++ Occ. 4 a1 --- Virt. 6 a1 0.12508 ++ Occ. 4 a1 --- Virt. 9 a1 0.10386 ++ Occ. 4 a1 --- Virt. 11 a1 -0.08161 ++ Occ. 5 b2 --- Virt. 10 b2 0.15800 ++ ---------------------------------------------------------------------------- ++ Root 7 singlet a2 0.962306208 a.u. 26.1857 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.00000 + Transition Moments XX 0.00000 XY -0.42398 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ -0.19812 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 b2 --- Virt. 8 b1 0.99956 +- ------------------------------------------------------- +- Root 8 singlet b2 1.010100569 a.u. ( 27.4862467 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.40833 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.33992 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.48091 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 1.84755 YYZ 0.00000 YZZ 0.67571 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.11228 ++ Occ. 5 b2 --- Virt. 8 b1 -0.99956 ++ ---------------------------------------------------------------------------- ++ Root 8 singlet b2 1.010100569 a.u. 27.4862 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y 0.40833 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ -0.00000 ++ Transition Moments YY -0.00000 YZ 0.33992 ZZ 0.00000 ++ Dipole Oscillator Strength 0.11228 + +- Occ. 5 b2 --- Virt. 9 a1 -0.97219 +- Occ. 5 b2 --- Virt. 11 a1 -0.22508 +- ------------------------------------------------------- +- Root 9 singlet a1 1.020958106 a.u. ( 27.7816954 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z -0.22976 +- Transition Moments XX 0.83086 XY 0.00000 XZ 0.00000 +- Transition Moments YY -0.20565 YZ 0.00000 ZZ 0.50113 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ -1.00281 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ -0.53178 YZZ 0.00000 +- Transition Moments ZZZ -1.63951 +- Dipole Oscillator Strength 0.03593 ++ Occ. 5 b2 --- Virt. 9 a1 0.97219 ++ Occ. 5 b2 --- Virt. 11 a1 -0.22508 ++ ---------------------------------------------------------------------------- ++ Root 9 singlet a1 1.020958106 a.u. 27.7817 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.22976 ++ Transition Moments XX 0.83086 XY 0.00000 XZ -0.00000 ++ Transition Moments YY -0.20565 YZ -0.00000 ZZ 0.50113 ++ Dipole Oscillator Strength 0.03593 + +- Occ. 2 a1 --- Virt. 6 a1 -0.93893 +- Occ. 4 a1 --- Virt. 9 a1 -0.13755 +- Occ. 5 b2 --- Virt. 10 b2 -0.30541 +- ------------------------------------------------------- +- Root 10 singlet b1 1.076371535 a.u. ( 29.2895722 eV) +- ------------------------------------------------------- ++ Occ. 2 a1 --- Virt. 6 a1 0.93893 ++ Occ. 4 a1 --- Virt. 9 a1 -0.13755 ++ Occ. 5 b2 --- Virt. 10 b2 -0.30541 ++ ---------------------------------------------------------------------------- ++ Root 10 singlet b1 1.076371535 a.u. 29.2896 eV ++ ---------------------------------------------------------------------------- + Transition Moments X 0.47819 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ -0.13748 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 1.33946 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.29917 XYZ 0.00000 XZZ 0.95485 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.16409 ++ Transition Moments XX 0.00000 XY -0.00000 XZ -0.13748 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.16409 + +- Occ. 2 a1 --- Virt. 7 b1 0.58185 +- Occ. 3 b1 --- Virt. 9 a1 0.17115 +- Occ. 3 b1 --- Virt. 11 a1 -0.07118 +- Occ. 4 a1 --- Virt. 8 b1 0.78998 ++ Occ. 2 a1 --- Virt. 7 b1 -0.58185 ++ Occ. 3 b1 --- Virt. 9 a1 0.17115 ++ Occ. 3 b1 --- Virt. 11 a1 0.07118 ++ Occ. 4 a1 --- Virt. 8 b1 0.78998 + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926970 +- Excitation energy = 0.295376754447 +- Excited state energy = -76.124361172523 ++ Ground state energy = -76.419737926854 ++ Excitation energy = 0.295376754474 ++ Excited state energy = -76.124361172379 + + +- 10 smallest eigenvalue differences ++ 10 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 4 6 a1 0.06535 -0.37102 11.87 +- 3 1 5 7 a2 0.15123 -0.29196 12.06 +- 4 1 4 7 b1 0.15123 -0.37102 14.21 +- 5 1 3 6 b1 0.06535 -0.51498 15.79 +- 6 1 3 7 a1 0.15123 -0.51498 18.13 +- 7 1 5 8 a2 0.75685 -0.29196 28.54 +- 8 1 2 6 a1 0.06535 -0.99731 28.92 +- 9 1 5 9 b2 0.80551 -0.29196 29.86 +- 10 1 4 8 b1 0.75685 -0.37102 30.69 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 1 4 6 a1 -0.371 0.065 11.874 ++ 3 1 5 7 a2 -0.292 0.151 12.060 ++ 4 1 4 7 b1 -0.371 0.151 14.211 ++ 5 1 3 6 b1 -0.515 0.065 15.792 ++ 6 1 3 7 a1 -0.515 0.151 18.129 ++ 7 1 5 8 a2 -0.292 0.757 28.540 ++ 8 1 2 6 a1 -0.997 0.065 28.916 ++ 9 1 5 9 b2 -0.292 0.806 29.864 ++ 10 1 4 8 b1 -0.371 0.757 30.691 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -1525,119 +1502,119 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 10 0 0.73E-01 0.10+100 3.0 +- 2 20 0 0.32E-01 0.11E-01 3.0 +- 3 30 3 0.16E-01 0.31E-02 3.0 +- 4 37 7 0.22E-01 0.22E-02 2.2 +- 5 40 8 0.53E-02 0.57E-03 1.2 +- 6 42 9 0.63E-03 0.19E-04 1.0 +- 7 43 10 0.54E-04 0.11E-06 0.7 ++ 1 10 0 0.73E-01 0.10+100 2.0 ++ 2 20 0 0.32E-01 0.11E-01 2.0 ++ 3 30 3 0.16E-01 0.31E-02 2.0 ++ 4 37 7 0.22E-01 0.22E-02 1.5 ++ 5 40 8 0.53E-02 0.57E-03 0.9 ++ 6 42 9 0.63E-03 0.19E-04 0.7 ++ 7 43 10 0.54E-04 0.11E-06 0.6 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. ++ Ground state a1 -76.419737926854 a.u. + +- ------------------------------------------------------- +- Root 1 triplet b2 0.267147049 a.u. ( 7.2694442 eV) +- ------------------------------------------------------- ++ ---------------------------------------------------------------------------- ++ Root 1 triplet b2 0.267147049 a.u. 7.2694 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 6 a1 0.99846 +- ------------------------------------------------------- +- Root 2 triplet a1 0.344563209 a.u. ( 9.3760460 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 6 a1 -0.99846 ++ ---------------------------------------------------------------------------- ++ Root 2 triplet a1 0.344563209 a.u. 9.3760 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 7 b1 0.06686 +- Occ. 4 a1 --- Virt. 6 a1 0.99542 +- Occ. 4 a1 --- Virt. 9 a1 -0.05058 +- ------------------------------------------------------- +- Root 3 triplet a2 0.349307772 a.u. ( 9.5051521 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 7 b1 -0.06686 ++ Occ. 4 a1 --- Virt. 6 a1 -0.99542 ++ Occ. 4 a1 --- Virt. 9 a1 0.05058 ++ ---------------------------------------------------------------------------- ++ Root 3 triplet a2 0.349307772 a.u. 9.5052 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 7 b1 -0.99797 +- ------------------------------------------------------- +- Root 4 triplet b1 0.418901449 a.u. ( 11.3988933 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 7 b1 0.99797 ++ ---------------------------------------------------------------------------- ++ Root 4 triplet b1 0.418901449 a.u. 11.3989 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 6 a1 -0.24097 +- Occ. 4 a1 --- Virt. 7 b1 -0.96674 +- Occ. 4 a1 --- Virt. 8 b1 -0.06489 +- ------------------------------------------------------- +- Root 5 triplet b1 0.482245154 a.u. ( 13.1225639 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 6 a1 -0.24097 ++ Occ. 4 a1 --- Virt. 7 b1 -0.96674 ++ Occ. 4 a1 --- Virt. 8 b1 -0.06489 ++ ---------------------------------------------------------------------------- ++ Root 5 triplet b1 0.482245154 a.u. 13.1226 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 6 a1 -0.96696 +- Occ. 3 b1 --- Virt. 9 a1 0.05175 +- Occ. 4 a1 --- Virt. 7 b1 0.24346 +- ------------------------------------------------------- +- Root 6 triplet a1 0.547157754 a.u. ( 14.8889264 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 6 a1 -0.96696 ++ Occ. 3 b1 --- Virt. 9 a1 0.05175 ++ Occ. 4 a1 --- Virt. 7 b1 0.24346 ++ ---------------------------------------------------------------------------- ++ Root 6 triplet a1 0.547157754 a.u. 14.8889 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 0.05763 +- Occ. 3 b1 --- Virt. 7 b1 0.99063 +- Occ. 3 b1 --- Virt. 8 b1 0.07149 +- Occ. 3 b1 --- Virt. 12 b1 -0.05439 +- Occ. 4 a1 --- Virt. 6 a1 -0.07162 +- ------------------------------------------------------- +- Root 7 triplet a1 0.946720987 a.u. ( 25.7615998 eV) +- ------------------------------------------------------- ++ Occ. 2 a1 --- Virt. 6 a1 -0.05763 ++ Occ. 3 b1 --- Virt. 7 b1 0.99063 ++ Occ. 3 b1 --- Virt. 8 b1 0.07149 ++ Occ. 3 b1 --- Virt. 12 b1 0.05439 ++ Occ. 4 a1 --- Virt. 6 a1 -0.07162 ++ ---------------------------------------------------------------------------- ++ Root 7 triplet a1 0.946720987 a.u. 25.7616 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 0.87385 +- Occ. 2 a1 --- Virt. 9 a1 -0.06323 +- Occ. 3 b1 --- Virt. 7 b1 -0.07834 +- Occ. 3 b1 --- Virt. 8 b1 0.05758 +- Occ. 3 b1 --- Virt. 12 b1 -0.05417 +- Occ. 4 a1 --- Virt. 9 a1 -0.23540 +- Occ. 4 a1 --- Virt. 11 a1 -0.08491 +- Occ. 5 b2 --- Virt. 10 b2 -0.39142 +- ------------------------------------------------------- +- Root 8 triplet a2 0.949754726 a.u. ( 25.8441520 eV) +- ------------------------------------------------------- ++ Occ. 2 a1 --- Virt. 6 a1 0.87385 ++ Occ. 2 a1 --- Virt. 9 a1 -0.06323 ++ Occ. 3 b1 --- Virt. 7 b1 0.07834 ++ Occ. 3 b1 --- Virt. 8 b1 -0.05758 ++ Occ. 3 b1 --- Virt. 12 b1 -0.05417 ++ Occ. 4 a1 --- Virt. 9 a1 0.23540 ++ Occ. 4 a1 --- Virt. 11 a1 -0.08491 ++ Occ. 5 b2 --- Virt. 10 b2 0.39142 ++ ---------------------------------------------------------------------------- ++ Root 8 triplet a2 0.949754726 a.u. 25.8442 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 8 b1 -0.99852 +- ------------------------------------------------------- +- Root 9 triplet b2 0.971912378 a.u. ( 26.4470927 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 8 b1 0.99852 ++ ---------------------------------------------------------------------------- ++ Root 9 triplet b2 0.971912378 a.u. 26.4471 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 4 a1 --- Virt. 10 b2 -0.12215 +- Occ. 5 b2 --- Virt. 9 a1 -0.97740 +- Occ. 5 b2 --- Virt. 11 a1 -0.16502 +- ------------------------------------------------------- +- Root 10 triplet a1 0.999273022 a.u. ( 27.1916140 eV) +- ------------------------------------------------------- ++ Occ. 4 a1 --- Virt. 10 b2 -0.12215 ++ Occ. 5 b2 --- Virt. 9 a1 -0.97740 ++ Occ. 5 b2 --- Virt. 11 a1 0.16502 ++ ---------------------------------------------------------------------------- ++ Root 10 triplet a1 0.999273022 a.u. 27.1916 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 0.45129 +- Occ. 4 a1 --- Virt. 9 a1 0.18917 +- Occ. 4 a1 --- Virt. 11 a1 0.18125 +- Occ. 5 b2 --- Virt. 10 b2 0.85139 ++ Occ. 2 a1 --- Virt. 6 a1 0.45129 ++ Occ. 4 a1 --- Virt. 9 a1 -0.18917 ++ Occ. 4 a1 --- Virt. 11 a1 0.18125 ++ Occ. 5 b2 --- Virt. 10 b2 -0.85139 + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926970 +- Excitation energy = 0.267147048664 +- Excited state energy = -76.152590878305 ++ Ground state energy = -76.419737926854 ++ Excitation energy = 0.267147048686 ++ Excited state energy = -76.152590878168 + + +- Task times cpu: 27.3s wall: 27.4s ++ Task times cpu: 18.4s wall: 18.5s + + + NWChem Input Module +@@ -1652,6 +1629,24 @@ + TDDFT H2O B3LYP/6-31G** QA TEST + + ++ ++ ++ Summary of "ao basis" -> "ao basis" (cartesian) ++ ------------------------------------------------------------------------------ ++ Tag Description Shells Functions and Types ++ ---------------- ------------------------------ ------ --------------------- ++ O 6-31G** 6 15 3s2p1d ++ H 6-31G** 3 5 2s1p ++ ++ ++ Symmetry analysis of basis ++ -------------------------- ++ ++ a1 12 ++ a2 2 ++ b1 7 ++ b2 4 ++ + Caching 1-el integrals + + General Information +@@ -1736,100 +1731,111 @@ + 6 a1 7 b1 8 b1 9 a1 10 b2 + 11 a1 12 b1 13 a1 14 a2 15 a1 + +- Time after variat. SCF: 55.5 +- Time prior to 1st pass: 55.5 ++ Time after variat. SCF: 37.0 ++ Time prior to 1st pass: 37.0 + + #quartets = 3.081D+03 #integrals = 2.937D+04 #direct = 0.0% #cached =100.0% + + + Integral file = ./tddft_h2o_dat.aoints.0 + Record size in doubles = 65536 No. of integs per rec = 43688 +- Max. records in memory = 2 Max. records in file = 58806 ++ Max. records in memory = 2 Max. records in file = 17697 + No. of bits per label = 8 No. of bits per value = 64 + + + Grid_pts file = ./tddft_h2o_dat.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 +- Max. records in memory = 23 Max. recs in file = 313621 ++ Max. records in memory = 23 Max. recs in file = 94384 + + + Memory utilization after 1st SCF pass: +- Heap Space remaining (MW): 15.97 15968615 +- Stack Space remaining (MW): 16.38 16383754 ++ Heap Space remaining (MW): 12.69 12691738 ++ Stack Space remaining (MW): 13.11 13106924 + + convergence iter energy DeltaE RMS-Dens Diis-err time + ---------------- ----- ----------------- --------- --------- --------- ------ +- d= 0,ls=0.0,diis 1 -76.4197379270 -8.55D+01 1.17D-08 9.43D-14 55.8 +- d= 0,ls=0.0,diis 2 -76.4197379270 -8.53D-14 7.62D-09 1.60D-13 56.0 ++ d= 0,ls=0.0,diis 1 -76.4197379269 -8.55D+01 1.17D-08 9.42D-14 37.2 ++ d= 0,ls=0.0,diis 2 -76.4197379269 -2.98D-13 7.62D-09 1.60D-13 37.4 + + +- Total DFT energy = -76.419737926971 +- One electron energy = -123.023474430090 +- Coulomb energy = 46.835825759709 +- Exchange-Corr. energy = -9.351530639141 ++ Total DFT energy = -76.419737926855 ++ One electron energy = -123.023474430511 ++ Coulomb energy = 46.835825760308 ++ Exchange-Corr. energy = -9.351530639204 + Nuclear repulsion energy = 9.119441382552 + + Numeric. integr. density = 10.000001105934 + +- Total iterative time = 0.5s ++ Total iterative time = 0.4s + + + ++ Occupations of the irreducible representations ++ ---------------------------------------------- ++ ++ irrep alpha beta ++ -------- -------- -------- ++ a1 3.0 3.0 ++ a2 0.0 0.0 ++ b1 1.0 1.0 ++ b2 1.0 1.0 ++ ++ + DFT Final Molecular Orbital Analysis + ------------------------------------ + + Vector 1 Occ=2.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.3D-13, 1.1D-16, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -2.3D-13, 1.2D-16, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 1 0.992881 1 O s + + Vector 2 Occ=2.000000D+00 E=-9.973140D-01 Symmetry=a1 +- MO Center= -5.1D-11, -8.1D-13, -8.7D-02, r^2= 5.0D-01 ++ MO Center= -5.2D-11, -8.3D-13, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 2 0.467607 1 O s 6 0.422148 1 O s +- 1 -0.210485 1 O s 21 0.151985 3 H s +- 16 0.151985 2 H s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=2.000000D+00 E=-5.149839D-01 Symmetry=b1 +- MO Center= 7.9D-11, -1.4D-13, -1.1D-01, r^2= 7.9D-01 ++ MO Center= 8.0D-11, -1.4D-13, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 3 -0.513996 1 O px 7 -0.247229 1 O px +- 16 -0.244124 2 H s 21 0.244124 3 H s +- 17 -0.157241 2 H s 22 0.157241 3 H s ++ 3 0.513996 1 O px 7 0.247229 1 O px ++ 16 0.244124 2 H s 21 -0.244124 3 H s ++ 17 0.157241 2 H s 22 -0.157241 3 H s + + Vector 4 Occ=2.000000D+00 E=-3.710237D-01 Symmetry=a1 +- MO Center= -1.8D-12, -2.2D-13, 1.9D-01, r^2= 7.0D-01 ++ MO Center= -2.2D-12, -2.4D-13, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 -0.552652 1 O pz 6 -0.416361 1 O s +- 9 -0.364042 1 O pz 2 -0.174171 1 O s ++ 5 0.552652 1 O pz 6 0.416361 1 O s ++ 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=2.000000D+00 E=-2.919624D-01 Symmetry=b2 +- MO Center= -2.0D-13, 1.2D-12, 9.4D-02, r^2= 5.9D-01 ++ MO Center= -3.2D-13, 1.2D-12, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534605D-02 Symmetry=a1 +- MO Center= 2.2D-11, 6.9D-14, -6.2D-01, r^2= 2.4D+00 ++ MO Center= 2.1D-11, 6.2D-14, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.261195 1 O s 17 0.969306 2 H s +- 22 0.969306 3 H s 9 0.469996 1 O pz +- 5 0.275960 1 O pz ++ 6 1.261195 1 O s 17 -0.969306 2 H s ++ 22 -0.969306 3 H s 9 -0.469996 1 O pz ++ 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512261D-01 Symmetry=b1 +- MO Center= -6.8D-11, 7.2D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= -6.5D-11, 3.0D-23, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 -1.286510 3 H s 17 1.286510 2 H s ++ 17 1.286510 2 H s 22 -1.286510 3 H s + 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 4.3D-10, 1.7D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 1.9D-11, 3.4D-23, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 17 -0.795376 2 H s 22 0.795376 3 H s +@@ -1838,66 +1844,66 @@ + 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055101D-01 Symmetry=a1 +- MO Center= -3.9D-10, -3.1D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= -1.6D-12, 6.5D-16, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 0.647807 1 O pz 22 -0.601436 3 H s +- 17 -0.601436 2 H s 21 0.566894 3 H s +- 16 0.566894 2 H s 9 -0.558049 1 O pz ++ 5 0.647807 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566894 2 H s ++ 21 0.566894 3 H s 9 -0.558049 1 O pz + 10 0.262150 1 O dxx 6 0.238812 1 O s +- 23 -0.164396 3 H px 18 0.164396 2 H px ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913504D-01 Symmetry=b2 +- MO Center= -1.4D-13, 8.2D-12, 1.1D-01, r^2= 1.1D+00 ++ MO Center= -7.2D-14, 6.5D-12, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935286D-01 Symmetry=a1 +- MO Center= -2.0D-11, -7.8D-12, 2.6D-01, r^2= 1.5D+00 ++ MO Center= 6.2D-12, -6.9D-12, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.350166 1 O s 2 -0.816728 1 O s + 9 0.807033 1 O pz 5 -0.529854 1 O pz +- 21 0.502429 3 H s 16 0.502429 2 H s +- 22 -0.381525 3 H s 17 -0.381525 2 H s ++ 16 0.502429 2 H s 21 0.502429 3 H s ++ 17 -0.381525 2 H s 22 -0.381525 3 H s + 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -3.4D-12, 1.5D-23, 1.2D-01, r^2= 1.6D+00 ++ MO Center= -5.1D-12, -2.6D-24, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152363 2 H s +- 21 -0.152363 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152363 2 H s ++ 21 0.152363 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175375D+00 Symmetry=a1 +- MO Center= 1.3D-11, 4.2D-13, -3.7D-01, r^2= 1.4D+00 ++ MO Center= 4.0D-12, 4.5D-13, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 3.527323 1 O s 2 -1.425462 1 O s + 9 -0.990461 1 O pz 17 -0.770199 2 H s + 22 -0.770199 3 H s 10 -0.625764 1 O dxx + 5 0.351436 1 O pz 15 -0.333460 1 O dzz +- 21 -0.326676 3 H s 16 -0.326676 2 H s ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529510D+00 Symmetry=a2 +- MO Center= 1.9D-12, -2.6D-14, -1.3D-01, r^2= 7.7D-01 ++ MO Center= 1.8D-12, -2.0D-14, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 11 -1.177966 1 O dxy 19 -0.350698 2 H py +- 24 0.350698 3 H py ++ 11 1.177966 1 O dxy 19 0.350698 2 H py ++ 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -5.9D-12, -9.8D-14, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -4.3D-12, -9.7D-14, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -0.901910 1 O s 15 0.788597 1 O dzz +- 9 0.519667 1 O pz 2 0.323896 1 O s +- 10 -0.255739 1 O dxx 25 -0.248206 3 H pz +- 20 -0.248206 2 H pz 13 -0.245549 1 O dyy +- 21 0.237555 3 H s 16 0.237555 2 H s ++ 6 0.901910 1 O s 15 -0.788597 1 O dzz ++ 9 -0.519667 1 O pz 2 -0.323896 1 O s ++ 10 0.255739 1 O dxx 20 0.248206 2 H pz ++ 25 0.248206 3 H pz 13 0.245549 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + center of mass +@@ -1915,17 +1921,17 @@ + + L x y z total alpha beta nuclear + - - - - ----- ----- ---- ------- +- 0 0 0 0 0.000000 -5.000000 -5.000000 10.000000 ++ 0 0 0 0 -0.000000 -5.000000 -5.000000 10.000000 + +- 1 1 0 0 0.000000 0.000000 0.000000 0.000000 +- 1 0 1 0 0.000000 0.000000 0.000000 0.000000 ++ 1 1 0 0 -0.000000 -0.000000 -0.000000 0.000000 ++ 1 0 1 0 -0.000000 -0.000000 -0.000000 0.000000 + 1 0 0 1 -0.803750 -0.401875 -0.401875 0.000000 + + 2 2 0 0 -3.194729 -3.656402 -3.656402 4.118075 +- 2 1 1 0 0.000000 0.000000 0.000000 0.000000 ++ 2 1 1 0 -0.000000 -0.000000 -0.000000 0.000000 + 2 1 0 1 0.000000 0.000000 0.000000 0.000000 + 2 0 2 0 -5.306781 -2.653391 -2.653391 0.000000 +- 2 0 1 1 0.000000 0.000000 0.000000 0.000000 ++ 2 0 1 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 0 2 -4.442837 -3.236338 -3.236338 2.029839 + + +@@ -1970,7 +1976,7 @@ + Alpha electrons : 5 + Beta electrons : 5 + No. of roots : 9 +- Max subspacesize : 100 ++ Max subspacesize : 5800 + Max iterations : 100 + Target root : 1 + Target symmetry : none +@@ -1980,26 +1986,26 @@ + + Memory Information + ------------------ +- Available GA space size is 32767375 doubles +- Available MA space size is 32766361 doubles ++ Available GA space size is 26213775 doubles ++ Available MA space size is 26212684 doubles + Length of a trial vector is 100 + Algorithm : Incore multiple tensor contraction +- Estimated peak GA usage is 89300 doubles ++ Estimated peak GA usage is 2369300 doubles + Estimated peak MA usage is 57600 doubles + +- 9 smallest eigenvalue differences ++ 9 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 4 6 a1 0.06535 -0.37102 11.87 +- 3 1 5 7 a2 0.15123 -0.29196 12.06 +- 4 1 4 7 b1 0.15123 -0.37102 14.21 +- 5 1 3 6 b1 0.06535 -0.51498 15.79 +- 6 1 3 7 a1 0.15123 -0.51498 18.13 +- 7 1 5 8 a2 0.75685 -0.29196 28.54 +- 8 1 2 6 a1 0.06535 -0.99731 28.92 +- 9 1 5 9 b2 0.80551 -0.29196 29.86 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 1 4 6 a1 -0.371 0.065 11.874 ++ 3 1 5 7 a2 -0.292 0.151 12.060 ++ 4 1 4 7 b1 -0.371 0.151 14.211 ++ 5 1 3 6 b1 -0.515 0.065 15.792 ++ 6 1 3 7 a1 -0.515 0.151 18.129 ++ 7 1 5 8 a2 -0.292 0.757 28.540 ++ 8 1 2 6 a1 -0.997 0.065 28.916 ++ 9 1 5 9 b2 -0.292 0.806 29.864 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -2007,166 +2013,130 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 9 0 0.44E+00 0.10+100 2.7 +- 2 27 0 0.52E-01 0.53E-01 4.8 +- 3 45 1 0.12E-01 0.86E-03 4.7 +- 4 61 4 0.24E-02 0.19E-04 4.3 +- 5 71 7 0.40E-03 0.55E-06 2.8 +- 6 75 9 0.66E-04 0.13E-07 1.4 ++ 1 9 0 0.44E+00 0.10+100 1.8 ++ 2 27 0 0.52E-01 0.53E-01 3.3 ++ 3 45 1 0.12E-01 0.86E-03 3.2 ++ 4 61 4 0.24E-02 0.19E-04 2.9 ++ 5 71 7 0.40E-03 0.55E-06 2.0 ++ 6 75 9 0.66E-04 0.13E-07 1.0 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. ++ Ground state a1 -76.419737926855 a.u. + +- ------------------------------------------------------- +- Root 1 singlet b2 0.294221000 a.u. ( 8.0061642 eV) +- ------------------------------------------------------- ++ ---------------------------------------------------------------------------- ++ Root 1 singlet b2 0.294221000 a.u. 8.0062 eV ++ ---------------------------------------------------------------------------- + Transition Moments X 0.00000 Y -0.26890 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.08066 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY -0.93672 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY -1.60959 YYZ 0.00000 YZZ -0.72276 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.01418 ++ Transition Moments XX -0.00000 XY 0.00000 XZ -0.00000 ++ Transition Moments YY 0.00000 YZ 0.08066 ZZ -0.00000 ++ Dipole Oscillator Strength 0.01418 + +- Occ. 5 b2 --- Virt. 6 a1 1.00002 X +- ------------------------------------------------------- +- Root 2 singlet a2 0.369097182 a.u. ( 10.0436496 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.24936 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ -0.34740 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Occ. 5 b2 --- Virt. 6 a1 -1.00002 X ++ ---------------------------------------------------------------------------- ++ Root 2 singlet a2 0.369097182 a.u. 10.0436 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z 0.00000 ++ Transition Moments XX 0.00000 XY -0.24936 XZ 0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 b2 --- Virt. 7 b1 -0.99936 X +- ------------------------------------------------------- +- Root 3 singlet a1 0.387064420 a.u. ( 10.5325632 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z -0.60463 +- Transition Moments XX 0.62350 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.09429 YZ 0.00000 ZZ 0.45941 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ -1.72772 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ -0.91748 YZZ 0.00000 +- Transition Moments ZZZ -3.60522 +- Dipole Oscillator Strength 0.09433 ++ Occ. 5 b2 --- Virt. 7 b1 0.99936 X ++ ---------------------------------------------------------------------------- ++ Root 3 singlet a1 0.387064420 a.u. 10.5326 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z -0.60463 ++ Transition Moments XX 0.62350 XY -0.00000 XZ 0.00000 ++ Transition Moments YY 0.09429 YZ -0.00000 ZZ 0.45941 ++ Dipole Oscillator Strength 0.09433 + +- Occ. 3 b1 --- Virt. 7 b1 -0.11875 X +- Occ. 4 a1 --- Virt. 6 a1 -0.99241 X +- ------------------------------------------------------- +- Root 4 singlet b1 0.466992132 a.u. ( 12.7075079 eV) +- ------------------------------------------------------- +- Transition Moments X -0.47326 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.58528 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX -2.47430 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY -0.51687 XYZ 0.00000 XZZ -1.56810 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.06973 ++ Occ. 3 b1 --- Virt. 7 b1 0.11875 X ++ Occ. 4 a1 --- Virt. 6 a1 -0.99241 X ++ ---------------------------------------------------------------------------- ++ Root 4 singlet b1 0.466992132 a.u. 12.7075 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.47326 Y 0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ 0.58528 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.06973 + +- Occ. 3 b1 --- Virt. 6 a1 0.19330 X +- Occ. 4 a1 --- Virt. 7 b1 0.98016 X +- ------------------------------------------------------- +- Root 5 singlet b1 0.533227391 a.u. ( 14.5098617 eV) +- ------------------------------------------------------- +- Transition Moments X -1.05196 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.96330 ++ Occ. 3 b1 --- Virt. 6 a1 0.19330 X ++ Occ. 4 a1 --- Virt. 7 b1 -0.98016 X ++ ---------------------------------------------------------------------------- ++ Root 5 singlet b1 0.533227391 a.u. 14.5099 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 1.05196 Y -0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY 0.00000 XZ -0.96330 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX -7.34419 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY -1.45603 XYZ 0.00000 XZZ -2.57081 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.39338 ++ Dipole Oscillator Strength 0.39338 + +- Occ. 3 b1 --- Virt. 6 a1 -0.98069 X +- Occ. 4 a1 --- Virt. 7 b1 0.19253 X +- ------------------------------------------------------- +- Root 6 singlet a1 0.652737975 a.u. ( 17.7619116 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z -0.68471 +- Transition Moments XX 1.92244 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.09170 YZ 0.00000 ZZ 0.58365 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ -2.81222 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ -0.83325 YZZ 0.00000 +- Transition Moments ZZZ -2.91254 +- Dipole Oscillator Strength 0.20401 ++ Occ. 3 b1 --- Virt. 6 a1 0.98069 X ++ Occ. 4 a1 --- Virt. 7 b1 0.19253 X ++ ---------------------------------------------------------------------------- ++ Root 6 singlet a1 0.652737975 a.u. 17.7619 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z 0.68471 ++ Transition Moments XX -1.92244 XY 0.00000 XZ -0.00000 ++ Transition Moments YY -0.09170 YZ 0.00000 ZZ -0.58365 ++ Dipole Oscillator Strength 0.20401 + +- Occ. 2 a1 --- Virt. 6 a1 0.07438 X +- Occ. 3 b1 --- Virt. 7 b1 0.97814 X +- Occ. 4 a1 --- Virt. 6 a1 -0.11134 X +- Occ. 4 a1 --- Virt. 9 a1 0.08439 X +- Occ. 4 a1 --- Virt. 11 a1 -0.06625 X +- Occ. 5 b2 --- Virt. 10 b2 -0.12788 X +- ------------------------------------------------------- +- Root 7 singlet a2 0.962204477 a.u. ( 26.1829271 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.41976 XZ 0.00000 ++ Occ. 2 a1 --- Virt. 6 a1 0.07438 X ++ Occ. 3 b1 --- Virt. 7 b1 0.97814 X ++ Occ. 4 a1 --- Virt. 6 a1 0.11134 X ++ Occ. 4 a1 --- Virt. 9 a1 0.08439 X ++ Occ. 4 a1 --- Virt. 11 a1 -0.06625 X ++ Occ. 5 b2 --- Virt. 10 b2 0.12788 X ++ ---------------------------------------------------------------------------- ++ Root 7 singlet a2 0.962204477 a.u. 26.1829 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z 0.00000 ++ Transition Moments XX 0.00000 XY -0.41976 XZ 0.00000 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.19957 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 b2 --- Virt. 8 b1 0.99958 X +- ------------------------------------------------------- +- Root 8 singlet b2 1.009123499 a.u. ( 27.4596592 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y -0.39330 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ -0.33633 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY -0.47047 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY -1.82858 YYZ 0.00000 YZZ -0.66686 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.10406 ++ Occ. 5 b2 --- Virt. 8 b1 -0.99958 X ++ ---------------------------------------------------------------------------- ++ Root 8 singlet b2 1.009123499 a.u. 27.4597 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y 0.39330 Z 0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ 0.33633 ZZ 0.00000 ++ Dipole Oscillator Strength 0.10406 + +- Occ. 5 b2 --- Virt. 9 a1 -0.97515 X +- Occ. 5 b2 --- Virt. 11 a1 0.21394 X +- ------------------------------------------------------- +- Root 9 singlet a1 1.018624616 a.u. ( 27.7181979 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.22039 +- Transition Moments XX -0.78607 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.18701 YZ 0.00000 ZZ -0.47718 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.93141 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.50865 YZZ 0.00000 +- Transition Moments ZZZ 1.56142 +- Dipole Oscillator Strength 0.03298 ++ Occ. 5 b2 --- Virt. 9 a1 0.97515 X ++ Occ. 5 b2 --- Virt. 11 a1 -0.21394 X ++ ---------------------------------------------------------------------------- ++ Root 9 singlet a1 1.018624616 a.u. 27.7182 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.22039 ++ Transition Moments XX 0.78607 XY 0.00000 XZ 0.00000 ++ Transition Moments YY -0.18701 YZ -0.00000 ZZ 0.47718 ++ Dipole Oscillator Strength 0.03298 + +- Occ. 2 a1 --- Virt. 6 a1 0.94922 X +- Occ. 4 a1 --- Virt. 9 a1 -0.12842 X +- Occ. 5 b2 --- Virt. 10 b2 0.27970 X ++ Occ. 2 a1 --- Virt. 6 a1 0.94922 X ++ Occ. 4 a1 --- Virt. 9 a1 -0.12842 X ++ Occ. 5 b2 --- Virt. 10 b2 -0.27970 X + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926971 +- Excitation energy = 0.294221000360 +- Excited state energy = -76.125516926611 ++ Ground state energy = -76.419737926855 ++ Excitation energy = 0.294221000398 ++ Excited state energy = -76.125516926457 + + +- 9 smallest eigenvalue differences ++ 9 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 4 6 a1 0.06535 -0.37102 11.87 +- 3 1 5 7 a2 0.15123 -0.29196 12.06 +- 4 1 4 7 b1 0.15123 -0.37102 14.21 +- 5 1 3 6 b1 0.06535 -0.51498 15.79 +- 6 1 3 7 a1 0.15123 -0.51498 18.13 +- 7 1 5 8 a2 0.75685 -0.29196 28.54 +- 8 1 2 6 a1 0.06535 -0.99731 28.92 +- 9 1 5 9 b2 0.80551 -0.29196 29.86 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 1 4 6 a1 -0.371 0.065 11.874 ++ 3 1 5 7 a2 -0.292 0.151 12.060 ++ 4 1 4 7 b1 -0.371 0.151 14.211 ++ 5 1 3 6 b1 -0.515 0.065 15.792 ++ 6 1 3 7 a1 -0.515 0.151 18.129 ++ 7 1 5 8 a2 -0.292 0.757 28.540 ++ 8 1 2 6 a1 -0.997 0.065 28.916 ++ 9 1 5 9 b2 -0.292 0.806 29.864 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -2174,109 +2144,109 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 9 0 0.13E+00 0.10+100 2.6 +- 2 27 0 0.67E-01 0.14E-01 4.7 +- 3 45 0 0.26E-01 0.64E-02 5.0 +- 4 62 4 0.56E-02 0.24E-03 4.8 +- 5 72 7 0.65E-03 0.75E-05 3.0 +- 6 76 8 0.14E-03 0.32E-07 1.5 +- 7 78 9 0.43E-04 0.10E-08 1.0 ++ 1 9 0 0.13E+00 0.10+100 1.8 ++ 2 27 0 0.67E-01 0.14E-01 3.2 ++ 3 45 0 0.26E-01 0.64E-02 3.2 ++ 4 62 4 0.56E-02 0.24E-03 3.1 ++ 5 72 7 0.65E-03 0.75E-05 2.0 ++ 6 76 8 0.14E-03 0.32E-07 1.0 ++ 7 78 9 0.43E-04 0.10E-08 0.7 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. ++ Ground state a1 -76.419737926855 a.u. + +- ------------------------------------------------------- +- Root 1 triplet b2 0.265905120 a.u. ( 7.2356495 eV) +- ------------------------------------------------------- ++ ---------------------------------------------------------------------------- ++ Root 1 triplet b2 0.265905120 a.u. 7.2356 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 6 a1 0.99896 X +- ------------------------------------------------------- +- Root 2 triplet a1 0.342027715 a.u. ( 9.3070516 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 6 a1 -0.99896 X ++ ---------------------------------------------------------------------------- ++ Root 2 triplet a1 0.342027715 a.u. 9.3071 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 7 b1 -0.07910 X +- Occ. 4 a1 --- Virt. 6 a1 0.99528 X +- Occ. 4 a1 --- Virt. 9 a1 0.05540 X +- ------------------------------------------------------- +- Root 3 triplet a2 0.348121083 a.u. ( 9.4728607 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 7 b1 0.07910 X ++ Occ. 4 a1 --- Virt. 6 a1 0.99528 X ++ Occ. 4 a1 --- Virt. 9 a1 -0.05540 X ++ ---------------------------------------------------------------------------- ++ Root 3 triplet a2 0.348121083 a.u. 9.4729 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 7 b1 -0.99830 X +- ------------------------------------------------------- +- Root 4 triplet b1 0.415497570 a.u. ( 11.3062689 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 7 b1 -0.99830 X ++ ---------------------------------------------------------------------------- ++ Root 4 triplet b1 0.415497570 a.u. 11.3063 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 6 a1 0.26602 X +- Occ. 4 a1 --- Virt. 7 b1 -0.96114 X +- Occ. 4 a1 --- Virt. 8 b1 -0.06943 X +- ------------------------------------------------------- +- Root 5 triplet b1 0.480288082 a.u. ( 13.0693092 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 6 a1 0.26602 X ++ Occ. 4 a1 --- Virt. 7 b1 0.96114 X ++ Occ. 4 a1 --- Virt. 8 b1 0.06943 X ++ ---------------------------------------------------------------------------- ++ Root 5 triplet b1 0.480288082 a.u. 13.0693 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 6 a1 0.96099 X +- Occ. 3 b1 --- Virt. 9 a1 0.05448 X +- Occ. 4 a1 --- Virt. 7 b1 0.26744 X +- ------------------------------------------------------- +- Root 6 triplet a1 0.542223017 a.u. ( 14.7546453 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 6 a1 0.96099 X ++ Occ. 3 b1 --- Virt. 9 a1 -0.05448 X ++ Occ. 4 a1 --- Virt. 7 b1 -0.26744 X ++ ---------------------------------------------------------------------------- ++ Root 6 triplet a1 0.542223017 a.u. 14.7546 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 0.06283 X +- Occ. 3 b1 --- Virt. 7 b1 -0.99025 X +- Occ. 3 b1 --- Virt. 8 b1 -0.07817 X +- Occ. 3 b1 --- Virt. 12 b1 0.05866 X +- Occ. 4 a1 --- Virt. 6 a1 -0.08307 X +- ------------------------------------------------------- +- Root 7 triplet a1 0.942023329 a.u. ( 25.6337700 eV) +- ------------------------------------------------------- ++ Occ. 2 a1 --- Virt. 6 a1 0.06283 X ++ Occ. 3 b1 --- Virt. 7 b1 -0.99025 X ++ Occ. 3 b1 --- Virt. 8 b1 -0.07817 X ++ Occ. 3 b1 --- Virt. 12 b1 -0.05866 X ++ Occ. 4 a1 --- Virt. 6 a1 0.08307 X ++ ---------------------------------------------------------------------------- ++ Root 7 triplet a1 0.942023329 a.u. 25.6338 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 0.84757 X +- Occ. 2 a1 --- Virt. 9 a1 0.06565 X +- Occ. 3 b1 --- Virt. 7 b1 0.08711 X +- Occ. 3 b1 --- Virt. 8 b1 -0.07050 X +- Occ. 3 b1 --- Virt. 12 b1 0.05956 X +- Occ. 4 a1 --- Virt. 9 a1 0.26129 X +- Occ. 4 a1 --- Virt. 11 a1 -0.09677 X +- Occ. 5 b2 --- Virt. 10 b2 -0.42574 X +- ------------------------------------------------------- +- Root 8 triplet a2 0.949236740 a.u. ( 25.8300569 eV) +- ------------------------------------------------------- ++ Occ. 2 a1 --- Virt. 6 a1 -0.84757 X ++ Occ. 2 a1 --- Virt. 9 a1 0.06565 X ++ Occ. 3 b1 --- Virt. 7 b1 -0.08711 X ++ Occ. 3 b1 --- Virt. 8 b1 0.07050 X ++ Occ. 3 b1 --- Virt. 12 b1 0.05956 X ++ Occ. 4 a1 --- Virt. 9 a1 -0.26129 X ++ Occ. 4 a1 --- Virt. 11 a1 0.09677 X ++ Occ. 5 b2 --- Virt. 10 b2 -0.42574 X ++ ---------------------------------------------------------------------------- ++ Root 8 triplet a2 0.949236740 a.u. 25.8301 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 8 b1 -0.99853 X +- ------------------------------------------------------- +- Root 9 triplet b2 0.970542370 a.u. ( 26.4098129 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 8 b1 -0.99853 X ++ ---------------------------------------------------------------------------- ++ Root 9 triplet b2 0.970542370 a.u. 26.4098 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 4 a1 --- Virt. 10 b2 0.12892 X +- Occ. 5 b2 --- Virt. 9 a1 -0.97615 X +- Occ. 5 b2 --- Virt. 11 a1 0.16889 X ++ Occ. 4 a1 --- Virt. 10 b2 -0.12892 X ++ Occ. 5 b2 --- Virt. 9 a1 -0.97615 X ++ Occ. 5 b2 --- Virt. 11 a1 0.16889 X + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926971 +- Excitation energy = 0.265905119631 +- Excited state energy = -76.153832807340 ++ Ground state energy = -76.419737926855 ++ Excitation energy = 0.265905119664 ++ Excited state energy = -76.153832807191 + + +- Task times cpu: 44.0s wall: 44.1s ++ Task times cpu: 29.8s wall: 29.9s + + + NWChem Input Module +@@ -2291,6 +2261,24 @@ + TDDFT H2O B3LYP/6-31G** QA TEST + + ++ ++ ++ Summary of "ao basis" -> "ao basis" (cartesian) ++ ------------------------------------------------------------------------------ ++ Tag Description Shells Functions and Types ++ ---------------- ------------------------------ ------ --------------------- ++ O 6-31G** 6 15 3s2p1d ++ H 6-31G** 3 5 2s1p ++ ++ ++ Symmetry analysis of basis ++ -------------------------- ++ ++ a1 12 ++ a2 2 ++ b1 7 ++ b2 4 ++ + Caching 1-el integrals + + General Information +@@ -2375,100 +2363,111 @@ + 6 a1 7 b1 8 b1 9 a1 10 b2 + 11 a1 12 b1 13 a1 14 a2 15 a1 + +- Time after variat. SCF: 99.5 +- Time prior to 1st pass: 99.5 ++ Time after variat. SCF: 66.8 ++ Time prior to 1st pass: 66.8 + + #quartets = 3.081D+03 #integrals = 2.937D+04 #direct = 0.0% #cached =100.0% + + + Integral file = ./tddft_h2o_dat.aoints.0 + Record size in doubles = 65536 No. of integs per rec = 43688 +- Max. records in memory = 2 Max. records in file = 58806 ++ Max. records in memory = 2 Max. records in file = 17697 + No. of bits per label = 8 No. of bits per value = 64 + + + Grid_pts file = ./tddft_h2o_dat.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 +- Max. records in memory = 23 Max. recs in file = 313621 ++ Max. records in memory = 23 Max. recs in file = 94384 + + + Memory utilization after 1st SCF pass: +- Heap Space remaining (MW): 15.97 15968615 +- Stack Space remaining (MW): 16.38 16383754 ++ Heap Space remaining (MW): 12.69 12691738 ++ Stack Space remaining (MW): 13.11 13106924 + + convergence iter energy DeltaE RMS-Dens Diis-err time + ---------------- ----- ----------------- --------- --------- --------- ------ +- d= 0,ls=0.0,diis 1 -76.4197379270 -8.55D+01 8.23D-10 4.32D-16 99.8 +- d= 0,ls=0.0,diis 2 -76.4197379270 1.42D-13 5.09D-10 6.62D-16 100.0 ++ d= 0,ls=0.0,diis 1 -76.4197379269 -8.55D+01 8.23D-10 4.32D-16 67.0 ++ d= 0,ls=0.0,diis 2 -76.4197379269 -2.70D-13 5.10D-10 6.61D-16 67.2 + + +- Total DFT energy = -76.419737926971 +- One electron energy = -123.023475209748 +- Coulomb energy = 46.835826645279 +- Exchange-Corr. energy = -9.351530745054 ++ Total DFT energy = -76.419737926855 ++ One electron energy = -123.023475209758 ++ Coulomb energy = 46.835826645412 ++ Exchange-Corr. energy = -9.351530745061 + Nuclear repulsion energy = 9.119441382552 + + Numeric. integr. density = 10.000001105934 + +- Total iterative time = 0.5s ++ Total iterative time = 0.4s + + + ++ Occupations of the irreducible representations ++ ---------------------------------------------- ++ ++ irrep alpha beta ++ -------- -------- -------- ++ a1 3.0 3.0 ++ a2 0.0 0.0 ++ b1 1.0 1.0 ++ b2 1.0 1.0 ++ ++ + DFT Final Molecular Orbital Analysis + ------------------------------------ + + Vector 1 Occ=2.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.3D-13, 9.4D-17, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -2.2D-13, 1.8D-16, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 1 -0.992881 1 O s ++ 1 0.992881 1 O s + + Vector 2 Occ=2.000000D+00 E=-9.973140D-01 Symmetry=a1 +- MO Center= -5.4D-11, -8.5D-13, -8.7D-02, r^2= 5.0D-01 ++ MO Center= -5.3D-11, -8.0D-13, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 2 0.467607 1 O s 6 0.422148 1 O s +- 1 -0.210485 1 O s 21 0.151985 3 H s +- 16 0.151985 2 H s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=2.000000D+00 E=-5.149839D-01 Symmetry=b1 +- MO Center= 8.2D-11, -1.4D-13, -1.1D-01, r^2= 7.9D-01 ++ MO Center= 8.0D-11, -1.4D-13, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 3 -0.513996 1 O px 7 -0.247229 1 O px +- 16 -0.244124 2 H s 21 0.244124 3 H s +- 17 -0.157241 2 H s 22 0.157241 3 H s ++ 3 0.513996 1 O px 7 0.247229 1 O px ++ 16 0.244124 2 H s 21 -0.244124 3 H s ++ 17 0.157241 2 H s 22 -0.157241 3 H s + + Vector 4 Occ=2.000000D+00 E=-3.710237D-01 Symmetry=a1 +- MO Center= -2.4D-12, -2.4D-13, 1.9D-01, r^2= 7.0D-01 ++ MO Center= -1.0D-11, 2.6D-24, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 5 0.552653 1 O pz 6 0.416361 1 O s + 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=2.000000D+00 E=-2.919624D-01 Symmetry=b2 +- MO Center= -6.6D-13, 1.2D-12, 9.4D-02, r^2= 5.9D-01 ++ MO Center= -4.3D-13, 7.4D-13, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 4 -0.643967 1 O py 8 -0.494567 1 O py ++ 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534605D-02 Symmetry=a1 +- MO Center= -1.8D-11, -1.7D-13, -6.2D-01, r^2= 2.4D+00 ++ MO Center= -4.9D-12, 7.2D-14, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.261195 1 O s 22 0.969306 3 H s +- 17 0.969306 2 H s 9 0.469996 1 O pz +- 5 0.275960 1 O pz ++ 6 1.261195 1 O s 17 -0.969306 2 H s ++ 22 -0.969306 3 H s 9 -0.469996 1 O pz ++ 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512261D-01 Symmetry=b1 +- MO Center= -3.7D-12, 7.1D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= -3.8D-11, 7.3D-14, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 1.286510 3 H s 17 -1.286510 2 H s +- 7 0.758485 1 O px 3 0.410623 1 O px ++ 17 1.286510 2 H s 22 -1.286510 3 H s ++ 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= -5.1D-12, 1.7D-23, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 4.0D-10, 1.7D-13, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 17 -0.795376 2 H s 22 0.795376 3 H s +@@ -2477,66 +2476,66 @@ + 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055101D-01 Symmetry=a1 +- MO Center= 1.2D-11, -3.3D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= -3.5D-10, -3.1D-13, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 -0.647807 1 O pz 17 0.601436 2 H s +- 22 0.601436 3 H s 16 -0.566894 2 H s +- 21 -0.566894 3 H s 9 0.558049 1 O pz +- 10 -0.262150 1 O dxx 6 -0.238812 1 O s +- 18 -0.164396 2 H px 23 0.164396 3 H px ++ 5 0.647807 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566894 2 H s ++ 21 0.566894 3 H s 9 -0.558049 1 O pz ++ 10 0.262150 1 O dxx 6 0.238812 1 O s ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913504D-01 Symmetry=b2 +- MO Center= -2.5D-13, 6.9D-12, 1.1D-01, r^2= 1.1D+00 ++ MO Center= -4.4D-13, 8.9D-12, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 8 1.037304 1 O py 4 -0.959670 1 O py ++ 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935286D-01 Symmetry=a1 +- MO Center= 1.3D-12, -6.5D-12, 2.6D-01, r^2= 1.5D+00 ++ MO Center= -1.8D-11, -8.4D-12, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.350166 1 O s 2 0.816728 1 O s +- 9 -0.807033 1 O pz 5 0.529854 1 O pz +- 21 -0.502429 3 H s 16 -0.502429 2 H s +- 17 0.381525 2 H s 22 0.381525 3 H s +- 13 0.323630 1 O dyy 15 0.272322 1 O dzz ++ 6 1.350166 1 O s 2 -0.816728 1 O s ++ 9 0.807033 1 O pz 5 -0.529854 1 O pz ++ 16 0.502429 2 H s 21 0.502429 3 H s ++ 17 -0.381525 2 H s 22 -0.381525 3 H s ++ 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -3.1D-12, 1.2D-23, 1.2D-01, r^2= 1.6D+00 ++ MO Center= -1.2D-11, 1.2D-13, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152363 2 H s +- 21 -0.152363 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152363 2 H s ++ 21 0.152363 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175375D+00 Symmetry=a1 +- MO Center= -2.9D-12, 3.2D-13, -3.7D-01, r^2= 1.4D+00 ++ MO Center= 2.1D-11, 3.9D-13, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 3.527323 1 O s 2 -1.425462 1 O s +- 9 -0.990461 1 O pz 22 -0.770199 3 H s +- 17 -0.770199 2 H s 10 -0.625764 1 O dxx ++ 9 -0.990461 1 O pz 17 -0.770199 2 H s ++ 22 -0.770199 3 H s 10 -0.625764 1 O dxx + 5 0.351436 1 O pz 15 -0.333460 1 O dzz +- 21 -0.326676 3 H s 16 -0.326676 2 H s ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529510D+00 Symmetry=a2 +- MO Center= -1.6D-12, -2.2D-14, -1.3D-01, r^2= 7.7D-01 ++ MO Center= -2.3D-12, -1.6D-13, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 11 -1.177966 1 O dxy 24 0.350698 3 H py +- 19 -0.350698 2 H py ++ 11 1.177966 1 O dxy 19 0.350698 2 H py ++ 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= 1.0D-12, 5.9D-14, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -1.4D-13, 4.6D-14, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 0.901910 1 O s 15 -0.788597 1 O dzz + 9 -0.519667 1 O pz 2 -0.323896 1 O s + 10 0.255739 1 O dxx 20 0.248206 2 H pz + 25 0.248206 3 H pz 13 0.245549 1 O dyy +- 21 -0.237555 3 H s 16 -0.237555 2 H s ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + center of mass +@@ -2554,17 +2553,17 @@ + + L x y z total alpha beta nuclear + - - - - ----- ----- ---- ------- +- 0 0 0 0 0.000000 -5.000000 -5.000000 10.000000 ++ 0 0 0 0 -0.000000 -5.000000 -5.000000 10.000000 + +- 1 1 0 0 0.000000 0.000000 0.000000 0.000000 ++ 1 1 0 0 -0.000000 -0.000000 -0.000000 0.000000 + 1 0 1 0 0.000000 0.000000 0.000000 0.000000 + 1 0 0 1 -0.803750 -0.401875 -0.401875 0.000000 + + 2 2 0 0 -3.194729 -3.656402 -3.656402 4.118075 +- 2 1 1 0 0.000000 0.000000 0.000000 0.000000 ++ 2 1 1 0 -0.000000 -0.000000 -0.000000 0.000000 + 2 1 0 1 0.000000 0.000000 0.000000 0.000000 + 2 0 2 0 -5.306781 -2.653391 -2.653391 0.000000 +- 2 0 1 1 0.000000 0.000000 0.000000 0.000000 ++ 2 0 1 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 0 2 -4.442837 -3.236338 -3.236338 2.029839 + + +@@ -2609,7 +2608,7 @@ + Alpha electrons : 5 + Beta electrons : 5 + No. of roots : 9 +- Max subspacesize : 100 ++ Max subspacesize : 5800 + Max iterations : 100 + Target root : 1 + Target symmetry : none +@@ -2619,26 +2618,26 @@ + + Memory Information + ------------------ +- Available GA space size is 32767375 doubles +- Available MA space size is 32766361 doubles ++ Available GA space size is 26213775 doubles ++ Available MA space size is 26212684 doubles + Length of a trial vector is 100 + Estimated peak GA usage is 49500 doubles + Estimated peak MA usage is 1307600 doubles +- Estimated peak DRA usage is 40000 doubles ++ Estimated peak DRA usage is 2320000 doubles + +- 9 smallest eigenvalue differences ++ 9 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 4 6 a1 0.06535 -0.37102 11.87 +- 3 1 5 7 a2 0.15123 -0.29196 12.06 +- 4 1 4 7 b1 0.15123 -0.37102 14.21 +- 5 1 3 6 b1 0.06535 -0.51498 15.79 +- 6 1 3 7 a1 0.15123 -0.51498 18.13 +- 7 1 5 8 a2 0.75685 -0.29196 28.54 +- 8 1 2 6 a1 0.06535 -0.99731 28.92 +- 9 1 5 9 b2 0.80551 -0.29196 29.86 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 1 4 6 a1 -0.371 0.065 11.874 ++ 3 1 5 7 a2 -0.292 0.151 12.060 ++ 4 1 4 7 b1 -0.371 0.151 14.211 ++ 5 1 3 6 b1 -0.515 0.065 15.792 ++ 6 1 3 7 a1 -0.515 0.151 18.129 ++ 7 1 5 8 a2 -0.292 0.757 28.540 ++ 8 1 2 6 a1 -0.997 0.065 28.916 ++ 9 1 5 9 b2 -0.292 0.806 29.864 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -2646,166 +2645,130 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 9 0 0.44E+00 0.10+100 2.8 +- 2 27 0 0.52E-01 0.53E-01 5.1 +- 3 45 1 0.12E-01 0.86E-03 5.1 +- 4 61 4 0.24E-02 0.19E-04 4.6 +- 5 71 7 0.40E-03 0.55E-06 3.1 +- 6 75 9 0.66E-04 0.13E-07 1.6 ++ 1 9 0 0.44E+00 0.10+100 1.8 ++ 2 27 0 0.52E-01 0.53E-01 3.3 ++ 3 45 1 0.12E-01 0.86E-03 3.4 ++ 4 61 4 0.24E-02 0.19E-04 3.2 ++ 5 71 7 0.40E-03 0.55E-06 2.3 ++ 6 75 9 0.66E-04 0.13E-07 1.3 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. ++ Ground state a1 -76.419737926855 a.u. + +- ------------------------------------------------------- +- Root 1 singlet b2 0.294220998 a.u. ( 8.0061641 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.26890 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ -0.08066 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.93672 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 1.60959 YYZ 0.00000 YZZ 0.72276 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.01418 ++ ---------------------------------------------------------------------------- ++ Root 1 singlet b2 0.294220998 a.u. 8.0062 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.26890 Z 0.00000 ++ Transition Moments XX -0.00000 XY 0.00000 XZ -0.00000 ++ Transition Moments YY 0.00000 YZ 0.08066 ZZ -0.00000 ++ Dipole Oscillator Strength 0.01418 + +- Occ. 5 b2 --- Virt. 6 a1 1.00002 X +- ------------------------------------------------------- +- Root 2 singlet a2 0.369097181 a.u. ( 10.0436496 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.24936 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ -0.34740 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Occ. 5 b2 --- Virt. 6 a1 -1.00002 X ++ ---------------------------------------------------------------------------- ++ Root 2 singlet a2 0.369097181 a.u. 10.0436 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z 0.00000 ++ Transition Moments XX 0.00000 XY -0.24936 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 b2 --- Virt. 7 b1 -0.99936 X +- ------------------------------------------------------- +- Root 3 singlet a1 0.387064418 a.u. ( 10.5325632 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.60463 +- Transition Moments XX -0.62350 XY 0.00000 XZ 0.00000 +- Transition Moments YY -0.09429 YZ 0.00000 ZZ -0.45941 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 1.72772 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.91748 YZZ 0.00000 +- Transition Moments ZZZ 3.60522 +- Dipole Oscillator Strength 0.09433 ++ Occ. 5 b2 --- Virt. 7 b1 0.99936 X ++ ---------------------------------------------------------------------------- ++ Root 3 singlet a1 0.387064418 a.u. 10.5326 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z -0.60463 ++ Transition Moments XX 0.62350 XY -0.00000 XZ 0.00000 ++ Transition Moments YY 0.09429 YZ 0.00000 ZZ 0.45941 ++ Dipole Oscillator Strength 0.09433 + +- Occ. 3 b1 --- Virt. 7 b1 -0.11875 X +- Occ. 4 a1 --- Virt. 6 a1 -0.99241 X +- ------------------------------------------------------- +- Root 4 singlet b1 0.466992131 a.u. ( 12.7075079 eV) +- ------------------------------------------------------- +- Transition Moments X 0.47326 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ -0.58528 ++ Occ. 3 b1 --- Virt. 7 b1 0.11875 X ++ Occ. 4 a1 --- Virt. 6 a1 -0.99241 X ++ ---------------------------------------------------------------------------- ++ Root 4 singlet b1 0.466992131 a.u. 12.7075 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.47326 Y -0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ 0.58528 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 2.47430 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.51687 XYZ 0.00000 XZZ 1.56810 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.06973 ++ Dipole Oscillator Strength 0.06973 + +- Occ. 3 b1 --- Virt. 6 a1 -0.19330 X +- Occ. 4 a1 --- Virt. 7 b1 -0.98016 X +- ------------------------------------------------------- +- Root 5 singlet b1 0.533227389 a.u. ( 14.5098617 eV) +- ------------------------------------------------------- +- Transition Moments X 1.05196 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ -0.96330 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 7.34419 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 1.45603 XYZ 0.00000 XZZ 2.57081 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.39338 ++ Occ. 3 b1 --- Virt. 6 a1 0.19330 X ++ Occ. 4 a1 --- Virt. 7 b1 -0.98016 X ++ ---------------------------------------------------------------------------- ++ Root 5 singlet b1 0.533227389 a.u. 14.5099 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -1.05196 Y 0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ 0.96330 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.39338 + +- Occ. 3 b1 --- Virt. 6 a1 0.98069 X +- Occ. 4 a1 --- Virt. 7 b1 -0.19253 X +- ------------------------------------------------------- +- Root 6 singlet a1 0.652737974 a.u. ( 17.7619116 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.68471 +- Transition Moments XX -1.92244 XY 0.00000 XZ 0.00000 +- Transition Moments YY -0.09170 YZ 0.00000 ZZ -0.58365 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 2.81222 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.83325 YZZ 0.00000 +- Transition Moments ZZZ 2.91254 +- Dipole Oscillator Strength 0.20401 ++ Occ. 3 b1 --- Virt. 6 a1 -0.98069 X ++ Occ. 4 a1 --- Virt. 7 b1 -0.19253 X ++ ---------------------------------------------------------------------------- ++ Root 6 singlet a1 0.652737974 a.u. 17.7619 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z -0.68471 ++ Transition Moments XX 1.92244 XY -0.00000 XZ 0.00000 ++ Transition Moments YY 0.09170 YZ -0.00000 ZZ 0.58365 ++ Dipole Oscillator Strength 0.20401 + +- Occ. 2 a1 --- Virt. 6 a1 -0.07438 X +- Occ. 3 b1 --- Virt. 7 b1 0.97814 X +- Occ. 4 a1 --- Virt. 6 a1 -0.11134 X +- Occ. 4 a1 --- Virt. 9 a1 -0.08439 X +- Occ. 4 a1 --- Virt. 11 a1 0.06625 X +- Occ. 5 b2 --- Virt. 10 b2 0.12788 X +- ------------------------------------------------------- +- Root 7 singlet a2 0.962204475 a.u. ( 26.1829271 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 ++ Occ. 2 a1 --- Virt. 6 a1 -0.07438 X ++ Occ. 3 b1 --- Virt. 7 b1 -0.97814 X ++ Occ. 4 a1 --- Virt. 6 a1 -0.11134 X ++ Occ. 4 a1 --- Virt. 9 a1 -0.08439 X ++ Occ. 4 a1 --- Virt. 11 a1 0.06625 X ++ Occ. 5 b2 --- Virt. 10 b2 -0.12788 X ++ ---------------------------------------------------------------------------- ++ Root 7 singlet a2 0.962204475 a.u. 26.1829 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z 0.00000 + Transition Moments XX 0.00000 XY -0.41976 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ -0.19957 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 b2 --- Virt. 8 b1 0.99958 X +- ------------------------------------------------------- +- Root 8 singlet b2 1.009123498 a.u. ( 27.4596592 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y -0.39330 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ -0.33633 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY -0.47047 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY -1.82858 YYZ 0.00000 YZZ -0.66686 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.10406 ++ Occ. 5 b2 --- Virt. 8 b1 -0.99958 X ++ ---------------------------------------------------------------------------- ++ Root 8 singlet b2 1.009123498 a.u. 27.4597 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.39330 Z 0.00000 ++ Transition Moments XX -0.00000 XY 0.00000 XZ 0.00000 ++ Transition Moments YY 0.00000 YZ -0.33633 ZZ -0.00000 ++ Dipole Oscillator Strength 0.10406 + +- Occ. 5 b2 --- Virt. 9 a1 -0.97515 X +- Occ. 5 b2 --- Virt. 11 a1 0.21394 X +- ------------------------------------------------------- +- Root 9 singlet a1 1.018624614 a.u. ( 27.7181978 eV) +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z -0.22039 +- Transition Moments XX 0.78607 XY 0.00000 XZ 0.00000 +- Transition Moments YY -0.18701 YZ 0.00000 ZZ 0.47718 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ -0.93141 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ -0.50865 YZZ 0.00000 +- Transition Moments ZZZ -1.56142 +- Dipole Oscillator Strength 0.03298 ++ Occ. 5 b2 --- Virt. 9 a1 -0.97515 X ++ Occ. 5 b2 --- Virt. 11 a1 0.21394 X ++ ---------------------------------------------------------------------------- ++ Root 9 singlet a1 1.018624614 a.u. 27.7182 eV ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y 0.00000 Z 0.22039 ++ Transition Moments XX -0.78607 XY -0.00000 XZ -0.00000 ++ Transition Moments YY 0.18701 YZ 0.00000 ZZ -0.47718 ++ Dipole Oscillator Strength 0.03298 + +- Occ. 2 a1 --- Virt. 6 a1 -0.94922 X +- Occ. 4 a1 --- Virt. 9 a1 0.12842 X +- Occ. 5 b2 --- Virt. 10 b2 -0.27970 X ++ Occ. 2 a1 --- Virt. 6 a1 -0.94922 X ++ Occ. 4 a1 --- Virt. 9 a1 0.12842 X ++ Occ. 5 b2 --- Virt. 10 b2 0.27970 X + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926971 +- Excitation energy = 0.294220998303 +- Excited state energy = -76.125516928667 ++ Ground state energy = -76.419737926855 ++ Excitation energy = 0.294220998343 ++ Excited state energy = -76.125516928512 + + +- 9 smallest eigenvalue differences ++ 9 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 4 6 a1 0.06535 -0.37102 11.87 +- 3 1 5 7 a2 0.15123 -0.29196 12.06 +- 4 1 4 7 b1 0.15123 -0.37102 14.21 +- 5 1 3 6 b1 0.06535 -0.51498 15.79 +- 6 1 3 7 a1 0.15123 -0.51498 18.13 +- 7 1 5 8 a2 0.75685 -0.29196 28.54 +- 8 1 2 6 a1 0.06535 -0.99731 28.92 +- 9 1 5 9 b2 0.80551 -0.29196 29.86 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 1 4 6 a1 -0.371 0.065 11.874 ++ 3 1 5 7 a2 -0.292 0.151 12.060 ++ 4 1 4 7 b1 -0.371 0.151 14.211 ++ 5 1 3 6 b1 -0.515 0.065 15.792 ++ 6 1 3 7 a1 -0.515 0.151 18.129 ++ 7 1 5 8 a2 -0.292 0.757 28.540 ++ 8 1 2 6 a1 -0.997 0.065 28.916 ++ 9 1 5 9 b2 -0.292 0.806 29.864 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -2813,109 +2776,115 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 9 0 0.13E+00 0.10+100 2.8 +- 2 27 0 0.67E-01 0.14E-01 5.0 +- 3 45 0 0.26E-01 0.64E-02 5.1 +- 4 62 4 0.56E-02 0.24E-03 4.8 +- 5 72 7 0.65E-03 0.75E-05 3.1 +- 6 76 8 0.14E-03 0.32E-07 1.6 +- 7 78 9 0.43E-04 0.10E-08 1.1 ++ 1 9 0 0.13E+00 0.10+100 1.8 ++ 2 27 0 0.67E-01 0.14E-01 3.3 ++ 3 45 0 0.26E-01 0.64E-02 3.4 ++ 4 62 4 0.56E-02 0.24E-03 3.3 ++ 5 72 7 0.65E-03 0.75E-05 2.3 ++ 6 76 8 0.14E-03 0.32E-07 1.3 ++ 7 78 9 0.43E-04 0.10E-08 1.0 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. ++ Ground state a1 -76.419737926855 a.u. + +- ------------------------------------------------------- +- Root 1 triplet b2 0.265905118 a.u. ( 7.2356495 eV) +- ------------------------------------------------------- ++ ---------------------------------------------------------------------------- ++ Root 1 triplet b2 0.265905118 a.u. 7.2356 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 6 a1 0.99896 X +- ------------------------------------------------------- +- Root 2 triplet a1 0.342027714 a.u. ( 9.3070516 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 6 a1 0.99896 X ++ ---------------------------------------------------------------------------- ++ Root 2 triplet a1 0.342027714 a.u. 9.3071 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 7 b1 -0.07910 X +- Occ. 4 a1 --- Virt. 6 a1 0.99528 X +- Occ. 4 a1 --- Virt. 9 a1 -0.05540 X +- ------------------------------------------------------- +- Root 3 triplet a2 0.348121082 a.u. ( 9.4728606 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 7 b1 -0.07910 X ++ Occ. 4 a1 --- Virt. 6 a1 -0.99528 X ++ Occ. 4 a1 --- Virt. 9 a1 0.05540 X ++ ---------------------------------------------------------------------------- ++ Root 3 triplet a2 0.348121082 a.u. 9.4729 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 7 b1 0.99830 X +- ------------------------------------------------------- +- Root 4 triplet b1 0.415497569 a.u. ( 11.3062689 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 7 b1 -0.99830 X ++ ---------------------------------------------------------------------------- ++ Root 4 triplet b1 0.415497569 a.u. 11.3063 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 6 a1 -0.26602 X +- Occ. 4 a1 --- Virt. 7 b1 0.96114 X +- Occ. 4 a1 --- Virt. 8 b1 -0.06943 X +- ------------------------------------------------------- +- Root 5 triplet b1 0.480288080 a.u. ( 13.0693092 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 6 a1 -0.26602 X ++ Occ. 4 a1 --- Virt. 7 b1 -0.96114 X ++ Occ. 4 a1 --- Virt. 8 b1 -0.06943 X ++ ---------------------------------------------------------------------------- ++ Root 5 triplet b1 0.480288080 a.u. 13.0693 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 3 b1 --- Virt. 6 a1 0.96099 X +- Occ. 3 b1 --- Virt. 9 a1 -0.05448 X +- Occ. 4 a1 --- Virt. 7 b1 0.26744 X +- ------------------------------------------------------- +- Root 6 triplet a1 0.542223015 a.u. ( 14.7546452 eV) +- ------------------------------------------------------- ++ Occ. 3 b1 --- Virt. 6 a1 -0.96099 X ++ Occ. 3 b1 --- Virt. 9 a1 0.05448 X ++ Occ. 4 a1 --- Virt. 7 b1 0.26744 X ++ ---------------------------------------------------------------------------- ++ Root 6 triplet a1 0.542223015 a.u. 14.7546 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 0.06283 X +- Occ. 3 b1 --- Virt. 7 b1 0.99025 X +- Occ. 3 b1 --- Virt. 8 b1 -0.07817 X +- Occ. 3 b1 --- Virt. 12 b1 0.05866 X +- Occ. 4 a1 --- Virt. 6 a1 0.08307 X +- ------------------------------------------------------- +- Root 7 triplet a1 0.942023328 a.u. ( 25.6337699 eV) +- ------------------------------------------------------- ++ Occ. 2 a1 --- Virt. 6 a1 0.06283 X ++ Occ. 3 b1 --- Virt. 7 b1 -0.99025 X ++ Occ. 3 b1 --- Virt. 8 b1 -0.07817 X ++ Occ. 3 b1 --- Virt. 12 b1 -0.05866 X ++ Occ. 4 a1 --- Virt. 6 a1 0.08307 X ++ ---------------------------------------------------------------------------- ++ Root 7 triplet a1 0.942023328 a.u. 25.6338 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 2 a1 --- Virt. 6 a1 -0.84757 X +- Occ. 2 a1 --- Virt. 9 a1 0.06565 X +- Occ. 3 b1 --- Virt. 7 b1 0.08711 X +- Occ. 3 b1 --- Virt. 8 b1 0.07050 X +- Occ. 3 b1 --- Virt. 12 b1 -0.05956 X +- Occ. 4 a1 --- Virt. 9 a1 -0.26129 X +- Occ. 4 a1 --- Virt. 11 a1 0.09677 X +- Occ. 5 b2 --- Virt. 10 b2 0.42574 X +- ------------------------------------------------------- +- Root 8 triplet a2 0.949236738 a.u. ( 25.8300569 eV) +- ------------------------------------------------------- ++ Occ. 2 a1 --- Virt. 6 a1 0.84757 X ++ Occ. 2 a1 --- Virt. 9 a1 -0.06565 X ++ Occ. 3 b1 --- Virt. 7 b1 0.08711 X ++ Occ. 3 b1 --- Virt. 8 b1 -0.07050 X ++ Occ. 3 b1 --- Virt. 12 b1 -0.05956 X ++ Occ. 4 a1 --- Virt. 9 a1 0.26129 X ++ Occ. 4 a1 --- Virt. 11 a1 -0.09677 X ++ Occ. 5 b2 --- Virt. 10 b2 0.42574 X ++ ---------------------------------------------------------------------------- ++ Root 8 triplet a2 0.949236738 a.u. 25.8301 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 5 b2 --- Virt. 8 b1 -0.99853 X +- ------------------------------------------------------- +- Root 9 triplet b2 0.970542369 a.u. ( 26.4098128 eV) +- ------------------------------------------------------- ++ Occ. 5 b2 --- Virt. 8 b1 -0.99853 X ++ ---------------------------------------------------------------------------- ++ Root 9 triplet b2 0.970542369 a.u. 26.4098 eV ++ ---------------------------------------------------------------------------- + Transition Moments Spin forbidden + Oscillator Strength Spin forbidden + +- Occ. 4 a1 --- Virt. 10 b2 -0.12892 X +- Occ. 5 b2 --- Virt. 9 a1 0.97615 X +- Occ. 5 b2 --- Virt. 11 a1 -0.16889 X ++ Occ. 4 a1 --- Virt. 10 b2 0.12892 X ++ Occ. 5 b2 --- Virt. 9 a1 0.97615 X ++ Occ. 5 b2 --- Virt. 11 a1 -0.16889 X + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926971 +- Excitation energy = 0.265905117594 +- Excited state energy = -76.153832809377 ++ Ground state energy = -76.419737926855 ++ Excitation energy = 0.265905117629 ++ Excited state energy = -76.153832809226 + + +- Task times cpu: 46.4s wall: 46.5s ++ Task times cpu: 32.2s wall: 32.5s ++ ++ ++ NWChem Input Module ++ ------------------- ++ ++ + Summary of allocated global arrays + ----------------------------------- + No active global arrays +@@ -2926,11 +2895,12 @@ + ------------------------------ + + create destroy get put acc scatter gather read&inc +-calls: 1.03e+05 1.03e+05 1.53e+06 4.68e+05 9.08e+05 2194 0 0 +-number of processes/call 1.00e+00 1.00e+00 1.00e+00 1.00e+00 0.00e+00 +-bytes total: 7.61e+08 2.39e+08 5.29e+08 1.10e+07 0.00e+00 0.00e+00 ++calls: 5331 5331 1.74e+06 1.03e+06 9.07e+05 2194 0 3263 ++number of processes/call 1.00e+00 1.00e+00 1.00e+00 0.00e+00 0.00e+00 ++bytes total: 9.17e+08 2.28e+08 5.28e+08 5.00e+03 0.00e+00 2.61e+04 + bytes remote: 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 +-Max memory consumed for GA by this process: 914400 bytes ++Max memory consumed for GA by this process: 14594400 bytes ++ + MA_summarize_allocated_blocks: starting scan ... + MA_summarize_allocated_blocks: scan completed: 0 heap blocks, 0 stack blocks + MA usage statistics: +@@ -2939,20 +2909,13 @@ + heap stack + ---- ----- + current number of blocks 0 0 +- maximum number of blocks 24 48 ++ maximum number of blocks 24 51 + current total bytes 0 0 +- maximum total bytes 3322960 22510568 +- maximum total K-bytes 3323 22511 ++ maximum total bytes 3323664 22510872 ++ maximum total K-bytes 3324 22511 + maximum total M-bytes 4 23 + + +- NWChem Input Module +- ------------------- +- +- +- +- +- + CITATION + -------- + Please cite the following reference when publishing +@@ -2966,20 +2929,25 @@ + Comput. Phys. Commun. 181, 1477 (2010) + doi:10.1016/j.cpc.2010.04.018 + +- AUTHORS & CONTRIBUTORS +- ---------------------- +- E. J. Bylaska, W. A. de Jong, N. Govind, K. Kowalski, T. P. Straatsma, +- M. Valiev, H. J. J. van Dam, D. Wang, E. Apra, T. L. Windus, J. Hammond, +- J. Autschbach, P. Nichols, S. Hirata, M. T. Hackler, Y. Zhao, P.-D. Fan, +- R. J. Harrison, M. Dupuis, D. M. A. Smith, K. Glaesemann, J. Nieplocha, +- V. Tipparaju, M. Krishnan, A. Vazquez-Mayagoitia, L. Jensen, M. Swart, +- Q. Wu, T. Van Voorhis, A. A. Auer, M. Nooijen, L. D. Crosby, E. Brown, +- G. Cisneros, G. I. Fann, H. Fruchtl, J. Garza, K. Hirao, +- R. Kendall, J. A. Nichols, K. Tsemekhman, K. Wolinski, J. Anchell, +- D. Bernholdt, P. Borowski, T. Clark, D. Clerc, H. Dachsel, M. Deegan, +- K. Dyall, D. Elwood, E. Glendening, M. Gutowski, A. Hess, J. Jaffe, +- B. Johnson, J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, R. Littlefield, +- X. Long, B. Meng, T. Nakajima, S. Niu, L. Pollack, M. Rosing, G. Sandrone, +- M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, A. Wong, Z. Zhang. ++ AUTHORS ++ ------- ++ E. Apra, E. J. Bylaska, W. A. de Jong, N. Govind, K. Kowalski, ++ T. P. Straatsma, M. Valiev, H. J. J. van Dam, D. Wang, T. L. Windus, ++ J. Hammond, J. Autschbach, K. Bhaskaran-Nair, J. Brabec, K. Lopata, ++ S. A. Fischer, S. Krishnamoorthy, W. Ma, M. Klemm, O. Villa, Y. Chen, ++ V. Anisimov, F. Aquino, S. Hirata, M. T. Hackler, T. Risthaus, M. Malagoli, ++ A. Marenich, A. Otero-de-la-Roza, J. Mullin, P. Nichols, R. Peverati, ++ J. Pittner, Y. Zhao, P.-D. Fan, A. Fonari, M. Williamson, R. J. Harrison, ++ J. R. Rehr, M. Dupuis, D. Silverstein, D. M. A. Smith, J. Nieplocha, ++ V. Tipparaju, M. Krishnan, B. E. Van Kuiken, A. Vazquez-Mayagoitia, ++ L. Jensen, M. Swart, Q. Wu, T. Van Voorhis, A. A. Auer, M. Nooijen, ++ L. D. Crosby, E. Brown, G. Cisneros, G. I. Fann, H. Fruchtl, J. Garza, ++ K. Hirao, R. A. Kendall, J. A. Nichols, K. Tsemekhman, K. Wolinski, ++ J. Anchell, D. E. Bernholdt, P. Borowski, T. Clark, D. Clerc, H. Dachsel, ++ M. J. O. Deegan, K. Dyall, D. Elwood, E. Glendening, M. Gutowski, A. C. Hess, ++ J. Jaffe, B. G. Johnson, J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, ++ R. Littlefield, X. Long, B. Meng, T. Nakajima, S. Niu, L. Pollack, M. Rosing, ++ K. Glaesemann, G. Sandrone, M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, ++ A. T. Wong, Z. Zhang. + +- Total times cpu: 145.8s wall: 146.3s ++ Total times cpu: 98.9s wall: 99.5s +Index: QA/tests/tddft_h2o_uhf_mxvc20/tddft_h2o_uhf_mxvc20.nw +=================================================================== +--- QA/tests/tddft_h2o_uhf_mxvc20/tddft_h2o_uhf_mxvc20.nw (revision 27754) ++++ QA/tests/tddft_h2o_uhf_mxvc20/tddft_h2o_uhf_mxvc20.nw (revision 27755) +@@ -33,7 +33,7 @@ + cis + nroots 10 + #print convergence +-maxvecs 20 ++#maxvecs 20 + end + + task tddft energy +@@ -43,7 +43,7 @@ + algorithm 3 + nroots 10 + #print convergence +-maxvecs 20 ++#maxvecs 20 + end + + task tddft energy +@@ -51,7 +51,7 @@ + tddft + nroots 9 + #print convergence +-maxvecs 36 ++#maxvecs 36 + end + + task tddft energy +@@ -60,7 +60,7 @@ + algorithm 3 + nroots 9 + #print convergence +-maxvecs 36 ++#maxvecs 36 + end + + task tddft energy +Index: QA/tests/tddft_h2o_uhf_mxvc20/tddft_h2o_uhf_mxvc20.out +=================================================================== +--- QA/tests/tddft_h2o_uhf_mxvc20/tddft_h2o_uhf_mxvc20.out (revision 27754) ++++ QA/tests/tddft_h2o_uhf_mxvc20/tddft_h2o_uhf_mxvc20.out (revision 27755) +@@ -76,7 +76,7 @@ + + + +- Northwest Computational Chemistry Package (NWChem) 6.0 ++ Northwest Computational Chemistry Package (NWChem) 6.6 + ------------------------------------------------------ + + +@@ -84,7 +84,7 @@ + Pacific Northwest National Laboratory + Richland, WA 99352 + +- Copyright (c) 1994-2010 ++ Copyright (c) 1994-2015 + Pacific Northwest National Laboratory + Battelle Memorial Institute + +@@ -109,29 +109,31 @@ + Job information + --------------- + +- hostname = arcen +- program = ../../../bin/LINUX64/nwchem +- date = Thu Jan 27 22:06:54 2011 ++ hostname = moser ++ program = /home/edo/nwchem-6.6/bin/LINUX64/nwchem ++ date = Tue Oct 20 13:03:23 2015 + +- compiled = Thu_Jan_27_18:50:29_2011 +- source = /home/d3y133/nwchem-dev/nwchem-r19858M +- nwchem branch = Development +- input = tddft_h2o_uhf_mxvc20.nw +- prefix = tddft_h2o_dat. +- data base = ./tddft_h2o_dat.db +- status = startup +- nproc = 1 +- time left = -1s ++ compiled = Tue_Oct_20_12:33:43_2015 ++ source = /home/edo/nwchem-6.6 ++ nwchem branch = 6.6 ++ nwchem revision = 27746 ++ ga revision = 10594 ++ input = tddft_h2o_uhf_mxvc20.nw ++ prefix = tddft_h2o_dat. ++ data base = ./tddft_h2o_dat.db ++ status = startup ++ nproc = 3 ++ time left = -1s + + + + Memory information + ------------------ + +- heap = 16384001 doubles = 125.0 Mbytes +- stack = 16384001 doubles = 125.0 Mbytes +- global = 32768000 doubles = 250.0 Mbytes (distinct from heap & stack) +- total = 65536002 doubles = 500.0 Mbytes ++ heap = 13107196 doubles = 100.0 Mbytes ++ stack = 13107201 doubles = 100.0 Mbytes ++ global = 26214400 doubles = 200.0 Mbytes (distinct from heap & stack) ++ total = 52428797 doubles = 400.0 Mbytes + verify = yes + hardfail = no + +@@ -247,9 +249,6 @@ + + + +- library name resolved from: .nwchemrc +- library file name is: +- + Basis "ao basis" -> "" (cartesian) + ----- + O (Oxygen) +@@ -307,6 +306,24 @@ + TDDFT H2O B3LYP/6-31G** QA TEST + + ++ ++ ++ Summary of "ao basis" -> "ao basis" (cartesian) ++ ------------------------------------------------------------------------------ ++ Tag Description Shells Functions and Types ++ ---------------- ------------------------------ ------ --------------------- ++ O 6-31G** 6 15 3s2p1d ++ H 6-31G** 3 5 2s1p ++ ++ ++ Symmetry analysis of basis ++ -------------------------- ++ ++ a1 12 ++ a2 2 ++ b1 7 ++ b2 4 ++ + Caching 1-el integrals + + General Information +@@ -423,58 +440,72 @@ + + Integral file = ./tddft_h2o_dat.aoints.0 + Record size in doubles = 65536 No. of integs per rec = 43688 +- Max. records in memory = 2 Max. records in file = 58808 ++ Max. records in memory = 2 Max. records in file = 5898 + No. of bits per label = 8 No. of bits per value = 64 + + ++File balance: exchanges= 0 moved= 0 time= 0.0 ++ ++ + Grid_pts file = ./tddft_h2o_dat.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 +- Max. records in memory = 23 Max. recs in file = 313621 ++ Max. records in memory = 9 Max. recs in file = 31461 + + + Memory utilization after 1st SCF pass: +- Heap Space remaining (MW): 15.97 15968603 +- Stack Space remaining (MW): 16.38 16383670 ++ Heap Space remaining (MW): 12.86 12863756 ++ Stack Space remaining (MW): 13.11 13106852 + + convergence iter energy DeltaE RMS-Dens Diis-err time + ---------------- ----- ----------------- --------- --------- --------- ------ +- d= 0,ls=0.0,diis 1 -76.3831022177 -8.55D+01 1.50D-02 9.41D-02 0.5 ++ d= 0,ls=0.0,diis 1 -76.3831021016 -8.55D+01 1.50D-02 9.41D-02 0.3 + 1.50D-02 9.41D-02 +- d= 0,ls=0.0,diis 2 -76.3778073818 5.29D-03 7.49D-03 1.18D-01 0.9 ++ d= 0,ls=0.0,diis 2 -76.3778069945 5.30D-03 7.49D-03 1.18D-01 0.4 + 7.49D-03 1.18D-01 +- d= 0,ls=0.0,diis 3 -76.4187589929 -4.10D-02 9.56D-04 2.80D-03 1.2 ++ d= 0,ls=0.0,diis 3 -76.4187589585 -4.10D-02 9.56D-04 2.80D-03 0.5 + 9.56D-04 2.80D-03 +- d= 0,ls=0.0,diis 4 -76.4197294110 -9.70D-04 8.93D-05 2.19D-05 1.6 ++ d= 0,ls=0.0,diis 4 -76.4197294110 -9.70D-04 8.93D-05 2.19D-05 0.6 + 8.93D-05 2.19D-05 +- d= 0,ls=0.0,diis 5 -76.4197379181 -8.51D-06 4.06D-06 1.92D-08 1.9 +- 4.06D-06 1.92D-08 +- d= 0,ls=0.0,diis 6 -76.4197379267 -8.58D-09 6.85D-07 3.05D-10 2.3 ++ d= 0,ls=0.0,diis 5 -76.4197379183 -8.51D-06 4.06D-06 1.93D-08 0.7 ++ 4.06D-06 1.93D-08 ++ d= 0,ls=0.0,diis 6 -76.4197379269 -8.59D-09 6.85D-07 3.05D-10 0.8 + 6.85D-07 3.05D-10 + + +- Total DFT energy = -76.419737926688 +- One electron energy = -123.023412212932 +- Coulomb energy = 46.835755827544 +- Exchange-Corr. energy = -9.351522923852 ++ Total DFT energy = -76.419737926905 ++ One electron energy = -123.023412158315 ++ Coulomb energy = 46.835755765310 ++ Exchange-Corr. energy = -9.351522916451 + Nuclear repulsion energy = 9.119441382552 + +- Numeric. integr. density = 10.000001105931 ++ Numeric. integr. density = 10.000001106414 + +- Total iterative time = 2.2s ++ Total iterative time = 0.7s + + + ++ Occupations of the irreducible representations ++ ---------------------------------------------- ++ ++ irrep alpha beta ++ -------- -------- -------- ++ a1 3.0 3.0 ++ a2 0.0 0.0 ++ b1 1.0 1.0 ++ b2 1.0 1.0 ++ ++ + DFT Final Alpha Molecular Orbital Analysis + ------------------------------------------ + + Vector 1 Occ=1.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.2D-13, -1.6D-15, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -3.5D-13, -1.0D-13, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 1 -0.992881 1 O s ++ 1 0.992881 1 O s + + Vector 2 Occ=1.000000D+00 E=-9.973144D-01 Symmetry=a1 +- MO Center= -3.3D-18, 3.9D-29, -8.7D-02, r^2= 5.0D-01 ++ MO Center= 2.4D-10, 2.0D-11, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 2 0.467607 1 O s 6 0.422149 1 O s +@@ -482,43 +513,43 @@ + 21 0.151985 3 H s + + Vector 3 Occ=1.000000D+00 E=-5.149842D-01 Symmetry=b1 +- MO Center= 2.7D-11, -3.2D-13, -1.1D-01, r^2= 7.9D-01 ++ MO Center= -2.3D-10, -3.4D-21, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 3 -0.513997 1 O px 7 -0.247229 1 O px +- 16 -0.244124 2 H s 21 0.244124 3 H s +- 17 -0.157240 2 H s 22 0.157240 3 H s ++ 3 0.513997 1 O px 7 0.247229 1 O px ++ 16 0.244124 2 H s 21 -0.244124 3 H s ++ 17 0.157240 2 H s 22 -0.157240 3 H s + + Vector 4 Occ=1.000000D+00 E=-3.710239D-01 Symmetry=a1 +- MO Center= -1.0D-12, -1.3D-12, 1.9D-01, r^2= 7.0D-01 ++ MO Center= 7.3D-11, 2.1D-11, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 -0.552652 1 O pz 6 -0.416361 1 O s +- 9 -0.364042 1 O pz 2 -0.174171 1 O s ++ 5 0.552652 1 O pz 6 0.416361 1 O s ++ 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=1.000000D+00 E=-2.919627D-01 Symmetry=b2 +- MO Center= -6.3D-13, 1.0D-12, 9.4D-02, r^2= 5.9D-01 ++ MO Center= -2.0D-13, -4.2D-11, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534608D-02 Symmetry=a1 +- MO Center= 3.2D-12, 3.0D-13, -6.2D-01, r^2= 2.4D+00 ++ MO Center= 9.0D-10, 5.0D-13, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.261194 1 O s 17 0.969306 2 H s +- 22 0.969306 3 H s 9 0.469997 1 O pz +- 5 0.275960 1 O pz ++ 6 1.261194 1 O s 17 -0.969306 2 H s ++ 22 -0.969306 3 H s 9 -0.469997 1 O pz ++ 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512260D-01 Symmetry=b1 +- MO Center= -4.7D-11, 3.4D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= -9.4D-10, 4.3D-13, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 1.286510 3 H s 17 -1.286510 2 H s +- 7 0.758485 1 O px 3 0.410623 1 O px ++ 17 1.286510 2 H s 22 -1.286510 3 H s ++ 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 3.7D-10, 1.2D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 8.1D-10, 1.7D-12, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 17 -0.795376 2 H s 22 0.795376 3 H s +@@ -527,108 +558,108 @@ + 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055100D-01 Symmetry=a1 +- MO Center= -3.3D-10, -1.3D-12, -1.7D-01, r^2= 1.5D+00 ++ MO Center= -7.8D-10, 4.2D-12, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 0.647808 1 O pz 22 -0.601436 3 H s +- 17 -0.601436 2 H s 21 0.566893 3 H s +- 16 0.566893 2 H s 9 -0.558050 1 O pz ++ 5 0.647808 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566893 2 H s ++ 21 0.566893 3 H s 9 -0.558050 1 O pz + 10 0.262150 1 O dxx 6 0.238810 1 O s +- 23 -0.164396 3 H px 18 0.164396 2 H px ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913501D-01 Symmetry=b2 +- MO Center= -2.9D-13, -3.0D-11, 1.1D-01, r^2= 1.1D+00 ++ MO Center= 3.1D-12, 3.5D-11, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935284D-01 Symmetry=a1 +- MO Center= -1.2D-11, 3.1D-11, 2.6D-01, r^2= 1.5D+00 ++ MO Center= 6.6D-12, -2.4D-11, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.350168 1 O s 2 -0.816729 1 O s + 9 0.807031 1 O pz 5 -0.529853 1 O pz +- 21 0.502430 3 H s 16 0.502430 2 H s +- 22 -0.381526 3 H s 17 -0.381526 2 H s ++ 16 0.502430 2 H s 21 0.502430 3 H s ++ 17 -0.381526 2 H s 22 -0.381526 3 H s + 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -1.5D-11, 5.7D-14, 1.2D-01, r^2= 1.6D+00 ++ MO Center= 1.9D-10, 6.3D-12, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152362 2 H s +- 21 -0.152362 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152362 2 H s ++ 21 0.152362 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175374D+00 Symmetry=a1 +- MO Center= 2.1D-11, 1.7D-12, -3.7D-01, r^2= 1.4D+00 ++ MO Center= -1.6D-10, -1.3D-11, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 3.527322 1 O s 2 -1.425462 1 O s + 9 -0.990461 1 O pz 17 -0.770199 2 H s + 22 -0.770199 3 H s 10 -0.625764 1 O dxx + 5 0.351436 1 O pz 15 -0.333460 1 O dzz +- 21 -0.326676 3 H s 16 -0.326676 2 H s ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529509D+00 Symmetry=a2 +- MO Center= -5.8D-12, 4.0D-14, -1.3D-01, r^2= 7.7D-01 ++ MO Center= 3.5D-11, -6.8D-12, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 11 -1.177966 1 O dxy 24 0.350698 3 H py +- 19 -0.350698 2 H py ++ 11 1.177966 1 O dxy 19 0.350698 2 H py ++ 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -2.4D-14, 1.6D-13, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -3.8D-11, -5.5D-12, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -0.901910 1 O s 15 0.788597 1 O dzz +- 9 0.519667 1 O pz 2 0.323895 1 O s +- 10 -0.255740 1 O dxx 25 -0.248205 3 H pz +- 20 -0.248205 2 H pz 13 -0.245550 1 O dyy +- 21 0.237555 3 H s 16 0.237555 2 H s ++ 6 0.901910 1 O s 15 -0.788597 1 O dzz ++ 9 -0.519667 1 O pz 2 -0.323895 1 O s ++ 10 0.255740 1 O dxx 20 0.248205 2 H pz ++ 25 0.248205 3 H pz 13 0.245550 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + DFT Final Beta Molecular Orbital Analysis + ----------------------------------------- + + Vector 1 Occ=1.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.4D-13, -2.1D-15, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -3.8D-13, -1.1D-13, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 1 -0.992881 1 O s ++ 1 0.992881 1 O s + + Vector 2 Occ=1.000000D+00 E=-9.973144D-01 Symmetry=a1 +- MO Center= -5.5D-11, -1.6D-12, -8.7D-02, r^2= 5.0D-01 ++ MO Center= 2.4D-10, 1.9D-11, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 2 -0.467607 1 O s 6 -0.422149 1 O s +- 1 0.210485 1 O s 21 -0.151985 3 H s +- 16 -0.151985 2 H s ++ 2 0.467607 1 O s 6 0.422149 1 O s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=1.000000D+00 E=-5.149842D-01 Symmetry=b1 +- MO Center= 8.3D-11, -2.6D-13, -1.1D-01, r^2= 7.9D-01 ++ MO Center= -2.3D-10, -3.6D-21, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 3 -0.513997 1 O px 7 -0.247229 1 O px +- 16 -0.244124 2 H s 21 0.244124 3 H s +- 17 -0.157240 2 H s 22 0.157240 3 H s ++ 3 0.513997 1 O px 7 0.247229 1 O px ++ 16 0.244124 2 H s 21 -0.244124 3 H s ++ 17 0.157240 2 H s 22 -0.157240 3 H s + + Vector 4 Occ=1.000000D+00 E=-3.710239D-01 Symmetry=a1 +- MO Center= -1.1D-11, -1.1D-23, 1.9D-01, r^2= 7.0D-01 ++ MO Center= 7.3D-11, 2.2D-11, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 5 0.552652 1 O pz 6 0.416361 1 O s + 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=1.000000D+00 E=-2.919627D-01 Symmetry=b2 +- MO Center= -9.0D-13, 1.3D-12, 9.4D-02, r^2= 5.9D-01 ++ MO Center= 2.6D-13, -4.1D-11, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534608D-02 Symmetry=a1 +- MO Center= -3.1D-12, -1.4D-13, -6.2D-01, r^2= 2.4D+00 ++ MO Center= -8.4D-17, 4.5D-12, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.261194 1 O s 17 -0.969306 2 H s +@@ -636,82 +667,82 @@ + 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512260D-01 Symmetry=b1 +- MO Center= -3.8D-11, 5.1D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= 4.2D-12, 4.7D-13, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 -1.286510 3 H s 17 1.286510 2 H s ++ 17 1.286510 2 H s 22 -1.286510 3 H s + 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 4.2D-10, 1.4D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 5.9D-10, 1.8D-12, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 17 0.795376 2 H s 22 -0.795376 3 H s +- 16 -0.770846 2 H s 21 0.770846 3 H s +- 12 0.460025 1 O dxz 3 0.202259 1 O px +- 7 0.166493 1 O px ++ 17 -0.795376 2 H s 22 0.795376 3 H s ++ 16 0.770846 2 H s 21 -0.770846 3 H s ++ 12 -0.460025 1 O dxz 3 -0.202259 1 O px ++ 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055100D-01 Symmetry=a1 +- MO Center= -3.8D-10, 2.1D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= -6.2D-10, 7.9D-12, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 0.647808 1 O pz 22 -0.601436 3 H s +- 17 -0.601436 2 H s 21 0.566893 3 H s +- 16 0.566893 2 H s 9 -0.558050 1 O pz ++ 5 0.647808 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566893 2 H s ++ 21 0.566893 3 H s 9 -0.558050 1 O pz + 10 0.262150 1 O dxx 6 0.238810 1 O s +- 23 -0.164396 3 H px 18 0.164396 2 H px ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913501D-01 Symmetry=b2 +- MO Center= -1.2D-13, -2.9D-11, 1.1D-01, r^2= 1.1D+00 ++ MO Center= 3.3D-12, 9.5D-12, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935284D-01 Symmetry=a1 +- MO Center= -1.8D-11, 2.8D-11, 2.6D-01, r^2= 1.5D+00 ++ MO Center= 6.1D-12, -7.8D-12, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.350168 1 O s 2 -0.816729 1 O s + 9 0.807031 1 O pz 5 -0.529853 1 O pz +- 21 0.502430 3 H s 16 0.502430 2 H s +- 22 -0.381526 3 H s 17 -0.381526 2 H s ++ 16 0.502430 2 H s 21 0.502430 3 H s ++ 17 -0.381526 2 H s 22 -0.381526 3 H s + 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -1.6D-11, 1.3D-13, 1.2D-01, r^2= 1.6D+00 ++ MO Center= -3.0D-11, -4.0D-22, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 1.795569 1 O px 22 0.963662 3 H s +- 17 -0.963662 2 H s 3 -0.864461 1 O px +- 12 -0.157552 1 O dxz 21 0.152362 3 H s +- 16 -0.152362 2 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152362 2 H s ++ 21 0.152362 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175374D+00 Symmetry=a1 +- MO Center= 2.5D-11, 1.9D-12, -3.7D-01, r^2= 1.4D+00 ++ MO Center= 1.0D-12, -1.2D-11, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -3.527322 1 O s 2 1.425462 1 O s +- 9 0.990461 1 O pz 17 0.770199 2 H s +- 22 0.770199 3 H s 10 0.625764 1 O dxx +- 5 -0.351436 1 O pz 15 0.333460 1 O dzz +- 21 0.326676 3 H s 16 0.326676 2 H s ++ 6 3.527322 1 O s 2 -1.425462 1 O s ++ 9 -0.990461 1 O pz 17 -0.770199 2 H s ++ 22 -0.770199 3 H s 10 -0.625764 1 O dxx ++ 5 0.351436 1 O pz 15 -0.333460 1 O dzz ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529509D+00 Symmetry=a2 +- MO Center= -2.2D-12, -8.8D-14, -1.3D-01, r^2= 7.7D-01 ++ MO Center= 1.8D-11, -1.1D-12, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 11 1.177966 1 O dxy 24 -0.350698 3 H py +- 19 0.350698 2 H py ++ 11 1.177966 1 O dxy 19 0.350698 2 H py ++ 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -6.6D-12, -6.8D-17, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -1.2D-11, -5.5D-12, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 0.901910 1 O s 15 -0.788597 1 O dzz + 9 -0.519667 1 O pz 2 -0.323895 1 O s +- 10 0.255740 1 O dxx 25 0.248205 3 H pz +- 20 0.248205 2 H pz 13 0.245550 1 O dyy +- 21 -0.237555 3 H s 16 -0.237555 2 H s ++ 10 0.255740 1 O dxx 20 0.248205 2 H pz ++ 25 0.248205 3 H pz 13 0.245550 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + alpha - beta orbital overlaps +@@ -753,21 +784,21 @@ + + L x y z total alpha beta nuclear + - - - - ----- ----- ---- ------- +- 0 0 0 0 0.000000 -5.000000 -5.000000 10.000000 ++ 0 0 0 0 -0.000000 -5.000000 -5.000000 10.000000 + +- 1 1 0 0 0.000000 0.000000 0.000000 0.000000 +- 1 0 1 0 0.000000 0.000000 0.000000 0.000000 ++ 1 1 0 0 -0.000000 -0.000000 -0.000000 0.000000 ++ 1 0 1 0 -0.000000 0.000000 -0.000000 0.000000 + 1 0 0 1 -0.803751 -0.401875 -0.401875 0.000000 + + 2 2 0 0 -3.194726 -3.656400 -3.656400 4.118075 +- 2 1 1 0 0.000000 0.000000 0.000000 0.000000 +- 2 1 0 1 0.000000 0.000000 0.000000 0.000000 ++ 2 1 1 0 -0.000000 -0.000000 -0.000000 0.000000 ++ 2 1 0 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 2 0 -5.306780 -2.653390 -2.653390 0.000000 +- 2 0 1 1 0.000000 0.000000 0.000000 0.000000 ++ 2 0 1 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 0 2 -4.442836 -3.236337 -3.236337 2.029839 + + +- Parallel integral file used 1 records with 0 large values ++ Parallel integral file used 3 records with 0 large values + + NWChem TDDFT Module + ------------------- +@@ -808,7 +839,7 @@ + Alpha electrons : 5 + Beta electrons : 5 + No. of roots : 10 +- Max subspacesize : 200 ++ Max subspacesize : 6000 + Max iterations : 100 + Target root : 1 + Target symmetry : none +@@ -818,27 +849,27 @@ + + Memory Information + ------------------ +- Available GA space size is 32766750 doubles +- Available MA space size is 32766274 doubles ++ Available GA space size is 78641950 doubles ++ Available MA space size is 26212596 doubles + Length of a trial vector is 100 100 + Algorithm : Incore multiple tensor contraction +- Estimated peak GA usage is 325750 doubles ++ Estimated peak GA usage is 3805750 doubles + Estimated peak MA usage is 51000 doubles + +- 10 smallest eigenvalue differences ++ 10 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 2 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 5 6 b2 0.06535 -0.29196 9.72 +- 3 2 4 6 a1 0.06535 -0.37102 11.87 +- 4 1 4 6 a1 0.06535 -0.37102 11.87 +- 5 1 5 7 a2 0.15123 -0.29196 12.06 +- 6 2 5 7 a2 0.15123 -0.29196 12.06 +- 7 1 4 7 b1 0.15123 -0.37102 14.21 +- 8 2 4 7 b1 0.15123 -0.37102 14.21 +- 9 2 3 6 b1 0.06535 -0.51498 15.79 +- 10 1 3 6 b1 0.06535 -0.51498 15.79 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 2 5 6 b2 -0.292 0.065 9.723 ++ 3 1 4 6 a1 -0.371 0.065 11.874 ++ 4 2 4 6 a1 -0.371 0.065 11.874 ++ 5 1 5 7 a2 -0.292 0.151 12.060 ++ 6 2 5 7 a2 -0.292 0.151 12.060 ++ 7 2 4 7 b1 -0.371 0.151 14.211 ++ 8 1 4 7 b1 -0.371 0.151 14.211 ++ 9 1 3 6 b1 -0.515 0.065 15.792 ++ 10 2 3 6 b1 -0.515 0.065 15.792 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -846,186 +877,146 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 10 0 0.15E+00 0.10+100 4.5 +- 2 20 0 0.21E-01 0.18E-01 5.6 +- 3 30 2 0.23E-02 0.43E-03 5.6 +- 4 38 9 0.21E-03 0.24E-05 4.6 +- 5 39 10 0.84E-04 0.31E-07 1.1 ++ 1 10 0 0.15E+00 0.10+100 2.6 ++ 2 20 0 0.21E-01 0.18E-01 3.0 ++ 3 30 2 0.23E-02 0.43E-03 3.2 ++ 4 38 9 0.21E-03 0.24E-05 2.6 ++ 5 39 10 0.84E-04 0.31E-07 0.5 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. +- = 0.0000 ++ Ground state a1 -76.419737926905 a.u. ++ = -0.0000 + +- ------------------------------------------------------- +- Root 1 b2 0.267147394 a.u. ( 7.2694536 eV) ++ ---------------------------------------------------------------------------- ++ Root 1 b2 0.267147394 a.u. 7.2695 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ 0.00000 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 6 alpha a1 0.70601 +- Occ. 5 beta b2 --- Virt. 6 beta a1 0.70601 +- ------------------------------------------------------- +- Root 2 b2 0.295377101 a.u. ( 8.0376233 eV) ++ Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70601 ++ Occ. 5 beta b2 --- Virt. 6 beta a1 0.70601 ++ ---------------------------------------------------------------------------- ++ Root 2 b2 0.295377101 a.u. 8.0376 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.26343 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ -0.07628 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.95105 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 1.63779 YYZ 0.00000 YZZ 0.73752 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.01366 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.26343 Z 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ -0.00000 ++ Transition Moments YY -0.00000 YZ 0.07628 ZZ -0.00000 ++ Dipole Oscillator Strength 0.01366 + +- Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70676 +- Occ. 5 beta b2 --- Virt. 6 beta a1 0.70676 +- ------------------------------------------------------- +- Root 3 a1 0.344563431 a.u. ( 9.3760520 eV) ++ Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70676 ++ Occ. 5 beta b2 --- Virt. 6 beta a1 -0.70676 ++ ---------------------------------------------------------------------------- ++ Root 3 a1 0.344563430 a.u. 9.3761 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 4 alpha a1 --- Virt. 6 alpha a1 0.70387 +- Occ. 4 beta a1 --- Virt. 6 beta a1 -0.70387 +- ------------------------------------------------------- +- Root 4 a2 0.349308066 a.u. ( 9.5051602 eV) ++ Occ. 4 alpha a1 --- Virt. 6 alpha a1 0.70387 ++ Occ. 4 beta a1 --- Virt. 6 beta a1 -0.70387 ++ ---------------------------------------------------------------------------- ++ Root 4 a2 0.349308066 a.u. 9.5052 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y 0.00000 Z -0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ -0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70567 +- Occ. 5 beta b2 --- Virt. 7 beta b1 0.70567 +- ------------------------------------------------------- +- Root 5 a2 0.369342125 a.u. ( 10.0503149 eV) ++ Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70567 ++ Occ. 5 beta b2 --- Virt. 7 beta b1 -0.70567 ++ ---------------------------------------------------------------------------- ++ Root 5 a2 0.369342125 a.u. 10.0503 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z -0.00000 + Transition Moments XX 0.00000 XY -0.24182 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.34809 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 7 alpha b1 -0.70660 +- Occ. 5 beta b2 --- Virt. 7 beta b1 0.70660 +- ------------------------------------------------------- +- Root 6 a1 0.390030669 a.u. ( 10.6132790 eV) ++ Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70660 ++ Occ. 5 beta b2 --- Virt. 7 beta b1 0.70660 ++ ---------------------------------------------------------------------------- ++ Root 6 a1 0.390030668 a.u. 10.6133 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z -0.63051 +- Transition Moments XX 0.66916 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.11255 YZ 0.00000 ZZ 0.47961 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ -1.78262 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ -0.93745 YZZ 0.00000 +- Transition Moments ZZZ -3.69655 +- Dipole Oscillator Strength 0.10337 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z 0.63051 ++ Transition Moments XX -0.66916 XY 0.00000 XZ 0.00000 ++ Transition Moments YY -0.11255 YZ -0.00000 ZZ -0.47961 ++ Dipole Oscillator Strength 0.10337 + +- Occ. 3 alpha b1 --- Virt. 7 alpha b1 0.10161 +- Occ. 4 alpha a1 --- Virt. 6 alpha a1 -0.69801 +- Occ. 3 beta b1 --- Virt. 7 beta b1 -0.10161 +- Occ. 4 beta a1 --- Virt. 6 beta a1 -0.69801 +- ------------------------------------------------------- +- Root 7 b1 0.418901621 a.u. ( 11.3988979 eV) ++ Occ. 3 alpha b1 --- Virt. 7 alpha b1 -0.10161 ++ Occ. 4 alpha a1 --- Virt. 6 alpha a1 0.69801 ++ Occ. 3 beta b1 --- Virt. 7 beta b1 -0.10161 ++ Occ. 4 beta a1 --- Virt. 6 beta a1 0.69801 ++ ---------------------------------------------------------------------------- ++ Root 7 b1 0.418901621 a.u. 11.3989 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y 0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ -0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.17039 +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.68359 +- Occ. 3 beta b1 --- Virt. 6 beta a1 0.17039 +- Occ. 4 beta a1 --- Virt. 7 beta b1 -0.68359 +- ------------------------------------------------------- +- Root 8 b1 0.469576737 a.u. ( 12.7778386 eV) ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.17039 ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.68359 ++ Occ. 3 beta b1 --- Virt. 6 beta a1 0.17039 ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.68359 ++ ---------------------------------------------------------------------------- ++ Root 8 b1 0.469576737 a.u. 12.7778 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X -0.49420 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.57166 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX -2.43730 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY -0.51103 XYZ 0.00000 XZZ -1.56449 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.07646 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.49420 Y 0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ -0.57166 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.07646 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.15206 +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.68897 +- Occ. 3 beta b1 --- Virt. 6 beta a1 -0.15206 +- Occ. 4 beta a1 --- Virt. 7 beta b1 -0.68897 +- ------------------------------------------------------- +- Root 9 b1 0.482245463 a.u. ( 13.1225723 eV) ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.15206 ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.68897 ++ Occ. 3 beta b1 --- Virt. 6 beta a1 -0.15206 ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.68897 ++ ---------------------------------------------------------------------------- ++ Root 9 b1 0.482245463 a.u. 13.1226 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ 0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.68374 +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.17215 +- Occ. 3 beta b1 --- Virt. 6 beta a1 -0.68374 +- Occ. 4 beta a1 --- Virt. 7 beta b1 -0.17215 +- ------------------------------------------------------- +- Root 10 b1 0.535612370 a.u. ( 14.5747604 eV) ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.68374 ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.17215 ++ Occ. 3 beta b1 --- Virt. 6 beta a1 -0.68374 ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.17215 ++ ---------------------------------------------------------------------------- ++ Root 10 b1 0.535612370 a.u. 14.5748 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 1.12071 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ -1.01277 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 7.65907 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 1.51267 XYZ 0.00000 XZZ 2.70320 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.44848 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 1.12071 Y -0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ -1.01277 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.44848 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.68961 +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.15030 +- Occ. 3 beta b1 --- Virt. 6 beta a1 -0.68961 +- Occ. 4 beta a1 --- Virt. 7 beta b1 0.15030 ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.68961 ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.15030 ++ Occ. 3 beta b1 --- Virt. 6 beta a1 0.68961 ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.15030 + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926688 +- Excitation energy = 0.267147394126 +- Excited state energy = -76.152590532562 ++ Ground state energy = -76.419737926905 ++ Excitation energy = 0.267147393682 ++ Excited state energy = -76.152590533223 + + +- Task times cpu: 23.8s wall: 23.9s ++ Task times cpu: 12.8s wall: 12.9s + + + NWChem Input Module +@@ -1040,6 +1031,24 @@ + TDDFT H2O B3LYP/6-31G** QA TEST + + ++ ++ ++ Summary of "ao basis" -> "ao basis" (cartesian) ++ ------------------------------------------------------------------------------ ++ Tag Description Shells Functions and Types ++ ---------------- ------------------------------ ------ --------------------- ++ O 6-31G** 6 15 3s2p1d ++ H 6-31G** 3 5 2s1p ++ ++ ++ Symmetry analysis of basis ++ -------------------------- ++ ++ a1 12 ++ a2 2 ++ b1 7 ++ b2 4 ++ + Caching 1-el integrals + + General Information +@@ -1138,102 +1147,116 @@ + 6 a1 7 b1 8 b1 9 a1 10 b2 + 11 a1 12 b1 13 a1 14 a2 15 a1 + +- Time after variat. SCF: 23.8 +- Time prior to 1st pass: 23.8 ++ Time after variat. SCF: 12.9 ++ Time prior to 1st pass: 12.9 + + #quartets = 3.081D+03 #integrals = 2.937D+04 #direct = 0.0% #cached =100.0% + + + Integral file = ./tddft_h2o_dat.aoints.0 + Record size in doubles = 65536 No. of integs per rec = 43688 +- Max. records in memory = 2 Max. records in file = 58806 ++ Max. records in memory = 2 Max. records in file = 5897 + No. of bits per label = 8 No. of bits per value = 64 + + ++File balance: exchanges= 0 moved= 0 time= 0.0 ++ ++ + Grid_pts file = ./tddft_h2o_dat.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 +- Max. records in memory = 23 Max. recs in file = 313621 ++ Max. records in memory = 9 Max. recs in file = 31451 + + + Memory utilization after 1st SCF pass: +- Heap Space remaining (MW): 15.97 15968603 +- Stack Space remaining (MW): 16.38 16383670 ++ Heap Space remaining (MW): 12.86 12863756 ++ Stack Space remaining (MW): 13.11 13106852 + + convergence iter energy DeltaE RMS-Dens Diis-err time + ---------------- ----- ----------------- --------- --------- --------- ------ +- d= 0,ls=0.0,diis 1 -76.4197379268 -8.55D+01 5.32D-08 1.92D-12 24.3 ++ d= 0,ls=0.0,diis 1 -76.4197379270 -8.55D+01 5.32D-08 1.92D-12 13.0 + 5.32D-08 1.92D-12 +- d= 0,ls=0.0,diis 2 -76.4197379268 3.13D-13 3.36D-08 2.85D-12 24.7 +- 3.36D-08 2.85D-12 ++ d= 0,ls=0.0,diis 2 -76.4197379270 2.56D-13 3.37D-08 2.85D-12 13.1 ++ 3.37D-08 2.85D-12 + + +- Total DFT energy = -76.419737926843 +- One electron energy = -123.023468242271 +- Coulomb energy = 46.835818734066 +- Exchange-Corr. energy = -9.351529801189 ++ Total DFT energy = -76.419737927049 ++ One electron energy = -123.023468234481 ++ Coulomb energy = 46.835818725282 ++ Exchange-Corr. energy = -9.351529800402 + Nuclear repulsion energy = 9.119441382552 + +- Numeric. integr. density = 10.000001105935 ++ Numeric. integr. density = 10.000001106399 + +- Total iterative time = 0.8s ++ Total iterative time = 0.3s + + + ++ Occupations of the irreducible representations ++ ---------------------------------------------- ++ ++ irrep alpha beta ++ -------- -------- -------- ++ a1 3.0 3.0 ++ a2 0.0 0.0 ++ b1 1.0 1.0 ++ b2 1.0 1.0 ++ ++ + DFT Final Alpha Molecular Orbital Analysis + ------------------------------------------ + + Vector 1 Occ=1.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.2D-13, 9.5D-17, 1.2D-01, r^2= 1.5D-02 ++ MO Center= 0.0D+00, -1.4D-31, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 1 0.992881 1 O s + + Vector 2 Occ=1.000000D+00 E=-9.973141D-01 Symmetry=a1 +- MO Center= -5.2D-11, -7.6D-13, -8.7D-02, r^2= 5.0D-01 ++ MO Center= 2.2D-10, 2.1D-11, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 2 -0.467607 1 O s 6 -0.422148 1 O s +- 1 0.210485 1 O s 21 -0.151985 3 H s +- 16 -0.151985 2 H s ++ 2 0.467607 1 O s 6 0.422148 1 O s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=1.000000D+00 E=-5.149839D-01 Symmetry=b1 +- MO Center= 7.8D-11, -1.4D-13, -1.1D-01, r^2= 7.9D-01 ++ MO Center= -3.7D-10, 2.1D-12, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 3 -0.513996 1 O px 7 -0.247229 1 O px +- 16 -0.244124 2 H s 21 0.244124 3 H s +- 17 -0.157240 2 H s 22 0.157240 3 H s ++ 3 0.513996 1 O px 7 0.247229 1 O px ++ 16 0.244124 2 H s 21 -0.244124 3 H s ++ 17 0.157240 2 H s 22 -0.157240 3 H s + + Vector 4 Occ=1.000000D+00 E=-3.710237D-01 Symmetry=a1 +- MO Center= -1.9D-12, -2.2D-13, 1.9D-01, r^2= 7.0D-01 ++ MO Center= 1.3D-10, 2.3D-11, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 5 0.552652 1 O pz 6 0.416361 1 O s + 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=1.000000D+00 E=-2.919624D-01 Symmetry=b2 +- MO Center= -3.0D-13, 1.1D-12, 9.4D-02, r^2= 5.9D-01 ++ MO Center= -2.5D-12, -4.4D-11, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534604D-02 Symmetry=a1 +- MO Center= -9.1D-12, 1.3D-13, -6.2D-01, r^2= 2.4D+00 ++ MO Center= 6.7D-10, 4.0D-13, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 1.261195 1 O s 22 -0.969306 3 H s +- 17 -0.969306 2 H s 9 -0.469996 1 O pz ++ 6 1.261195 1 O s 17 -0.969306 2 H s ++ 22 -0.969306 3 H s 9 -0.469996 1 O pz + 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512261D-01 Symmetry=b1 +- MO Center= -3.5D-11, 7.2D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= -6.6D-10, -8.8D-22, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 1.286510 3 H s 17 -1.286510 2 H s +- 7 0.758485 1 O px 3 0.410623 1 O px ++ 17 1.286510 2 H s 22 -1.286510 3 H s ++ 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 3.7D-10, 1.7D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 2.8D-11, -3.8D-22, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 17 -0.795376 2 H s 22 0.795376 3 H s +@@ -1242,79 +1265,79 @@ + 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055101D-01 Symmetry=a1 +- MO Center= -3.3D-10, -3.7D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= 4.8D-12, -9.4D-13, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 0.647807 1 O pz 22 -0.601436 3 H s +- 17 -0.601436 2 H s 21 0.566894 3 H s +- 16 0.566894 2 H s 9 -0.558049 1 O pz ++ 5 0.647807 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566894 2 H s ++ 21 0.566894 3 H s 9 -0.558049 1 O pz + 10 0.262150 1 O dxx 6 0.238812 1 O s +- 23 -0.164396 3 H px 18 0.164396 2 H px ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913503D-01 Symmetry=b2 +- MO Center= -4.3D-26, 7.3D-13, 1.1D-01, r^2= 1.1D+00 ++ MO Center= -2.2D-25, 1.9D-12, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935286D-01 Symmetry=a1 +- MO Center= -1.4D-11, 3.4D-14, 2.6D-01, r^2= 1.5D+00 ++ MO Center= -5.4D-11, 5.7D-13, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.350166 1 O s 2 -0.816728 1 O s + 9 0.807033 1 O pz 5 -0.529854 1 O pz +- 21 0.502429 3 H s 16 0.502429 2 H s +- 22 -0.381525 3 H s 17 -0.381525 2 H s ++ 16 0.502429 2 H s 21 0.502429 3 H s ++ 17 -0.381525 2 H s 22 -0.381525 3 H s + 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -1.3D-11, 1.2D-13, 1.2D-01, r^2= 1.6D+00 ++ MO Center= 2.3D-10, 6.6D-12, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152363 2 H s +- 21 -0.152363 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152363 2 H s ++ 21 0.152363 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175374D+00 Symmetry=a1 +- MO Center= 1.5D-11, 3.9D-14, -3.7D-01, r^2= 1.4D+00 ++ MO Center= -1.2D-10, -2.3D-12, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 3.527323 1 O s 2 -1.425462 1 O s + 9 -0.990461 1 O pz 17 -0.770199 2 H s + 22 -0.770199 3 H s 10 -0.625764 1 O dxx + 5 0.351436 1 O pz 15 -0.333460 1 O dzz +- 21 -0.326676 3 H s 16 -0.326676 2 H s ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529509D+00 Symmetry=a2 +- MO Center= -5.6D-12, -1.6D-13, -1.3D-01, r^2= 7.7D-01 ++ MO Center= 2.2D-12, -8.2D-12, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 11 1.177966 1 O dxy 24 -0.350698 3 H py +- 19 0.350698 2 H py ++ 11 1.177966 1 O dxy 19 0.350698 2 H py ++ 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -7.2D-12, -1.2D-13, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -4.2D-11, -3.7D-12, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -0.901910 1 O s 15 0.788597 1 O dzz +- 9 0.519667 1 O pz 2 0.323896 1 O s +- 10 -0.255739 1 O dxx 25 -0.248206 3 H pz +- 20 -0.248206 2 H pz 13 -0.245549 1 O dyy +- 21 0.237555 3 H s 16 0.237555 2 H s ++ 6 0.901910 1 O s 15 -0.788597 1 O dzz ++ 9 -0.519667 1 O pz 2 -0.323896 1 O s ++ 10 0.255739 1 O dxx 20 0.248206 2 H pz ++ 25 0.248206 3 H pz 13 0.245549 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + DFT Final Beta Molecular Orbital Analysis + ----------------------------------------- + + Vector 1 Occ=1.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.2D-13, 1.7D-16, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -3.0D-13, -1.0D-13, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 1 -0.992881 1 O s ++ 1 0.992881 1 O s + + Vector 2 Occ=1.000000D+00 E=-9.973141D-01 Symmetry=a1 +- MO Center= 7.8D-18, 1.4D-29, -8.7D-02, r^2= 5.0D-01 ++ MO Center= 2.3D-10, 2.1D-11, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 2 0.467607 1 O s 6 0.422148 1 O s +@@ -1322,111 +1345,111 @@ + 21 0.151985 3 H s + + Vector 3 Occ=1.000000D+00 E=-5.149839D-01 Symmetry=b1 +- MO Center= 2.9D-11, -1.4D-13, -1.1D-01, r^2= 7.9D-01 ++ MO Center= -3.7D-10, 2.1D-12, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 3 -0.513996 1 O px 7 -0.247229 1 O px +- 16 -0.244124 2 H s 21 0.244124 3 H s +- 17 -0.157240 2 H s 22 0.157240 3 H s ++ 3 0.513996 1 O px 7 0.247229 1 O px ++ 16 0.244124 2 H s 21 -0.244124 3 H s ++ 17 0.157240 2 H s 22 -0.157240 3 H s + + Vector 4 Occ=1.000000D+00 E=-3.710237D-01 Symmetry=a1 +- MO Center= -3.9D-13, -1.0D-13, 1.9D-01, r^2= 7.0D-01 ++ MO Center= 6.6D-11, -1.4D-21, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 5 0.552652 1 O pz 6 0.416361 1 O s + 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=1.000000D+00 E=-2.919624D-01 Symmetry=b2 +- MO Center= -1.8D-13, 4.9D-13, 9.4D-02, r^2= 5.9D-01 ++ MO Center= -2.2D-12, -2.1D-11, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 4 -0.643967 1 O py 8 -0.494567 1 O py ++ 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534604D-02 Symmetry=a1 +- MO Center= -1.8D-11, -1.5D-13, -6.2D-01, r^2= 2.4D+00 ++ MO Center= 6.8D-10, 2.7D-13, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 1.261195 1 O s 22 -0.969306 3 H s +- 17 -0.969306 2 H s 9 -0.469996 1 O pz ++ 6 1.261195 1 O s 17 -0.969306 2 H s ++ 22 -0.969306 3 H s 9 -0.469996 1 O pz + 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512261D-01 Symmetry=b1 +- MO Center= -4.5D-12, 7.5D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= -6.4D-10, -8.9D-22, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 1.286510 3 H s 17 -1.286510 2 H s +- 7 0.758485 1 O px 3 0.410623 1 O px ++ 17 1.286510 2 H s 22 -1.286510 3 H s ++ 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 3.5D-10, 1.8D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 2.7D-10, 1.9D-12, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 17 0.795376 2 H s 22 -0.795376 3 H s +- 16 -0.770846 2 H s 21 0.770846 3 H s +- 12 0.460025 1 O dxz 3 0.202259 1 O px +- 7 0.166493 1 O px ++ 17 -0.795376 2 H s 22 0.795376 3 H s ++ 16 0.770846 2 H s 21 -0.770846 3 H s ++ 12 -0.460025 1 O dxz 3 -0.202259 1 O px ++ 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055101D-01 Symmetry=a1 +- MO Center= -3.4D-10, -1.4D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= -2.5D-10, -9.2D-13, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 0.647807 1 O pz 22 -0.601436 3 H s +- 17 -0.601436 2 H s 21 0.566894 3 H s +- 16 0.566894 2 H s 9 -0.558049 1 O pz ++ 5 0.647807 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566894 2 H s ++ 21 0.566894 3 H s 9 -0.558049 1 O pz + 10 0.262150 1 O dxx 6 0.238812 1 O s +- 23 -0.164396 3 H px 18 0.164396 2 H px ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913503D-01 Symmetry=b2 +- MO Center= -5.8D-13, 1.4D-11, 1.1D-01, r^2= 1.1D+00 ++ MO Center= -2.1D-24, 1.7D-12, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935286D-01 Symmetry=a1 +- MO Center= -1.2D-11, -1.3D-11, 2.6D-01, r^2= 1.5D+00 ++ MO Center= -2.5D-11, 5.9D-13, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.350166 1 O s 2 -0.816728 1 O s + 9 0.807033 1 O pz 5 -0.529854 1 O pz +- 21 0.502429 3 H s 16 0.502429 2 H s +- 22 -0.381525 3 H s 17 -0.381525 2 H s ++ 16 0.502429 2 H s 21 0.502429 3 H s ++ 17 -0.381525 2 H s 22 -0.381525 3 H s + 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -1.5D-11, 1.3D-13, 1.2D-01, r^2= 1.6D+00 ++ MO Center= 2.3D-10, 6.6D-12, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152363 2 H s +- 21 -0.152363 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152363 2 H s ++ 21 0.152363 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175374D+00 Symmetry=a1 +- MO Center= 1.5D-11, 1.4D-13, -3.7D-01, r^2= 1.4D+00 ++ MO Center= -1.2D-10, -3.6D-12, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 3.527323 1 O s 2 -1.425462 1 O s + 9 -0.990461 1 O pz 17 -0.770199 2 H s + 22 -0.770199 3 H s 10 -0.625764 1 O dxx + 5 0.351436 1 O pz 15 -0.333460 1 O dzz +- 21 -0.326676 3 H s 16 -0.326676 2 H s ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529509D+00 Symmetry=a2 +- MO Center= -5.0D-12, -1.7D-13, -1.3D-01, r^2= 7.7D-01 ++ MO Center= -5.3D-12, -9.4D-12, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 11 -1.177966 1 O dxy 24 0.350698 3 H py +- 19 -0.350698 2 H py ++ 11 1.177966 1 O dxy 19 0.350698 2 H py ++ 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -7.0D-12, -9.7D-14, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -4.8D-11, -3.7D-12, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -0.901910 1 O s 15 0.788597 1 O dzz +- 9 0.519667 1 O pz 2 0.323896 1 O s +- 10 -0.255739 1 O dxx 25 -0.248206 3 H pz +- 20 -0.248206 2 H pz 13 -0.245549 1 O dyy +- 21 0.237555 3 H s 16 0.237555 2 H s ++ 6 0.901910 1 O s 15 -0.788597 1 O dzz ++ 9 -0.519667 1 O pz 2 -0.323896 1 O s ++ 10 0.255739 1 O dxx 20 0.248206 2 H pz ++ 25 0.248206 3 H pz 13 0.245549 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + alpha - beta orbital overlaps +@@ -1468,21 +1491,21 @@ + + L x y z total alpha beta nuclear + - - - - ----- ----- ---- ------- +- 0 0 0 0 0.000000 -5.000000 -5.000000 10.000000 ++ 0 0 0 0 -0.000000 -5.000000 -5.000000 10.000000 + + 1 1 0 0 0.000000 0.000000 0.000000 0.000000 +- 1 0 1 0 0.000000 0.000000 0.000000 0.000000 ++ 1 0 1 0 -0.000000 -0.000000 -0.000000 0.000000 + 1 0 0 1 -0.803750 -0.401875 -0.401875 0.000000 + + 2 2 0 0 -3.194728 -3.656402 -3.656402 4.118075 +- 2 1 1 0 0.000000 0.000000 0.000000 0.000000 +- 2 1 0 1 0.000000 0.000000 0.000000 0.000000 ++ 2 1 1 0 -0.000000 -0.000000 -0.000000 0.000000 ++ 2 1 0 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 2 0 -5.306781 -2.653391 -2.653391 0.000000 +- 2 0 1 1 0.000000 0.000000 0.000000 0.000000 ++ 2 0 1 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 0 2 -4.442837 -3.236338 -3.236338 2.029839 + + +- Parallel integral file used 1 records with 0 large values ++ Parallel integral file used 3 records with 0 large values + + NWChem TDDFT Module + ------------------- +@@ -1523,7 +1546,7 @@ + Alpha electrons : 5 + Beta electrons : 5 + No. of roots : 10 +- Max subspacesize : 200 ++ Max subspacesize : 6000 + Max iterations : 100 + Target root : 1 + Target symmetry : none +@@ -1533,27 +1556,27 @@ + + Memory Information + ------------------ +- Available GA space size is 32766750 doubles +- Available MA space size is 32766274 doubles ++ Available GA space size is 78641950 doubles ++ Available MA space size is 26212596 doubles + Length of a trial vector is 100 100 + Estimated peak GA usage is 206150 doubles + Estimated peak MA usage is 1301000 doubles +- Estimated peak DRA usage is 120000 doubles ++ Estimated peak DRA usage is 3600000 doubles + +- 10 smallest eigenvalue differences ++ 10 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 2 5 6 b2 0.06535 -0.29196 9.72 +- 3 1 4 6 a1 0.06535 -0.37102 11.87 +- 4 2 4 6 a1 0.06535 -0.37102 11.87 +- 5 1 5 7 a2 0.15123 -0.29196 12.06 +- 6 2 5 7 a2 0.15123 -0.29196 12.06 +- 7 1 4 7 b1 0.15123 -0.37102 14.21 +- 8 2 4 7 b1 0.15123 -0.37102 14.21 +- 9 1 3 6 b1 0.06535 -0.51498 15.79 +- 10 2 3 6 b1 0.06535 -0.51498 15.79 ++ 1 2 5 6 b2 -0.292 0.065 9.723 ++ 2 1 5 6 b2 -0.292 0.065 9.723 ++ 3 2 4 6 a1 -0.371 0.065 11.874 ++ 4 1 4 6 a1 -0.371 0.065 11.874 ++ 5 2 5 7 a2 -0.292 0.151 12.060 ++ 6 1 5 7 a2 -0.292 0.151 12.060 ++ 7 1 4 7 b1 -0.371 0.151 14.211 ++ 8 2 4 7 b1 -0.371 0.151 14.211 ++ 9 1 3 6 b1 -0.515 0.065 15.792 ++ 10 2 3 6 b1 -0.515 0.065 15.792 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -1561,186 +1584,146 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 10 0 0.15E+00 0.10+100 4.2 +- 2 20 0 0.21E-01 0.18E-01 5.2 +- 3 30 2 0.23E-02 0.43E-03 5.2 +- 4 38 9 0.21E-03 0.24E-05 4.3 +- 5 39 10 0.84E-04 0.31E-07 1.1 ++ 1 10 0 0.15E+00 0.10+100 3.0 ++ 2 20 0 0.21E-01 0.18E-01 4.1 ++ 3 30 2 0.23E-02 0.43E-03 3.9 ++ 4 38 9 0.21E-03 0.24E-05 3.4 ++ 5 39 10 0.84E-04 0.31E-07 0.7 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. +- = 0.0000 ++ Ground state a1 -76.419737927049 a.u. ++ = -0.0000 + +- ------------------------------------------------------- +- Root 1 b2 0.267147051 a.u. ( 7.2694442 eV) ++ ---------------------------------------------------------------------------- ++ Root 1 b2 0.267147051 a.u. 7.2694 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 6 alpha a1 0.70601 +- Occ. 5 beta b2 --- Virt. 6 beta a1 0.70601 +- ------------------------------------------------------- +- Root 2 b2 0.295376757 a.u. ( 8.0376139 eV) ++ Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70601 ++ Occ. 5 beta b2 --- Virt. 6 beta a1 0.70601 ++ ---------------------------------------------------------------------------- ++ Root 2 b2 0.295376757 a.u. 8.0376 eV + = 0.0000 +- ------------------------------------------------------- ++ ---------------------------------------------------------------------------- + Transition Moments X 0.00000 Y -0.26343 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ -0.00000 + Transition Moments YY 0.00000 YZ 0.07628 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY -0.95105 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY -1.63779 YYZ 0.00000 YZZ -0.73752 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.01366 ++ Dipole Oscillator Strength 0.01366 + +- Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70676 +- Occ. 5 beta b2 --- Virt. 6 beta a1 0.70676 +- ------------------------------------------------------- +- Root 3 a1 0.344563215 a.u. ( 9.3760461 eV) ++ Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70676 ++ Occ. 5 beta b2 --- Virt. 6 beta a1 -0.70676 ++ ---------------------------------------------------------------------------- ++ Root 3 a1 0.344563215 a.u. 9.3760 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ -0.00000 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 4 alpha a1 --- Virt. 6 alpha a1 0.70387 +- Occ. 4 beta a1 --- Virt. 6 beta a1 -0.70387 +- ------------------------------------------------------- +- Root 4 a2 0.349307774 a.u. ( 9.5051522 eV) ++ Occ. 4 alpha a1 --- Virt. 6 alpha a1 -0.70387 ++ Occ. 4 beta a1 --- Virt. 6 beta a1 0.70387 ++ ---------------------------------------------------------------------------- ++ Root 4 a2 0.349307774 a.u. 9.5052 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.00000 + Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70567 +- Occ. 5 beta b2 --- Virt. 7 beta b1 0.70567 +- ------------------------------------------------------- +- Root 5 a2 0.369341849 a.u. ( 10.0503073 eV) ++ Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70567 ++ Occ. 5 beta b2 --- Virt. 7 beta b1 -0.70567 ++ ---------------------------------------------------------------------------- ++ Root 5 a2 0.369341849 a.u. 10.0503 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY -0.24182 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.34809 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y 0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.24182 XZ -0.00000 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 7 alpha b1 -0.70660 +- Occ. 5 beta b2 --- Virt. 7 beta b1 0.70660 +- ------------------------------------------------------- +- Root 6 a1 0.390030374 a.u. ( 10.6132710 eV) ++ Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70660 ++ Occ. 5 beta b2 --- Virt. 7 beta b1 0.70660 ++ ---------------------------------------------------------------------------- ++ Root 6 a1 0.390030375 a.u. 10.6133 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z -0.63051 +- Transition Moments XX 0.66916 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.11255 YZ 0.00000 ZZ 0.47961 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ -1.78262 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ -0.93744 YZZ 0.00000 +- Transition Moments ZZZ -3.69654 +- Dipole Oscillator Strength 0.10337 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z -0.63051 ++ Transition Moments XX 0.66916 XY -0.00000 XZ -0.00000 ++ Transition Moments YY 0.11255 YZ -0.00000 ZZ 0.47961 ++ Dipole Oscillator Strength 0.10337 + +- Occ. 3 alpha b1 --- Virt. 7 alpha b1 0.10161 +- Occ. 4 alpha a1 --- Virt. 6 alpha a1 -0.69801 +- Occ. 3 beta b1 --- Virt. 7 beta b1 0.10161 +- Occ. 4 beta a1 --- Virt. 6 beta a1 -0.69801 +- ------------------------------------------------------- +- Root 7 b1 0.418901449 a.u. ( 11.3988933 eV) ++ Occ. 3 alpha b1 --- Virt. 7 alpha b1 0.10161 ++ Occ. 4 alpha a1 --- Virt. 6 alpha a1 -0.69801 ++ Occ. 3 beta b1 --- Virt. 7 beta b1 0.10161 ++ Occ. 4 beta a1 --- Virt. 6 beta a1 -0.69801 ++ ---------------------------------------------------------------------------- ++ Root 7 b1 0.418901449 a.u. 11.3989 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY 0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.17039 +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.68359 +- Occ. 3 beta b1 --- Virt. 6 beta a1 -0.17039 +- Occ. 4 beta a1 --- Virt. 7 beta b1 -0.68359 +- ------------------------------------------------------- +- Root 8 b1 0.469576539 a.u. ( 12.7778332 eV) +- = 0.0000 +- ------------------------------------------------------- ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.17039 ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.68359 ++ Occ. 3 beta b1 --- Virt. 6 beta a1 0.17039 ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.68359 ++ ---------------------------------------------------------------------------- ++ Root 8 b1 0.469576539 a.u. 12.7778 eV ++ = -0.0000 ++ ---------------------------------------------------------------------------- + Transition Moments X 0.49420 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ -0.57166 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 2.43729 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.51103 XYZ 0.00000 XZZ 1.56448 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.07646 ++ Transition Moments XX 0.00000 XY -0.00000 XZ -0.57166 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.07646 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.15206 +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.68897 +- Occ. 3 beta b1 --- Virt. 6 beta a1 0.15206 +- Occ. 4 beta a1 --- Virt. 7 beta b1 -0.68897 +- ------------------------------------------------------- +- Root 9 b1 0.482245156 a.u. ( 13.1225640 eV) ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.15206 ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.68897 ++ Occ. 3 beta b1 --- Virt. 6 beta a1 -0.15206 ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.68897 ++ ---------------------------------------------------------------------------- ++ Root 9 b1 0.482245156 a.u. 13.1226 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ 0.00000 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.68374 +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.17215 +- Occ. 3 beta b1 --- Virt. 6 beta a1 -0.68374 +- Occ. 4 beta a1 --- Virt. 7 beta b1 0.17215 +- ------------------------------------------------------- +- Root 10 b1 0.535612104 a.u. ( 14.5747531 eV) ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.68374 ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.17215 ++ Occ. 3 beta b1 --- Virt. 6 beta a1 0.68374 ++ Occ. 4 beta a1 --- Virt. 7 beta b1 -0.17215 ++ ---------------------------------------------------------------------------- ++ Root 10 b1 0.535612104 a.u. 14.5748 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 1.12071 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ -1.01277 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 7.65908 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 1.51267 XYZ 0.00000 XZZ 2.70321 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.44848 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 1.12071 Y -0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ -1.01277 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.44848 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.68961 +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.15030 +- Occ. 3 beta b1 --- Virt. 6 beta a1 -0.68961 +- Occ. 4 beta a1 --- Virt. 7 beta b1 -0.15030 ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.68961 ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.15030 ++ Occ. 3 beta b1 --- Virt. 6 beta a1 0.68961 ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.15030 + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926843 +- Excitation energy = 0.267147050906 +- Excited state energy = -76.152590875936 ++ Ground state energy = -76.419737927049 ++ Excitation energy = 0.267147050945 ++ Excited state energy = -76.152590876104 + + +- Task times cpu: 21.0s wall: 21.1s ++ Task times cpu: 15.4s wall: 15.5s + + + NWChem Input Module +@@ -1755,6 +1738,24 @@ + TDDFT H2O B3LYP/6-31G** QA TEST + + ++ ++ ++ Summary of "ao basis" -> "ao basis" (cartesian) ++ ------------------------------------------------------------------------------ ++ Tag Description Shells Functions and Types ++ ---------------- ------------------------------ ------ --------------------- ++ O 6-31G** 6 15 3s2p1d ++ H 6-31G** 3 5 2s1p ++ ++ ++ Symmetry analysis of basis ++ -------------------------- ++ ++ a1 12 ++ a2 2 ++ b1 7 ++ b2 4 ++ + Caching 1-el integrals + + General Information +@@ -1853,102 +1854,116 @@ + 6 a1 7 b1 8 b1 9 a1 10 b2 + 11 a1 12 b1 13 a1 14 a2 15 a1 + +- Time after variat. SCF: 44.8 +- Time prior to 1st pass: 44.8 ++ Time after variat. SCF: 28.3 ++ Time prior to 1st pass: 28.3 + + #quartets = 3.081D+03 #integrals = 2.937D+04 #direct = 0.0% #cached =100.0% + + + Integral file = ./tddft_h2o_dat.aoints.0 + Record size in doubles = 65536 No. of integs per rec = 43688 +- Max. records in memory = 2 Max. records in file = 58806 ++ Max. records in memory = 2 Max. records in file = 5897 + No. of bits per label = 8 No. of bits per value = 64 + + ++File balance: exchanges= 0 moved= 0 time= 0.0 ++ ++ + Grid_pts file = ./tddft_h2o_dat.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 +- Max. records in memory = 23 Max. recs in file = 313621 ++ Max. records in memory = 9 Max. recs in file = 31451 + + + Memory utilization after 1st SCF pass: +- Heap Space remaining (MW): 15.97 15968603 +- Stack Space remaining (MW): 16.38 16383670 ++ Heap Space remaining (MW): 12.86 12863756 ++ Stack Space remaining (MW): 13.11 13106852 + + convergence iter energy DeltaE RMS-Dens Diis-err time + ---------------- ----- ----------------- --------- --------- --------- ------ +- d= 0,ls=0.0,diis 1 -76.4197379268 -8.55D+01 5.80D-09 2.32D-14 45.2 +- 5.80D-09 2.32D-14 +- d= 0,ls=0.0,diis 2 -76.4197379268 -9.95D-14 3.78D-09 3.94D-14 45.5 +- 3.78D-09 3.94D-14 ++ d= 0,ls=0.0,diis 1 -76.4197379267 -8.55D+01 5.80D-09 2.31D-14 28.5 ++ 5.80D-09 2.31D-14 ++ d= 0,ls=0.0,diis 2 -76.4197379267 -9.95D-14 3.77D-09 3.93D-14 28.6 ++ 3.77D-09 3.93D-14 + + +- Total DFT energy = -76.419737926843 +- One electron energy = -123.023474438658 +- Coulomb energy = 46.835825769424 +- Exchange-Corr. energy = -9.351530640160 ++ Total DFT energy = -76.419737926671 ++ One electron energy = -123.023474439557 ++ Coulomb energy = 46.835825770572 ++ Exchange-Corr. energy = -9.351530640237 + Nuclear repulsion energy = 9.119441382552 + +- Numeric. integr. density = 10.000001105935 ++ Numeric. integr. density = 10.000001105854 + +- Total iterative time = 0.8s ++ Total iterative time = 0.3s + + + ++ Occupations of the irreducible representations ++ ---------------------------------------------- ++ ++ irrep alpha beta ++ -------- -------- -------- ++ a1 3.0 3.0 ++ a2 0.0 0.0 ++ b1 1.0 1.0 ++ b2 1.0 1.0 ++ ++ + DFT Final Alpha Molecular Orbital Analysis + ------------------------------------------ + + Vector 1 Occ=1.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.3D-13, 1.2D-16, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -1.0D-13, -3.2D-15, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 1 0.992881 1 O s + + Vector 2 Occ=1.000000D+00 E=-9.973140D-01 Symmetry=a1 +- MO Center= -5.6D-11, -8.6D-13, -8.7D-02, r^2= 5.0D-01 ++ MO Center= -1.2D-11, -3.9D-13, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 2 -0.467607 1 O s 6 -0.422148 1 O s +- 1 0.210485 1 O s 21 -0.151985 3 H s +- 16 -0.151985 2 H s ++ 2 0.467607 1 O s 6 0.422148 1 O s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=1.000000D+00 E=-5.149839D-01 Symmetry=b1 +- MO Center= 5.3D-11, 1.2D-22, -1.1D-01, r^2= 7.9D-01 ++ MO Center= 1.2D-11, -3.2D-24, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 3 -0.513996 1 O px 7 -0.247229 1 O px +- 16 -0.244124 2 H s 21 0.244124 3 H s +- 17 -0.157241 2 H s 22 0.157241 3 H s ++ 3 0.513996 1 O px 7 0.247229 1 O px ++ 16 0.244124 2 H s 21 -0.244124 3 H s ++ 17 0.157241 2 H s 22 -0.157241 3 H s + + Vector 4 Occ=1.000000D+00 E=-3.710237D-01 Symmetry=a1 +- MO Center= 8.1D-12, -2.2D-13, 1.9D-01, r^2= 7.0D-01 ++ MO Center= 5.2D-12, -1.5D-12, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 5 0.552652 1 O pz 6 0.416361 1 O s + 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=1.000000D+00 E=-2.919624D-01 Symmetry=b2 +- MO Center= -7.4D-13, 1.2D-12, 9.4D-02, r^2= 5.9D-01 ++ MO Center= 8.7D-19, 1.8D-12, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534605D-02 Symmetry=a1 +- MO Center= -1.5D-11, 4.4D-14, -6.2D-01, r^2= 2.4D+00 ++ MO Center= 1.6D-16, 2.6D-29, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.261195 1 O s 22 0.969306 3 H s +- 17 0.969306 2 H s 9 0.469996 1 O pz +- 5 0.275960 1 O pz ++ 6 1.261195 1 O s 17 -0.969306 2 H s ++ 22 -0.969306 3 H s 9 -0.469996 1 O pz ++ 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512261D-01 Symmetry=b1 +- MO Center= -1.2D-11, 7.0D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= -1.8D-12, 8.6D-27, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 1.286510 3 H s 17 -1.286510 2 H s +- 7 0.758485 1 O px 3 0.410623 1 O px ++ 17 1.286510 2 H s 22 -1.286510 3 H s ++ 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 3.5D-10, 1.7D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 4.0D-10, -1.3D-13, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 17 -0.795376 2 H s 22 0.795376 3 H s +@@ -1957,87 +1972,87 @@ + 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055101D-01 Symmetry=a1 +- MO Center= -3.1D-10, -3.5D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= -3.7D-10, -9.7D-13, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 -0.647807 1 O pz 22 0.601436 3 H s +- 17 0.601436 2 H s 21 -0.566894 3 H s +- 16 -0.566894 2 H s 9 0.558049 1 O pz +- 10 -0.262150 1 O dxx 6 -0.238812 1 O s +- 23 0.164396 3 H px 18 -0.164396 2 H px ++ 5 0.647807 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566894 2 H s ++ 21 0.566894 3 H s 9 -0.558049 1 O pz ++ 10 0.262150 1 O dxx 6 0.238812 1 O s ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913504D-01 Symmetry=b2 +- MO Center= -7.3D-13, 9.1D-12, 1.1D-01, r^2= 1.1D+00 ++ MO Center= 1.4D-12, -5.9D-11, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935286D-01 Symmetry=a1 +- MO Center= -1.8D-11, -8.9D-12, 2.6D-01, r^2= 1.5D+00 ++ MO Center= -9.1D-11, 5.9D-11, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.350166 1 O s 2 -0.816728 1 O s + 9 0.807033 1 O pz 5 -0.529854 1 O pz +- 21 0.502429 3 H s 16 0.502429 2 H s +- 22 -0.381525 3 H s 17 -0.381525 2 H s ++ 16 0.502429 2 H s 21 0.502429 3 H s ++ 17 -0.381525 2 H s 22 -0.381525 3 H s + 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= 6.0D-13, 6.3D-24, 1.2D-01, r^2= 1.6D+00 ++ MO Center= 5.8D-11, -8.7D-14, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152363 2 H s +- 21 -0.152363 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152363 2 H s ++ 21 0.152363 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175375D+00 Symmetry=a1 +- MO Center= 9.4D-12, 4.4D-13, -3.7D-01, r^2= 1.4D+00 ++ MO Center= 3.1D-12, 8.7D-13, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 3.527323 1 O s 2 -1.425462 1 O s + 9 -0.990461 1 O pz 17 -0.770199 2 H s + 22 -0.770199 3 H s 10 -0.625764 1 O dxx + 5 0.351436 1 O pz 15 -0.333460 1 O dzz +- 21 -0.326676 3 H s 16 -0.326676 2 H s ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529510D+00 Symmetry=a2 +- MO Center= -9.4D-12, -1.7D-13, -1.3D-01, r^2= 7.7D-01 ++ MO Center= 2.4D-11, 1.3D-13, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 11 -1.177966 1 O dxy 24 0.350698 3 H py +- 19 -0.350698 2 H py ++ 11 1.177966 1 O dxy 19 0.350698 2 H py ++ 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -9.8D-12, -7.8D-14, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -3.4D-12, 2.6D-14, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -0.901910 1 O s 15 0.788597 1 O dzz +- 9 0.519667 1 O pz 2 0.323896 1 O s +- 10 -0.255739 1 O dxx 25 -0.248206 3 H pz +- 20 -0.248206 2 H pz 13 -0.245549 1 O dyy +- 21 0.237555 3 H s 16 0.237555 2 H s ++ 6 0.901910 1 O s 15 -0.788597 1 O dzz ++ 9 -0.519667 1 O pz 2 -0.323896 1 O s ++ 10 0.255739 1 O dxx 20 0.248206 2 H pz ++ 25 0.248206 3 H pz 13 0.245549 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + DFT Final Beta Molecular Orbital Analysis + ----------------------------------------- + + Vector 1 Occ=1.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.2D-13, 1.3D-16, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -8.4D-14, -9.5D-16, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 1 0.992881 1 O s + + Vector 2 Occ=1.000000D+00 E=-9.973140D-01 Symmetry=a1 +- MO Center= -5.6D-11, -8.7D-13, -8.7D-02, r^2= 5.0D-01 ++ MO Center= -1.6D-11, -4.8D-13, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 2 0.467607 1 O s 6 0.422148 1 O s +- 1 -0.210485 1 O s 21 0.151985 3 H s +- 16 0.151985 2 H s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=1.000000D+00 E=-5.149839D-01 Symmetry=b1 +- MO Center= 5.3D-11, 1.2D-22, -1.1D-01, r^2= 7.9D-01 ++ MO Center= 2.9D-11, -5.7D-14, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 3 0.513996 1 O px 7 0.247229 1 O px +@@ -2045,20 +2060,20 @@ + 17 0.157241 2 H s 22 -0.157241 3 H s + + Vector 4 Occ=1.000000D+00 E=-3.710237D-01 Symmetry=a1 +- MO Center= 5.9D-18, -2.0D-29, 1.9D-01, r^2= 7.0D-01 ++ MO Center= -1.3D-11, -1.0D-12, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 -0.552652 1 O pz 6 -0.416361 1 O s +- 9 -0.364042 1 O pz 2 -0.174171 1 O s ++ 5 0.552652 1 O pz 6 0.416361 1 O s ++ 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=1.000000D+00 E=-2.919624D-01 Symmetry=b2 +- MO Center= -6.5D-13, 7.8D-13, 9.4D-02, r^2= 5.9D-01 ++ MO Center= -8.0D-13, 8.2D-13, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534605D-02 Symmetry=a1 +- MO Center= -5.7D-17, -1.7D-13, -6.2D-01, r^2= 2.4D+00 ++ MO Center= -1.8D-12, 4.1D-13, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.261195 1 O s 17 -0.969306 2 H s +@@ -2066,82 +2081,82 @@ + 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512261D-01 Symmetry=b1 +- MO Center= -5.7D-13, 6.8D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= 5.5D-12, -5.9D-14, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 -1.286510 3 H s 17 1.286510 2 H s ++ 17 1.286510 2 H s 22 -1.286510 3 H s + 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 3.0D-10, 1.7D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= -1.1D-12, -1.5D-24, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 17 0.795376 2 H s 22 -0.795376 3 H s +- 16 -0.770846 2 H s 21 0.770846 3 H s +- 12 0.460025 1 O dxz 3 0.202259 1 O px +- 7 0.166493 1 O px ++ 17 -0.795376 2 H s 22 0.795376 3 H s ++ 16 0.770846 2 H s 21 -0.770846 3 H s ++ 12 -0.460025 1 O dxz 3 -0.202259 1 O px ++ 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055101D-01 Symmetry=a1 +- MO Center= -2.8D-10, -2.9D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= 1.8D-11, -2.4D-13, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 0.647807 1 O pz 22 -0.601436 3 H s +- 17 -0.601436 2 H s 21 0.566894 3 H s +- 16 0.566894 2 H s 9 -0.558049 1 O pz ++ 5 0.647807 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566894 2 H s ++ 21 0.566894 3 H s 9 -0.558049 1 O pz + 10 0.262150 1 O dxx 6 0.238812 1 O s +- 23 -0.164396 3 H px 18 0.164396 2 H px ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913504D-01 Symmetry=b2 +- MO Center= -8.6D-13, 1.0D-11, 1.1D-01, r^2= 1.1D+00 ++ MO Center= 1.3D-12, -4.5D-11, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 8 1.037304 1 O py 4 -0.959670 1 O py ++ 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935286D-01 Symmetry=a1 +- MO Center= -1.5D-11, -9.7D-12, 2.6D-01, r^2= 1.5D+00 ++ MO Center= -8.3D-11, 4.4D-11, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.350166 1 O s 2 -0.816728 1 O s + 9 0.807033 1 O pz 5 -0.529854 1 O pz +- 21 0.502429 3 H s 16 0.502429 2 H s +- 22 -0.381525 3 H s 17 -0.381525 2 H s ++ 16 0.502429 2 H s 21 0.502429 3 H s ++ 17 -0.381525 2 H s 22 -0.381525 3 H s + 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -7.3D-13, 5.0D-24, 1.2D-01, r^2= 1.6D+00 ++ MO Center= 6.7D-11, 5.0D-22, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152363 2 H s +- 21 -0.152363 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152363 2 H s ++ 21 0.152363 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175375D+00 Symmetry=a1 +- MO Center= 9.4D-12, 4.2D-13, -3.7D-01, r^2= 1.4D+00 ++ MO Center= 3.8D-13, 1.0D-12, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 3.527323 1 O s 2 -1.425462 1 O s + 9 -0.990461 1 O pz 17 -0.770199 2 H s + 22 -0.770199 3 H s 10 -0.625764 1 O dxx + 5 0.351436 1 O pz 15 -0.333460 1 O dzz +- 21 -0.326676 3 H s 16 -0.326676 2 H s ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529510D+00 Symmetry=a2 +- MO Center= -1.1D-11, -1.7D-13, -1.3D-01, r^2= 7.7D-01 ++ MO Center= 2.5D-11, 9.8D-14, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 11 -1.177966 1 O dxy 24 0.350698 3 H py +- 19 -0.350698 2 H py ++ 11 1.177966 1 O dxy 19 0.350698 2 H py ++ 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -1.0D-11, -7.7D-14, 2.5D-02, r^2= 8.4D-01 ++ MO Center= 3.4D-12, 5.9D-14, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 0.901910 1 O s 15 -0.788597 1 O dzz + 9 -0.519667 1 O pz 2 -0.323896 1 O s +- 10 0.255739 1 O dxx 25 0.248206 3 H pz +- 20 0.248206 2 H pz 13 0.245549 1 O dyy +- 21 -0.237555 3 H s 16 -0.237555 2 H s ++ 10 0.255739 1 O dxx 20 0.248206 2 H pz ++ 25 0.248206 3 H pz 13 0.245549 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + alpha - beta orbital overlaps +@@ -2165,7 +2180,7 @@ + -------------------------- + Expectation value of S2: + -------------------------- +- = 0.0000 (Exact = 0.0000) ++ = -0.0000 (Exact = 0.0000) + + + center of mass +@@ -2183,21 +2198,21 @@ + + L x y z total alpha beta nuclear + - - - - ----- ----- ---- ------- +- 0 0 0 0 0.000000 -5.000000 -5.000000 10.000000 ++ 0 0 0 0 -0.000000 -5.000000 -5.000000 10.000000 + +- 1 1 0 0 0.000000 0.000000 0.000000 0.000000 ++ 1 1 0 0 -0.000000 -0.000000 0.000000 0.000000 + 1 0 1 0 0.000000 0.000000 0.000000 0.000000 + 1 0 0 1 -0.803750 -0.401875 -0.401875 0.000000 + + 2 2 0 0 -3.194729 -3.656402 -3.656402 4.118075 + 2 1 1 0 0.000000 0.000000 0.000000 0.000000 +- 2 1 0 1 0.000000 0.000000 0.000000 0.000000 ++ 2 1 0 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 2 0 -5.306781 -2.653391 -2.653391 0.000000 +- 2 0 1 1 0.000000 0.000000 0.000000 0.000000 ++ 2 0 1 1 -0.000000 -0.000000 -0.000000 0.000000 + 2 0 0 2 -4.442837 -3.236338 -3.236338 2.029839 + + +- Parallel integral file used 1 records with 0 large values ++ Parallel integral file used 3 records with 0 large values + + NWChem TDDFT Module + ------------------- +@@ -2238,7 +2253,7 @@ + Alpha electrons : 5 + Beta electrons : 5 + No. of roots : 9 +- Max subspacesize : 200 ++ Max subspacesize : 5800 + Max iterations : 100 + Target root : 1 + Target symmetry : none +@@ -2248,26 +2263,26 @@ + + Memory Information + ------------------ +- Available GA space size is 32766750 doubles +- Available MA space size is 32766274 doubles ++ Available GA space size is 78641950 doubles ++ Available MA space size is 26212596 doubles + Length of a trial vector is 100 100 + Algorithm : Incore multiple tensor contraction +- Estimated peak GA usage is 348600 doubles ++ Estimated peak GA usage is 4828600 doubles + Estimated peak MA usage is 57600 doubles + +- 9 smallest eigenvalue differences ++ 9 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 1 5 6 b2 0.06535 -0.29196 9.72 +- 2 2 5 6 b2 0.06535 -0.29196 9.72 +- 3 2 4 6 a1 0.06535 -0.37102 11.87 +- 4 1 4 6 a1 0.06535 -0.37102 11.87 +- 5 1 5 7 a2 0.15123 -0.29196 12.06 +- 6 2 5 7 a2 0.15123 -0.29196 12.06 +- 7 2 4 7 b1 0.15123 -0.37102 14.21 +- 8 1 4 7 b1 0.15123 -0.37102 14.21 +- 9 2 3 6 b1 0.06535 -0.51498 15.79 ++ 1 2 5 6 b2 -0.292 0.065 9.723 ++ 2 1 5 6 b2 -0.292 0.065 9.723 ++ 3 2 4 6 a1 -0.371 0.065 11.874 ++ 4 1 4 6 a1 -0.371 0.065 11.874 ++ 5 2 5 7 a2 -0.292 0.151 12.060 ++ 6 1 5 7 a2 -0.292 0.151 12.060 ++ 7 2 4 7 b1 -0.371 0.151 14.211 ++ 8 1 4 7 b1 -0.371 0.151 14.211 ++ 9 2 3 6 b1 -0.515 0.065 15.792 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -2275,172 +2290,136 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 9 0 0.29E+00 0.10+100 3.9 +- 2 27 0 0.74E-01 0.30E-01 8.9 +- 3 45 0 0.11E-01 0.29E-02 8.9 +- 4 63 2 0.17E-02 0.44E-04 9.0 +- 5 77 6 0.22E-03 0.75E-06 7.1 +- 6 82 9 0.79E-04 0.53E-08 3.0 ++ 1 9 0 0.29E+00 0.10+100 3.2 ++ 2 27 0 0.74E-01 0.30E-01 7.2 ++ 3 45 0 0.11E-01 0.29E-02 7.5 ++ 4 63 2 0.17E-02 0.44E-04 7.6 ++ 5 77 6 0.22E-03 0.75E-06 5.1 ++ 6 82 9 0.79E-04 0.53E-08 1.7 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. +- = 0.0000 ++ Ground state a1 -76.419737926671 a.u. ++ = -0.0000 + +- ------------------------------------------------------- +- Root 1 b2 0.265905123 a.u. ( 7.2356496 eV) ++ ---------------------------------------------------------------------------- ++ Root 1 b2 0.265905123 a.u. 7.2356 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.00000 + Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70637 X +- Occ. 5 beta b2 --- Virt. 6 beta a1 -0.70637 X +- ------------------------------------------------------- +- Root 2 b2 0.294221003 a.u. ( 8.0061643 eV) +- = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y -0.26890 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.08066 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY -0.93672 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY -1.60960 YYZ 0.00000 YZZ -0.72276 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.01418 ++ Occ. 5 alpha b2 --- Virt. 6 alpha a1 0.70637 X ++ Occ. 5 beta b2 --- Virt. 6 beta a1 -0.70637 X ++ ---------------------------------------------------------------------------- ++ Root 2 b2 0.294221003 a.u. 8.0062 eV ++ = -0.0000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.26890 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ 0.08066 ZZ 0.00000 ++ Dipole Oscillator Strength 0.01418 + +- Occ. 5 alpha b2 --- Virt. 6 alpha a1 0.70712 X +- Occ. 5 beta b2 --- Virt. 6 beta a1 -0.70712 X +- ------------------------------------------------------- +- Root 3 a1 0.342027718 a.u. ( 9.3070517 eV) ++ Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70712 X ++ Occ. 5 beta b2 --- Virt. 6 beta a1 -0.70712 X ++ ---------------------------------------------------------------------------- ++ Root 3 a1 0.342027718 a.u. 9.3071 eV + = 2.0000 +- ------------------------------------------------------- ++ ---------------------------------------------------------------------------- + Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ -0.00000 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 7 alpha b1 -0.05593 X +- Occ. 4 alpha a1 --- Virt. 6 alpha a1 0.70377 X +- Occ. 3 beta b1 --- Virt. 7 beta b1 0.05593 X +- Occ. 4 beta a1 --- Virt. 6 beta a1 -0.70377 X +- ------------------------------------------------------- +- Root 4 a2 0.348121084 a.u. ( 9.4728607 eV) ++ Occ. 3 alpha b1 --- Virt. 7 alpha b1 -0.05593 X ++ Occ. 4 alpha a1 --- Virt. 6 alpha a1 -0.70377 X ++ Occ. 3 beta b1 --- Virt. 7 beta b1 0.05593 X ++ Occ. 4 beta a1 --- Virt. 6 beta a1 0.70377 X ++ ---------------------------------------------------------------------------- ++ Root 4 a2 0.348121084 a.u. 9.4729 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.00000 + Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70590 X +- Occ. 5 beta b2 --- Virt. 7 beta b1 0.70590 X +- ------------------------------------------------------- +- Root 5 a2 0.369097183 a.u. ( 10.0436497 eV) ++ Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70590 X ++ Occ. 5 beta b2 --- Virt. 7 beta b1 -0.70590 X ++ ---------------------------------------------------------------------------- ++ Root 5 a2 0.369097183 a.u. 10.0436 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y 0.00000 Z 0.00000 + Transition Moments XX 0.00000 XY 0.24936 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ -0.34740 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70666 X +- Occ. 5 beta b2 --- Virt. 7 beta b1 -0.70666 X +- ------------------------------------------------------- +- Root 6 a1 0.387064423 a.u. ( 10.5325633 eV) +- = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.60463 +- Transition Moments XX -0.62351 XY 0.00000 XZ 0.00000 +- Transition Moments YY -0.09429 YZ 0.00000 ZZ -0.45941 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 1.72772 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.91748 YZZ 0.00000 +- Transition Moments ZZZ 3.60522 +- Dipole Oscillator Strength 0.09433 ++ Occ. 5 alpha b2 --- Virt. 7 alpha b1 -0.70666 X ++ Occ. 5 beta b2 --- Virt. 7 beta b1 -0.70666 X ++ ---------------------------------------------------------------------------- ++ Root 6 a1 0.387064423 a.u. 10.5326 eV ++ = -0.0000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y 0.00000 Z -0.60463 ++ Transition Moments XX 0.62351 XY 0.00000 XZ -0.00000 ++ Transition Moments YY 0.09429 YZ -0.00000 ZZ 0.45941 ++ Dipole Oscillator Strength 0.09433 + +- Occ. 3 alpha b1 --- Virt. 7 alpha b1 -0.08397 X +- Occ. 4 alpha a1 --- Virt. 6 alpha a1 -0.70174 X +- Occ. 3 beta b1 --- Virt. 7 beta b1 -0.08397 X +- Occ. 4 beta a1 --- Virt. 6 beta a1 -0.70174 X +- ------------------------------------------------------- +- Root 7 b1 0.415497571 a.u. ( 11.3062690 eV) ++ Occ. 3 alpha b1 --- Virt. 7 alpha b1 0.08397 X ++ Occ. 4 alpha a1 --- Virt. 6 alpha a1 -0.70174 X ++ Occ. 3 beta b1 --- Virt. 7 beta b1 0.08397 X ++ Occ. 4 beta a1 --- Virt. 6 beta a1 -0.70174 X ++ ---------------------------------------------------------------------------- ++ Root 7 b1 0.415497571 a.u. 11.3063 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.18810 X +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.67963 X +- Occ. 3 beta b1 --- Virt. 6 beta a1 -0.18810 X +- Occ. 4 beta a1 --- Virt. 7 beta b1 0.67963 X +- ------------------------------------------------------- +- Root 8 b1 0.466992134 a.u. ( 12.7075079 eV) +- = 0.0000 +- ------------------------------------------------------- +- Transition Moments X -0.47326 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.58527 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX -2.47430 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY -0.51688 XYZ 0.00000 XZZ -1.56810 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.06973 ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.18810 X ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.67963 X ++ Occ. 3 beta b1 --- Virt. 6 beta a1 0.18810 X ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.67963 X ++ ---------------------------------------------------------------------------- ++ Root 8 b1 0.466992134 a.u. 12.7075 eV ++ = -0.0000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.47326 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ 0.58527 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.06973 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.13669 X +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 0.69308 X +- Occ. 3 beta b1 --- Virt. 6 beta a1 0.13669 X +- Occ. 4 beta a1 --- Virt. 7 beta b1 0.69308 X +- ------------------------------------------------------- +- Root 9 b1 0.480288084 a.u. ( 13.0693093 eV) ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.13669 X ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.69308 X ++ Occ. 3 beta b1 --- Virt. 6 beta a1 0.13669 X ++ Occ. 4 beta a1 --- Virt. 7 beta b1 -0.69308 X ++ ---------------------------------------------------------------------------- ++ Root 9 b1 0.480288084 a.u. 13.0693 eV + = 2.0000 +- ------------------------------------------------------- ++ ---------------------------------------------------------------------------- + Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.67952 X +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.18911 X +- Occ. 3 beta b1 --- Virt. 6 beta a1 0.67952 X +- Occ. 4 beta a1 --- Virt. 7 beta b1 0.18911 X ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.67952 X ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.18911 X ++ Occ. 3 beta b1 --- Virt. 6 beta a1 -0.67952 X ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.18911 X + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926843 +- Excitation energy = 0.265905122888 +- Excited state energy = -76.153832803955 ++ Ground state energy = -76.419737926671 ++ Excitation energy = 0.265905122904 ++ Excited state energy = -76.153832803767 + + +- Task times cpu: 41.6s wall: 41.7s ++ Task times cpu: 32.7s wall: 32.8s + + + NWChem Input Module +@@ -2455,6 +2434,24 @@ + TDDFT H2O B3LYP/6-31G** QA TEST + + ++ ++ ++ Summary of "ao basis" -> "ao basis" (cartesian) ++ ------------------------------------------------------------------------------ ++ Tag Description Shells Functions and Types ++ ---------------- ------------------------------ ------ --------------------- ++ O 6-31G** 6 15 3s2p1d ++ H 6-31G** 3 5 2s1p ++ ++ ++ Symmetry analysis of basis ++ -------------------------- ++ ++ a1 12 ++ a2 2 ++ b1 7 ++ b2 4 ++ + Caching 1-el integrals + + General Information +@@ -2553,212 +2550,226 @@ + 6 a1 7 b1 8 b1 9 a1 10 b2 + 11 a1 12 b1 13 a1 14 a2 15 a1 + +- Time after variat. SCF: 86.4 +- Time prior to 1st pass: 86.4 ++ Time after variat. SCF: 61.0 ++ Time prior to 1st pass: 61.0 + + #quartets = 3.081D+03 #integrals = 2.937D+04 #direct = 0.0% #cached =100.0% + + + Integral file = ./tddft_h2o_dat.aoints.0 + Record size in doubles = 65536 No. of integs per rec = 43688 +- Max. records in memory = 2 Max. records in file = 58806 ++ Max. records in memory = 2 Max. records in file = 5897 + No. of bits per label = 8 No. of bits per value = 64 + + ++File balance: exchanges= 0 moved= 0 time= 0.0 ++ ++ + Grid_pts file = ./tddft_h2o_dat.gridpts.0 + Record size in doubles = 12289 No. of grid_pts per rec = 3070 +- Max. records in memory = 23 Max. recs in file = 313621 ++ Max. records in memory = 9 Max. recs in file = 31451 + + + Memory utilization after 1st SCF pass: +- Heap Space remaining (MW): 15.97 15968603 +- Stack Space remaining (MW): 16.38 16383670 ++ Heap Space remaining (MW): 12.86 12863756 ++ Stack Space remaining (MW): 13.11 13106852 + + convergence iter energy DeltaE RMS-Dens Diis-err time + ---------------- ----- ----------------- --------- --------- --------- ------ +- d= 0,ls=0.0,diis 1 -76.4197379268 -8.55D+01 4.11D-10 1.08D-16 86.9 +- 4.11D-10 1.08D-16 +- d= 0,ls=0.0,diis 2 -76.4197379268 -8.53D-13 2.55D-10 1.65D-16 87.2 +- 2.55D-10 1.65D-16 ++ d= 0,ls=0.0,diis 1 -76.4197379267 -8.55D+01 4.09D-10 1.06D-16 61.2 ++ 4.09D-10 1.06D-16 ++ d= 0,ls=0.0,diis 2 -76.4197379267 4.41D-13 2.53D-10 1.63D-16 61.3 ++ 2.53D-10 1.63D-16 + + +- Total DFT energy = -76.419737926844 +- One electron energy = -123.023475211477 +- Coulomb energy = 46.835826647225 +- Exchange-Corr. energy = -9.351530745144 ++ Total DFT energy = -76.419737926671 ++ One electron energy = -123.023475211887 ++ Coulomb energy = 46.835826647818 ++ Exchange-Corr. energy = -9.351530745154 + Nuclear repulsion energy = 9.119441382552 + +- Numeric. integr. density = 10.000001105935 ++ Numeric. integr. density = 10.000001105854 + +- Total iterative time = 0.8s ++ Total iterative time = 0.3s + + + ++ Occupations of the irreducible representations ++ ---------------------------------------------- ++ ++ irrep alpha beta ++ -------- -------- -------- ++ a1 3.0 3.0 ++ a2 0.0 0.0 ++ b1 1.0 1.0 ++ b2 1.0 1.0 ++ ++ + DFT Final Alpha Molecular Orbital Analysis + ------------------------------------------ + + Vector 1 Occ=1.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.3D-13, -7.9D-17, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -7.7D-14, 1.9D-16, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 1 -0.992881 1 O s ++ 1 0.992881 1 O s + + Vector 2 Occ=1.000000D+00 E=-9.973140D-01 Symmetry=a1 +- MO Center= -5.2D-11, -8.5D-13, -8.7D-02, r^2= 5.0D-01 ++ MO Center= 1.7D-18, -9.9D-30, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 2 0.467607 1 O s 6 0.422148 1 O s +- 1 -0.210485 1 O s 21 0.151985 3 H s +- 16 0.151985 2 H s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=1.000000D+00 E=-5.149839D-01 Symmetry=b1 +- MO Center= 8.0D-11, -1.4D-13, -1.1D-01, r^2= 7.9D-01 ++ MO Center= 7.4D-12, 4.5D-14, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 3 -0.513996 1 O px 7 -0.247229 1 O px +- 16 -0.244124 2 H s 21 0.244124 3 H s +- 17 -0.157241 2 H s 22 0.157241 3 H s ++ 3 0.513996 1 O px 7 0.247229 1 O px ++ 16 0.244124 2 H s 21 -0.244124 3 H s ++ 17 0.157241 2 H s 22 -0.157241 3 H s + + Vector 4 Occ=1.000000D+00 E=-3.710237D-01 Symmetry=a1 +- MO Center= -1.2D-12, -2.2D-13, 1.9D-01, r^2= 7.0D-01 ++ MO Center= -1.9D-12, 8.8D-14, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 5 0.552653 1 O pz 6 0.416361 1 O s + 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=1.000000D+00 E=-2.919624D-01 Symmetry=b2 +- MO Center= -4.3D-13, 1.2D-12, 9.4D-02, r^2= 5.9D-01 ++ MO Center= 1.9D-14, -1.3D-13, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534605D-02 Symmetry=a1 +- MO Center= 1.3D-11, 5.9D-14, -6.2D-01, r^2= 2.4D+00 ++ MO Center= -4.1D-12, 3.3D-14, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.261195 1 O s 17 0.969306 2 H s +- 22 0.969306 3 H s 9 0.469996 1 O pz +- 5 0.275960 1 O pz ++ 6 1.261195 1 O s 17 -0.969306 2 H s ++ 22 -0.969306 3 H s 9 -0.469996 1 O pz ++ 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512261D-01 Symmetry=b1 +- MO Center= -6.0D-11, 7.3D-14, -5.7D-01, r^2= 2.5D+00 ++ MO Center= 2.8D-12, -2.1D-14, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 -1.286510 3 H s 17 1.286510 2 H s ++ 17 1.286510 2 H s 22 -1.286510 3 H s + 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 4.4D-10, 1.7D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= -2.2D-12, -3.7D-25, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 17 0.795376 2 H s 22 -0.795376 3 H s +- 16 -0.770846 2 H s 21 0.770846 3 H s +- 12 0.460025 1 O dxz 3 0.202259 1 O px +- 7 0.166493 1 O px ++ 17 -0.795376 2 H s 22 0.795376 3 H s ++ 16 0.770846 2 H s 21 -0.770846 3 H s ++ 12 -0.460025 1 O dxz 3 -0.202259 1 O px ++ 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055101D-01 Symmetry=a1 +- MO Center= -3.9D-10, -2.3D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= 1.2D-11, 1.8D-13, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 -0.647807 1 O pz 22 0.601436 3 H s +- 17 0.601436 2 H s 21 -0.566894 3 H s +- 16 -0.566894 2 H s 9 0.558049 1 O pz +- 10 -0.262150 1 O dxx 6 -0.238812 1 O s +- 23 0.164396 3 H px 18 -0.164396 2 H px ++ 5 0.647807 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566894 2 H s ++ 21 0.566894 3 H s 9 -0.558049 1 O pz ++ 10 0.262150 1 O dxx 6 0.238812 1 O s ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913504D-01 Symmetry=b2 +- MO Center= -1.7D-13, 7.8D-12, 1.1D-01, r^2= 1.1D+00 ++ MO Center= -9.1D-14, -1.3D-12, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 8 1.037304 1 O py 4 -0.959670 1 O py ++ 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935286D-01 Symmetry=a1 +- MO Center= -2.1D-11, -7.5D-12, 2.6D-01, r^2= 1.5D+00 ++ MO Center= -6.2D-11, 1.1D-12, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.350166 1 O s 2 0.816728 1 O s +- 9 -0.807033 1 O pz 5 0.529854 1 O pz +- 21 -0.502429 3 H s 16 -0.502429 2 H s +- 22 0.381525 3 H s 17 0.381525 2 H s +- 13 0.323630 1 O dyy 15 0.272322 1 O dzz ++ 6 1.350166 1 O s 2 -0.816728 1 O s ++ 9 0.807033 1 O pz 5 -0.529854 1 O pz ++ 16 0.502429 2 H s 21 0.502429 3 H s ++ 17 -0.381525 2 H s 22 -0.381525 3 H s ++ 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -1.2D-11, 1.2D-13, 1.2D-01, r^2= 1.6D+00 ++ MO Center= 5.1D-11, -1.6D-23, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152363 2 H s +- 21 -0.152363 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152363 2 H s ++ 21 0.152363 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175375D+00 Symmetry=a1 +- MO Center= 2.1D-11, 4.7D-13, -3.7D-01, r^2= 1.4D+00 ++ MO Center= -1.7D-12, -1.9D-13, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 3.527323 1 O s 2 -1.425462 1 O s + 9 -0.990461 1 O pz 17 -0.770199 2 H s + 22 -0.770199 3 H s 10 -0.625764 1 O dxx + 5 0.351436 1 O pz 15 -0.333460 1 O dzz +- 21 -0.326676 3 H s 16 -0.326676 2 H s ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529510D+00 Symmetry=a2 +- MO Center= 5.3D-13, -1.6D-13, -1.3D-01, r^2= 7.7D-01 ++ MO Center= -6.1D-13, 3.3D-14, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 11 -1.177966 1 O dxy 24 0.350698 3 H py +- 19 -0.350698 2 H py ++ 11 1.177966 1 O dxy 19 0.350698 2 H py ++ 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -6.1D-12, -9.3D-14, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -7.0D-14, -2.3D-14, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -0.901910 1 O s 15 0.788597 1 O dzz +- 9 0.519667 1 O pz 2 0.323896 1 O s +- 10 -0.255739 1 O dxx 25 -0.248206 3 H pz +- 20 -0.248206 2 H pz 13 -0.245549 1 O dyy +- 21 0.237555 3 H s 16 0.237555 2 H s ++ 6 0.901910 1 O s 15 -0.788597 1 O dzz ++ 9 -0.519667 1 O pz 2 -0.323896 1 O s ++ 10 0.255739 1 O dxx 20 0.248206 2 H pz ++ 25 0.248206 3 H pz 13 0.245549 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + DFT Final Beta Molecular Orbital Analysis + ----------------------------------------- + + Vector 1 Occ=1.000000D+00 E=-1.913801D+01 Symmetry=a1 +- MO Center= -2.3D-13, -4.5D-17, 1.2D-01, r^2= 1.5D-02 ++ MO Center= -7.5D-14, 2.6D-16, 1.2D-01, r^2= 1.5D-02 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 1 -0.992881 1 O s ++ 1 0.992881 1 O s + + Vector 2 Occ=1.000000D+00 E=-9.973140D-01 Symmetry=a1 +- MO Center= -5.3D-11, -8.4D-13, -8.7D-02, r^2= 5.0D-01 ++ MO Center= -1.5D-11, 3.0D-13, -8.7D-02, r^2= 5.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 2 0.467607 1 O s 6 0.422148 1 O s +- 1 -0.210485 1 O s 21 0.151985 3 H s +- 16 0.151985 2 H s ++ 1 -0.210485 1 O s 16 0.151985 2 H s ++ 21 0.151985 3 H s + + Vector 3 Occ=1.000000D+00 E=-5.149839D-01 Symmetry=b1 +- MO Center= 5.0D-11, 1.1D-22, -1.1D-01, r^2= 7.9D-01 ++ MO Center= 1.4D-11, -3.6D-24, -1.1D-01, r^2= 7.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 3 -0.513996 1 O px 7 -0.247229 1 O px +- 16 -0.244124 2 H s 21 0.244124 3 H s +- 17 -0.157241 2 H s 22 0.157241 3 H s ++ 3 0.513996 1 O px 7 0.247229 1 O px ++ 16 0.244124 2 H s 21 -0.244124 3 H s ++ 17 0.157241 2 H s 22 -0.157241 3 H s + + Vector 4 Occ=1.000000D+00 E=-3.710237D-01 Symmetry=a1 +- MO Center= 8.2D-12, -2.8D-13, 1.9D-01, r^2= 7.0D-01 ++ MO Center= -7.3D-18, -1.2D-30, 1.9D-01, r^2= 7.0D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 5 0.552653 1 O pz 6 0.416361 1 O s + 9 0.364042 1 O pz 2 0.174171 1 O s + + Vector 5 Occ=1.000000D+00 E=-2.919624D-01 Symmetry=b2 +- MO Center= -4.2D-13, 1.2D-12, 9.4D-02, r^2= 5.9D-01 ++ MO Center= -9.6D-14, -3.3D-13, 9.4D-02, r^2= 5.9D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 4 0.643967 1 O py 8 0.494567 1 O py + + Vector 6 Occ=0.000000D+00 E= 6.534605D-02 Symmetry=a1 +- MO Center= 3.0D-11, 9.2D-14, -6.2D-01, r^2= 2.4D+00 ++ MO Center= -5.1D-17, 1.1D-13, -6.2D-01, r^2= 2.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 1.261195 1 O s 17 -0.969306 2 H s +@@ -2766,14 +2777,14 @@ + 5 -0.275960 1 O pz + + Vector 7 Occ=0.000000D+00 E= 1.512261D-01 Symmetry=b1 +- MO Center= -5.6D-11, 2.6D-23, -5.7D-01, r^2= 2.5D+00 ++ MO Center= 2.3D-12, -2.3D-14, -5.7D-01, r^2= 2.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 22 1.286510 3 H s 17 -1.286510 2 H s +- 7 0.758485 1 O px 3 0.410623 1 O px ++ 17 1.286510 2 H s 22 -1.286510 3 H s ++ 7 -0.758485 1 O px 3 -0.410623 1 O px + + Vector 8 Occ=0.000000D+00 E= 7.568468D-01 Symmetry=b1 +- MO Center= 4.1D-10, 1.7D-13, -2.6D-01, r^2= 1.7D+00 ++ MO Center= 4.2D-13, -6.9D-25, -2.6D-01, r^2= 1.7D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 17 -0.795376 2 H s 22 0.795376 3 H s +@@ -2782,66 +2793,66 @@ + 7 -0.166493 1 O px + + Vector 9 Occ=0.000000D+00 E= 8.055101D-01 Symmetry=a1 +- MO Center= -3.7D-10, -3.2D-13, -1.7D-01, r^2= 1.5D+00 ++ MO Center= -2.6D-12, -2.2D-14, -1.7D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 5 -0.647807 1 O pz 22 0.601436 3 H s +- 17 0.601436 2 H s 21 -0.566894 3 H s +- 16 -0.566894 2 H s 9 0.558049 1 O pz +- 10 -0.262150 1 O dxx 6 -0.238812 1 O s +- 23 0.164396 3 H px 18 -0.164396 2 H px ++ 5 0.647807 1 O pz 17 -0.601436 2 H s ++ 22 -0.601436 3 H s 16 0.566894 2 H s ++ 21 0.566894 3 H s 9 -0.558049 1 O pz ++ 10 0.262150 1 O dxx 6 0.238812 1 O s ++ 18 0.164396 2 H px 23 -0.164396 3 H px + + Vector 10 Occ=0.000000D+00 E= 8.913504D-01 Symmetry=b2 +- MO Center= -2.1D-13, 7.4D-12, 1.1D-01, r^2= 1.1D+00 ++ MO Center= -6.5D-14, -6.1D-13, 1.1D-01, r^2= 1.1D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 8 -1.037304 1 O py 4 0.959670 1 O py + + Vector 11 Occ=0.000000D+00 E= 8.935286D-01 Symmetry=a1 +- MO Center= -1.7D-11, -7.0D-12, 2.6D-01, r^2= 1.5D+00 ++ MO Center= -6.3D-11, 8.3D-13, 2.6D-01, r^2= 1.5D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -1.350166 1 O s 2 0.816728 1 O s +- 9 -0.807033 1 O pz 5 0.529854 1 O pz +- 21 -0.502429 3 H s 16 -0.502429 2 H s +- 22 0.381525 3 H s 17 0.381525 2 H s +- 13 0.323630 1 O dyy 15 0.272322 1 O dzz ++ 6 1.350166 1 O s 2 -0.816728 1 O s ++ 9 0.807033 1 O pz 5 -0.529854 1 O pz ++ 16 0.502429 2 H s 21 0.502429 3 H s ++ 17 -0.381525 2 H s 22 -0.381525 3 H s ++ 13 -0.323630 1 O dyy 15 -0.272322 1 O dzz + + Vector 12 Occ=0.000000D+00 E= 1.015566D+00 Symmetry=b1 +- MO Center= -1.4D-11, 1.1D-13, 1.2D-01, r^2= 1.6D+00 ++ MO Center= 6.6D-11, 2.5D-24, 1.2D-01, r^2= 1.6D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 7 -1.795569 1 O px 22 -0.963662 3 H s +- 17 0.963662 2 H s 3 0.864461 1 O px +- 12 0.157552 1 O dxz 16 0.152363 2 H s +- 21 -0.152363 3 H s ++ 7 1.795569 1 O px 17 -0.963662 2 H s ++ 22 0.963662 3 H s 3 -0.864461 1 O px ++ 12 -0.157552 1 O dxz 16 -0.152363 2 H s ++ 21 0.152363 3 H s + + Vector 13 Occ=0.000000D+00 E= 1.175375D+00 Symmetry=a1 +- MO Center= 1.9D-11, 2.5D-13, -3.7D-01, r^2= 1.4D+00 ++ MO Center= -4.7D-13, -2.6D-13, -3.7D-01, r^2= 1.4D+00 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- +- 6 -3.527323 1 O s 2 1.425462 1 O s +- 9 0.990461 1 O pz 17 0.770199 2 H s +- 22 0.770199 3 H s 10 0.625764 1 O dxx +- 5 -0.351436 1 O pz 15 0.333460 1 O dzz +- 21 0.326676 3 H s 16 0.326676 2 H s ++ 6 3.527323 1 O s 2 -1.425462 1 O s ++ 9 -0.990461 1 O pz 17 -0.770199 2 H s ++ 22 -0.770199 3 H s 10 -0.625764 1 O dxx ++ 5 0.351436 1 O pz 15 -0.333460 1 O dzz ++ 16 -0.326676 2 H s 21 -0.326676 3 H s + + Vector 14 Occ=0.000000D+00 E= 1.529510D+00 Symmetry=a2 +- MO Center= 5.9D-13, -1.3D-13, -1.3D-01, r^2= 7.7D-01 ++ MO Center= 6.5D-14, 8.1D-14, -1.3D-01, r^2= 7.7D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 11 1.177966 1 O dxy 19 0.350698 2 H py + 24 -0.350698 3 H py + + Vector 15 Occ=0.000000D+00 E= 1.537657D+00 Symmetry=a1 +- MO Center= -1.4D-12, 5.2D-14, 2.5D-02, r^2= 8.4D-01 ++ MO Center= -6.3D-13, 8.5D-15, 2.5D-02, r^2= 8.4D-01 + Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function + ----- ------------ --------------- ----- ------------ --------------- + 6 0.901910 1 O s 15 -0.788597 1 O dzz + 9 -0.519667 1 O pz 2 -0.323896 1 O s +- 10 0.255739 1 O dxx 25 0.248206 3 H pz +- 20 0.248206 2 H pz 13 0.245549 1 O dyy +- 21 -0.237555 3 H s 16 -0.237555 2 H s ++ 10 0.255739 1 O dxx 20 0.248206 2 H pz ++ 25 0.248206 3 H pz 13 0.245549 1 O dyy ++ 16 -0.237555 2 H s 21 -0.237555 3 H s + + + alpha - beta orbital overlaps +@@ -2883,21 +2894,21 @@ + + L x y z total alpha beta nuclear + - - - - ----- ----- ---- ------- +- 0 0 0 0 0.000000 -5.000000 -5.000000 10.000000 ++ 0 0 0 0 -0.000000 -5.000000 -5.000000 10.000000 + +- 1 1 0 0 0.000000 0.000000 0.000000 0.000000 ++ 1 1 0 0 -0.000000 -0.000000 0.000000 0.000000 + 1 0 1 0 0.000000 0.000000 0.000000 0.000000 + 1 0 0 1 -0.803750 -0.401875 -0.401875 0.000000 + + 2 2 0 0 -3.194729 -3.656402 -3.656402 4.118075 +- 2 1 1 0 0.000000 0.000000 0.000000 0.000000 +- 2 1 0 1 0.000000 0.000000 0.000000 0.000000 ++ 2 1 1 0 0.000000 -0.000000 0.000000 0.000000 ++ 2 1 0 1 0.000000 0.000000 -0.000000 0.000000 + 2 0 2 0 -5.306781 -2.653391 -2.653391 0.000000 +- 2 0 1 1 0.000000 0.000000 0.000000 0.000000 ++ 2 0 1 1 0.000000 -0.000000 0.000000 0.000000 + 2 0 0 2 -4.442837 -3.236338 -3.236338 2.029839 + + +- Parallel integral file used 1 records with 0 large values ++ Parallel integral file used 3 records with 0 large values + + NWChem TDDFT Module + ------------------- +@@ -2938,7 +2949,7 @@ + Alpha electrons : 5 + Beta electrons : 5 + No. of roots : 9 +- Max subspacesize : 200 ++ Max subspacesize : 5800 + Max iterations : 100 + Target root : 1 + Target symmetry : none +@@ -2948,26 +2959,26 @@ + + Memory Information + ------------------ +- Available GA space size is 32766750 doubles +- Available MA space size is 32766274 doubles ++ Available GA space size is 78641950 doubles ++ Available MA space size is 26212596 doubles + Length of a trial vector is 100 100 + Estimated peak GA usage is 189000 doubles + Estimated peak MA usage is 1307600 doubles +- Estimated peak DRA usage is 160000 doubles ++ Estimated peak DRA usage is 4640000 doubles + +- 9 smallest eigenvalue differences ++ 9 smallest eigenvalue differences (eV) + -------------------------------------------------------- +- No. Spin Occ Vir Irrep E(Vir) E(Occ) E(Diff) ++ No. Spin Occ Vir Irrep E(Occ) E(Vir) E(Diff) + -------------------------------------------------------- +- 1 2 5 6 b2 0.06535 -0.29196 9.72 +- 2 1 5 6 b2 0.06535 -0.29196 9.72 +- 3 2 4 6 a1 0.06535 -0.37102 11.87 +- 4 1 4 6 a1 0.06535 -0.37102 11.87 +- 5 2 5 7 a2 0.15123 -0.29196 12.06 +- 6 1 5 7 a2 0.15123 -0.29196 12.06 +- 7 2 4 7 b1 0.15123 -0.37102 14.21 +- 8 1 4 7 b1 0.15123 -0.37102 14.21 +- 9 2 3 6 b1 0.06535 -0.51498 15.79 ++ 1 1 5 6 b2 -0.292 0.065 9.723 ++ 2 2 5 6 b2 -0.292 0.065 9.723 ++ 3 1 4 6 a1 -0.371 0.065 11.874 ++ 4 2 4 6 a1 -0.371 0.065 11.874 ++ 5 1 5 7 a2 -0.292 0.151 12.060 ++ 6 2 5 7 a2 -0.292 0.151 12.060 ++ 7 1 4 7 b1 -0.371 0.151 14.211 ++ 8 2 4 7 b1 -0.371 0.151 14.211 ++ 9 2 3 6 b1 -0.515 0.065 15.792 + -------------------------------------------------------- + + Entering Davidson iterations +@@ -2975,172 +2986,142 @@ + + Iter NTrls NConv DeltaV DeltaE Time + ---- ------ ------ --------- --------- --------- +- 1 9 0 0.29E+00 0.10+100 3.9 +- 2 27 0 0.74E-01 0.30E-01 8.9 +- 3 45 0 0.11E-01 0.29E-02 9.0 +- 4 63 2 0.17E-02 0.44E-04 9.0 +- 5 77 6 0.22E-03 0.75E-06 7.2 +- 6 82 9 0.79E-04 0.53E-08 3.0 ++ 1 9 0 0.29E+00 0.10+100 3.5 ++ 2 27 0 0.74E-01 0.30E-01 6.8 ++ 3 45 0 0.11E-01 0.29E-02 7.6 ++ 4 63 2 0.17E-02 0.44E-04 8.7 ++ 5 77 6 0.22E-03 0.75E-06 7.1 ++ 6 82 9 0.79E-04 0.53E-08 3.4 + ---- ------ ------ --------- --------- --------- + Convergence criterion met + +- Ground state a1 -76.419737927 a.u. +- = 0.0000 ++ Ground state a1 -76.419737926671 a.u. ++ = -0.0000 + +- ------------------------------------------------------- +- Root 1 b2 0.265905121 a.u. ( 7.2356496 eV) ++ ---------------------------------------------------------------------------- ++ Root 1 b2 0.265905121 a.u. 7.2356 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY 0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 6 alpha a1 0.70637 X +- Occ. 5 beta b2 --- Virt. 6 beta a1 0.70637 X +- ------------------------------------------------------- +- Root 2 b2 0.294221001 a.u. ( 8.0061642 eV) ++ Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70637 X ++ Occ. 5 beta b2 --- Virt. 6 beta a1 0.70637 X ++ ---------------------------------------------------------------------------- ++ Root 2 b2 0.294221001 a.u. 8.0062 eV + = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y -0.26890 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.08066 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY -0.93672 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY -1.60960 YYZ 0.00000 YZZ -0.72276 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.01418 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.26890 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ 0.08066 ZZ 0.00000 ++ Dipole Oscillator Strength 0.01418 + +- Occ. 5 alpha b2 --- Virt. 6 alpha a1 0.70712 X +- Occ. 5 beta b2 --- Virt. 6 beta a1 -0.70712 X +- ------------------------------------------------------- +- Root 3 a1 0.342027717 a.u. ( 9.3070517 eV) ++ Occ. 5 alpha b2 --- Virt. 6 alpha a1 -0.70712 X ++ Occ. 5 beta b2 --- Virt. 6 beta a1 -0.70712 X ++ ---------------------------------------------------------------------------- ++ Root 3 a1 0.342027717 a.u. 9.3071 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.00000 + Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 7 alpha b1 0.05593 X +- Occ. 4 alpha a1 --- Virt. 6 alpha a1 0.70377 X +- Occ. 3 beta b1 --- Virt. 7 beta b1 0.05593 X +- Occ. 4 beta a1 --- Virt. 6 beta a1 0.70377 X +- ------------------------------------------------------- +- Root 4 a2 0.348121082 a.u. ( 9.4728607 eV) ++ Occ. 3 alpha b1 --- Virt. 7 alpha b1 -0.05593 X ++ Occ. 4 alpha a1 --- Virt. 6 alpha a1 -0.70377 X ++ Occ. 3 beta b1 --- Virt. 7 beta b1 0.05593 X ++ Occ. 4 beta a1 --- Virt. 6 beta a1 0.70377 X ++ ---------------------------------------------------------------------------- ++ Root 4 a2 0.348121082 a.u. 9.4729 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY 0.00000 XZ 0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 7 alpha b1 -0.70590 X +- Occ. 5 beta b2 --- Virt. 7 beta b1 -0.70590 X +- ------------------------------------------------------- +- Root 5 a2 0.369097182 a.u. ( 10.0436496 eV) +- = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY -0.24936 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.34740 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Occ. 5 alpha b2 --- Virt. 7 alpha b1 -0.70590 X ++ Occ. 5 beta b2 --- Virt. 7 beta b1 0.70590 X ++ ---------------------------------------------------------------------------- ++ Root 5 a2 0.369097182 a.u. 10.0436 eV ++ = -0.0000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z -0.00000 ++ Transition Moments XX -0.00000 XY -0.24936 XZ -0.00000 ++ Transition Moments YY 0.00000 YZ -0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70666 X +- Occ. 5 beta b2 --- Virt. 7 beta b1 -0.70666 X +- ------------------------------------------------------- +- Root 6 a1 0.387064421 a.u. ( 10.5325633 eV) +- = 0.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z -0.60463 +- Transition Moments XX 0.62351 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.09429 YZ 0.00000 ZZ 0.45941 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ -1.72772 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ -0.91748 YZZ 0.00000 +- Transition Moments ZZZ -3.60522 +- Dipole Oscillator Strength 0.09433 ++ Occ. 5 alpha b2 --- Virt. 7 alpha b1 0.70666 X ++ Occ. 5 beta b2 --- Virt. 7 beta b1 0.70666 X ++ ---------------------------------------------------------------------------- ++ Root 6 a1 0.387064421 a.u. 10.5326 eV ++ = -0.0000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z 0.60463 ++ Transition Moments XX -0.62351 XY 0.00000 XZ 0.00000 ++ Transition Moments YY -0.09429 YZ -0.00000 ZZ -0.45941 ++ Dipole Oscillator Strength 0.09433 + +- Occ. 3 alpha b1 --- Virt. 7 alpha b1 -0.08397 X +- Occ. 4 alpha a1 --- Virt. 6 alpha a1 0.70174 X +- Occ. 3 beta b1 --- Virt. 7 beta b1 0.08397 X +- Occ. 4 beta a1 --- Virt. 6 beta a1 -0.70174 X +- ------------------------------------------------------- +- Root 7 b1 0.415497570 a.u. ( 11.3062690 eV) ++ Occ. 3 alpha b1 --- Virt. 7 alpha b1 -0.08397 X ++ Occ. 4 alpha a1 --- Virt. 6 alpha a1 0.70174 X ++ Occ. 3 beta b1 --- Virt. 7 beta b1 -0.08397 X ++ Occ. 4 beta a1 --- Virt. 6 beta a1 0.70174 X ++ ---------------------------------------------------------------------------- ++ Root 7 b1 0.415497570 a.u. 11.3063 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.00000 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY 0.00000 XZ 0.00000 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.18810 X +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.67963 X +- Occ. 3 beta b1 --- Virt. 6 beta a1 -0.18810 X +- Occ. 4 beta a1 --- Virt. 7 beta b1 -0.67963 X +- ------------------------------------------------------- +- Root 8 b1 0.466992133 a.u. ( 12.7075079 eV) +- = 0.0000 +- ------------------------------------------------------- +- Transition Moments X -0.47326 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.58527 +- Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX -2.47430 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY -0.51688 XYZ 0.00000 XZZ -1.56810 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.06973 ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 -0.18810 X ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.67963 X ++ Occ. 3 beta b1 --- Virt. 6 beta a1 0.18810 X ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.67963 X ++ ---------------------------------------------------------------------------- ++ Root 8 b1 0.466992133 a.u. 12.7075 eV ++ = -0.0000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X -0.47326 Y -0.00000 Z 0.00000 ++ Transition Moments XX -0.00000 XY -0.00000 XZ 0.58527 ++ Transition Moments YY -0.00000 YZ 0.00000 ZZ -0.00000 ++ Dipole Oscillator Strength 0.06973 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.13669 X +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.69308 X +- Occ. 3 beta b1 --- Virt. 6 beta a1 -0.13669 X +- Occ. 4 beta a1 --- Virt. 7 beta b1 0.69308 X +- ------------------------------------------------------- +- Root 9 b1 0.480288082 a.u. ( 13.0693093 eV) ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.13669 X ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.69308 X ++ Occ. 3 beta b1 --- Virt. 6 beta a1 0.13669 X ++ Occ. 4 beta a1 --- Virt. 7 beta b1 -0.69308 X ++ ---------------------------------------------------------------------------- ++ Root 9 b1 0.480288083 a.u. 13.0693 eV + = 2.0000 +- ------------------------------------------------------- +- Transition Moments X 0.00000 Y 0.00000 Z 0.00000 +- Transition Moments XX 0.00000 XY 0.00000 XZ 0.00000 ++ ---------------------------------------------------------------------------- ++ Transition Moments X 0.00000 Y 0.00000 Z -0.00000 ++ Transition Moments XX 0.00000 XY -0.00000 XZ 0.00000 + Transition Moments YY 0.00000 YZ 0.00000 ZZ 0.00000 +- Transition Moments XXX 0.00000 XXY 0.00000 XXZ 0.00000 +- Transition Moments XYY 0.00000 XYZ 0.00000 XZZ 0.00000 +- Transition Moments YYY 0.00000 YYZ 0.00000 YZZ 0.00000 +- Transition Moments ZZZ 0.00000 +- Dipole Oscillator Strength 0.00000 ++ Dipole Oscillator Strength 0.00000 + +- Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.67952 X +- Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.18911 X +- Occ. 3 beta b1 --- Virt. 6 beta a1 0.67952 X +- Occ. 4 beta a1 --- Virt. 7 beta b1 -0.18911 X ++ Occ. 3 alpha b1 --- Virt. 6 alpha a1 0.67952 X ++ Occ. 4 alpha a1 --- Virt. 7 alpha b1 -0.18911 X ++ Occ. 3 beta b1 --- Virt. 6 beta a1 -0.67952 X ++ Occ. 4 beta a1 --- Virt. 7 beta b1 0.18911 X + + Target root = 1 + Target symmetry = none +- Ground state energy = -76.419737926844 +- Excitation energy = 0.265905120853 +- Excited state energy = -76.153832805991 ++ Ground state energy = -76.419737926671 ++ Excitation energy = 0.265905120881 ++ Excited state energy = -76.153832805789 + + +- Task times cpu: 41.8s wall: 42.3s ++ Task times cpu: 37.6s wall: 37.8s ++ ++ ++ NWChem Input Module ++ ------------------- ++ ++ + Summary of allocated global arrays + ----------------------------------- + No active global arrays +@@ -3151,11 +3132,12 @@ + ------------------------------ + + create destroy get put acc scatter gather read&inc +-calls: 9.95e+04 9.95e+04 1.31e+06 5.62e+05 7.23e+05 2264 0 0 +-number of processes/call 1.00e+00 1.00e+00 1.00e+00 1.00e+00 0.00e+00 +-bytes total: 1.18e+09 3.11e+08 8.59e+08 1.13e+07 0.00e+00 0.00e+00 +-bytes remote: 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 +-Max memory consumed for GA by this process: 2848800 bytes ++calls: 5905 5905 6.68e+05 4.70e+05 2.75e+05 2264 0 1618 ++number of processes/call 1.21e+00 1.59e+00 1.49e+00 0.00e+00 0.00e+00 ++bytes total: 4.91e+08 1.20e+08 3.12e+08 1.80e+03 0.00e+00 1.29e+04 ++bytes remote: 1.37e+07 3.31e+07 7.18e+07 0.00e+00 0.00e+00 0.00e+00 ++Max memory consumed for GA by this process: 10689000 bytes ++ + MA_summarize_allocated_blocks: starting scan ... + MA_summarize_allocated_blocks: scan completed: 0 heap blocks, 0 stack blocks + MA usage statistics: +@@ -3164,20 +3146,13 @@ + heap stack + ---- ----- + current number of blocks 0 0 +- maximum number of blocks 24 49 ++ maximum number of blocks 24 51 + current total bytes 0 0 +- maximum total bytes 3323184 22511240 +- maximum total K-bytes 3324 22512 +- maximum total M-bytes 4 23 ++ maximum total bytes 1947536 22511464 ++ maximum total K-bytes 1948 22512 ++ maximum total M-bytes 2 23 + + +- NWChem Input Module +- ------------------- +- +- +- +- +- + CITATION + -------- + Please cite the following reference when publishing +@@ -3191,20 +3166,25 @@ + Comput. Phys. Commun. 181, 1477 (2010) + doi:10.1016/j.cpc.2010.04.018 + +- AUTHORS & CONTRIBUTORS +- ---------------------- +- E. J. Bylaska, W. A. de Jong, N. Govind, K. Kowalski, T. P. Straatsma, +- M. Valiev, H. J. J. van Dam, D. Wang, E. Apra, T. L. Windus, J. Hammond, +- J. Autschbach, P. Nichols, S. Hirata, M. T. Hackler, Y. Zhao, P.-D. Fan, +- R. J. Harrison, M. Dupuis, D. M. A. Smith, K. Glaesemann, J. Nieplocha, +- V. Tipparaju, M. Krishnan, A. Vazquez-Mayagoitia, L. Jensen, M. Swart, +- Q. Wu, T. Van Voorhis, A. A. Auer, M. Nooijen, L. D. Crosby, E. Brown, +- G. Cisneros, G. I. Fann, H. Fruchtl, J. Garza, K. Hirao, +- R. Kendall, J. A. Nichols, K. Tsemekhman, K. Wolinski, J. Anchell, +- D. Bernholdt, P. Borowski, T. Clark, D. Clerc, H. Dachsel, M. Deegan, +- K. Dyall, D. Elwood, E. Glendening, M. Gutowski, A. Hess, J. Jaffe, +- B. Johnson, J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, R. Littlefield, +- X. Long, B. Meng, T. Nakajima, S. Niu, L. Pollack, M. Rosing, G. Sandrone, +- M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, A. Wong, Z. Zhang. ++ AUTHORS ++ ------- ++ E. Apra, E. J. Bylaska, W. A. de Jong, N. Govind, K. Kowalski, ++ T. P. Straatsma, M. Valiev, H. J. J. van Dam, D. Wang, T. L. Windus, ++ J. Hammond, J. Autschbach, K. Bhaskaran-Nair, J. Brabec, K. Lopata, ++ S. A. Fischer, S. Krishnamoorthy, W. Ma, M. Klemm, O. Villa, Y. Chen, ++ V. Anisimov, F. Aquino, S. Hirata, M. T. Hackler, T. Risthaus, M. Malagoli, ++ A. Marenich, A. Otero-de-la-Roza, J. Mullin, P. Nichols, R. Peverati, ++ J. Pittner, Y. Zhao, P.-D. Fan, A. Fonari, M. Williamson, R. J. Harrison, ++ J. R. Rehr, M. Dupuis, D. Silverstein, D. M. A. Smith, J. Nieplocha, ++ V. Tipparaju, M. Krishnan, B. E. Van Kuiken, A. Vazquez-Mayagoitia, ++ L. Jensen, M. Swart, Q. Wu, T. Van Voorhis, A. A. Auer, M. Nooijen, ++ L. D. Crosby, E. Brown, G. Cisneros, G. I. Fann, H. Fruchtl, J. Garza, ++ K. Hirao, R. A. Kendall, J. A. Nichols, K. Tsemekhman, K. Wolinski, ++ J. Anchell, D. E. Bernholdt, P. Borowski, T. Clark, D. Clerc, H. Dachsel, ++ M. J. O. Deegan, K. Dyall, D. Elwood, E. Glendening, M. Gutowski, A. C. Hess, ++ J. Jaffe, B. G. Johnson, J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, ++ R. Littlefield, X. Long, B. Meng, T. Nakajima, S. Niu, L. Pollack, M. Rosing, ++ K. Glaesemann, G. Sandrone, M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, ++ A. T. Wong, Z. Zhang. + +- Total times cpu: 128.2s wall: 129.0s ++ Total times cpu: 98.5s wall: 99.0s diff --git a/var/spack/repos/builtin/packages/nwchem/tools_lib64.patch b/var/spack/repos/builtin/packages/nwchem/tools_lib64.patch new file mode 100755 index 0000000000..d32442df27 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/tools_lib64.patch @@ -0,0 +1,14 @@ +Index: src/config/makefile.h +=================================================================== +--- src/config/makefile.h (revision 27828) ++++ src/config/makefile.h (revision 27829) +@@ -99,7 +99,8 @@ + ifdef OLD_GA + LIBPATH = -L$(SRCDIR)/tools/lib/$(TARGET) + else +- LIBPATH = -L$(SRCDIR)/tools/install/lib ++ TOOLSLIB = $(shell grep libdir\ = $(NWCHEM_TOP)/src/tools/build/Makefile |grep -v pkgl|cut -b 25-) ++ LIBPATH = -L$(SRCDIR)/tools/install/$(TOOLSLIB) + endif + + # diff --git a/var/spack/repos/builtin/packages/nwchem/txs_gcc6.patch b/var/spack/repos/builtin/packages/nwchem/txs_gcc6.patch new file mode 100755 index 0000000000..f0710af45f --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/txs_gcc6.patch @@ -0,0 +1,551 @@ +Index: src/NWints/texas/assemblx.f +=================================================================== +--- src/NWints/texas/assemblx.f (revision 28366) ++++ src/NWints/texas/assemblx.f (working copy) +@@ -133,7 +133,9 @@ + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg + C +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + c + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) +@@ -258,7 +260,9 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX, + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension aax(nbls1),bbx(nbls1),ccx(nbls1) +@@ -346,7 +350,9 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX, + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension aax(nbls1),bbx(nbls1),ccx(nbls1) +@@ -428,7 +434,9 @@ + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg + C +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + c + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) +@@ -626,7 +634,9 @@ + character*11 scftype + character*8 where + common /runtype/ scftype,where +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + COMMON/SHELL/LSHELLT,LSHELIJ,LSHELKL,LHELP,LCAS2(4),LCAS3(4) + common /lcases/ lcase + common/obarai/ +@@ -913,7 +923,9 @@ + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg + C +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + C + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) +@@ -972,7 +984,9 @@ + implicit real*8 (a-h,o-z) + logical firstc + c +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + c + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) +@@ -1045,7 +1059,9 @@ + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg + C +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + c + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) +@@ -1131,7 +1147,9 @@ + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg + C +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + c + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) +@@ -1217,7 +1235,9 @@ + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg + C +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + C + dimension indx(*) + dimension xt1(nbls1,lt1,lt2), bf3l(nbls,lt5,lt6) +@@ -1385,7 +1405,9 @@ + character*11 scftype + character*8 where + common /runtype/ scftype,where +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + COMMON/SHELL/LSHELLT,LSHELIJ,LSHELKL,LHELP,LCAS2(4),LCAS3(4) + common /lcases/ lcase + common/obarai/ +@@ -1659,7 +1681,9 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX, + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension bfij1(nbls,lt3,lt4) +@@ -1707,7 +1731,9 @@ + * bfij3,lt3,lt4, factij, indx, ij3b,kl3b) + implicit real*8 (a-h,o-z) + logical firstc +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension bfij3(nbls,lt3,lt4) +@@ -1762,7 +1788,9 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX, + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension bf2l1(nbls,lt3,lt4) +@@ -1829,7 +1857,9 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX, + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension bf3l(nbls,lt5,lt6) +@@ -1895,7 +1925,9 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX, + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2), bf3l(nbls,lt5,lt6) + cccc dimension facti(*), factkl(*) +@@ -2018,7 +2050,9 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX, + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension aax(nbls1),bbx(nbls1),ccx(nbls1) +@@ -2110,7 +2144,9 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX, + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension aax(nbls1),bbx(nbls1),ccx(nbls1) +@@ -2196,7 +2232,9 @@ + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg + C +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + c + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) +Index: src/NWints/texas/derivat.f +=================================================================== +--- src/NWints/texas/derivat.f (revision 28366) ++++ src/NWints/texas/derivat.f (working copy) +@@ -16,7 +16,9 @@ + c + implicit real*8 (a-h,o-z) + c +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter (lpar1=34) ++ common /logic4/ nfu(lpar1) + common /big/ bl(1) + COMMON/SHELL/LSHELLT,LSHELIJ,LSHELKL,LHELP,LCAS2(4),LCAS3(4) + common /lcases/ lcase +@@ -289,9 +291,15 @@ + * nqij,nqkl, deriv, xab,xcd, xyab,xycd) + implicit real*8 (a-h,o-z) + c +- common /logic4/ nfu(1) +- common /logic10/ nmxyz(3,1) +- common /logic11/ npxyz(3,1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + dimension buf2(nbls,lnijr,lnklr,ngcd) + dimension deriv(6,nbls,lnij,lnkl,ngcd) +@@ -374,7 +382,9 @@ + c + implicit real*8 (a-h,o-z) + c +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + COMMON/SHELL/LSHELLT,LSHELIJ,LSHELKL,LHELP,LCAS2(4),LCAS3(4) + common /lcases/ lcase + common/obarai/ +@@ -705,10 +715,15 @@ + c second-der. That's why dimension for buf2(ndim,*,*,*,*) has ndim=4 + c for first- and ndim=10 for second-derivatives. + c +- common /logic4/ nfu(1) +- common /logic9/ nia(3,1) +- common /logic10/ nmxyz(3,1) +- common /logic11/ npxyz(3,1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + cccc dimension buf2(4,nbls,lnijr,lnklr,ngcd) OR buf2(10,etc.) + c2002 dimension buf2(ndim,nbls,lnijr,lnklr,ngcd) +@@ -862,7 +877,9 @@ + c + implicit real*8 (a-h,o-z) + c +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter(lpar1=34) ++ common /logic4/ nfu(lpar1) + COMMON/SHELL/LSHELLT,LSHELIJ,LSHELKL,LHELP,LCAS2(4),LCAS3(4) + common /lcases/ lcase + common/obarai/ +@@ -1131,10 +1148,15 @@ + * nqij,nqkl,der2,xab) + implicit real*8 (a-h,o-z) + c +- common /logic4/ nfu(1) +- common /logic9/ nia(3,1) +- common /logic10/ nmxyz(3,1) +- common /logic11/ npxyz(3,1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + c2002 dimension buf2(10,nbls,lnijr,lnklr,ngcd) + dimension buf2(nbls,lnijr,lnklr,ngcd,10) +@@ -1386,10 +1408,15 @@ + * nqij,nqkl, + * nder_aa,der2) + implicit real*8 (a-h,o-z) +- common /logic4/ nfu(1) +- common /logic9/ nia(3,1) +- common /logic10/ nmxyz(3,1) +- common /logic11/ npxyz(3,1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + dimension buf2(nbls,lnijr,lnklr,ngcd,10) + dimension der2(45,nbls,lnij,lnkl,ngcd) +@@ -1462,10 +1489,15 @@ + * nqij,nqkl, + * nder_cc,der2) + implicit real*8 (a-h,o-z) +- common /logic4/ nfu(1) +- common /logic9/ nia(3,1) +- common /logic10/ nmxyz(3,1) +- common /logic11/ npxyz(3,1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + c2002 dimension buf2(10,nbls,lnijr,lnklr,ngcd) + dimension buf2(nbls,lnijr,lnklr,ngcd,10) +@@ -1533,10 +1565,15 @@ + * nqij,nqkl, + * nder_bb,der2,xab) + implicit real*8 (a-h,o-z) +- common /logic4/ nfu(1) +- common /logic9/ nia(3,1) +- common /logic10/ nmxyz(3,1) +- common /logic11/ npxyz(3,1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + c2002 dimension buf2(10,nbls,lnijr,lnklr,ngcd) + dimension buf2(nbls,lnijr,lnklr,ngcd,10) +@@ -1592,10 +1629,15 @@ + * nqij,nqkl, + * nder_ab,der2,xab) + implicit real*8 (a-h,o-z) +- common /logic4/ nfu(1) +- common /logic9/ nia(3,1) +- common /logic10/ nmxyz(3,1) +- common /logic11/ npxyz(3,1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + c2002 dimension buf2(10,nbls,lnijr,lnklr,ngcd) + dimension buf2(nbls,lnijr,lnklr,ngcd,10) +@@ -1668,10 +1710,15 @@ + * nqij,nqkl, + * nder_ac,der2) + implicit real*8 (a-h,o-z) +- common /logic4/ nfu(1) +- common /logic9/ nia(3,1) +- common /logic10/ nmxyz(3,1) +- common /logic11/ npxyz(3,1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + c2002 dimension buf2(10,nbls,lnijr,lnklr,ngcd) + dimension buf2(nbls,lnijr,lnklr,ngcd,10) +@@ -1742,10 +1789,15 @@ + * nqij,nqkl, + * nder_bc,der2,xab) + implicit real*8 (a-h,o-z) +- common /logic4/ nfu(1) +- common /logic9/ nia(3,1) +- common /logic10/ nmxyz(3,1) +- common /logic11/ npxyz(3,1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + c2002 dimension buf2(10,nbls,lnijr,lnklr,ngcd) + dimension buf2(nbls,lnijr,lnklr,ngcd,10) +Index: src/NWints/texas/gencon.f +=================================================================== +--- src/NWints/texas/gencon.f (revision 28366) ++++ src/NWints/texas/gencon.f (working copy) +@@ -388,7 +388,15 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,mmax, + * nqi,nqj,nqk,nql,nsij,nskl, + * nqij,nqij1,nsij1,nqkl,nqkl1,nskl1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension buf2(nbls,lt1,lt2,ngcd) +@@ -466,7 +474,15 @@ + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg + c +- common /logic4/ nfu(1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) +@@ -579,7 +595,15 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,mmax, + * nqi,nqj,nqk,nql,nsij,nskl, + * nqij,nqij1,nsij1,nqkl,nqkl1,nskl1,ijbeg,klbeg +- common /logic4/ nfu(1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + dimension indx(*) + dimension xt1(nbls1,lt1,lt2) + dimension gcoef(nbls,ngcd) +Index: src/NWints/texas/shells.f +=================================================================== +--- src/NWints/texas/shells.f (revision 28366) ++++ src/NWints/texas/shells.f (working copy) +@@ -5,7 +5,12 @@ + common /contr/ ngci,ngcj,ngck,ngcl,lci,lcj,lck,lcl,lcij,lckl + common /lengt/ ilen,jlen,klen,llen, ilen1,jlen1,klen1,llen1 + common /gcont/ ngci1,ngcj1,ngck1,ngcl1,ngcd +- common /logic2/ len(1) ++ integer lpar1,lpar4,lpar5 ++ parameter(lpar1=34,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) + dimension inx(12,*) + c + c This subroutine sets up TYPE and LENGTH of shells and +@@ -93,10 +98,12 @@ + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg + C +- common /logic1/ ndege(1) +- common /logic2/ len(1) +- common /logic3/ lensm(1) +- common /logic4/ nfu(1) ++ integer lpar1,lpar4,lpar5 ++ parameter(lpar1=34,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) + c + COMMON/SHELL/LSHELLT,LSHELIJ,LSHELKL,LHELP,LCAS2(4),LCAS3(4) + common /lcases/ lcase +@@ -237,7 +244,15 @@ + * lni,lnj,lnk,lnl,lnij,lnkl,lnijkl,MMAX, + * NQI,NQJ,NQK,NQL,NSIJ,NSKL, + * NQIJ,NQIJ1,NSIJ1,NQKL,NQKL1,NSKL1,ijbeg,klbeg +- common /logic3/ lensm(1) ++ integer lpar1,lpar2,lpar3,lpar4,lpar5 ++ parameter(lpar1=34,lpar2=6545,lpar3=4060,lpar4=10,lpar5=33) ++ common /logic1/ ndege(lpar4) ++ common /logic2/ len(lpar4) ++ common /logic3/ lensm(lpar5) ++ common /logic4/ nfu(lpar1) ++ common /logic9/ nia(3,lpar2) ++ common /logic10/ nmxyz(3,lpar2) ++ common /logic11/ npxyz(3,lpar3) + c + C************************************************************ + c +Index: src/NWints/texas/zeroint.f +=================================================================== +--- src/NWints/texas/zeroint.f (revision 28366) ++++ src/NWints/texas/zeroint.f (working copy) +@@ -12,7 +12,9 @@ + character*11 scftype + character*8 where + common /runtype/ scftype,where +- common /logic4/ nfu(1) ++ integer lpar1 ++ parameter (lpar1=34) ++ common /logic4/ nfu(lpar1) + COMMON/SHELL/LSHELLT,LSHELIJ,LSHELKL,LHELP,LCAS2(4),LCAS3(4) + common /lcases/ lcase + common/obarai/ diff --git a/var/spack/repos/builtin/packages/nwchem/xccvs98.patch b/var/spack/repos/builtin/packages/nwchem/xccvs98.patch new file mode 100755 index 0000000000..2a62664978 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/xccvs98.patch @@ -0,0 +1,54 @@ +Index: src/nwdft/xc/xc_cvs98.F +=================================================================== +--- src/nwdft/xc/xc_cvs98.F (revision 27970) ++++ src/nwdft/xc/xc_cvs98.F (revision 27971) +@@ -160,12 +160,10 @@ + GAA = ( delrho(n,1,1)*delrho(n,1,1) + + & delrho(n,2,1)*delrho(n,2,1) + + & delrho(n,3,1)*delrho(n,3,1))/4.0d0 +- if(sqrt(gaa).lt.dtol) goto 20 + c In the bc95css subroutine, we use 2*TA as the tau, so we do not divide + c the tau by 2 here + + TA = tau(n,1) +- if(ta.lt.dtol) goto 20 + + Call vs98ss(tol_rho,PA,GAA,TA,FA,FPA,FGA,FTA,EUA,ZA, + & ChiA,EUPA,ChiAP,ChiAG,ZAP,ZAT,ijzy) +@@ -213,7 +211,6 @@ + c In the bc95css subroutine, we use 2*TA as the tau + c + TA = tau(n,1)*2.0d0 +- if(ta.lt.dtol) goto 25 + + Call vs98ss(tol_rho,PA,GAA,TA,FA,FPA,FGA,FTA,EUA,ZA, + & ChiA,EUPA,ChiAP,ChiAG,ZAP,ZAT,ijzy) +@@ -235,7 +232,6 @@ + c + 25 continue + PB = rho(n,3) +- if(PB.le.DTol) go to 30 + GBB = delrho(n,1,2)*delrho(n,1,2) + + & delrho(n,2,2)*delrho(n,2,2) + + & delrho(n,3,2)*delrho(n,3,2) +@@ -242,7 +238,6 @@ + + TB = tau(n,2)*2.0d0 + +- if(tb.lt.dtol) goto 30 + Call vs98ss(tol_rho,PB,GBB,TB,FB,FPB,FGB,FTB,EUB,ZB, + & ChiB,EUPB,ChiBP,ChiBG,ZBP,ZBT,ijzy) + Ec = Ec + FB*qwght(n) +@@ -378,10 +373,9 @@ + else + call errquit("vs98ss: illegal value of ijzy",ijzy,UERR) + endif +-couch +-c DTol =1.0d-7 ++ + dtol=tol_rho +- If(PX.le.DTol) then ++ If(PX.le.DTol.or.gx.le.dtol.or.tx.le.dtol) then + EUEG = Zero + Chi = Zero + EUEGP = Zero diff --git a/var/spack/repos/builtin/packages/nwchem/zgesdv.patch b/var/spack/repos/builtin/packages/nwchem/zgesdv.patch new file mode 100755 index 0000000000..4e3b76c197 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/zgesdv.patch @@ -0,0 +1,55 @@ +Index: src/64to32blas/xgesvd.F +=================================================================== +--- src/64to32blas/xgesvd.F (revision 0) ++++ src/64to32blas/xgesvd.F (revision 28050) +@@ -0,0 +1,25 @@ ++ SUBROUTINE XGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, ++ $ VT, LDVT, WORK, LWORK, RWORK, INFO ) ++* $Id: ygesvd.F 19697 2010-10-29 16:57:34Z d3y133 $ ++ implicit none ++#include "y64.fh" ++ CHARACTER JOBU, JOBVT ++ INTEGER INFO, LDA, LDU, LDVT, LWORK, M, N ++ DOUBLE PRECISION A( LDA, * ), S( * ), U( LDU, * ), ++ $ VT( LDVT, * ), WORK( * ), RWORK(*) ++c ++ INTGR4 INFO4, LDA4, LDU4, LDVT4, LWORK4, M4, N4 ++c ++ lda4=lda ++ ldu4=ldu ++ ldvt4=ldvt ++ m4=m ++ n4=n ++ lwork4=lwork ++c ++ call ZGESVD( JOBU, JOBVT, M4, N4, A, LDA4, S, U, LDU4, ++ $ VT, LDVT4, WORK, LWORK4, RWORK, INFO4 ) ++ info=info4 ++ ++ RETURN ++ END +Index: src/64to32blas/GNUmakefile +=================================================================== +--- src/64to32blas/GNUmakefile (revision 28049) ++++ src/64to32blas/GNUmakefile (revision 28050) +@@ -10,7 +10,7 @@ + ypotri.o ypotrf.o ysygv.o ygeev.o ygeevx.o \ + ifily.o\ + xscal.o xaxpy.o xgemm.o xheev.o xcopy.o xdotc.o \ +- ixamax.o ++ ixamax.o xgesvd.o + + ifeq ($(BLAS_SIZE),8) + LIB_DEFINES += -DUSE_INTEGER8 +Index: src/config/data.64_to_32 +=================================================================== +--- src/config/data.64_to_32 (revision 28049) ++++ src/config/data.64_to_32 (revision 28050) +@@ -50,6 +50,7 @@ + zdotc xdotc + zdscal xsscal + zgemm xgemm ++zgesvd xgesvd + zgemv xgemv + zgerc xgerc + zhemm xhemm -- cgit v1.2.3-60-g2f50 From bdc825fc3c779b7c15785ca8fadc342c4a3d2cef Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 23 Aug 2016 09:59:56 -0400 Subject: cddlib: Point download url to a (more reliable) Fedora server --- var/spack/repos/builtin/packages/cddlib/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cddlib/package.py b/var/spack/repos/builtin/packages/cddlib/package.py index bec3030e25..3d32f5961f 100644 --- a/var/spack/repos/builtin/packages/cddlib/package.py +++ b/var/spack/repos/builtin/packages/cddlib/package.py @@ -31,7 +31,8 @@ class Cddlib(Package): and extreme rays of a general convex polyhedron in R^d given by a system of linear inequalities""" homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/" - url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-094h.tar.gz" + # url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-094h.tar.gz" + url = "http://pkgs.fedoraproject.org/lookaside/pkgs/cddlib/cddlib-094h.tar.gz/1467d270860bbcb26d3ebae424690e7c/cddlib-094h.tar.gz" version('094h', '1467d270860bbcb26d3ebae424690e7c') -- cgit v1.2.3-60-g2f50 From a2692e4ef5039cac02d9814d70ed53b3d015e738 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 23 Aug 2016 10:41:08 -0400 Subject: sympol: Add package --- .../builtin/packages/sympol/lrs_mp_close.patch | 10 +++++ var/spack/repos/builtin/packages/sympol/package.py | 46 ++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sympol/lrs_mp_close.patch create mode 100644 var/spack/repos/builtin/packages/sympol/package.py diff --git a/var/spack/repos/builtin/packages/sympol/lrs_mp_close.patch b/var/spack/repos/builtin/packages/sympol/lrs_mp_close.patch new file mode 100644 index 0000000000..503a61ff65 --- /dev/null +++ b/var/spack/repos/builtin/packages/sympol/lrs_mp_close.patch @@ -0,0 +1,10 @@ +--- old/sympol/raycomputationlrs.cpp ++++ new/sympol/raycomputationlrs.cpp +@@ -66,7 +66,6 @@ + return true; + } + +- lrs_mp_close(); + + if (RayComputationLRS::ms_fIn != NULL) { + if (std::fclose(RayComputationLRS::ms_fIn)) { diff --git a/var/spack/repos/builtin/packages/sympol/package.py b/var/spack/repos/builtin/packages/sympol/package.py new file mode 100644 index 0000000000..22cadb137b --- /dev/null +++ b/var/spack/repos/builtin/packages/sympol/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Sympol(Package): + """SymPol is a C++ tool to work with symmetric polyhedra""" + homepage = "http://www.math.uni-rostock.de/~rehn/software/sympol.html" + url = "http://www.math.uni-rostock.de/~rehn/software/sympol-0.1.8.tar.gz" + + version('0.1.8', '7cba1997f8532c754cb7259bf70caacb') + + depends_on("bliss") + depends_on("boost") + depends_on("cmake") + depends_on("gmp") + depends_on("lrslib") + + patch("lrs_mp_close.patch") + + def install(self, spec, prefix): + cmake(".", *std_cmake_args) + make() + make("install") -- cgit v1.2.3-60-g2f50 From 6500ac80e4016d540414e131a634e96ac66977e7 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 23 Aug 2016 16:46:40 +0200 Subject: nwchem: fix lapack detection --- var/spack/repos/builtin/packages/nwchem/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 16e575d576..3e5d37145d 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -75,6 +75,8 @@ class Nwchem(Package): 'BLASOPT=%s %s' % ( to_link_flags(spec['lapack'].lapack_shared_lib), to_link_flags(spec['blas'].blas_shared_lib)), + 'BLAS_LIB=%s' % to_link_flags(spec['blas'].blas_shared_lib), + 'LAPACK_LIB=%s' % to_link_flags(spec['lapack'].lapack_shared_lib), 'USE_SCALAPACK=y', 'SCALAPACK=%s' % spec['scalapack'].fc_link, 'NWCHEM_MODULES=all', @@ -90,11 +92,13 @@ class Nwchem(Package): args.extend([ 'USE_64TO32=y', 'BLAS_SIZE=4', + 'LAPACK_SIZE=4', 'SCALAPACK_SIZE=4' ]) else: args.extend([ 'BLAS_SIZE=8', + 'LAPACK_SIZE=8' 'SCALAPACK_SIZE=8' ]) -- cgit v1.2.3-60-g2f50 From 243d516bf029287158903e88985442d8581d0adf Mon Sep 17 00:00:00 2001 From: David Beckingsale Date: Tue, 23 Aug 2016 08:18:26 -0700 Subject: Ensure RAJA builds out-of-source --- var/spack/repos/builtin/packages/raja/package.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index e9db4b4fc8..dccf9a581c 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -32,6 +32,7 @@ class Raja(Package): version('git', git='https://github.com/LLNL/RAJA.git', branch="master") def install(self, spec, prefix): - cmake('.', *std_cmake_args) - make() - make('install') + with working_dir('build', create=True): + cmake('..', *std_cmake_args) + make() + make('install') -- cgit v1.2.3-60-g2f50 From 52ae0ea0555d0d3ace32a2442e1da2ab1fd72669 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 23 Aug 2016 18:48:17 +0200 Subject: trilinos: use version.dashed --- var/spack/repos/builtin/packages/trilinos/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 6537b1c2cf..3a88f67340 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -58,7 +58,7 @@ class Trilinos(Package): def url_for_version(self, version): return '%s/trilinos-release-%s.tar.gz' % \ - (Trilinos.base_url, str(version).replace('.', '-')) + (Trilinos.base_url, version.dashed) variant('metis', default=True, description='Compile with METIS and ParMETIS') -- cgit v1.2.3-60-g2f50 From 73cae8d9c4c568f50fee2829d87b31c0361ce792 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 23 Aug 2016 13:52:28 -0400 Subject: Implement review requests - use two empty lines before `class` - change version numbering scheme for packages, use `url_for_version` to make things work - specify dependency types - add comment about temporarily moved download location - update two packages to newer versions --- var/spack/repos/builtin/packages/bliss/package.py | 3 ++- var/spack/repos/builtin/packages/cdd/package.py | 9 +++++++-- var/spack/repos/builtin/packages/cddlib/package.py | 17 ++++++++++++++--- var/spack/repos/builtin/packages/lrslib/package.py | 16 ++++++++++------ var/spack/repos/builtin/packages/nauty/package.py | 12 +++++++++--- var/spack/repos/builtin/packages/panda/package.py | 5 +++-- var/spack/repos/builtin/packages/polymake/package.py | 2 ++ var/spack/repos/builtin/packages/porta/package.py | 3 ++- var/spack/repos/builtin/packages/sympol/package.py | 1 + 9 files changed, 50 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/bliss/package.py b/var/spack/repos/builtin/packages/bliss/package.py index 16029ac012..a81a806807 100644 --- a/var/spack/repos/builtin/packages/bliss/package.py +++ b/var/spack/repos/builtin/packages/bliss/package.py @@ -25,6 +25,7 @@ from spack import * + class Bliss(Package): """bliss: A Tool for Computing Automorphism Groups and Canonical Labelings of Graphs""" @@ -37,7 +38,7 @@ class Bliss(Package): # Note: Bliss can also be built without gmp, but we don't support this yet depends_on("gmp") - depends_on("libtool") + depends_on("libtool", type='build') patch("Makefile.spack.patch") diff --git a/var/spack/repos/builtin/packages/cdd/package.py b/var/spack/repos/builtin/packages/cdd/package.py index f48af165fa..8896942bae 100644 --- a/var/spack/repos/builtin/packages/cdd/package.py +++ b/var/spack/repos/builtin/packages/cdd/package.py @@ -25,6 +25,7 @@ from spack import * + class Cdd(Package): """The program cdd+ (cdd, respectively) is a C++ (ANSI C) implementation of the Double Description Method [MRTT53] for @@ -34,9 +35,13 @@ class Cdd(Package): homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/cdd.html" url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cdd-061a.tar.gz" - version('061a', '22c24a7a9349dd7ec0e24531925a02d9') + def url_for_version(self, version): + return ("ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cdd-%s.tar.gz" % + str(version.dotted()).replace('.', '')) + + version('0.61a', '22c24a7a9349dd7ec0e24531925a02d9') - depends_on("libtool") + depends_on("libtool", type="build") patch("Makefile.spack.patch") diff --git a/var/spack/repos/builtin/packages/cddlib/package.py b/var/spack/repos/builtin/packages/cddlib/package.py index 3d32f5961f..7454c0bb84 100644 --- a/var/spack/repos/builtin/packages/cddlib/package.py +++ b/var/spack/repos/builtin/packages/cddlib/package.py @@ -25,21 +25,32 @@ from spack import * + class Cddlib(Package): - """The C-library cddlib is a C implementation of the Double Description + """The C-library cddlib is a C implementation of the Double Description Method of Motzkin et al. for generating all vertices (i.e. extreme points) and extreme rays of a general convex polyhedron in R^d given by a system of linear inequalities""" homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/" + # This is the original download url. It is currently down [2016-08-23], + # but should be reinstated or updated once the issue is resolved. # url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-094h.tar.gz" url = "http://pkgs.fedoraproject.org/lookaside/pkgs/cddlib/cddlib-094h.tar.gz/1467d270860bbcb26d3ebae424690e7c/cddlib-094h.tar.gz" - version('094h', '1467d270860bbcb26d3ebae424690e7c') + def url_for_version(self, version): + # Since the commit id is part of the version, we can't + # auto-generate the string, and we need to explicitly list all + # known versions here. Currently, there is only one version. + if str(version) == '0.94h': + return "http://pkgs.fedoraproject.org/lookaside/pkgs/cddlib/cddlib-094h.tar.gz/1467d270860bbcb26d3ebae424690e7c/cddlib-094h.tar.gz" + raise InstallError("Unsupported version %s" % str(version)) + + version('0.94h', '1467d270860bbcb26d3ebae424690e7c') # Note: It should be possible to build cddlib also without gmp depends_on("gmp") - depends_on("libtool") + depends_on("libtool", type="build") def install(self, spec, prefix): configure("--prefix=%s" % prefix) diff --git a/var/spack/repos/builtin/packages/lrslib/package.py b/var/spack/repos/builtin/packages/lrslib/package.py index 9f02d7c979..b56333541f 100644 --- a/var/spack/repos/builtin/packages/lrslib/package.py +++ b/var/spack/repos/builtin/packages/lrslib/package.py @@ -25,24 +25,28 @@ from spack import * + class Lrslib(Package): """lrslib Ver 6.2 is a self-contained ANSI C implementation of the reverse search algorithm for vertex enumeration/convex hull problems and comes with a choice of three arithmetic packages""" homepage = "http://cgm.cs.mcgill.ca/~avis/C/lrs.html" url = "http://cgm.cs.mcgill.ca/~avis/C/lrslib/archive/lrslib-062.tar.gz" + def url_for_version(self, version): + return ("http://cgm.cs.mcgill.ca/~avis/C/lrslib/archive/lrslib-%s.tar.gz" % + ('0' + str(version).replace('.', ''))) - version('062', 'be5da7b3b90cc2be628dcade90c5d1b9') - version('061', '0b3687c8693cd7d1f234a3f65e147551') - version('060', 'd600a2e62969ad03f7ab2f85f1b3709c') - version('051', 'cca323eee8bf76f598a13d7bf67cc13d') - version('043', '86dd9a45d20a3a0069f77e61be5b46ad') + version('6.2', 'be5da7b3b90cc2be628dcade90c5d1b9') + version('6.1', '0b3687c8693cd7d1f234a3f65e147551') + version('6.0', 'd600a2e62969ad03f7ab2f85f1b3709c') + version('5.1', 'cca323eee8bf76f598a13d7bf67cc13d') + version('4.3', '86dd9a45d20a3a0069f77e61be5b46ad') # Note: lrslib can also be built with Boost, and probably without gmp # depends_on("boost") depends_on("gmp") - depends_on("libtool") + depends_on("libtool", type="build") patch("Makefile.spack.patch") diff --git a/var/spack/repos/builtin/packages/nauty/package.py b/var/spack/repos/builtin/packages/nauty/package.py index 564855e453..167edfe896 100644 --- a/var/spack/repos/builtin/packages/nauty/package.py +++ b/var/spack/repos/builtin/packages/nauty/package.py @@ -26,14 +26,20 @@ import shutil from spack import * + class Nauty(Package): """nauty and Traces are programs for computing automorphism groups of graphsq and digraphs""" homepage = "http://pallini.di.uniroma1.it/index.html" - url = "http://pallini.di.uniroma1.it/nauty26r5.tar.gz" + url = "http://pallini.di.uniroma1.it/nauty26r7.tar.gz" + + def url_for_version(self, version): + return ("http://pallini.di.uniroma1.it/nauty%s.tar.gz" % + str(version).replace('.', '')) - version('26r5', '91b03a7b069962e94fc9aac8831ce8d2') - version('25r9', 'e8ecd08b0892a1fb13329c147f08de6d') + version('2.6r7', 'b2b18e03ea7698db3fbe06c5d76ad8fe') + version('2.6r5', '91b03a7b069962e94fc9aac8831ce8d2') + version('2.5r9', 'e8ecd08b0892a1fb13329c147f08de6d') def install(self, spec, prefix): configure('--prefix=%s' % prefix) diff --git a/var/spack/repos/builtin/packages/panda/package.py b/var/spack/repos/builtin/packages/panda/package.py index ecfe5e1170..e30c2c869d 100644 --- a/var/spack/repos/builtin/packages/panda/package.py +++ b/var/spack/repos/builtin/packages/panda/package.py @@ -25,16 +25,17 @@ from spack import * + class Panda(Package): """PANDA: Parallel AdjaceNcy Decomposition Algorithm""" homepage = "http://comopt.ifi.uni-heidelberg.de/software/PANDA/index.html" url = "http://comopt.ifi.uni-heidelberg.de/software/PANDA/downloads/current_panda.tar" - version('panda', 'b06dc312ee56e13eefea9c915b70fcef') + version('current', 'b06dc312ee56e13eefea9c915b70fcef') # Note: Panda can also be built without MPI support - depends_on("cmake") + depends_on("cmake", type="build") depends_on("mpi") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/polymake/package.py b/var/spack/repos/builtin/packages/polymake/package.py index a5c2c053ab..c0bb9082ae 100644 --- a/var/spack/repos/builtin/packages/polymake/package.py +++ b/var/spack/repos/builtin/packages/polymake/package.py @@ -25,11 +25,13 @@ from spack import * + class Polymake(Package): """polymake is open source software for research in polyhedral geometry""" homepage = "https://polymake.org/doku.php" url = "https://polymake.org/lib/exe/fetch.php/download/polymake-3.0r1.tar.bz2" + version('3.0r2', '08584547589f052ea50e2148109202ab') version('3.0r1', '63ecbecf9697c6826724d8a041d2cac0') # Note: Could also be built with nauty instead of bliss diff --git a/var/spack/repos/builtin/packages/porta/package.py b/var/spack/repos/builtin/packages/porta/package.py index a11a8d477c..b620daf78f 100644 --- a/var/spack/repos/builtin/packages/porta/package.py +++ b/var/spack/repos/builtin/packages/porta/package.py @@ -25,6 +25,7 @@ from spack import * + class Porta(Package): """PORTA is a collection of routines for analyzing polytopes and polyhedra""" @@ -33,7 +34,7 @@ class Porta(Package): version('1.4.1', '585179bf19d214ed364663a5d17bd5fc') - depends_on("libtool") + depends_on("libtool", type="build") patch("Makefile.spack.patch") diff --git a/var/spack/repos/builtin/packages/sympol/package.py b/var/spack/repos/builtin/packages/sympol/package.py index 22cadb137b..71ecc0a128 100644 --- a/var/spack/repos/builtin/packages/sympol/package.py +++ b/var/spack/repos/builtin/packages/sympol/package.py @@ -25,6 +25,7 @@ from spack import * + class Sympol(Package): """SymPol is a C++ tool to work with symmetric polyhedra""" homepage = "http://www.math.uni-rostock.de/~rehn/software/sympol.html" -- cgit v1.2.3-60-g2f50 From 05f5ba4bf9c6fa68427525301e2a42fed76d8682 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 23 Aug 2016 14:57:29 -0400 Subject: Correct flake8 errors --- var/spack/repos/builtin/packages/cddlib/package.py | 8 ++++---- var/spack/repos/builtin/packages/lrslib/package.py | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/cddlib/package.py b/var/spack/repos/builtin/packages/cddlib/package.py index 7454c0bb84..ced5f46d1f 100644 --- a/var/spack/repos/builtin/packages/cddlib/package.py +++ b/var/spack/repos/builtin/packages/cddlib/package.py @@ -27,15 +27,15 @@ from spack import * class Cddlib(Package): - """The C-library cddlib is a C implementation of the Double Description + """The C-library cddlib is a C implementation of the Double Description Method of Motzkin et al. for generating all vertices (i.e. extreme points) - and extreme rays of a general convex polyhedron in R^d given by a system + and extreme rays of a general convex polyhedron in R^d given by a system of linear inequalities""" homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/" # This is the original download url. It is currently down [2016-08-23], # but should be reinstated or updated once the issue is resolved. - # url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-094h.tar.gz" - url = "http://pkgs.fedoraproject.org/lookaside/pkgs/cddlib/cddlib-094h.tar.gz/1467d270860bbcb26d3ebae424690e7c/cddlib-094h.tar.gz" + # url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-094h.tar.gz" + url = "http://pkgs.fedoraproject.org/lookaside/pkgs/cddlib/cddlib-094h.tar.gz/1467d270860bbcb26d3ebae424690e7c/cddlib-094h.tar.gz" def url_for_version(self, version): # Since the commit id is part of the version, we can't diff --git a/var/spack/repos/builtin/packages/lrslib/package.py b/var/spack/repos/builtin/packages/lrslib/package.py index b56333541f..68a907ea59 100644 --- a/var/spack/repos/builtin/packages/lrslib/package.py +++ b/var/spack/repos/builtin/packages/lrslib/package.py @@ -32,6 +32,7 @@ class Lrslib(Package): problems and comes with a choice of three arithmetic packages""" homepage = "http://cgm.cs.mcgill.ca/~avis/C/lrs.html" url = "http://cgm.cs.mcgill.ca/~avis/C/lrslib/archive/lrslib-062.tar.gz" + def url_for_version(self, version): return ("http://cgm.cs.mcgill.ca/~avis/C/lrslib/archive/lrslib-%s.tar.gz" % ('0' + str(version).replace('.', ''))) -- cgit v1.2.3-60-g2f50 From 3194f2001b4e9061ab5e23a67a7bb2fa2b050fc1 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 23 Aug 2016 15:35:43 -0400 Subject: Update git to 2.9.3 --- var/spack/repos/builtin/packages/git/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index 3cc879088d..ed058e0a68 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -32,6 +32,13 @@ class Git(Package): homepage = "http://git-scm.com" url = "https://github.com/git/git/tarball/v2.7.1" + version('2.9.3', 'b0edfc0f3cb046aec7ed68a4b7282a75') + version('2.9.2', '3ff8a9b30fd5c99a02e6d6585ab543fc') + version('2.9.1', 'a5d806743a992300b45f734d1667ddd2') + version('2.9.0', 'bf33a13c2adc05bc9d654c415332bc65') + version('2.8.4', '86afb10254c3803894c9863fb5896bb6') + version('2.8.3', '0e19f31f96f9364fd247b8dc737dacfd') + version('2.8.2', '3d55550880af98f6e35c7f1d7c5aecfe') version('2.8.1', '1308448d95afa41a4135903f22262fc8') version('2.8.0', 'eca687e46e9750121638f258cff8317b') version('2.7.3', 'fa1c008b56618c355a32ba4a678305f6') -- cgit v1.2.3-60-g2f50 From 459b6eae1105aaeefa2f86f925caa8ccb3fcdc16 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 23 Aug 2016 22:15:38 +0200 Subject: nwchem: add another patch --- var/spack/repos/builtin/packages/nwchem/Util_getppn.patch | 15 +++++++++++++++ var/spack/repos/builtin/packages/nwchem/package.py | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/nwchem/Util_getppn.patch diff --git a/var/spack/repos/builtin/packages/nwchem/Util_getppn.patch b/var/spack/repos/builtin/packages/nwchem/Util_getppn.patch new file mode 100644 index 0000000000..5bc7607050 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/Util_getppn.patch @@ -0,0 +1,15 @@ +Index: src/util/util_getppn.c +=================================================================== +--- src/util/util_getppn.c (revision 27443) ++++ src/util/util_getppn.c (working copy) +@@ -32,7 +33,9 @@ + void FATR util_getppn_(Integer *ppn_out){ + + #if defined(__bgq__) +- *ppn_out = Kernel_ProcessCount(); ++ *ppn_out = (Integer) Kernel_ProcessCount(); ++ return; ++ if(0) { + #elif MPI_VERSION >= 3 + + int err; diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 3e5d37145d..06816429f5 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -59,7 +59,7 @@ class Nwchem(Package): patch('tddft_mxvec20.patch', when='@6.6', level=0) patch('tools_lib64.patch', when='@6.6', level=0) patch('txs_gcc6.patch', when='@6.6', level=0) - # patch('util_getppn.patch', when='@6.6', level=0) # FAILS + patch('Util_getppn.patch', when='@6.6', level=0) patch('xccvs98.patch', when='@6.6', level=0) patch('zgesdv.patch', when='@6.6', level=0) -- cgit v1.2.3-60-g2f50 From dae219d5c3b08e50f04c14508638a3ba30f3b615 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 23 Aug 2016 22:24:16 +0200 Subject: nwchem: add another patch --- .../builtin/packages/nwchem/Gcc6_macs_optfix.patch | 40 ++++++++++++++++++++++ var/spack/repos/builtin/packages/nwchem/package.py | 1 + 2 files changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nwchem/Gcc6_macs_optfix.patch diff --git a/var/spack/repos/builtin/packages/nwchem/Gcc6_macs_optfix.patch b/var/spack/repos/builtin/packages/nwchem/Gcc6_macs_optfix.patch new file mode 100644 index 0000000000..6d903923b5 --- /dev/null +++ b/var/spack/repos/builtin/packages/nwchem/Gcc6_macs_optfix.patch @@ -0,0 +1,40 @@ +Index: src/config/makefile.h +=================================================================== +--- src/config/makefile.h (revision 28470) ++++ src/config/makefile.h (revision 28471) +@@ -910,6 +910,7 @@ + GNUMINOR=$(shell $(FC) -dM -E - < /dev/null 2> /dev/null | egrep __VERS | cut -c24) + GNU_GE_4_6 = $(shell [ $(GNUMAJOR) -gt 4 -o \( $(GNUMAJOR) -eq 4 -a $(GNUMINOR) -ge 6 \) ] && echo true) + GNU_GE_4_8 = $(shell [ $(GNUMAJOR) -gt 4 -o \( $(GNUMAJOR) -eq 4 -a $(GNUMINOR) -ge 8 \) ] && echo true) ++ GNU_GE_6 = $(shell [ $(GNUMAJOR) -ge 6 ] && echo true) + endif + ifeq ($(GNU_GE_4_6),true) + DEFINES += -DGCC46 +@@ -921,6 +922,9 @@ + + FOPTIONS += -Warray-bounds + endif ++ ifeq ($(GNU_GE_6),true) ++ FOPTIMIZE += -fno-tree-dominator-opts # solvation/hnd_cosmo_lib breaks ++ endif + ifdef USE_OPENMP + FOPTIONS += -fopenmp + LDOPTIONS += -fopenmp +@@ -1067,6 +1071,7 @@ + GNUMINOR=$(shell $(FC) -dM -E - < /dev/null 2> /dev/null | egrep __VERS | cut -c24) + GNU_GE_4_6 = $(shell [ $(GNUMAJOR) -gt 4 -o \( $(GNUMAJOR) -eq 4 -a $(GNUMINOR) -ge 6 \) ] && echo true) + GNU_GE_4_8 = $(shell [ $(GNUMAJOR) -gt 4 -o \( $(GNUMAJOR) -eq 4 -a $(GNUMINOR) -ge 8 \) ] && echo true) ++ GNU_GE_6 = $(shell [ $(GNUMAJOR) -ge 6 ] && echo true) + ifeq ($(GNU_GE_4_6),true) + DEFINES += -DGCC46 + endif +@@ -1076,6 +1081,9 @@ + #gone FFLAGS_FORGA += -fno-aggressive-loop-optimizations + FOPTIONS += -Warray-bounds + endif # GNU_GE_4_8 ++ ifeq ($(GNU_GE_6),true) ++ FOPTIMIZE += -fno-tree-dominator-opts # solvation/hnd_cosmo_lib breaks ++ endif + endif # GNUMAJOR + + ifdef USE_OPENMP diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 06816429f5..43619c143a 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -62,6 +62,7 @@ class Nwchem(Package): patch('Util_getppn.patch', when='@6.6', level=0) patch('xccvs98.patch', when='@6.6', level=0) patch('zgesdv.patch', when='@6.6', level=0) + patch('Gcc6_macs_optfix.patch', when='@6.6', level=0) def install(self, spec, prefix): # see http://www.nwchem-sw.org/index.php/Compiling_NWChem -- cgit v1.2.3-60-g2f50 From 2efd7a5e0b672eafb40fea74da434590f0362e66 Mon Sep 17 00:00:00 2001 From: citibeth Date: Sun, 27 Mar 2016 15:22:52 -0400 Subject: Added note on use of 'less -R' for colorized output. --- lib/spack/docs/basic_usage.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index a42d941791..a5478d10c2 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -6,6 +6,15 @@ Basic usage The ``spack`` command has many *subcommands*. You'll only need a small subset of them for typical usage. +Note that Spack colorizes output. ``less -R`` should be used with +Spack to maintian this colorization. Eg:: + + spack find | less -R + +It is recommend that the following be put in your ``.bashrc`` file:: + + alias less='less -R' + Listing available packages ------------------------------ -- cgit v1.2.3-60-g2f50 From 86d39255ecd2260fd3fbe015986c855403c17f48 Mon Sep 17 00:00:00 2001 From: Elizabeth F Date: Tue, 5 Apr 2016 10:53:44 -0400 Subject: Explained url_for_version() --- lib/spack/spack/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index ff8c8e96bc..8c1204402a 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -143,8 +143,10 @@ class Package(object): informational URL, so that users know what they're installing. - url - URL of the source archive that spack will fetch. + url or url_for_version(self, version) + If url, then the URL of the source archive that spack will fetch. + If url_for_version(), then a method returning the URL required + to fetch a particular version. install() This function tells spack how to build and install the -- cgit v1.2.3-60-g2f50 From 8a481e7e13c923726088a38a957f248fa69938d2 Mon Sep 17 00:00:00 2001 From: citibeth Date: Wed, 20 Apr 2016 13:17:56 -0400 Subject: Added CMake-based Development case study to docuemntation. --- lib/spack/docs/case_studies.rst | 167 ++++++++++++++++++++++++++++++++++++++++ lib/spack/docs/index.rst | 1 + 2 files changed, 168 insertions(+) create mode 100644 lib/spack/docs/case_studies.rst diff --git a/lib/spack/docs/case_studies.rst b/lib/spack/docs/case_studies.rst new file mode 100644 index 0000000000..bcd754fdcd --- /dev/null +++ b/lib/spack/docs/case_studies.rst @@ -0,0 +1,167 @@ +Using Spack for CMake-based Development +========================================== + +These are instructions on how to use Spack to aid in the development +of a CMake-based project. Spack is used to help find the dependencies +for the project, configure it at development time, and then package it +it in a way that others can install. Using Spack for CMake-based +development consists of three parts: + +1. Setting up the CMake build in your software +2. Writing the Spack Package +3. Using it from Spack. + + +Setting Up the CMake Build +--------------------------------------- + +You should follow standard CMake conventions in setting up your +software, your CMake build should NOT depend on or require Spack to +build. See here for an example: + https://github.com/citibeth/icebin + +Note that there's one exception here to the rule I mentioned above. +In ``CMakeLists.txt``, I have the following line:: + + include_directories($ENV{CMAKE_TRANSITIVE_INCLUDE_PATH}) + + +This is a hook into Spack, and it ensures that all transitive +dependencies are included in the include path. It's not needed if +everything is in one tree, but it is (sometimes) in the Spack world; +when running without Spack, it has no effect. + +Note that this "feature" is controversial, could break with future +versions of GNU ld, and probably not the best to use. The best +practice is that you make sure that anything you #include is listed as +a dependency in your CMakeLists.txt. + +To be more specific: if you #inlcude something from package A and an +installed HEADER FILE in A #includes something from package B, then +you should also list B as a dependency in your CMake build. If you +depend on A but header files exported by A do NOT #include things from +B, then you do NOT need to list B as a dependency --- even if linking +to A links in libB.so as well. + +I also recommend that you set up your CMake build to use RPATHs +correctly. Not only is this a good idea and nice, but it also ensures +that your package will build the same with or without ``spack +install``. + +Writing the Spack Package +--------------------------------------- + +Now that you have a CMake build, you want to tell Spack how to +configure it. This is done by writing a Spack package for your +software. See here for example: + https://github.com/citibeth/spack/blob/efischer/develop/var/spack/repos/builtin/packages/icebin/package.py + +You need to subclass ``CMakePackage``, as is done in this example. +This enables advanced features of Spack for helping you in configuring +your software (keep reading...). Instead of an ``install()`` method +used when subclassing ``Package``, you write ``configure_args()``. +See here for more info on how this works: + https://github.com/LLNL/spack/pull/543/files + +NOTE: if your software is not publicly available, you do not need to +set the URL or version. Or you can set up bogus URLs and +versions... whatever causes Spack to not crash. + + +Using it from Spack +-------------------------------- + +Now that you have a Spack package, you can get Spack to setup your +CMake project for you. Use the following to setup, configure and +build your project:: + + cd myproject + spack spconfig myproject@local + mkdir build; cd build + ../spconfig.py .. + make + make install + + +Everything here should look pretty familiar here from a CMake +perspective, except that ``spack spconfig`` creates the file +``spconfig.py``, which calls CMake with arguments appropriate for your +Spack configuration. Think of it as the equivalent to running a bunch +of ``spack location -i`` commands. You will run ``spconfig.py`` +instead of running CMake directly. + +If your project is publicly available (eg on GitHub), then you can +ALSO use this setup to "just install" a release version without going +through the manual configuration/build step. Just do: + +1. Put tag(s) on the version(s) in your GitHub repo you want to be release versions. + +2. Set the ``url`` in your ``package.py`` to download a tarball for + the appropriate version. (GitHub will give you a tarball for any + version in the repo, if you tickle it the right way). For example:: + + https://github.com/citibeth/icebin/tarball/v0.1.0 + + Set up versions as appropriate in your ``package.py``. (Manually + download the tarball and run ``md5sum`` to determine the + appropriate checksum for it). + +3. Now you should be able to say ``spack install myproject@version`` + and things "just work." + +NOTE... in order to use the features outlined in this post, you +currently need to use the following branch of Spack: + https://github.com/citibeth/spack/tree/efischer/develop + +There is a pull request open on this branch ( +https://github.com/LLNL/spack/pull/543 ) and we are working to get it +integrated into the main ``develop`` branch. + + +Activating your Software +------------------------------------- + +Once you've built your software, you will want to load it up. You can +use ``spack load mypackage@local`` for that in your ``.bashrc``, but +that is slow. Try stuff like the following instead: + +The following command will load the Spack-installed packages needed +for basic Python use of IceBin:: + + module load `spack module find tcl icebin netcdf cmake@3.5.1` + module load `spack module find --dependencies tcl py-basemap py-giss` + + +You can speed up shell startup by turning these into ``module load`` commands. + +1. Cut-n-paste the script ``make_spackenv``:: + + #!/bin/sh + # + # Generate commands to load the Spack environment + + SPACKENV=$HOME/spackenv.sh + + spack module find --shell tcl git icebin@local ibmisc netcdf cmake@3.5.1 >$SPACKENV + spack module find --dependencies --shell tcl py-basemap py-giss >>$SPACKENV + +2. Add the following to your ``.bashrc`` file:: + + source $HOME/spackenv.sh + # Preferentially use your checked-out Python source + export PYTHONPATH=$HOME/icebin/pylib:$PYTHONPATH + +3. Run ``sh make_spackenv`` whenever your Spack installation changes (including right now). + + +Giving Back +------------------- + +If your software is publicly available, you should submit the +``package.py`` for it as a pull request to the main Spack GitHub +project. This will ensure that anyone can install your software +(almost) painlessly with a simple ``spack install`` command. See here +for how that has turned into detailed instructions that have +successfully enabled collaborators to install complex software: + + https://github.com/citibeth/icebin/blob/develop/README.rst diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index 98ed9ff0fe..a5bbd4e23b 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -49,6 +49,7 @@ Table of Contents mirrors configuration developer_guide + case_studies command_index package_list API Docs -- cgit v1.2.3-60-g2f50 From 6d2d5806b5ebfbbf75490ead40f6041026ea95e7 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 24 Aug 2016 13:40:02 +0200 Subject: nwchem: add python module --- var/spack/repos/builtin/packages/nwchem/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 43619c143a..0dcd249f74 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -40,7 +40,7 @@ class Nwchem(Package): depends_on('mpi') depends_on('scalapack') - depends_on('python@2.7:2.8', type='build') + depends_on('python@2.7:2.8', type=nolink) # patches for 6.6-27746: # TODO: add support for achived patches, i.e. @@ -73,6 +73,7 @@ class Nwchem(Package): 'MPI_LOC=%s' % spec['mpi'].prefix, 'USE_PYTHONCONFIG=y', 'PYTHONVERSION=%s' % spec['python'].version.up_to(2), + 'PYTHONHOME=%s' % spec['python'].prefix, 'BLASOPT=%s %s' % ( to_link_flags(spec['lapack'].lapack_shared_lib), to_link_flags(spec['blas'].blas_shared_lib)), @@ -80,7 +81,7 @@ class Nwchem(Package): 'LAPACK_LIB=%s' % to_link_flags(spec['lapack'].lapack_shared_lib), 'USE_SCALAPACK=y', 'SCALAPACK=%s' % spec['scalapack'].fc_link, - 'NWCHEM_MODULES=all', + 'NWCHEM_MODULES=all python', 'NWCHEM_LONG_PATHS=Y' # by default NWCHEM_TOP is 64 char max ]) -- cgit v1.2.3-60-g2f50 From d154f151aa3a8d79dd19d3c63dc1ea185e72ffc4 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 24 Aug 2016 15:50:58 +0200 Subject: py-cclib: new package --- .../repos/builtin/packages/py-cclib/package.py | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-cclib/package.py diff --git a/var/spack/repos/builtin/packages/py-cclib/package.py b/var/spack/repos/builtin/packages/py-cclib/package.py new file mode 100644 index 0000000000..33b1d25c7e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-cclib/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PyCclib(Package): + """Open source library for parsing and interpreting the results of + computational chemistry packages""" + + homepage = "https://cclib.github.io/" + url = "https://github.com/cclib/cclib/releases/download/v1.5/cclib-1.5.tar.gz" + + version('1.5', 'c06940101c4796bce82036b13fecb73c') + + extends('python') + + depends_on('py-numpy@1.5:', type=nolink) + + def install(self, spec, prefix): + setup_py('install', '--prefix={0}'.format(prefix)) -- cgit v1.2.3-60-g2f50 From 41750ce70d698240d00603e66b8053f45a8b6dd5 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 24 Aug 2016 10:45:13 -0400 Subject: Update cmake to 3.6.1 --- var/spack/repos/builtin/packages/cmake/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 90a7c20d19..6b46d8a9ae 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -31,6 +31,7 @@ class Cmake(Package): homepage = 'https://www.cmake.org' url = 'https://cmake.org/files/v3.4/cmake-3.4.3.tar.gz' + version('3.6.1', 'd6dd661380adacdb12f41b926ec99545') version('3.6.0', 'aa40fbecf49d99c083415c2411d12db9') version('3.5.2', '701386a1b5ec95f8d1075ecf96383e02') version('3.5.1', 'ca051f4a66375c89d1a524e726da0296') -- cgit v1.2.3-60-g2f50 From 5970b7a00ab3c831ab3cae2307d4b15b486fac9a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 10:34:20 -0500 Subject: Only run tests if explicitly requested --- var/spack/repos/builtin/packages/fftw/package.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 37d272e9c9..3069e39226 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -79,21 +79,25 @@ class Fftw(Package): configure(*options) make() - make("check") + if self.run_tests: + make("check") make("install") if '+float' in spec: configure('--enable-float', *options) make() - make("check") + if self.run_tests: + make("check") make("install") if '+long_double' in spec: configure('--enable-long-double', *options) make() - make("check") + if self.run_tests: + make("check") make("install") if '+quad' in spec: configure('--enable-quad-precision', *options) make() - make("check") + if self.run_tests: + make("check") make("install") -- cgit v1.2.3-60-g2f50 From 73620fe868779841b6eb4ef5c2c2ebb92fbc28a2 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Wed, 24 Aug 2016 11:00:16 -0700 Subject: avoid specifying --delim unless required This increases portability of generated module files to versions of environment_modules hearkening back to just after the turn of the millennium. --- lib/spack/spack/modules.py | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index debc6752b4..042481aa1d 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -530,13 +530,6 @@ class Dotkit(EnvModule): class TclModule(EnvModule): name = 'tcl' path = join_path(spack.share_path, "modules") - environment_modifications_formats = { - PrependPath: 'prepend-path --delim "{separator}" {name} \"{value}\"\n', - AppendPath: 'append-path --delim "{separator}" {name} \"{value}\"\n', - RemovePath: 'remove-path --delim "{separator}" {name} \"{value}\"\n', - SetEnv: 'setenv {name} \"{value}\"\n', - UnsetEnv: 'unsetenv {name}\n' - } autoload_format = ('if ![ is-loaded {module_file} ] {{\n' ' puts stderr "Autoloading {module_file}"\n' @@ -575,6 +568,41 @@ class TclModule(EnvModule): header += '}\n\n' return header + def process_environment_command(self, env): + environment_modifications_formats_colon = { + PrependPath: 'prepend-path {name} \"{value}\"\n', + AppendPath: 'append-path {name} \"{value}\"\n', + RemovePath: 'remove-path {name} \"{value}\"\n', + SetEnv: 'setenv {name} \"{value}\"\n', + UnsetEnv: 'unsetenv {name}\n' + } + environment_modifications_formats_general = { + PrependPath: 'prepend-path --delim "{separator}" {name} \"{value}\"\n', + AppendPath: 'append-path --delim "{separator}" {name} \"{value}\"\n', + RemovePath: 'remove-path --delim "{separator}" {name} \"{value}\"\n', + SetEnv: 'setenv {name} \"{value}\"\n', + UnsetEnv: 'unsetenv {name}\n' + } + for command in env: + # Token expansion from configuration file + name = command.args.get('name', '').format(**self.upper_tokens) + value = str(command.args.get('value', '')).format(**self.tokens) + command.update_args(name=name, value=value) + # Format the line int the module file + try: + if command.args.get('separator', ':') == ':': + yield environment_modifications_formats_colon[type( + command)].format(**command.args) + else: + yield environment_modifications_formats_general[type( + command)].format(**command.args) + except KeyError: + message = ('Cannot handle command of type {command}: ' + 'skipping request') + details = '{context} at {filename}:{lineno}' + tty.warn(message.format(command=type(command))) + tty.warn(details.format(**command.args)) + def module_specific_content(self, configuration): naming_tokens = self.tokens # Conflict -- cgit v1.2.3-60-g2f50 From 2b6833cb80b27e1b78730828a650ae86c2694a7c Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Wed, 24 Aug 2016 11:56:33 -0700 Subject: appeasing flake8, also cleaning up header The header append lines were too long, so I just converted it into a multi-line string template so it's all one piece now instead of a bunch of appends. --- lib/spack/spack/modules.py | 81 ++++++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 38 deletions(-) diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index 042481aa1d..70c3c35d8c 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -549,11 +549,13 @@ class TclModule(EnvModule): def header(self): timestamp = datetime.datetime.now() # TCL Modulefile header - header = '#%Module1.0\n' - header += '## Module file created by spack (https://github.com/LLNL/spack) on %s\n' % timestamp - header += '##\n' - header += '## %s\n' % self.spec.short_spec - header += '##\n' + header = """\ +#%%Module1.0 +## Module file created by spack (https://github.com/LLNL/spack) on %s +## +## %s +## +""" % (timestamp, self.spec.short_spec) # TODO : category ? # Short description @@ -569,39 +571,42 @@ class TclModule(EnvModule): return header def process_environment_command(self, env): - environment_modifications_formats_colon = { - PrependPath: 'prepend-path {name} \"{value}\"\n', - AppendPath: 'append-path {name} \"{value}\"\n', - RemovePath: 'remove-path {name} \"{value}\"\n', - SetEnv: 'setenv {name} \"{value}\"\n', - UnsetEnv: 'unsetenv {name}\n' - } - environment_modifications_formats_general = { - PrependPath: 'prepend-path --delim "{separator}" {name} \"{value}\"\n', - AppendPath: 'append-path --delim "{separator}" {name} \"{value}\"\n', - RemovePath: 'remove-path --delim "{separator}" {name} \"{value}\"\n', - SetEnv: 'setenv {name} \"{value}\"\n', - UnsetEnv: 'unsetenv {name}\n' - } - for command in env: - # Token expansion from configuration file - name = command.args.get('name', '').format(**self.upper_tokens) - value = str(command.args.get('value', '')).format(**self.tokens) - command.update_args(name=name, value=value) - # Format the line int the module file - try: - if command.args.get('separator', ':') == ':': - yield environment_modifications_formats_colon[type( - command)].format(**command.args) - else: - yield environment_modifications_formats_general[type( - command)].format(**command.args) - except KeyError: - message = ('Cannot handle command of type {command}: ' - 'skipping request') - details = '{context} at {filename}:{lineno}' - tty.warn(message.format(command=type(command))) - tty.warn(details.format(**command.args)) + environment_modifications_formats_colon = { + PrependPath: 'prepend-path {name} \"{value}\"\n', + AppendPath: 'append-path {name} \"{value}\"\n', + RemovePath: 'remove-path {name} \"{value}\"\n', + SetEnv: 'setenv {name} \"{value}\"\n', + UnsetEnv: 'unsetenv {name}\n' + } + environment_modifications_formats_general = { + PrependPath: + 'prepend-path --delim "{separator}" {name} \"{value}\"\n', + AppendPath: + 'append-path --delim "{separator}" {name} \"{value}\"\n', + RemovePath: + 'remove-path --delim "{separator}" {name} \"{value}\"\n', + SetEnv: 'setenv {name} \"{value}\"\n', + UnsetEnv: 'unsetenv {name}\n' + } + for command in env: + # Token expansion from configuration file + name = command.args.get('name', '').format(**self.upper_tokens) + value = str(command.args.get('value', '')).format(**self.tokens) + command.update_args(name=name, value=value) + # Format the line int the module file + try: + if command.args.get('separator', ':') == ':': + yield environment_modifications_formats_colon[type( + command)].format(**command.args) + else: + yield environment_modifications_formats_general[type( + command)].format(**command.args) + except KeyError: + message = ('Cannot handle command of type {command}: ' + 'skipping request') + details = '{context} at {filename}:{lineno}' + tty.warn(message.format(command=type(command))) + tty.warn(details.format(**command.args)) def module_specific_content(self, configuration): naming_tokens = self.tokens -- cgit v1.2.3-60-g2f50 From 85be3aefa7c52a63fe63e59fb636e4f041fd0567 Mon Sep 17 00:00:00 2001 From: Elizabeth Fischer Date: Wed, 24 Aug 2016 15:26:19 -0400 Subject: Put url_for_version() after versions in example. --- lib/spack/docs/packaging_guide.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index a082b85efa..3dc83f9b92 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -401,10 +401,11 @@ the ``url`` declaration. For example: :linenos: class Foo(Package): + version('8.2.1', '4136d7b4c04df68b686570afa26988ac') + ... def url_for_version(self, version): return 'http://example.com/version_%s/foo-%s.tar.gz' \ % (version, version) - version('8.2.1', '4136d7b4c04df68b686570afa26988ac') ... If a URL cannot be derived systematically, you can add an explicit URL -- cgit v1.2.3-60-g2f50 From 70bb1f1707b5f6ce8a0c79a2cf51a8f27b9dc67f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 14:39:05 -0500 Subject: Reduce number of variants, just use system or no-system libs --- var/spack/repos/builtin/packages/cmake/package.py | 43 ++++++++---------- .../repos/builtin/packages/libarchive/package.py | 51 +++++----------------- 2 files changed, 30 insertions(+), 64 deletions(-) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 4e2c37993c..19b9b45d17 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -42,25 +42,19 @@ class Cmake(Package): version('3.0.2', 'db4c687a31444a929d2fdc36c4dfb95f') version('2.8.10.2', '097278785da7182ec0aea8769d06860c') - variant('curl', default=True, description='Build external curl library') - variant('expat', default=True, description='Build external expat library') - # variant('jsoncpp', default=True, description='Build external jsoncpp library') # NOQA: ignore=E501 - variant('zlib', default=True, description='Build external zlib library') - variant('bzip2', default=True, description='Build external bzip2 library') - variant('xz', default=True, description='Build external lzma library') - variant('archive', default=True, description='Build external archive library') + variant('ownlibs', default=False, description='Use CMake-provided third-party libraries') variant('qt', default=False, description='Enables the build of cmake-gui') variant('doc', default=False, description='Enables the generation of html and man page documentation') variant('openssl', default=True, description="Enables CMake's OpenSSL features") variant('ncurses', default=True, description='Enables the build of the ncurses gui') - depends_on('curl', when='+curl') - depends_on('expat', when='+expat') - # depends_on('jsoncpp', when='+jsoncpp') # circular dependency - depends_on('zlib', when='+zlib') - depends_on('bzip2', when='+bzip2') - depends_on('xz', when='+xz') - depends_on('libarchive', when='+archive') + depends_on('curl', when='~ownlibs') + depends_on('expat', when='~ownlibs') + # depends_on('jsoncpp', when='~ownlibs') # circular dependency + depends_on('zlib', when='~ownlibs') + depends_on('bzip2', when='~ownlibs') + depends_on('xz', when='~ownlibs') + depends_on('libarchive', when='~ownlibs') depends_on('qt', when='+qt') depends_on('python@2.7.11:', when='+doc', type='build') depends_on('py-sphinx', when='+doc', type='build') @@ -92,22 +86,21 @@ class Cmake(Package): # Consistency check self.validate(spec) - def variant_to_bool(variant): - return 'system' if variant in spec else 'no-system' - - # configure, build, install: options = [ '--prefix={0}'.format(prefix), '--parallel={0}'.format(make_jobs), - '--{0}-curl'.format(variant_to_bool('+curl')), - '--{0}-expat'.format(variant_to_bool('+expat')), - '--{0}-jsoncpp'.format(variant_to_bool('+jsoncpp')), - '--{0}-zlib'.format(variant_to_bool('+zlib')), - '--{0}-bzip2'.format(variant_to_bool('+bzip2')), - '--{0}-liblzma'.format(variant_to_bool('+xz')), - '--{0}-libarchive'.format(variant_to_bool('+archive')) + # jsoncpp requires CMake to build + # use CMake-provided library to avoid circular dependency + '--no-system-jsoncpp' ] + if '+ownlibs' in spec: + # Build and link to the CMake-provided third-party libraries + options.append('--no-system-libs') + else: + # Build and link to the Spack-installed third-party libraries + options.append('--system-libs') + if '+qt' in spec: options.append('--qt-gui') else: diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py index 387af47b26..6278563875 100644 --- a/var/spack/repos/builtin/packages/libarchive/package.py +++ b/var/spack/repos/builtin/packages/libarchive/package.py @@ -28,6 +28,7 @@ from spack import * class Libarchive(Package): """libarchive: C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats.""" + homepage = "http://www.libarchive.org" url = "http://www.libarchive.org/downloads/libarchive-3.1.2.tar.gz" @@ -36,47 +37,19 @@ class Libarchive(Package): version('3.1.1', '1f3d883daf7161a0065e42a15bbf168f') version('3.1.0', '095a287bb1fd687ab50c85955692bf3a') - variant('zlib', default=True, description='Build support for gzip through zlib') - variant('bzip2', default=True, description='Build support for bzip2 through bz2lib') - variant('lzma', default=True, description='Build support for lzma through lzmadec') - variant('lz4', default=True, description='Build support for lz4 through liblz4') - variant('xz', default=True, description='Build support for xz through lzma') - variant('lzo', default=True, description='Build support for lzop through liblzo2') - variant('nettle', default=True, description='Build with crypto support from Nettle') - variant('openssl', default=True, description='Build support for mtree and xar hashes through openssl') - variant('libxml2', default=True, description='Build support for xar through libxml2') - variant('expat', default=True, description='Build support for xar through expat') - - depends_on('zlib', when='+zlib') - depends_on('bzip2', when='+bzip2') - depends_on('lzma', when='+lzma') - depends_on('lz4', when='+lz4') - depends_on('xz', when='+xz') - depends_on('lzo', when='+lzo') - depends_on('nettle', when='+nettle') - depends_on('openssl', when='+openssl') - depends_on('libxml2', when='+libxml2') - depends_on('expat', when='+expat') + depends_on('zlib') + depends_on('bzip2') + depends_on('lzma') + depends_on('lz4') + depends_on('xz') + depends_on('lzo') + depends_on('nettle') + depends_on('openssl') + depends_on('libxml2') + depends_on('expat') def install(self, spec, prefix): - def variant_to_bool(variant): - return 'with' if variant in spec else 'without' - - config_args = [ - '--prefix={0}'.format(prefix), - '--{0}-zlib'.format(variant_to_bool('+zlib')), - '--{0}-bz2lib'.format(variant_to_bool('+bzip2')), - '--{0}-lzmadec'.format(variant_to_bool('+lzma')), - '--{0}-lz4'.format(variant_to_bool('+lz4')), - '--{0}-lzma'.format(variant_to_bool('+xz')), - '--{0}-lzo2'.format(variant_to_bool('+lzo')), - '--{0}-nettle'.format(variant_to_bool('+nettle')), - '--{0}-openssl'.format(variant_to_bool('+openssl')), - '--{0}-xml2'.format(variant_to_bool('+libxml2')), - '--{0}-expat'.format(variant_to_bool('+expat')) - ] - - configure(*config_args) + configure('--prefix={0}'.format(prefix)) make() # make('check') # cannot build test suite with Intel compilers -- cgit v1.2.3-60-g2f50 From eace068788956fbceb240f41949af54fa62db82c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 15:21:23 -0500 Subject: Use self.run_tests for make check --- var/spack/repos/builtin/packages/cmake/package.py | 3 ++- var/spack/repos/builtin/packages/expat/package.py | 3 ++- var/spack/repos/builtin/packages/jsoncpp/package.py | 3 ++- var/spack/repos/builtin/packages/libarchive/package.py | 3 ++- var/spack/repos/builtin/packages/libxml2/package.py | 3 ++- var/spack/repos/builtin/packages/lz4/package.py | 3 ++- var/spack/repos/builtin/packages/lzma/package.py | 3 ++- var/spack/repos/builtin/packages/lzo/package.py | 5 +++-- var/spack/repos/builtin/packages/nettle/package.py | 3 ++- var/spack/repos/builtin/packages/xz/package.py | 3 ++- var/spack/repos/builtin/packages/zlib/package.py | 3 ++- 11 files changed, 23 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 19b9b45d17..0c16adcef7 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -118,5 +118,6 @@ class Cmake(Package): bootstrap(*options) make() - # make('test') # some tests fail, takes forever + if self.run_tests: + make('test') # some tests fail, takes forever make('install') diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index 7e56bddd15..0262bf1e3f 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -38,5 +38,6 @@ class Expat(Package): configure('--prefix={0}'.format(prefix)) make() - make('check') + if self.run_tests: + make('check') make('install') diff --git a/var/spack/repos/builtin/packages/jsoncpp/package.py b/var/spack/repos/builtin/packages/jsoncpp/package.py index 77f18cb6ab..5169b338ee 100644 --- a/var/spack/repos/builtin/packages/jsoncpp/package.py +++ b/var/spack/repos/builtin/packages/jsoncpp/package.py @@ -44,5 +44,6 @@ class Jsoncpp(Package): cmake('..', '-DBUILD_SHARED_LIBS=ON', *std_cmake_args) make() - # make('test') # Python needed to run tests + if self.run_tests: + make('test') # Python needed to run tests make('install') diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py index 6278563875..e439bf894f 100644 --- a/var/spack/repos/builtin/packages/libarchive/package.py +++ b/var/spack/repos/builtin/packages/libarchive/package.py @@ -52,5 +52,6 @@ class Libarchive(Package): configure('--prefix={0}'.format(prefix)) make() - # make('check') # cannot build test suite with Intel compilers + if self.run_tests: + make('check') # cannot build test suite with Intel compilers make('install') diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 6b25097bcd..0b55fe4d30 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -55,5 +55,6 @@ class Libxml2(Package): configure('--prefix={0}'.format(prefix), *python_args) make() - make('check') + if self.run_tests: + make('check') make('install') diff --git a/var/spack/repos/builtin/packages/lz4/package.py b/var/spack/repos/builtin/packages/lz4/package.py index 89356a607c..de7e566e70 100644 --- a/var/spack/repos/builtin/packages/lz4/package.py +++ b/var/spack/repos/builtin/packages/lz4/package.py @@ -40,5 +40,6 @@ class Lz4(Package): def install(self, spec, prefix): make() - # make('test') # requires valgrind to be installed + if self.run_tests: + make('test') # requires valgrind to be installed make('install', 'PREFIX={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/lzma/package.py b/var/spack/repos/builtin/packages/lzma/package.py index f363569930..23d697ffe8 100644 --- a/var/spack/repos/builtin/packages/lzma/package.py +++ b/var/spack/repos/builtin/packages/lzma/package.py @@ -44,5 +44,6 @@ class Lzma(Package): configure('--prefix={0}'.format(prefix)) make() - make('check') + if self.run_tests: + make('check') # one of the tests fails for me make('install') diff --git a/var/spack/repos/builtin/packages/lzo/package.py b/var/spack/repos/builtin/packages/lzo/package.py index 7702186cbd..172e57d0cd 100644 --- a/var/spack/repos/builtin/packages/lzo/package.py +++ b/var/spack/repos/builtin/packages/lzo/package.py @@ -45,6 +45,7 @@ class Lzo(Package): ] configure(*configure_args) make() - make('check') - make('test') # more exhaustive test + if self.run_tests: + make('check') + make('test') # more exhaustive test make('install') diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py index bf49423605..b4c873a8a1 100644 --- a/var/spack/repos/builtin/packages/nettle/package.py +++ b/var/spack/repos/builtin/packages/nettle/package.py @@ -41,5 +41,6 @@ class Nettle(Package): configure('--prefix={0}'.format(prefix)) make() - make('check') + if self.run_tests: + make('check') make('install') diff --git a/var/spack/repos/builtin/packages/xz/package.py b/var/spack/repos/builtin/packages/xz/package.py index 815d898504..8b0609f50e 100644 --- a/var/spack/repos/builtin/packages/xz/package.py +++ b/var/spack/repos/builtin/packages/xz/package.py @@ -40,5 +40,6 @@ class Xz(Package): configure('--prefix={0}'.format(prefix)) make() - make('check') + if self.run_tests: + make('check') make('install') diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 8834a05804..6f4d8a5bb8 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -38,5 +38,6 @@ class Zlib(Package): configure('--prefix={0}'.format(prefix)) make() - make('test') + if self.run_tests: + make('test') make('install') -- cgit v1.2.3-60-g2f50 From 93cb2db531ef16c86fc1875e055837ec86c2f69e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 24 Aug 2016 14:10:12 -0700 Subject: Fix build dependency. --- var/spack/repos/builtin/packages/sympol/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/sympol/package.py b/var/spack/repos/builtin/packages/sympol/package.py index 71ecc0a128..7ce4995f03 100644 --- a/var/spack/repos/builtin/packages/sympol/package.py +++ b/var/spack/repos/builtin/packages/sympol/package.py @@ -33,9 +33,10 @@ class Sympol(Package): version('0.1.8', '7cba1997f8532c754cb7259bf70caacb') + depends_on("cmake", type='build') + depends_on("bliss") depends_on("boost") - depends_on("cmake") depends_on("gmp") depends_on("lrslib") -- cgit v1.2.3-60-g2f50 From 062ff13da6e8b14a9689c77fc55c7ba2a73b02e8 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 24 Aug 2016 14:10:25 -0700 Subject: Make `spack info` print deps in sorted order --- lib/spack/spack/cmd/info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 498518057b..2fa3a07525 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -87,7 +87,7 @@ def print_text_info(pkg): for deptype in ('build', 'link', 'run'): print print "%s Dependencies:" % deptype.capitalize() - deps = pkg.dependencies_of_type(deptype) + deps = sorted(pkg.dependencies_of_type(deptype)) if deps: colify(deps, indent=4) else: -- cgit v1.2.3-60-g2f50 From 2ddaabed257e04c292b8e6e3954fff675b35907e Mon Sep 17 00:00:00 2001 From: "Kelly (KT) Thompson" Date: Wed, 24 Aug 2016 15:57:28 -0600 Subject: + Boost: fix recipe for intel compilers. This is the same patch provided by PR #550, but rebased against the current develop branch. It also passes the flake8 checks. --- var/spack/repos/builtin/packages/boost/package.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 690a05a150..0d4ccc7ea3 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import spack import sys import os @@ -114,7 +113,8 @@ class Boost(Package): description="Build single-threaded versions of libraries") variant('icu_support', default=False, description="Include ICU support (for regex/locale libraries)") - variant('graph', default=False, description="Build the Boost Graph library") + variant('graph', default=False, + description="Build the Boost Graph library") depends_on('icu', when='+icu_support') depends_on('python', when='+python') @@ -138,11 +138,15 @@ class Boost(Package): def determine_toolset(self, spec): if spec.satisfies("platform=darwin"): return 'darwin' + else: + platform = 'linux' toolsets = {'g++': 'gcc', 'icpc': 'intel', 'clang++': 'clang'} + if spec.satisfies('@1.47:'): + toolsets['icpc'] += '-' + platform for cc, toolset in toolsets.iteritems(): if cc in self.compiler.cxx_names: return toolset @@ -160,16 +164,13 @@ class Boost(Package): join_path(spec['python'].prefix.bin, 'python')) with open('user-config.jam', 'w') as f: - compiler_wrapper = join_path(spack.build_env_path, 'c++') - f.write("using {0} : : {1} ;\n".format(boostToolsetId, - compiler_wrapper)) if '+mpi' in spec: f.write('using mpi : %s ;\n' % join_path(spec['mpi'].prefix.bin, 'mpicxx')) if '+python' in spec: f.write('using python : %s : %s ;\n' % - (spec['python'].version, + (spec['python'].version.up_to(2), join_path(spec['python'].prefix.bin, 'python'))) def determine_b2_options(self, spec, options): @@ -202,7 +203,6 @@ class Boost(Package): multithreaded} must be enabled""") options.extend([ - 'toolset=%s' % self.determine_toolset(spec), 'link=%s' % ','.join(linkTypes), '--layout=tagged']) -- cgit v1.2.3-60-g2f50 From 07e0da24c5614533a93c392cf2b6f03c8b00b949 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Thu, 25 Aug 2016 10:21:56 +0100 Subject: Reverted url to point to tarball rather than git tag --- var/spack/repos/builtin/packages/plumed/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 02d9852add..79632abf38 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -41,9 +41,9 @@ class Plumed(Package): and C/C++ codes. """ homepage = 'http://www.plumed.org/' - url = 'https://github.com/plumed/plumed2' + url = 'https://github.com/plumed/plumed2/archive/v2.2.3.tar.gz' - version('2.2.3', git="https://github.com/plumed/plumed2.git", tag='v2.2.3') + version('2.2.3', 'a6e3863e40aac07eb8cf739cbd14ecf8') # Variants. PLUMED by default builds a number of optional modules. # The ones listed here are not built by default for various reasons, -- cgit v1.2.3-60-g2f50 From 80754a4062297d8b6d52ea049175698bc7317376 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 25 Aug 2016 11:46:12 +0200 Subject: and the missing word is... (#1628) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d5ac7dd39..27d62951a1 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ can join it here: ### Contributions -Contributing to Spack is relatively. Just send us a +Contributing to Spack is relatively easy. Just send us a [pull request](https://help.github.com/articles/using-pull-requests/). When you send your request, make ``develop`` the destination branch on the [Spack repository](https://github.com/LLNL/spack). -- cgit v1.2.3-60-g2f50 From 7ebb17e459cf32fe45c8d150c6f59e0613e121ef Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 25 Aug 2016 21:19:52 -0700 Subject: Remove stale operating_system.py test per discussion in #1631 - Test has not been registered in `__init__.py` for a while and needs a refresh. --- lib/spack/spack/test/operating_system.py | 75 -------------------------------- 1 file changed, 75 deletions(-) delete mode 100644 lib/spack/spack/test/operating_system.py diff --git a/lib/spack/spack/test/operating_system.py b/lib/spack/spack/test/operating_system.py deleted file mode 100644 index 8723f7244d..0000000000 --- a/lib/spack/spack/test/operating_system.py +++ /dev/null @@ -1,75 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 -############################################################################## -""" Test checks if the operating_system class is created correctly and that -the functions are using the correct operating_system. Also checks whether -the operating_system correctly uses the compiler_strategy -""" -import unittest -from spack.platforms.cray_xc import CrayXc -from spack.platforms.linux import Linux -from spack.platforms.darwin import Darwin -from spack.operating_system.linux_distro import LinuxDistro -from spack.operating_system.cnl import ComputeNodeLinux - - -class TestOperatingSystem(unittest.TestCase): - - def setUp(self): - cray_xc = CrayXc() - linux = Linux() - darwin = Darwin() - self.cray_operating_sys = cray_xc.operating_system('front_os') - self.cray_default_os = cray_xc.operating_system('default_os') - self.cray_back_os = cray_xc.operating_system('back_os') - self.darwin_operating_sys = darwin.operating_system('default_os') - self.linux_operating_sys = linux.operating_system('default_os') - - def test_cray_front_end_operating_system(self): - self.assertIsInstance(self.cray_operating_sys, LinuxDistro) - - def test_cray_front_end_compiler_strategy(self): - self.assertEquals(self.cray_operating_sys.compiler_strategy, "PATH") - - def test_cray_back_end_operating_system(self): - self.assertIsInstance(self.cray_back_os, ComputeNodeLinux) - - def test_cray_back_end_compiler_strategy(self): - self.assertEquals(self.cray_back_os.compiler_strategy, "MODULES") - - def test_linux_operating_system(self): - self.assertIsInstance(self.linux_operating_sys, LinuxDistro) - - def test_linux_compiler_strategy(self): - self.assertEquals(self.linux_operating_sys.compiler_strategy, "PATH") - - def test_cray_front_end_compiler_list(self): - """ Operating systems will now be in charge of finding compilers. - So, depending on which operating system you want to build for - or which operating system you are on, then you could detect - compilers in a certain way. Cray linux environment on the front - end is just a regular linux distro whereas the Cray linux compute - node is a stripped down version which modules are important - """ - self.assertEquals(True, False) -- cgit v1.2.3-60-g2f50 From 2053db4d178f58e1d4f15c83e821e409a6e5f1eb Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 27 Aug 2016 17:04:46 -0700 Subject: Make clang detection work on AWS Ubuntu14. --- lib/spack/spack/compilers/clang.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/compilers/clang.py b/lib/spack/spack/compilers/clang.py index 4cf65222ae..36c91f6670 100644 --- a/lib/spack/spack/compilers/clang.py +++ b/lib/spack/spack/compilers/clang.py @@ -101,7 +101,7 @@ class Clang(Compiler): ver = match.group(1) + '-apple' else: # Normal clang compiler versions are left as-is - match = re.search(r'^clang version ([^ )]+)', output) + match = re.search(r'clang version ([^ )]+)', output) if match: ver = match.group(1) -- cgit v1.2.3-60-g2f50 From db7c3d2de658e8540dba6f0f75b75e14f9316fb9 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 28 Aug 2016 20:31:15 -0400 Subject: New package for the Mercurial (hg) version control system (#1644) * New package "mercurial" * Disable self-checks The self-checks require subversion, which we don't want to require. --- .../repos/builtin/packages/mercurial/package.py | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mercurial/package.py diff --git a/var/spack/repos/builtin/packages/mercurial/package.py b/var/spack/repos/builtin/packages/mercurial/package.py new file mode 100644 index 0000000000..e51069662f --- /dev/null +++ b/var/spack/repos/builtin/packages/mercurial/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Mercurial(Package): + """Mercurial is a free, distributed source control management tool.""" + homepage = "https://www.mercurial-scm.org" + url = "https://www.mercurial-scm.org/release/mercurial-3.9.tar.gz" + + version('3.9' , 'e2b355da744e94747daae3a5339d28a0') + version('3.8.4', 'cec2c3db688cb87142809089c6ae13e9') + version('3.8.3', '97aced7018614eeccc9621a3dea35fda') + version('3.8.2', 'c38daa0cbe264fc621dc3bb05933b0b3') + version('3.8.1', '172a8c588adca12308c2aca16608d7f4') + + depends_on("python @2.6:2.7.999") + depends_on("py-docutils", type="build") + + def install(self, spec, prefix): + make('PREFIX=%s' % prefix, 'install') -- cgit v1.2.3-60-g2f50 From 079d063c6d94be84974f1ddd6eb880e902c95b4a Mon Sep 17 00:00:00 2001 From: "Robert D. French" Date: Sun, 28 Aug 2016 20:43:54 -0400 Subject: Variant for building cdo without mpi (#1638) --- var/spack/repos/builtin/packages/cdo/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index 7400c3a56c..a2f04e5b35 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -34,7 +34,11 @@ class Cdo(Package): version('1.6.9', 'bf0997bf20e812f35e10188a930e24e2') + variant('mpi', default=True) + depends_on('netcdf') + depends_on('netcdf+mpi', when='+mpi') + depends_on('netcdf~mpi', when='~mpi') def install(self, spec, prefix): configure('--prefix={0}'.format(prefix)) -- cgit v1.2.3-60-g2f50 From 6acfcd82b1a4e603ccd100675d3271978cde1279 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 28 Aug 2016 20:46:10 -0400 Subject: Update Julia to 0.5 release branch; install some Julia package as well (#1637) * Update Julia to 0.5 release branch; install some Julia package as well * Add comments, correct flake8 error * Correct flake8 error --- var/spack/repos/builtin/packages/julia/package.py | 145 +++++++++++++++++++--- 1 file changed, 130 insertions(+), 15 deletions(-) diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index 536ce69236..6ccaa11c90 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -24,6 +24,8 @@ ############################################################################## from spack import * +import os +import sys class Julia(Package): @@ -33,31 +35,42 @@ class Julia(Package): version('master', git='https://github.com/JuliaLang/julia.git', branch='master') + version('release-0.5', + git='https://github.com/JuliaLang/julia.git', branch='release-0.5') version('release-0.4', git='https://github.com/JuliaLang/julia.git', branch='release-0.4') version('0.4.6', 'd88db18c579049c23ab8ef427ccedf5d', preferred=True) version('0.4.5', '69141ff5aa6cee7c0ec8c85a34aa49a6') version('0.4.3', '8a4a59fd335b05090dd1ebefbbe5aaac') + # TODO: Split these out into jl-hdf5, jl-mpi packages etc. + variant("cxx", default=False, description="Prepare for Julia Cxx package") + variant("hdf5", default=False, description="Install Julia HDF5 package") + variant("mpi", default=False, description="Install Julia MPI package") + variant("plot", default=False, + description="Install Julia plotting packages") + variant("python", default=False, + description="Install Julia Python package") + patch('gc.patch', when='@0.4:0.4.5') - patch('gc.patch', when='@release-0.4') patch('openblas.patch', when='@0.4:0.4.5') + variant('binutils', default=sys.platform != 'darwin', + description="Build via binutils") + # Build-time dependencies: - # depends_on("awk", type='build') - # depends_on("m4", type='build') - # depends_on("pkg-config", type='build') + # depends_on("awk") + depends_on("m4", type="build") + # depends_on("pkg-config") # Combined build-time and run-time dependencies: - depends_on("binutils", type=nolink) - depends_on("cmake @2.8:", type=nolink) - depends_on("git", type=nolink) - depends_on("openssl", type=nolink) - depends_on("python @2.7:2.999", type=nolink) - - # I think that Julia requires the dependencies above, but it - # builds fine (on my system) without these. We should enable them - # as necessary. + # (Yes, these are run-time dependencies used by Julia's package manager.) + depends_on("binutils", when='+binutils') + depends_on("cmake @2.8:") + depends_on("curl") + depends_on("git") # I think Julia @0.5: doesn't use git any more + depends_on("openssl") + depends_on("python @2.7:2.999") # Run-time dependencies: # depends_on("arpack") @@ -93,10 +106,15 @@ class Julia(Package): # USE_SYSTEM_LIBGIT2=0 # Run-time dependencies for Julia packages: - depends_on("hdf5", type='run') - depends_on("mpi", type='run') + depends_on("hdf5", when="+hdf5", type="run") + depends_on("mpi", when="+mpi", type="run") + depends_on("py-matplotlib", when="+plot", type="run") def install(self, spec, prefix): + # Julia needs git tags + if os.path.isfile(".git/shallow"): + git = which("git") + git("fetch", "--unshallow") # Explicitly setting CC, CXX, or FC breaks building libuv, one # of Julia's dependencies. This might be a Darwin-specific # problem. Given how Spack sets up compilers, Julia should @@ -107,12 +125,109 @@ class Julia(Package): # "CXX=c++", # "FC=fc", # "USE_SYSTEM_ARPACK=1", + "override USE_SYSTEM_CURL=1", # "USE_SYSTEM_FFTW=1", # "USE_SYSTEM_GMP=1", # "USE_SYSTEM_MPFR=1", # "USE_SYSTEM_PCRE=1", "prefix=%s" % prefix] + if "+cxx" in spec: + if "@master" not in spec: + raise InstallError( + "Variant +cxx requires the @master version of Julia") + options += [ + "BUILD_LLVM_CLANG=1", + "LLVM_ASSERTIONS=1", + "USE_LLVM_SHLIB=1"] with open('Make.user', 'w') as f: f.write('\n'.join(options) + '\n') make() make("install") + + # Julia's package manager needs a certificate + curl = which("curl") + cacert_file = join_path(prefix, "etc", "curl", "cacert.pem") + curl("--create-dirs", + "--output", cacert_file, + "https://curl.haxx.se/ca/cacert.pem") + + # Put Julia's compiler cache into a private directory + cachedir = join_path(prefix, "var", "julia", "cache") + mkdirp(cachedir) + + # Store Julia packages in a private directory + pkgdir = join_path(prefix, "var", "julia", "pkg") + mkdirp(pkgdir) + + # Configure Julia + with open(join_path(prefix, "etc", "julia", "juliarc.jl"), + "a") as juliarc: + if "@master" in spec or "@release-0.5" in spec: + # This is required for versions @0.5: + juliarc.write( + '# Point package manager to working certificates\n') + juliarc.write('LibGit2.set_ssl_cert_locations("%s")\n' % + cacert_file) + juliarc.write('\n') + juliarc.write('# Put compiler cache into a private directory\n') + juliarc.write('empty!(Base.LOAD_CACHE_PATH)\n') + juliarc.write('unshift!(Base.LOAD_CACHE_PATH, "%s")\n' % cachedir) + juliarc.write('\n') + juliarc.write('# Put Julia packages into a private directory\n') + juliarc.write('ENV["JULIA_PKGDIR"] = "%s"\n' % pkgdir) + juliarc.write('\n') + + # Install some commonly used packages + julia = Executable(join_path(prefix.bin, "julia")) + julia("-e", 'Pkg.init(); Pkg.update()') + + # Install HDF5 + if "+hdf5" in spec: + with open(join_path(prefix, "etc", "julia", "juliarc.jl"), + "a") as juliarc: + juliarc.write('# HDF5\n') + juliarc.write('push!(Libdl.DL_LOAD_PATH, "%s")\n' % + spec["hdf5"].prefix.lib) + juliarc.write('\n') + julia("-e", 'Pkg.add("HDF5"); using HDF5') + julia("-e", 'Pkg.add("JLD"); using JLD') + + # Install MPI + if "+mpi" in spec: + with open(join_path(prefix, "etc", "julia", "juliarc.jl"), + "a") as juliarc: + juliarc.write('# MPI\n') + juliarc.write('ENV["JULIA_MPI_C_COMPILER"] = "%s"\n' % + join_path(spec["mpi"].prefix.bin, "mpicc")) + juliarc.write('ENV["JULIA_MPI_Fortran_COMPILER"] = "%s"\n' % + join_path(spec["mpi"].prefix.bin, "mpifort")) + juliarc.write('\n') + julia("-e", 'Pkg.add("MPI"); using MPI') + + # Install Python + if "+python" in spec or "+plot" in spec: + with open(join_path(prefix, "etc", "julia", "juliarc.jl"), + "a") as juliarc: + juliarc.write('# Python\n') + juliarc.write('ENV["PYTHON"] = "%s"\n' % spec["python"].prefix) + juliarc.write('\n') + # Python's OpenSSL package installer complains: + # Error: PREFIX too long: 166 characters, but only 128 allowed + # Error: post-link failed for: openssl-1.0.2g-0 + julia("-e", 'Pkg.add("PyCall"); using PyCall') + + if "+plot" in spec: + julia("-e", 'Pkg.add("PyPlot"); using PyPlot') + julia("-e", 'Pkg.add("Colors"); using Colors') + # These require maybe Gtk and ImageMagick + julia("-e", 'Pkg.add("Plots"); using Plots') + julia("-e", 'Pkg.add("PlotRecipes"); using PlotRecipes') + julia("-e", 'Pkg.add("UnicodePlots"); using UnicodePlots') + julia("-e", """\ +using Plots +using UnicodePlots +unicodeplots() +plot(x->sin(x)*cos(x), linspace(0, 2pi)) +""") + + julia("-e", 'Pkg.status()') -- cgit v1.2.3-60-g2f50 From 974749aaf6fb4f397c1a81940bb338c9f5a98669 Mon Sep 17 00:00:00 2001 From: "Robert D. French" Date: Sun, 28 Aug 2016 22:15:15 -0400 Subject: Provide mpi-less variant for nco (#1643) --- var/spack/repos/builtin/packages/nco/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 16d72b4593..a25d69d9f6 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -36,8 +36,11 @@ class Nco(Package): # See "Compilation Requirements" at: # http://nco.sourceforge.net/#bld + variant('mpi', default=True) depends_on('netcdf') + depends_on('netcdf+mpi', when='+mpi') + depends_on('netcdf~mpi', when='~mpi') depends_on('antlr@2.7.7+cxx') # (required for ncap2) depends_on('gsl') # (desirable for ncap2) depends_on('udunits2') # (allows dimensional unit transformations) -- cgit v1.2.3-60-g2f50 From ed365614f4c658c7c5a0dd638f12f26ec8ce692f Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 28 Aug 2016 19:26:13 -0700 Subject: Add git-lfs package. --- .../repos/builtin/packages/git-lfs/package.py | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/git-lfs/package.py diff --git a/var/spack/repos/builtin/packages/git-lfs/package.py b/var/spack/repos/builtin/packages/git-lfs/package.py new file mode 100644 index 0000000000..a080660721 --- /dev/null +++ b/var/spack/repos/builtin/packages/git-lfs/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 GitLfs(Package): + """Tool for managing large files with Git.""" + + homepage = "https://git-lfs.github.com" + url = "https://github.com/github/git-lfs/archive/v1.4.1.tar.gz" + + version('1.4.1', 'c62a314d96d3a30af4d98fa3305ad317') + + depends_on('go@1.5:', type='build') + depends_on('git@1.8.2:', type='run') + + def install(self, spec, prefix): + bootstrap = Executable('./scripts/bootstrap') + bootstrap() + install('bin/git-lfs', prefix.bin) -- cgit v1.2.3-60-g2f50 From d39322e278b287f88f062cd0aa8a4edc345dee73 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 28 Aug 2016 21:35:09 -0500 Subject: Run flake8 checks on new untracked files (#1510) --- share/spack/qa/run-flake8 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/spack/qa/run-flake8 b/share/spack/qa/run-flake8 index e41cd0d471..ffc82313a5 100755 --- a/share/spack/qa/run-flake8 +++ b/share/spack/qa/run-flake8 @@ -21,6 +21,8 @@ changed=($(git diff --name-only --find-renames develop... -- '*.py')) changed+=($(git diff --name-only --find-renames --cached -- '*.py')) # Add changed files that are unstaged changed+=($(git diff --name-only --find-renames -- '*.py')) +# Add new files that are untracked +changed+=($(git ls-files --exclude-standard --other -- '*.py')) # Ensure that each file in the array is unique changed=($(printf '%s\n' "${changed[@]}" | sort -u)) -- cgit v1.2.3-60-g2f50 From 83897af7101e950b1d51411a5493115b67b45afd Mon Sep 17 00:00:00 2001 From: Tyler Esser Date: Sun, 28 Aug 2016 20:16:08 -0700 Subject: Documentation: Fix accidental quotation. version() takes expand as a keyword. (#1640) --- lib/spack/docs/packaging_guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 3dc83f9b92..879beb2476 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -434,7 +434,7 @@ executables and other custom archive types), you can add .. code-block:: python version('8.2.1', '4136d7b4c04df68b686570afa26988ac', - url='http://example.com/foo-8.2.1-special-version.tar.gz', 'expand=False') + url='http://example.com/foo-8.2.1-special-version.tar.gz', expand=False) When ``expand`` is set to ``False``, Spack sets the current working directory to the directory containing the downloaded archive before it -- cgit v1.2.3-60-g2f50 From 82808f944ab4b126e92ff16222ebf41c1e51d6c1 Mon Sep 17 00:00:00 2001 From: Jeffrey Salmond Date: Mon, 29 Aug 2016 04:17:22 +0100 Subject: New package: opencoarrays (#1633) * opencoarrays: new package * opencoarrays: remove tests from install due to (unimportant) failures in some configurations * opencoarrays: fix flake8 errors --- .../repos/builtin/packages/opencoarrays/package.py | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 var/spack/repos/builtin/packages/opencoarrays/package.py diff --git a/var/spack/repos/builtin/packages/opencoarrays/package.py b/var/spack/repos/builtin/packages/opencoarrays/package.py new file mode 100644 index 0000000000..0003157985 --- /dev/null +++ b/var/spack/repos/builtin/packages/opencoarrays/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Opencoarrays(CMakePackage): + """ + OpenCoarrays is an open-source software project that produces an + application binary interface (ABI) supporting coarray Fortran (CAF) + compilers, an application programming interface (API) that supports users + of non-CAF compilers, and an associated compiler wrapper and program + launcher. + """ + + homepage = "http://www.opencoarrays.org/" + url = "https://github.com/sourceryinstitute/opencoarrays/releases/download/1.6.2/OpenCoarrays-1.6.2.tar.gz" + + version('1.6.2', '5a4da993794f3e04ea7855a6678981ba') + + depends_on('cmake', type='build') + depends_on('mpi') + + provides('coarrays') + + def install(self, spec, prefix): + with working_dir('spack-build', create=True): + args = std_cmake_args + args.append("-DCMAKE_C_COMPILER=%s" % self.spec['mpi'].mpicc) + args.append("-DCMAKE_Fortran_COMPILER=%s" % self.spec['mpi'].mpifc) + cmake('..', *args) + make() + make("install") -- cgit v1.2.3-60-g2f50 From e119c32a9cbd798ce4fb64393f1e4eb59ed26c54 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 28 Aug 2016 23:18:24 -0400 Subject: Hot-fix for qthreads (#1632) The download tarball for qthreads vanished. Install it from a git branch instead as temporary work-around. --- .../repos/builtin/packages/qthreads/package.py | 23 ++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/qthreads/package.py b/var/spack/repos/builtin/packages/qthreads/package.py index 2eaff0a240..634d934938 100644 --- a/var/spack/repos/builtin/packages/qthreads/package.py +++ b/var/spack/repos/builtin/packages/qthreads/package.py @@ -37,16 +37,31 @@ class Qthreads(Package): either full or empty, and a thread can wait for any word to attain either state.""" homepage = "http://www.cs.sandia.gov/qthreads/" - url = "https://qthreads.googlecode.com/files/qthread-1.10.tar.bz2" - version('1.10', '5af8c8bbe88c2a6d45361643780d1671') + # Google Code has stopped serving tarballs + # We assume the tarballs will soon be available on Github instead + # url = "https://qthreads.googlecode.com/files/qthread-1.10.tar.bz2" + # version('1.10', '5af8c8bbe88c2a6d45361643780d1671') - patch("ldflags.patch") + # Temporarily install from a git branch + url = "https://github.com/Qthreads/qthreads" + version("1.10", + git="https://github.com/Qthreads/qthreads", + branch="release-1.10") + + # patch("ldflags.patch") patch("restrict.patch") patch("trap.patch") + depends_on("autoconf", type="build") + depends_on("hwloc") + def install(self, spec, prefix): + autogen = Executable("./autogen.sh") + autogen() configure("--prefix=%s" % prefix, - "--enable-guard-pages") + "--enable-guard-pages", + "--with-topology=hwloc", + "--with-hwloc=%s" % spec["hwloc"].prefix) make() make("install") -- cgit v1.2.3-60-g2f50 From a9a29d207d57ea8e4867889e430be26163c6cb1a Mon Sep 17 00:00:00 2001 From: Abhinav Bhatele Date: Sun, 28 Aug 2016 20:18:57 -0700 Subject: add versions 2.2rc2 and 2.1 to the mvapich2 package (#1630) --- var/spack/repos/builtin/packages/mvapich2/package.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 17124a0572..54caf0e7e1 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -28,12 +28,14 @@ from spack import * class Mvapich2(Package): """MVAPICH2 is an MPI implementation for Infiniband networks.""" homepage = "http://mvapich.cse.ohio-state.edu/" - url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.2b.tar.gz" - - version('2.2b', '5651e8b7a72d7c77ca68da48f3a5d108') - version('2.2a', 'b8ceb4fc5f5a97add9b3ff1b9cbe39d2') - version('2.0', '9fbb68a4111a8b6338e476dc657388b4') - version('1.9', '5dc58ed08fd3142c260b70fe297e127c') + url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.2rc2.tar.gz" + + version('2.2rc2', 'f9082ffc3b853ad1b908cf7f169aa878') + version('2.2b', '5651e8b7a72d7c77ca68da48f3a5d108') + version('2.2a', 'b8ceb4fc5f5a97add9b3ff1b9cbe39d2') + version('2.1', '0095ceecb19bbb7fb262131cb9c2cdd6') + version('2.0', '9fbb68a4111a8b6338e476dc657388b4') + version('1.9', '5dc58ed08fd3142c260b70fe297e127c') patch('ad_lustre_rwcontig_open_source.patch', when='@1.9') -- cgit v1.2.3-60-g2f50 From 90070c317dd10c0e12babe71e90e98cea0447693 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 29 Aug 2016 08:45:15 +0200 Subject: ape: in-code comments to explain compiler flags --- var/spack/repos/builtin/packages/ape/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/ape/package.py b/var/spack/repos/builtin/packages/ape/package.py index b1647798b5..48e436804f 100644 --- a/var/spack/repos/builtin/packages/ape/package.py +++ b/var/spack/repos/builtin/packages/ape/package.py @@ -45,6 +45,13 @@ class Ape(Package): '--with-libxc-prefix=%s' % spec['libxc'].prefix ]) + # When preprocessor expands macros (i.e. CFLAGS) defined as quoted + # strings the result may be > 132 chars and is terminated. + # This will look to a compiler as an Unterminated character constant + # and produce Line truncated errors. To vercome this, add flags to + # let compiler know that the entire line is meaningful. + # TODO: For the lack of better approach, assume that clang is mixed + # with GNU fortran. if spec.satisfies('%clang') or spec.satisfies('%gcc'): args.extend([ 'FCFLAGS=-O2 -ffree-line-length-none' -- cgit v1.2.3-60-g2f50 From 5333a799ea1dd22a829b509d30840b740206924a Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 29 Aug 2016 08:45:28 +0200 Subject: octopus: in-code comments to explain compiler flags --- var/spack/repos/builtin/packages/octopus/package.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py index 6fa2e0368f..ff4a106940 100644 --- a/var/spack/repos/builtin/packages/octopus/package.py +++ b/var/spack/repos/builtin/packages/octopus/package.py @@ -70,10 +70,13 @@ class Octopus(Package): # --with-berkeleygw-prefix=${prefix} ]) - # Supposedly configure does not pick up the required flags for gfortran - # Without it there are: - # Error: Line truncated @ global.F90:157:132 - # Error: Unterminated character constant @ global.F90:157:20 + # When preprocessor expands macros (i.e. CFLAGS) defined as quoted + # strings the result may be > 132 chars and is terminated. + # This will look to a compiler as an Unterminated character constant + # and produce Line truncated errors. To vercome this, add flags to + # let compiler know that the entire line is meaningful. + # TODO: For the lack of better approach, assume that clang is mixed + # with GNU fortran. if spec.satisfies('%clang') or spec.satisfies('%gcc'): args.extend([ 'FCFLAGS=-O2 -ffree-line-length-none' -- cgit v1.2.3-60-g2f50 From 66ea42f8d75dfd3302a6172c631288be39728365 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 24 Aug 2016 23:07:12 +0200 Subject: nwchem: use basename for CC and FC --- var/spack/repos/builtin/packages/nwchem/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 0dcd249f74..13c710a35a 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -24,6 +24,7 @@ ############################################################################## from spack import * import sys +import os class Nwchem(Package): @@ -69,6 +70,10 @@ class Nwchem(Package): args = [] args.extend([ 'NWCHEM_TOP=%s' % self.stage.source_path, + # NWCHEM is picky about FC and CC. They should NOT be full path. + # see http://www.nwchem-sw.org/index.php/Special:AWCforum/sp/id7524 + 'CC=%s' % os.path.basename(spack_cc), + 'FC=%s' % os.path.basename(spack_fc), 'USE_MPI=y', 'MPI_LOC=%s' % spec['mpi'].prefix, 'USE_PYTHONCONFIG=y', -- cgit v1.2.3-60-g2f50 From 4bd863761a6b134090499bd1eddda1fd4299b556 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 29 Aug 2016 16:58:19 +0200 Subject: Update ADIOS Package This PR updates the ADIOS package. **Changes:** - add latest stable release `1.10.0` - add previous versions (hashes) - add default license header - add build options (shamelessly taken from HDF5 package) - add validation for excisting FC (as in HDF5) and make optional - handle mxml dependency correctly (not required in 1.10.0+) - add `CFLAGS=-fPIC` to build shared (python) libs in ADIOS' lib - remove `-DMPICH_IGNORE_CXX_SEEK` since it is normally not required - remove `MPICC/CXX?FC` since `--with-mpi` just performs well - add transforms: - `zlib`: useful (optional) default - `szip`: optional (compile often broken) - add transports that are not as performant as the `.bp` format: - `hdf5`: non-default - `netcdf`: non-default, close #1610 --- var/spack/repos/builtin/packages/adios/package.py | 118 +++++++++++++++++++--- 1 file changed, 104 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 59e0a451a9..f589119d7f 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -1,6 +1,30 @@ -import os +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 * +import os class Adios(Package): @@ -12,30 +36,96 @@ class Adios(Package): """ homepage = "http://www.olcf.ornl.gov/center-projects/adios/" - url = "https://github.com/ornladios/ADIOS/archive/v1.9.0.tar.gz" + url = "https://github.com/ornladios/ADIOS/archive/v1.10.0.tar.gz" + + version('1.10.0', 'eff450a4c0130479417cfd63186957f3') + version('1.9.0' , '310ff02388bbaa2b1c1710ee970b5678') + version('1.8.0' , 'c9116ec31e6b386f0e6ea5ab675c57e9') + version('1.7.0' , '266897ee3a390985d840bbe2935b4293') + version('1.6.0' , 'b3c735f3afbf552ec0d5e8152bffd778') + + variant('shared', default=True, + description='Builds a shared version of the library') - version('1.9.0', '310ff02388bbaa2b1c1710ee970b5678') + variant('fortran', default=True, + description='Enable Fortran bindings support') + + variant('mpi', default=False, description='Enable MPI support') + variant('infiniband', default=False, description='Enable infiniband support') + + variant('zlib', default=True, description='Enable szip transform support') + variant('szip', default=False, description='Enable szip transform support') + variant('hdf5', default=False, description='Enable HDF5 transport support') + variant('netcdf', default=False, description='Enable NetCDF transport support') # Lots of setting up here for this package # module swap PrgEnv-intel PrgEnv-$COMP # module load cray-netcdf/4.3.3.1 # module load cray-hdf5/1.8.14 # module load python/2.7.10 - depends_on('hdf5') - depends_on('mxml') + + depends_on('mpi', when='+mpi') + # shipped within ADIOS 1.10.0+ + depends_on('mxml', when='@:1.9.0') + # optional transformations + depends_on('zlib', when='+zlib') + depends_on('szip', when='+szip') + # optional transports + depends_on('hdf5', when='+hdf5') + depends_on('netcdf', when='+netcdf') + + def validate(self, spec): + """ + Checks if incompatible variants have been activated at the same time + :param spec: spec of the package + :raises RuntimeError: in case of inconsistencies + """ + if '+fortran' in spec and not self.compiler.fc: + msg = 'cannot build a fortran variant without a fortran compiler' + raise RuntimeError(msg) def install(self, spec, prefix): - configure_args = ["--prefix=%s" % prefix, - "--with-mxml=%s" % spec['mxml'].prefix, - "--with-hdf5=%s" % spec['hdf5'].prefix, - "--with-netcdf=%s" % os.environ["NETCDF_DIR"], - "--with-infiniband=no", - "MPICC=cc", "MPICXX=CC", "MPIFC=ftn", - "CPPFLAGS=-DMPICH_IGNORE_CXX_SEEK"] + self.validate(spec) + # Handle compilation after spec validation + extra_args = [] + + # required, otherwise building its python bindings on ADIOS will fail + extra_args.append("CFLAGS=-fPIC") + + # MXML is shipped within ADIOS in 1.10.0+ + if spec.satisfies('@:1.9.0'): + extra_args.append('--with-mxml=%s' % spec['mxml'].prefix) + + if '+shared' in spec: + extra_args.append('--enable-shared') + + if '+mpi' in spec: + extra_args.append('--with-mpi') + if '+infiniband' in spec: + extra_args.append('--with-infiniband') + else: + extra_args.append('--with-infiniband=no') + + if '+fortran' in spec: + extra_args.append('--enable-fortran') + else: + extra_args.append('--disable-fortran') + + if '+zlib' in spec: + extra_args.append('--with-zlib=%s' % spec['zlib'].prefix) + if '+szip' in spec: + extra_args.append('--with-szip=%s' % spec['szip'].prefix) + if '+hdf5' in spec: + extra_args.append('--with-hdf5=%s' % spec['hdf5'].prefix) + if '+netcdf' in spec: + extra_args.append('--with-netcdf=%s' % os.environ["NETCDF_DIR"]) if spec.satisfies('%gcc'): - configure_args.extend(["CC=gcc", "CXX=g++", "FC=gfortran"]) + extra_args.extend(["CC=gcc", "CXX=g++"]) + if '+fortran' in spec: + extra_args.extend(["FC=gfortran"]) - configure(*configure_args) + configure("--prefix=%s" % prefix, + *extra_args) make() make("install") -- cgit v1.2.3-60-g2f50 From 4095eb219609db22595ebbd785b1e90b71cded95 Mon Sep 17 00:00:00 2001 From: "Robert D. French" Date: Mon, 29 Aug 2016 12:21:19 -0400 Subject: Ole' GNU nano; Actually ran flake8 (#1649) --- var/spack/repos/builtin/packages/nano/package.py | 40 ++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nano/package.py diff --git a/var/spack/repos/builtin/packages/nano/package.py b/var/spack/repos/builtin/packages/nano/package.py new file mode 100644 index 0000000000..3e87ec8ffe --- /dev/null +++ b/var/spack/repos/builtin/packages/nano/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Nano(Package): + """Tiny little text editor""" + + homepage = "http://www.nano-editor.org" + url = "https://www.nano-editor.org/dist/v2.6/nano-2.6.3.tar.gz" + + version('2.6.3', '1213c7f17916e65afefc95054c1f90f9') + version('2.6.2', '58568a4b8a33841d774c25f285fc11c1') + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix) + make() + make('install') -- cgit v1.2.3-60-g2f50 From f2eb1c93df0d0bf3596936f43bc9e1dfb5059967 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 29 Aug 2016 18:42:07 +0200 Subject: ADIOS: Run Autotools First --- var/spack/repos/builtin/packages/adios/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index f589119d7f..dd26baa081 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -64,6 +64,11 @@ class Adios(Package): # module load cray-hdf5/1.8.14 # module load python/2.7.10 + depends_on('autoconf') + depends_on('automake') + depends_on('libtool') + depends_on('python') + depends_on('mpi', when='+mpi') # shipped within ADIOS 1.10.0+ depends_on('mxml', when='@:1.9.0') @@ -125,6 +130,9 @@ class Adios(Package): if '+fortran' in spec: extra_args.extend(["FC=gfortran"]) + sh = which('sh') + sh('./autogen.sh') + configure("--prefix=%s" % prefix, *extra_args) make() -- cgit v1.2.3-60-g2f50 From 2850ca60be1c5a5943af5ca404faad5bb08aef42 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 29 Aug 2016 09:56:54 -0700 Subject: Change spack --profile sort key for 2.6 compatibility. (#1656) --- bin/spack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/spack b/bin/spack index 9fed11f33b..7efa88f1ee 100755 --- a/bin/spack +++ b/bin/spack @@ -176,7 +176,7 @@ def main(): if args.profile: import cProfile - cProfile.run('main()', sort='tottime') + cProfile.run('main()', sort='time') elif args.pdb: import pdb pdb.run('main()') -- cgit v1.2.3-60-g2f50 From a21d3d353b05285b7de1a2c8178b4b59338cd5ef Mon Sep 17 00:00:00 2001 From: "Robert D. French" Date: Mon, 29 Aug 2016 13:01:04 -0400 Subject: New URL scheme for newer (and older) PDTs (#1651) --- var/spack/repos/builtin/packages/pdt/package.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index 074d28540b..648b2fab98 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -22,7 +22,6 @@ # 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 * @@ -36,14 +35,15 @@ class Pdt(Package): """ homepage = "https://www.cs.uoregon.edu/research/pdt/home.php" + url = "http://www.cs.uoregon.edu/research/paracomp/pdtoolkit/Download/pdt-3.22.1.tar.gz" - version('3.21', '3092ca0d8833b69992c17e63ae66c263') - version('3.19', '5c5e1e6607086aa13bf4b1b9befc5864') - - def url_for_version(self, version): - return 'https://www.cs.uoregon.edu/research/tau/pdt_releases/pdtoolkit-%s.tar.gz' % (version) + version('3.22.1', 'be6fac0b1edb3e3287b0cb78741a24b6') + version('3.22', 'e6c7879fc49ac5ff67a76ce31ef9e251') + version('3.21', '8df94298b71703decf680709a4ddf68f') + version('3.19', 'ba5591994998771fdab216699e362228') + version('3.18.1', '05281b5c82a4754df936df99ad7eec0f') def install(self, spec, prefix): configure('-prefix=%s' % prefix) make() - make("install") + make('install') -- cgit v1.2.3-60-g2f50 From e1464ece55198065b7801e18dfedc9eab2e07286 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 29 Aug 2016 19:06:22 +0200 Subject: ADIOS: disable parallel make --- var/spack/repos/builtin/packages/adios/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index dd26baa081..eda7a7e2ac 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -38,6 +38,9 @@ class Adios(Package): homepage = "http://www.olcf.ornl.gov/center-projects/adios/" url = "https://github.com/ornladios/ADIOS/archive/v1.10.0.tar.gz" + # make -j is currently not supported + parallel = False + version('1.10.0', 'eff450a4c0130479417cfd63186957f3') version('1.9.0' , '310ff02388bbaa2b1c1710ee970b5678') version('1.8.0' , 'c9116ec31e6b386f0e6ea5ab675c57e9') -- cgit v1.2.3-60-g2f50 From 88254a14a7b45efcfbe12496cb6f68fe0d2156ae Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 29 Aug 2016 23:01:20 +0200 Subject: Always External MXML; type='build' - always use `mxml` as an external dependency in spack - declare `build`-only dependencies correctly --- var/spack/repos/builtin/packages/adios/package.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index eda7a7e2ac..7babf85b29 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -67,14 +67,14 @@ class Adios(Package): # module load cray-hdf5/1.8.14 # module load python/2.7.10 - depends_on('autoconf') - depends_on('automake') - depends_on('libtool') - depends_on('python') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('python', type='build') depends_on('mpi', when='+mpi') # shipped within ADIOS 1.10.0+ - depends_on('mxml', when='@:1.9.0') + depends_on('mxml@2.9:') # optional transformations depends_on('zlib', when='+zlib') depends_on('szip', when='+szip') @@ -100,9 +100,8 @@ class Adios(Package): # required, otherwise building its python bindings on ADIOS will fail extra_args.append("CFLAGS=-fPIC") - # MXML is shipped within ADIOS in 1.10.0+ - if spec.satisfies('@:1.9.0'): - extra_args.append('--with-mxml=%s' % spec['mxml'].prefix) + # always build external MXML, even in ADIOS 1.10.0+ + extra_args.append('--with-mxml=%s' % spec['mxml'].prefix) if '+shared' in spec: extra_args.append('--enable-shared') -- cgit v1.2.3-60-g2f50 From b33777fd2f7eb377727cead7f38ccdf63cd3a71d Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 29 Aug 2016 23:18:31 +0200 Subject: RM Outdated Comments, Versions & Code --- var/spack/repos/builtin/packages/adios/package.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 7babf85b29..e3e63e7aef 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -38,14 +38,11 @@ class Adios(Package): homepage = "http://www.olcf.ornl.gov/center-projects/adios/" url = "https://github.com/ornladios/ADIOS/archive/v1.10.0.tar.gz" - # make -j is currently not supported + # make -j is currently broken parallel = False version('1.10.0', 'eff450a4c0130479417cfd63186957f3') version('1.9.0' , '310ff02388bbaa2b1c1710ee970b5678') - version('1.8.0' , 'c9116ec31e6b386f0e6ea5ab675c57e9') - version('1.7.0' , '266897ee3a390985d840bbe2935b4293') - version('1.6.0' , 'b3c735f3afbf552ec0d5e8152bffd778') variant('shared', default=True, description='Builds a shared version of the library') @@ -73,7 +70,6 @@ class Adios(Package): depends_on('python', type='build') depends_on('mpi', when='+mpi') - # shipped within ADIOS 1.10.0+ depends_on('mxml@2.9:') # optional transformations depends_on('zlib', when='+zlib') @@ -127,11 +123,6 @@ class Adios(Package): if '+netcdf' in spec: extra_args.append('--with-netcdf=%s' % os.environ["NETCDF_DIR"]) - if spec.satisfies('%gcc'): - extra_args.extend(["CC=gcc", "CXX=g++"]) - if '+fortran' in spec: - extra_args.extend(["FC=gfortran"]) - sh = which('sh') sh('./autogen.sh') -- cgit v1.2.3-60-g2f50 From 37f489886e0fd3817e8896dcca66d1a30b306e9e Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 Aug 2016 00:14:29 +0200 Subject: Defaults: MPI=True, Fortran=False - ADIOS is mainly a parallel I/O library - a Fortran compiler is non-standard in a minimal install --- var/spack/repos/builtin/packages/adios/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index e3e63e7aef..06e31f4025 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -47,10 +47,10 @@ class Adios(Package): variant('shared', default=True, description='Builds a shared version of the library') - variant('fortran', default=True, + variant('fortran', default=False, description='Enable Fortran bindings support') - variant('mpi', default=False, description='Enable MPI support') + variant('mpi', default=True, description='Enable MPI support') variant('infiniband', default=False, description='Enable infiniband support') variant('zlib', default=True, description='Enable szip transform support') -- cgit v1.2.3-60-g2f50 From e32247e53aad117ac5375990284105e2f53d36e3 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Mon, 29 Aug 2016 15:45:16 -0700 Subject: added qt-creator (#1659) --- .../repos/builtin/packages/qt-creator/package.py | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/qt-creator/package.py diff --git a/var/spack/repos/builtin/packages/qt-creator/package.py b/var/spack/repos/builtin/packages/qt-creator/package.py new file mode 100644 index 0000000000..347cf4d6ee --- /dev/null +++ b/var/spack/repos/builtin/packages/qt-creator/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 * +import os + + +class QtCreator(Package): + """The Qt Creator IDE.""" + homepage = 'https://www.qt.io/ide/' + url = 'http://download.qt.io/official_releases/qtcreator/4.1/4.1.0/qt-creator-opensource-src-4.1.0.tar.gz' + + list_url = 'http://download.qt.io/official_releases/qtcreator/' + list_depth = 3 + + version('4.1.0', '657727e4209befa4bf5889dff62d9e0a') + + depends_on("qt") + + def install(self, spec, prefix): + os.environ['INSTALL_ROOT'] = self.prefix + qmake = which('qmake') + qmake('-r') + make() + make("install") -- cgit v1.2.3-60-g2f50 From ecacce7e07013d54a0f6b2ddac68635d521a5ffe Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 Aug 2016 00:51:44 +0200 Subject: ADIOS: Use NetCDF Prefix from spec's --- var/spack/repos/builtin/packages/adios/package.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 06e31f4025..fb9fef060d 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -24,7 +24,6 @@ ############################################################################## from spack import * -import os class Adios(Package): @@ -121,7 +120,7 @@ class Adios(Package): if '+hdf5' in spec: extra_args.append('--with-hdf5=%s' % spec['hdf5'].prefix) if '+netcdf' in spec: - extra_args.append('--with-netcdf=%s' % os.environ["NETCDF_DIR"]) + extra_args.append('--with-netcdf=%s' % spec['netcdf'].prefix) sh = which('sh') sh('./autogen.sh') -- cgit v1.2.3-60-g2f50 From 0f40175524cd0b3083107ac955e2d8f64ae96f46 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 Aug 2016 02:02:48 +0200 Subject: Remove Space, Enable Parallel - remove space before comma - enable parallel build again (seems to work) --- var/spack/repos/builtin/packages/adios/package.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index fb9fef060d..e2e3b7d6b7 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -37,11 +37,8 @@ class Adios(Package): homepage = "http://www.olcf.ornl.gov/center-projects/adios/" url = "https://github.com/ornladios/ADIOS/archive/v1.10.0.tar.gz" - # make -j is currently broken - parallel = False - version('1.10.0', 'eff450a4c0130479417cfd63186957f3') - version('1.9.0' , '310ff02388bbaa2b1c1710ee970b5678') + version('1.9.0', '310ff02388bbaa2b1c1710ee970b5678') variant('shared', default=True, description='Builds a shared version of the library') -- cgit v1.2.3-60-g2f50 From cf11c32720c6fa409468cd561666aaf002d3e37d Mon Sep 17 00:00:00 2001 From: Elizabeth Fischer Date: Tue, 30 Aug 2016 01:11:27 -0400 Subject: libpciaccess: Changed libtool to a build dependency. (#1602) --- var/spack/repos/builtin/packages/libpciaccess/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libpciaccess/package.py b/var/spack/repos/builtin/packages/libpciaccess/package.py index a65b81b69b..1775a24ebc 100644 --- a/var/spack/repos/builtin/packages/libpciaccess/package.py +++ b/var/spack/repos/builtin/packages/libpciaccess/package.py @@ -33,7 +33,7 @@ class Libpciaccess(Package): version('0.13.4', 'ace78aec799b1cf6dfaea55d3879ed9f') - depends_on('libtool') + depends_on('libtool', type='build') def install(self, spec, prefix): # libpciaccess does not support OS X -- cgit v1.2.3-60-g2f50 From 8ab47537c758fddb8d8eb8eff481a092e52cd793 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 29 Aug 2016 22:34:47 -0700 Subject: Fix exception constructors. (#1663) --- lib/spack/spack/provider_index.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/provider_index.py b/lib/spack/spack/provider_index.py index 3f9cd285e7..2be48b43c1 100644 --- a/lib/spack/spack/provider_index.py +++ b/lib/spack/spack/provider_index.py @@ -32,6 +32,7 @@ import yaml from yaml.error import MarkedYAMLError import spack +import spack.error class ProviderIndex(object): @@ -201,11 +202,10 @@ class ProviderIndex(object): "error parsing YAML ProviderIndex cache:", str(e)) if not isinstance(yfile, dict): - raise spack.spec.SpackYAMLError( - "YAML ProviderIndex was not a dict.") + raise ProviderIndexError("YAML ProviderIndex was not a dict.") if 'provider_index' not in yfile: - raise spack.spec.SpackYAMLError( + raise ProviderIndexError( "YAML ProviderIndex does not start with 'provider_index'") index = ProviderIndex() @@ -291,3 +291,7 @@ def _transform(providers, transform_fun, out_mapping_type=dict): (name, out_mapping_type([ transform_fun(vpkg, pset) for vpkg, pset in mapiter(mappings)])) for name, mappings in providers.items()) + + +class ProviderIndexError(spack.error.SpackError): + """Raised when there is a problem with a ProviderIndex.""" -- cgit v1.2.3-60-g2f50 From 3ecf4ef8c9557c0b73a3eeea7efc0dbe91d9ee2a Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 30 Aug 2016 07:40:50 +0200 Subject: resources : added docs fixes #1551 (#1627) --- lib/spack/docs/packaging_guide.rst | 20 ++++++++++++++++++++ lib/spack/spack/directives.py | 6 +++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 879beb2476..34fcb1e101 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -759,6 +759,26 @@ Fetching a revision Subversion branches are handled as part of the directory structure, so you can check out a branch or tag by changing the ``url``. +Expanding additional resources in the source tree +------------------------------------------------- + +Some packages (most notably compilers) provide optional features if additional +resources are expanded within their source tree before building. In Spack it is +possible to describe such a need with the ``resource`` directive : + + .. code-block:: python + + resource( + name='cargo', + git='https://github.com/rust-lang/cargo.git', + tag='0.10.0', + destination='cargo' + ) + +Based on the keywords present among the arguments the appropriate ``FetchStrategy`` +will be used for the resource. The keyword ``destination`` is relative to the source +root of the package and should point to where the resource is to be expanded. + Automatic caching of files fetched during installation ------------------------------------------------------ diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 313bf48f0d..2a151e0374 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -292,17 +292,17 @@ def resource(pkg, **kwargs): Define an external resource to be fetched and staged when building the package. Based on the keywords present in the dictionary the appropriate FetchStrategy will be used for the resource. Resources are fetched and - staged in their own folder inside spack stage area, and then linked into + staged in their own folder inside spack stage area, and then moved into the stage area of the package that needs them. List of recognized keywords: * 'when' : (optional) represents the condition upon which the resource is needed - * 'destination' : (optional) path where to link the resource. This path + * 'destination' : (optional) path where to move the resource. This path must be relative to the main package stage area. * 'placement' : (optional) gives the possibility to fine tune how the - resource is linked into the main package stage area. + resource is moved into the main package stage area. """ when = kwargs.get('when', pkg.name) destination = kwargs.get('destination', "") -- cgit v1.2.3-60-g2f50 From dae00fec299a5c147094d6873a263506cffeb12e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 00:47:04 -0700 Subject: Move all documentation generation into conf.py - extra steps in Makefile are ignored by readthedocs --- lib/spack/docs/Makefile | 20 +------------------- lib/spack/docs/basic_usage.rst | 4 ++-- lib/spack/docs/conf.py | 29 +++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/lib/spack/docs/Makefile b/lib/spack/docs/Makefile index 00203b5b61..302ffd4c97 100644 --- a/lib/spack/docs/Makefile +++ b/lib/spack/docs/Makefile @@ -21,24 +21,6 @@ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . all: html -# -# This autogenerates a package list. -# -package_list: - spack package-list > package_list.rst - -# -# Generate a command index -# -command_index: - cp command_index.in command_index.rst - echo >> command_index.rst - grep -ho '.. _spack-.*:' *rst \ - | perl -pe 's/.. _([^:]*):/ * :ref:`\1`/' \ - | sort >> command_index.rst - -custom_targets: package_list command_index - # # This creates a git repository and commits generated html docs. # It them pushes the new branch into THIS repository as gh-pages. @@ -92,7 +74,7 @@ clean: -rm -f package_list.rst command_index.rst -rm -rf $(BUILDDIR)/* $(APIDOC_FILES) -html: apidoc custom_targets +html: apidoc $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index a5478d10c2..342c93d609 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -779,7 +779,7 @@ use the triplet form of platform, operating system and processor. Users on non-Cray systems won't have to worry about specifying the architecture. Spack will autodetect what kind of operating system is on your machine as well as the processor. For more information on how the architecture can be -used on Cray machines, check here :ref:`spack-cray` +used on Cray machines, check here :ref:`cray-support` .. _sec-virtual-dependencies: @@ -1798,7 +1798,7 @@ This issue typically manifests with the error below: A nicer error message is TBD in future versions of Spack. -.. _spack-cray: +.. _cray-support: Spack on Cray ----------------------------- diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index f3cb268177..1416074356 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -37,7 +37,10 @@ import sys import os +import re +import shutil import subprocess +from glob import glob # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the @@ -50,10 +53,36 @@ spack_root = '../../..' os.environ['SPACK_ROOT'] = spack_root os.environ['PATH'] += os.pathsep + '$SPACK_ROOT/bin' +# Get the spack version for use in the docs spack_version = subprocess.Popen( [spack_root + '/bin/spack', '-V'], stderr=subprocess.PIPE).communicate()[1].strip().split('.') +# +# Generate package list using spack command +# +with open('package_list.rst', 'w') as plist_file: + subprocess.Popen( + [spack_root + '/bin/spack', 'package-list'], stdout=plist_file) + +# +# Find all the `spack-*` references and add them to a command index +# +command_names = [] +for filename in glob('*rst'): + with open(filename) as f: + for line in f: + match = re.match(r'.. _(spack-[^:]*)', line) + if match: + command_names.append(match.group(1).strip()) + +shutil.copy('command_index.in', 'command_index.rst') +with open('command_index.rst', 'a') as index: + index.write('\n') + for cmd in command_names: + index.write(' * :ref:`%s`\n' % cmd) + + # Set an environment variable so that colify will print output like it would to # a terminal. os.environ['COLIFY_SIZE'] = '25x80' -- cgit v1.2.3-60-g2f50 From 3aaa077c9f530a020eb457c8981c88d422d5c205 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 Aug 2016 11:44:23 +0200 Subject: libSplash: Add Spack Package Adds a package for [libSplash](https://github.com/ComputationalRadiationPhysics/libSplash), a high-level library around serial and parallel HDF5 for regular grids and particle data sets. ``` libSplash aims at developing a HDF5-based I/O library for HPC simulations. It is created as an easy-to-use frontend for the standard HDF5 library with support for MPI processes in a cluster environment. While the standard HDF5 library provides detailed low-level control, libSplash simplifies tasks commonly found in large-scale HPC simulations, such as iter- ative computations and MPI distributed processes. ``` libSplash is a dependency for [PIConGPU](http://picongpu.hzdr.de), an open-source, many-core, fully-relativistic particle-in-cell code and further software developed at [Helmholz-Zentrum Dresden - Rossendorf](https://www.hzdr.de). libSplash builds in two versions, one without MPI writing domain-decomposed posix-style HDF5 files per process and one (default) with MPI and MPI-I/O ("parallel HDF5") support aggregating into a single file per MPI communicator. libSplash is used in conjunction with [openPMD](http://openPMD.org), see also [github.com/openPMD/](https://github.com/openPMD/). --- .../repos/builtin/packages/libsplash/package.py | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libsplash/package.py diff --git a/var/spack/repos/builtin/packages/libsplash/package.py b/var/spack/repos/builtin/packages/libsplash/package.py new file mode 100644 index 0000000000..dd47ea0993 --- /dev/null +++ b/var/spack/repos/builtin/packages/libsplash/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Libsplash(Package): + """ + libSplash aims at developing a HDF5-based I/O library for HPC simulations. + It is created as an easy-to-use frontend for the standard HDF5 library + with support for MPI processes in a cluster environment. While the + standard HDF5 library provides detailed low-level control, libSplash + simplifies tasks commonly found in large-scale HPC simulations, such as + iterative computations and MPI distributed processes. + """ + + homepage = "https://github.com/ComputationalRadiationPhysics/libSplash" + url = "https://github.com/ComputationalRadiationPhysics/libSplash/archive/v1.4.0.tar.gz" + + version('1.4.0', '2de37bcef6fafa1960391bf44b1b50e0') + version('1.3.1', '524580ba088d97253d03b4611772f37c') + version('1.2.4', '3fccb314293d22966beb7afd83b746d0') + + variant('mpi', default=True, + description='Enable parallel I/O (one-file aggregation) support') + + depends_on('cmake', type='build') + depends_on('hdf5@1.8.6:', when='~mpi') + depends_on('hdf5@1.8.6:+mpi', when='+mpi') + depends_on('mpi', when='+mpi') + + def install(self, spec, prefix): + with working_dir('spack-build', create=True): + cmake('-DCMAKE_INSTALL_PREFIX=%s' % prefix, + '..', *std_cmake_args) + + make() + make('install') -- cgit v1.2.3-60-g2f50 From 03c4d65af1e892446d37febf3a30d49934bf08b7 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 Aug 2016 12:45:53 +0200 Subject: PNGwriter: Add Spack Package Adds a package for [PNGwriter](https://github.com/pngwriter/pngwriter/), a simple high-level C++ png API used in scientific projects. ``` PNGwriter is a very easy to use open source graphics library that uses PNG as its output format. The interface has been designed to be as simple and intuitive as possible. It supports plotting and reading pixels in the RGB (red, green, blue), HSV (hue, saturation, value/brightness) and CMYK (cyan, magenta, yellow, black) colour spaces, basic shapes, scaling, bilinear interpolation, full TrueType antialiased and rotated text support, bezier curves, opening existing PNG images and more. ``` PNGwriter is a dependency for [PIConGPU](http://picongpu.hzdr.de), an open-source, many-core, fully-relativistic particle-in-cell code and further software developed at [Helmholz-Zentrum Dresden - Rossendorf](https://www.hzdr.de). --- .../repos/builtin/packages/pngwriter/package.py | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pngwriter/package.py diff --git a/var/spack/repos/builtin/packages/pngwriter/package.py b/var/spack/repos/builtin/packages/pngwriter/package.py new file mode 100644 index 0000000000..037a2eb4f3 --- /dev/null +++ b/var/spack/repos/builtin/packages/pngwriter/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 Pngwriter(Package): + """ + PNGwriter is a very easy to use open source graphics library that uses PNG + as its output format. The interface has been designed to be as simple and + intuitive as possible. It supports plotting and reading pixels in the RGB + (red, green, blue), HSV (hue, saturation, value/brightness) and CMYK (cyan, + magenta, yellow, black) colour spaces, basic shapes, scaling, bilinear + interpolation, full TrueType antialiased and rotated text support, bezier + curves, opening existing PNG images and more. + """ + + homepage = "http://pngwriter.sourceforge.net/" + url = "https://github.com/pngwriter/pngwriter/archive/0.5.6.tar.gz" + + version('0.5.6', 'c13bd1fdc0e331a246e6127b5f262136') + + depends_on('cmake', type='build') + depends_on('libpng') + depends_on('zlib') + depends_on('freetype') + + def install(self, spec, prefix): + with working_dir('spack-build', create=True): + cmake('-DCMAKE_INSTALL_PREFIX=%s' % prefix, + '..', *std_cmake_args) + + make() + make('install') -- cgit v1.2.3-60-g2f50 From d2d2234def5a97510e6a98e831e0f86fac61bc59 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 Aug 2016 17:00:09 +0200 Subject: HDF5 Dependency: Rewrite to Union @adamjstewart ``` think you'll find that if you try running something like: spack spec libsplash ^hdf5@1.8.15 It will complain that libsplash does not depend on hdf5. This is a bug in Spack's dependency resolution. A workaround for this is to tell it to always depend on hdf5. ``` @davydden ``` to expand on @adamjstewart comment, spack will make a union of dependencies, i.e. hdf5@1.8.6: + hdf5+mpi = hdf5:1.8.6:+mpi, that's why it works. ``` thank you for the hint! --- var/spack/repos/builtin/packages/libsplash/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libsplash/package.py b/var/spack/repos/builtin/packages/libsplash/package.py index dd47ea0993..0659f7d650 100644 --- a/var/spack/repos/builtin/packages/libsplash/package.py +++ b/var/spack/repos/builtin/packages/libsplash/package.py @@ -46,8 +46,8 @@ class Libsplash(Package): description='Enable parallel I/O (one-file aggregation) support') depends_on('cmake', type='build') - depends_on('hdf5@1.8.6:', when='~mpi') - depends_on('hdf5@1.8.6:+mpi', when='+mpi') + depends_on('hdf5@1.8.6:') + depends_on('hdf5+mpi', when='+mpi') depends_on('mpi', when='+mpi') def install(self, spec, prefix): -- cgit v1.2.3-60-g2f50 From 732c1985efde2ef0ef1e0c57c2e0ef464be6a2e9 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 22 Aug 2016 10:22:42 -0500 Subject: Overhaul Spack's CI Infrastructure --- .travis.yml | 39 ++++++++++--------- README.md | 2 +- share/spack/qa/run-doc-tests | 4 ++ share/spack/qa/run-flake8 | 86 ----------------------------------------- share/spack/qa/run-flake8-tests | 86 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 112 insertions(+), 105 deletions(-) create mode 100755 share/spack/qa/run-doc-tests delete mode 100755 share/spack/qa/run-flake8 create mode 100755 share/spack/qa/run-flake8-tests diff --git a/.travis.yml b/.travis.yml index b376a33490..f6c6817121 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,27 +1,35 @@ language: python +# Construct build matrix python: - - "2.6" - - "2.7" + - 2.6 + - 2.7 + env: - - TEST_TYPE=unit - - TEST_TYPE=flake8 + - TEST_SUITE=unit + - TEST_SUITE=flake8 + - TEST_SUITE=doc -# Exclude flake8 from python 2.6 matrix: exclude: - - python: "2.6" + - python: 2.6 + # Flake8 no longer supports Python 2.6 env: TEST_TYPE=flake8 # Use new Travis infrastructure (Docker can't sudo yet) sudo: false -# Install coveralls to obtain code coverage +# Cache dependencies +cache: pip + +# Install various dependencies install: - - "pip install coveralls" - - "pip install flake8" + - pip install coveralls + - pip install flake8 + - pip install sphinx + - pip install mercurial -before_install: +before_script: # Need this for the git tests to succeed. - git config --global user.email "spack@example.com" - git config --global user.name "Test User" @@ -29,18 +37,13 @@ before_install: # Need this to be able to compute the list of changed files - git fetch origin develop:develop -script: - # Run unit tests with code coverage plus install libdwarf - - 'if [ "$TEST_TYPE" = "unit" ]; then share/spack/qa/run-unit-tests; fi' - # Run flake8 code style checks. - - 'if [ "$TEST_TYPE" = "flake8" ]; then share/spack/qa/run-flake8; fi' +script: share/spack/qa/run-$TEST_SUITE-tests after_success: - - 'if [ "$TEST_TYPE" = "unit" ] && [ "$TRAVIS_PYTHON_VERSION" = "2.7" ]; then coveralls; fi' + - if [[ $TEST_SUITE == unit && $TRAVIS_PYTHON_VERSION -eq 2.7 ]]; then coveralls; fi notifications: email: - recipients: - - tgamblin@llnl.gov + recipients: tgamblin@llnl.gov on_success: change on_failure: always diff --git a/README.md b/README.md index 27d62951a1..cf6f008ea6 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Before you send a PR, your code should pass the following checks: * Your contribution will need to pass the `spack test` command. Run this before submitting your PR. -* Also run the `share/spack/qa/run-flake8` script to check for PEP8 compliance. +* Also run the `share/spack/qa/run-flake8-tests` script to check for PEP8 compliance. To encourage contributions and readability by a broad audience, Spack uses the [PEP8](https://www.python.org/dev/peps/pep-0008/) coding standard with [a few exceptions](https://github.com/LLNL/spack/blob/develop/.flake8). diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests new file mode 100755 index 0000000000..e5b684fe59 --- /dev/null +++ b/share/spack/qa/run-doc-tests @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +# pass +exit 0 diff --git a/share/spack/qa/run-flake8 b/share/spack/qa/run-flake8 deleted file mode 100755 index ffc82313a5..0000000000 --- a/share/spack/qa/run-flake8 +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash -# -# This script runs source code style checks on Spack. -# -# To run it, you'll need to have the Python flake8 installed locally. -# -PYTHONPATH=./lib/spack:$PYTHONPATH - -flake8="$(which flake8)" -if [[ ! $flake8 ]]; then - echo "ERROR: flake8 is required to run this script." - exit 1 -fi - -# Move to Spack root; allows script to be run from anywhere -cd "$(dirname "$0")/../../.." - -# Add changed files that have been committed since branching off of develop -changed=($(git diff --name-only --find-renames develop... -- '*.py')) -# Add changed files that have been staged but not yet committed -changed+=($(git diff --name-only --find-renames --cached -- '*.py')) -# Add changed files that are unstaged -changed+=($(git diff --name-only --find-renames -- '*.py')) -# Add new files that are untracked -changed+=($(git ls-files --exclude-standard --other -- '*.py')) - -# Ensure that each file in the array is unique -changed=($(printf '%s\n' "${changed[@]}" | sort -u)) - -function cleanup { - # Restore original package files after modifying them. - for file in "${changed[@]}"; do - if [[ -e "${file}.sbak~" ]]; then - mv "${file}.sbak~" "${file}" - fi - done -} - -# Cleanup temporary files upon exit or when script is killed -trap cleanup EXIT SIGINT SIGTERM - -# Add approved style exemptions to the changed packages. -for file in "${changed[@]}"; do - # Make a backup to restore later - cp "$file" "$file.sbak~" - - # - # Exemptions for package.py files - # - if [[ $file = *package.py ]]; then - # Exempt lines with urls and descriptions from overlong line errors. - perl -i -pe 's/^(\s*homepage\s*=.*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*url\s*=.*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*version\(.*\).*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*variant\(.*\).*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*depends_on\(.*\).*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*extends\(.*\).*)$/\1 # NOQA: ignore=E501/' $file - - # Exempt '@when' decorated functions from redefinition errors. - perl -i -pe 's/^(\s*\@when\(.*\).*)$/\1 # NOQA: ignore=F811/' $file - fi - - # - # Exemptions for all files - # - perl -i -pe 's/^(.*(https?|file)\:.*)$/\1 # NOQA: ignore=E501/' $file -done - -if [[ "${changed[@]}" ]]; then - echo ======================================================= - echo flake8: running flake8 code checks on spack. - echo - echo Modified files: - echo "${changed[@]}" | perl -pe 's/^/ /;s/ +/\n /g' - echo ======================================================= - if flake8 --format pylint "${changed[@]}"; then - echo "Flake8 checks were clean." - else - echo "Flake8 found errors." - exit 1 - fi -else - echo No core framework files modified. -fi - -exit 0 diff --git a/share/spack/qa/run-flake8-tests b/share/spack/qa/run-flake8-tests new file mode 100755 index 0000000000..9556b0d250 --- /dev/null +++ b/share/spack/qa/run-flake8-tests @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +# +# This script runs source code style checks on Spack. +# +# To run it, you'll need to have the Python flake8 installed locally. +# +PYTHONPATH=./lib/spack:$PYTHONPATH + +flake8="$(which flake8)" +if [[ ! $flake8 ]]; then + echo "ERROR: flake8 is required to run this script." + exit 1 +fi + +# Move to Spack root; allows script to be run from anywhere +cd "$(dirname "$0")/../../.." + +# Add changed files that have been committed since branching off of develop +changed=($(git diff --name-only --find-renames develop... -- '*.py')) +# Add changed files that have been staged but not yet committed +changed+=($(git diff --name-only --find-renames --cached -- '*.py')) +# Add changed files that are unstaged +changed+=($(git diff --name-only --find-renames -- '*.py')) +# Add new files that are untracked +changed+=($(git ls-files --exclude-standard --other -- '*.py')) + +# Ensure that each file in the array is unique +changed=($(printf '%s\n' "${changed[@]}" | sort -u)) + +function cleanup { + # Restore original package files after modifying them. + for file in "${changed[@]}"; do + if [[ -e "${file}.sbak~" ]]; then + mv "${file}.sbak~" "${file}" + fi + done +} + +# Cleanup temporary files upon exit or when script is killed +trap cleanup EXIT SIGINT SIGTERM + +# Add approved style exemptions to the changed packages. +for file in "${changed[@]}"; do + # Make a backup to restore later + cp "$file" "$file.sbak~" + + # + # Exemptions for package.py files + # + if [[ $file = *package.py ]]; then + # Exempt lines with urls and descriptions from overlong line errors. + perl -i -pe 's/^(\s*homepage\s*=.*)$/\1 # NOQA: ignore=E501/' $file + perl -i -pe 's/^(\s*url\s*=.*)$/\1 # NOQA: ignore=E501/' $file + perl -i -pe 's/^(\s*version\(.*\).*)$/\1 # NOQA: ignore=E501/' $file + perl -i -pe 's/^(\s*variant\(.*\).*)$/\1 # NOQA: ignore=E501/' $file + perl -i -pe 's/^(\s*depends_on\(.*\).*)$/\1 # NOQA: ignore=E501/' $file + perl -i -pe 's/^(\s*extends\(.*\).*)$/\1 # NOQA: ignore=E501/' $file + + # Exempt '@when' decorated functions from redefinition errors. + perl -i -pe 's/^(\s*\@when\(.*\).*)$/\1 # NOQA: ignore=F811/' $file + fi + + # + # Exemptions for all files + # + perl -i -pe 's/^(.*(https?|file)\:.*)$/\1 # NOQA: ignore=E501/' $file +done + +if [[ "${changed[@]}" ]]; then + echo ======================================================= + echo flake8: running flake8 code checks on spack. + echo + echo Modified files: + echo "${changed[@]}" | perl -pe 's/^/ /;s/ +/\n /g' + echo ======================================================= + if flake8 --format pylint "${changed[@]}"; then + echo "Flake8 checks were clean." + else + echo "Flake8 found errors." + exit 1 + fi +else + echo No core framework files modified. +fi + +exit 0 -- cgit v1.2.3-60-g2f50 From c6aa32bb3c96d3e9a6db3789fcdda9f2227e8129 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 22 Aug 2016 12:07:50 -0500 Subject: Some flake8 settings weren't documented --- .flake8 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.flake8 b/.flake8 index b178a2da57..023f392952 100644 --- a/.flake8 +++ b/.flake8 @@ -5,8 +5,10 @@ # rationale is. # # Let people line things up nicely: +# - E129: visually indented line with same indent as next logical line # - E221: multiple spaces before operator -# - E241: multiple spaces after ‘,’ +# - E241: multiple spaces after ',' +# - E272: multiple spaces before keyword # # Let people use terse Python features: # - E731 : lambda expressions @@ -15,9 +17,10 @@ # - F403: disable wildcard import # # These are required to get the package.py files to test clean. -# - F821: undefined name (needed for cmake, configure, etc.) -# - F999: name name be undefined or undefined from star imports. +# - F405: `name` may be undefined, or undefined from star imports: `module` +# - F821: undefined name `name` (needed for cmake, configure, etc.) +# - F999: syntax error in doctest # [flake8] -ignore = E129,E221,E241,E272,E731,F403,F821,F999,F405 +ignore = E129,E221,E241,E272,E731,F403,F405,F821,F999 max-line-length = 79 -- cgit v1.2.3-60-g2f50 From 679f787a65bf4d8b3aa0c7931da7771bb0b8fb1e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 22 Aug 2016 14:35:41 -0500 Subject: Add generic changed_files script --- share/spack/qa/changed_files | 31 +++++++++++++++++++++++++++++++ share/spack/qa/run-flake8-tests | 39 +++++++++++++++++++++++---------------- 2 files changed, 54 insertions(+), 16 deletions(-) create mode 100755 share/spack/qa/changed_files diff --git a/share/spack/qa/changed_files b/share/spack/qa/changed_files new file mode 100755 index 0000000000..9c60b3b20b --- /dev/null +++ b/share/spack/qa/changed_files @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# +# Description: +# Returns a list of changed files. +# +# Usage: +# changed_files [ ...] +# changed_files [ ...] +# changed_files ["*." ...] +# +# Options: +# Directories, files, or globs to search for changed files. +# + +# Move to root directory of Spack +# Allows script to be run from anywhere +SPACK_ROOT="$(dirname "$0")/../../.." +cd "$SPACK_ROOT" + +# Add changed files that have been committed since branching off of develop +changed=($(git diff --name-only --find-renames develop... -- "$@")) +# Add changed files that have been staged but not yet committed +changed+=($(git diff --name-only --find-renames --cached -- "$@")) +# Add changed files that are unstaged +changed+=($(git diff --name-only --find-renames -- "$@")) +# Add new files that are untracked +changed+=($(git ls-files --exclude-standard --other -- "$@")) + +# Return array +# Ensure that each file in the array is unique +printf '%s\n' "${changed[@]}" | sort -u diff --git a/share/spack/qa/run-flake8-tests b/share/spack/qa/run-flake8-tests index 9556b0d250..6c9f8968e2 100755 --- a/share/spack/qa/run-flake8-tests +++ b/share/spack/qa/run-flake8-tests @@ -1,31 +1,38 @@ #!/usr/bin/env bash # -# This script runs source code style checks on Spack. +# Description: +# Runs source code style checks on Spack. +# See $SPACK_ROOT/.flake8 for a list of +# approved exceptions. # -# To run it, you'll need to have the Python flake8 installed locally. +# Usage: +# run-flake8-tests +# +# Notes: +# Requires flake8. Can be installed by running: +# `spack install py-flake8` +# or: +# `pip install flake8` +# and adding the bin directory to your PATH. # -PYTHONPATH=./lib/spack:$PYTHONPATH +# Check for dependencies flake8="$(which flake8)" if [[ ! $flake8 ]]; then echo "ERROR: flake8 is required to run this script." exit 1 fi -# Move to Spack root; allows script to be run from anywhere -cd "$(dirname "$0")/../../.." +QA_DIR="$(dirname "$0")" +SPACK_ROOT="$QA_DIR/../../.." -# Add changed files that have been committed since branching off of develop -changed=($(git diff --name-only --find-renames develop... -- '*.py')) -# Add changed files that have been staged but not yet committed -changed+=($(git diff --name-only --find-renames --cached -- '*.py')) -# Add changed files that are unstaged -changed+=($(git diff --name-only --find-renames -- '*.py')) -# Add new files that are untracked -changed+=($(git ls-files --exclude-standard --other -- '*.py')) +# Move to root directory of Spack +# Allows script to be run from anywhere +SPACK_ROOT="$(dirname "$0")/../../.." +cd "$SPACK_ROOT" -# Ensure that each file in the array is unique -changed=($(printf '%s\n' "${changed[@]}" | sort -u)) +# Gather array of changed files +changed=($("$QA_DIR/changed_files" "*.py")) function cleanup { # Restore original package files after modifying them. @@ -80,7 +87,7 @@ if [[ "${changed[@]}" ]]; then exit 1 fi else - echo No core framework files modified. + echo No Python files were modified. fi exit 0 -- cgit v1.2.3-60-g2f50 From d2d6c91b6664352ddc1d41dd8bec3cbe837992de Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 22 Aug 2016 16:57:53 -0500 Subject: Run documentation tests when documentation is modified --- share/spack/qa/run-doc-tests | 40 ++++++++++++++++++++++++++++++++++++++-- share/spack/qa/run-flake8-tests | 1 - 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests index e5b684fe59..2be5793d36 100755 --- a/share/spack/qa/run-doc-tests +++ b/share/spack/qa/run-doc-tests @@ -1,4 +1,40 @@ #!/usr/bin/env bash +# +# Description: +# Builds Spack documentation and checks for +# possible syntax errors. Treats warnings as +# fatal errors. +# +# Usage: +# run-doc-tests +# +# Notes: +# Requires sphinx. Can be installed by running: +# `spack install py-sphinx` +# or: +# `pip install sphinx` +# and adding the bin directory to your PATH. +# + +QA_DIR="$(dirname "$0")" +SPACK_ROOT="$QA_DIR/../../.." +DOC_DIR="$SPACK_ROOT/lib/spack/docs" + +# Move to documentation directory +# Allows script to be run from anywhere +cd "$DOC_DIR" + +# Gather array of changed files +changed=($("$QA_DIR/changed_files" lib/spack/docs)) + +# Cleanup temporary files upon exit or when script is killed +trap 'make clean' EXIT SIGINT SIGTERM + +# Only run tests if documentation was updated +if [[ "${changed[@]}" ]]; then + # Treat warnings as fatal errors + make SPHINXOPTS=-W +else + echo No documentation was modified. +fi -# pass -exit 0 diff --git a/share/spack/qa/run-flake8-tests b/share/spack/qa/run-flake8-tests index 6c9f8968e2..6c7b4f2c79 100755 --- a/share/spack/qa/run-flake8-tests +++ b/share/spack/qa/run-flake8-tests @@ -28,7 +28,6 @@ SPACK_ROOT="$QA_DIR/../../.." # Move to root directory of Spack # Allows script to be run from anywhere -SPACK_ROOT="$(dirname "$0")/../../.." cd "$SPACK_ROOT" # Gather array of changed files -- cgit v1.2.3-60-g2f50 From 1fc14fd7eddedccc6a24b34b42b9c26c96ded0db Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 22 Aug 2016 18:40:53 -0500 Subject: Only run unit tests when core Spack framework is modified --- share/spack/qa/check_dependencies | 32 +++++++++++++++++++ share/spack/qa/run-doc-tests | 25 +++++++++------ share/spack/qa/run-flake8-tests | 67 +++++++++++++++++++-------------------- share/spack/qa/run-unit-tests | 56 +++++++++++++++++++++++++++----- 4 files changed, 127 insertions(+), 53 deletions(-) create mode 100755 share/spack/qa/check_dependencies diff --git a/share/spack/qa/check_dependencies b/share/spack/qa/check_dependencies new file mode 100755 index 0000000000..cbcda0ce0f --- /dev/null +++ b/share/spack/qa/check_dependencies @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# +# Description: +# Check to see if dependencies are installed. +# If not, warn the user and tell them how to +# install these dependencies. +# +# Usage: +# check-deps ... +# +# Options: +# One or more dependencies. Must use name of binary. + +for dep in "$@"; do + if ! which $dep &> /dev/null; then + # sphinx-build comes from sphinx + package=$(echo $dep | cut -d - -f 1) + + cat << EOF +ERROR: $package is required to run this script. + +To install with Spack, run: + $ spack install py-$package +or, to install with pip, run: + $ pip install $package +Then add the bin directory to your PATH. +EOF + exit 1 + fi +done + +echo "Dependencies found." diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests index 2be5793d36..bde30f74cc 100755 --- a/share/spack/qa/run-doc-tests +++ b/share/spack/qa/run-doc-tests @@ -9,32 +9,37 @@ # run-doc-tests # # Notes: -# Requires sphinx. Can be installed by running: -# `spack install py-sphinx` -# or: -# `pip install sphinx` -# and adding the bin directory to your PATH. +# Requires sphinx and mercurial. # QA_DIR="$(dirname "$0")" SPACK_ROOT="$QA_DIR/../../.." DOC_DIR="$SPACK_ROOT/lib/spack/docs" -# Move to documentation directory -# Allows script to be run from anywhere -cd "$DOC_DIR" +# Array of dependencies +deps=( + sphinx-build + hg +) + +# Check for dependencies +"$QA_DIR/check_dependencies" "${deps[@]}" || exit 1 # Gather array of changed files changed=($("$QA_DIR/changed_files" lib/spack/docs)) +# Move to documentation directory +# Allows script to be run from anywhere +cd "$DOC_DIR" + # Cleanup temporary files upon exit or when script is killed -trap 'make clean' EXIT SIGINT SIGTERM +trap 'make clean --silent' EXIT SIGINT SIGTERM # Only run tests if documentation was updated if [[ "${changed[@]}" ]]; then # Treat warnings as fatal errors make SPHINXOPTS=-W else - echo No documentation was modified. + echo "No documentation was modified." fi diff --git a/share/spack/qa/run-flake8-tests b/share/spack/qa/run-flake8-tests index 6c7b4f2c79..350ef3161f 100755 --- a/share/spack/qa/run-flake8-tests +++ b/share/spack/qa/run-flake8-tests @@ -9,23 +9,20 @@ # run-flake8-tests # # Notes: -# Requires flake8. Can be installed by running: -# `spack install py-flake8` -# or: -# `pip install flake8` -# and adding the bin directory to your PATH. +# Requires flake8. # -# Check for dependencies -flake8="$(which flake8)" -if [[ ! $flake8 ]]; then - echo "ERROR: flake8 is required to run this script." - exit 1 -fi - QA_DIR="$(dirname "$0")" SPACK_ROOT="$QA_DIR/../../.." +# Array of dependencies +deps=( + flake8 +) + +# Check for dependencies +"$QA_DIR/check_dependencies" "${deps[@]}" || exit 1 + # Move to root directory of Spack # Allows script to be run from anywhere cd "$SPACK_ROOT" @@ -33,6 +30,12 @@ cd "$SPACK_ROOT" # Gather array of changed files changed=($("$QA_DIR/changed_files" "*.py")) +# Exit if no Python files were modified +if [[ ! "${changed[@]}" ]]; then + echo "No Python files were modified." + exit 0 +fi + function cleanup { # Restore original package files after modifying them. for file in "${changed[@]}"; do @@ -55,15 +58,15 @@ for file in "${changed[@]}"; do # if [[ $file = *package.py ]]; then # Exempt lines with urls and descriptions from overlong line errors. - perl -i -pe 's/^(\s*homepage\s*=.*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*url\s*=.*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*version\(.*\).*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*variant\(.*\).*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*depends_on\(.*\).*)$/\1 # NOQA: ignore=E501/' $file - perl -i -pe 's/^(\s*extends\(.*\).*)$/\1 # NOQA: ignore=E501/' $file + perl -i -pe 's/^(\s*homepage\s*=.*)$/\1 # NOQA: ignore=E501/' "$file" + perl -i -pe 's/^(\s*url\s*=.*)$/\1 # NOQA: ignore=E501/' "$file" + perl -i -pe 's/^(\s*version\(.*\).*)$/\1 # NOQA: ignore=E501/' "$file" + perl -i -pe 's/^(\s*variant\(.*\).*)$/\1 # NOQA: ignore=E501/' "$file" + perl -i -pe 's/^(\s*depends_on\(.*\).*)$/\1 # NOQA: ignore=E501/' "$file" + perl -i -pe 's/^(\s*extends\(.*\).*)$/\1 # NOQA: ignore=E501/' "$file" # Exempt '@when' decorated functions from redefinition errors. - perl -i -pe 's/^(\s*\@when\(.*\).*)$/\1 # NOQA: ignore=F811/' $file + perl -i -pe 's/^(\s*\@when\(.*\).*)$/\1 # NOQA: ignore=F811/' "$file" fi # @@ -72,21 +75,15 @@ for file in "${changed[@]}"; do perl -i -pe 's/^(.*(https?|file)\:.*)$/\1 # NOQA: ignore=E501/' $file done -if [[ "${changed[@]}" ]]; then - echo ======================================================= - echo flake8: running flake8 code checks on spack. - echo - echo Modified files: - echo "${changed[@]}" | perl -pe 's/^/ /;s/ +/\n /g' - echo ======================================================= - if flake8 --format pylint "${changed[@]}"; then - echo "Flake8 checks were clean." - else - echo "Flake8 found errors." - exit 1 - fi +echo ======================================================= +echo flake8: running flake8 code checks on spack. +echo +echo Modified files: +echo "${changed[@]}" | perl -pe 's/^/ /;s/ +/\n /g' +echo ======================================================= +if flake8 --format pylint "${changed[@]}"; then + echo "Flake8 checks were clean." else - echo No Python files were modified. + echo "Flake8 found errors." + exit 1 fi - -exit 0 diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index 33fb1bfae2..9ce3062e58 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -1,20 +1,60 @@ #!/usr/bin/env bash # -# This script runs Spack unit tests. +# Description: +# Runs Spack unit tests. # -# It should be executed from the top-level directory of the repo, -# e.g.: +# Usage: +# run-unit-tests [test ...] # -# share/spack/qa/run-unit-tests +# Options: +# Optionally add one or more unit tests +# to only run these tests. # -# To run it, you'll need to have the Python coverage installed locally. +# Notes: +# Requires coverage. # -# Regular spack setup and tests -. ./share/spack/setup-env.sh +QA_DIR="$(dirname "$0")" +SPACK_ROOT="$QA_DIR/../../.." + +# Array of dependencies +deps=( + coverage +) + +# Check for dependencies +"$QA_DIR/check_dependencies" "${deps[@]}" || exit 1 + +# Add Spack to the PATH. +export PATH="$SPACK_ROOT/bin:$PATH" + +# Array of directories containing core Spack framework +core_dirs=( + bin + etc + # lib, but skip documentation + lib/spack/env + lib/spack/external + lib/spack/llnl + lib/spack/spack + share +) + +# Gather array of changed files +changed=($("$QA_DIR/changed_files" "${core_dirs[@]}")) + +# Exit if no core Spack framework files were modified +if [[ ! "${changed[@]}" ]]; then + echo "No core Spack framework files were modified." + exit 0 +fi + +# Run integration tests +# TODO: should these be separated into a different test suite? +source "$SPACK_ROOT/share/spack/setup-env.sh" spack compilers spack config get compilers spack install -v libdwarf # Run unit tests with code coverage -coverage run bin/spack test +coverage run spack test "$@" -- cgit v1.2.3-60-g2f50 From 7f9d098c2ff7e25a55bb3a69bd9d7314af1f9abc Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 23 Aug 2016 11:13:02 -0500 Subject: Add mercurial package, used as test dependency --- share/spack/qa/check_dependencies | 31 ++++++++++++--- share/spack/qa/run-doc-tests | 1 + share/spack/qa/run-unit-tests | 7 +++- .../repos/builtin/packages/py-coverage/package.py | 2 +- .../repos/builtin/packages/py-mercurial/package.py | 44 ++++++++++++++++++++++ 5 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-mercurial/package.py diff --git a/share/spack/qa/check_dependencies b/share/spack/qa/check_dependencies index cbcda0ce0f..292eac7dd3 100755 --- a/share/spack/qa/check_dependencies +++ b/share/spack/qa/check_dependencies @@ -13,16 +13,37 @@ for dep in "$@"; do if ! which $dep &> /dev/null; then - # sphinx-build comes from sphinx - package=$(echo $dep | cut -d - -f 1) + # Map binary name to package name + case $dep in + sphinx-apidoc|sphinx-build) + spack_package=py-sphinx + pip_package=sphinx + ;; + coverage) + spack_package=py-coverage + pip_package=coverage + ;; + flake8) + spack_package=py-flake8 + pip_package=flake8 + ;; + hg) + spack_package=py-mercurial + pip_package=mercurial + ;; + *) + spack_package=$dep + pip_package=$dep + ;; + esac cat << EOF -ERROR: $package is required to run this script. +ERROR: $dep is required to run this script. To install with Spack, run: - $ spack install py-$package + $ spack install $spack_package or, to install with pip, run: - $ pip install $package + $ pip install $pip_package Then add the bin directory to your PATH. EOF exit 1 diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests index bde30f74cc..9feaa3b3e3 100755 --- a/share/spack/qa/run-doc-tests +++ b/share/spack/qa/run-doc-tests @@ -18,6 +18,7 @@ DOC_DIR="$SPACK_ROOT/lib/spack/docs" # Array of dependencies deps=( + sphinx-apidoc sphinx-build hg ) diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index 9ce3062e58..fe2166d2dc 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -20,6 +20,7 @@ SPACK_ROOT="$QA_DIR/../../.." # Array of dependencies deps=( coverage + hg ) # Check for dependencies @@ -28,6 +29,10 @@ deps=( # Add Spack to the PATH. export PATH="$SPACK_ROOT/bin:$PATH" +# Move to root directory of Spack +# Allows script to be run from anywhere +cd "$SPACK_ROOT" + # Array of directories containing core Spack framework core_dirs=( bin @@ -57,4 +62,4 @@ spack config get compilers spack install -v libdwarf # Run unit tests with code coverage -coverage run spack test "$@" +coverage run bin/spack test "$@" diff --git a/var/spack/repos/builtin/packages/py-coverage/package.py b/var/spack/repos/builtin/packages/py-coverage/package.py index c2a698b0bd..1a5b6df3d7 100644 --- a/var/spack/repos/builtin/packages/py-coverage/package.py +++ b/var/spack/repos/builtin/packages/py-coverage/package.py @@ -27,7 +27,7 @@ from spack import * class PyCoverage(Package): """ Testing coverage checker for python """ - # FIXME: add a proper url for your package's homepage here. + homepage = "http://nedbatchelder.com/code/coverage/" url = "https://pypi.python.org/packages/source/c/coverage/coverage-4.0a6.tar.gz" diff --git a/var/spack/repos/builtin/packages/py-mercurial/package.py b/var/spack/repos/builtin/packages/py-mercurial/package.py new file mode 100644 index 0000000000..b1b9ffa1b1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-mercurial/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PyMercurial(Package): + """Mercurial is a free, distributed source control management tool. + It efficiently handles projects of any size and offers an easy and + intuitive interface.""" + + homepage = "https://www.mercurial-scm.org/" + url = "https://pypi.python.org/packages/source/m/mercurial/mercurial-3.9.tar.gz" + + version('3.9', 'e2b355da744e94747daae3a5339d28a0', + url="https://pypi.python.org/packages/22/73/e8ef24d3cb13e4fa2695417e13fd22effa1c8e28465eea91a9f84aa922cd/mercurial-3.9.tar.gz") + + extends('python') + + depends_on('py-setuptools', type='build') + + def install(self, spec, prefix): + setup_py('install', '--prefix={0}'.format(prefix)) -- cgit v1.2.3-60-g2f50 From a235d030ac6fda67da382d57f663bba004f32619 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 23 Aug 2016 11:51:44 -0500 Subject: Fix typos and bugs in Travis config file Forgot to change one of the TEST_TYPEs to TEST_SUITE. -eq not working, trying == instead. Cache doesn't seem to be working, removed. --- .travis.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index f6c6817121..f9bf19148f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,14 +14,11 @@ matrix: exclude: - python: 2.6 # Flake8 no longer supports Python 2.6 - env: TEST_TYPE=flake8 + env: TEST_SUITE=flake8 # Use new Travis infrastructure (Docker can't sudo yet) sudo: false -# Cache dependencies -cache: pip - # Install various dependencies install: - pip install coveralls @@ -40,7 +37,7 @@ before_script: script: share/spack/qa/run-$TEST_SUITE-tests after_success: - - if [[ $TEST_SUITE == unit && $TRAVIS_PYTHON_VERSION -eq 2.7 ]]; then coveralls; fi + - if [[ $TEST_SUITE == unit && $TRAVIS_PYTHON_VERSION == 2.7 ]]; then coveralls; fi notifications: email: -- cgit v1.2.3-60-g2f50 From fda7fcd73dba91bcd1016e3beffc47a4e692fad9 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 23 Aug 2016 13:58:33 -0500 Subject: Fix #1594, duplicate explicit target name --- lib/spack/docs/basic_usage.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index 342c93d609..ae7a3762c6 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -906,7 +906,7 @@ Integration with module systems versions. Spack provides some integration with -`Environment Modules `_ +`Environment Modules `__ and `Dotkit `_ to make it easier to use the packages it installed. @@ -972,7 +972,7 @@ When you install a package with Spack, it automatically generates a module file that lets you add the package to your environment. Currently, Spack supports the generation of `Environment Modules -`_ and `Dotkit +`__ and `Dotkit `_. Generated module files for each of these systems can be found in these directories: -- cgit v1.2.3-60-g2f50 From c36f13e44dae52086ca48e4f16b514642bc91106 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 23 Aug 2016 15:45:04 -0500 Subject: Added more missing dependencies --- share/spack/qa/check_dependencies | 30 ++++++++++++++++++++++-------- share/spack/qa/run-doc-tests | 4 +++- share/spack/qa/run-unit-tests | 4 +++- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/share/spack/qa/check_dependencies b/share/spack/qa/check_dependencies index 292eac7dd3..ba9ede4ae0 100755 --- a/share/spack/qa/check_dependencies +++ b/share/spack/qa/check_dependencies @@ -27,25 +27,39 @@ for dep in "$@"; do spack_package=py-flake8 pip_package=flake8 ;; + git) + spack_package=git + ;; hg) spack_package=py-mercurial pip_package=mercurial ;; + svn) + spack_package=subversion + ;; *) spack_package=$dep pip_package=$dep ;; esac - cat << EOF -ERROR: $dep is required to run this script. + echo "ERROR: $dep is required to run this script." + echo + + if [[ $spack_package ]]; then + echo "To install with Spack, run:" + echo " $ spack install $spack_package" + fi + + if [[ $pip_package ]]; then + echo "To install with pip, run:" + echo " $ pip install $pip_package" + fi + + if [[ $spack_package || $pip_package ]]; then + echo "Then add the bin directory to your PATH." + fi -To install with Spack, run: - $ spack install $spack_package -or, to install with pip, run: - $ pip install $pip_package -Then add the bin directory to your PATH. -EOF exit 1 fi done diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests index 9feaa3b3e3..102eb72d5e 100755 --- a/share/spack/qa/run-doc-tests +++ b/share/spack/qa/run-doc-tests @@ -9,7 +9,7 @@ # run-doc-tests # # Notes: -# Requires sphinx and mercurial. +# Requires sphinx, git, mercurial, and subversion. # QA_DIR="$(dirname "$0")" @@ -20,7 +20,9 @@ DOC_DIR="$SPACK_ROOT/lib/spack/docs" deps=( sphinx-apidoc sphinx-build + git hg + svn ) # Check for dependencies diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index fe2166d2dc..03dfe7cea1 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -11,7 +11,7 @@ # to only run these tests. # # Notes: -# Requires coverage. +# Requires coverage, git, mercurial, and subversion. # QA_DIR="$(dirname "$0")" @@ -20,7 +20,9 @@ SPACK_ROOT="$QA_DIR/../../.." # Array of dependencies deps=( coverage + git hg + svn ) # Check for dependencies -- cgit v1.2.3-60-g2f50 From 2326355497165f90717170e114ff9849b64be1fa Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 23 Aug 2016 17:03:29 -0500 Subject: Fix #1604 and fix #1605, title underline problems --- lib/spack/docs/basic_usage.rst | 203 ++++++++++++++--------- lib/spack/docs/configuration.rst | 23 +-- lib/spack/docs/developer_guide.rst | 67 ++++---- lib/spack/docs/features.rst | 23 ++- lib/spack/docs/getting_started.rst | 9 +- lib/spack/docs/index.rst | 7 +- lib/spack/docs/mirrors.rst | 31 ++-- lib/spack/docs/packaging_guide.rst | 325 ++++++++++++++++++++++--------------- 8 files changed, 411 insertions(+), 277 deletions(-) diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index ae7a3762c6..0a80fa7e2f 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -1,13 +1,14 @@ .. _basic-usage: +=========== Basic usage -===================== +=========== The ``spack`` command has many *subcommands*. You'll only need a small subset of them for typical usage. Note that Spack colorizes output. ``less -R`` should be used with -Spack to maintian this colorization. Eg:: +Spack to maintain this colorization. E.g.:: spack find | less -R @@ -16,8 +17,9 @@ It is recommend that the following be put in your ``.bashrc`` file:: alias less='less -R' +-------------------------- Listing available packages ------------------------------- +-------------------------- To install software with Spack, you need to know what software is available. You can see a list of available package names at the @@ -25,8 +27,9 @@ available. You can see a list of available package names at the .. _spack-list: +^^^^^^^^^^^^^^ ``spack list`` -~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ The ``spack list`` command prints out a list of all of the packages Spack can install: @@ -59,8 +62,9 @@ All packages whose names contain documentation case insensitive: .. _spack-info: +^^^^^^^^^^^^^^ ``spack info`` -~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ To get more information on a particular package from `spack list`, use `spack info`. Just supply the name of a package: @@ -77,8 +81,9 @@ viruses. .. _spack-versions: +^^^^^^^^^^^^^^^^^^ ``spack versions`` -~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^ To see *more* available versions of a package, run ``spack versions``. For example: @@ -95,14 +100,15 @@ by scraping it directly from package web pages. Depending on the package and how its releases are organized, Spack may or may not be able to find remote versions. - +--------------------------- Installing and uninstalling ------------------------------- +--------------------------- .. _spack-install: +^^^^^^^^^^^^^^^^^ ``spack install`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ ``spack install`` will install any package shown by ``spack list``. For example, To install the latest version of the ``mpileaks`` @@ -142,8 +148,9 @@ that the packages is installed: The last line, with the ``[+]``, indicates where the package is installed. +^^^^^^^^^^^^^^^^^^^^^^^^^^^ Building a specific version -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^ Spack can also build *specific versions* of a package. To do this, just add ``@`` after the package name, followed by a version: @@ -172,8 +179,9 @@ customize an installation in :ref:`sec-specs`. .. _spack-uninstall: +^^^^^^^^^^^^^^^^^^^ ``spack uninstall`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ To uninstall a package, type ``spack uninstall ``. This will ask the user for confirmation, and in case will completely remove the directory in which the package was installed. @@ -216,17 +224,18 @@ You may force uninstall a package with the `--force` option but you risk breaking other installed packages. In general, it is safer to remove dependent packages *before* removing their dependencies or use the `--dependents` option. - +------------------------- Seeing installed packages ------------------------------------ +------------------------- We know that ``spack list`` shows you the names of available packages, but how do you figure out which are installed? .. _spack-find: +^^^^^^^^^^^^^^ ``spack find`` -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ ``spack find`` shows the *specs* of installed packages. A spec is like a name, but it has a version, compiler, architecture, and build @@ -367,11 +376,11 @@ will find every installed package with a 'debug' compile-time option enabled. The full spec syntax is discussed in detail in :ref:`sec-specs`. - .. _compiler-config: +---------------------- Compiler configuration ------------------------------------ +---------------------- Spack has the ability to build packages with multiple compilers and compiler versions. Spack searches for compilers on your machine @@ -380,8 +389,9 @@ your path. .. _spack-compilers: +^^^^^^^^^^^^^^^^^^^ ``spack compilers`` -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ You can see which compilers spack has found by running ``spack compilers`` or ``spack compiler list``:: @@ -408,15 +418,17 @@ how this is done is in :ref:`sec-specs`. .. _spack-compiler-add: +^^^^^^^^^^^^^^^^^^^^^^ ``spack compiler add`` -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^ An alias for ``spack compiler find``. .. _spack-compiler-find: +^^^^^^^^^^^^^^^^^^^^^^^ ``spack compiler find`` -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^ If you do not see a compiler in this list, but you want to use it with Spack, you can simply run ``spack compiler find`` with the path to @@ -441,8 +453,9 @@ This loads the environment module for gcc-4.9.0 to add it to .. _spack-compiler-info: +^^^^^^^^^^^^^^^^^^^^^^^ ``spack compiler info`` -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^ If you want to see specifics on a particular compiler, you can run ``spack compiler info`` on it:: @@ -459,9 +472,9 @@ Notice also that we didn\'t have to be too specific about the version. We just said ``intel@15``, and information about the only matching Intel compiler was displayed. - +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Manual compiler configuration -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If auto-detection fails, you can manually configure a compiler by editing your ``~/.spack/compilers.yaml`` file. You can do this by running @@ -518,8 +531,9 @@ following section. .. _sec-specs: +-------------------- Specs & dependencies -------------------------- +-------------------- We know that ``spack install``, ``spack uninstall``, and other commands take a package name with an optional version specifier. In @@ -609,7 +623,6 @@ some *other* version of ``mpich``. In general, such a configuration would likely behave unexpectedly at runtime, and Spack enforces this to ensure a consistent runtime environment. - The point of specs is to abstract this full DAG from Spack users. If a user does not care about the DAG at all, she can refer to mpileaks by simply writing ``mpileaks``. If she knows that ``mpileaks`` @@ -646,8 +659,9 @@ could depend on ``mpich@1.2:`` if it can only build with version Below are more details about the specifiers that you can add to specs. +^^^^^^^^^^^^^^^^^ Version specifier -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ A version specifier comes somewhere after a package name and starts with ``@``. It can be a single version, e.g. ``@1.0``, ``@3``, or @@ -669,9 +683,9 @@ policies set for the particular Spack installation. Details about how versions are compared and how Spack determines if one version is less than another are discussed in the developer guide. - +^^^^^^^^^^^^^^^^^^ Compiler specifier -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^ A compiler specifier comes somewhere after a package name and starts with ``%``. It tells Spack what compiler(s) a particular package @@ -688,9 +702,9 @@ name or compiler specifier to their left in the spec. If the compiler spec is omitted, Spack will choose a default compiler based on site policies. - +^^^^^^^^ Variants -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^ Variants are named options associated with a particular package. They are optional, as each package must provide default values for each variant it @@ -742,9 +756,9 @@ variants using the backwards compatibility syntax and uses only ``~`` for disabled boolean variants. We allow ``-`` and spaces on the command line is provided for convenience and legibility. - +^^^^^^^^^^^^^^ Compiler Flags -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ Compiler flags are specified using the same syntax as non-boolean variants, but fulfill a different purpose. While the function of a variant is set by @@ -764,9 +778,9 @@ in gnu autotools. If all flags are set, the order is ``$cppflags $cflags|$cxxflags $ldflags command $ldlibs`` for C and C++ and ``$fflags $cppflags $ldflags command $ldlibs`` for fortran. - +^^^^^^^^^^^^^^^^^^^^^^^ Architecture specifiers -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^ The architecture can be specified by using the reserved words ``target`` and/or ``os`` (``target=x86-64 os=debian7``). You can also @@ -781,11 +795,11 @@ Spack will autodetect what kind of operating system is on your machine as well as the processor. For more information on how the architecture can be used on Cray machines, check here :ref:`cray-support` - .. _sec-virtual-dependencies: +-------------------- Virtual dependencies -------------------------- +-------------------- The dependence graph for ``mpileaks`` we saw above wasn't *quite* accurate. ``mpileaks`` uses MPI, which is an interface that has many @@ -828,9 +842,9 @@ version of a virtual package, e.g. if an application needs MPI-2 functions, it can depend on ``mpi@2:`` to indicate that it needs some implementation that provides MPI-2 functions. - +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Constraining virtual packages -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When installing a package that depends on a virtual package, you can opt to specify the particular provider you want to use, or you can let @@ -857,8 +871,9 @@ any MPI implementation will do. If another package depends on error. Likewise, if you try to plug in some package that doesn't provide MPI, Spack will raise an error. +^^^^^^^^^^^^^^^^^^^^^^^^ Specifying Specs by Hash -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^ Complicated specs can become cumbersome to enter on the command line, especially when many of the qualifications are necessary to @@ -876,8 +891,9 @@ Note that this will not work to reinstall a depencency uninstalled by .. _spack-providers: +^^^^^^^^^^^^^^^^^^^ ``spack providers`` -~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ You can see what packages provide a particular virtual package using ``spack providers``. If you wanted to see what packages provide @@ -895,6 +911,7 @@ versions are now filtered out. .. _shell-support: +------------------------------- Integration with module systems ------------------------------- @@ -910,10 +927,9 @@ Spack provides some integration with and `Dotkit `_ to make it easier to use the packages it installed. - - +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Installing Environment Modules -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In order to use Spack's generated environment modules, you must have installed the *Environment Modules* package. On many Linux @@ -931,7 +947,6 @@ Environment Modules, you can get it with Spack: spack install environment-modules - In this case to activate it automatically you need to add the following two lines to your ``.bashrc`` profile (or similar): @@ -944,11 +959,12 @@ If you use a Unix shell other than ``bash``, modify the commands above accordingly and source the appropriate file in ``${MODULES_HOME}/Modules/init/``. - .. TODO : Add a similar section on how to install dotkit ? +^^^^^^^^^^^^^^^^^^^^^^^^ Spack and module systems -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^ + You can enable shell support by sourcing some files in the ``/share/spack`` directory. @@ -986,9 +1002,9 @@ The directories are automatically added to your ``MODULEPATH`` and ``DK_NODE`` environment variables when you enable Spack's `shell support `_. - +^^^^^^^^^^^^^^^^^^^^^^^ Using Modules & Dotkits -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^ If you have shell support enabled you should be able to run either ``module avail`` or ``use -l spack`` to see what modules/dotkits have @@ -1093,8 +1109,9 @@ a package, you can type unload or unuse similarly: only available if you have enabled Spack's shell support *and* you have dotkit or modules installed on your machine. +^^^^^^^^^^^^^^^^^^^^^^ Ambiguous module names -~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^ If a spec used with load/unload or use/unuse is ambiguous (i.e. more than one installed package matches it), then Spack will warn you: @@ -1118,8 +1135,9 @@ used ``gcc``. You could therefore just type: To identify just the one built with the Intel compiler. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Module files generation and customization -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Environment Modules and Dotkit files are generated when packages are installed, and are placed in the following directories under the Spack root: @@ -1134,8 +1152,10 @@ The content that gets written in each module file can be customized in two ways: 1. overriding part of the ``spack.Package`` API within a ``package.py`` 2. writing dedicated configuration files +^^^^^^^^^^^^^^^^^^^^^^^^ Override ``Package`` API ^^^^^^^^^^^^^^^^^^^^^^^^ + There are currently two methods in ``spack.Package`` that may affect the content of module files: @@ -1145,9 +1165,9 @@ of module files: """Set up the compile and runtime environments for a package.""" pass - +""""""""""""""""" Recursive Modules -`````````````````` +""""""""""""""""" In some cases, it is desirable to load not just a module, but also all the modules it depends on. This is not required for most modules @@ -1165,8 +1185,9 @@ Modules may be loaded recursively with the ``load`` command's More than one spec may be placed on the command line here. +""""""""""""""""""""""""""""""""" Module Commands for Shell Scripts -`````````````````````````````````` +""""""""""""""""""""""""""""""""" Although Spack is flexible, the ``module`` command is much faster. This could become an issue when emitting a series of ``spack load`` @@ -1215,9 +1236,9 @@ This script may be directly executed in bash via source <( spack module find tcl --dependencies --shell py-numpy git ) - +^^^^^^^^^^^^^^^^^^^^^^^^^ Regenerating Module files -~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: python @@ -1230,6 +1251,7 @@ module file content for the package you are currently writing, the second allows for modifications to your dependees module file. In both cases one needs to fill ``run_env`` with the desired list of environment modifications. +"""""""""""""""""""""""""""""""""""""""""""""""" Example : ``builtin/packages/python/package.py`` """""""""""""""""""""""""""""""""""""""""""""""" @@ -1246,6 +1268,7 @@ overrides ``setup_dependent_environment`` in the following way: to insert the appropriate ``PYTHONPATH`` modifications in the module files of python packages. +^^^^^^^^^^^^^^^^^^^ Configuration files ^^^^^^^^^^^^^^^^^^^ @@ -1275,8 +1298,10 @@ For each module system that can be enabled a finer configuration is possible: The structure under the ``tcl`` and ``dotkit`` keys is almost equal, and will be showcased in the following by some examples. +""""""""""""""""""""""""""""""""""""""" Select module files by spec constraints """"""""""""""""""""""""""""""""""""""" + Using spec syntax it's possible to have different customizations for different groups of module files. @@ -1316,6 +1341,7 @@ what will happen is that: first, no matter where they appear in the configuration file. All the other spec constraints are instead evaluated top to bottom. +"""""""""""""""""""""""""""""""""""""""" Filter modifications out of module files """""""""""""""""""""""""""""""""""""""" @@ -1335,6 +1361,7 @@ will generate dotkit module files that will not contain modifications to either ``CPATH`` or ``LIBRARY_PATH`` and environment module files that instead will contain those modifications. +""""""""""""""""""""" Autoload dependencies """"""""""""""""""""" @@ -1357,6 +1384,7 @@ dependencies. ``prerequisites`` that accepts the same values and will add ``prereq`` statements instead of automatically loading other modules. +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Blacklist or whitelist the generation of specific module files """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -1375,6 +1403,7 @@ A configuration file like: will skip module file generation for anything that satisfies ``%gcc@4.4.7``, with the exception of specs that satisfy ``gcc`` or ``llvm``. +"""""""""""""""""""""""""""""""""""""""""""""""" Customize the naming scheme and insert conflicts """""""""""""""""""""""""""""""""""""""""""""""" @@ -1400,6 +1429,7 @@ load two or more versions of the same software at the same time. .. note:: The ``conflict`` option is ``tcl`` specific +^^^^^^^^^^^^^^^^^^^^^^^^^ Regenerating module files ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1410,6 +1440,7 @@ new features. .. _spack-module: +"""""""""""""""""""""""" ``spack module refresh`` """""""""""""""""""""""" @@ -1426,8 +1457,9 @@ regenerate all module and dotkit files from scratch: .. _extensions: +---------------- Filesystem Views -------------------------------- +---------------- .. Maybe this is not the right location for this documentation. @@ -1469,8 +1501,9 @@ Views can be used for a variety of purposes including: - Providing an atomic and monolithic binary distribution, eg for delivery as a single tarball. - Producing ephemeral testing or developing environments. +^^^^^^^^^^^^^^^^^^^^^^ Using Filesystem Views -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^ A filesystem view is created and packages are linked in by the ``spack view`` command's ``symlink`` and ``hardlink`` sub-commands. The @@ -1483,7 +1516,6 @@ files in the ``cmake`` package while retaining its dependencies. .. code-block:: sh - $ spack view -v symlink myview cmake@3.5.2 ==> Linking package: "ncurses" ==> Linking package: "zlib" @@ -1504,9 +1536,9 @@ files in the ``cmake`` package while retaining its dependencies. captoinfo c_rehash infotocap openssl tabs toe tset clear infocmp ncurses6-config reset tic tput - +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Limitations of Filesystem Views -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This section describes some limitations that should be considered in using filesystems views. @@ -1536,12 +1568,9 @@ particular, if two packages require the same sub-tree of dependencies, removing one package (recursively) will remove its dependencies and leave the other package broken. - - - - +--------------------------- Extensions & Python support ------------------------------------- +--------------------------- Spack's installation model assumes that each package will live in its own install prefix. However, certain packages are typically installed @@ -1563,8 +1592,9 @@ an *extension*. Suppose you have Python installed like so: .. _spack-extensions: +^^^^^^^^^^^^^^^^^^^^ ``spack extensions`` -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^ You can find extensions for your Python installation like this: @@ -1618,8 +1648,9 @@ directly when you run ``python``: ImportError: No module named numpy >>> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Extensions & Environment Modules -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ There are two ways to get ``numpy`` working in Python. The first is to use :ref:`shell-support`. You can simply ``use`` or ``load`` the @@ -1643,9 +1674,9 @@ or, for dotkit: Now ``import numpy`` will succeed for as long as you keep your current session open. - +^^^^^^^^^^^^^^^^^^^^^ Activating Extensions -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^ It is often desirable to have certain packages *always* available as part of a Python installation. Spack offers a more permanent solution @@ -1655,8 +1686,9 @@ installation: .. _spack-activate: +^^^^^^^^^^^^^^^^^^ ``spack activate`` -^^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^ .. code-block:: sh @@ -1700,7 +1732,6 @@ packages listed as activated: -- linux-debian7-x86_64 / gcc@4.4.7 -------------------------------- py-nose@1.3.4 py-numpy@1.9.1 py-setuptools@11.3.1 - Now, when a user runs python, ``numpy`` will be available for import *without* the user having to explicitly loaded. ``python@2.7.8`` now acts like a system Python installation with ``numpy`` installed inside @@ -1718,8 +1749,10 @@ into the same prefix. Users who want a different version of a package can still get it by using environment modules, but they will have to explicitly load their preferred version. +^^^^^^^^^^^^^^^^^^^^^ ``spack activate -f`` -^^^^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^ + If, for some reason, you want to activate a package *without* its dependencies, you can use ``spack activate -f``: @@ -1730,8 +1763,9 @@ dependencies, you can use ``spack activate -f``: .. _spack-deactivate: +^^^^^^^^^^^^^^^^^^^^ ``spack deactivate`` -^^^^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^ We've seen how activating an extension can be used to set up a default version of a Python module. Obviously, you may want to change that at @@ -1751,8 +1785,9 @@ several variants: spack deactivate -a python +----------------------- Filesystem requirements --------------------------- +----------------------- Spack currently needs to be run from a filesystem that supports ``flock`` locking semantics. Nearly all local filesystems and recent @@ -1797,11 +1832,16 @@ This issue typically manifests with the error below: A nicer error message is TBD in future versions of Spack. +<<<<<<< c36f13e44dae52086ca48e4f16b514642bc91106 .. _cray-support: +======= +.. _spack-cray: +>>>>>>> Fix #1604 and fix #1605, title underline problems +------------- Spack on Cray ------------------------------ +------------- Spack differs slightly when used on a Cray system. The architecture spec can differentiate between the front-end and back-end processor and operating system. @@ -1835,10 +1875,9 @@ And the front-end operating system is: spack install zlib os=SuSE11 - - +^^^^^^^^^^^^^^^^^^^^^^^ Cray compiler detection -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^ Spack can detect compilers using two methods. For the front-end, we treat everything the same. The difference lies in back-end compiler detection. @@ -1880,8 +1919,9 @@ Spack sets the default Cray link type to dynamic, to better match other other platforms. Individual packages can enable static linking (which is the default outside of Spack on cray systems) using the -static flag. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Setting defaults and using Cray modules -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If you want to use default compilers for each PrgEnv and also be able to load cray external modules, you will need to set up a packages.yaml. @@ -1934,16 +1974,17 @@ if we want to build with intel compilers, use version 16.0.0.109. We add a spec for each compiler type for each cray modules. This ensures that for each compiler on our system we can use that external module. - For more on external packages check out the section :ref:`sec-external_packages`. +------------ Getting Help ------------------------ +------------ .. _spack-help: +^^^^^^^^^^^^^^ ``spack help`` -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ If you don't find what you need here, the ``help`` subcommand will print out out a list of *all* of ``spack``'s options and subcommands: diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index d39c932021..bce6005a7c 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -1,12 +1,14 @@ .. _configuration: +============= Configuration -=================================== +============= .. _temp-space: +--------------- Temporary space ----------------------------- +--------------- .. warning:: Temporary space configuration will eventually be moved to configuration files, but currently these settings are in @@ -55,8 +57,10 @@ directory is. .. _sec-external_packages: +----------------- External Packages ----------------------------- +----------------- + Spack can be configured to use externally-installed packages rather than building its own packages. This may be desirable if machines ship with system packages, such as a customized MPI @@ -126,9 +130,9 @@ The ``buildable`` does not need to be paired with external packages. It could also be used alone to forbid packages that may be buggy or otherwise undesirable. - +-------------------------- Concretization Preferences --------------------------------- +-------------------------- Spack can be configured to prefer certain compilers, package versions, depends_on, and variants during concretization. @@ -136,7 +140,6 @@ The preferred configuration can be controlled via the ``~/.spack/packages.yaml`` file for user configuations, or the ``etc/spack/packages.yaml`` site configuration. - Here's an example packages.yaml file that sets preferred packages: .. code-block:: sh @@ -152,7 +155,6 @@ Here's an example packages.yaml file that sets preferred packages: providers: mpi: [mvapich, mpich, openmpi] - At a high level, this example is specifying how packages should be concretized. The opencv package should prefer using gcc 4.9 and be built with debug options. The gperftools package should prefer version @@ -185,9 +187,9 @@ concretization rules. A provider lists a value that packages may ``depend_on`` (e.g, mpi) and a list of rules for fulfilling that dependency. - +--------- Profiling ------------------- +--------- Spack has some limited built-in support for profiling, and can report statistics using standard Python timing tools. To use this feature, @@ -195,8 +197,9 @@ supply ``-p`` to Spack on the command line, before any subcommands. .. _spack-p: +^^^^^^^^^^^^ ``spack -p`` -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^ ``spack -p`` output looks like this: diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index d28fe4b2a5..5c712149b5 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -1,7 +1,8 @@ .. _developer_guide: +=============== Developer Guide -===================== +=============== This guide is intended for people who want to work on Spack itself. If you just want to develop packages, see the :ref:`packaging-guide`. @@ -11,8 +12,9 @@ It is assumed that you've read the :ref:`basic-usage` and concepts discussed there. If you're not, we recommend reading those first. +-------- Overview ------------------------ +-------- Spack is designed with three separate roles in mind: @@ -63,9 +65,9 @@ building the software off to the package object. The rest of this document describes all the pieces that come together to make that happen. - +------------------- Directory Structure -------------------------- +------------------- So that you can familiarize yourself with the project, we'll start with a high level view of Spack's directory structure:: @@ -123,15 +125,16 @@ use the thing that's supposed to spare them from the details of big, complicated packages. The end result is that Spack works out of the box: clone it and add ``bin`` to your PATH and you're ready to go. - +-------------- Code Structure -------------------------- +-------------- This section gives an overview of the various Python modules in Spack, grouped by functionality. +^^^^^^^^^^^^^^^^^^^^^^^ Package-related modules -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^ :mod:`spack.package` Contains the :class:`Package ` class, which @@ -158,9 +161,9 @@ Package-related modules decorator, which allows :ref:`multimethods ` in packages. - +^^^^^^^^^^^^^^^^^^^^ Spec-related modules -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^ :mod:`spack.spec` Contains :class:`Spec ` and :class:`SpecParser @@ -208,9 +211,9 @@ Spec-related modules Not yet implemented. Should eventually have architecture descriptions for cross-compiling. - +^^^^^^^^^^^^^^^^^ Build environment -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ :mod:`spack.stage` Handles creating temporary directories for builds. @@ -224,15 +227,17 @@ Build environment Create more implementations of this to change the hierarchy and naming scheme in ``$spack_prefix/opt`` +^^^^^^^^^^^^^^^^^ Spack Subcommands -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ :mod:`spack.cmd` Each module in this package implements a Spack subcommand. See :ref:`writing commands ` for details. +^^^^^^^^^^ Unit tests -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^ :mod:`spack.test` Implements Spack's test suite. Add a module and put its name in @@ -242,8 +247,9 @@ Unit tests This is a fake package hierarchy used to mock up packages for Spack's test suite. +^^^^^^^^^^^^^ Other Modules -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^ :mod:`spack.globals` Includes global settings for Spack. the default policy classes for @@ -269,13 +275,13 @@ Other Modules :class:`SpackError `, the base class for Spack's exception hierarchy. - +------------ Spec objects -------------------------- +------------ +--------------- Package objects -------------------------- - +--------------- Most spack commands look something like this: @@ -286,34 +292,37 @@ look something like this: #. Instantiate a package based on the spec, and #. Call methods (e.g., ``install()``) on the package object. - - The information in Package files is used at all stages in this process. - Conceptually, packages are overloaded. They contain +------------- Stage objects -------------------------- +------------- .. _writing-commands: +---------------- Writing commands -------------------------- +---------------- +---------- Unit tests -------------------------- +---------- +------------ Unit testing -------------------------- - +------------ +------------------ Developer commands -------------------------- +------------------ +^^^^^^^^^^^^^ ``spack doc`` -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^ +^^^^^^^^^^^^^^ ``spack test`` -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ diff --git a/lib/spack/docs/features.rst b/lib/spack/docs/features.rst index 27a3b4b435..d746e8ad50 100644 --- a/lib/spack/docs/features.rst +++ b/lib/spack/docs/features.rst @@ -1,13 +1,15 @@ +================ Feature overview -================== +================ This is a high-level overview of features that make Spack different from other `package managers `_ and `port systems `_. +--------------------------- Simple package installation ----------------------------- +--------------------------- Installing the default version of a package is simple. This will install the latest version of the ``mpileaks`` package and all of its dependencies: @@ -16,8 +18,9 @@ the latest version of the ``mpileaks`` package and all of its dependencies: $ spack install mpileaks +-------------------------------- Custom versions & configurations -------------------------------------------- +-------------------------------- Spack allows installation to be customized. Users can specify the version, build compiler, compile-time options, and cross-compile @@ -47,9 +50,9 @@ Users can specify as many or few options as they care about. Spack will fill in the unspecified values with sensible defaults. The two listed syntaxes for variants are identical when the value is boolean. - +---------------------- Customize dependencies -------------------------------------- +---------------------- Spack allows *dependencies* of a particular installation to be customized extensively. Suppose that ``mpileaks`` depends indirectly @@ -61,23 +64,25 @@ configurations for the dependencies: # Install mpileaks and link it with specific versions of libelf and libdwarf $ spack install mpileaks@1.1.2 %gcc@4.7.3 +debug ^libelf@0.8.12 ^libdwarf@20130729+debug - +------------------------ Non-destructive installs -------------------------------------- +------------------------ Spack installs every unique package/dependency configuration into its own prefix, so new installs will not break existing ones. +------------------------------- Packages can peacefully coexist -------------------------------------- +------------------------------- Spack avoids library misconfiguration by using ``RPATH`` to link dependencies. When a user links a library or runs a program, it is tied to the dependencies it was built with, so there is no need to manipulate ``LD_LIBRARY_PATH`` at runtime. +------------------------- Creating packages is easy -------------------------------------- +------------------------- To create a new packages, all Spack needs is a URL for the source archive. The ``spack create`` command will create a boilerplate diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 2c5b68ea65..47f66b429b 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -1,8 +1,10 @@ +=============== Getting Started -==================== +=============== +-------- Download --------------------- +-------- Getting spack is easy. You can clone it from the `github repository `_ using this command: @@ -35,8 +37,9 @@ For a richer experience, use Spack's `shell support This automatically adds Spack to your ``PATH``. +------------ Installation --------------------- +------------ You don't need to install Spack; it's ready to run as soon as you clone it from git. diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index a5bbd4e23b..603245b5dc 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -3,8 +3,9 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. +=================== Spack Documentation -================================= +=================== Spack is a package management tool designed to support multiple versions and configurations of software on a wide variety of platforms @@ -36,8 +37,9 @@ package: If you're new to spack and want to start using it, see :doc:`getting_started`, or refer to the full manual below. +----------------- Table of Contents ---------------------- +----------------- .. toctree:: :maxdepth: 2 @@ -54,6 +56,7 @@ Table of Contents package_list API Docs +================== Indices and tables ================== diff --git a/lib/spack/docs/mirrors.rst b/lib/spack/docs/mirrors.rst index 583575a565..41e039b838 100644 --- a/lib/spack/docs/mirrors.rst +++ b/lib/spack/docs/mirrors.rst @@ -1,7 +1,8 @@ .. _mirrors: +======= Mirrors -============================ +======= Some sites may not have access to the internet for fetching packages. These sites will need a local repository of tarballs from which they @@ -51,8 +52,9 @@ contains tarballs for each package, named after each package. .. _spack-mirror: +---------------- ``spack mirror`` ----------------------------- +---------------- Mirrors are managed with the ``spack mirror`` command. The help for ``spack mirror`` looks like this:: @@ -79,8 +81,9 @@ control the URL(s) from which Spack downloads its packages. .. _spack-mirror-create: +----------------------- ``spack mirror create`` ----------------------------- +----------------------- You can create a mirror using the ``spack mirror create`` command, assuming you're on a machine where you can access the internet. @@ -89,7 +92,6 @@ The command will iterate through all of Spack's packages and download the safe ones into a directory structure like the one above. Here is what it looks like: - .. code-block:: bash $ spack mirror create libelf libdwarf @@ -124,8 +126,9 @@ what it looks like: Once this is done, you can tar up the ``spack-mirror-2014-06-24`` directory and copy it over to the machine you want it hosted on. +^^^^^^^^^^^^^^^^^^^ Custom package sets -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ Normally, ``spack mirror create`` downloads all the archives it has checksums for. If you want to only create a mirror for a subset of @@ -138,8 +141,9 @@ command:: Will create a mirror for libelf versions greater than or equal to 0.8.12 and boost versions greater than or equal to 1.44. +^^^^^^^^^^^^ Mirror files -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^ If you have a *very* large number of packages you want to mirror, you can supply a file with specs in it, one per line:: @@ -158,8 +162,9 @@ your site. .. _spack-mirror-add: +-------------------- ``spack mirror add`` ----------------------------- +-------------------- Once you have a mirror, you need to let spack know about it. This is relatively simple. First, figure out the URL for the mirror. If it's @@ -183,8 +188,9 @@ Each mirror has a name so that you can refer to it again later. .. _spack-mirror-list: +--------------------- ``spack mirror list`` ----------------------------- +--------------------- To see all the mirrors Spack knows about, run ``spack mirror list``:: @@ -193,8 +199,9 @@ To see all the mirrors Spack knows about, run ``spack mirror list``:: .. _spack-mirror-remove: +----------------------- ``spack mirror remove`` ----------------------------- +----------------------- To remove a mirror by name:: @@ -202,8 +209,9 @@ To remove a mirror by name:: $ spack mirror list ==> No mirrors configured. +----------------- Mirror precedence ----------------------------- +----------------- Adding a mirror really adds a line in ``~/.spack/mirrors.yaml``:: @@ -217,8 +225,9 @@ search the topmost mirror first and the bottom-most mirror last. .. _caching: +------------------- Local Default Cache ----------------------------- +------------------- Spack caches resources that are downloaded as part of installs. The cache is a valid spack mirror: it uses the same directory structure and naming scheme diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 34fcb1e101..c6ac6dd7ef 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1,7 +1,8 @@ .. _packaging-guide: +=============== Packaging Guide -===================== +=============== This guide is intended for developers or administrators who want to package software so that Spack can install it. It assumes that you @@ -28,13 +29,15 @@ ubiquitous in the scientific software community. Second, it's a modern language and has many powerful features to help make package writing easy. +--------------------------- Creating & editing packages ----------------------------------- +--------------------------- .. _spack-create: +^^^^^^^^^^^^^^^^ ``spack create`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^ The ``spack create`` command creates a directory with the package name and generates a ``package.py`` file with a boilerplate package template from a URL. @@ -194,8 +197,9 @@ Before going into details, we'll cover a few more basics. .. _spack-edit: +^^^^^^^^^^^^^^ ``spack edit`` -~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ One of the easiest ways to learn to write packages is to look at existing ones. You can edit a package file by name with the ``spack @@ -222,8 +226,9 @@ using ``spack create`` or ``spack edit -f``: .. _spack-edit-f: +^^^^^^^^^^^^^^^^^ ``spack edit -f`` -~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ ``spack edit -f`` can be used to create a new, minimal boilerplate package: @@ -258,9 +263,9 @@ to fill in yourself: This is useful when ``spack create`` cannot figure out the name and version of your package from the archive URL. - +---------------------------- Naming & directory structure --------------------------------------- +---------------------------- .. note:: @@ -274,8 +279,9 @@ live in Spack's directory structure. In general, `spack-create`_ and `spack-edit`_ handle creating package files for you, so you can skip most of the details here. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``var/spack/repos/builtin/packages`` -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A Spack installation directory is structured like a standard UNIX install prefix (``bin``, ``lib``, ``include``, ``var``, ``opt``, @@ -298,9 +304,9 @@ package lives in:: Alongside the ``package.py`` file, a package may contain extra directories or files (like patches) that it needs to build. - +^^^^^^^^^^^^^ Package Names -~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^ Packages are named after the directory containing ``package.py``. It is preferred, but not required, that the directory, and thus the package name, are @@ -346,8 +352,9 @@ difficult to support these options. So, you can name a package ``3proxy`` or ``_foo`` and Spack won't care. It just needs to see that name in the package spec. +^^^^^^^^^^^^^^^^^^^ Package class names -~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ Spack loads ``package.py`` files dynamically, and it needs to find a special class name in the file for the load to succeed. The **class @@ -368,9 +375,9 @@ some examples: In general, you won't have to remember this naming convention because `spack-create`_ and `spack-edit`_ handle the details for you. - +------------------- Adding new versions ------------------------- +------------------- The most straightforward way to add new versions to your package is to add a line like this in the package class: @@ -385,8 +392,9 @@ add a line like this in the package class: Versions should be listed with the newest version first. +^^^^^^^^^^^^ Version URLs -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^ By default, each version's URL is extrapolated from the ``url`` field in the package. For example, Spack is smart enough to download @@ -423,8 +431,9 @@ construct the new one for ``8.2.1``. When you supply a custom URL for a version, Spack uses that URL *verbatim* and does not perform extrapolation. +^^^^^^^^^^^^^^^^^^^^^^^^ Skipping the expand step -~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^ Spack normally expands archives automatically after downloading them. If you want to skip this step (e.g., for self-extracting @@ -452,8 +461,9 @@ it executable, then runs it with some arguments. installer = Executable(self.stage.archive_file) installer('--prefix=%s' % prefix, 'arg1', 'arg2', 'etc.') +^^^^^^^^^ Checksums -~~~~~~~~~~~~~~~~~ +^^^^^^^^^ Spack uses a checksum to ensure that the downloaded package version is not corrupted or compromised. This is especially important when @@ -465,8 +475,9 @@ Spack can currently support checksums using the MD5, SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512 algorithms. It determines the algorithm to use based on the hash length. +^^^^^^^^^^^^^ ``spack md5`` -^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^ If you have one or more files to checksum, you can use the ``spack md5`` command to do it: @@ -495,8 +506,9 @@ version of this process. .. _spack-checksum: +^^^^^^^^^^^^^^^^^^ ``spack checksum`` -^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^ If you want to add new versions to a package you've already created, this is automated with the ``spack checksum`` command. Here's an @@ -559,8 +571,9 @@ versions. See the documentation on `attribute_list_url`_ and .. _vcs-fetch: +------------------------------ Fetching from VCS repositories --------------------------------------- +------------------------------ For some packages, source code is provided in a Version Control System (VCS) repository rather than in a tarball. Spack can fetch packages @@ -573,8 +586,9 @@ call to your package with parameters indicating the repository URL and any branch, tag, or revision to fetch. See below for the parameters you'll need for each VCS system. +^^^^^^^^^^^^^^^^^^^^^^^^^ Repositories and versions -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^ The package author is responsible for coming up with a sensible name for each version to be fetched from a repository. For example, if @@ -607,8 +621,9 @@ supported. .. _git-fetch: +^^^ Git -~~~~~~~~~~~~~~~~~~~~ +^^^ Git fetching is enabled with the following parameters to ``version``: @@ -683,9 +698,9 @@ Submodules version('1.0.1', git='https://github.com/example-project/example.git', tag='v1.0.1', submdoules=True) - +^^^^^^^^^^ Installing -^^^^^^^^^^^^^^ +^^^^^^^^^^ You can fetch and install any of the versions above as you'd expect, by using ``@`` in a spec: @@ -700,8 +715,9 @@ a user runs ``spack info ``. .. _hg-fetch: +^^^^^^^^^ Mercurial -~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^ Fetching with mercurial works much like `git `_, but you use the ``hg`` parameter. @@ -733,8 +749,9 @@ example@`` command-line syntax. .. _svn-fetch: +^^^^^^^^^^ Subversion -~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^ To fetch with subversion, use the ``svn`` and ``revision`` parameters: @@ -759,6 +776,7 @@ Fetching a revision Subversion branches are handled as part of the directory structure, so you can check out a branch or tag by changing the ``url``. +------------------------------------------------- Expanding additional resources in the source tree ------------------------------------------------- @@ -779,6 +797,7 @@ Based on the keywords present among the arguments the appropriate ``FetchStrateg will be used for the resource. The keyword ``destination`` is relative to the source root of the package and should point to where the resource is to be expanded. +------------------------------------------------------ Automatic caching of files fetched during installation ------------------------------------------------------ @@ -789,42 +808,48 @@ reinstalled on account of a change in the hashing scheme. .. _license: +----------------- Licensed software ------------------------------------------- +----------------- In order to install licensed software, Spack needs to know a few more details about a package. The following class attributes should be defined. +^^^^^^^^^^^^^^^^^^^^ ``license_required`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^ Boolean. If set to ``True``, this software requires a license. If set to ``False``, all of the following attributes will be ignored. Defaults to ``False``. +^^^^^^^^^^^^^^^^^^^ ``license_comment`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ String. Contains the symbol used by the license manager to denote a comment. Defaults to ``#``. +^^^^^^^^^^^^^^^^^ ``license_files`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ List of strings. These are files that the software searches for when looking for a license. All file paths must be relative to the installation directory. More complex packages like Intel may require multiple licenses for individual components. Defaults to the empty list. +^^^^^^^^^^^^^^^^ ``license_vars`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^ List of strings. Environment variables that can be set to tell the software where to look for a license if it is not in the usual location. Defaults to the empty list. +^^^^^^^^^^^^^^^ ``license_url`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^ String. A URL pointing to license setup instructions for the software. Defaults to the empty string. @@ -909,8 +934,9 @@ documentation. .. _patching: +------- Patches ------------------------------------------- +------- Depending on the host architecture, package version, known bugs, or other issues, you may need to patch your software to get it to build @@ -918,8 +944,9 @@ correctly. Like many other package systems, spack allows you to store patches alongside your package files and apply them to source code after it's downloaded. +^^^^^^^^^ ``patch`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^ You can specify patches in your package file with the ``patch()`` function. ``patch`` looks like this: @@ -999,8 +1026,9 @@ from the URL and then applied to your source code. applies cleanly with ``-p1``, but if you're using a patch you didn't create yourself, ``level`` can be handy. +^^^^^^^^^^^^^^^^^^^^^ ``patch()`` functions -~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^ In addition to supplying patch files, you can write a custom function to patch a package's source. For example, the ``py-pyside`` package @@ -1048,8 +1076,9 @@ if you run install, hit ctrl-C, and run install again, the code in the patch function is only run once. Also, you can tell Spack to run only the patching part of the build using the :ref:`spack-patch` command. +--------------- Handling RPATHs ----------------------------- +--------------- Spack installs each package in a way that ensures that all of its dependencies are found when it runs. It does this using `RPATHs @@ -1093,9 +1122,9 @@ RPATHs in Spack are handled in one of three ways: links. You can see this how this is used in the :ref:`PySide example ` above. - +-------------------- Finding new versions ----------------------------- +-------------------- You've already seen the ``homepage`` and ``url`` package attributes: @@ -1121,8 +1150,9 @@ Spack to find tarballs elsewhere. .. _attribute_list_url: +^^^^^^^^^^^^ ``list_url`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^ When spack tries to find available versions of packages (e.g. with `spack checksum `_), it spiders the parent directory @@ -1156,8 +1186,9 @@ the ``list_url``, because that is where links to old versions are: .. _attribute_list_depth: +^^^^^^^^^^^^^^ ``list_depth`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ ``libdwarf`` and many other packages have a listing of available versions on a single webpage, but not all do. For example, ``mpich`` @@ -1187,8 +1218,9 @@ when spidering the page. .. _attribute_parallel: +--------------- Parallel builds ------------------- +--------------- By default, Spack will invoke ``make()`` with a ``-j `` argument, so that builds run in parallel. It figures out how many @@ -1240,11 +1272,11 @@ you set ``parallel`` to ``False`` at the package level, then each call to ``make()`` will be sequential by default, but packagers can call ``make(parallel=True)`` to override it. - .. _dependencies: +------------ Dependencies ------------------------------- +------------ We've covered how to build a simple package, but what if one package relies on another package to build? How do you express that in a @@ -1271,8 +1303,9 @@ Spack makes this relatively easy. Let's take a look at the def install(self, spec, prefix): ... +^^^^^^^^^^^^^^^^ ``depends_on()`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^ The highlighted ``depends_on('libelf')`` call tells Spack that it needs to build and install the ``libelf`` package before it builds @@ -1280,8 +1313,9 @@ needs to build and install the ``libelf`` package before it builds guaranteed that ``libelf`` has been built and installed successfully, so you can rely on it for your libdwarf build. +^^^^^^^^^^^^^^^^ Dependency specs -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^ ``depends_on`` doesn't just take the name of another package. It takes a full spec. This means that you can restrict the versions or @@ -1345,8 +1379,9 @@ Lua module loading). .. _setup-dependent-environment: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``setup_dependent_environment()`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Spack provides a mechanism for dependencies to provide variables that can be used in their dependents' build. Any package can declare a @@ -1412,11 +1447,11 @@ Python's ``setup_dependent_environment`` method also sets up some other variables, creates a directory, and sets up the ``PYTHONPATH`` so that dependent packages can find their dependencies at build time. - .. _packaging_extensions: +---------- Extensions -------------------------- +---------- Spack's support for package extensions is documented extensively in :ref:`extensions`. This section documents how to make your own @@ -1482,10 +1517,9 @@ linked in at activation time. ``depends_on('python')`` and ``extends(python)`` in the same package. ``extends`` implies ``depends_on``. - - +^^^^^^^^^^^^^^^^^^^^^^^^^ Activation & deactivation -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^ Spack's ``Package`` class has default ``activate`` and ``deactivate`` implementations that handle symbolically linking extensions' prefixes @@ -1535,9 +1569,9 @@ Deactivate behaves similarly to activate, but it unlinks files: Both of these methods call some custom functions in the Python package. See the source for Spack's Python package for details. - +^^^^^^^^^^^^^^^^^^^^ Activation arguments -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^ You may have noticed that the ``activate`` function defined above takes keyword arguments. These are the keyword arguments from @@ -1552,11 +1586,11 @@ The only keyword argument supported by default is the ``ignore`` argument, which can take a regex, list of regexes, or a predicate to determine which files *not* to symlink during activation. - .. _virtual-dependencies: +-------------------- Virtual dependencies ------------------------------ +-------------------- In some cases, more than one package can satisfy another package's dependency. One way this can happen is if a package depends on a @@ -1577,8 +1611,9 @@ similar package files, e.g., ``foo``, ``foo-mvapich``, ``foo-mpich``, but Spack avoids this explosion of package files by providing support for *virtual dependencies*. +^^^^^^^^^^^^ ``provides`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^ In Spack, ``mpi`` is handled as a *virtual package*. A package like ``mpileaks`` can depend on it just like any other package, by @@ -1614,8 +1649,9 @@ The ``provides("mpi")`` call tells Spack that the ``mpich`` package can be used to satisfy the dependency of any package that ``depends_on('mpi')``. +^^^^^^^^^^^^^^^^^^^^ Versioned Interfaces -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^ Just as you can pass a spec to ``depends_on``, so can you pass a spec to ``provides`` to add constraints. This allows Spack to support the @@ -1636,8 +1672,9 @@ This says that ``mpich2`` provides MPI support *up to* version 2, but if a package ``depends_on("mpi@3")``, then Spack will *not* build that package with ``mpich2``. +^^^^^^^^^^^^^^^^^ ``provides when`` -~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ The same package may provide different versions of an interface depending on *its* version. Above, we simplified the ``provides`` @@ -1678,11 +1715,11 @@ Suppose a user invokes ``spack install`` like this: Spack will fail with a constraint violation, because the version of MPICH requested is too low for the ``mpi`` requirement in ``foo``. - .. _abstract-and-concrete: +------------------------- Abstract & concrete specs ------------------------------------------- +------------------------- Now that we've seen how spec constraints can be specified :ref:`on the command line ` and within package definitions, we can talk @@ -1716,7 +1753,6 @@ DAG, based on the constraints above:: ^libelf@0.8.11 ^mpi - .. graphviz:: digraph { @@ -1727,7 +1763,6 @@ DAG, based on the constraints above:: dyninst -> "libelf@0.8.11" } - This diagram shows a spec DAG output as a tree, where successive levels of indentation represent a depends-on relationship. In the above DAG, we can see some packages annotated with their constraints, @@ -1735,8 +1770,9 @@ and some packages with no annotations at all. When there are no annotations, it means the user doesn't care what configuration of that package is built, just so long as it works. +^^^^^^^^^^^^^^ Concretization -~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ An abstract spec is useful for the user, but you can't install an abstract spec. Spack has to take the abstract spec and "fill in" the @@ -1776,8 +1812,9 @@ the preferences of their own users. .. _spack-spec: +^^^^^^^^^^^^^^ ``spack spec`` -~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ For an arbitrary spec, you can see the result of concretization by running ``spack spec``. For example: @@ -1796,9 +1833,9 @@ running ``spack spec``. For example: This is useful when you want to know exactly what Spack will do when you ask for a particular spec. - +^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``Concretization Policies`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^ A user may have certain preferences for how packages should be concretized on their system. For example, one user may prefer packages @@ -1810,8 +1847,9 @@ for more details. .. _install-method: +----------------------------------- Implementing the ``install`` method ------------------------------------------- +----------------------------------- The last element of a package is its ``install()`` method. This is where the real work of installation happens, and it's the main part of @@ -1825,15 +1863,12 @@ the package you'll need to customize for each piece of software. be built, and a ``prefix``: the path to the directory where the software should be installed. - Spack provides wrapper functions for ``configure`` and ``make`` so that you can call them in a similar way to how you'd call a shell command. In reality, these are Python functions. Spack provides these functions to make writing packages more natural. See the section on :ref:`shell wrappers `. - - Now that the metadata is out of the way, we can move on to the ``install()`` method. When a user runs ``spack install``, Spack fetches an archive for the correct version of the software, expands @@ -1883,8 +1918,9 @@ information. .. _install-environment: +----------------------- The install environment --------------------------- +----------------------- In general, you should not have to do much differently in your install method than you would when installing a package on the command line. @@ -1901,8 +1937,9 @@ custom Makefiles, you may need to add logic to modify the makefiles. The remainder of the section covers the way Spack's build environment works. +^^^^^^^^^^^^^^^^^^^^^ Environment variables -~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^ Spack sets a number of standard environment variables that serve two purposes: @@ -1970,8 +2007,9 @@ below. .. _compiler-wrappers: +^^^^^^^^^^^^^^^^^^^^^ Compiler interceptors -~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^ As mentioned, ``CC``, ``CXX``, ``F77``, and ``FC`` are set to point to Spack's compiler wrappers. These are simply called ``cc``, ``c++``, @@ -2037,8 +2075,10 @@ and/or ``ldlibs``). They do not override the canonical autotools flags with the same names (but in ALL-CAPS) that may be passed into the build by particularly challenging package scripts. +^^^^^^^^^^^^^^ Compiler flags -~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ + In rare circumstances such as compiling and running small unit tests, a package developer may need to know what are the appropriate compiler flags to enable features like ``OpenMP``, ``c++11``, ``c++14`` and alike. To that end the @@ -2054,8 +2094,10 @@ package supports additional variants like variant('openmp', default=True, description="Enable OpenMP support.") +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Message Parsing Interface (MPI) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + It is common for high performance computing software/packages to use ``MPI``. As a result of conretization, a given package can be built using different implementations of MPI such as ``Openmpi``, ``MPICH`` or ``IntelMPI``. @@ -2070,9 +2112,10 @@ Package developers are advised to use these variables, for example ``self.spec[' instead of hard-coding ``join_path(self.spec['mpi'].prefix.bin, 'mpicc')`` for the reasons outlined above. - +^^^^^^^^^^^^^^^^^^^^^^^^^ Blas and Lapack libraries -~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^ + Different packages provide implementation of ``Blas`` and ``Lapack`` routines. The names of the resulting static and/or shared libraries differ from package to package. In order to make ``install()`` method indifferent to the @@ -2083,9 +2126,9 @@ applies to packages which provide ``Lapack``. Package developers are advised to use these variables, for example ``spec['blas'].blas_shared_lib`` instead of hard-coding ``join_path(spec['blas'].prefix.lib, 'libopenblas.so')``. - +^^^^^^^^^^^^^^^^^^^^^ Forking ``install()`` -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^ To give packagers free reign over their install environment, Spack forks a new process each time it invokes a package's ``install()`` @@ -2097,9 +2140,9 @@ dedicated process. .. _prefix-objects: - +----------------- Failing the build ----------------------- +----------------- Sometimes you don't want a package to successfully install unless some condition is true. You can explicitly cause the build to fail from @@ -2110,9 +2153,9 @@ condition is true. You can explicitly cause the build to fail from if spec.architecture.startswith('darwin'): raise InstallError('This package does not build on Mac OS X!') - +-------------- Prefix objects ----------------------- +-------------- Spack passes the ``prefix`` parameter to the install method so that you can pass it to ``configure``, ``cmake``, or some other installer, @@ -2122,7 +2165,6 @@ e.g.: configure('--prefix=' + prefix) - For the most part, prefix objects behave exactly like strings. For packages that do not have their own install target, or for those that implement it poorly (like ``libdwarf``), you may need to manually copy @@ -2142,7 +2184,6 @@ yourself, e.g.: mkdirp(prefix.lib) install('libfoo.a', prefix.lib) - Most of the standard UNIX directory names are attributes on the ``prefix`` object. Here is a full list: @@ -2169,8 +2210,9 @@ Most of the standard UNIX directory names are attributes on the .. _spec-objects: +------------ Spec objects -------------------------- +------------ When ``install`` is called, most parts of the build process are set up for you. The correct version's tarball has been downloaded and @@ -2187,8 +2229,9 @@ special parameters to ``configure``, like need to supply special compiler flags depending on the compiler. All of this information is available in the spec. +^^^^^^^^^^^^^^^^^^^^^^^^ Testing spec constraints -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^ You can test whether your spec is configured a certain way by using the ``satisfies`` method. For example, if you want to check whether @@ -2253,9 +2296,9 @@ the two functions is that ``satisfies()`` tests whether spec constraints overlap at all, while ``in`` tests whether a spec or any of its dependencies satisfy the provided spec. - +^^^^^^^^^^^^^^^^^^^^^^ Accessing Dependencies -~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^ You may need to get at some file or binary that's in the prefix of one of your dependencies. You can do that by sub-scripting the spec: @@ -2277,8 +2320,9 @@ would do with the package's own spec: .. _multimethods: +^^^^^^^^^^^^^^^^^^^^^^^^^^ Multimethods and ``@when`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^ Spack allows you to make multiple versions of instance functions in packages, based on whether the package's spec satisfies particular @@ -2377,8 +2421,9 @@ method (the one without the ``@when`` decorator) will be called. .. _shell-wrappers: +----------------------- Shell command functions ----------------------------- +----------------------- Recall the install method from ``libelf``: @@ -2426,11 +2471,11 @@ to the ``make`` wrapper to disable parallel make. In the ``libelf`` package, this allows us to avoid race conditions in the library's build system. - .. _sanity-checks: +------------------------------- Sanity checking an installation --------------------------------- +------------------------------- By default, Spack assumes that a build has failed if nothing is written to the install prefix, and that it has succeeded if anything @@ -2455,9 +2500,9 @@ like this can falsely report that they were successfully installed if an error occurs before the install is complete but after files have been written to the ``prefix``. - +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``sanity_check_is_file`` and ``sanity_check_is_dir`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can optionally specify *sanity checks* to deal with this problem. Add properties like this to your package: @@ -2482,11 +2527,11 @@ the build will fail and the install prefix will be removed. If they succeed, Spack considers the build succeeful and keeps the prefix in place. - .. _file-manipulation: +--------------------------- File manipulation functions ------------------------------- +--------------------------- Many builds are not perfect. If a build lacks an install target, or if it does not use systems like CMake or autotools, which have standard @@ -2508,9 +2553,9 @@ running: This is already part of the boilerplate for packages created with ``spack create`` or ``spack edit``. - +^^^^^^^^^^^^^^^^^^^ Filtering functions -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ :py:func:`filter_file(regex, repl, *filenames, **kwargs) ` Works like ``sed`` but with Python regular expression syntax. Takes @@ -2568,9 +2613,9 @@ Filtering functions change_sed_delimiter('@', ';', 'utils/FixMakefile') change_sed_delimiter('@', ';', 'utils/FixMakefile.sed.default') - +^^^^^^^^^^^^^^ File functions -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ :py:func:`ancestor(dir, n=1) ` Get the n\ :sup:`th` ancestor of the directory ``dir``. @@ -2638,22 +2683,21 @@ File functions The ``create=True`` keyword argument causes the command to create the directory if it does not exist. - :py:func:`touch(path) ` Create an empty file at ``path``. - .. _package-lifecycle: +----------------------- Coding Style Guidelines ---------------------------- +----------------------- The following guidelines are provided, in the interests of making Spack packages work in a consistent manner: - +^^^^^^^^^^^^^ Variant Names -~~~~~~~~~~~~~~ +^^^^^^^^^^^^^ Spack packages with variants similar to already-existing Spack packages should use the same name for their variants. Standard @@ -2671,14 +2715,15 @@ variant names are: If specified in this table, the corresponding default should be used when declaring a variant. - +^^^^^^^^^^^^^ Version Lists -~~~~~~~~~~~~~~ +^^^^^^^^^^^^^ Spack packges should list supported versions with the newest first. +^^^^^^^^^^^^^^^^ Special Versions -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^ The following *special* version names may be used when building a package: @@ -2697,9 +2742,9 @@ The following *special* version names may be used when building a package: * *@local*: Indicates the version was built manually from some source tree of unknown provenance (see ``spack setup``). - +--------------------------- Packaging workflow commands ---------------------------------- +--------------------------- When you are building packages, you will likely not get things completely right the first time. @@ -2729,8 +2774,9 @@ control over the install process. .. _spack-fetch: +^^^^^^^^^^^^^^^ ``spack fetch`` -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^ The first step of ``spack install``. Takes a spec and determines the correct download URL to use for the requested package version, then @@ -2743,8 +2789,9 @@ fetch`` is idempotent and will not download the archive again. .. _spack-stage: +^^^^^^^^^^^^^^^ ``spack stage`` -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^ The second step in ``spack install`` after ``spack fetch``. Expands the downloaded archive in its temporary directory, where it will be @@ -2753,8 +2800,9 @@ already been expanded, ``stage`` is idempotent. .. _spack-patch: +^^^^^^^^^^^^^^^ ``spack patch`` -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^ After staging, Spack applies patches to downloaded packages, if any have been specified in the package file. This command will run the @@ -2766,8 +2814,10 @@ package before patching. .. _spack-restage: +^^^^^^^^^^^^^^^^^ ``spack restage`` -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ + Restores the source code to pristine state, as it was before building. Does this in one of two ways: @@ -2780,18 +2830,21 @@ Does this in one of two ways: .. _spack-clean: +^^^^^^^^^^^^^^^ ``spack clean`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^ + Cleans up temporary files for a particular package, by deleting the expanded/checked out source code *and* any downloaded archive. If ``fetch``, ``stage``, or ``install`` are run again after this, Spack's build process will start from scratch. - .. _spack-purge: +^^^^^^^^^^^^^^^ ``spack purge`` -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^ + Cleans up all of Spack's temporary and cached files. This can be used to recover disk space if temporary files from interrupted or failed installs accumulate in the staging area. @@ -2803,8 +2856,9 @@ running ``spack clean`` for every package you have fetched or staged. When called with ``--cache`` or ``--all`` this will clear all resources :ref:`cached ` during installs. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Keeping the stage directory on success -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ By default, ``spack install`` will delete the staging area once a package has been successfully built and installed. Use @@ -2818,9 +2872,9 @@ This allows you to inspect the build directory and potentially debug the build. You can use ``purge`` or ``clean`` later to get rid of the unwanted temporary files. - +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Keeping the install prefix on failure -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ By default, ``spack install`` will delete any partially constructed install prefix if anything fails during ``install()``. If you want to @@ -2839,14 +2893,15 @@ to get rid of the install prefix before you build again: spack uninstall -f - +--------------------- Graphing dependencies --------------------------- +--------------------- .. _spack-graph: +^^^^^^^^^^^^^^^ ``spack graph`` -~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^ Spack provides the ``spack graph`` command for graphing dependencies. The command by default generates an ASCII rendering of a spec's @@ -2919,8 +2974,9 @@ example:: This graph can be provided as input to other graphing tools, such as those in `Graphviz `_. +------------------------- Interactive shell support --------------------------- +------------------------- Spack provides some limited shell support to make life easier for packagers. You can enable these commands by sourcing a setup file in @@ -2937,8 +2993,9 @@ For ``csh`` and ``tcsh`` run: .. _spack-cd: +^^^^^^^^^^^^ ``spack cd`` -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^ ``spack cd`` allows you to quickly cd to pertinent directories in Spack. Suppose you've staged a package but you want to modify it before you @@ -2968,8 +3025,9 @@ the main python source directory of your spack install. .. _spack-env: +^^^^^^^^^^^^^ ``spack env`` -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^ ``spack env`` functions much like the standard unix ``env`` command, but it takes a spec as an argument. You can use it to see the @@ -2993,11 +3051,11 @@ To run commands in a package's build environment, you can simply provided them a This will cd to the build directory and then run ``configure`` in the package's build environment. - .. _spack-location: +^^^^^^^^^^^^^^^^^^ ``spack location`` -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^ ``spack location`` is the same as ``spack cd`` but it does not require shell support. It simply prints out the path you ask for, rather than @@ -3019,6 +3077,7 @@ might write: CXXFLAGS += -I$DWARF_PREFIX/include CXXFLAGS += -L$DWARF_PREFIX/lib +---------------------------------- Build System Configuration Support ---------------------------------- @@ -3064,8 +3123,9 @@ Notes: to manually re-run ``spconfig.py`` when a ``CMakeLists.txt`` file has changed. +^^^^^^^^^^^^ CMakePackage -~~~~~~~~~~~~ +^^^^^^^^^^^^ In order ot enable ``spack setup`` functionality, the author of ``myproject/package.py`` must subclass from ``CMakePackage`` instead @@ -3091,9 +3151,9 @@ translate variant flags into CMake definitions. For example: If needed, a packager may also override methods defined in ``StagedPackage`` (see below). - +^^^^^^^^^^^^^ StagedPackage -~~~~~~~~~~~~~ +^^^^^^^^^^^^^ ``CMakePackage`` is implemented by subclassing the ``StagedPackage`` superclass, which breaks down the standard ``Package.install()`` @@ -3115,8 +3175,9 @@ and ``install``. Details: ``install()`` method may be accessed via ``self.spec`` and ``self.prefix``. +^^^^^^^^^^^^^ GNU Autotools -~~~~~~~~~~~~~ +^^^^^^^^^^^^^ The ``setup`` functionality is currently only available for CMake-based packages. Extending this functionality to GNU -- cgit v1.2.3-60-g2f50 From 0614bd206fa8b5fb975536f055bfe008303e7ff6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 09:32:05 -0500 Subject: Fix #1608, Include file not found --- lib/spack/docs/basic_usage.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index 0a80fa7e2f..ef01f616cd 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -1278,8 +1278,8 @@ file can be placed either at *site* or *user* scope. The default site configuration reads: - .. literalinclude:: ../../../etc/spack/modules.yaml - :language: yaml +.. literalinclude:: ../../../etc/spack/defaults/modules.yaml + :language: yaml It basically inspects the installation prefixes for the existence of a few folders and, if they exist, it prepends a path to a given -- cgit v1.2.3-60-g2f50 From eb56744f4d4fbbccb25dbd2042a9b28397bcca81 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 10:32:29 -0500 Subject: Fix package docstrings, #1612 --- var/spack/repos/builtin/packages/adios/package.py | 6 ++---- var/spack/repos/builtin/packages/antlr/package.py | 5 +++++ var/spack/repos/builtin/packages/arpack-ng/package.py | 7 +++---- var/spack/repos/builtin/packages/asciidoc/package.py | 3 ++- var/spack/repos/builtin/packages/astyle/package.py | 7 +++---- var/spack/repos/builtin/packages/caliper/package.py | 6 ++---- var/spack/repos/builtin/packages/cfitsio/package.py | 8 ++++---- var/spack/repos/builtin/packages/cityhash/package.py | 2 ++ var/spack/repos/builtin/packages/cube/package.py | 7 ++----- var/spack/repos/builtin/packages/datamash/package.py | 6 ++---- var/spack/repos/builtin/packages/eigen/package.py | 7 ++----- var/spack/repos/builtin/packages/espresso/package.py | 8 +++----- var/spack/repos/builtin/packages/gdal/package.py | 6 ++---- var/spack/repos/builtin/packages/gdb/package.py | 6 ++---- var/spack/repos/builtin/packages/gmsh/package.py | 7 +++---- var/spack/repos/builtin/packages/lmod/package.py | 7 +++---- var/spack/repos/builtin/packages/lua-luafilesystem/package.py | 7 +++---- var/spack/repos/builtin/packages/mxml/package.py | 6 ++---- var/spack/repos/builtin/packages/ncdu/package.py | 6 ++---- var/spack/repos/builtin/packages/opari2/package.py | 7 ++----- var/spack/repos/builtin/packages/openjpeg/package.py | 7 +++---- var/spack/repos/builtin/packages/parallel/package.py | 6 ++---- var/spack/repos/builtin/packages/petsc/package.py | 6 ++---- var/spack/repos/builtin/packages/py-prettytable/package.py | 10 ++++------ var/spack/repos/builtin/packages/py-tuiview/package.py | 7 +++---- var/spack/repos/builtin/packages/scorep/package.py | 9 +++------ var/spack/repos/builtin/packages/screen/package.py | 6 ++---- var/spack/repos/builtin/packages/swiftsim/package.py | 8 ++------ var/spack/repos/builtin/packages/tau/package.py | 10 +++------- var/spack/repos/builtin/packages/xerces-c/package.py | 9 ++++----- var/spack/repos/builtin/packages/zsh/package.py | 9 ++++----- 31 files changed, 83 insertions(+), 128 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index e2e3b7d6b7..96fee2ac28 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -27,12 +27,10 @@ from spack import * class Adios(Package): - """ - The Adaptable IO System (ADIOS) provides a simple, + """The Adaptable IO System (ADIOS) provides a simple, flexible way for scientists to describe the data in their code that may need to be written, - read, or processed outside of the running simulation - """ + read, or processed outside of the running simulation.""" homepage = "http://www.olcf.ornl.gov/center-projects/adios/" url = "https://github.com/ornladios/ADIOS/archive/v1.10.0.tar.gz" diff --git a/var/spack/repos/builtin/packages/antlr/package.py b/var/spack/repos/builtin/packages/antlr/package.py index 891061c62f..804460ce14 100644 --- a/var/spack/repos/builtin/packages/antlr/package.py +++ b/var/spack/repos/builtin/packages/antlr/package.py @@ -26,6 +26,11 @@ from spack import * class Antlr(Package): + """ANTLR (ANother Tool for Language Recognition) is a powerful parser + generator for reading, processing, executing, or translating structured + text or binary files. It's widely used to build languages, tools, and + frameworks. From a grammar, ANTLR generates a parser that can build and + walk parse trees.""" homepage = "http://www.antlr.org" url = "https://github.com/antlr/antlr/tarball/v2.7.7" diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py index 728c2345f2..2fa7608098 100644 --- a/var/spack/repos/builtin/packages/arpack-ng/package.py +++ b/var/spack/repos/builtin/packages/arpack-ng/package.py @@ -26,8 +26,7 @@ from spack import * class ArpackNg(Package): - """ - ARPACK-NG is a collection of Fortran77 subroutines designed to solve large + """ARPACK-NG is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems. Important Features: @@ -51,8 +50,8 @@ class ArpackNg(Package): forked it and implemented their own modifications, arpack-ng aims to tackle this by providing a common repository and maintained versions. - arpack-ng is replacing arpack almost everywhere. - """ + arpack-ng is replacing arpack almost everywhere.""" + homepage = 'https://github.com/opencollab/arpack-ng' url = 'https://github.com/opencollab/arpack-ng/archive/3.3.0.tar.gz' diff --git a/var/spack/repos/builtin/packages/asciidoc/package.py b/var/spack/repos/builtin/packages/asciidoc/package.py index be8db684f5..811d34afa8 100644 --- a/var/spack/repos/builtin/packages/asciidoc/package.py +++ b/var/spack/repos/builtin/packages/asciidoc/package.py @@ -26,8 +26,9 @@ from spack import * class Asciidoc(Package): - """ A presentable text document format for writing articles, UNIX man + """A presentable text document format for writing articles, UNIX man pages and other small to medium sized documents.""" + homepage = "http://asciidoc.org" url = "http://downloads.sourceforge.net/project/asciidoc/asciidoc/8.6.9/asciidoc-8.6.9.tar.gz" diff --git a/var/spack/repos/builtin/packages/astyle/package.py b/var/spack/repos/builtin/packages/astyle/package.py index 815c184577..7b450352ec 100644 --- a/var/spack/repos/builtin/packages/astyle/package.py +++ b/var/spack/repos/builtin/packages/astyle/package.py @@ -26,10 +26,9 @@ from spack import * class Astyle(Package): - """ - A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, - Objective-C, C#, and Java Source Code. - """ + """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" diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index e5aed5ed65..770037ab49 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -26,11 +26,9 @@ from spack import * class Caliper(Package): - """ - Caliper is a generic context annotation system. It gives programmers the + """Caliper is a generic context annotation system. It gives programmers the ability to provide arbitrary program context information to (performance) - tools at runtime. - """ + tools at runtime.""" homepage = "https://github.com/LLNL/Caliper" url = "" diff --git a/var/spack/repos/builtin/packages/cfitsio/package.py b/var/spack/repos/builtin/packages/cfitsio/package.py index c68b3ffc0d..fc5ae0eef5 100644 --- a/var/spack/repos/builtin/packages/cfitsio/package.py +++ b/var/spack/repos/builtin/packages/cfitsio/package.py @@ -26,11 +26,11 @@ from spack import * class Cfitsio(Package): - """ - CFITSIO is a library of C and Fortran subroutines for reading and writing - data files in FITS (Flexible Image Transport System) data format. - """ + """CFITSIO is a library of C and Fortran subroutines for reading and writing + data files in FITS (Flexible Image Transport System) data format.""" + homepage = 'http://heasarc.gsfc.nasa.gov/fitsio/' + version('3.370', 'abebd2d02ba5b0503c633581e3bfa116') def url_for_version(self, v): diff --git a/var/spack/repos/builtin/packages/cityhash/package.py b/var/spack/repos/builtin/packages/cityhash/package.py index d6d7f51558..85d948cc57 100644 --- a/var/spack/repos/builtin/packages/cityhash/package.py +++ b/var/spack/repos/builtin/packages/cityhash/package.py @@ -27,6 +27,8 @@ from spack.util.environment import * class Cityhash(Package): + """CityHash, a family of hash functions for strings.""" + homepage = "https://github.com/google/cityhash" url = "https://github.com/google/cityhash" diff --git a/var/spack/repos/builtin/packages/cube/package.py b/var/spack/repos/builtin/packages/cube/package.py index 09237f87c3..55f71ef681 100644 --- a/var/spack/repos/builtin/packages/cube/package.py +++ b/var/spack/repos/builtin/packages/cube/package.py @@ -22,18 +22,15 @@ # 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 Cube(Package): - """ - Cube the profile viewer for Score-P and Scalasca profiles. It displays a + """Cube the profile viewer for Score-P and Scalasca profiles. It displays a multi-dimensional performance space consisting of the dimensions: - performance metric - call path - - system resource - """ + - system resource""" homepage = "http://www.scalasca.org/software/cube-4.x/download.html" url = "http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz" diff --git a/var/spack/repos/builtin/packages/datamash/package.py b/var/spack/repos/builtin/packages/datamash/package.py index ef30c50ebe..65773d1978 100644 --- a/var/spack/repos/builtin/packages/datamash/package.py +++ b/var/spack/repos/builtin/packages/datamash/package.py @@ -26,10 +26,8 @@ from spack import * class Datamash(Package): - """ - GNU datamash is a command-line program which performs basic numeric, - textual and statistical operations on input textual data files. - """ + """GNU datamash is a command-line program which performs basic numeric, + textual and statistical operations on input textual data files.""" homepage = "https://www.gnu.org/software/datamash/" url = "http://ftp.gnu.org/gnu/datamash/datamash-1.0.5.tar.gz" diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index 36d6850c1a..2dd43c0113 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -26,11 +26,8 @@ from spack import * class Eigen(Package): - """ - Eigen is a C++ template library for linear algebra - - Matrices, vectors, numerical solvers, and related algorithms - """ + """Eigen is a C++ template library for linear algebra matrices, + vectors, numerical solvers, and related algorithms.""" homepage = 'http://eigen.tuxfamily.org/' url = 'http://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2' diff --git a/var/spack/repos/builtin/packages/espresso/package.py b/var/spack/repos/builtin/packages/espresso/package.py index 447964f286..1d8c9805b1 100644 --- a/var/spack/repos/builtin/packages/espresso/package.py +++ b/var/spack/repos/builtin/packages/espresso/package.py @@ -23,17 +23,15 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * - import os class Espresso(Package): - """ - QE is an integrated suite of Open-Source computer codes for + """QE is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane - waves, and pseudopotentials. - """ + waves, and pseudopotentials.""" + homepage = 'http://quantum-espresso.org' url = 'http://www.qe-forge.org/gf/download/frsrelease/204/912/espresso-5.3.0.tar.gz' diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index 4fdfafc992..cf8dce4ef1 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -26,15 +26,13 @@ from spack import * class Gdal(Package): - """ - GDAL is a translator library for raster and vector geospatial + """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 - """ + 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" diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index 9145009fa4..fdde649270 100644 --- a/var/spack/repos/builtin/packages/gdb/package.py +++ b/var/spack/repos/builtin/packages/gdb/package.py @@ -22,16 +22,14 @@ # 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 Gdb(Package): """GDB, the GNU Project debugger, allows you to see what is going on - `inside' another program while it executes -- or what another - program was doing at the moment it crashed. + 'inside' another program while it executes -- or what another + program was doing at the moment it crashed.""" - """ homepage = "https://www.gnu.org/software/gdb" url = "http://ftp.gnu.org/gnu/gdb/gdb-7.10.tar.gz" diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py index 72f490e2f4..77e70d675c 100644 --- a/var/spack/repos/builtin/packages/gmsh/package.py +++ b/var/spack/repos/builtin/packages/gmsh/package.py @@ -26,15 +26,14 @@ from spack import * class Gmsh(Package): - """ - Gmsh is a free 3D finite element grid generator with a built-in CAD engine + """Gmsh is a free 3D finite element grid generator with a built-in CAD engine and post-processor. Its design goal is to provide a fast, light and user-friendly meshing tool with parametric input and advanced visualization capabilities. Gmsh is built around four modules: geometry, mesh, solver and post-processing. The specification of any input to these modules is done either interactively using the graphical user interface or in ASCII text - files using Gmsh's own scripting language. - """ + files using Gmsh's own scripting language.""" + homepage = 'http://gmsh.info' url = 'http://gmsh.info/src/gmsh-2.11.0-source.tgz' diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 69965bc423..15555e1200 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -27,14 +27,13 @@ from glob import glob class Lmod(Package): - """ - Lmod is a Lua based module system that easily handles the MODULEPATH + """Lmod is a Lua based module system that easily handles the MODULEPATH Hierarchical problem. Environment Modules provide a convenient way to dynamically change the users' environment through modulefiles. This includes easily adding or removing directories to the PATH environment variable. Modulefiles for Library packages provide environment variables - that specify where the library and header files can be found. - """ + that specify where the library and header files can be found.""" + homepage = 'https://www.tacc.utexas.edu/research-development/tacc-projects/lmod' url = 'https://github.com/TACC/Lmod/archive/6.4.1.tar.gz' diff --git a/var/spack/repos/builtin/packages/lua-luafilesystem/package.py b/var/spack/repos/builtin/packages/lua-luafilesystem/package.py index a61b9dd675..dca7c247fa 100644 --- a/var/spack/repos/builtin/packages/lua-luafilesystem/package.py +++ b/var/spack/repos/builtin/packages/lua-luafilesystem/package.py @@ -26,15 +26,14 @@ from spack import * class LuaLuafilesystem(Package): - """ - LuaFileSystem is a Lua library developed to complement the set of + """LuaFileSystem is a Lua library developed to complement the set of functions related to file systems offered by the standard Lua distribution. LuaFileSystem offers a portable way to access the underlying directory structure and file attributes. - LuaFileSystem is free software and uses the same license as Lua 5.1 - """ + LuaFileSystem is free software and uses the same license as Lua 5.1""" + homepage = 'http://keplerproject.github.io/luafilesystem' url = 'https://github.com/keplerproject/luafilesystem/archive/v_1_6_3.tar.gz' diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index 113c48c18f..db2e7eb441 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -26,11 +26,9 @@ from spack import * class Mxml(Package): - """ - Mini-XML is a small XML library that you can use to read and write XML + """Mini-XML is a small XML library that you can use to read and write XML and XML-like data files in your application without requiring large - non-standard libraries - """ + non-standard libraries.""" homepage = "http://www.msweet.org" url = "http://www.msweet.org/files/project3/mxml-2.9.tar.gz" diff --git a/var/spack/repos/builtin/packages/ncdu/package.py b/var/spack/repos/builtin/packages/ncdu/package.py index 2147319d3f..a22671250e 100644 --- a/var/spack/repos/builtin/packages/ncdu/package.py +++ b/var/spack/repos/builtin/packages/ncdu/package.py @@ -26,13 +26,11 @@ from spack import * class Ncdu(Package): - """ - Ncdu is a disk usage analyzer with an ncurses interface. It is designed + """Ncdu is a disk usage analyzer with an ncurses interface. It is designed to find space hogs on a remote server where you don't have an entire gaphical setup available, but it is a useful tool even on regular desktop systems. Ncdu aims to be fast, simple and easy to use, and should be able - to run in any minimal POSIX-like environment with ncurses installed. - """ + to run in any minimal POSIX-like environment with ncurses installed.""" homepage = "http://dev.yorhel.nl/ncdu" url = "http://dev.yorhel.nl/download/ncdu-1.11.tar.gz" diff --git a/var/spack/repos/builtin/packages/opari2/package.py b/var/spack/repos/builtin/packages/opari2/package.py index e901f8ed39..b270931d0d 100644 --- a/var/spack/repos/builtin/packages/opari2/package.py +++ b/var/spack/repos/builtin/packages/opari2/package.py @@ -22,21 +22,18 @@ # 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 Opari2(Package): - """ - OPARI2 is a source-to-source instrumentation tool for OpenMP and hybrid + """OPARI2 is a source-to-source instrumentation tool for OpenMP and hybrid codes. It surrounds OpenMP directives and runtime library calls with calls to the POMP2 measurement interface. OPARI2 will provide you with a new initialization method that allows for multi-directory and parallel builds as well as the usage of pre-instrumented libraries. Furthermore, an efficient way of tracking parent-child relationships was added. Additionally, we extended OPARI2 to support instrumentation of OpenMP 3.0 - tied tasks. - """ + tied tasks.""" homepage = "http://www.vi-hps.org/projects/score-p" url = "http://www.vi-hps.org/upload/packages/opari2/opari2-1.1.2.tar.gz" diff --git a/var/spack/repos/builtin/packages/openjpeg/package.py b/var/spack/repos/builtin/packages/openjpeg/package.py index 1bc5b04f6f..6ba368a0f7 100644 --- a/var/spack/repos/builtin/packages/openjpeg/package.py +++ b/var/spack/repos/builtin/packages/openjpeg/package.py @@ -26,14 +26,13 @@ from spack import * class Openjpeg(Package): - """ - OpenJPEG is an open-source JPEG 2000 codec written in C language. + """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. - """ + 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" diff --git a/var/spack/repos/builtin/packages/parallel/package.py b/var/spack/repos/builtin/packages/parallel/package.py index 2306dace55..189a5a6054 100644 --- a/var/spack/repos/builtin/packages/parallel/package.py +++ b/var/spack/repos/builtin/packages/parallel/package.py @@ -26,11 +26,9 @@ from spack import * class Parallel(Package): - """ - GNU parallel is a shell tool for executing jobs in parallel using + """GNU parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small - script that has to be run for each of the lines in the input. - """ + script that has to be run for each of the lines in the input.""" homepage = "http://www.gnu.org/software/parallel/" url = "http://ftp.gnu.org/gnu/parallel/parallel-20160422.tar.bz2" diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 66e1abdf1a..794633b929 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -27,11 +27,9 @@ from spack import * class Petsc(Package): - """ - PETSc is a suite of data structures and routines for the scalable + """PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial - differential equations. - """ + differential equations.""" homepage = "http://www.mcs.anl.gov/petsc/index.html" url = "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.5.3.tar.gz" diff --git a/var/spack/repos/builtin/packages/py-prettytable/package.py b/var/spack/repos/builtin/packages/py-prettytable/package.py index cf814733d4..9d3edd4abb 100644 --- a/var/spack/repos/builtin/packages/py-prettytable/package.py +++ b/var/spack/repos/builtin/packages/py-prettytable/package.py @@ -22,16 +22,14 @@ # 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 depends_on, extends, version -from spack import Package +from spack import * class PyPrettytable(Package): - """ - PrettyTable is a simple Python library designed to make + """PrettyTable is a simple Python library designed to make it quick and easy to represent tabular data in visually - appealing ASCII tables - """ + appealing ASCII tables.""" + homepage = "https://code.google.com/archive/p/prettytable/" url = "https://pypi.python.org/packages/e0/a1/36203205f77ccf98f3c6cf17cf068c972e6458d7e58509ca66da949ca347/prettytable-0.7.2.tar.gz" diff --git a/var/spack/repos/builtin/packages/py-tuiview/package.py b/var/spack/repos/builtin/packages/py-tuiview/package.py index 672a3ee587..a372ec2b67 100644 --- a/var/spack/repos/builtin/packages/py-tuiview/package.py +++ b/var/spack/repos/builtin/packages/py-tuiview/package.py @@ -26,10 +26,9 @@ from spack import * class PyTuiview(Package): - """ - TuiView is a lightweight raster GIS with powerful raster attribute - table manipulation abilities. - """ + """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" diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index d40e08740f..d2efd23c37 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -22,16 +22,13 @@ # 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 Scorep(Package): - """ - The Score-P measurement infrastructure is a highly scalable and easy-to-use - tool suite for profiling, event tracing, and online analysis of HPC - applications. - """ + """The Score-P measurement infrastructure is a highly scalable and + easy-to-use tool suite for profiling, event tracing, and online analysis + of HPC applications.""" homepage = "http://www.vi-hps.org/projects/score-p" url = "http://www.vi-hps.org/upload/packages/scorep/scorep-1.2.3.tar.gz" diff --git a/var/spack/repos/builtin/packages/screen/package.py b/var/spack/repos/builtin/packages/screen/package.py index 17335603e6..eeaebcbfb7 100644 --- a/var/spack/repos/builtin/packages/screen/package.py +++ b/var/spack/repos/builtin/packages/screen/package.py @@ -26,10 +26,8 @@ from spack import * class Screen(Package): - """ - Screen is a full-screen window manager that multiplexes a physical - terminal between several processes, typically interactive shells. - """ + """Screen is a full-screen window manager that multiplexes a physical + terminal between several processes, typically interactive shells.""" homepage = "https://www.gnu.org/software/screen/" url = "http://ftp.gnu.org/gnu/screen/screen-4.3.1.tar.gz" diff --git a/var/spack/repos/builtin/packages/swiftsim/package.py b/var/spack/repos/builtin/packages/swiftsim/package.py index 636aa26bd2..ec5e74bd15 100644 --- a/var/spack/repos/builtin/packages/swiftsim/package.py +++ b/var/spack/repos/builtin/packages/swiftsim/package.py @@ -22,18 +22,14 @@ # 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 * - import llnl.util.tty as tty class Swiftsim(Package): - """ - SPH With Inter-dependent Fine-grained Tasking (SWIFT) provides + """SPH With Inter-dependent Fine-grained Tasking (SWIFT) provides astrophysicists with a state of the art framework to perform - particle based simulations. - """ + particle based simulations.""" homepage = 'http://icc.dur.ac.uk/swift/' url = 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0' diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index a77df8d37c..c70bf31018 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -22,21 +22,17 @@ # 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 * - import os import os.path - from llnl.util.filesystem import join_path class Tau(Package): - """ - A portable profiling and tracing toolkit for performance + """A portable profiling and tracing toolkit for performance analysis of parallel programs written in Fortran, C, C++, UPC, - Java, Python. - """ + Java, Python.""" + homepage = "http://www.cs.uoregon.edu/research/tau" url = "https://www.cs.uoregon.edu/research/tau/tau_releases/tau-2.25.tar.gz" diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py index d0c2d3d497..61c7625f25 100644 --- a/var/spack/repos/builtin/packages/xerces-c/package.py +++ b/var/spack/repos/builtin/packages/xerces-c/package.py @@ -26,12 +26,11 @@ from spack import * class XercesC(Package): - """ Xerces-C++ is a validating XML parser written in a portable subset of C++. - Xerces-C++ makes it easy to give your application the ability to read and - write XML data. A shared library is provided for parsing, generating, + """Xerces-C++ is a validating XML parser written in a portable subset of + C++. Xerces-C++ makes it easy to give your application the ability to read + and write XML data. A shared library is provided for parsing, generating, manipulating, and validating XML documents using the DOM, SAX, and SAX2 - APIs. - """ + APIs.""" homepage = "https://xerces.apache.org/xerces-c" url = "https://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.1.4.tar.bz2" diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py index 4c27cd3ec2..b65866b1fd 100644 --- a/var/spack/repos/builtin/packages/zsh/package.py +++ b/var/spack/repos/builtin/packages/zsh/package.py @@ -26,11 +26,10 @@ from spack import * class Zsh(Package): - """ - Zsh is a shell designed for interactive use, although it is also a powerful - scripting language. Many of the useful features of bash, ksh, and tcsh were - incorporated into zsh; many original features were added. - """ + """Zsh is a shell designed for interactive use, although it is also a + powerful scripting language. Many of the useful features of bash, ksh, and + tcsh were incorporated into zsh; many original features were added.""" + homepage = "http://www.zsh.org" url = "http://downloads.sourceforge.net/project/zsh/zsh/5.1.1/zsh-5.1.1.tar.gz" -- cgit v1.2.3-60-g2f50 From 02239c094e6634912ad75e416a12794154449b01 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 10:42:23 -0500 Subject: Fix unexpected indentation in .rst files, #1612 --- lib/spack/docs/basic_usage.rst | 2 +- lib/spack/docs/packaging_guide.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index ef01f616cd..a3cec2cc8b 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -1793,7 +1793,7 @@ Spack currently needs to be run from a filesystem that supports ``flock`` locking semantics. Nearly all local filesystems and recent versions of NFS support this, but parallel filesystems may be mounted without ``flock`` support enabled. You can determine how your - filesystems are mounted with ``mount -p``. The output for a Lustre +filesystems are mounted with ``mount -p``. The output for a Lustre filesystem might look like this: .. code-block:: sh diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index c6ac6dd7ef..0c0554c24a 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -607,7 +607,7 @@ always simple, though, so this is not strictly enforced. When fetching from from the branch corresponding to the development version (often called ``master``,``trunk`` or ``dev``), it is recommended to call this version ``develop``. Spack has special treatment for this version so - that ``@develop`` will satisfy dependencies like +that ``@develop`` will satisfy dependencies like ``depends_on(abc, when="@x.y.z:")``. In other words, ``@develop`` is greater than any other version. The rationale is that certain features or options first appear in the development branch. Therefore if a package author -- cgit v1.2.3-60-g2f50 From 69e50595bf97fa9cd8b6b3c740f75802a6f0f0dd Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 13:46:29 -0500 Subject: Fix docstrings for core Spack libraries, fixes #1612 --- lib/spack/spack/build_environment.py | 14 ++--- lib/spack/spack/compilers/clang.py | 17 +++-- lib/spack/spack/compilers/intel.py | 12 ++-- lib/spack/spack/compilers/nag.py | 6 +- lib/spack/spack/compilers/pgi.py | 8 +-- lib/spack/spack/config.py | 26 ++++---- lib/spack/spack/directives.py | 9 ++- lib/spack/spack/environment.py | 10 +-- lib/spack/spack/mirror.py | 45 ++++++------- lib/spack/spack/package.py | 112 +++++++++++++++++---------------- lib/spack/spack/repository.py | 22 ++++--- lib/spack/spack/spec.py | 6 +- lib/spack/spack/stage.py | 40 ++++++------ lib/spack/spack/test/git_fetch.py | 13 ++-- lib/spack/spack/test/hg_fetch.py | 13 ++-- lib/spack/spack/test/mirror.py | 7 ++- lib/spack/spack/test/provider_index.py | 2 +- lib/spack/spack/test/svn_fetch.py | 13 ++-- lib/spack/spack/util/pattern.py | 12 ++-- lib/spack/spack/version.py | 19 +++--- 20 files changed, 205 insertions(+), 201 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 5affd3c7c5..9fbf0536a4 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -476,14 +476,12 @@ def setup_package(pkg, dirty=False): def fork(pkg, function, dirty=False): """Fork a child process to do part of a spack build. - Arguments: + :param pkg: pkg whose environemnt we should set up the forked process for. + :param function: arg-less function to run in the child process. + :param dirty: If True, do NOT clean the environment before building. - pkg -- pkg whose environemnt we should set up the - forked process for. - function -- arg-less function to run in the child process. - dirty -- If True, do NOT clean the environment before building. + Usage:: - Usage: def child_fun(): # do stuff build_env.fork(pkg, child_fun) @@ -496,8 +494,8 @@ def fork(pkg, function, dirty=False): If something goes wrong, the child process is expected to print the error and the parent process will exit with error as well. If things go well, the child exits and the parent - carries on. - """ + carries on.""" + try: pid = os.fork() except OSError as e: diff --git a/lib/spack/spack/compilers/clang.py b/lib/spack/spack/compilers/clang.py index 36c91f6670..f7f1bf106b 100644 --- a/lib/spack/spack/compilers/clang.py +++ b/lib/spack/spack/compilers/clang.py @@ -77,18 +77,17 @@ class Clang(Compiler): @classmethod def default_version(cls, comp): """The '--version' option works for clang compilers. - On most platforms, output looks like this:: + On most platforms, output looks like this:: - clang version 3.1 (trunk 149096) - Target: x86_64-unknown-linux-gnu - Thread model: posix + clang version 3.1 (trunk 149096) + Target: x86_64-unknown-linux-gnu + Thread model: posix - On Mac OS X, it looks like this: - - Apple LLVM version 7.0.2 (clang-700.1.81) - Target: x86_64-apple-darwin15.2.0 - Thread model: posix + On Mac OS X, it looks like this:: + Apple LLVM version 7.0.2 (clang-700.1.81) + Target: x86_64-apple-darwin15.2.0 + Thread model: posix """ if comp not in cpr._version_cache: compiler = Executable(comp) diff --git a/lib/spack/spack/compilers/intel.py b/lib/spack/spack/compilers/intel.py index 8531ecd19a..4f0c12140f 100644 --- a/lib/spack/spack/compilers/intel.py +++ b/lib/spack/spack/compilers/intel.py @@ -68,15 +68,15 @@ class Intel(Compiler): @classmethod def default_version(cls, comp): """The '--version' option seems to be the most consistent one - for intel compilers. Output looks like this:: + for intel compilers. Output looks like this:: - icpc (ICC) 12.1.5 20120612 - Copyright (C) 1985-2012 Intel Corporation. All rights reserved. + icpc (ICC) 12.1.5 20120612 + Copyright (C) 1985-2012 Intel Corporation. All rights reserved. - or:: + or:: - ifort (IFORT) 12.1.5 20120612 - Copyright (C) 1985-2012 Intel Corporation. All rights reserved. + ifort (IFORT) 12.1.5 20120612 + Copyright (C) 1985-2012 Intel Corporation. All rights reserved. """ return get_compiler_version( comp, '--version', r'\((?:IFORT|ICC)\) ([^ ]+)') diff --git a/lib/spack/spack/compilers/nag.py b/lib/spack/spack/compilers/nag.py index fdfc078b5e..7beb0efdf5 100644 --- a/lib/spack/spack/compilers/nag.py +++ b/lib/spack/spack/compilers/nag.py @@ -70,10 +70,10 @@ class Nag(Compiler): @classmethod def default_version(self, comp): """The '-V' option works for nag compilers. - Output looks like this:: + Output looks like this:: - NAG Fortran Compiler Release 6.0(Hibiya) Build 1037 - Product NPL6A60NA for x86-64 Linux + NAG Fortran Compiler Release 6.0(Hibiya) Build 1037 + Product NPL6A60NA for x86-64 Linux """ return get_compiler_version( comp, '-V', r'NAG Fortran Compiler Release ([0-9.]+)') diff --git a/lib/spack/spack/compilers/pgi.py b/lib/spack/spack/compilers/pgi.py index 0e4be6e9ba..37ffe44028 100644 --- a/lib/spack/spack/compilers/pgi.py +++ b/lib/spack/spack/compilers/pgi.py @@ -58,11 +58,11 @@ class Pgi(Compiler): @classmethod def default_version(cls, comp): """The '-V' option works for all the PGI compilers. - Output looks like this:: + Output looks like this:: - pgcc 15.10-0 64-bit target on x86-64 Linux -tp sandybridge - The Portland Group - PGI Compilers and Tools - Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved. + pgcc 15.10-0 64-bit target on x86-64 Linux -tp sandybridge + The Portland Group - PGI Compilers and Tools + Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved. """ return get_compiler_version( comp, '-V', r'pg[^ ]* ([^ ]+) \d\d\d?-bit target') diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index c90eff4229..ebddfb328f 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -24,26 +24,28 @@ ############################################################################## """This module implements Spack's configuration file handling. +========================= Configuration file scopes -=============================== +========================= When Spack runs, it pulls configuration data from several config directories, each of which contains configuration files. In Spack, there are two configuration scopes: - 1. ``site``: Spack loads site-wide configuration options from +1. ``site``: Spack loads site-wide configuration options from ``$(prefix)/etc/spack/``. - 2. ``user``: Spack next loads per-user configuration options from - ~/.spack/. +2. ``user``: Spack next loads per-user configuration options from + ``~/.spack/``. Spack may read configuration files from both of these locations. When configurations conflict, the user config options take precedence over the site configurations. Each configuration directory may contain several configuration files, such as compilers.yaml or mirrors.yaml. +========================= Configuration file format -=============================== +========================= Configuration files are formatted using YAML syntax. This format is implemented by libyaml (included with Spack as an external module), @@ -63,13 +65,13 @@ Config files are structured as trees, like this ``compiler`` section:: cc: /usr/local/bin/mpixlc ... -In this example, entries like ''compilers'' and ''xlc@12.1'' are used to +In this example, entries like "compilers" and "xlc@12.1" are used to categorize entries beneath them in the tree. At the root of the tree, -entries like ''cc'' and ''cxx'' are specified as name/value pairs. +entries like "cc" and "cxx" are specified as name/value pairs. ``config.get_config()`` returns these trees as nested dicts, but it strips the first level off. So, ``config.get_config('compilers')`` -would return something like this for the above example: +would return something like this for the above example:: { 'chaos_5_x86_64_ib' : { 'gcc@4.4.7' : @@ -84,8 +86,9 @@ would return something like this for the above example: Likewise, the ``mirrors.yaml`` file's first line must be ``mirrors:``, but ``get_config()`` strips that off too. +========== Precedence -=============================== +========== ``config.py`` routines attempt to recursively merge configuration across scopes. So if there are ``compilers.py`` files in both the @@ -99,7 +102,7 @@ first. Sometimes, it is useful to *completely* override a site setting with a user one. To accomplish this, you can use *two* colons at the end of -a key in a configuration file. For example, this: +a key in a configuration file. For example, this:: compilers:: chaos_5_x86_64_ib: @@ -114,9 +117,8 @@ a key in a configuration file. For example, this: ... Will make Spack take compilers *only* from the user configuration, and -the site configuration will be ignored. +the site configuration will be ignored.""" -""" import copy import os import re diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 2a151e0374..86acd075cd 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -288,8 +288,7 @@ def variant(pkg, name, default=False, description=""): @directive('resources') def resource(pkg, **kwargs): - """ - Define an external resource to be fetched and staged when building the + """Define an external resource to be fetched and staged when building the package. Based on the keywords present in the dictionary the appropriate FetchStrategy will be used for the resource. Resources are fetched and staged in their own folder inside spack stage area, and then moved into @@ -298,11 +297,11 @@ def resource(pkg, **kwargs): List of recognized keywords: * 'when' : (optional) represents the condition upon which the resource is - needed + needed * 'destination' : (optional) path where to move the resource. This path - must be relative to the main package stage area. + must be relative to the main package stage area. * 'placement' : (optional) gives the possibility to fine tune how the - resource is moved into the main package stage area. + resource is moved into the main package stage area. """ when = kwargs.get('when', pkg.name) destination = kwargs.get('destination', "") diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index 613ece2f45..64863510c3 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -261,17 +261,13 @@ class EnvironmentModifications(object): @staticmethod def from_sourcing_files(*args, **kwargs): - """ - Creates an instance of EnvironmentModifications that, if executed, + """Creates an instance of EnvironmentModifications that, if executed, has the same effect on the environment as sourcing the files passed as parameters - Args: - *args: list of files to be sourced + :param \*args: list of files to be sourced + :rtype: instance of EnvironmentModifications""" - Returns: - instance of EnvironmentModifications - """ env = EnvironmentModifications() # Check if the files are actually there if not all(os.path.isfile(file) for file in args): diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index f053e4405f..1e759848ea 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -120,28 +120,29 @@ def suggest_archive_basename(resource): def create(path, specs, **kwargs): """Create a directory to be used as a spack mirror, and fill it with - package archives. - - Arguments: - path Path to create a mirror directory hierarchy in. - specs Any package versions matching these specs will be added - to the mirror. - - Keyword args: - no_checksum: If True, do not checkpoint when fetching (default False) - num_versions: Max number of versions to fetch per spec, - if spec is ambiguous (default is 0 for all of them) - - Return Value: - Returns a tuple of lists: (present, mirrored, error) - * present: Package specs that were already present. - * mirrored: Package specs that were successfully mirrored. - * error: Package specs that failed to mirror due to some error. - - This routine iterates through all known package versions, and - it creates specs for those versions. If the version satisfies any spec - in the specs list, it is downloaded and added to the mirror. - """ + package archives. + + Arguments: + path: Path to create a mirror directory hierarchy in. + specs: Any package versions matching these specs will be added \ + to the mirror. + + Keyword args: + no_checksum: If True, do not checkpoint when fetching (default False) + num_versions: Max number of versions to fetch per spec, \ + if spec is ambiguous (default is 0 for all of them) + + Return Value: + Returns a tuple of lists: (present, mirrored, error) + + * present: Package specs that were already present. + * mirrored: Package specs that were successfully mirrored. + * error: Package specs that failed to mirror due to some error. + + This routine iterates through all known package versions, and + it creates specs for those versions. If the version satisfies any spec + in the specs list, it is downloaded and added to the mirror.""" + # Make sure nothing is in the way. if os.path.isfile(path): raise MirrorError("%s already exists and is a file." % path) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 8c1204402a..3ffedbbad9 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -84,9 +84,9 @@ class Package(object): with the package itself. Packages are written in pure python. Packages are all submodules of spack.packages. If spack is installed - in $prefix, all of its python files are in $prefix/lib/spack. Most - of them are in the spack module, so all the packages live in - $prefix/lib/spack/spack/packages. + in ``$prefix``, all of its python files are in ``$prefix/lib/spack``. + Most of them are in the spack module, so all the packages live in + ``$prefix/lib/spack/spack/packages``. All you have to do to create a package is make a new subclass of Package in this directory. Spack automatically scans the python files there @@ -95,7 +95,7 @@ class Package(object): **An example package** Let's look at the cmake package to start with. This package lives in - $prefix/lib/spack/spack/packages/cmake.py: + ``$prefix/var/spack/repos/builtin/packages/cmake/package.py``: .. code-block:: python @@ -118,19 +118,21 @@ class Package(object): 1. The module name, ``cmake``. * User will refers to this name, e.g. 'spack install cmake'. - * Corresponds to the name of the file, 'cmake.py', and it can - include ``_``, ``-``, and numbers (it can even start with a + * It can include ``_``, ``-``, and numbers (it can even start with a number). 2. The class name, "Cmake". This is formed by converting `-` or ``_`` in the module name to camel case. If the name starts with a number, we prefix the class name with ``_``. Examples: - Module Name Class Name - foo_bar FooBar - docbook-xml DocbookXml - FooBar Foobar - 3proxy _3proxy + =========== ========== + Module Name Class Name + =========== ========== + foo_bar FooBar + docbook-xml DocbookXml + FooBar Foobar + 3proxy _3proxy + =========== ========== The class name is what spack looks for when it loads a package module. @@ -139,30 +141,30 @@ class Package(object): Aside from proper naming, here is the bare minimum set of things you need when you make a package: - homepage - informational URL, so that users know what they're - installing. + homepage: + informational URL, so that users know what they're + installing. - url or url_for_version(self, version) + url or url_for_version(self, version): If url, then the URL of the source archive that spack will fetch. If url_for_version(), then a method returning the URL required to fetch a particular version. - install() - This function tells spack how to build and install the - software it downloaded. + install(): + This function tells spack how to build and install the + software it downloaded. **Optional Attributes** You can also optionally add these attributes, if needed: - list_url + list_url: Webpage to scrape for available version strings. Default is the directory containing the tarball; use this if the default isn't correct so that invoking 'spack versions' will work for this package. - url_version(self, version) + url_version(self, version): When spack downloads packages at particular versions, it just converts version to string with str(version). Override this if your package needs special version formatting in its URL. boost @@ -179,12 +181,15 @@ class Package(object): **spack create** - Most software comes in nicely packaged tarballs, like this one: - http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz + Most software comes in nicely packaged tarballs, like this one + + http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz + Taking a page from homebrew, spack deduces pretty much everything it - needs to know from the URL above. If you simply type this: + needs to know from the URL above. If you simply type this:: spack create http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz + Spack will download the tarball, generate an md5 hash, figure out the version and the name of the package from the URL, and create a new package file for you with all the names and attributes set correctly. @@ -216,7 +221,6 @@ class Package(object): you can just run configure or cmake without any additional arguments and it will find the dependencies automatically. - **The Install Function** The install function is designed so that someone not too terribly familiar @@ -241,13 +245,12 @@ class Package(object): add_commands_to_module() function in this class. This is where most of them are created and set on the module. - **Parallel Builds** By default, Spack will run make in parallel when you run make() in your install function. Spack figures out how many cores are available on - your system and runs make with -j. If you do not want this behavior, - you can explicitly mark a package not to use parallel make: + your system and runs make with -j. If you do not want this + behavior, you can explicitly mark a package not to use parallel make: .. code-block:: python @@ -257,14 +260,15 @@ class Package(object): ... This changes thd default behavior so that make is sequential. If you still - want to build some parts in parallel, you can do this in your install function: + want to build some parts in parallel, you can do this in your install + function: .. code-block:: python make(parallel=True) - Likewise, if you do not supply parallel = True in your Package, you can keep - the default parallel behavior and run make like this when you want a + Likewise, if you do not supply parallel = True in your Package, you can + keep the default parallel behavior and run make like this when you want a sequential build: .. code-block:: python @@ -295,14 +299,13 @@ class Package(object): p.do_restage() # removes the build directory and # re-expands the archive. - The convention used here is that a do_* function is intended to be called - internally by Spack commands (in spack.cmd). These aren't for package - writers to override, and doing so may break the functionality of the Package - class. + The convention used here is that a ``do_*`` function is intended to be + called internally by Spack commands (in spack.cmd). These aren't for + package writers to override, and doing so may break the functionality + of the Package class. Package creators override functions like install() (all of them do this), clean() (some of them do this), and others to provide custom behavior. - """ # # These are default values for instance variables. @@ -862,19 +865,21 @@ class Package(object): Package implementations should override install() to describe their build process. - Args: - keep_prefix -- Keep install prefix on failure. By default, destroys it. - keep_stage -- By default, stage is destroyed only if there are no - exceptions during build. Set to True to keep the stage - even with exceptions. - ignore_deps -- Don't install dependencies before installing this + :param keep_prefix: Keep install prefix on failure. By default, \ + destroys it. + :param keep_stage: By default, stage is destroyed only if there are \ + no exceptions during build. Set to True to keep the stage + even with exceptions. + :param ignore_deps: Don't install dependencies before installing this \ package - fake -- Don't really build -- install fake stub files instead. - skip_patch -- Skip patch stage of build if True. - verbose -- Display verbose build output (by default, suppresses it) - dirty -- Don't clean the build environment before installing. - make_jobs -- Number of make jobs to use for install. Default is ncpus - run_tests -- Runn tests within the package's install() + :param fake: Don't really build; install fake stub files instead. + :param skip_patch: Skip patch stage of build if True. + :param verbose: Display verbose build output (by default, suppresses \ + it) + :param dirty: Don't clean the build environment before installing. + :param make_jobs: Number of make jobs to use for install. Default is \ + ncpus + :param run_tests: Run tests within the package's install() """ if not self.spec.concrete: raise ValueError("Can only install concrete packages: %s." @@ -1110,20 +1115,20 @@ class Package(object): def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """Set up the environment of packages that depend on this one. - This is similar to `setup_environment`, but it is used to + This is similar to ``setup_environment``, but it is used to modify the compile and runtime environments of packages that *depend* on this one. This gives packages like Python and others that follow the extension model a way to implement common environment or compile-time settings for dependencies. - By default, this delegates to self.setup_environment() + By default, this delegates to ``self.setup_environment()`` - Example : + Example: 1. Installing python modules generally requires - `PYTHONPATH` to point to the lib/pythonX.Y/site-packages - directory in the module's install prefix. This could - set that variable. + `PYTHONPATH` to point to the lib/pythonX.Y/site-packages + directory in the module's install prefix. This could + set that variable. Args: @@ -1142,7 +1147,6 @@ class Package(object): This is useful if there are some common steps to installing all extensions for a certain package. - """ self.setup_environment(spack_env, run_env) diff --git a/lib/spack/spack/repository.py b/lib/spack/spack/repository.py index 2d8dc39648..1d4cddaa0f 100644 --- a/lib/spack/spack/repository.py +++ b/lib/spack/spack/repository.py @@ -198,15 +198,19 @@ class RepoPath(object): def get_repo(self, namespace, default=NOT_PROVIDED): """Get a repository by namespace. - Arguments - namespace - Look up this namespace in the RepoPath, and return - it if found. - - Optional Arguments - default - If default is provided, return it when the namespace - isn't found. If not, raise an UnknownNamespaceError. + + Arguments: + + namespace: + + Look up this namespace in the RepoPath, and return it if found. + + Optional Arguments: + + default: + + If default is provided, return it when the namespace + isn't found. If not, raise an UnknownNamespaceError. """ fullspace = '%s.%s' % (self.super_namespace, namespace) if fullspace not in self.by_namespace: diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 316b7d6a8c..19733c8a41 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2085,7 +2085,7 @@ class Spec(object): $# 7-char prefix of DAG hash with '-' prefix $$ $ - You can also use full-string versions, which elide the prefixes: + You can also use full-string versions, which elide the prefixes:: ${PACKAGE} Package name ${VERSION} Version @@ -2101,9 +2101,9 @@ class Spec(object): ${SPACK_INSTALL} The default spack install directory, ${SPACK_PREFIX}/opt - Optionally you can provide a width, e.g. $20_ for a 20-wide name. + Optionally you can provide a width, e.g. ``$20_`` for a 20-wide name. Like printf, you can provide '-' for left justification, e.g. - $-20_ for a left-justified name. + ``$-20_`` for a left-justified name. Anything else is copied verbatim into the output stream. diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 7676cb9ab6..c0705a89c8 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -49,16 +49,14 @@ class Stage(object): some source code is downloaded and built before being installed. It handles fetching the source code, either as an archive to be expanded or by checking it out of a repository. A stage's - lifecycle looks like this: + lifecycle looks like this:: - ``` - with Stage() as stage: # Context manager creates and destroys the - # stage directory - stage.fetch() # Fetch a source archive into the stage. - stage.expand_archive() # Expand the source archive. - # Build and install the archive. (handled by - # user of Stage) - ``` + with Stage() as stage: # Context manager creates and destroys the + # stage directory + stage.fetch() # Fetch a source archive into the stage. + stage.expand_archive() # Expand the source archive. + # Build and install the archive. + # (handled by user of Stage) When used as a context manager, the stage is automatically destroyed if no exception is raised by the context. If an @@ -66,19 +64,17 @@ class Stage(object): destroyed, for potential reuse later. You can also use the stage's create/destroy functions manually, - like this: - - ``` - stage = Stage() - try: - stage.create() # Explicitly create the stage directory. - stage.fetch() # Fetch a source archive into the stage. - stage.expand_archive() # Expand the source archive. - # Build and install the archive. (handled by - # user of Stage) - finally: - stage.destroy() # Explicitly destroy the stage directory. - ``` + like this:: + + stage = Stage() + try: + stage.create() # Explicitly create the stage directory. + stage.fetch() # Fetch a source archive into the stage. + stage.expand_archive() # Expand the source archive. + # Build and install the archive. + # (handled by user of Stage) + finally: + stage.destroy() # Explicitly destroy the stage directory. If spack.use_tmp_stage is True, spack will attempt to create stages in a tmp directory. Otherwise, stages are created directly diff --git a/lib/spack/spack/test/git_fetch.py b/lib/spack/spack/test/git_fetch.py index 0d1a8fe949..7aff98cc54 100644 --- a/lib/spack/spack/test/git_fetch.py +++ b/lib/spack/spack/test/git_fetch.py @@ -56,12 +56,13 @@ class GitFetchTest(MockPackagesTest): def try_fetch(self, rev, test_file, args): """Tries to: - 1. Fetch the repo using a fetch strategy constructed with - supplied args. - 2. Check if the test_file is in the checked out repository. - 3. Assert that the repository is at the revision supplied. - 4. Add and remove some files, then reset the repo, and - ensure it's all there again. + + 1. Fetch the repo using a fetch strategy constructed with + supplied args. + 2. Check if the test_file is in the checked out repository. + 3. Assert that the repository is at the revision supplied. + 4. Add and remove some files, then reset the repo, and + ensure it's all there again. """ self.pkg.versions[ver('git')] = args diff --git a/lib/spack/spack/test/hg_fetch.py b/lib/spack/spack/test/hg_fetch.py index 44af6730a1..03e35ea093 100644 --- a/lib/spack/spack/test/hg_fetch.py +++ b/lib/spack/spack/test/hg_fetch.py @@ -52,12 +52,13 @@ class HgFetchTest(MockPackagesTest): def try_fetch(self, rev, test_file, args): """Tries to: - 1. Fetch the repo using a fetch strategy constructed with - supplied args. - 2. Check if the test_file is in the checked out repository. - 3. Assert that the repository is at the revision supplied. - 4. Add and remove some files, then reset the repo, and - ensure it's all there again. + + 1. Fetch the repo using a fetch strategy constructed with + supplied args. + 2. Check if the test_file is in the checked out repository. + 3. Assert that the repository is at the revision supplied. + 4. Add and remove some files, then reset the repo, and + ensure it's all there again. """ self.pkg.versions[ver('hg')] = args diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py index d6d7b30b7c..f9ff190468 100644 --- a/lib/spack/spack/test/mirror.py +++ b/lib/spack/spack/test/mirror.py @@ -52,9 +52,10 @@ class MirrorTest(MockPackagesTest): def set_up_package(self, name, MockRepoClass, url_attr): """Set up a mock package to be mirrored. - Each package needs us to: - 1. Set up a mock repo/archive to fetch from. - 2. Point the package's version args at that repo. + Each package needs us to: + + 1. Set up a mock repo/archive to fetch from. + 2. Point the package's version args at that repo. """ # Set up packages to point at mock repos. spec = Spec(name) diff --git a/lib/spack/spack/test/provider_index.py b/lib/spack/spack/test/provider_index.py index 9847dd05a6..d785038899 100644 --- a/lib/spack/spack/test/provider_index.py +++ b/lib/spack/spack/test/provider_index.py @@ -24,7 +24,7 @@ ############################################################################## """Tests for provider index cache files. -Tests assume that mock packages provide this: +Tests assume that mock packages provide this:: {'blas': { blas: set([netlib-blas, openblas, openblas-with-lapack])}, diff --git a/lib/spack/spack/test/svn_fetch.py b/lib/spack/spack/test/svn_fetch.py index 9ef7593ed1..01ffc488a7 100644 --- a/lib/spack/spack/test/svn_fetch.py +++ b/lib/spack/spack/test/svn_fetch.py @@ -63,12 +63,13 @@ class SvnFetchTest(MockPackagesTest): def try_fetch(self, rev, test_file, args): """Tries to: - 1. Fetch the repo using a fetch strategy constructed with - supplied args. - 2. Check if the test_file is in the checked out repository. - 3. Assert that the repository is at the revision supplied. - 4. Add and remove some files, then reset the repo, and - ensure it's all there again. + + 1. Fetch the repo using a fetch strategy constructed with + supplied args. + 2. Check if the test_file is in the checked out repository. + 3. Assert that the repository is at the revision supplied. + 4. Add and remove some files, then reset the repo, and + ensure it's all there again. """ self.pkg.versions[ver('svn')] = args diff --git a/lib/spack/spack/util/pattern.py b/lib/spack/spack/util/pattern.py index c36445193c..2b7f06d46e 100644 --- a/lib/spack/spack/util/pattern.py +++ b/lib/spack/spack/util/pattern.py @@ -31,15 +31,15 @@ def composite(interface=None, method_list=None, container=list): """Returns a class decorator that patches a class adding all the methods it needs to be a composite for a given interface. - :param interface: class exposing the interface to which the composite - object must conform. Only non-private and non-special methods will be - taken into account + :param interface: class exposing the interface to which the composite \ + object must conform. Only non-private and non-special methods will \ + be taken into account :param method_list: names of methods that should be part of the composite - :param container: container for the composite object (default = list). - Must fulfill the MutableSequence contract. The composite class will expose - the container API to manage object composition + :param container: container for the composite object (default = list). \ + Must fulfill the MutableSequence contract. The composite class will \ + expose the container API to manage object composition :return: class decorator """ diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index e1311eb0d9..fb87966d04 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -155,11 +155,11 @@ class Version(object): @coerced def satisfies(self, other): - """A Version 'satisfies' another if it is at least as specific and has a - common prefix. e.g., we want gcc@4.7.3 to satisfy a request for - gcc@4.7 so that when a user asks to build with gcc@4.7, we can find - a suitable compiler. - """ + """A Version 'satisfies' another if it is at least as specific and has + a common prefix. e.g., we want gcc@4.7.3 to satisfy a request for + gcc@4.7 so that when a user asks to build with gcc@4.7, we can find + a suitable compiler.""" + nself = len(self.version) nother = len(other.version) return nother <= nself and self.version[:nother] == other.version @@ -388,12 +388,12 @@ class VersionRange(object): @coerced def satisfies(self, other): - """ - A VersionRange satisfies another if some version in this range + """A VersionRange satisfies another if some version in this range would satisfy some version in the other range. To do this it must either: - a) Overlap with the other range - b) The start of this range satisfies the end of the other range. + + a) Overlap with the other range + b) The start of this range satisfies the end of the other range. This is essentially the same as overlaps(), but overlaps assumes that its arguments are specific. That is, 4.7 is interpreted as @@ -401,6 +401,7 @@ class VersionRange(object): by 4.7.3.5, etc. Rationale: + If a user asks for gcc@4.5:4.7, and a package is only compatible with gcc@4.7.3:4.8, then that package should be able to build under the constraints. Just using overlaps() would not work here. -- cgit v1.2.3-60-g2f50 From 867a92f08395aa2ceab3ba58f2fe229682b8c2c9 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 16:28:17 -0500 Subject: Fixes #1618, Problems with spack package-list --- lib/spack/spack/cmd/package-list.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/spack/spack/cmd/package-list.py b/lib/spack/spack/cmd/package-list.py index 9ed42de823..42f408af96 100644 --- a/lib/spack/spack/cmd/package-list.py +++ b/lib/spack/spack/cmd/package-list.py @@ -32,8 +32,8 @@ description = "Print a list of all packages in reStructuredText." def github_url(pkg): """Link to a package file on github.""" - url = "https://github.com/llnl/spack/blob/master/var/spack/packages/%s/package.py" - return (url % pkg.name) + url = "https://github.com/LLNL/spack/blob/develop/var/spack/repos/builtin/packages/{0}/package.py" + return url.format(pkg.name) def rst_table(elts): @@ -51,35 +51,41 @@ def print_rst_package_list(): print ".. _package-list:" print + print "============" print "Package List" - print "==================" - + print "============" + print print "This is a list of things you can install using Spack. It is" print "automatically generated based on the packages in the latest Spack" print "release." print - print "Spack currently has %d mainline packages:" % len(pkgs) print print rst_table("`%s`_" % p for p in pkg_names) print - print "-----" # Output some text for each package. for pkg in pkgs: + print "-----" print print ".. _%s:" % pkg.name print + # Must be at least 2 long, breaks for single letter packages like R. + print "-" * max(len(pkg.name), 2) print pkg.name - print "-" * len(pkg.name) - print "Links:" + print "-" * max(len(pkg.name), 2) + print + print "Homepage:" print " * `%s <%s>`__" % (cgi.escape(pkg.homepage), pkg.homepage) + print + print "Spack package:" print " * `%s/package.py <%s>`__" % (pkg.name, github_url(pkg)) print if pkg.versions: print "Versions:" print " " + ", ".join(str(v) for v in reversed(sorted(pkg.versions))) + print for deptype in spack.alldeps: deps = pkg.dependencies_of_type(deptype) @@ -92,7 +98,6 @@ def print_rst_package_list(): print "Description:" print pkg.format_doc(indent=2) print - print "-----" def package_list(parser, args): -- cgit v1.2.3-60-g2f50 From f78134efa54baef2c1ef13167bf49859c84d3643 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 16:55:00 -0500 Subject: Fixes #1620, Missing references --- lib/spack/docs/configuration.rst | 2 ++ lib/spack/docs/packaging_guide.rst | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index bce6005a7c..7545acd62a 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -130,6 +130,8 @@ The ``buildable`` does not need to be paired with external packages. It could also be used alone to forbid packages that may be buggy or otherwise undesirable. +.. _concretization-preferences: + -------------------------- Concretization Preferences -------------------------- diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 0c0554c24a..eae928ec76 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1833,6 +1833,8 @@ running ``spack spec``. For example: This is useful when you want to know exactly what Spack will do when you ask for a particular spec. +.. _concretization-policies: + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``Concretization Policies`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1842,8 +1844,7 @@ be concretized on their system. For example, one user may prefer packages built with OpenMPI and the Intel compiler. Another user may prefer packages be built with MVAPICH and GCC. -See the `documentation in the config section `_ -for more details. +See the :ref:`concretization-preferences` section for more details. .. _install-method: @@ -2465,7 +2466,7 @@ Callable wrappers also allow spack to provide some special features. For example, in Spack, ``make`` is parallel by default, and Spack figures out the number of cores on your machine and passes an appropriate value for ``-j`` when it calls ``make`` (see the -``parallel`` package attribute under :ref:`metadata `). In +``parallel`` `package attribute `). In a package file, you can supply a keyword argument, ``parallel=False``, to the ``make`` wrapper to disable parallel make. In the ``libelf`` package, this allows us to avoid race conditions in the library's -- cgit v1.2.3-60-g2f50 From f856952728811c267669962573aea15b9223c1e9 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 Aug 2016 16:56:59 -0500 Subject: Always run Documentation tests --- share/spack/qa/run-doc-tests | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests index 102eb72d5e..0b23bd9d3d 100755 --- a/share/spack/qa/run-doc-tests +++ b/share/spack/qa/run-doc-tests @@ -28,9 +28,6 @@ deps=( # Check for dependencies "$QA_DIR/check_dependencies" "${deps[@]}" || exit 1 -# Gather array of changed files -changed=($("$QA_DIR/changed_files" lib/spack/docs)) - # Move to documentation directory # Allows script to be run from anywhere cd "$DOC_DIR" @@ -38,11 +35,6 @@ cd "$DOC_DIR" # Cleanup temporary files upon exit or when script is killed trap 'make clean --silent' EXIT SIGINT SIGTERM -# Only run tests if documentation was updated -if [[ "${changed[@]}" ]]; then - # Treat warnings as fatal errors - make SPHINXOPTS=-W -else - echo "No documentation was modified." -fi +# Treat warnings as fatal errors +make SPHINXOPTS=-W -- cgit v1.2.3-60-g2f50 From 6795f4ca12369b9aee8700b65f4150f60cde460b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 26 Aug 2016 16:41:00 -0500 Subject: Use console instead of shell syntax lexer, fixes #1634 --- lib/spack/docs/basic_usage.rst | 831 ++++++++++++++++++------------------ lib/spack/docs/configuration.rst | 62 +-- lib/spack/docs/developer_guide.rst | 104 +++-- lib/spack/docs/features.rst | 26 +- lib/spack/docs/getting_started.rst | 11 +- lib/spack/docs/index.rst | 2 +- lib/spack/docs/mirrors.rst | 104 ++--- lib/spack/docs/packaging_guide.rst | 832 +++++++++++++++++-------------------- 8 files changed, 970 insertions(+), 1002 deletions(-) diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index a3cec2cc8b..fd701789ec 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -8,14 +8,17 @@ The ``spack`` command has many *subcommands*. You'll only need a small subset of them for typical usage. Note that Spack colorizes output. ``less -R`` should be used with -Spack to maintain this colorization. E.g.:: +Spack to maintain this colorization. E.g.: - spack find | less -R +.. code-block:: console -It is recommend that the following be put in your ``.bashrc`` file:: + $ spack find | less -R - alias less='less -R' +It is recommend that the following be put in your ``.bashrc`` file: +.. code-block:: sh + + alias less='less -R' -------------------------- Listing available packages @@ -114,18 +117,18 @@ Installing and uninstalling For example, To install the latest version of the ``mpileaks`` package, you might type this: -.. code-block:: sh +.. code-block:: console $ spack install mpileaks -If `mpileaks` depends on other packages, Spack will install the +If ``mpileaks`` depends on other packages, Spack will install the dependencies first. It then fetches the ``mpileaks`` tarball, expands it, verifies that it was downloaded without errors, builds it, and installs it in its own directory under ``$SPACK_ROOT/opt``. You'll see a number of messages from spack, a lot of build output, and a message that the packages is installed: -.. code-block:: sh +.. code-block:: console $ spack install mpileaks ==> Installing mpileaks @@ -155,7 +158,7 @@ Building a specific version Spack can also build *specific versions* of a package. To do this, just add ``@`` after the package name, followed by a version: -.. code-block:: sh +.. code-block:: console $ spack install mpich@3.0.4 @@ -174,8 +177,8 @@ two configurations of the same version of a package, one built with boost This can all be done on the command line using the *spec* syntax. Spack calls the descriptor used to refer to a particular package configuration a **spec**. In the commands above, ``mpileaks`` and -``mpileaks@3.0.4``. We'll talk more about how you can use them to -customize an installation in :ref:`sec-specs`. +``mpileaks@3.0.4`` are both valid *specs*. We'll talk more about how +you can use them to customize an installation in :ref:`sec-specs`. .. _spack-uninstall: @@ -183,53 +186,56 @@ customize an installation in :ref:`sec-specs`. ``spack uninstall`` ^^^^^^^^^^^^^^^^^^^ -To uninstall a package, type ``spack uninstall ``. This will ask the user for -confirmation, and in case will completely remove the directory in which the package was installed. +To uninstall a package, type ``spack uninstall ``. This will ask +the user for confirmation, and in case will completely remove the directory +in which the package was installed. -.. code-block:: sh +.. code-block:: console - spack uninstall mpich + $ spack uninstall mpich If there are still installed packages that depend on the package to be uninstalled, spack will refuse to uninstall it. To uninstall a package and every package that depends on it, you may give the -`--dependents` option. +``--dependents`` option. -.. code-block:: sh +.. code-block:: console - spack uninstall --dependents mpich + $ spack uninstall --dependents mpich -will display a list of all the packages that depend on `mpich` and, upon confirmation, -will uninstall them in the right order. +will display a list of all the packages that depend on ``mpich`` and, upon +confirmation, will uninstall them in the right order. -A line like +A command like -.. code-block:: sh +.. code-block:: console - spack uninstall mpich + $ spack uninstall mpich -may be ambiguous, if multiple ``mpich`` configurations are installed. For example, if both -``mpich@3.0.2`` and ``mpich@3.1`` are installed, ``mpich`` could refer -to either one. Because it cannot determine which one to uninstall, -Spack will ask you either to provide a version number to remove the -ambiguity or use the ``--all`` option to uninstall all of the matching packages. +may be ambiguous if multiple ``mpich`` configurations are installed. +For example, if both ``mpich@3.0.2`` and ``mpich@3.1`` are installed, +``mpich`` could refer to either one. Because it cannot determine which +one to uninstall, Spack will ask you either to provide a version number +to remove the ambiguity or use the ``--all`` option to uninstall all of +the matching packages. -You may force uninstall a package with the `--force` option +You may force uninstall a package with the ``--force`` option -.. code-block:: sh +.. code-block:: console - spack uninstall --force mpich + $ spack uninstall --force mpich -but you risk breaking other installed packages. In general, it is safer to remove dependent -packages *before* removing their dependencies or use the `--dependents` option. +but you risk breaking other installed packages. In general, it is safer to +remove dependent packages *before* removing their dependencies or use the +``--dependents`` option. ------------------------- Seeing installed packages ------------------------- We know that ``spack list`` shows you the names of available packages, -but how do you figure out which are installed? +but how do you figure out which are already installed? .. _spack-find: @@ -244,7 +250,7 @@ of the same package with different specs. Running ``spack find`` with no arguments lists installed packages: -.. code-block:: sh +.. code-block:: console $ spack find ==> 74 installed packages. @@ -283,17 +289,18 @@ only shows the version of installed packages. ``spack find`` can filter the package list based on the package name, spec, or a number of properties of their installation status. For example, missing -dependencies of a spec can be shown with ``-m``, packages which were +dependencies of a spec can be shown with ``--missing``, packages which were explicitly installed with ``spack install `` can be singled out with -``-e`` and those which have been pulled in only as dependencies with ``-E``. +``--explicit`` and those which have been pulled in only as dependencies with +``--implicit``. In some cases, there may be different configurations of the *same* version of a package installed. For example, there are two -installations of of ``libdwarf@20130729`` above. We can look at them -in more detail using ``spack find -d``, and by asking only to show +installations of ``libdwarf@20130729`` above. We can look at them +in more detail using ``spack find --deps``, and by asking only to show ``libdwarf`` packages: -.. code-block:: sh +.. code-block:: console $ spack find --deps libdwarf ==> 2 installed packages. @@ -307,25 +314,25 @@ Now we see that the two instances of ``libdwarf`` depend on *different* versions of ``libelf``: 0.8.12 and 0.8.13. This view can become complicated for packages with many dependencies. If you just want to know whether two packages' dependencies differ, you can use -``spack find -l``: +``spack find --long``: -.. code-block:: sh +.. code-block:: console - $ spack find -l libdwarf + $ spack find --long libdwarf ==> 2 installed packages. -- linux-debian7-x86_64 / gcc@4.4.7 -------------------------------- libdwarf@20130729-d9b90962 libdwarf@20130729-b52fac98 -Now the ``libwarf`` installs have hashes after their names. These are +Now the ``libdwarf`` installs have hashes after their names. These are hashes over all of the dependencies of each package. If the hashes are the same, then the packages have the same dependency configuration. If you want to know the path where each package is installed, you can -use ``spack find -p``: +use ``spack find --paths``: -.. code-block:: sh +.. code-block:: console - $ spack find -p + $ spack find --paths ==> 74 installed packages. -- linux-debian7-x86_64 / gcc@4.4.7 -------------------------------- ImageMagick@6.8.9-10 /home/gamblin2/spack/opt/linux-debian7-x86_64/gcc@4.4.7/ImageMagick@6.8.9-10-4df950dd @@ -340,9 +347,9 @@ use ``spack find -p``: And, finally, you can restrict your search to a particular package by supplying its name: -.. code-block:: sh +.. code-block:: console - $ spack find -p libelf + $ spack find --paths libelf -- linux-debian7-x86_64 / gcc@4.4.7 -------------------------------- libelf@0.8.11 /home/gamblin2/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.11 libelf@0.8.12 /home/gamblin2/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.12 @@ -353,7 +360,7 @@ by supplying its name: package. If you want to find only libelf versions greater than version 0.8.12, you could say: -.. code-block:: sh +.. code-block:: console $ spack find libelf@0.8.12: -- linux-debian7-x86_64 / gcc@4.4.7 -------------------------------- @@ -362,17 +369,16 @@ package. If you want to find only libelf versions greater than version Finding just the versions of libdwarf built with a particular version of libelf would look like this: -.. code-block:: sh +.. code-block:: console - $ spack find -l libdwarf ^libelf@0.8.12 + $ spack find --long libdwarf ^libelf@0.8.12 ==> 1 installed packages. -- linux-debian7-x86_64 / gcc@4.4.7 -------------------------------- libdwarf@20130729-d9b90962 We can also search for packages that have a certain attribute. For example, -``spack find -l libdwarf +debug`` will show only installations of libdwarf -with the 'debug' compile-time option enabled, while ``spack find -l +debug`` -will find every installed package with a 'debug' compile-time option enabled. +``spack find libdwarf +debug`` will show only installations of libdwarf +with the 'debug' compile-time option enabled. The full spec syntax is discussed in detail in :ref:`sec-specs`. @@ -385,7 +391,7 @@ Compiler configuration Spack has the ability to build packages with multiple compilers and compiler versions. Spack searches for compilers on your machine automatically the first time it is run. It does this by inspecting -your path. +your ``PATH``. .. _spack-compilers: @@ -394,24 +400,26 @@ your path. ^^^^^^^^^^^^^^^^^^^ You can see which compilers spack has found by running ``spack -compilers`` or ``spack compiler list``:: - - $ spack compilers - ==> Available compilers - -- gcc --------------------------------------------------------- - gcc@4.9.0 gcc@4.8.0 gcc@4.7.0 gcc@4.6.2 gcc@4.4.7 - gcc@4.8.2 gcc@4.7.1 gcc@4.6.3 gcc@4.6.1 gcc@4.1.2 - -- intel ------------------------------------------------------- - intel@15.0.0 intel@14.0.0 intel@13.0.0 intel@12.1.0 intel@10.0 - intel@14.0.3 intel@13.1.1 intel@12.1.5 intel@12.0.4 intel@9.1 - intel@14.0.2 intel@13.1.0 intel@12.1.3 intel@11.1 - intel@14.0.1 intel@13.0.1 intel@12.1.2 intel@10.1 - -- clang ------------------------------------------------------- - clang@3.4 clang@3.3 clang@3.2 clang@3.1 - -- pgi --------------------------------------------------------- - pgi@14.3-0 pgi@13.2-0 pgi@12.1-0 pgi@10.9-0 pgi@8.0-1 - pgi@13.10-0 pgi@13.1-1 pgi@11.10-0 pgi@10.2-0 pgi@7.1-3 - pgi@13.6-0 pgi@12.8-0 pgi@11.1-0 pgi@9.0-4 pgi@7.0-6 +compilers`` or ``spack compiler list``: + +.. code-block:: console + + $ spack compilers + ==> Available compilers + -- gcc --------------------------------------------------------- + gcc@4.9.0 gcc@4.8.0 gcc@4.7.0 gcc@4.6.2 gcc@4.4.7 + gcc@4.8.2 gcc@4.7.1 gcc@4.6.3 gcc@4.6.1 gcc@4.1.2 + -- intel ------------------------------------------------------- + intel@15.0.0 intel@14.0.0 intel@13.0.0 intel@12.1.0 intel@10.0 + intel@14.0.3 intel@13.1.1 intel@12.1.5 intel@12.0.4 intel@9.1 + intel@14.0.2 intel@13.1.0 intel@12.1.3 intel@11.1 + intel@14.0.1 intel@13.0.1 intel@12.1.2 intel@10.1 + -- clang ------------------------------------------------------- + clang@3.4 clang@3.3 clang@3.2 clang@3.1 + -- pgi --------------------------------------------------------- + pgi@14.3-0 pgi@13.2-0 pgi@12.1-0 pgi@10.9-0 pgi@8.0-1 + pgi@13.10-0 pgi@13.1-1 pgi@11.10-0 pgi@10.2-0 pgi@7.1-3 + pgi@13.6-0 pgi@12.8-0 pgi@11.1-0 pgi@9.0-4 pgi@7.0-6 Any of these compilers can be used to build Spack packages. More on how this is done is in :ref:`sec-specs`. @@ -432,21 +440,25 @@ An alias for ``spack compiler find``. If you do not see a compiler in this list, but you want to use it with Spack, you can simply run ``spack compiler find`` with the path to -where the compiler is installed. For example:: +where the compiler is installed. For example: + +.. code-block:: console - $ spack compiler find /usr/local/tools/ic-13.0.079 - ==> Added 1 new compiler to /Users/gamblin2/.spack/compilers.yaml - intel@13.0.079 + $ spack compiler find /usr/local/tools/ic-13.0.079 + ==> Added 1 new compiler to /Users/gamblin2/.spack/compilers.yaml + intel@13.0.079 Or you can run ``spack compiler find`` with no arguments to force auto-detection. This is useful if you do not know where compilers are installed, but you know that new compilers have been added to your -``PATH``. For example, using dotkit, you might do this:: +``PATH``. For example, using dotkit, you might do this: - $ module load gcc-4.9.0 - $ spack compiler find - ==> Added 1 new compiler to /Users/gamblin2/.spack/compilers.yaml - gcc@4.9.0 +.. code-block:: console + + $ module load gcc-4.9.0 + $ spack compiler find + ==> Added 1 new compiler to /Users/gamblin2/.spack/compilers.yaml + gcc@4.9.0 This loads the environment module for gcc-4.9.0 to add it to ``PATH``, and then it adds the compiler to Spack. @@ -458,7 +470,9 @@ This loads the environment module for gcc-4.9.0 to add it to ^^^^^^^^^^^^^^^^^^^^^^^ If you want to see specifics on a particular compiler, you can run -``spack compiler info`` on it:: +``spack compiler info`` on it: + +.. code-block:: console $ spack compiler info intel@15 intel@15.0.0: @@ -466,9 +480,11 @@ If you want to see specifics on a particular compiler, you can run cxx = /usr/local/bin/icpc-15.0.090 f77 = /usr/local/bin/ifort-15.0.090 fc = /usr/local/bin/ifort-15.0.090 + modules = [] + operating system = centos6 This shows which C, C++, and Fortran compilers were detected by Spack. -Notice also that we didn\'t have to be too specific about the +Notice also that we didn't have to be too specific about the version. We just said ``intel@15``, and information about the only matching Intel compiler was displayed. @@ -480,48 +496,54 @@ If auto-detection fails, you can manually configure a compiler by editing your ``~/.spack/compilers.yaml`` file. You can do this by running ``spack config edit compilers``, which will open the file in your ``$EDITOR``. -Each compiler configuration in the file looks like this:: +Each compiler configuration in the file looks like this: - ... - compilers: - - compiler: - modules = [] - operating_system: OS - paths: - cc: /usr/local/bin/icc-15.0.024-beta - cxx: /usr/local/bin/icpc-15.0.024-beta - f77: /usr/local/bin/ifort-15.0.024-beta - fc: /usr/local/bin/ifort-15.0.024-beta +.. code-block:: yaml - spec: intel@15.0.0: + compilers: + - compiler: + modules = [] + operating_system: centos6 + paths: + cc: /usr/local/bin/icc-15.0.024-beta + cxx: /usr/local/bin/icpc-15.0.024-beta + f77: /usr/local/bin/ifort-15.0.024-beta + fc: /usr/local/bin/ifort-15.0.024-beta + spec: intel@15.0.0: For compilers, like ``clang``, that do not support Fortran, put -``None`` for ``f77`` and ``fc``:: +``None`` for ``f77`` and ``fc``: + +.. code-block:: yaml - clang@3.3svn: - cc: /usr/bin/clang - cxx: /usr/bin/clang++ - f77: None - fc: None + paths: + cc: /usr/bin/clang + cxx: /usr/bin/clang++ + f77: None + fc: None + spec: clang@3.3svn: Once you save the file, the configured compilers will show up in the list displayed by ``spack compilers``. You can also add compiler flags to manually configured compilers. The valid flags are ``cflags``, ``cxxflags``, ``fflags``, ``cppflags``, -``ldflags``, and ``ldlibs``. For example:: - - ... - compilers: - - compiler: - ... - intel@15.0.0: - cc: /usr/local/bin/icc-15.0.024-beta - cxx: /usr/local/bin/icpc-15.0.024-beta - f77: /usr/local/bin/ifort-15.0.024-beta - fc: /usr/local/bin/ifort-15.0.024-beta - cppflags: -O3 -fPIC - ... +``ldflags``, and ``ldlibs``. For example: + +.. code-block:: yaml + + compilers: + - compiler: + modules = [] + operating_system: OS + paths: + cc: /usr/local/bin/icc-15.0.024-beta + cxx: /usr/local/bin/icpc-15.0.024-beta + f77: /usr/local/bin/ifort-15.0.024-beta + fc: /usr/local/bin/ifort-15.0.024-beta + parameters: + cppflags: -O3 -fPIC + spec: intel@15.0.0: These flags will be treated by spack as if they were enterred from the command line each time this compiler is used. The compiler wrappers @@ -541,10 +563,12 @@ Spack, that descriptor is called a *spec*. Spack uses specs to refer to a particular build configuration (or configurations) of a package. Specs are more than a package name and a version; you can use them to specify the compiler, compiler version, architecture, compile options, -and dependency options for a build. In this section, we\'ll go over +and dependency options for a build. In this section, we'll go over the full syntax of specs. -Here is an example of a much longer spec than we\'ve seen thus far:: +Here is an example of a much longer spec than we've seen thus far: + +.. code-block:: none mpileaks @1.2:1.4 %gcc@4.7.5 +debug -qt arch=bgq_os ^callpath @1.1 %gcc@4.7.2 @@ -638,7 +662,7 @@ of dependencies within a spec is that they appear *after* the root package. For example, these two specs represent exactly the same configuration: -.. code-block:: sh +.. code-block:: none mpileaks ^callpath@1.0 ^libelf@0.8.3 mpileaks ^libelf@0.8.3 ^callpath@1.0 @@ -712,7 +736,7 @@ makes available. Variants can be specified using a flexible parameter syntax ``name=``. For example, ``spack install libelf debug=True`` will install libelf build with debug flags. The names of particular variants available for a package depend on -what was provided by the package author. ``spack into `` will +what was provided by the package author. ``spack info `` will provide information on what build variants are available. For compatibility with earlier versions, variants which happen to be @@ -723,7 +747,7 @@ compile time option for the libelf package. Depending on the package a variant may have any default value. For ``libelf`` here, ``debug`` is ``False`` by default, and we turned it on -with ``debug=True`` or ``+debug``. If a package is ``True`` by default +with ``debug=True`` or ``+debug``. If a variant is ``True`` by default you can turn it off by either adding ``-name`` or ``~name`` to the spec. There are two syntaxes here because, depending on context, ``~`` and @@ -774,9 +798,9 @@ command line. From within python files, the same spec would be specified handles the quote symbols. The six compiler flags are injected in the order of implicit make commands -in gnu autotools. If all flags are set, the order is -``$cppflags $cflags|$cxxflags $ldflags command $ldlibs`` for C and C++ and -``$fflags $cppflags $ldflags command $ldlibs`` for fortran. +in GNU Autotools. If all flags are set, the order is +``$cppflags $cflags|$cxxflags $ldflags $ldlibs`` for C and C++ and +``$fflags $cppflags $ldflags $ldlibs`` for Fortran. ^^^^^^^^^^^^^^^^^^^^^^^ Architecture specifiers @@ -786,14 +810,14 @@ The architecture can be specified by using the reserved words ``target`` and/or ``os`` (``target=x86-64 os=debian7``). You can also use the triplet form of platform, operating system and processor. -.. code-block:: sh +.. code-block:: console - spack install libelf arch=cray_xc-CNL10-haswell + $ spack install libelf arch=cray-CNL10-haswell Users on non-Cray systems won't have to worry about specifying the architecture. Spack will autodetect what kind of operating system is on your machine as well as the processor. For more information on how the architecture can be -used on Cray machines, check here :ref:`cray-support` +used on Cray machines, see :ref:`cray-support` .. _sec-virtual-dependencies: @@ -848,21 +872,27 @@ Constraining virtual packages When installing a package that depends on a virtual package, you can opt to specify the particular provider you want to use, or you can let -Spack pick. For example, if you just type this:: +Spack pick. For example, if you just type this: + +.. code-block:: console - spack install mpileaks + $ spack install mpileaks Then spack will pick a provider for you according to site policies. -If you really want a particular version, say mpich, then you could -run this instead:: +If you really want a particular version, say ``mpich``, then you could +run this instead: - spack install mpileaks ^mpich +.. code-block:: console + + $ spack install mpileaks ^mpich This forces spack to use some version of ``mpich`` for its implementation. As always, you can be even more specific and require -a particular ``mpich`` version:: +a particular ``mpich`` version: + +.. code-block:: console - spack install mpileaks ^mpich@3 + $ spack install mpileaks ^mpich@3 The ``mpileaks`` package in particular only needs MPI-1 commands, so any MPI implementation will do. If another package depends on @@ -887,7 +917,7 @@ to be unique, Spack will replace the reference with the spec to which it refers. Otherwise, it will prompt for a more qualified hash. Note that this will not work to reinstall a depencency uninstalled by -``spack uninstall -f``. +``spack uninstall --force``. .. _spack-providers: @@ -937,15 +967,15 @@ distributions, this can be installed from the vendor's repository: .. code-block:: sh - yum install environment-modules # (Fedora/RHEL/CentOS) - apt-get install environment-modules # (Ubuntu/Debian) + $ yum install environment-modules # (Fedora/RHEL/CentOS) + $ apt-get install environment-modules # (Ubuntu/Debian) If your Linux distribution does not have Environment Modules, you can get it with Spack: -.. code-block:: sh +.. code-block:: console - spack install environment-modules + $ spack install environment-modules In this case to activate it automatically you need to add the following two lines to your ``.bashrc`` profile (or similar): @@ -972,7 +1002,8 @@ For ``bash`` or ``ksh``, run: .. code-block:: sh - . ${SPACK_ROOT}/share/spack/setup-env.sh + export SPACK_ROOT=/path/to/spack + . $SPACK_ROOT/share/spack/setup-env.sh For ``csh`` and ``tcsh`` run: @@ -995,8 +1026,8 @@ directories: .. code-block:: sh - ${SPACK_ROOT}/share/spack/modules - ${SPACK_ROOT}/share/spack/dotkit + $SPACK_ROOT/share/spack/modules + $SPACK_ROOT/share/spack/dotkit The directories are automatically added to your ``MODULEPATH`` and ``DK_NODE`` environment variables when you enable Spack's `shell @@ -1011,56 +1042,56 @@ If you have shell support enabled you should be able to run either been installed. Here is sample output of those programs, showing lots of installed packages. - .. code-block:: sh - - $ module avail - - ------- /home/gamblin2/spack/share/spack/modules/linux-debian7-x86_64 -------- - adept-utils@1.0%gcc@4.4.7-5adef8da libelf@0.8.13%gcc@4.4.7 - automaded@1.0%gcc@4.4.7-d9691bb0 libelf@0.8.13%intel@15.0.0 - boost@1.55.0%gcc@4.4.7 mpc@1.0.2%gcc@4.4.7-559607f5 - callpath@1.0.1%gcc@4.4.7-5dce4318 mpfr@3.1.2%gcc@4.4.7 - dyninst@8.1.2%gcc@4.4.7-b040c20e mpich@3.0.4%gcc@4.4.7 - gcc@4.9.1%gcc@4.4.7-93ab98c5 mpich@3.0.4%gcc@4.9.0 - gmp@6.0.0a%gcc@4.4.7 mrnet@4.1.0%gcc@4.4.7-72b7881d - graphlib@2.0.0%gcc@4.4.7 netgauge@2.4.6%gcc@4.9.0-27912b7b - launchmon@1.0.1%gcc@4.4.7 stat@2.1.0%gcc@4.4.7-51101207 - libNBC@1.1.1%gcc@4.9.0-27912b7b sundials@2.5.0%gcc@4.9.0-27912b7b - libdwarf@20130729%gcc@4.4.7-b52fac98 - - .. code-block:: sh - - $ use -l spack - - spack ---------- - adept-utils@1.0%gcc@4.4.7-5adef8da - adept-utils @1.0 - automaded@1.0%gcc@4.4.7-d9691bb0 - automaded @1.0 - boost@1.55.0%gcc@4.4.7 - boost @1.55.0 - callpath@1.0.1%gcc@4.4.7-5dce4318 - callpath @1.0.1 - dyninst@8.1.2%gcc@4.4.7-b040c20e - dyninst @8.1.2 - gmp@6.0.0a%gcc@4.4.7 - gmp @6.0.0a - libNBC@1.1.1%gcc@4.9.0-27912b7b - libNBC @1.1.1 - libdwarf@20130729%gcc@4.4.7-b52fac98 - libdwarf @20130729 - libelf@0.8.13%gcc@4.4.7 - libelf @0.8.13 - libelf@0.8.13%intel@15.0.0 - libelf @0.8.13 - mpc@1.0.2%gcc@4.4.7-559607f5 - mpc @1.0.2 - mpfr@3.1.2%gcc@4.4.7 - mpfr @3.1.2 - mpich@3.0.4%gcc@4.4.7 - mpich @3.0.4 - mpich@3.0.4%gcc@4.9.0 - mpich @3.0.4 - netgauge@2.4.6%gcc@4.9.0-27912b7b - netgauge @2.4.6 - sundials@2.5.0%gcc@4.9.0-27912b7b - sundials @2.5.0 +.. code-block:: console + + $ module avail + + ------- /home/gamblin2/spack/share/spack/modules/linux-debian7-x86_64 -------- + adept-utils@1.0%gcc@4.4.7-5adef8da libelf@0.8.13%gcc@4.4.7 + automaded@1.0%gcc@4.4.7-d9691bb0 libelf@0.8.13%intel@15.0.0 + boost@1.55.0%gcc@4.4.7 mpc@1.0.2%gcc@4.4.7-559607f5 + callpath@1.0.1%gcc@4.4.7-5dce4318 mpfr@3.1.2%gcc@4.4.7 + dyninst@8.1.2%gcc@4.4.7-b040c20e mpich@3.0.4%gcc@4.4.7 + gcc@4.9.1%gcc@4.4.7-93ab98c5 mpich@3.0.4%gcc@4.9.0 + gmp@6.0.0a%gcc@4.4.7 mrnet@4.1.0%gcc@4.4.7-72b7881d + graphlib@2.0.0%gcc@4.4.7 netgauge@2.4.6%gcc@4.9.0-27912b7b + launchmon@1.0.1%gcc@4.4.7 stat@2.1.0%gcc@4.4.7-51101207 + libNBC@1.1.1%gcc@4.9.0-27912b7b sundials@2.5.0%gcc@4.9.0-27912b7b + libdwarf@20130729%gcc@4.4.7-b52fac98 + +.. code-block:: console + + $ use -l spack + + spack ---------- + adept-utils@1.0%gcc@4.4.7-5adef8da - adept-utils @1.0 + automaded@1.0%gcc@4.4.7-d9691bb0 - automaded @1.0 + boost@1.55.0%gcc@4.4.7 - boost @1.55.0 + callpath@1.0.1%gcc@4.4.7-5dce4318 - callpath @1.0.1 + dyninst@8.1.2%gcc@4.4.7-b040c20e - dyninst @8.1.2 + gmp@6.0.0a%gcc@4.4.7 - gmp @6.0.0a + libNBC@1.1.1%gcc@4.9.0-27912b7b - libNBC @1.1.1 + libdwarf@20130729%gcc@4.4.7-b52fac98 - libdwarf @20130729 + libelf@0.8.13%gcc@4.4.7 - libelf @0.8.13 + libelf@0.8.13%intel@15.0.0 - libelf @0.8.13 + mpc@1.0.2%gcc@4.4.7-559607f5 - mpc @1.0.2 + mpfr@3.1.2%gcc@4.4.7 - mpfr @3.1.2 + mpich@3.0.4%gcc@4.4.7 - mpich @3.0.4 + mpich@3.0.4%gcc@4.9.0 - mpich @3.0.4 + netgauge@2.4.6%gcc@4.9.0-27912b7b - netgauge @2.4.6 + sundials@2.5.0%gcc@4.9.0-27912b7b - sundials @2.5.0 The names here should look familiar, they're the same ones from ``spack find``. You *can* use the names here directly. For example, you could type either of these commands to load the callpath module: -.. code-block:: sh +.. code-block:: console - use callpath@1.0.1%gcc@4.4.7-5dce4318 + $ use callpath@1.0.1%gcc@4.4.7-5dce4318 -.. code-block:: sh +.. code-block:: console - module load callpath@1.0.1%gcc@4.4.7-5dce4318 + $ module load callpath@1.0.1%gcc@4.4.7-5dce4318 Neither of these is particularly pretty, easy to remember, or easy to type. Luckily, Spack has its own interface for using modules @@ -1077,7 +1108,7 @@ And you can use the same shortened names you use everywhere else in Spack. For example, this will add the ``mpich`` package built with ``gcc`` to your path: -.. code-block:: sh +.. code-block:: console $ spack install mpich %gcc@4.4.7 @@ -1090,18 +1121,18 @@ Spack. For example, this will add the ``mpich`` package built with Or, similarly with modules, you could type: -.. code-block:: sh +.. code-block:: console $ spack load mpich %gcc@4.4.7 These commands will add appropriate directories to your ``PATH``, -``MANPATH``, ``CPATH``, and ``LD_LIBRARY_PATH``. When you no longer want to use -a package, you can type unload or unuse similarly: +``MANPATH``, ``CPATH``, and ``LD_LIBRARY_PATH``. When you no longer +want to use a package, you can type unload or unuse similarly: -.. code-block:: sh +.. code-block:: console - $ spack unload mpich %gcc@4.4.7 # modules - $ spack unuse mpich %gcc@4.4.7 # dotkit + $ spack unload mpich %gcc@4.4.7 # modules + $ spack unuse mpich %gcc@4.4.7 # dotkit .. note:: @@ -1116,7 +1147,7 @@ Ambiguous module names If a spec used with load/unload or use/unuse is ambiguous (i.e. more than one installed package matches it), then Spack will warn you: -.. code-block:: sh +.. code-block:: console $ spack load libelf ==> Error: Multiple matches for spec libelf. Choose one: @@ -1129,7 +1160,7 @@ identify one package. For example, above, the key differentiator is that one ``libelf`` is built with the Intel compiler, while the other used ``gcc``. You could therefore just type: -.. code-block:: sh +.. code-block:: console $ spack load libelf %intel @@ -1144,13 +1175,13 @@ and are placed in the following directories under the Spack root: .. code-block:: sh - ${SPACK_ROOT}/share/spack/modules - ${SPACK_ROOT}/share/spack/dotkit + $SPACK_ROOT/share/spack/modules + $SPACK_ROOT/share/spack/dotkit The content that gets written in each module file can be customized in two ways: - 1. overriding part of the ``spack.Package`` API within a ``package.py`` - 2. writing dedicated configuration files +#. overriding part of the ``spack.Package`` API within a ``package.py`` +#. writing dedicated configuration files ^^^^^^^^^^^^^^^^^^^^^^^^ Override ``Package`` API @@ -1161,9 +1192,9 @@ of module files: .. code-block:: python - def setup_environment(self, spack_env, run_env): - """Set up the compile and runtime environments for a package.""" - pass + def setup_environment(self, spack_env, run_env): + """Set up the compile and runtime environments for a package.""" + pass """"""""""""""""" Recursive Modules @@ -1179,9 +1210,9 @@ RPATH. Modules may be loaded recursively with the ``load`` command's ``--dependencies`` or ``-r`` argument: -.. code-block:: sh +.. code-block:: console - $ spack load --dependencies ... + $ spack load --dependencies ... More than one spec may be placed on the command line here. @@ -1195,46 +1226,46 @@ commands inside a shell script. By adding the ``--shell`` flag, ``spack module find`` may also be used to generate code that can be cut-and-pasted into a shell script. For example: -.. code-block:: sh - - $ spack module find tcl --dependencies --shell py-numpy git - # bzip2@1.0.6%gcc@4.9.3=linux-x86_64 - module load bzip2-1.0.6-gcc-4.9.3-ktnrhkrmbbtlvnagfatrarzjojmkvzsx - # ncurses@6.0%gcc@4.9.3=linux-x86_64 - module load ncurses-6.0-gcc-4.9.3-kaazyneh3bjkfnalunchyqtygoe2mncv - # zlib@1.2.8%gcc@4.9.3=linux-x86_64 - module load zlib-1.2.8-gcc-4.9.3-v3ufwaahjnviyvgjcelo36nywx2ufj7z - # sqlite@3.8.5%gcc@4.9.3=linux-x86_64 - module load sqlite-3.8.5-gcc-4.9.3-a3eediswgd5f3rmto7g3szoew5nhehbr - # readline@6.3%gcc@4.9.3=linux-x86_64 - module load readline-6.3-gcc-4.9.3-se6r3lsycrwxyhreg4lqirp6xixxejh3 - # python@3.5.1%gcc@4.9.3=linux-x86_64 - module load python-3.5.1-gcc-4.9.3-5q5rsrtjld4u6jiicuvtnx52m7tfhegi - # py-setuptools@20.5%gcc@4.9.3=linux-x86_64 - module load py-setuptools-20.5-gcc-4.9.3-4qr2suj6p6glepnedmwhl4f62x64wxw2 - # py-nose@1.3.7%gcc@4.9.3=linux-x86_64 - module load py-nose-1.3.7-gcc-4.9.3-pwhtjw2dvdvfzjwuuztkzr7b4l6zepli - # openblas@0.2.17%gcc@4.9.3+shared=linux-x86_64 - module load openblas-0.2.17-gcc-4.9.3-pw6rmlom7apfsnjtzfttyayzc7nx5e7y - # py-numpy@1.11.0%gcc@4.9.3+blas+lapack=linux-x86_64 - module load py-numpy-1.11.0-gcc-4.9.3-mulodttw5pcyjufva4htsktwty4qd52r - # curl@7.47.1%gcc@4.9.3=linux-x86_64 - module load curl-7.47.1-gcc-4.9.3-ohz3fwsepm3b462p5lnaquv7op7naqbi - # autoconf@2.69%gcc@4.9.3=linux-x86_64 - module load autoconf-2.69-gcc-4.9.3-bkibjqhgqm5e3o423ogfv2y3o6h2uoq4 - # cmake@3.5.0%gcc@4.9.3~doc+ncurses+openssl~qt=linux-x86_64 - module load cmake-3.5.0-gcc-4.9.3-x7xnsklmgwla3ubfgzppamtbqk5rwn7t - # expat@2.1.0%gcc@4.9.3=linux-x86_64 - module load expat-2.1.0-gcc-4.9.3-6pkz2ucnk2e62imwakejjvbv6egncppd - # git@2.8.0-rc2%gcc@4.9.3+curl+expat=linux-x86_64 - module load git-2.8.0-rc2-gcc-4.9.3-3bib4hqtnv5xjjoq5ugt3inblt4xrgkd +.. code-block:: console + + $ spack module find tcl --dependencies --shell py-numpy git + # bzip2@1.0.6%gcc@4.9.3=linux-x86_64 + module load bzip2-1.0.6-gcc-4.9.3-ktnrhkrmbbtlvnagfatrarzjojmkvzsx + # ncurses@6.0%gcc@4.9.3=linux-x86_64 + module load ncurses-6.0-gcc-4.9.3-kaazyneh3bjkfnalunchyqtygoe2mncv + # zlib@1.2.8%gcc@4.9.3=linux-x86_64 + module load zlib-1.2.8-gcc-4.9.3-v3ufwaahjnviyvgjcelo36nywx2ufj7z + # sqlite@3.8.5%gcc@4.9.3=linux-x86_64 + module load sqlite-3.8.5-gcc-4.9.3-a3eediswgd5f3rmto7g3szoew5nhehbr + # readline@6.3%gcc@4.9.3=linux-x86_64 + module load readline-6.3-gcc-4.9.3-se6r3lsycrwxyhreg4lqirp6xixxejh3 + # python@3.5.1%gcc@4.9.3=linux-x86_64 + module load python-3.5.1-gcc-4.9.3-5q5rsrtjld4u6jiicuvtnx52m7tfhegi + # py-setuptools@20.5%gcc@4.9.3=linux-x86_64 + module load py-setuptools-20.5-gcc-4.9.3-4qr2suj6p6glepnedmwhl4f62x64wxw2 + # py-nose@1.3.7%gcc@4.9.3=linux-x86_64 + module load py-nose-1.3.7-gcc-4.9.3-pwhtjw2dvdvfzjwuuztkzr7b4l6zepli + # openblas@0.2.17%gcc@4.9.3+shared=linux-x86_64 + module load openblas-0.2.17-gcc-4.9.3-pw6rmlom7apfsnjtzfttyayzc7nx5e7y + # py-numpy@1.11.0%gcc@4.9.3+blas+lapack=linux-x86_64 + module load py-numpy-1.11.0-gcc-4.9.3-mulodttw5pcyjufva4htsktwty4qd52r + # curl@7.47.1%gcc@4.9.3=linux-x86_64 + module load curl-7.47.1-gcc-4.9.3-ohz3fwsepm3b462p5lnaquv7op7naqbi + # autoconf@2.69%gcc@4.9.3=linux-x86_64 + module load autoconf-2.69-gcc-4.9.3-bkibjqhgqm5e3o423ogfv2y3o6h2uoq4 + # cmake@3.5.0%gcc@4.9.3~doc+ncurses+openssl~qt=linux-x86_64 + module load cmake-3.5.0-gcc-4.9.3-x7xnsklmgwla3ubfgzppamtbqk5rwn7t + # expat@2.1.0%gcc@4.9.3=linux-x86_64 + module load expat-2.1.0-gcc-4.9.3-6pkz2ucnk2e62imwakejjvbv6egncppd + # git@2.8.0-rc2%gcc@4.9.3+curl+expat=linux-x86_64 + module load git-2.8.0-rc2-gcc-4.9.3-3bib4hqtnv5xjjoq5ugt3inblt4xrgkd The script may be further edited by removing unnecessary modules. -This script may be directly executed in bash via +This script may be directly executed in bash via: -.. code-block :: sh +.. code-block:: sh - source <( spack module find tcl --dependencies --shell py-numpy git ) + source < (spack module find tcl --dependencies --shell py-numpy git) ^^^^^^^^^^^^^^^^^^^^^^^^^ Regenerating Module files @@ -1242,9 +1273,9 @@ Regenerating Module files .. code-block:: python - def setup_dependent_environment(self, spack_env, run_env, dependent_spec): - """Set up the environment of packages that depend on this one""" - pass + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + """Set up the environment of packages that depend on this one""" + pass As briefly stated in the comments, the first method lets you customize the module file content for the package you are currently writing, the second @@ -1260,10 +1291,9 @@ overrides ``setup_dependent_environment`` in the following way: .. code-block:: python - def setup_dependent_environment(self, spack_env, run_env, extension_spec): - # ... - if extension_spec.package.extends(self.spec): - run_env.prepend_path('PYTHONPATH', os.path.join(extension_spec.prefix, self.site_packages_dir)) + def setup_dependent_environment(self, spack_env, run_env, extension_spec): + if extension_spec.package.extends(self.spec): + run_env.prepend_path('PYTHONPATH', os.path.join(extension_spec.prefix, self.site_packages_dir)) to insert the appropriate ``PYTHONPATH`` modifications in the module files of python packages. @@ -1289,11 +1319,11 @@ For each module system that can be enabled a finer configuration is possible: .. code-block:: yaml - modules: - tcl: - # contains environment modules specific customizations - dotkit: - # contains dotkit specific customizations + modules: + tcl: + # contains environment modules specific customizations + dotkit: + # contains dotkit specific customizations The structure under the ``tcl`` and ``dotkit`` keys is almost equal, and will be showcased in the following by some examples. @@ -1309,24 +1339,24 @@ Considering : .. code-block:: yaml - modules: - tcl: - all: # Default addition for every package - environment: - set: - BAR: 'bar' - ^openmpi:: # A double ':' overrides previous rules - environment: - set: - BAR: 'baz' - zlib: - environment: - prepend_path: - LD_LIBRARY_PATH: 'foo' - zlib%gcc@4.8: - environment: - unset: - - FOOBAR + modules: + tcl: + all: # Default addition for every package + environment: + set: + BAR: 'bar' + ^openmpi:: # A double ':' overrides previous rules + environment: + set: + BAR: 'baz' + zlib: + environment: + prepend_path: + LD_LIBRARY_PATH: 'foo' + zlib%gcc@4.8: + environment: + unset: + - FOOBAR what will happen is that: @@ -1336,10 +1366,10 @@ what will happen is that: - any spec that satisfies ``zlib%gcc@4.8`` will additionally unset ``FOOBAR`` .. note:: - Order does matter - The modifications associated with the ``all`` keyword are always evaluated - first, no matter where they appear in the configuration file. All the other - spec constraints are instead evaluated top to bottom. + Order does matter + The modifications associated with the ``all`` keyword are always evaluated + first, no matter where they appear in the configuration file. All the other + spec constraints are instead evaluated top to bottom. """""""""""""""""""""""""""""""""""""""" Filter modifications out of module files @@ -1351,11 +1381,12 @@ modified by your dotkit modules. Then : .. code-block:: yaml - modules: - dotkit: - all: - filter: - environment_blacklist: ['CPATH', 'LIBRARY_PATH'] # Exclude changes to any of these variables + modules: + dotkit: + all: + filter: + # Exclude changes to any of these variables + environment_blacklist: ['CPATH', 'LIBRARY_PATH'] will generate dotkit module files that will not contain modifications to either ``CPATH`` or ``LIBRARY_PATH`` and environment module files that instead will @@ -1369,20 +1400,20 @@ The following lines in ``modules.yaml``: .. code-block:: yaml - modules: - tcl: - all: - autoload: 'direct' + modules: + tcl: + all: + autoload: 'direct' will produce environment module files that will automatically load their direct dependencies. .. note:: - Allowed values for ``autoload`` statements - Allowed values for ``autoload`` statements are either ``none``, ``direct`` - or ``all``. In ``tcl`` configuration it is possible to use the option - ``prerequisites`` that accepts the same values and will add ``prereq`` - statements instead of automatically loading other modules. + Allowed values for ``autoload`` statements + Allowed values for ``autoload`` statements are either ``none``, ``direct`` + or ``all``. In ``tcl`` configuration it is possible to use the option + ``prerequisites`` that accepts the same values and will add ``prereq`` + statements instead of automatically loading other modules. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Blacklist or whitelist the generation of specific module files @@ -1395,10 +1426,10 @@ A configuration file like: .. code-block:: yaml - modules: - tcl: - whitelist: ['gcc', 'llvm'] # Whitelist will have precedence over blacklist - blacklist: ['%gcc@4.4.7'] # Assuming gcc@4.4.7 is the system compiler + modules: + tcl: + whitelist: ['gcc', 'llvm'] # Whitelist will have precedence over blacklist + blacklist: ['%gcc@4.4.7'] # Assuming gcc@4.4.7 is the system compiler will skip module file generation for anything that satisfies ``%gcc@4.4.7``, with the exception of specs that satisfy ``gcc`` or ``llvm``. @@ -1411,23 +1442,23 @@ A configuration file like: .. code-block:: yaml - modules: - tcl: - naming_scheme: '{name}/{version}-{compiler.name}-{compiler.version}' - all: - conflict: ['{name}', 'intel/14.0.1'] + modules: + tcl: + naming_scheme: '{name}/{version}-{compiler.name}-{compiler.version}' + all: + conflict: ['{name}', 'intel/14.0.1'] will create module files that will conflict with ``intel/14.0.1`` and with the base directory of the same module, effectively preventing the possibility to load two or more versions of the same software at the same time. .. note:: - Tokens available for the naming scheme - currently only the tokens shown in the example are available to construct - the naming scheme + Tokens available for the naming scheme + currently only the tokens shown in the example are available to construct + the naming scheme .. note:: - The ``conflict`` option is ``tcl`` specific + The ``conflict`` option is ``tcl`` specific ^^^^^^^^^^^^^^^^^^^^^^^^^ Regenerating module files @@ -1448,15 +1479,12 @@ Running ``spack module refresh`` will remove the ``share/spack/modules`` and ``share/spack/dotkit`` directories, then regenerate all module and dotkit files from scratch: -.. code-block:: sh +.. code-block:: console $ spack module refresh ==> Regenerating tcl module files. ==> Regenerating dotkit module files. - -.. _extensions: - ---------------- Filesystem Views ---------------- @@ -1496,10 +1524,10 @@ built by Spack. Views can be used for a variety of purposes including: -- A central installation in a traditional layout, eg ``/usr/local`` maintained over time by the sysadmin. -- A self-contained installation area which may for the basis of a top-level atomic versioning scheme, eg ``/opt/pro`` vs ``/opt/dev``. -- Providing an atomic and monolithic binary distribution, eg for delivery as a single tarball. -- Producing ephemeral testing or developing environments. +* A central installation in a traditional layout, eg ``/usr/local`` maintained over time by the sysadmin. +* A self-contained installation area which may for the basis of a top-level atomic versioning scheme, eg ``/opt/pro`` vs ``/opt/dev``. +* Providing an atomic and monolithic binary distribution, eg for delivery as a single tarball. +* Producing ephemeral testing or developing environments. ^^^^^^^^^^^^^^^^^^^^^^ Using Filesystem Views @@ -1514,27 +1542,27 @@ The following example creates a filesystem view based on an installed ``cmake`` package and then removes from the view the files in the ``cmake`` package while retaining its dependencies. -.. code-block:: sh +.. code-block:: console - $ spack view -v symlink myview cmake@3.5.2 - ==> Linking package: "ncurses" - ==> Linking package: "zlib" - ==> Linking package: "openssl" - ==> Linking package: "cmake" + $ spack view --verbose symlink myview cmake@3.5.2 + ==> Linking package: "ncurses" + ==> Linking package: "zlib" + ==> Linking package: "openssl" + ==> Linking package: "cmake" - $ ls myview/ - bin doc etc include lib share + $ ls myview/ + bin doc etc include lib share - $ ls myview/bin/ - captoinfo clear cpack ctest infotocap openssl tabs toe tset - ccmake cmake c_rehash infocmp ncurses6-config reset tic tput + $ ls myview/bin/ + captoinfo clear cpack ctest infotocap openssl tabs toe tset + ccmake cmake c_rehash infocmp ncurses6-config reset tic tput - $ spack view -v -d false rm myview cmake@3.5.2 - ==> Removing package: "cmake" + $ spack view --verbose --dependencies false rm myview cmake@3.5.2 + ==> Removing package: "cmake" - $ ls myview/bin/ - captoinfo c_rehash infotocap openssl tabs toe tset - clear infocmp ncurses6-config reset tic tput + $ ls myview/bin/ + captoinfo c_rehash infotocap openssl tabs toe tset + clear infocmp ncurses6-config reset tic tput ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Limitations of Filesystem Views @@ -1568,6 +1596,8 @@ particular, if two packages require the same sub-tree of dependencies, removing one package (recursively) will remove its dependencies and leave the other package broken. +.. _extensions: + --------------------------- Extensions & Python support --------------------------- @@ -1583,7 +1613,7 @@ Spack has support for this type of installation as well. In Spack, a package that can live inside the prefix of another package is called an *extension*. Suppose you have Python installed like so: -.. code-block:: sh +.. code-block:: console $ spack find python ==> 1 installed packages. @@ -1598,7 +1628,7 @@ an *extension*. Suppose you have Python installed like so: You can find extensions for your Python installation like this: -.. code-block:: sh +.. code-block:: console $ spack extensions python ==> python@2.7.8%gcc@4.4.7 arch=linux-debian7-x86_64-703c7a96 @@ -1623,11 +1653,11 @@ You can find extensions for your Python installation like this: The extensions are a subset of what's returned by ``spack list``, and they are packages like any other. They are installed into their own -prefixes, and you can see this with ``spack find -p``: +prefixes, and you can see this with ``spack find --paths``: -.. code-block:: sh +.. code-block:: console - $ spack find -p py-numpy + $ spack find --paths py-numpy ==> 1 installed packages. -- linux-debian7-x86_64 / gcc@4.4.7 -------------------------------- py-numpy@1.9.1 /g/g21/gamblin2/src/spack/opt/linux-debian7-x86_64/gcc@4.4.7/py-numpy@1.9.1-66733244 @@ -1635,7 +1665,7 @@ prefixes, and you can see this with ``spack find -p``: However, even though this package is installed, you cannot use it directly when you run ``python``: -.. code-block:: sh +.. code-block:: console $ spack load python $ python @@ -1659,14 +1689,14 @@ in your current shell. For tcl modules: -.. code-block:: sh +.. code-block:: console $ spack load python $ spack load py-numpy or, for dotkit: -.. code-block:: sh +.. code-block:: console $ spack use python $ spack use py-numpy @@ -1690,7 +1720,7 @@ installation: ``spack activate`` ^^^^^^^^^^^^^^^^^^ -.. code-block:: sh +.. code-block:: console $ spack activate py-numpy ==> Activated extension py-setuptools@11.3.1%gcc@4.4.7 arch=linux-debian7-x86_64-3c74eb69 for python@2.7.8%gcc@4.4.7. @@ -1707,7 +1737,7 @@ once all dependencies were activated in the ``python`` installation, If we run ``spack extensions`` again, we now see the three new packages listed as activated: -.. code-block:: sh +.. code-block:: console $ spack extensions python ==> python@2.7.8%gcc@4.4.7 arch=linux-debian7-x86_64-703c7a96 @@ -1756,7 +1786,7 @@ explicitly load their preferred version. If, for some reason, you want to activate a package *without* its dependencies, you can use ``spack activate -f``: -.. code-block:: sh +.. code-block:: console $ spack activate -f py-numpy ==> Activated extension py-numpy@1.9.1%gcc@4.4.7 arch=linux-debian7-x86_64-66733244 for python@2.7.8%gcc@4.4.7. @@ -1772,18 +1802,20 @@ version of a Python module. Obviously, you may want to change that at some point. ``spack deactivate`` is the command for this. There are several variants: - * ``spack deactivate `` will deactivate a single - extension. If another activated extension depends on this one, - Spack will warn you and exit with an error. - * ``spack deactivate -f `` deactivates an extension - regardless of packages that depend on it. - * ``spack deactivate -a `` deactivates an extension and - all of its dependencies. Use ``-f`` to disregard dependents. - * ``spack deactivate -a `` deactivates *all* activated - extensions of a package. For example, to deactivate *all* python - extensions, use:: +* ``spack deactivate `` will deactivate a single + extension. If another activated extension depends on this one, + Spack will warn you and exit with an error. +* ``spack deactivate --force `` deactivates an extension + regardless of packages that depend on it. +* ``spack deactivate --all `` deactivates an extension and + all of its dependencies. Use ``--force`` to disregard dependents. +* ``spack deactivate --all `` deactivates *all* activated + extensions of a package. For example, to deactivate *all* python + extensions, use: - spack deactivate -a python + .. code-block:: console + + $ spack deactivate --all python ----------------------- Filesystem requirements @@ -1796,7 +1828,7 @@ without ``flock`` support enabled. You can determine how your filesystems are mounted with ``mount -p``. The output for a Lustre filesystem might look like this: -.. code-block:: sh +.. code-block:: console $ mount -l | grep lscratch pilsner-mds1-lnet0@o2ib100:/lsd on /p/lscratchd type lustre (rw,nosuid,noauto,_netdev,lazystatfs,flock) @@ -1808,7 +1840,7 @@ system administrator to enable ``flock``. This issue typically manifests with the error below: -.. code-block:: sh +.. code-block:: console $ ./spack find Traceback (most recent call last): @@ -1817,7 +1849,7 @@ This issue typically manifests with the error below: File "./spack", line 154,' in main return_val = command(parser, args) File "./spack/lib/spack/spack/cmd/find.py", line 170, in find - specs = set(spack.installed_db.query(**q_args)) + specs = set(spack.installed_db.query(\**q_args)) File "./spack/lib/spack/spack/database.py", line 551, in query with self.read_transaction(): File "./spack/lib/spack/spack/database.py", line 598, in __enter__ @@ -1832,12 +1864,7 @@ This issue typically manifests with the error below: A nicer error message is TBD in future versions of Spack. -<<<<<<< c36f13e44dae52086ca48e4f16b514642bc91106 - .. _cray-support: -======= -.. _spack-cray: ->>>>>>> Fix #1604 and fix #1605, title underline problems ------------- Spack on Cray @@ -1846,34 +1873,34 @@ Spack on Cray Spack differs slightly when used on a Cray system. The architecture spec can differentiate between the front-end and back-end processor and operating system. For example, on Edison at NERSC, the back-end target processor -is \"Ivy Bridge\", so you can specify to use the back-end this way: +is "Ivy Bridge", so you can specify to use the back-end this way: -.. code-block:: sh +.. code-block:: console - spack install zlib target=ivybridge + $ spack install zlib target=ivybridge You can also use the operating system to build against the back-end: -.. code-block:: sh +.. code-block:: console - spack install zlib os=CNL10 + $ spack install zlib os=CNL10 Notice that the name includes both the operating system name and the major version number concatenated together. Alternatively, if you want to build something for the front-end, you can specify the front-end target processor. The processor for a login node -on Edison is \"Sandy bridge\" so we specify on the command line like so: +on Edison is "Sandy bridge" so we specify on the command line like so: -.. code-block:: sh +.. code-block:: console - spack install zlib target=sandybridge + $ spack install zlib target=sandybridge And the front-end operating system is: -.. code-block:: sh +.. code-block:: console - spack install zlib os=SuSE11 + $ spack install zlib os=SuSE11 ^^^^^^^^^^^^^^^^^^^^^^^ Cray compiler detection @@ -1888,27 +1915,27 @@ compiler wrapper names (i.e. cc, CC, ftn). During build time, Spack will load the correct PrgEnv and compiler module and will call appropriate wrapper. The compilers.yaml config file will also differ. There is a -modules section that is filled with the compiler\'s Programming Environment -and module name. On other systems, this field is empty []:: +modules section that is filled with the compiler's Programming Environment +and module name. On other systems, this field is empty []: - ... - - compiler: - modules: - - PrgEnv-intel - - intel/15.0.109 - ... +.. code-block:: yaml + + - compiler: + modules: + - PrgEnv-intel + - intel/15.0.109 As mentioned earlier, the compiler paths will look different on a Cray system. Since most compilers are invoked using cc, CC and ftn, the paths for each -compiler are replaced with their respective Cray compiler wrapper names:: +compiler are replaced with their respective Cray compiler wrapper names: + +.. code-block:: yaml - ... paths: cc: cc cxx: CC f77: ftn fc: ftn - ... As opposed to an explicit path to the compiler executable. This allows Spack to call the Cray compiler wrappers during build time. @@ -1917,24 +1944,24 @@ For more on compiler configuration, check out :ref:`compiler-config`. Spack sets the default Cray link type to dynamic, to better match other other platforms. Individual packages can enable static linking (which is the -default outside of Spack on cray systems) using the -static flag. +default outside of Spack on cray systems) using the ``-static`` flag. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Setting defaults and using Cray modules ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If you want to use default compilers for each PrgEnv and also be able -to load cray external modules, you will need to set up a packages.yaml. +to load cray external modules, you will need to set up a ``packages.yaml``. -Here\'s an example of an external configuration for cray modules: +Here's an example of an external configuration for cray modules: .. code-block:: yaml - packages: - mpi: - modules: - mpich@7.3.1%gcc@5.2.0 arch=cray_xc-haswell-CNL10: cray-mpich - mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-haswell-CNL10: cray-mpich + packages: + mpi: + modules: + mpich@7.3.1%gcc@5.2.0 arch=cray_xc-haswell-CNL10: cray-mpich + mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-haswell-CNL10: cray-mpich This tells Spack that for whatever package that depends on mpi, load the cray-mpich module into the environment. You can then be able to use whatever @@ -1942,7 +1969,7 @@ environment variables, libraries, etc, that are brought into the environment via module load. You can set the default compiler that Spack can use for each compiler type. -If you want to use the Cray defaults, then set them under *all:* in packages.yaml. +If you want to use the Cray defaults, then set them under ``all:`` in packages.yaml. In the compiler field, set the compiler specs in your order of preference. Whenever you build with that compiler type, Spack will concretize to that version. @@ -1951,23 +1978,23 @@ Here is an example of a full packages.yaml used at NERSC .. code-block:: yaml packages: - mpi: - modules: - mpich@7.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-mpich - mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-SuSE11-ivybridge: cray-mpich - buildable: False - netcdf: - modules: - netcdf@4.3.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-netcdf - netcdf@4.3.3.1%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge: cray-netcdf - buildable: False - hdf5: - modules: - hdf5@1.8.14%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-hdf5 - hdf5@1.8.14%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge: cray-hdf5 - buildable: False - all: - compiler: [gcc@5.2.0, intel@16.0.0.109] + mpi: + modules: + mpich@7.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-mpich + mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-SuSE11-ivybridge: cray-mpich + buildable: False + netcdf: + modules: + netcdf@4.3.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-netcdf + netcdf@4.3.3.1%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge: cray-netcdf + buildable: False + hdf5: + modules: + hdf5@1.8.14%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-hdf5 + hdf5@1.8.14%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge: cray-hdf5 + buildable: False + all: + compiler: [gcc@5.2.0, intel@16.0.0.109] Here we tell spack that whenever we want to build with gcc use version 5.2.0 or if we want to build with intel compilers, use version 16.0.0.109. We add a spec @@ -1987,7 +2014,7 @@ Getting Help ^^^^^^^^^^^^^^ If you don't find what you need here, the ``help`` subcommand will -print out out a list of *all* of ``spack``'s options and subcommands: +print out out a list of *all* of spack's options and subcommands: .. command-output:: spack help @@ -1996,5 +2023,5 @@ usage information for a particular subcommand: .. command-output:: spack help install -Alternately, you can use ``spack -h`` in place of ``spack help``, or -``spack -h`` to get help on a particular subcommand. +Alternately, you can use ``spack --help`` in place of ``spack help``, or +``spack --help`` to get help on a particular subcommand. diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index 7545acd62a..0c88dd1d9d 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -10,7 +10,9 @@ Configuration Temporary space --------------- -.. warning:: Temporary space configuration will eventually be moved to +.. warning:: + + Temporary space configuration will eventually be moved to configuration files, but currently these settings are in ``lib/spack/spack/__init__.py`` @@ -73,11 +75,11 @@ directory. Here's an example of an external configuration: .. code-block:: yaml packages: - openmpi: - paths: - openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3 - openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug - openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel + openmpi: + paths: + openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3 + openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug + openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel This example lists three installations of OpenMPI, one built with gcc, one built with gcc and debug information, and another built with Intel. @@ -110,13 +112,13 @@ be: .. code-block:: yaml - packages: - openmpi: - paths: - openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3 - openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug - openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel - buildable: False + packages: + openmpi: + paths: + openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3 + openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug + openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel + buildable: False The addition of the ``buildable`` flag tells Spack that it should never build its own version of OpenMPI, and it will instead always rely on a pre-built @@ -144,18 +146,18 @@ The preferred configuration can be controlled via the Here's an example packages.yaml file that sets preferred packages: -.. code-block:: sh +.. code-block:: yaml - packages: - opencv: - compiler: [gcc@4.9] - variants: +debug - gperftools: - version: [2.2, 2.4, 2.3] - all: - compiler: [gcc@4.4.7, gcc@4.6:, intel, clang, pgi] - providers: - mpi: [mvapich, mpich, openmpi] + packages: + opencv: + compiler: [gcc@4.9] + variants: +debug + gperftools: + version: [2.2, 2.4, 2.3] + all: + compiler: [gcc@4.4.7, gcc@4.6:, intel, clang, pgi] + providers: + mpi: [mvapich, mpich, openmpi] At a high level, this example is specifying how packages should be concretized. The opencv package should prefer using gcc 4.9 and @@ -205,15 +207,15 @@ supply ``-p`` to Spack on the command line, before any subcommands. ``spack -p`` output looks like this: -.. code-block:: sh +.. code-block:: console $ spack -p graph dyninst o dyninst - |\ - | |\ - | o | libdwarf - |/ / - o | libelf + \|\ + \| \|\ + \| o \| libdwarf + \|/ / + o \| libelf / o boost diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index 5c712149b5..04ae8fe1a1 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -18,12 +18,12 @@ Overview Spack is designed with three separate roles in mind: - #. **Users**, who need to install software *without* knowing all the - details about how it is built. - #. **Packagers** who know how a particular software package is - built and encode this information in package files. - #. **Developers** who work on Spack, add new features, and try to - make the jobs of packagers and users easier. +#. **Users**, who need to install software *without* knowing all the + details about how it is built. +#. **Packagers** who know how a particular software package is + built and encode this information in package files. +#. **Developers** who work on Spack, add new features, and try to + make the jobs of packagers and users easier. Users could be end users installing software in their home directory, or administrators installing software to a shared directory on a @@ -43,9 +43,9 @@ specification. This gets us to the two key concepts in Spack's software design: - #. **Specs**: expressions for describing builds of software, and - #. **Packages**: Python modules that build software according to a - spec. +#. **Specs**: expressions for describing builds of software, and +#. **Packages**: Python modules that build software according to a + spec. A package is a template for building particular software, and a spec as a descriptor for one or more instances of that template. Users @@ -70,56 +70,55 @@ Directory Structure ------------------- So that you can familiarize yourself with the project, we'll start -with a high level view of Spack's directory structure:: +with a high level view of Spack's directory structure: - spack/ <- installation root - bin/ - spack <- main spack executable +.. code-block:: none - etc/ - spack/ <- Spack config files. - Can be overridden by files in ~/.spack. + spack/ <- installation root + bin/ + spack <- main spack executable - var/ - spack/ <- build & stage directories - repos/ <- contains package repositories - builtin/ <- pkg repository that comes with Spack - repo.yaml <- descriptor for the builtin repository - packages/ <- directories under here contain packages - cache/ <- saves resources downloaded during installs + etc/ + spack/ <- Spack config files. + Can be overridden by files in ~/.spack. - opt/ - spack/ <- packages are installed here + var/ + spack/ <- build & stage directories + repos/ <- contains package repositories + builtin/ <- pkg repository that comes with Spack + repo.yaml <- descriptor for the builtin repository + packages/ <- directories under here contain packages + cache/ <- saves resources downloaded during installs - lib/ - spack/ - docs/ <- source for this documentation - env/ <- compiler wrappers for build environment + opt/ + spack/ <- packages are installed here - external/ <- external libs included in Spack distro - llnl/ <- some general-use libraries + lib/ + spack/ + docs/ <- source for this documentation + env/ <- compiler wrappers for build environment - spack/ <- spack module; contains Python code - cmd/ <- each file in here is a spack subcommand - compilers/ <- compiler description files - test/ <- unit test modules - util/ <- common code + external/ <- external libs included in Spack distro + llnl/ <- some general-use libraries + + spack/ <- spack module; contains Python code + cmd/ <- each file in here is a spack subcommand + compilers/ <- compiler description files + test/ <- unit test modules + util/ <- common code Spack is designed so that it could live within a `standard UNIX directory hierarchy `_, so ``lib``, ``var``, and ``opt`` all contain a ``spack`` subdirectory in case Spack is installed alongside other software. Most of the interesting -parts of Spack live in ``lib/spack``. Files under ``var`` are created -as needed, so there is no ``var`` directory when you initially clone -Spack from the repository. +parts of Spack live in ``lib/spack``. Spack has *one* directory layout and there is no install process. -version and the source code. Most Python programs don't look like -this (they use distutils, ``setup.py``, etc.) but we wanted to make -Spack *very* easy to use. The simple layout spares users from the -need to install Spack into a Python environment. Many users don't -have write access to a Python installation, and installing an entire -new instance of Python to bootstrap Spack would be very complicated. +Most Python programs don't look like this (they use distutils, ``setup.py``, +etc.) but we wanted to make Spack *very* easy to use. The simple layout +spares users from the need to install Spack into a Python environment. +Many users don't have write access to a Python installation, and installing +an entire new instance of Python to bootstrap Spack would be very complicated. Users should not have to install install a big, complicated package to use the thing that's supposed to spare them from the details of big, complicated packages. The end result is that Spack works out of the @@ -283,19 +282,18 @@ Spec objects Package objects --------------- -Most spack commands -look something like this: +Most spack commands look something like this: - #. Parse an abstract spec (or specs) from the command line, - #. *Normalize* the spec based on information in package files, - #. *Concretize* the spec according to some customizable policies, - #. Instantiate a package based on the spec, and - #. Call methods (e.g., ``install()``) on the package object. +#. Parse an abstract spec (or specs) from the command line, +#. *Normalize* the spec based on information in package files, +#. *Concretize* the spec according to some customizable policies, +#. Instantiate a package based on the spec, and +#. Call methods (e.g., ``install()``) on the package object. The information in Package files is used at all stages in this process. -Conceptually, packages are overloaded. They contain +Conceptually, packages are overloaded. They contain: ------------- Stage objects diff --git a/lib/spack/docs/features.rst b/lib/spack/docs/features.rst index d746e8ad50..57629997aa 100644 --- a/lib/spack/docs/features.rst +++ b/lib/spack/docs/features.rst @@ -14,7 +14,7 @@ Simple package installation Installing the default version of a package is simple. This will install the latest version of the ``mpileaks`` package and all of its dependencies: -.. code-block:: sh +.. code-block:: console $ spack install mpileaks @@ -26,7 +26,7 @@ Spack allows installation to be customized. Users can specify the version, build compiler, compile-time options, and cross-compile platform, all on the command line. -.. code-block:: sh +.. code-block:: console # Install a particular version by appending @ $ spack install mpileaks@1.1.2 @@ -59,7 +59,7 @@ customized extensively. Suppose that ``mpileaks`` depends indirectly on ``libelf`` and ``libdwarf``. Using ``^``, users can add custom configurations for the dependencies: -.. code-block:: sh +.. code-block:: console # Install mpileaks and link it with specific versions of libelf and libdwarf $ spack install mpileaks@1.1.2 %gcc@4.7.3 +debug ^libelf@0.8.12 ^libdwarf@20130729+debug @@ -91,7 +91,7 @@ in pure Python. For example, this command: -.. code-block:: sh +.. code-block:: console $ spack create http://www.mr511.de/software/libelf-0.8.13.tar.gz @@ -101,16 +101,26 @@ creates a simple python file: from spack import * + class Libelf(Package): - homepage = "http://www.example.com/" + """FIXME: Put a proper description of your package here.""" + + # FIXME: Add a proper url for your package's homepage here. + homepage = "http://www.example.com" url = "http://www.mr511.de/software/libelf-0.8.13.tar.gz" version('0.8.13', '4136d7b4c04df68b686570afa26988ac') - def install(self, prefix): - configure("--prefix=%s" % prefix) + # FIXME: Add dependencies if required. + # depends_on('foo') + + def install(self, spec, prefix): + # FIXME: Modify the configure line to suit your build system here. + configure('--prefix={0}'.format(prefix)) + + # FIXME: Add logic to build and install here. make() - make("install") + make('install') It doesn't take much python coding to get from there to a working package: diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 47f66b429b..676697a549 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -9,7 +9,7 @@ Download Getting spack is easy. You can clone it from the `github repository `_ using this command: -.. code-block:: sh +.. code-block:: console $ git clone https://github.com/llnl/spack.git @@ -18,7 +18,7 @@ full path to this directory is in the ``SPACK_ROOT`` environment variable. Add ``$SPACK_ROOT/bin`` to your path and you're ready to go: -.. code-block:: sh +.. code-block:: console $ export PATH=$SPACK_ROOT/bin:$PATH $ spack install libelf @@ -26,9 +26,10 @@ go: For a richer experience, use Spack's `shell support `_: -.. code-block:: sh +.. code-block:: console # For bash users + $ export SPACK_ROOT=/path/to/spack $ . $SPACK_ROOT/share/spack/setup-env.sh # For tcsh or csh users (note you must set SPACK_ROOT) @@ -48,9 +49,9 @@ You may want to run it out of a prefix other than the git repository you cloned. The ``spack bootstrap`` command provides this functionality. To install spack in a new directory, simply type: -.. code-block:: sh +.. code-block:: console - $ spack bootstrap /my/favorite/prefix + $ spack bootstrap /my/favorite/prefix This will install a new spack script in ``/my/favorite/prefix/bin``, which you can use just like you would the regular spack script. Each diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index 603245b5dc..45efcf131f 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -28,7 +28,7 @@ Get spack from the `github repository `_ and install your first package: -.. code-block:: sh +.. code-block:: console $ git clone https://github.com/llnl/spack.git $ cd spack/bin diff --git a/lib/spack/docs/mirrors.rst b/lib/spack/docs/mirrors.rst index 41e039b838..c4d275a8fc 100644 --- a/lib/spack/docs/mirrors.rst +++ b/lib/spack/docs/mirrors.rst @@ -11,27 +11,29 @@ mirror is a URL that points to a directory, either on the local filesystem or on some server, containing tarballs for all of Spack's packages. -Here's an example of a mirror's directory structure:: - - mirror/ - cmake/ - cmake-2.8.10.2.tar.gz - dyninst/ - dyninst-8.1.1.tgz - dyninst-8.1.2.tgz - libdwarf/ - libdwarf-20130126.tar.gz - libdwarf-20130207.tar.gz - libdwarf-20130729.tar.gz - libelf/ - libelf-0.8.12.tar.gz - libelf-0.8.13.tar.gz - libunwind/ - libunwind-1.1.tar.gz - mpich/ - mpich-3.0.4.tar.gz - mvapich2/ - mvapich2-1.9.tgz +Here's an example of a mirror's directory structure: + +.. code-block:: none + + mirror/ + cmake/ + cmake-2.8.10.2.tar.gz + dyninst/ + dyninst-8.1.1.tgz + dyninst-8.1.2.tgz + libdwarf/ + libdwarf-20130126.tar.gz + libdwarf-20130207.tar.gz + libdwarf-20130729.tar.gz + libelf/ + libelf-0.8.12.tar.gz + libelf-0.8.13.tar.gz + libunwind/ + libunwind-1.1.tar.gz + mpich/ + mpich-3.0.4.tar.gz + mvapich2/ + mvapich2-1.9.tgz The structure is very simple. There is a top-level directory. The second level directories are named after packages, and the third level @@ -57,21 +59,9 @@ contains tarballs for each package, named after each package. ---------------- Mirrors are managed with the ``spack mirror`` command. The help for -``spack mirror`` looks like this:: +``spack mirror`` looks like this: - $ spack mirror -h - usage: spack mirror [-h] SUBCOMMAND ... - - positional arguments: - SUBCOMMAND - create Create a directory to be used as a spack mirror, and fill - it with package archives. - add Add a mirror to Spack. - remove Remove a mirror by name. - list Print out available mirrors to the console. - - optional arguments: - -h, --help show this help message and exit +.. command-output:: spack help mirror The ``create`` command actually builds a mirror by fetching all of its packages from the internet and checksumming them. @@ -92,7 +82,7 @@ The command will iterate through all of Spack's packages and download the safe ones into a directory structure like the one above. Here is what it looks like: -.. code-block:: bash +.. code-block:: console $ spack mirror create libelf libdwarf ==> Created new mirror in spack-mirror-2014-06-24 @@ -134,9 +124,11 @@ Normally, ``spack mirror create`` downloads all the archives it has checksums for. If you want to only create a mirror for a subset of packages, you can do that by supplying a list of package specs on the command line after ``spack mirror create``. For example, this -command:: +command: - $ spack mirror create libelf@0.8.12: boost@1.44: +.. code-block:: console + + $ spack mirror create libelf@0.8.12: boost@1.44: Will create a mirror for libelf versions greater than or equal to 0.8.12 and boost versions greater than or equal to 1.44. @@ -146,7 +138,9 @@ Mirror files ^^^^^^^^^^^^ If you have a *very* large number of packages you want to mirror, you -can supply a file with specs in it, one per line:: +can supply a file with specs in it, one per line: + +.. code-block:: console $ cat specs.txt libdwarf @@ -168,19 +162,21 @@ your site. Once you have a mirror, you need to let spack know about it. This is relatively simple. First, figure out the URL for the mirror. If it's -a file, you can use a file URL like this one:: +a file, you can use a file URL like this one: - file:///Users/gamblin2/spack-mirror-2014-06-24 +.. code-block:: none + + file:///Users/gamblin2/spack-mirror-2014-06-24 That points to the directory on the local filesystem. If it were on a web server, you could use a URL like this one: - https://example.com/some/web-hosted/directory/spack-mirror-2014-06-24 +https://example.com/some/web-hosted/directory/spack-mirror-2014-06-24 Spack will use the URL as the root for all of the packages it fetches. You can tell your Spack installation to use that mirror like this: -.. code-block:: bash +.. code-block:: console $ spack mirror add local_filesystem file:///Users/gamblin2/spack-mirror-2014-06-24 @@ -192,7 +188,9 @@ Each mirror has a name so that you can refer to it again later. ``spack mirror list`` --------------------- -To see all the mirrors Spack knows about, run ``spack mirror list``:: +To see all the mirrors Spack knows about, run ``spack mirror list``: + +.. code-block:: console $ spack mirror list local_filesystem file:///Users/gamblin2/spack-mirror-2014-06-24 @@ -203,7 +201,9 @@ To see all the mirrors Spack knows about, run ``spack mirror list``:: ``spack mirror remove`` ----------------------- -To remove a mirror by name:: +To remove a mirror by name, run: + +.. code-block:: console $ spack mirror remove local_filesystem $ spack mirror list @@ -213,7 +213,9 @@ To remove a mirror by name:: Mirror precedence ----------------- -Adding a mirror really adds a line in ``~/.spack/mirrors.yaml``:: +Adding a mirror really adds a line in ``~/.spack/mirrors.yaml``: + +.. code-block:: yaml mirrors: local_filesystem: file:///Users/gamblin2/spack-mirror-2014-06-24 @@ -232,12 +234,12 @@ Local Default Cache Spack caches resources that are downloaded as part of installs. The cache is a valid spack mirror: it uses the same directory structure and naming scheme as other Spack mirrors (so it can be copied anywhere and referenced with a URL -like other mirrors). The mirror is maintained locally (within the Spack -installation directory) at :file:`var/spack/cache/`. It is always enabled (and -is always searched first when attempting to retrieve files for an installation) +like other mirrors). The mirror is maintained locally (within the Spack +installation directory) at :file:`var/spack/cache/`. It is always enabled (and +is always searched first when attempting to retrieve files for an installation) but can be cleared with :ref:`purge `; the cache directory can also -be deleted manually without issue. +be deleted manually without issue. Caching includes retrieved tarball archives and source control repositories, but -only resources with an associated digest or commit ID (e.g. a revision number +only resources with an associated digest or commit ID (e.g. a revision number for SVN) will be cached. diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index eae928ec76..08d39a266a 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -12,9 +12,9 @@ have at least some familiarity with Python, and that you've read the There are two key parts of Spack: - #. **Specs**: expressions for describing builds of software, and - #. **Packages**: Python modules that describe how to build - software according to a spec. +#. **Specs**: expressions for describing builds of software, and +#. **Packages**: Python modules that describe how to build + software according to a spec. Specs allow a user to describe a *particular* build in a way that a package author can understand. Packages allow a the packager to @@ -47,7 +47,7 @@ working. Here's an example: -.. code-block:: sh +.. code-block:: console $ spack create http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz @@ -62,7 +62,7 @@ strings look like for this package. Using this information, it will try to find versions, Spack prompts you to tell it how many versions you want to download and checksum: -.. code-block:: sh +.. code-block:: console $ spack create http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz ==> This looks like a URL for cmake version 2.8.12.1. @@ -86,7 +86,9 @@ always choose to download just one tarball initially, and run .. note:: If ``spack create`` fails to detect the package name correctly, - you can try supplying it yourself, e.g.:: + you can try supplying it yourself, e.g.: + + .. code-block:: console $ spack create --name cmake http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz @@ -104,7 +106,7 @@ always choose to download just one tarball initially, and run Let's say you download 3 tarballs: -.. code-block:: sh +.. code-block:: none Include how many checksums in the package file? (default is 5, q to abort) 3 ==> Downloading... @@ -121,27 +123,28 @@ file in your favorite ``$EDITOR``: .. code-block:: python :linenos: - # FIXME: - # This is a template package file for Spack. We've conveniently - # put "FIXME" labels next to all the things you'll want to change. # - # Once you've edited all the FIXME's, delete this whole message, - # save this file, and test out your package like this: + # This is a template package file for Spack. We've put "FIXME" + # next to all the things you'll want to change. Once you've handled + # them, you can save this file and test your package like this: # # spack install cmake # - # You can always get back here to change things with: + # You can edit this file again by typing: # # spack edit cmake # - # See the spack documentation for more information on building - # packages. + # See the Spack documentation for more information on packaging. + # If you submit this package back to Spack as a pull request, + # please first remove this boilerplate and all FIXME comments. # from spack import * + class Cmake(Package): - """FIXME: put a proper description of your package here.""" - # FIXME: add a proper url for your package's homepage here. + """FIXME: Put a proper description of your package here.""" + + # FIXME: Add a proper url for your package's homepage here. homepage = "http://www.example.com" url = "http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz" @@ -165,33 +168,33 @@ done for you. In the generated package, the download ``url`` attribute is already set. All the things you still need to change are marked with -``FIXME`` labels. The first ``FIXME`` refers to the commented -instructions at the top of the file. You can delete these -instructions after reading them. The rest of them are as follows: +``FIXME`` labels. You can delete the commented instructions between +the license and the first import statement after reading them. +The rest of the tasks you need to do are as follows: - #. Add a description. +#. Add a description. - Immediately inside the package class is a *docstring* in - triple-quotes (``"""``). It's used to generate the description - shown when users run ``spack info``. + Immediately inside the package class is a *docstring* in + triple-quotes (``"""``). It's used to generate the description + shown when users run ``spack info``. - #. Change the ``homepage`` to a useful URL. +#. Change the ``homepage`` to a useful URL. - The ``homepage`` is displayed when users run ``spack info`` so - that they can learn about packages. + The ``homepage`` is displayed when users run ``spack info`` so + that they can learn about packages. - #. Add ``depends_on()`` calls for the package's dependencies. +#. Add ``depends_on()`` calls for the package's dependencies. - ``depends_on`` tells Spack that other packages need to be built - and installed before this one. See `dependencies_`. + ``depends_on`` tells Spack that other packages need to be built + and installed before this one. See :ref:`dependencies`. - #. Get the ``install()`` method working. +#. Get the ``install()`` method working. - The ``install()`` method implements the logic to build a - package. The code should look familiar; it is designed to look - like a shell script. Specifics will differ depending on the package, - and :ref:`implementing the install method ` is - covered in detail later. + The ``install()`` method implements the logic to build a + package. The code should look familiar; it is designed to look + like a shell script. Specifics will differ depending on the package, + and :ref:`implementing the install method ` is + covered in detail later. Before going into details, we'll cover a few more basics. @@ -205,41 +208,41 @@ One of the easiest ways to learn to write packages is to look at existing ones. You can edit a package file by name with the ``spack edit`` command: -.. code-block:: sh +.. code-block:: console - spack edit cmake + $ spack edit cmake So, if you used ``spack create`` to create a package, then saved and closed the resulting file, you can get back to it with ``spack edit``. The ``cmake`` package actually lives in -``$SPACK_ROOT/var/spack/repos/builtin/packages/cmake/package.py``, but this provides -a much simpler shortcut and saves you the trouble of typing the full -path. +``$SPACK_ROOT/var/spack/repos/builtin/packages/cmake/package.py``, +but this provides a much simpler shortcut and saves you the trouble +of typing the full path. If you try to edit a package that doesn't exist, Spack will recommend -using ``spack create`` or ``spack edit -f``: +using ``spack create`` or ``spack edit --force``: -.. code-block:: sh +.. code-block:: console $ spack edit foo ==> Error: No package 'foo'. Use spack create, or supply -f/--force to edit a new file. .. _spack-edit-f: -^^^^^^^^^^^^^^^^^ -``spack edit -f`` -^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^ +``spack edit --force`` +^^^^^^^^^^^^^^^^^^^^^^ -``spack edit -f`` can be used to create a new, minimal boilerplate +``spack edit --force`` can be used to create a new, minimal boilerplate package: -.. code-block:: sh +.. code-block:: console $ spack edit -f foo Unlike ``spack create``, which infers names and versions, and which actually downloads the tarball and checksums it for you, ``spack edit --f`` has no such fanciness. It will substitute dummy values for you +--force`` has no such fanciness. It will substitute dummy values for you to fill in yourself: .. code-block:: python @@ -256,7 +259,7 @@ to fill in yourself: version('1.0', '0123456789abcdef0123456789abcdef') def install(self, spec, prefix): - configure("--prefix=" + prefix) + configure("--prefix=%s" % prefix) make() make("install") @@ -267,16 +270,9 @@ version of your package from the archive URL. Naming & directory structure ---------------------------- -.. note:: - - Spack's default naming and directory structure will change in - version 0.9. Specifically, 0.9 will stop using directory names - with special characters like ``@``, to avoid interfering with - certain packages that do not handle this well. - This section describes how packages need to be named, and where they -live in Spack's directory structure. In general, `spack-create`_ and -`spack-edit`_ handle creating package files for you, so you can skip +live in Spack's directory structure. In general, :ref:`spack-create` and +:ref:`spack-edit` handle creating package files for you, so you can skip most of the details here. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -291,13 +287,15 @@ Packages themselves live in ``$SPACK_ROOT/var/spack/repos/builtin/packages``. If you ``cd`` to that directory, you will see directories for each package: -.. command-output:: cd $SPACK_ROOT/var/spack/repos/builtin/packages; ls -CF +.. command-output:: cd $SPACK_ROOT/var/spack/repos/builtin/packages && ls :shell: :ellipsis: 10 Each directory contains a file called ``package.py``, which is where all the python code for the package goes. For example, the ``libelf`` -package lives in:: +package lives in: + +.. code-block:: none $SPACK_ROOT/var/spack/repos/builtin/packages/libelf/package.py @@ -312,7 +310,7 @@ Packages are named after the directory containing ``package.py``. It is preferred, but not required, that the directory, and thus the package name, are lower case. So, ``libelf``'s ``package.py`` lives in a directory called ``libelf``. The ``package.py`` file defines a class called ``Libelf``, which -extends Spack's ``Package`` class. for example, here is +extends Spack's ``Package`` class. For example, here is ``$SPACK_ROOT/var/spack/repos/builtin/packages/libelf/package.py``: .. code-block:: python @@ -334,7 +332,7 @@ The **directory name** (``libelf``) determines the package name that users should provide on the command line. e.g., if you type any of these: -.. code-block:: sh +.. code-block:: console $ spack install libelf $ spack install libelf@0.8.13 @@ -373,7 +371,7 @@ some examples: ================= ================= In general, you won't have to remember this naming convention because -`spack-create`_ and `spack-edit`_ handle the details for you. +:ref:`spack-create` and :ref:`spack-edit` handle the details for you. ------------------- Adding new versions @@ -482,7 +480,7 @@ to use based on the hash length. If you have one or more files to checksum, you can use the ``spack md5`` command to do it: -.. code-block:: sh +.. code-block:: console $ spack md5 foo-8.2.1.tar.gz foo-8.2.2.tar.gz ==> 2 MD5 checksums: @@ -492,7 +490,7 @@ command to do it: ``spack md5`` also accepts one or more URLs and automatically downloads the files for you: -.. code-block:: sh +.. code-block:: console $ spack md5 http://example.com/foo-8.2.1.tar.gz ==> Trying to fetch from http://example.com/foo-8.2.1.tar.gz @@ -514,7 +512,7 @@ If you want to add new versions to a package you've already created, this is automated with the ``spack checksum`` command. Here's an example for ``libelf``: -.. code-block:: sh +.. code-block:: console $ spack checksum libelf ==> Found 16 versions of libelf. @@ -538,7 +536,7 @@ they're released). It fetches the tarballs you ask for and prints out a list of ``version`` commands ready to copy/paste into your package file: -.. code-block:: sh +.. code-block:: console ==> Checksummed new versions of libelf: version('0.8.13', '4136d7b4c04df68b686570afa26988ac') @@ -605,7 +603,7 @@ same thing every time you fetch a particular version. Life isn't always simple, though, so this is not strictly enforced. When fetching from from the branch corresponding to the development version -(often called ``master``,``trunk`` or ``dev``), it is recommended to +(often called ``master``, ``trunk``, or ``dev``), it is recommended to call this version ``develop``. Spack has special treatment for this version so that ``@develop`` will satisfy dependencies like ``depends_on(abc, when="@x.y.z:")``. In other words, ``@develop`` is @@ -627,11 +625,11 @@ Git Git fetching is enabled with the following parameters to ``version``: - * ``git``: URL of the git repository. - * ``tag``: name of a tag to fetch. - * ``branch``: name of a branch to fetch. - * ``commit``: SHA hash (or prefix) of a commit to fetch. - * ``submodules``: Also fetch submodules when checking out this repository. +* ``git``: URL of the git repository. +* ``tag``: name of a tag to fetch. +* ``branch``: name of a branch to fetch. +* ``commit``: SHA hash (or prefix) of a commit to fetch. +* ``submodules``: Also fetch submodules when checking out this repository. Only one of ``tag``, ``branch``, or ``commit`` can be used at a time. @@ -675,7 +673,7 @@ Commits version('2014-10-08', git='https://github.com/example-project/example.git', commit='9d38cd4e2c94c3cea97d0e2924814acc') - This doesn't have to be a full hash; You can abbreviate it as you'd + This doesn't have to be a full hash; you can abbreviate it as you'd expect with git: .. code-block:: python @@ -705,14 +703,13 @@ Installing You can fetch and install any of the versions above as you'd expect, by using ``@`` in a spec: -.. code-block:: sh +.. code-block:: console - spack install example@2014-10-08 + $ spack install example@2014-10-08 Git and other VCS versions will show up in the list of versions when a user runs ``spack info ``. - .. _hg-fetch: ^^^^^^^^^ @@ -858,12 +855,12 @@ For example, let's take a look at the package for the PGI compilers. .. code-block:: python - # Licensing - license_required = True - license_comment = '#' - license_files = ['license.dat'] - license_vars = ['PGROUPD_LICENSE_FILE', 'LM_LICENSE_FILE'] - license_url = 'http://www.pgroup.com/doc/pgiinstall.pdf' + # Licensing + license_required = True + license_comment = '#' + license_files = ['license.dat'] + license_vars = ['PGROUPD_LICENSE_FILE', 'LM_LICENSE_FILE'] + license_url = 'http://www.pgroup.com/doc/pgiinstall.pdf' As you can see, PGI requires a license. Its license manager, FlexNet, uses the ``#`` symbol to denote a comment. It expects the license file to be @@ -886,39 +883,39 @@ this: .. code-block:: sh - # A license is required to use pgi. - # - # The recommended solution is to store your license key in this global - # license file. After installation, the following symlink(s) will be - # added to point to this file (relative to the installation prefix): - # - # license.dat - # - # Alternatively, use one of the following environment variable(s): - # - # PGROUPD_LICENSE_FILE - # LM_LICENSE_FILE - # - # If you choose to store your license in a non-standard location, you may - # set one of these variable(s) to the full pathname to the license file, or - # port@host if you store your license keys on a dedicated license server. - # You will likely want to set this variable in a module file so that it - # gets loaded every time someone tries to use pgi. - # - # For further information on how to acquire a license, please refer to: - # - # http://www.pgroup.com/doc/pgiinstall.pdf - # - # You may enter your license below. + # A license is required to use pgi. + # + # The recommended solution is to store your license key in this global + # license file. After installation, the following symlink(s) will be + # added to point to this file (relative to the installation prefix): + # + # license.dat + # + # Alternatively, use one of the following environment variable(s): + # + # PGROUPD_LICENSE_FILE + # LM_LICENSE_FILE + # + # If you choose to store your license in a non-standard location, you may + # set one of these variable(s) to the full pathname to the license file, or + # port@host if you store your license keys on a dedicated license server. + # You will likely want to set this variable in a module file so that it + # gets loaded every time someone tries to use pgi. + # + # For further information on how to acquire a license, please refer to: + # + # http://www.pgroup.com/doc/pgiinstall.pdf + # + # You may enter your license below. You can add your license directly to this file, or tell FlexNet to use a license stored on a separate license server. Here is an example that points to a license server called licman1: -.. code-block:: sh +.. code-block:: none - SERVER licman1.mcs.anl.gov 00163eb7fba5 27200 - USE_SERVER + SERVER licman1.mcs.anl.gov 00163eb7fba5 27200 + USE_SERVER If your package requires the license to install, you can reference the location of this global license using ``self.global_license_file``. @@ -949,7 +946,7 @@ after it's downloaded. ^^^^^^^^^ You can specify patches in your package file with the ``patch()`` -function. ``patch`` looks like this: +directive. ``patch`` looks like this: .. code-block:: python @@ -961,7 +958,9 @@ The first argument can be either a URL or a filename. It specifies a patch file that should be applied to your source. If the patch you supply is a filename, then the patch needs to live within the spack source tree. For example, the patch above lives in a directory -structure like this:: +structure like this: + +.. code-block:: none $SPACK_ROOT/var/spack/repos/builtin/packages/ mvapich2/ @@ -982,52 +981,58 @@ from the URL and then applied to your source code. ``patch`` can take two options keyword arguments. They are: +"""""""" ``when`` - If supplied, this is a spec that tells spack when to apply - the patch. If the installed package spec matches this spec, the - patch will be applied. In our example above, the patch is applied - when mvapich is at version ``1.9`` or higher. +"""""""" + +If supplied, this is a spec that tells spack when to apply +the patch. If the installed package spec matches this spec, the +patch will be applied. In our example above, the patch is applied +when mvapich is at version ``1.9`` or higher. +""""""""" ``level`` - This tells spack how to run the ``patch`` command. By default, - the level is 1 and spack runs ``patch -p1``. If level is 2, - spack will run ``patch -p2``, and so on. - - A lot of people are confused by level, so here's a primer. If you - look in your patch file, you may see something like this: - - .. code-block:: diff - :linenos: - - --- a/src/mpi/romio/adio/ad_lustre/ad_lustre_rwcontig.c 2013-12-10 12:05:44.806417000 -0800 - +++ b/src/mpi/romio/adio/ad_lustre/ad_lustre_rwcontig.c 2013-12-10 11:53:03.295622000 -0800 - @@ -8,7 +8,7 @@ - * Copyright (C) 2008 Sun Microsystems, Lustre group - */ - - -#define _XOPEN_SOURCE 600 - +//#define _XOPEN_SOURCE 600 - #include - #include - #include "ad_lustre.h" - - Lines 1-2 show paths with synthetic ``a/`` and ``b/`` prefixes. These - are placeholders for the two ``mvapich2`` source directories that - ``diff`` compared when it created the patch file. This is git's - default behavior when creating patch files, but other programs may - behave differently. - - ``-p1`` strips off the first level of the prefix in both paths, - allowing the patch to be applied from the root of an expanded mvapich2 - archive. If you set level to ``2``, it would strip off ``src``, and - so on. - - It's generally easier to just structure your patch file so that it - applies cleanly with ``-p1``, but if you're using a patch you didn't - create yourself, ``level`` can be handy. +""""""""" + +This tells spack how to run the ``patch`` command. By default, +the level is 1 and spack runs ``patch -p 1``. If level is 2, +spack will run ``patch -p 2``, and so on. + +A lot of people are confused by level, so here's a primer. If you +look in your patch file, you may see something like this: + +.. code-block:: diff + :linenos: + + --- a/src/mpi/romio/adio/ad_lustre/ad_lustre_rwcontig.c 2013-12-10 12:05:44.806417000 -0800 + +++ b/src/mpi/romio/adio/ad_lustre/ad_lustre_rwcontig.c 2013-12-10 11:53:03.295622000 -0800 + @@ -8,7 +8,7 @@ + * Copyright (C) 2008 Sun Microsystems, Lustre group + \*/ + + -#define _XOPEN_SOURCE 600 + +//#define _XOPEN_SOURCE 600 + #include + #include + #include "ad_lustre.h" + +Lines 1-2 show paths with synthetic ``a/`` and ``b/`` prefixes. These +are placeholders for the two ``mvapich2`` source directories that +``diff`` compared when it created the patch file. This is git's +default behavior when creating patch files, but other programs may +behave differently. + +``-p1`` strips off the first level of the prefix in both paths, +allowing the patch to be applied from the root of an expanded mvapich2 +archive. If you set level to ``2``, it would strip off ``src``, and +so on. + +It's generally easier to just structure your patch file so that it +applies cleanly with ``-p1``, but if you're using a patch you didn't +create yourself, ``level`` can be handy. ^^^^^^^^^^^^^^^^^^^^^ -``patch()`` functions +Patch functions ^^^^^^^^^^^^^^^^^^^^^ In addition to supplying patch files, you can write a custom function @@ -1037,35 +1042,10 @@ handles ``RPATH``: .. _pyside-patch: -.. code-block:: python +.. literalinclude:: ../../../var/spack/repos/builtin/packages/py-pyside/package.py + :pyobject: PyPyside.patch :linenos: - class PyPyside(Package): - ... - - def patch(self): - """Undo PySide RPATH handling and add Spack RPATH.""" - # Figure out the special RPATH - pypkg = self.spec['python'].package - rpath = self.rpath - rpath.append(os.path.join(self.prefix, pypkg.site_packages_dir, 'PySide')) - - # Add Spack's standard CMake args to the sub-builds. - # They're called BY setup.py so we have to patch it. - filter_file( - r'OPTION_CMAKE,', - r'OPTION_CMAKE, ' + ( - '"-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE", ' - '"-DCMAKE_INSTALL_RPATH=%s",' % ':'.join(rpath)), - 'setup.py') - - # PySide tries to patch ELF files to remove RPATHs - # Disable this and go with the one we set. - filter_file( - r'^\s*rpath_cmd\(pyside_path, srcpath\)', - r'#rpath_cmd(pyside_path, srcpath)', - 'pyside_postinstall.py') - A ``patch`` function, if present, will be run after patch files are applied and before ``install()`` is run. @@ -1085,9 +1065,9 @@ dependencies are found when it runs. It does this using `RPATHs `_. An RPATH is a search path, stored in a binary (an executable or library), that tells the dynamic loader where to find its dependencies at runtime. You may be -familiar with ```LD_LIBRARY_PATH`` +familiar with `LD_LIBRARY_PATH `_ -on Linux or ```DYLD_LIBRARY_PATH`` +on Linux or `DYLD_LIBRARY_PATH ` on Mac OS X. RPATH is similar to these paths, in that it tells the loader where to find libraries. Unlike them, it is embedded in @@ -1095,32 +1075,32 @@ the binary and not set in each user's environment. RPATHs in Spack are handled in one of three ways: - 1. For most packages, RPATHs are handled automatically using Spack's - :ref:`compiler wrappers `. These wrappers are - set in standard variables like ``CC``, ``CXX``, and ``FC``, so - most build systems (autotools and many gmake systems) pick them - up and use them. - 2. CMake also respects Spack's compiler wrappers, but many CMake - builds have logic to overwrite RPATHs when binaries are - installed. Spack provides the ``std_cmake_args`` variable, which - includes parameters necessary for CMake build use the right - installation RPATH. It can be used like this when ``cmake`` is - invoked: - - .. code-block:: python - - class MyPackage(Package): - ... - def install(self, spec, prefix): - cmake('..', *std_cmake_args) - make() - make('install') - - 3. If you need to modify the build to add your own RPATHs, you can - use the ``self.rpath`` property of your package, which will - return a list of all the RPATHs that Spack will use when it - links. You can see this how this is used in the :ref:`PySide - example ` above. +#. For most packages, RPATHs are handled automatically using Spack's + :ref:`compiler wrappers `. These wrappers are + set in standard variables like ``CC``, ``CXX``, ``F77``, and ``FC``, + so most build systems (autotools and many gmake systems) pick them + up and use them. +#. CMake also respects Spack's compiler wrappers, but many CMake + builds have logic to overwrite RPATHs when binaries are + installed. Spack provides the ``std_cmake_args`` variable, which + includes parameters necessary for CMake build use the right + installation RPATH. It can be used like this when ``cmake`` is + invoked: + + .. code-block:: python + + class MyPackage(Package): + ... + def install(self, spec, prefix): + cmake('..', *std_cmake_args) + make() + make('install') + +#. If you need to modify the build to add your own RPATHs, you can + use the ``self.rpath`` property of your package, which will + return a list of all the RPATHs that Spack will use when it + links. You can see this how this is used in the :ref:`PySide + example ` above. -------------------- Finding new versions @@ -1133,6 +1113,7 @@ You've already seen the ``homepage`` and ``url`` package attributes: from spack import * + class Mpich(Package): """MPICH is a high performance and widely portable implementation of the Message Passing Interface (MPI) standard.""" @@ -1194,7 +1175,9 @@ the ``list_url``, because that is where links to old versions are: versions on a single webpage, but not all do. For example, ``mpich`` has a tarball URL that looks like this: - url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz" +.. code-block:: python + + url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz" But its downloads are in many different subdirectories of ``http://www.mpich.org/static/downloads/``. So, we need to add a @@ -1344,7 +1327,7 @@ Or a requirement for a particular variant or compiler flags: depends_on("libelf@0.8+debug") depends_on('libelf debug=True') - depends_on('libelf cppflags="-fPIC") + depends_on('libelf cppflags="-fPIC"') Both users *and* package authors can use the same spec syntax to refer to different package configurations. Users use the spec syntax on the @@ -1356,9 +1339,9 @@ Additionally, dependencies may be specified for specific use cases: .. code-block:: python - depends_on("cmake", type="build") - depends_on("libelf", type=("build", "link")) - depends_on("python", type="run") + depends_on("cmake", type="build") + depends_on("libelf", type=("build", "link")) + depends_on("python", type="run") The dependency types are: @@ -1405,34 +1388,16 @@ packages that depend on a particular Qt installation will find it. The arguments to this function are: - * **module**: the module of the dependent package, where global - properties can be assigned. - * **spec**: the spec of the *dependency package* (the one the function is called on). - * **dep_spec**: the spec of the dependent package (i.e. dep_spec depends on spec). +* **module**: the module of the dependent package, where global + properties can be assigned. +* **spec**: the spec of the *dependency package* (the one the function is called on). +* **dep_spec**: the spec of the dependent package (i.e. dep_spec depends on spec). A good example of using these is in the Python package: -.. code-block:: python - - def setup_dependent_environment(self, module, spec, dep_spec): - # Python extension builds can have a global python executable function - module.python = Executable(join_path(spec.prefix.bin, 'python')) - - # Add variables for lib/pythonX.Y and lib/pythonX.Y/site-packages dirs. - module.python_lib_dir = os.path.join(dep_spec.prefix, self.python_lib_dir) - module.python_include_dir = os.path.join(dep_spec.prefix, self.python_include_dir) - module.site_packages_dir = os.path.join(dep_spec.prefix, self.site_packages_dir) - - # Make the site packages directory if it does not exist already. - mkdirp(module.site_packages_dir) - - # Set PYTHONPATH to include site-packages dir for the - # extension and any other python extensions it depends on. - python_paths = [] - for d in dep_spec.traverse(): - if d.package.extends(self.spec): - python_paths.append(os.path.join(d.prefix, self.site_packages_dir)) - os.environ['PYTHONPATH'] = ':'.join(python_paths) +.. literalinclude:: ../../../var/spack/repos/builtin/packages/python/package.py + :pyobject: Python.setup_dependent_environment + :linenos: The first thing that happens here is that the ``python`` command is inserted into module scope of the dependent. This allows most python @@ -1441,7 +1406,7 @@ packages to have a very simple install method, like this: .. code-block:: python def install(self, spec, prefix): - python('setup.py', 'install', '--prefix=%s' % prefix) + python('setup.py', 'install', '--prefix={0}'.format(prefix)) Python's ``setup_dependent_environment`` method also sets up some other variables, creates a directory, and sets up the ``PYTHONPATH`` @@ -1483,7 +1448,7 @@ activate``. When it is activated, all the files in its prefix will be symbolically linked into the prefix of the python package. Many packages produce Python extensions for *some* variants, but not -others: they should extend ``python`` only if the apropriate +others: they should extend ``python`` only if the appropriate variant(s) are selected. This may be accomplished with conditional ``extends()`` declarations: @@ -1502,13 +1467,15 @@ when it does the activation: .. code-block:: python - class PyNose(Package): + class PySncosmo(Package): ... - extends('python', ignore=r'bin/nosetests.*$') + # py-sncosmo binaries are duplicates of those from py-astropy + extends('python', ignore=r'bin/.*') + depends_on('py-astropy') ... -The code above will prevent ``$prefix/bin/nosetests`` from being -linked in at activation time. +The code above will prevent everything in the ``$prefix/bin/`` directory +from being linked in at activation time. .. note:: @@ -1537,15 +1504,9 @@ same way that Python does. Let's look at Python's activate function: -.. code-block:: python - - def activate(self, ext_pkg, **kwargs): - kwargs.update(ignore=self.python_ignore(ext_pkg, kwargs)) - super(Python, self).activate(ext_pkg, **kwargs) - - exts = spack.install_layout.extension_map(self.spec) - exts[ext_pkg.name] = ext_pkg.spec - self.write_easy_install_pth(exts) +.. literalinclude:: ../../../var/spack/repos/builtin/packages/python/package.py + :pyobject: Python.activate + :linenos: This function is called on the *extendee* (Python). It first calls ``activate`` in the superclass, which handles symlinking the @@ -1555,16 +1516,9 @@ Python's setuptools. Deactivate behaves similarly to activate, but it unlinks files: -.. code-block:: python - - def deactivate(self, ext_pkg, **kwargs): - kwargs.update(ignore=self.python_ignore(ext_pkg, kwargs)) - super(Python, self).deactivate(ext_pkg, **kwargs) - - exts = spack.install_layout.extension_map(self.spec) - if ext_pkg.name in exts: # Make deactivate idempotent. - del exts[ext_pkg.name] - self.write_easy_install_pth(exts) +.. literalinclude:: ../../../var/spack/repos/builtin/packages/python/package.py + :pyobject: Python.deactivate + :linenos: Both of these methods call some custom functions in the Python package. See the source for Spack's Python package for details. @@ -1708,7 +1662,7 @@ the package ``foo`` declares this: Suppose a user invokes ``spack install`` like this: -.. code-block:: sh +.. code-block:: console $ spack install foo ^mpich@1.0 @@ -1726,9 +1680,9 @@ command line ` and within package definitions, we can talk about how Spack puts all of this information together. When you run this: -.. code-block:: sh +.. code-block:: console - spack install mpileaks ^callpath@1.0+debug ^libelf@0.8.11 + $ spack install mpileaks ^callpath@1.0+debug ^libelf@0.8.11 Spack parses the command line and builds a spec from the description. The spec says that ``mpileaks`` should be built with the ``callpath`` @@ -1744,7 +1698,9 @@ abstract spec is partially specified. In other words, it could describe more than one build of a package. Spack does this to make things easier on the user: they should only have to specify as much of the package spec as they care about. Here's an example partial spec -DAG, based on the constraints above:: +DAG, based on the constraints above: + +.. code-block:: none mpileaks ^callpath@1.0+debug @@ -1780,7 +1736,9 @@ remaining unspecified parts in order to install. This process is called **concretization**. Concretization happens in between the time the user runs ``spack install`` and the time the ``install()`` method is called. The concretized version of the spec above might look like -this:: +this: + +.. code-block:: none mpileaks@2.3%gcc@4.7.3 arch=linux-debian7-x86_64 ^callpath@1.0%gcc@4.7.3+debug arch=linux-debian7-x86_64 @@ -1819,7 +1777,7 @@ the preferences of their own users. For an arbitrary spec, you can see the result of concretization by running ``spack spec``. For example: -.. code-block:: sh +.. code-block:: console $ spack spec dyninst@8.0.1 dyninst@8.0.1 @@ -1857,7 +1815,7 @@ where the real work of installation happens, and it's the main part of the package you'll need to customize for each piece of software. .. literalinclude:: ../../../var/spack/repos/builtin/packages/libelf/package.py - :start-after: 0.8.12 + :pyobject: Libelf.install :linenos: ``install`` takes a ``spec``: a description of how the package should @@ -1945,8 +1903,8 @@ Environment variables Spack sets a number of standard environment variables that serve two purposes: - #. Make build systems use Spack's compiler wrappers for their builds. - #. Allow build systems to find dependencies more easily +#. Make build systems use Spack's compiler wrappers for their builds. +#. Allow build systems to find dependencies more easily The Compiler environment variables that Spack sets are: @@ -1960,7 +1918,7 @@ The Compiler environment variables that Spack sets are: ============ =============================== All of these are standard variables respected by most build systems. -If your project uses ``autotools`` or ``CMake``, then it should pick +If your project uses ``Autotools`` or ``CMake``, then it should pick them up automatically when you run ``configure`` or ``cmake`` in the ``install()`` function. Many traditional builds using GNU Make and BSD make also respect these variables, so they may work with these @@ -1977,12 +1935,12 @@ In addition to the compiler variables, these variables are set before entering ``install()`` so that packages can locate dependencies easily: - ======================= ============================= - ``PATH`` Set to point to ``/bin`` directories of dependencies - ``CMAKE_PREFIX_PATH`` Path to dependency prefixes for CMake - ``PKG_CONFIG_PATH`` Path to any pkgconfig directories for dependencies - ``PYTHONPATH`` Path to site-packages dir of any python dependencies - ======================= ============================= +===================== ==================================================== +``PATH`` Set to point to ``/bin`` directories of dependencies +``CMAKE_PREFIX_PATH`` Path to dependency prefixes for CMake +``PKG_CONFIG_PATH`` Path to any pkgconfig directories for dependencies +``PYTHONPATH`` Path to site-packages dir of any python dependencies +===================== ==================================================== ``PATH`` is set up to point to dependencies ``/bin`` directories so that you can use tools installed by dependency packages at build time. @@ -1993,7 +1951,7 @@ For example, ``$MPICH_ROOT/bin/mpicc`` is frequently used by dependencies of where ``cmake`` will search for dependency libraries and headers. This causes all standard CMake find commands to look in the paths of your dependencies, so you *do not* have to manually specify arguments -like ``-D DEPENDENCY_DIR=/path/to/dependency`` to ``cmake``. More on +like ``-DDEPENDENCY_DIR=/path/to/dependency`` to ``cmake``. More on this is `in the CMake documentation `_. ``PKG_CONFIG_PATH`` is for packages that attempt to discover @@ -2031,13 +1989,15 @@ flags to the compile line so that dependencies can be easily found. These flags are added for each dependency, if they exist: Compile-time library search paths - * ``-L$dep_prefix/lib`` - * ``-L$dep_prefix/lib64`` +* ``-L$dep_prefix/lib`` +* ``-L$dep_prefix/lib64`` + Runtime library search paths (RPATHs) - * ``$rpath_flag$dep_prefix/lib`` - * ``$rpath_flag$dep_prefix/lib64`` +* ``$rpath_flag$dep_prefix/lib`` +* ``$rpath_flag$dep_prefix/lib64`` + Include search paths - * ``-I$dep_prefix/include`` +* ``-I$dep_prefix/include`` An example of this would be the ``libdwarf`` build, which has one dependency: ``libelf``. Every call to ``cc`` in the ``libdwarf`` @@ -2083,7 +2043,7 @@ Compiler flags In rare circumstances such as compiling and running small unit tests, a package developer may need to know what are the appropriate compiler flags to enable features like ``OpenMP``, ``c++11``, ``c++14`` and alike. To that end the -compiler classes in ``spack`` implement the following _properties_ : +compiler classes in ``spack`` implement the following **properties**: ``openmp_flag``, ``cxx11_flag``, ``cxx14_flag``, which can be accessed in a package by ``self.compiler.cxx11_flag`` and alike. Note that the implementation is such that if a given compiler version does not support this feature, an @@ -2102,7 +2062,7 @@ Message Parsing Interface (MPI) It is common for high performance computing software/packages to use ``MPI``. As a result of conretization, a given package can be built using different implementations of MPI such as ``Openmpi``, ``MPICH`` or ``IntelMPI``. -In some scenarios to configure a package one have to provide it with appropriate MPI +In some scenarios, to configure a package, one has to provide it with appropriate MPI compiler wrappers such as ``mpicc``, ``mpic++``. However different implementations of ``MPI`` may have different names for those wrappers. In order to make package's ``install()`` method indifferent to the @@ -2119,9 +2079,9 @@ Blas and Lapack libraries Different packages provide implementation of ``Blas`` and ``Lapack`` routines. The names of the resulting static and/or shared libraries differ from package -to package. In order to make ``install()`` method indifferent to the +to package. In order to make the ``install()`` method indifferent to the choice of ``Blas`` implementation, each package which provides it -sets up ``self.spec.blas_shared_lib`` and ``self.spec.blas_static_lib `` to +sets up ``self.spec.blas_shared_lib`` and ``self.spec.blas_static_lib`` to point to the shared and static ``Blas`` libraries, respectively. The same applies to packages which provide ``Lapack``. Package developers are advised to use these variables, for example ``spec['blas'].blas_shared_lib`` instead of @@ -2241,9 +2201,14 @@ do that, e.g.: .. code-block:: python + configure_args = [ + '--prefix={0}'.format(prefix) + ] + if spec.satisfies('@1.2:1.4'): configure_args.append("CXXFLAGS='-DWITH_FEATURE'") - configure('--prefix=' + prefix, *configure_args) + + configure(*configure_args) This works for compilers, too: @@ -2306,18 +2271,18 @@ of your dependencies. You can do that by sub-scripting the spec: .. code-block:: python - my_mpi = spec['mpich'] + my_mpi = spec['mpi'] The value in the brackets needs to be some package name, and spec needs to depend on that package, or the operation will fail. For example, the above code will fail if the ``spec`` doesn't depend on -``mpich``. The value returned and assigned to ``my_mpi``, is itself +``mpi``. The value returned and assigned to ``my_mpi``, is itself just another ``Spec`` object, so you can do all the same things you would do with the package's own spec: .. code-block:: python - mpicc = new_path(my_mpi.prefix.bin, 'mpicc') + mpicc = join_path(my_mpi.prefix.bin, 'mpicc') .. _multimethods: @@ -2330,7 +2295,7 @@ packages, based on whether the package's spec satisfies particular criteria. The ``@when`` annotation lets packages declare multiple versions of -methods like install() that depend on the package's spec. For +methods like ``install()`` that depend on the package's spec. For example: .. code-block:: python @@ -2341,16 +2306,17 @@ example: def install(self, prefix): # Do default install - @when('arch=linux-debian7-x86_64') + @when('arch=chaos_5_x86_64_ib') def install(self, prefix): # This will be executed instead of the default install if # the package's sys_type() is chaos_5_x86_64_ib. - @when('arch=linux-debian7-x86_64") + @when('arch=linux-debian7-x86_64') def install(self, prefix): - # This will be executed if the package's sys_type is bgqos_0 + # This will be executed if the package's sys_type() is + # linux-debian7-x86_64. -In the above code there are three versions of install(), two of which +In the above code there are three versions of ``install()``, two of which are specialized for particular platforms. The version that is called depends on the architecture of the package spec. @@ -2428,17 +2394,9 @@ Shell command functions Recall the install method from ``libelf``: -.. code-block:: python - - def install(self, spec, prefix): - configure("--prefix=" + prefix, - "--enable-shared", - "--disable-dependency-tracking", - "--disable-debug") - make() - - # The mkdir commands in libelf's install can fail in parallel - make("install", parallel=False) +.. literalinclude:: ../../../var/spack/repos/builtin/packages/libelf/package.py + :pyobject: Libelf.install + :linenos: Normally in Python, you'd have to write something like this in order to execute shell commands: @@ -2446,7 +2404,7 @@ to execute shell commands: .. code-block:: python import subprocess - subprocess.check_call('configure', '--prefix=' + prefix) + subprocess.check_call('configure', '--prefix={0}'.format(prefix)) We've tried to make this a bit easier by providing callable wrapper objects for some shell commands. By default, ``configure``, @@ -2488,7 +2446,7 @@ Consider a simple autotools build like this: .. code-block:: python def install(self, spec, prefix): - configure("--prefix=" + prefix) + configure("--prefix={0}".format(prefix)) make() make("install") @@ -2525,7 +2483,7 @@ Now, after ``install()`` runs, Spack will check whether ``$prefix/include/libelf.h`` exists and is a file, and whether ``$prefix/lib`` exists and is a directory. If the checks fail, then the build will fail and the install prefix will be removed. If they -succeed, Spack considers the build succeeful and keeps the prefix in +succeed, Spack considers the build successful and keeps the prefix in place. .. _file-manipulation: @@ -2633,8 +2591,8 @@ File functions install('my-header.h', join_path(prefix.include)) -:py:func:`join_path(prefix, *args) ` Like - ``os.path.join``, this joins paths using the OS path separator. +:py:func:`join_path(prefix, *args) ` + Like ``os.path.join``, this joins paths using the OS path separator. However, this version allows an arbitrary number of arguments, so you can string together many path components. @@ -2708,9 +2666,9 @@ variant names are: Name Default Description ======= ======== ======================== shared True Build shared libraries - static Build static libraries - mpi Use MPI - python Build Python extension + static True Build static libraries + mpi True Use MPI + python False Build Python extension ======= ======== ======================== If specified in this table, the corresponding default should be used @@ -2720,7 +2678,7 @@ when declaring a variant. Version Lists ^^^^^^^^^^^^^ -Spack packges should list supported versions with the newest first. +Spack packages should list supported versions with the newest first. ^^^^^^^^^^^^^^^^ Special Versions @@ -2728,20 +2686,30 @@ Special Versions The following *special* version names may be used when building a package: -* *@system*: Indicates a hook to the OS-installed version of the - package. This is useful, for example, to tell Spack to use the - OS-installed version in ``packages.yaml``:: +""""""""""" +``@system`` +""""""""""" + +Indicates a hook to the OS-installed version of the +package. This is useful, for example, to tell Spack to use the +OS-installed version in ``packages.yaml``: - openssl: - paths: - openssl@system: /usr - buildable: False +.. code-block:: yaml - Certain Spack internals look for the *@system* version and do - appropriate things in that case. + openssl: + paths: + openssl@system: /usr + buildable: False -* *@local*: Indicates the version was built manually from some source - tree of unknown provenance (see ``spack setup``). +Certain Spack internals look for the ``@system`` version and do +appropriate things in that case. + +"""""""""" +``@local`` +"""""""""" + +Indicates the version was built manually from some source +tree of unknown provenance (see ``spack setup``). --------------------------- Packaging workflow commands @@ -2760,7 +2728,7 @@ of the build. A typical package workflow might look like this: -.. code-block:: sh +.. code-block:: console $ spack edit mypackage $ spack install mypackage @@ -2823,11 +2791,11 @@ Restores the source code to pristine state, as it was before building. Does this in one of two ways: - 1. If the source was fetched as a tarball, deletes the entire build - directory and re-expands the tarball. +#. If the source was fetched as a tarball, deletes the entire build + directory and re-expands the tarball. - 2. If the source was checked out from a repository, this deletes the - build directory and checks it out again. +#. If the source was checked out from a repository, this deletes the + build directory and checks it out again. .. _spack-clean: @@ -2865,9 +2833,9 @@ By default, ``spack install`` will delete the staging area once a package has been successfully built and installed. Use ``--keep-stage`` to leave the build directory intact: -.. code-block:: sh +.. code-block:: console - spack install --keep-stage + $ spack install --keep-stage This allows you to inspect the build directory and potentially debug the build. You can use ``purge`` or ``clean`` later to get rid of the @@ -2882,17 +2850,17 @@ install prefix if anything fails during ``install()``. If you want to keep the prefix anyway (e.g. to diagnose a bug), you can use ``--keep-prefix``: -.. code-block:: sh +.. code-block:: console - spack install --keep-prefix + $ spack install --keep-prefix Note that this may confuse Spack into thinking that the package has -been installed properly, so you may need to use ``spack uninstall -f`` +been installed properly, so you may need to use ``spack uninstall --force`` to get rid of the install prefix before you build again: -.. code-block:: sh +.. code-block:: console - spack uninstall -f + $ spack uninstall --force --------------------- Graphing dependencies @@ -2906,31 +2874,9 @@ Graphing dependencies Spack provides the ``spack graph`` command for graphing dependencies. The command by default generates an ASCII rendering of a spec's -dependency graph. For example:: - - $ spack graph mpileaks - o mpileaks - |\ - | |\ - | o | callpath - |/| | - | |\| - | |\ \ - | | |\ \ - | | | | o adept-utils - | |_|_|/| - |/| | | | - o | | | | mpi - / / / / - | | o | dyninst - | |/| | - |/|/| | - | | |/ - | o | libdwarf - |/ / - o | libelf - / - o boost +dependency graph. For example: + +.. command-output:: spack graph mpileaks At the top is the root package in the DAG, with dependency edges emerging from it. On a color terminal, the edges are colored by which @@ -2938,39 +2884,9 @@ dependency they lead to. You can also use ``spack graph`` to generate graphs in the widely used `Dot `_ format. For -example:: - - $ spack graph --dot mpileaks - digraph G { - label = "Spack Dependencies" - labelloc = "b" - rankdir = "LR" - ranksep = "5" - - "boost" [label="boost"] - "callpath" [label="callpath"] - "libdwarf" [label="libdwarf"] - "mpileaks" [label="mpileaks"] - "mpi" [label="mpi"] - "adept-utils" [label="adept-utils"] - "dyninst" [label="dyninst"] - "libelf" [label="libelf"] - - "callpath" -> "dyninst" - "callpath" -> "adept-utils" - "callpath" -> "mpi" - "callpath" -> "libelf" - "callpath" -> "libdwarf" - "libdwarf" -> "libelf" - "mpileaks" -> "adept-utils" - "mpileaks" -> "callpath" - "mpileaks" -> "mpi" - "adept-utils" -> "boost" - "adept-utils" -> "mpi" - "dyninst" -> "boost" - "dyninst" -> "libelf" - "dyninst" -> "libdwarf" - } +example: + +.. command-output:: spack graph --dot mpileaks This graph can be provided as input to other graphing tools, such as those in `Graphviz `_. @@ -2981,14 +2897,19 @@ Interactive shell support Spack provides some limited shell support to make life easier for packagers. You can enable these commands by sourcing a setup file in -the ``/share/spack`` directory. For ``bash`` or ``ksh``, run:: +the ``share/spack`` directory. For ``bash`` or ``ksh``, run: - . $SPACK_ROOT/share/spack/setup-env.sh +.. code-block:: sh + + export SPACK_ROOT=/path/to/spack + . $SPACK_ROOT/share/spack/setup-env.sh For ``csh`` and ``tcsh`` run: - setenv SPACK_ROOT /path/to/spack - source $SPACK_ROOT/share/spack/setup-env.csh +.. code-block:: csh + + setenv SPACK_ROOT /path/to/spack + source $SPACK_ROOT/share/spack/setup-env.csh ``spack cd`` will then be available. @@ -3002,7 +2923,7 @@ For ``csh`` and ``tcsh`` run: Suppose you've staged a package but you want to modify it before you build it: -.. code-block:: sh +.. code-block:: console $ spack stage libelf ==> Trying to fetch from http://www.mr511.de/software/libelf-0.8.13.tar.gz @@ -3013,7 +2934,7 @@ build it: $ pwd /Users/gamblin2/src/spack/var/spack/stage/libelf@0.8.13%gcc@4.8.3 arch=linux-debian7-x86_64/libelf-0.8.13 -``spack cd`` here changed he current working directory to the +``spack cd`` here changed the current working directory to the directory containing the expanded ``libelf`` source code. There are a number of other places you can cd to in the spack directory hierarchy: @@ -3035,16 +2956,17 @@ but it takes a spec as an argument. You can use it to see the environment variables that will be set when a particular build runs, for example: -.. code-block:: sh +.. code-block:: console $ spack env mpileaks@1.1%intel This will display the entire environment that will be set when the ``mpileaks@1.1%intel`` build runs. -To run commands in a package's build environment, you can simply provided them after the spec argument to ``spack env``: +To run commands in a package's build environment, you can simply +provide them after the spec argument to ``spack env``: -.. code-block:: sh +.. code-block:: console $ spack cd mpileaks@1.1%intel $ spack env mpileaks@1.1%intel ./configure @@ -3060,13 +2982,17 @@ package's build environment. ``spack location`` is the same as ``spack cd`` but it does not require shell support. It simply prints out the path you ask for, rather than -cd'ing to it. In bash, this:: +cd'ing to it. In bash, this: - cd $(spack location -b ) +.. code-block:: console -is the same as:: + $ cd $(spack location -b ) - spack cd -b +is the same as: + +.. code-block:: console + + $ spack cd -b ``spack location`` is intended for use in scripts or makefiles that need to know where packages are installed. e.g., in a makefile you @@ -3082,7 +3008,7 @@ might write: Build System Configuration Support ---------------------------------- -Imagine a developer creating a CMake-based (or Autotools) project in a local +Imagine a developer creating a CMake or Autotools-based project in a local directory, which depends on libraries A-Z. Once Spack has installed those dependencies, one would like to run ``cmake`` with appropriate command line and environment so CMake can find them. The ``spack @@ -3091,44 +3017,45 @@ configuration that is essentially the same as how Spack *would have* configured the project. This can be demonstrated with a usage example: -.. code-block:: bash +.. code-block:: console - cd myproject - spack setup myproject@local - mkdir build; cd build - ../spconfig.py .. - make - make install + $ cd myproject + $ spack setup myproject@local + $ mkdir build; cd build + $ ../spconfig.py .. + $ make + $ make install Notes: - * Spack must have ``myproject/package.py`` in its repository for - this to work. - * ``spack setup`` produces the executable script ``spconfig.py`` in - the local directory, and also creates the module file for the - package. ``spconfig.py`` is normally run from the user's - out-of-source build directory. - * The version number given to ``spack setup`` is arbitrary, just - like ``spack diy``. ``myproject/package.py`` does not need to - have any valid downloadable versions listed (typical when a - project is new). - * spconfig.py produces a CMake configuration that *does not* use the - Spack wrappers. Any resulting binaries *will not* use RPATH, - unless the user has enabled it. This is recommended for - development purposes, not production. - * ``spconfig.py`` is human readable, and can serve as a developer - reference of what dependencies are being used. - * ``make install`` installs the package into the Spack repository, - where it may be used by other Spack packages. - * CMake-generated makefiles re-run CMake in some circumstances. Use - of ``spconfig.py`` breaks this behavior, requiring the developer - to manually re-run ``spconfig.py`` when a ``CMakeLists.txt`` file - has changed. + +* Spack must have ``myproject/package.py`` in its repository for + this to work. +* ``spack setup`` produces the executable script ``spconfig.py`` in + the local directory, and also creates the module file for the + package. ``spconfig.py`` is normally run from the user's + out-of-source build directory. +* The version number given to ``spack setup`` is arbitrary, just + like ``spack diy``. ``myproject/package.py`` does not need to + have any valid downloadable versions listed (typical when a + project is new). +* spconfig.py produces a CMake configuration that *does not* use the + Spack wrappers. Any resulting binaries *will not* use RPATH, + unless the user has enabled it. This is recommended for + development purposes, not production. +* ``spconfig.py`` is human readable, and can serve as a developer + reference of what dependencies are being used. +* ``make install`` installs the package into the Spack repository, + where it may be used by other Spack packages. +* CMake-generated makefiles re-run CMake in some circumstances. Use + of ``spconfig.py`` breaks this behavior, requiring the developer + to manually re-run ``spconfig.py`` when a ``CMakeLists.txt`` file + has changed. ^^^^^^^^^^^^ CMakePackage ^^^^^^^^^^^^ -In order ot enable ``spack setup`` functionality, the author of +In order to enable ``spack setup`` functionality, the author of ``myproject/package.py`` must subclass from ``CMakePackage`` instead of the standard ``Package`` superclass. Because CMake is standardized, the packager does not need to tell Spack how to run @@ -3140,14 +3067,15 @@ translate variant flags into CMake definitions. For example: .. code-block:: python - def configure_args(self): - spec = self.spec - return [ - '-DUSE_EVERYTRACE=%s' % ('YES' if '+everytrace' in spec else 'NO'), - '-DBUILD_PYTHON=%s' % ('YES' if '+python' in spec else 'NO'), - '-DBUILD_GRIDGEN=%s' % ('YES' if '+gridgen' in spec else 'NO'), - '-DBUILD_COUPLER=%s' % ('YES' if '+coupler' in spec else 'NO'), - '-DUSE_PISM=%s' % ('YES' if '+pism' in spec else 'NO')] + def configure_args(self): + spec = self.spec + return [ + '-DUSE_EVERYTRACE=%s' % ('YES' if '+everytrace' in spec else 'NO'), + '-DBUILD_PYTHON=%s' % ('YES' if '+python' in spec else 'NO'), + '-DBUILD_GRIDGEN=%s' % ('YES' if '+gridgen' in spec else 'NO'), + '-DBUILD_COUPLER=%s' % ('YES' if '+coupler' in spec else 'NO'), + '-DUSE_PISM=%s' % ('YES' if '+pism' in spec else 'NO') + ] If needed, a packager may also override methods defined in ``StagedPackage`` (see below). -- cgit v1.2.3-60-g2f50 From a0c8aca3a2f50ddd6f39c2382afe8021ba14633b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 29 Aug 2016 09:36:54 -0500 Subject: Remove py-mercurial, going with mercurial package instead --- share/spack/qa/check_dependencies | 2 +- .../repos/builtin/packages/py-mercurial/package.py | 44 ---------------------- 2 files changed, 1 insertion(+), 45 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/py-mercurial/package.py diff --git a/share/spack/qa/check_dependencies b/share/spack/qa/check_dependencies index ba9ede4ae0..08fad9cdc9 100755 --- a/share/spack/qa/check_dependencies +++ b/share/spack/qa/check_dependencies @@ -31,7 +31,7 @@ for dep in "$@"; do spack_package=git ;; hg) - spack_package=py-mercurial + spack_package=mercurial pip_package=mercurial ;; svn) diff --git a/var/spack/repos/builtin/packages/py-mercurial/package.py b/var/spack/repos/builtin/packages/py-mercurial/package.py deleted file mode 100644 index b1b9ffa1b1..0000000000 --- a/var/spack/repos/builtin/packages/py-mercurial/package.py +++ /dev/null @@ -1,44 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 PyMercurial(Package): - """Mercurial is a free, distributed source control management tool. - It efficiently handles projects of any size and offers an easy and - intuitive interface.""" - - homepage = "https://www.mercurial-scm.org/" - url = "https://pypi.python.org/packages/source/m/mercurial/mercurial-3.9.tar.gz" - - version('3.9', 'e2b355da744e94747daae3a5339d28a0', - url="https://pypi.python.org/packages/22/73/e8ef24d3cb13e4fa2695417e13fd22effa1c8e28465eea91a9f84aa922cd/mercurial-3.9.tar.gz") - - extends('python') - - depends_on('py-setuptools', type='build') - - def install(self, spec, prefix): - setup_py('install', '--prefix={0}'.format(prefix)) -- cgit v1.2.3-60-g2f50 From e04b76c2c3ee397df16d77a768496e007458c3da Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 29 Aug 2016 11:10:06 -0500 Subject: Add spack to the PATH for doc tests --- share/spack/qa/run-doc-tests | 3 +++ 1 file changed, 3 insertions(+) diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests index 0b23bd9d3d..96b76a216e 100755 --- a/share/spack/qa/run-doc-tests +++ b/share/spack/qa/run-doc-tests @@ -28,6 +28,9 @@ deps=( # Check for dependencies "$QA_DIR/check_dependencies" "${deps[@]}" || exit 1 +# Add Spack to the PATH. +export PATH="$SPACK_ROOT/bin:$PATH" + # Move to documentation directory # Allows script to be run from anywhere cd "$DOC_DIR" -- cgit v1.2.3-60-g2f50 From 8d1a753a1b21a4ac6ae94cbb97ba2cbf7da8367d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 29 Aug 2016 11:58:22 -0500 Subject: Fix spack --profile, fixes #1639 --- lib/spack/docs/configuration.rst | 43 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 35 deletions(-) diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index 0c88dd1d9d..ba534d1e62 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -201,41 +201,14 @@ supply ``-p`` to Spack on the command line, before any subcommands. .. _spack-p: -^^^^^^^^^^^^ -``spack -p`` -^^^^^^^^^^^^ - -``spack -p`` output looks like this: - -.. code-block:: console - - $ spack -p graph dyninst - o dyninst - \|\ - \| \|\ - \| o \| libdwarf - \|/ / - o \| libelf - / - o boost - - 307670 function calls (305943 primitive calls) in 0.127 seconds - - Ordered by: internal time - - ncalls tottime percall cumtime percall filename:lineno(function) - 853 0.021 0.000 0.066 0.000 inspect.py:472(getmodule) - 51197 0.011 0.000 0.018 0.000 inspect.py:51(ismodule) - 73961 0.010 0.000 0.010 0.000 {isinstance} - 1762 0.006 0.000 0.053 0.000 inspect.py:440(getsourcefile) - 32075 0.006 0.000 0.006 0.000 {hasattr} - 1760 0.004 0.000 0.004 0.000 {posix.stat} - 2240 0.004 0.000 0.004 0.000 {posix.lstat} - 2602 0.004 0.000 0.011 0.000 inspect.py:398(getfile) - 771 0.004 0.000 0.077 0.000 inspect.py:518(findsource) - 2656 0.004 0.000 0.004 0.000 {method 'match' of '_sre.SRE_Pattern' objects} - 30772 0.003 0.000 0.003 0.000 {method 'get' of 'dict' objects} - ... +^^^^^^^^^^^^^^^^^^^ +``spack --profile`` +^^^^^^^^^^^^^^^^^^^ + +``spack --profile`` output looks like this: + +.. command-output:: spack --profile graph dyninst + :ellipsis: 25 The bottom of the output shows the top most time consuming functions, slowest on top. The profiling support is from Python's built-in tool, -- cgit v1.2.3-60-g2f50 From ae2a803496772db9ce6f9245d165b44f587e4389 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 30 Aug 2016 10:47:38 -0500 Subject: Make subcommands importable, '-' -> '_', fixes #1642 --- bin/spack | 11 +- lib/spack/spack/cmd/package-list.py | 104 ------------- lib/spack/spack/cmd/package_list.py | 104 +++++++++++++ lib/spack/spack/cmd/test-install.py | 245 ------------------------------- lib/spack/spack/cmd/test_install.py | 245 +++++++++++++++++++++++++++++++ lib/spack/spack/cmd/url-parse.py | 75 ---------- lib/spack/spack/cmd/url_parse.py | 75 ++++++++++ lib/spack/spack/test/cmd/test_install.py | 6 +- 8 files changed, 434 insertions(+), 431 deletions(-) delete mode 100644 lib/spack/spack/cmd/package-list.py create mode 100644 lib/spack/spack/cmd/package_list.py delete mode 100644 lib/spack/spack/cmd/test-install.py create mode 100644 lib/spack/spack/cmd/test_install.py delete mode 100644 lib/spack/spack/cmd/url-parse.py create mode 100644 lib/spack/spack/cmd/url_parse.py diff --git a/bin/spack b/bin/spack index 7efa88f1ee..323a06aa53 100755 --- a/bin/spack +++ b/bin/spack @@ -56,8 +56,15 @@ with warnings.catch_warnings(): # Spack, were removed, but shadow system modules that Spack still # imports. If we leave them, Spack will fail in mysterious ways. # TODO: more elegant solution for orphaned pyc files. -orphaned_pyc_files = [os.path.join(SPACK_EXTERNAL_LIBS, n) - for n in ('functools.pyc', 'ordereddict.pyc')] +orphaned_pyc_files = [ + os.path.join(SPACK_EXTERNAL_LIBS, 'functools.pyc'), + os.path.join(SPACK_EXTERNAL_LIBS, 'ordereddict.pyc'), + os.path.join(SPACK_LIB_PATH, 'spack', 'platforms', 'cray_xc.pyc'), + os.path.join(SPACK_LIB_PATH, 'spack', 'cmd', 'package-list.pyc'), + os.path.join(SPACK_LIB_PATH, 'spack', 'cmd', 'test-install.pyc'), + os.path.join(SPACK_LIB_PATH, 'spack', 'cmd', 'url-parse.pyc') +] + for pyc_file in orphaned_pyc_files: if not os.path.exists(pyc_file): continue diff --git a/lib/spack/spack/cmd/package-list.py b/lib/spack/spack/cmd/package-list.py deleted file mode 100644 index 42f408af96..0000000000 --- a/lib/spack/spack/cmd/package-list.py +++ /dev/null @@ -1,104 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 -############################################################################## -import cgi -from StringIO import StringIO -from llnl.util.tty.colify import * -import spack - -description = "Print a list of all packages in reStructuredText." - - -def github_url(pkg): - """Link to a package file on github.""" - url = "https://github.com/LLNL/spack/blob/develop/var/spack/repos/builtin/packages/{0}/package.py" - return url.format(pkg.name) - - -def rst_table(elts): - """Print out a RST-style table.""" - cols = StringIO() - ncol, widths = colify(elts, output=cols, tty=True) - header = " ".join("=" * (w - 1) for w in widths) - return "%s\n%s%s" % (header, cols.getvalue(), header) - - -def print_rst_package_list(): - """Print out information on all packages in restructured text.""" - pkgs = sorted(spack.repo.all_packages(), key=lambda s: s.name.lower()) - pkg_names = [p.name for p in pkgs] - - print ".. _package-list:" - print - print "============" - print "Package List" - print "============" - print - print "This is a list of things you can install using Spack. It is" - print "automatically generated based on the packages in the latest Spack" - print "release." - print - print "Spack currently has %d mainline packages:" % len(pkgs) - print - print rst_table("`%s`_" % p for p in pkg_names) - print - - # Output some text for each package. - for pkg in pkgs: - print "-----" - print - print ".. _%s:" % pkg.name - print - # Must be at least 2 long, breaks for single letter packages like R. - print "-" * max(len(pkg.name), 2) - print pkg.name - print "-" * max(len(pkg.name), 2) - print - print "Homepage:" - print " * `%s <%s>`__" % (cgi.escape(pkg.homepage), pkg.homepage) - print - print "Spack package:" - print " * `%s/package.py <%s>`__" % (pkg.name, github_url(pkg)) - print - if pkg.versions: - print "Versions:" - print " " + ", ".join(str(v) for v in - reversed(sorted(pkg.versions))) - print - - for deptype in spack.alldeps: - deps = pkg.dependencies_of_type(deptype) - if deps: - print "%s Dependencies" % deptype.capitalize() - print " " + ", ".join("%s_" % d if d in pkg_names - else d for d in deps) - print - - print "Description:" - print pkg.format_doc(indent=2) - print - - -def package_list(parser, args): - print_rst_package_list() diff --git a/lib/spack/spack/cmd/package_list.py b/lib/spack/spack/cmd/package_list.py new file mode 100644 index 0000000000..42f408af96 --- /dev/null +++ b/lib/spack/spack/cmd/package_list.py @@ -0,0 +1,104 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 +############################################################################## +import cgi +from StringIO import StringIO +from llnl.util.tty.colify import * +import spack + +description = "Print a list of all packages in reStructuredText." + + +def github_url(pkg): + """Link to a package file on github.""" + url = "https://github.com/LLNL/spack/blob/develop/var/spack/repos/builtin/packages/{0}/package.py" + return url.format(pkg.name) + + +def rst_table(elts): + """Print out a RST-style table.""" + cols = StringIO() + ncol, widths = colify(elts, output=cols, tty=True) + header = " ".join("=" * (w - 1) for w in widths) + return "%s\n%s%s" % (header, cols.getvalue(), header) + + +def print_rst_package_list(): + """Print out information on all packages in restructured text.""" + pkgs = sorted(spack.repo.all_packages(), key=lambda s: s.name.lower()) + pkg_names = [p.name for p in pkgs] + + print ".. _package-list:" + print + print "============" + print "Package List" + print "============" + print + print "This is a list of things you can install using Spack. It is" + print "automatically generated based on the packages in the latest Spack" + print "release." + print + print "Spack currently has %d mainline packages:" % len(pkgs) + print + print rst_table("`%s`_" % p for p in pkg_names) + print + + # Output some text for each package. + for pkg in pkgs: + print "-----" + print + print ".. _%s:" % pkg.name + print + # Must be at least 2 long, breaks for single letter packages like R. + print "-" * max(len(pkg.name), 2) + print pkg.name + print "-" * max(len(pkg.name), 2) + print + print "Homepage:" + print " * `%s <%s>`__" % (cgi.escape(pkg.homepage), pkg.homepage) + print + print "Spack package:" + print " * `%s/package.py <%s>`__" % (pkg.name, github_url(pkg)) + print + if pkg.versions: + print "Versions:" + print " " + ", ".join(str(v) for v in + reversed(sorted(pkg.versions))) + print + + for deptype in spack.alldeps: + deps = pkg.dependencies_of_type(deptype) + if deps: + print "%s Dependencies" % deptype.capitalize() + print " " + ", ".join("%s_" % d if d in pkg_names + else d for d in deps) + print + + print "Description:" + print pkg.format_doc(indent=2) + print + + +def package_list(parser, args): + print_rst_package_list() diff --git a/lib/spack/spack/cmd/test-install.py b/lib/spack/spack/cmd/test-install.py deleted file mode 100644 index 8e7173e9a2..0000000000 --- a/lib/spack/spack/cmd/test-install.py +++ /dev/null @@ -1,245 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 -############################################################################## -import argparse -import codecs -import os -import time -import xml.dom.minidom -import xml.etree.ElementTree as ET - -import llnl.util.tty as tty -import spack -import spack.cmd -from llnl.util.filesystem import * -from spack.build_environment import InstallError -from spack.fetch_strategy import FetchError - -description = "Run package install as a unit test, output formatted results." - - -def setup_parser(subparser): - subparser.add_argument( - '-j', '--jobs', action='store', type=int, - help="Explicitly set number of make jobs. Default is #cpus.") - - subparser.add_argument( - '-n', '--no-checksum', action='store_true', dest='no_checksum', - help="Do not check packages against checksum") - - subparser.add_argument( - '-o', '--output', action='store', - help="test output goes in this file") - - subparser.add_argument( - 'package', nargs=argparse.REMAINDER, - help="spec of package to install") - - -class TestResult(object): - PASSED = 0 - FAILED = 1 - SKIPPED = 2 - ERRORED = 3 - - -class TestSuite(object): - - def __init__(self, filename): - self.filename = filename - self.root = ET.Element('testsuite') - self.tests = [] - - def __enter__(self): - return self - - def append(self, item): - if not isinstance(item, TestCase): - raise TypeError( - 'only TestCase instances may be appended to TestSuite') - self.tests.append(item) # Append the item to the list of tests - - def __exit__(self, exc_type, exc_val, exc_tb): - # Prepare the header for the entire test suite - number_of_errors = sum( - x.result_type == TestResult.ERRORED for x in self.tests) - self.root.set('errors', str(number_of_errors)) - number_of_failures = sum( - x.result_type == TestResult.FAILED for x in self.tests) - self.root.set('failures', str(number_of_failures)) - self.root.set('tests', str(len(self.tests))) - - for item in self.tests: - self.root.append(item.element) - - with open(self.filename, 'wb') as file: - xml_string = ET.tostring(self.root) - xml_string = xml.dom.minidom.parseString(xml_string).toprettyxml() - file.write(xml_string) - - -class TestCase(object): - - results = { - TestResult.PASSED: None, - TestResult.SKIPPED: 'skipped', - TestResult.FAILED: 'failure', - TestResult.ERRORED: 'error', - } - - def __init__(self, classname, name, time=None): - self.element = ET.Element('testcase') - self.element.set('classname', str(classname)) - self.element.set('name', str(name)) - if time is not None: - self.element.set('time', str(time)) - self.result_type = None - - def set_result(self, result_type, - message=None, error_type=None, text=None): - self.result_type = result_type - result = TestCase.results[self.result_type] - if result is not None and result is not TestResult.PASSED: - subelement = ET.SubElement(self.element, result) - if error_type is not None: - subelement.set('type', error_type) - if message is not None: - subelement.set('message', str(message)) - if text is not None: - subelement.text = text - - -def fetch_log(path): - if not os.path.exists(path): - return list() - with codecs.open(path, 'rb', 'utf-8') as F: - return list(line.strip() for line in F.readlines()) - - -def failed_dependencies(spec): - def get_deps(deptype): - return set(item for item in spec.dependencies(deptype) - if not spack.repo.get(item).installed) - link_deps = get_deps('link') - run_deps = get_deps('run') - return link_deps.union(run_deps) - - -def get_top_spec_or_die(args): - specs = spack.cmd.parse_specs(args.package, concretize=True) - if len(specs) > 1: - tty.die("Only 1 top-level package can be specified") - top_spec = iter(specs).next() - return top_spec - - -def install_single_spec(spec, number_of_jobs): - package = spack.repo.get(spec) - - # If it is already installed, skip the test - if spack.repo.get(spec).installed: - testcase = TestCase(package.name, package.spec.short_spec, time=0.0) - testcase.set_result( - TestResult.SKIPPED, - message='Skipped [already installed]', - error_type='already_installed') - return testcase - - # If it relies on dependencies that did not install, skip - if failed_dependencies(spec): - testcase = TestCase(package.name, package.spec.short_spec, time=0.0) - testcase.set_result( - TestResult.SKIPPED, - message='Skipped [failed dependencies]', - error_type='dep_failed') - return testcase - - # Otherwise try to install the spec - try: - start_time = time.time() - package.do_install(keep_prefix=False, - keep_stage=True, - ignore_deps=False, - make_jobs=number_of_jobs, - verbose=True, - fake=False) - duration = time.time() - start_time - testcase = TestCase(package.name, package.spec.short_spec, duration) - testcase.set_result(TestResult.PASSED) - except InstallError: - # An InstallError is considered a failure (the recipe didn't work - # correctly) - duration = time.time() - start_time - # Try to get the log - lines = fetch_log(package.build_log_path) - text = '\n'.join(lines) - testcase = TestCase(package.name, package.spec.short_spec, duration) - testcase.set_result(TestResult.FAILED, - message='Installation failure', text=text) - - except FetchError: - # A FetchError is considered an error (we didn't even start building) - duration = time.time() - start_time - testcase = TestCase(package.name, package.spec.short_spec, duration) - testcase.set_result(TestResult.ERRORED, - message='Unable to fetch package') - - return testcase - - -def get_filename(args, top_spec): - if not args.output: - fname = 'test-{x.name}-{x.version}-{hash}.xml'.format( - x=top_spec, hash=top_spec.dag_hash()) - output_directory = join_path(os.getcwd(), 'test-output') - if not os.path.exists(output_directory): - os.mkdir(output_directory) - output_filename = join_path(output_directory, fname) - else: - output_filename = args.output - return output_filename - - -def test_install(parser, args): - # Check the input - if not args.package: - tty.die("install requires a package argument") - - if args.jobs is not None: - if args.jobs <= 0: - tty.die("The -j option must be a positive integer!") - - if args.no_checksum: - spack.do_checksum = False # TODO: remove this global. - - # Get the one and only top spec - top_spec = get_top_spec_or_die(args) - # Get the filename of the test - output_filename = get_filename(args, top_spec) - # TEST SUITE - with TestSuite(output_filename) as test_suite: - # Traverse in post order : each spec is a test case - for spec in top_spec.traverse(order='post'): - test_case = install_single_spec(spec, args.jobs) - test_suite.append(test_case) diff --git a/lib/spack/spack/cmd/test_install.py b/lib/spack/spack/cmd/test_install.py new file mode 100644 index 0000000000..8e7173e9a2 --- /dev/null +++ b/lib/spack/spack/cmd/test_install.py @@ -0,0 +1,245 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 +############################################################################## +import argparse +import codecs +import os +import time +import xml.dom.minidom +import xml.etree.ElementTree as ET + +import llnl.util.tty as tty +import spack +import spack.cmd +from llnl.util.filesystem import * +from spack.build_environment import InstallError +from spack.fetch_strategy import FetchError + +description = "Run package install as a unit test, output formatted results." + + +def setup_parser(subparser): + subparser.add_argument( + '-j', '--jobs', action='store', type=int, + help="Explicitly set number of make jobs. Default is #cpus.") + + subparser.add_argument( + '-n', '--no-checksum', action='store_true', dest='no_checksum', + help="Do not check packages against checksum") + + subparser.add_argument( + '-o', '--output', action='store', + help="test output goes in this file") + + subparser.add_argument( + 'package', nargs=argparse.REMAINDER, + help="spec of package to install") + + +class TestResult(object): + PASSED = 0 + FAILED = 1 + SKIPPED = 2 + ERRORED = 3 + + +class TestSuite(object): + + def __init__(self, filename): + self.filename = filename + self.root = ET.Element('testsuite') + self.tests = [] + + def __enter__(self): + return self + + def append(self, item): + if not isinstance(item, TestCase): + raise TypeError( + 'only TestCase instances may be appended to TestSuite') + self.tests.append(item) # Append the item to the list of tests + + def __exit__(self, exc_type, exc_val, exc_tb): + # Prepare the header for the entire test suite + number_of_errors = sum( + x.result_type == TestResult.ERRORED for x in self.tests) + self.root.set('errors', str(number_of_errors)) + number_of_failures = sum( + x.result_type == TestResult.FAILED for x in self.tests) + self.root.set('failures', str(number_of_failures)) + self.root.set('tests', str(len(self.tests))) + + for item in self.tests: + self.root.append(item.element) + + with open(self.filename, 'wb') as file: + xml_string = ET.tostring(self.root) + xml_string = xml.dom.minidom.parseString(xml_string).toprettyxml() + file.write(xml_string) + + +class TestCase(object): + + results = { + TestResult.PASSED: None, + TestResult.SKIPPED: 'skipped', + TestResult.FAILED: 'failure', + TestResult.ERRORED: 'error', + } + + def __init__(self, classname, name, time=None): + self.element = ET.Element('testcase') + self.element.set('classname', str(classname)) + self.element.set('name', str(name)) + if time is not None: + self.element.set('time', str(time)) + self.result_type = None + + def set_result(self, result_type, + message=None, error_type=None, text=None): + self.result_type = result_type + result = TestCase.results[self.result_type] + if result is not None and result is not TestResult.PASSED: + subelement = ET.SubElement(self.element, result) + if error_type is not None: + subelement.set('type', error_type) + if message is not None: + subelement.set('message', str(message)) + if text is not None: + subelement.text = text + + +def fetch_log(path): + if not os.path.exists(path): + return list() + with codecs.open(path, 'rb', 'utf-8') as F: + return list(line.strip() for line in F.readlines()) + + +def failed_dependencies(spec): + def get_deps(deptype): + return set(item for item in spec.dependencies(deptype) + if not spack.repo.get(item).installed) + link_deps = get_deps('link') + run_deps = get_deps('run') + return link_deps.union(run_deps) + + +def get_top_spec_or_die(args): + specs = spack.cmd.parse_specs(args.package, concretize=True) + if len(specs) > 1: + tty.die("Only 1 top-level package can be specified") + top_spec = iter(specs).next() + return top_spec + + +def install_single_spec(spec, number_of_jobs): + package = spack.repo.get(spec) + + # If it is already installed, skip the test + if spack.repo.get(spec).installed: + testcase = TestCase(package.name, package.spec.short_spec, time=0.0) + testcase.set_result( + TestResult.SKIPPED, + message='Skipped [already installed]', + error_type='already_installed') + return testcase + + # If it relies on dependencies that did not install, skip + if failed_dependencies(spec): + testcase = TestCase(package.name, package.spec.short_spec, time=0.0) + testcase.set_result( + TestResult.SKIPPED, + message='Skipped [failed dependencies]', + error_type='dep_failed') + return testcase + + # Otherwise try to install the spec + try: + start_time = time.time() + package.do_install(keep_prefix=False, + keep_stage=True, + ignore_deps=False, + make_jobs=number_of_jobs, + verbose=True, + fake=False) + duration = time.time() - start_time + testcase = TestCase(package.name, package.spec.short_spec, duration) + testcase.set_result(TestResult.PASSED) + except InstallError: + # An InstallError is considered a failure (the recipe didn't work + # correctly) + duration = time.time() - start_time + # Try to get the log + lines = fetch_log(package.build_log_path) + text = '\n'.join(lines) + testcase = TestCase(package.name, package.spec.short_spec, duration) + testcase.set_result(TestResult.FAILED, + message='Installation failure', text=text) + + except FetchError: + # A FetchError is considered an error (we didn't even start building) + duration = time.time() - start_time + testcase = TestCase(package.name, package.spec.short_spec, duration) + testcase.set_result(TestResult.ERRORED, + message='Unable to fetch package') + + return testcase + + +def get_filename(args, top_spec): + if not args.output: + fname = 'test-{x.name}-{x.version}-{hash}.xml'.format( + x=top_spec, hash=top_spec.dag_hash()) + output_directory = join_path(os.getcwd(), 'test-output') + if not os.path.exists(output_directory): + os.mkdir(output_directory) + output_filename = join_path(output_directory, fname) + else: + output_filename = args.output + return output_filename + + +def test_install(parser, args): + # Check the input + if not args.package: + tty.die("install requires a package argument") + + if args.jobs is not None: + if args.jobs <= 0: + tty.die("The -j option must be a positive integer!") + + if args.no_checksum: + spack.do_checksum = False # TODO: remove this global. + + # Get the one and only top spec + top_spec = get_top_spec_or_die(args) + # Get the filename of the test + output_filename = get_filename(args, top_spec) + # TEST SUITE + with TestSuite(output_filename) as test_suite: + # Traverse in post order : each spec is a test case + for spec in top_spec.traverse(order='post'): + test_case = install_single_spec(spec, args.jobs) + test_suite.append(test_case) diff --git a/lib/spack/spack/cmd/url-parse.py b/lib/spack/spack/cmd/url-parse.py deleted file mode 100644 index b8c7c95040..0000000000 --- a/lib/spack/spack/cmd/url-parse.py +++ /dev/null @@ -1,75 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/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 Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, 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 Lesser 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 -############################################################################## -import llnl.util.tty as tty - -import spack -import spack.url -from spack.util.web import find_versions_of_archive - -description = "Show parsing of a URL, optionally spider web for versions." - - -def setup_parser(subparser): - subparser.add_argument('url', help="url of a package archive") - subparser.add_argument( - '-s', '--spider', action='store_true', - help="Spider the source page for versions.") - - -def print_name_and_version(url): - name, ns, nl, ntup, ver, vs, vl, vtup = spack.url.substitution_offsets(url) - underlines = [" "] * max(ns + nl, vs + vl) - for i in range(ns, ns + nl): - underlines[i] = '-' - for i in range(vs, vs + vl): - underlines[i] = '~' - - print " %s" % url - print " %s" % ''.join(underlines) - - -def url_parse(parser, args): - url = args.url - - ver, vs, vl = spack.url.parse_version_offset(url) - name, ns, nl = spack.url.parse_name_offset(url, ver) - - tty.msg("Parsing URL:") - try: - print_name_and_version(url) - except spack.url.UrlParseError as e: - tty.error(str(e)) - - print - tty.msg("Substituting version 9.9.9b:") - newurl = spack.url.substitute_version(url, '9.9.9b') - print_name_and_version(newurl) - - if args.spider: - print - tty.msg("Spidering for versions:") - versions = find_versions_of_archive(url) - for v in sorted(versions): - print "%-20s%s" % (v, versions[v]) diff --git a/lib/spack/spack/cmd/url_parse.py b/lib/spack/spack/cmd/url_parse.py new file mode 100644 index 0000000000..b8c7c95040 --- /dev/null +++ b/lib/spack/spack/cmd/url_parse.py @@ -0,0 +1,75 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 +############################################################################## +import llnl.util.tty as tty + +import spack +import spack.url +from spack.util.web import find_versions_of_archive + +description = "Show parsing of a URL, optionally spider web for versions." + + +def setup_parser(subparser): + subparser.add_argument('url', help="url of a package archive") + subparser.add_argument( + '-s', '--spider', action='store_true', + help="Spider the source page for versions.") + + +def print_name_and_version(url): + name, ns, nl, ntup, ver, vs, vl, vtup = spack.url.substitution_offsets(url) + underlines = [" "] * max(ns + nl, vs + vl) + for i in range(ns, ns + nl): + underlines[i] = '-' + for i in range(vs, vs + vl): + underlines[i] = '~' + + print " %s" % url + print " %s" % ''.join(underlines) + + +def url_parse(parser, args): + url = args.url + + ver, vs, vl = spack.url.parse_version_offset(url) + name, ns, nl = spack.url.parse_name_offset(url, ver) + + tty.msg("Parsing URL:") + try: + print_name_and_version(url) + except spack.url.UrlParseError as e: + tty.error(str(e)) + + print + tty.msg("Substituting version 9.9.9b:") + newurl = spack.url.substitute_version(url, '9.9.9b') + print_name_and_version(newurl) + + if args.spider: + print + tty.msg("Spidering for versions:") + versions = find_versions_of_archive(url) + for v in sorted(versions): + print "%-20s%s" % (v, versions[v]) diff --git a/lib/spack/spack/test/cmd/test_install.py b/lib/spack/spack/test/cmd/test_install.py index 39287d5d6d..4734fe1267 100644 --- a/lib/spack/spack/test/cmd/test_install.py +++ b/lib/spack/spack/test/cmd/test_install.py @@ -30,6 +30,7 @@ import contextlib import spack import spack.cmd +from spack.cmd import test_install FILE_REGISTRY = collections.defaultdict(StringIO.StringIO) @@ -51,11 +52,6 @@ def mock_open(filename, mode): handle.close() -# The use of __import__ is necessary to maintain a name with hyphen (which -# cannot be an identifier in python) -test_install = __import__("spack.cmd.test-install", fromlist=['test_install']) - - class MockSpec(object): def __init__(self, name, version, hashStr=None): -- cgit v1.2.3-60-g2f50 From cc7df29e810b0733d7457720a18fe4400ef90990 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 30 Aug 2016 12:05:14 -0500 Subject: Keep dashes in command names, translate to underscores --- bin/spack | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/spack b/bin/spack index 323a06aa53..17586cc1f6 100755 --- a/bin/spack +++ b/bin/spack @@ -127,7 +127,8 @@ subparsers = parser.add_subparsers(metavar='SUBCOMMAND', dest="command") import spack.cmd for cmd in spack.cmd.commands: module = spack.cmd.get_module(cmd) - subparser = subparsers.add_parser(cmd, help=module.description) + cmd_name = cmd.replace('_', '-') + subparser = subparsers.add_parser(cmd_name, help=module.description) module.setup_parser(subparser) # Just print help and exit if run with no arguments at all @@ -163,7 +164,7 @@ def main(): spack.curl.add_default_arg('-k') # Try to load the particular command asked for and run it - command = spack.cmd.get_command(args.command) + command = spack.cmd.get_command(args.command.replace('-', '_')) try: return_val = command(parser, args) except SpackError as e: -- cgit v1.2.3-60-g2f50 From 9b455e925488bd44cfbb591fc55d4dfb01e30e90 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 30 Aug 2016 15:58:22 -0500 Subject: Resolve new documentation issues that have cropped up --- lib/spack/docs/case_studies.rst | 106 ++++++++++++--------- .../repos/builtin/packages/libsplash/package.py | 7 +- .../repos/builtin/packages/opencoarrays/package.py | 3 +- .../repos/builtin/packages/pngwriter/package.py | 15 ++- 4 files changed, 71 insertions(+), 60 deletions(-) diff --git a/lib/spack/docs/case_studies.rst b/lib/spack/docs/case_studies.rst index bcd754fdcd..fcec636c27 100644 --- a/lib/spack/docs/case_studies.rst +++ b/lib/spack/docs/case_studies.rst @@ -1,5 +1,6 @@ +======================================= Using Spack for CMake-based Development -========================================== +======================================= These are instructions on how to use Spack to aid in the development of a CMake-based project. Spack is used to help find the dependencies @@ -7,24 +8,26 @@ for the project, configure it at development time, and then package it it in a way that others can install. Using Spack for CMake-based development consists of three parts: -1. Setting up the CMake build in your software -2. Writing the Spack Package -3. Using it from Spack. - +#. Setting up the CMake build in your software +#. Writing the Spack Package +#. Using it from Spack. +-------------------------- Setting Up the CMake Build ---------------------------------------- +-------------------------- You should follow standard CMake conventions in setting up your software, your CMake build should NOT depend on or require Spack to build. See here for an example: - https://github.com/citibeth/icebin + +https://github.com/citibeth/icebin Note that there's one exception here to the rule I mentioned above. -In ``CMakeLists.txt``, I have the following line:: +In ``CMakeLists.txt``, I have the following line: - include_directories($ENV{CMAKE_TRANSITIVE_INCLUDE_PATH}) +.. code-block:: none + include_directories($ENV{CMAKE_TRANSITIVE_INCLUDE_PATH}) This is a hook into Spack, and it ensures that all transitive dependencies are included in the include path. It's not needed if @@ -48,40 +51,44 @@ correctly. Not only is this a good idea and nice, but it also ensures that your package will build the same with or without ``spack install``. +------------------------- Writing the Spack Package ---------------------------------------- +------------------------- Now that you have a CMake build, you want to tell Spack how to configure it. This is done by writing a Spack package for your software. See here for example: - https://github.com/citibeth/spack/blob/efischer/develop/var/spack/repos/builtin/packages/icebin/package.py + +https://github.com/citibeth/spack/blob/efischer/develop/var/spack/repos/builtin/packages/icebin/package.py You need to subclass ``CMakePackage``, as is done in this example. This enables advanced features of Spack for helping you in configuring your software (keep reading...). Instead of an ``install()`` method used when subclassing ``Package``, you write ``configure_args()``. See here for more info on how this works: - https://github.com/LLNL/spack/pull/543/files + +https://github.com/LLNL/spack/pull/543/files NOTE: if your software is not publicly available, you do not need to set the URL or version. Or you can set up bogus URLs and versions... whatever causes Spack to not crash. - +------------------- Using it from Spack --------------------------------- +------------------- Now that you have a Spack package, you can get Spack to setup your CMake project for you. Use the following to setup, configure and -build your project:: +build your project: - cd myproject - spack spconfig myproject@local - mkdir build; cd build - ../spconfig.py .. - make - make install +.. code-block:: console + $ cd myproject + $ spack spconfig myproject@local + $ mkdir build; cd build + $ ../spconfig.py .. + $ make + $ make install Everything here should look pretty familiar here from a CMake perspective, except that ``spack spconfig`` creates the file @@ -94,68 +101,75 @@ If your project is publicly available (eg on GitHub), then you can ALSO use this setup to "just install" a release version without going through the manual configuration/build step. Just do: -1. Put tag(s) on the version(s) in your GitHub repo you want to be release versions. +#. Put tag(s) on the version(s) in your GitHub repo you want to be release versions. -2. Set the ``url`` in your ``package.py`` to download a tarball for +#. Set the ``url`` in your ``package.py`` to download a tarball for the appropriate version. (GitHub will give you a tarball for any - version in the repo, if you tickle it the right way). For example:: + version in the repo, if you tickle it the right way). For example: - https://github.com/citibeth/icebin/tarball/v0.1.0 + https://github.com/citibeth/icebin/tarball/v0.1.0 Set up versions as appropriate in your ``package.py``. (Manually download the tarball and run ``md5sum`` to determine the appropriate checksum for it). -3. Now you should be able to say ``spack install myproject@version`` +#. Now you should be able to say ``spack install myproject@version`` and things "just work." NOTE... in order to use the features outlined in this post, you currently need to use the following branch of Spack: - https://github.com/citibeth/spack/tree/efischer/develop + +https://github.com/citibeth/spack/tree/efischer/develop There is a pull request open on this branch ( https://github.com/LLNL/spack/pull/543 ) and we are working to get it integrated into the main ``develop`` branch. - +------------------------ Activating your Software -------------------------------------- +------------------------ Once you've built your software, you will want to load it up. You can use ``spack load mypackage@local`` for that in your ``.bashrc``, but that is slow. Try stuff like the following instead: The following command will load the Spack-installed packages needed -for basic Python use of IceBin:: +for basic Python use of IceBin: - module load `spack module find tcl icebin netcdf cmake@3.5.1` - module load `spack module find --dependencies tcl py-basemap py-giss` +.. code-block:: console + + $ module load `spack module find tcl icebin netcdf cmake@3.5.1` + $ module load `spack module find --dependencies tcl py-basemap py-giss` You can speed up shell startup by turning these into ``module load`` commands. -1. Cut-n-paste the script ``make_spackenv``:: +#. Cut-n-paste the script ``make_spackenv``: + + .. code-block:: sh - #!/bin/sh - # - # Generate commands to load the Spack environment + #!/bin/sh + # + # Generate commands to load the Spack environment - SPACKENV=$HOME/spackenv.sh + SPACKENV=$HOME/spackenv.sh - spack module find --shell tcl git icebin@local ibmisc netcdf cmake@3.5.1 >$SPACKENV - spack module find --dependencies --shell tcl py-basemap py-giss >>$SPACKENV + spack module find --shell tcl git icebin@local ibmisc netcdf cmake@3.5.1 > $SPACKENV + spack module find --dependencies --shell tcl py-basemap py-giss >> $SPACKENV -2. Add the following to your ``.bashrc`` file:: +#. Add the following to your ``.bashrc`` file: - source $HOME/spackenv.sh - # Preferentially use your checked-out Python source - export PYTHONPATH=$HOME/icebin/pylib:$PYTHONPATH + .. code-block:: sh -3. Run ``sh make_spackenv`` whenever your Spack installation changes (including right now). + source $HOME/spackenv.sh + # Preferentially use your checked-out Python source + export PYTHONPATH=$HOME/icebin/pylib:$PYTHONPATH +#. Run ``sh make_spackenv`` whenever your Spack installation changes (including right now). +----------- Giving Back -------------------- +----------- If your software is publicly available, you should submit the ``package.py`` for it as a pull request to the main Spack GitHub @@ -164,4 +178,4 @@ project. This will ensure that anyone can install your software for how that has turned into detailed instructions that have successfully enabled collaborators to install complex software: - https://github.com/citibeth/icebin/blob/develop/README.rst +https://github.com/citibeth/icebin/blob/develop/README.rst diff --git a/var/spack/repos/builtin/packages/libsplash/package.py b/var/spack/repos/builtin/packages/libsplash/package.py index 0659f7d650..21a6eede3f 100644 --- a/var/spack/repos/builtin/packages/libsplash/package.py +++ b/var/spack/repos/builtin/packages/libsplash/package.py @@ -26,10 +26,9 @@ from spack import * class Libsplash(Package): - """ - libSplash aims at developing a HDF5-based I/O library for HPC simulations. - It is created as an easy-to-use frontend for the standard HDF5 library - with support for MPI processes in a cluster environment. While the + """libSplash aims at developing a HDF5-based I/O library for HPC + simulations. It is created as an easy-to-use frontend for the standard HDF5 + library with support for MPI processes in a cluster environment. While the standard HDF5 library provides detailed low-level control, libSplash simplifies tasks commonly found in large-scale HPC simulations, such as iterative computations and MPI distributed processes. diff --git a/var/spack/repos/builtin/packages/opencoarrays/package.py b/var/spack/repos/builtin/packages/opencoarrays/package.py index 0003157985..d9760e2afc 100644 --- a/var/spack/repos/builtin/packages/opencoarrays/package.py +++ b/var/spack/repos/builtin/packages/opencoarrays/package.py @@ -26,8 +26,7 @@ from spack import * class Opencoarrays(CMakePackage): - """ - OpenCoarrays is an open-source software project that produces an + """OpenCoarrays is an open-source software project that produces an application binary interface (ABI) supporting coarray Fortran (CAF) compilers, an application programming interface (API) that supports users of non-CAF compilers, and an associated compiler wrapper and program diff --git a/var/spack/repos/builtin/packages/pngwriter/package.py b/var/spack/repos/builtin/packages/pngwriter/package.py index 037a2eb4f3..c51f1f82a8 100644 --- a/var/spack/repos/builtin/packages/pngwriter/package.py +++ b/var/spack/repos/builtin/packages/pngwriter/package.py @@ -26,14 +26,13 @@ from spack import * class Pngwriter(Package): - """ - PNGwriter is a very easy to use open source graphics library that uses PNG - as its output format. The interface has been designed to be as simple and - intuitive as possible. It supports plotting and reading pixels in the RGB - (red, green, blue), HSV (hue, saturation, value/brightness) and CMYK (cyan, - magenta, yellow, black) colour spaces, basic shapes, scaling, bilinear - interpolation, full TrueType antialiased and rotated text support, bezier - curves, opening existing PNG images and more. + """PNGwriter is a very easy to use open source graphics library that uses + PNG as its output format. The interface has been designed to be as simple + and intuitive as possible. It supports plotting and reading pixels in the + RGB (red, green, blue), HSV (hue, saturation, value/brightness) and CMYK + (cyan, magenta, yellow, black) colour spaces, basic shapes, scaling, + bilinear interpolation, full TrueType antialiased and rotated text support, + bezier curves, opening existing PNG images and more. """ homepage = "http://pngwriter.sourceforge.net/" -- cgit v1.2.3-60-g2f50 From f6d07b54f15941ba25ed10ff9465df358a59d625 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 30 Aug 2016 16:01:00 -0500 Subject: Always run spack unit tests --- share/spack/qa/run-unit-tests | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index 03dfe7cea1..6da919e18d 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -35,27 +35,6 @@ export PATH="$SPACK_ROOT/bin:$PATH" # Allows script to be run from anywhere cd "$SPACK_ROOT" -# Array of directories containing core Spack framework -core_dirs=( - bin - etc - # lib, but skip documentation - lib/spack/env - lib/spack/external - lib/spack/llnl - lib/spack/spack - share -) - -# Gather array of changed files -changed=($("$QA_DIR/changed_files" "${core_dirs[@]}")) - -# Exit if no core Spack framework files were modified -if [[ ! "${changed[@]}" ]]; then - echo "No core Spack framework files were modified." - exit 0 -fi - # Run integration tests # TODO: should these be separated into a different test suite? source "$SPACK_ROOT/share/spack/setup-env.sh" -- cgit v1.2.3-60-g2f50 From 1be6267149ba2fdd3d510bde713b237eaa0248e9 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 30 Aug 2016 16:28:55 -0500 Subject: Undo changes to trailing triple quotes in docstring --- lib/spack/spack/build_environment.py | 3 ++- lib/spack/spack/config.py | 3 ++- lib/spack/spack/environment.py | 3 ++- lib/spack/spack/mirror.py | 4 ++-- lib/spack/spack/spec.py | 4 ++-- lib/spack/spack/version.py | 3 ++- var/spack/repos/builtin/packages/adios/package.py | 3 ++- var/spack/repos/builtin/packages/arpack-ng/package.py | 3 ++- var/spack/repos/builtin/packages/astyle/package.py | 3 ++- var/spack/repos/builtin/packages/caliper/package.py | 3 ++- var/spack/repos/builtin/packages/cfitsio/package.py | 3 ++- var/spack/repos/builtin/packages/cube/package.py | 3 ++- var/spack/repos/builtin/packages/datamash/package.py | 3 ++- var/spack/repos/builtin/packages/eigen/package.py | 3 ++- var/spack/repos/builtin/packages/espresso/package.py | 3 ++- var/spack/repos/builtin/packages/gdal/package.py | 3 ++- var/spack/repos/builtin/packages/gdb/package.py | 3 ++- var/spack/repos/builtin/packages/gmsh/package.py | 3 ++- var/spack/repos/builtin/packages/lmod/package.py | 3 ++- var/spack/repos/builtin/packages/lua-luafilesystem/package.py | 3 ++- var/spack/repos/builtin/packages/mxml/package.py | 3 ++- var/spack/repos/builtin/packages/ncdu/package.py | 3 ++- var/spack/repos/builtin/packages/opari2/package.py | 3 ++- var/spack/repos/builtin/packages/openjpeg/package.py | 3 ++- var/spack/repos/builtin/packages/parallel/package.py | 3 ++- var/spack/repos/builtin/packages/petsc/package.py | 3 ++- var/spack/repos/builtin/packages/py-prettytable/package.py | 3 ++- var/spack/repos/builtin/packages/py-tuiview/package.py | 3 ++- var/spack/repos/builtin/packages/scorep/package.py | 3 ++- var/spack/repos/builtin/packages/screen/package.py | 3 ++- var/spack/repos/builtin/packages/swiftsim/package.py | 3 ++- var/spack/repos/builtin/packages/tau/package.py | 3 ++- var/spack/repos/builtin/packages/xerces-c/package.py | 3 ++- var/spack/repos/builtin/packages/zsh/package.py | 3 ++- 34 files changed, 68 insertions(+), 36 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 9fbf0536a4..9b5ed367d1 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -494,7 +494,8 @@ def fork(pkg, function, dirty=False): If something goes wrong, the child process is expected to print the error and the parent process will exit with error as well. If things go well, the child exits and the parent - carries on.""" + carries on. + """ try: pid = os.fork() diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index ebddfb328f..dec43726a0 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -117,7 +117,8 @@ a key in a configuration file. For example, this:: ... Will make Spack take compilers *only* from the user configuration, and -the site configuration will be ignored.""" +the site configuration will be ignored. +""" import copy import os diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index 64863510c3..b0eadef7a6 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -266,7 +266,8 @@ class EnvironmentModifications(object): parameters :param \*args: list of files to be sourced - :rtype: instance of EnvironmentModifications""" + :rtype: instance of EnvironmentModifications + """ env = EnvironmentModifications() # Check if the files are actually there diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 1e759848ea..2361fb5448 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -141,8 +141,8 @@ def create(path, specs, **kwargs): This routine iterates through all known package versions, and it creates specs for those versions. If the version satisfies any spec - in the specs list, it is downloaded and added to the mirror.""" - + in the specs list, it is downloaded and added to the mirror. + """ # Make sure nothing is in the way. if os.path.isfile(path): raise MirrorError("%s already exists and is a file." % path) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 19733c8a41..d8a7cf9d7b 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2110,8 +2110,8 @@ class Spec(object): *Example:* ``$_$@$+`` translates to the name, version, and options of the package, but no dependencies, arch, or compiler. - TODO: allow, e.g., $6# to customize short hash length - TODO: allow, e.g., $## for full hash. + TODO: allow, e.g., ``$6#`` to customize short hash length + TODO: allow, e.g., ``$##`` for full hash. """ color = kwargs.get('color', False) length = len(format_string) diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index fb87966d04..bc96dcd716 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -158,7 +158,8 @@ class Version(object): """A Version 'satisfies' another if it is at least as specific and has a common prefix. e.g., we want gcc@4.7.3 to satisfy a request for gcc@4.7 so that when a user asks to build with gcc@4.7, we can find - a suitable compiler.""" + a suitable compiler. + """ nself = len(self.version) nother = len(other.version) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 96fee2ac28..01834383b8 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -30,7 +30,8 @@ class Adios(Package): """The Adaptable IO System (ADIOS) provides a simple, flexible way for scientists to describe the data in their code that may need to be written, - read, or processed outside of the running simulation.""" + read, or processed outside of the running simulation. + """ homepage = "http://www.olcf.ornl.gov/center-projects/adios/" url = "https://github.com/ornladios/ADIOS/archive/v1.10.0.tar.gz" diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py index 2fa7608098..0e71125d41 100644 --- a/var/spack/repos/builtin/packages/arpack-ng/package.py +++ b/var/spack/repos/builtin/packages/arpack-ng/package.py @@ -50,7 +50,8 @@ class ArpackNg(Package): forked it and implemented their own modifications, arpack-ng aims to tackle this by providing a common repository and maintained versions. - arpack-ng is replacing arpack almost everywhere.""" + arpack-ng is replacing arpack almost everywhere. + """ homepage = 'https://github.com/opencollab/arpack-ng' url = 'https://github.com/opencollab/arpack-ng/archive/3.3.0.tar.gz' diff --git a/var/spack/repos/builtin/packages/astyle/package.py b/var/spack/repos/builtin/packages/astyle/package.py index 7b450352ec..eecdcfdad7 100644 --- a/var/spack/repos/builtin/packages/astyle/package.py +++ b/var/spack/repos/builtin/packages/astyle/package.py @@ -27,7 +27,8 @@ from spack import * class Astyle(Package): """A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, - Objective-C, C#, and Java Source Code.""" + 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" diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index 770037ab49..113bef61b8 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -28,7 +28,8 @@ from spack import * class Caliper(Package): """Caliper is a generic context annotation system. It gives programmers the ability to provide arbitrary program context information to (performance) - tools at runtime.""" + tools at runtime. + """ homepage = "https://github.com/LLNL/Caliper" url = "" diff --git a/var/spack/repos/builtin/packages/cfitsio/package.py b/var/spack/repos/builtin/packages/cfitsio/package.py index fc5ae0eef5..35d9662f6f 100644 --- a/var/spack/repos/builtin/packages/cfitsio/package.py +++ b/var/spack/repos/builtin/packages/cfitsio/package.py @@ -27,7 +27,8 @@ from spack import * class Cfitsio(Package): """CFITSIO is a library of C and Fortran subroutines for reading and writing - data files in FITS (Flexible Image Transport System) data format.""" + data files in FITS (Flexible Image Transport System) data format. + """ homepage = 'http://heasarc.gsfc.nasa.gov/fitsio/' diff --git a/var/spack/repos/builtin/packages/cube/package.py b/var/spack/repos/builtin/packages/cube/package.py index 55f71ef681..8c835b3886 100644 --- a/var/spack/repos/builtin/packages/cube/package.py +++ b/var/spack/repos/builtin/packages/cube/package.py @@ -30,7 +30,8 @@ class Cube(Package): multi-dimensional performance space consisting of the dimensions: - performance metric - call path - - system resource""" + - system resource + """ homepage = "http://www.scalasca.org/software/cube-4.x/download.html" url = "http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz" diff --git a/var/spack/repos/builtin/packages/datamash/package.py b/var/spack/repos/builtin/packages/datamash/package.py index 65773d1978..85adeca996 100644 --- a/var/spack/repos/builtin/packages/datamash/package.py +++ b/var/spack/repos/builtin/packages/datamash/package.py @@ -27,7 +27,8 @@ from spack import * class Datamash(Package): """GNU datamash is a command-line program which performs basic numeric, - textual and statistical operations on input textual data files.""" + textual and statistical operations on input textual data files. + """ homepage = "https://www.gnu.org/software/datamash/" url = "http://ftp.gnu.org/gnu/datamash/datamash-1.0.5.tar.gz" diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index 2dd43c0113..42dc24e373 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -27,7 +27,8 @@ from spack import * class Eigen(Package): """Eigen is a C++ template library for linear algebra matrices, - vectors, numerical solvers, and related algorithms.""" + vectors, numerical solvers, and related algorithms. + """ homepage = 'http://eigen.tuxfamily.org/' url = 'http://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2' diff --git a/var/spack/repos/builtin/packages/espresso/package.py b/var/spack/repos/builtin/packages/espresso/package.py index 1d8c9805b1..3dca1ba187 100644 --- a/var/spack/repos/builtin/packages/espresso/package.py +++ b/var/spack/repos/builtin/packages/espresso/package.py @@ -30,7 +30,8 @@ class Espresso(Package): """QE is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane - waves, and pseudopotentials.""" + waves, and pseudopotentials. + """ homepage = 'http://quantum-espresso.org' url = 'http://www.qe-forge.org/gf/download/frsrelease/204/912/espresso-5.3.0.tar.gz' diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index cf8dce4ef1..4f54b3a841 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -32,7 +32,8 @@ class Gdal(Package): 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""" + 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" diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index fdde649270..a14e166ed4 100644 --- a/var/spack/repos/builtin/packages/gdb/package.py +++ b/var/spack/repos/builtin/packages/gdb/package.py @@ -28,7 +28,8 @@ from spack import * class Gdb(Package): """GDB, the GNU Project debugger, allows you to see what is going on 'inside' another program while it executes -- or what another - program was doing at the moment it crashed.""" + program was doing at the moment it crashed. + """ homepage = "https://www.gnu.org/software/gdb" url = "http://ftp.gnu.org/gnu/gdb/gdb-7.10.tar.gz" diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py index 77e70d675c..1d375f2186 100644 --- a/var/spack/repos/builtin/packages/gmsh/package.py +++ b/var/spack/repos/builtin/packages/gmsh/package.py @@ -32,7 +32,8 @@ class Gmsh(Package): capabilities. Gmsh is built around four modules: geometry, mesh, solver and post-processing. The specification of any input to these modules is done either interactively using the graphical user interface or in ASCII text - files using Gmsh's own scripting language.""" + files using Gmsh's own scripting language. + """ homepage = 'http://gmsh.info' url = 'http://gmsh.info/src/gmsh-2.11.0-source.tgz' diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 15555e1200..c2daca80a5 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -32,7 +32,8 @@ class Lmod(Package): dynamically change the users' environment through modulefiles. This includes easily adding or removing directories to the PATH environment variable. Modulefiles for Library packages provide environment variables - that specify where the library and header files can be found.""" + that specify where the library and header files can be found. + """ homepage = 'https://www.tacc.utexas.edu/research-development/tacc-projects/lmod' url = 'https://github.com/TACC/Lmod/archive/6.4.1.tar.gz' diff --git a/var/spack/repos/builtin/packages/lua-luafilesystem/package.py b/var/spack/repos/builtin/packages/lua-luafilesystem/package.py index dca7c247fa..9e0e449813 100644 --- a/var/spack/repos/builtin/packages/lua-luafilesystem/package.py +++ b/var/spack/repos/builtin/packages/lua-luafilesystem/package.py @@ -32,7 +32,8 @@ class LuaLuafilesystem(Package): LuaFileSystem offers a portable way to access the underlying directory structure and file attributes. - LuaFileSystem is free software and uses the same license as Lua 5.1""" + LuaFileSystem is free software and uses the same license as Lua 5.1 + """ homepage = 'http://keplerproject.github.io/luafilesystem' url = 'https://github.com/keplerproject/luafilesystem/archive/v_1_6_3.tar.gz' diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index db2e7eb441..29e3b27d6e 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -28,7 +28,8 @@ from spack import * class Mxml(Package): """Mini-XML is a small XML library that you can use to read and write XML and XML-like data files in your application without requiring large - non-standard libraries.""" + non-standard libraries. + """ homepage = "http://www.msweet.org" url = "http://www.msweet.org/files/project3/mxml-2.9.tar.gz" diff --git a/var/spack/repos/builtin/packages/ncdu/package.py b/var/spack/repos/builtin/packages/ncdu/package.py index a22671250e..0842a592cc 100644 --- a/var/spack/repos/builtin/packages/ncdu/package.py +++ b/var/spack/repos/builtin/packages/ncdu/package.py @@ -30,7 +30,8 @@ class Ncdu(Package): to find space hogs on a remote server where you don't have an entire gaphical setup available, but it is a useful tool even on regular desktop systems. Ncdu aims to be fast, simple and easy to use, and should be able - to run in any minimal POSIX-like environment with ncurses installed.""" + to run in any minimal POSIX-like environment with ncurses installed. + """ homepage = "http://dev.yorhel.nl/ncdu" url = "http://dev.yorhel.nl/download/ncdu-1.11.tar.gz" diff --git a/var/spack/repos/builtin/packages/opari2/package.py b/var/spack/repos/builtin/packages/opari2/package.py index b270931d0d..20c67716a4 100644 --- a/var/spack/repos/builtin/packages/opari2/package.py +++ b/var/spack/repos/builtin/packages/opari2/package.py @@ -33,7 +33,8 @@ class Opari2(Package): as well as the usage of pre-instrumented libraries. Furthermore, an efficient way of tracking parent-child relationships was added. Additionally, we extended OPARI2 to support instrumentation of OpenMP 3.0 - tied tasks.""" + tied tasks. + """ homepage = "http://www.vi-hps.org/projects/score-p" url = "http://www.vi-hps.org/upload/packages/opari2/opari2-1.1.2.tar.gz" diff --git a/var/spack/repos/builtin/packages/openjpeg/package.py b/var/spack/repos/builtin/packages/openjpeg/package.py index 6ba368a0f7..fc505e19a9 100644 --- a/var/spack/repos/builtin/packages/openjpeg/package.py +++ b/var/spack/repos/builtin/packages/openjpeg/package.py @@ -31,7 +31,8 @@ class Openjpeg(Package): 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.""" + 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" diff --git a/var/spack/repos/builtin/packages/parallel/package.py b/var/spack/repos/builtin/packages/parallel/package.py index 189a5a6054..81c0195651 100644 --- a/var/spack/repos/builtin/packages/parallel/package.py +++ b/var/spack/repos/builtin/packages/parallel/package.py @@ -28,7 +28,8 @@ from spack import * class Parallel(Package): """GNU parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small - script that has to be run for each of the lines in the input.""" + script that has to be run for each of the lines in the input. + """ homepage = "http://www.gnu.org/software/parallel/" url = "http://ftp.gnu.org/gnu/parallel/parallel-20160422.tar.bz2" diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 794633b929..73091bb182 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -29,7 +29,8 @@ from spack import * class Petsc(Package): """PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial - differential equations.""" + differential equations. + """ homepage = "http://www.mcs.anl.gov/petsc/index.html" url = "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.5.3.tar.gz" diff --git a/var/spack/repos/builtin/packages/py-prettytable/package.py b/var/spack/repos/builtin/packages/py-prettytable/package.py index 9d3edd4abb..fa1c17ae8c 100644 --- a/var/spack/repos/builtin/packages/py-prettytable/package.py +++ b/var/spack/repos/builtin/packages/py-prettytable/package.py @@ -28,7 +28,8 @@ from spack import * class PyPrettytable(Package): """PrettyTable is a simple Python library designed to make it quick and easy to represent tabular data in visually - appealing ASCII tables.""" + appealing ASCII tables. + """ homepage = "https://code.google.com/archive/p/prettytable/" url = "https://pypi.python.org/packages/e0/a1/36203205f77ccf98f3c6cf17cf068c972e6458d7e58509ca66da949ca347/prettytable-0.7.2.tar.gz" diff --git a/var/spack/repos/builtin/packages/py-tuiview/package.py b/var/spack/repos/builtin/packages/py-tuiview/package.py index a372ec2b67..5caf3ff143 100644 --- a/var/spack/repos/builtin/packages/py-tuiview/package.py +++ b/var/spack/repos/builtin/packages/py-tuiview/package.py @@ -27,7 +27,8 @@ from spack import * class PyTuiview(Package): """TuiView is a lightweight raster GIS with powerful raster attribute - table manipulation abilities.""" + table manipulation abilities. + """ homepage = "https://bitbucket.org/chchrsc/tuiview" url = "https://bitbucket.org/chchrsc/tuiview/get/tuiview-1.1.7.tar.gz" diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index d2efd23c37..e0f7972304 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -28,7 +28,8 @@ from spack import * class Scorep(Package): """The Score-P measurement infrastructure is a highly scalable and easy-to-use tool suite for profiling, event tracing, and online analysis - of HPC applications.""" + of HPC applications. + """ homepage = "http://www.vi-hps.org/projects/score-p" url = "http://www.vi-hps.org/upload/packages/scorep/scorep-1.2.3.tar.gz" diff --git a/var/spack/repos/builtin/packages/screen/package.py b/var/spack/repos/builtin/packages/screen/package.py index eeaebcbfb7..7edfb44a4d 100644 --- a/var/spack/repos/builtin/packages/screen/package.py +++ b/var/spack/repos/builtin/packages/screen/package.py @@ -27,7 +27,8 @@ from spack import * class Screen(Package): """Screen is a full-screen window manager that multiplexes a physical - terminal between several processes, typically interactive shells.""" + terminal between several processes, typically interactive shells. + """ homepage = "https://www.gnu.org/software/screen/" url = "http://ftp.gnu.org/gnu/screen/screen-4.3.1.tar.gz" diff --git a/var/spack/repos/builtin/packages/swiftsim/package.py b/var/spack/repos/builtin/packages/swiftsim/package.py index ec5e74bd15..c591c48d19 100644 --- a/var/spack/repos/builtin/packages/swiftsim/package.py +++ b/var/spack/repos/builtin/packages/swiftsim/package.py @@ -29,7 +29,8 @@ import llnl.util.tty as tty class Swiftsim(Package): """SPH With Inter-dependent Fine-grained Tasking (SWIFT) provides astrophysicists with a state of the art framework to perform - particle based simulations.""" + particle based simulations. + """ homepage = 'http://icc.dur.ac.uk/swift/' url = 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0' diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index c70bf31018..1801b41c37 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -31,7 +31,8 @@ from llnl.util.filesystem import join_path class Tau(Package): """A portable profiling and tracing toolkit for performance analysis of parallel programs written in Fortran, C, C++, UPC, - Java, Python.""" + Java, Python. + """ homepage = "http://www.cs.uoregon.edu/research/tau" url = "https://www.cs.uoregon.edu/research/tau/tau_releases/tau-2.25.tar.gz" diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py index 61c7625f25..9f3ad8a4dc 100644 --- a/var/spack/repos/builtin/packages/xerces-c/package.py +++ b/var/spack/repos/builtin/packages/xerces-c/package.py @@ -30,7 +30,8 @@ class XercesC(Package): C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data. A shared library is provided for parsing, generating, manipulating, and validating XML documents using the DOM, SAX, and SAX2 - APIs.""" + APIs. + """ homepage = "https://xerces.apache.org/xerces-c" url = "https://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.1.4.tar.bz2" diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py index b65866b1fd..a70d307be9 100644 --- a/var/spack/repos/builtin/packages/zsh/package.py +++ b/var/spack/repos/builtin/packages/zsh/package.py @@ -28,7 +28,8 @@ from spack import * class Zsh(Package): """Zsh is a shell designed for interactive use, although it is also a powerful scripting language. Many of the useful features of bash, ksh, and - tcsh were incorporated into zsh; many original features were added.""" + tcsh were incorporated into zsh; many original features were added. + """ homepage = "http://www.zsh.org" url = "http://downloads.sourceforge.net/project/zsh/zsh/5.1.1/zsh-5.1.1.tar.gz" -- cgit v1.2.3-60-g2f50 From fc748eb3d06db5fd6d72c7b1f9247fe9c05b900e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 11:28:17 -0700 Subject: Exclude spack.__all__ from documentation. Everything in the __all__ list in the spack module is from some other module, so only do their documentation in their original location. This also avoids issues like the fact that some directive names shadow spack core module names. --- lib/spack/docs/conf.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 1416074356..a702e70e51 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -47,6 +47,7 @@ from glob import glob # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('exts')) sys.path.insert(0, os.path.abspath('../external')) +sys.path.append(os.path.abspath('../spack')) # Add the Spack bin directory to the path so that we can use its output in docs. spack_root = '../../..' @@ -82,6 +83,27 @@ with open('command_index.rst', 'a') as index: for cmd in command_names: index.write(' * :ref:`%s`\n' % cmd) +# +# Exclude everything in spack.__all__ from indexing. All of these +# symbols are imported from elsewhere in spack; their inclusion in +# __all__ simply allows package authors to use `from spack import *`. +# Excluding them ensures they're only documented in their "real" module. +# +# This also avoids issues where some of these symbols shadow core spack +# modules. Sphinx will complain about duplicate docs when this happens. +# +import fileinput, spack +handling_spack = False +for line in fileinput.input('spack.rst', inplace=1): + if handling_spack: + if not line.startswith(' :noindex:'): + print ' :noindex: %s' % ' '.join(spack.__all__) + handling_spack = False + + if line.startswith('.. automodule::'): + handling_spack = (line == '.. automodule:: spack\n') + + print line, # Set an environment variable so that colify will print output like it would to # a terminal. -- cgit v1.2.3-60-g2f50 From d9c51915638a410ce4dd8fd8bf602f5f10a6500c Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 19:57:33 -0700 Subject: Fix issue with path to Spack. --- lib/spack/docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index a702e70e51..b23e365960 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -52,7 +52,7 @@ sys.path.append(os.path.abspath('../spack')) # Add the Spack bin directory to the path so that we can use its output in docs. spack_root = '../../..' os.environ['SPACK_ROOT'] = spack_root -os.environ['PATH'] += os.pathsep + '$SPACK_ROOT/bin' +os.environ['PATH'] += '%s%s/bin' % (os.pathsep, spack_root) # Get the spack version for use in the docs spack_version = subprocess.Popen( -- cgit v1.2.3-60-g2f50 From c470ffe1ac0fd15a88637493c82bbaad5e36258f Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 20:07:21 -0700 Subject: Install graphviz before build. --- .travis.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.travis.yml b/.travis.yml index f9bf19148f..7961133c1a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,12 @@ matrix: # Use new Travis infrastructure (Docker can't sudo yet) sudo: false +# Docs need graphviz to build +addons: + apt: + packages: + - graphviz + # Install various dependencies install: - pip install coveralls -- cgit v1.2.3-60-g2f50 From 176a84a8285b4117c9465f92d323dbb6aa4eb82c Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 20:30:43 -0700 Subject: Don't test sphinx-generated conf.py for flake8 issues. --- lib/spack/docs/conf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index b23e365960..95549e3b1e 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -1,3 +1,4 @@ +# flake8: noqa ############################################################################## # Copyright (c) 2013, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. -- cgit v1.2.3-60-g2f50 From 41675e5ed66e80ca4bc0ed5dfc77f7c9ddac81d8 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 01:27:49 -0700 Subject: sorted command index, better colification. --- lib/spack/docs/conf.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 95549e3b1e..90a08a154e 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -43,6 +43,8 @@ import shutil import subprocess from glob import glob +# -- Spack customizations ----------------------------------------------------- + # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. @@ -60,6 +62,10 @@ spack_version = subprocess.Popen( [spack_root + '/bin/spack', '-V'], stderr=subprocess.PIPE).communicate()[1].strip().split('.') +# Set an environment variable so that colify will print output like it would to +# a terminal. +os.environ['COLIFY_SIZE'] = '25x80' + # # Generate package list using spack command # @@ -81,7 +87,7 @@ for filename in glob('*rst'): shutil.copy('command_index.in', 'command_index.rst') with open('command_index.rst', 'a') as index: index.write('\n') - for cmd in command_names: + for cmd in sorted(command_names): index.write(' * :ref:`%s`\n' % cmd) # @@ -106,10 +112,6 @@ for line in fileinput.input('spack.rst', inplace=1): print line, -# Set an environment variable so that colify will print output like it would to -# a terminal. -os.environ['COLIFY_SIZE'] = '25x80' - # Enable todo items todo_include_todos = True -- cgit v1.2.3-60-g2f50 From 05545a2528c5187d23329d3c691e66949e7d95b5 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 01:43:48 -0700 Subject: test. --- lib/spack/docs/conf.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 90a08a154e..de84d0e5c8 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -70,6 +70,9 @@ os.environ['COLIFY_SIZE'] = '25x80' # Generate package list using spack command # with open('package_list.rst', 'w') as plist_file: + subprocess.check_output( + [spack_root + '/bin/spack', 'package-list']) + subprocess.Popen( [spack_root + '/bin/spack', 'package-list'], stdout=plist_file) -- cgit v1.2.3-60-g2f50 From 32834dd67d20f2a58514bc9b9cd511e1a78d431e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 20:50:14 -0700 Subject: fix sys.path in conf.py --- lib/spack/docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index de84d0e5c8..06a2523ca2 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -50,7 +50,7 @@ from glob import glob # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('exts')) sys.path.insert(0, os.path.abspath('../external')) -sys.path.append(os.path.abspath('../spack')) +sys.path.append(os.path.abspath('..')) # Add the Spack bin directory to the path so that we can use its output in docs. spack_root = '../../..' -- cgit v1.2.3-60-g2f50 From 3a9388b43a435ac00bc6ea6aa154440e4f8df593 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 21:02:34 -0700 Subject: Move sphinx-apidoc into conf.py, too. --- lib/spack/docs/.gitignore | 1 + lib/spack/docs/Makefile | 2 +- lib/spack/docs/conf.py | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/spack/docs/.gitignore b/lib/spack/docs/.gitignore index 26c343d3eb..0bbf78cce0 100644 --- a/lib/spack/docs/.gitignore +++ b/lib/spack/docs/.gitignore @@ -1,4 +1,5 @@ package_list.rst command_index.rst spack*.rst +modules.rst _build diff --git a/lib/spack/docs/Makefile b/lib/spack/docs/Makefile index 302ffd4c97..f9eae29187 100644 --- a/lib/spack/docs/Makefile +++ b/lib/spack/docs/Makefile @@ -74,7 +74,7 @@ clean: -rm -f package_list.rst command_index.rst -rm -rf $(BUILDDIR)/* $(APIDOC_FILES) -html: apidoc +html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 06a2523ca2..c0dccaa6ba 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -42,6 +42,7 @@ import re import shutil import subprocess from glob import glob +from sphinx.apidoc import main as sphinx_apidoc # -- Spack customizations ----------------------------------------------------- @@ -93,6 +94,10 @@ with open('command_index.rst', 'a') as index: for cmd in sorted(command_names): index.write(' * :ref:`%s`\n' % cmd) + +# Run sphinx-apidoc +sphinx_apidoc(['-T', '-o', '.', '../spack']) + # # Exclude everything in spack.__all__ from indexing. All of these # symbols are imported from elsewhere in spack; their inclusion in -- cgit v1.2.3-60-g2f50 From 8709e1c1c3213ee8b35b83a8c34923ded9658eb3 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 21:19:31 -0700 Subject: Move docs to readthedocs.io - Docs are now visible immediately, and we don't have to push them separately. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cf6f008ea6..0b6127c541 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ written in pure Python, and specs allow package authors to write a single build script for many different builds of the same package. See the -[Feature Overview](http://software.llnl.gov/spack/features.html) +[Feature Overview](http://spack.readthedocs.io/latest/features.html) for examples and highlights. To install spack and install your first package: @@ -32,7 +32,7 @@ To install spack and install your first package: Documentation ---------------- -[**Full documentation**](http://software.llnl.gov/spack) for Spack is +[**Full documentation**](http://spack.readthedocs.io/) for Spack is the first place to look. See also: -- cgit v1.2.3-60-g2f50 From 0ff048521ba361538dc4734e1c71680d870d50b7 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 30 Aug 2016 22:15:13 -0700 Subject: Fix modules.rst doc build warning. --- lib/spack/docs/Makefile | 2 +- lib/spack/docs/conf.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/spack/docs/Makefile b/lib/spack/docs/Makefile index f9eae29187..b0842373ab 100644 --- a/lib/spack/docs/Makefile +++ b/lib/spack/docs/Makefile @@ -71,7 +71,7 @@ help: @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: - -rm -f package_list.rst command_index.rst + -rm -f package_list.rst command_index.rst modules.rst -rm -rf $(BUILDDIR)/* $(APIDOC_FILES) html: diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index c0dccaa6ba..43d37f1526 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -71,9 +71,6 @@ os.environ['COLIFY_SIZE'] = '25x80' # Generate package list using spack command # with open('package_list.rst', 'w') as plist_file: - subprocess.check_output( - [spack_root + '/bin/spack', 'package-list']) - subprocess.Popen( [spack_root + '/bin/spack', 'package-list'], stdout=plist_file) @@ -97,6 +94,7 @@ with open('command_index.rst', 'a') as index: # Run sphinx-apidoc sphinx_apidoc(['-T', '-o', '.', '../spack']) +os.remove('modules.rst') # # Exclude everything in spack.__all__ from indexing. All of these -- cgit v1.2.3-60-g2f50 From 932cd6fa19d70e6be707c9d03f8f3b83617fba2f Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 31 Aug 2016 12:41:04 -0400 Subject: Switch lzo download from https to http lzo's download server does not present a valid certificate, so that downloads via https are failing. Spack's MD5 checksum still ensure a safe download. Closes #1675. --- var/spack/repos/builtin/packages/lzo/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/lzo/package.py b/var/spack/repos/builtin/packages/lzo/package.py index 172e57d0cd..1c44ced4d4 100644 --- a/var/spack/repos/builtin/packages/lzo/package.py +++ b/var/spack/repos/builtin/packages/lzo/package.py @@ -29,7 +29,7 @@ class Lzo(Package): """Real-time data compression library""" homepage = 'https://www.oberhumer.com/opensource/lzo/' - url = 'https://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz' + url = 'http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz' version('2.09', 'c7ffc9a103afe2d1bba0b015e7aa887f') version('2.08', 'fcec64c26a0f4f4901468f360029678f') -- cgit v1.2.3-60-g2f50 From efc570afabf6abd35ea457871a747f313e642438 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 23 Aug 2016 13:53:08 -0400 Subject: Expand/clarify description of dependency types --- lib/spack/docs/packaging_guide.rst | 39 ++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 08d39a266a..6936b5e423 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1345,20 +1345,31 @@ Additionally, dependencies may be specified for specific use cases: The dependency types are: - * **"build"**: made available during the project's build. The package will - be added to ``PATH``, the compiler include paths, and ``PYTHONPATH``. - Other projects which depend on this one will not have these modified - (building project X doesn't need project Y's build dependencies). - * **"link"**: the project is linked to by the project. The package will be - added to the current package's ``rpath``. - * **"run"**: the project is used by the project at runtime. The package will - be added to ``PATH`` and ``PYTHONPATH``. - -If not specified, ``type`` is assumed to be ``("build", "link")``. This is the -common case for compiled language usage. Also available are the aliases -``"alldeps"`` for all dependency types and ``"nolink"`` (``("build", "run")``) -for use by dependencies which are not expressed via a linker (e.g., Python or -Lua module loading). + * **"build"**: The dependency package is made available during the + package's build. While the package is built, the dependency + package's install directory will be added to ``PATH``, the + compiler include and library paths, as well as ``PYTHONPATH``. + This only applies during this package's build; other packages + which depend on this one will not know about the dependency + package. In other words, building another project Y doesn't know + about this project X's build dependencies. + * **"link"**: The dependency package is linked against by this + package, presumably via shared libraries. The dependency package + will be added to this package's run-time library search path + ``rpath``. + * **"run"**: The dependency package is used by this package at run + time. The dependency package will be added to both ``PATH`` and + ``PYTHONPATH`` at run time, but not during build time. **"link"** + and **"run"** are similar in that they both describe a dependency + that exists when the package is used, but they differ in the + mechanism: **"link"** is via shared libraries, and **"run"** via + an explicit search. + +If not specified, ``type`` is assumed to be ``("build", "link")``. +This is the common case for compiled language usage. Also available +are the aliases ``"alldeps"`` for all dependency types combined, and +``"nolink"`` (``("build", "run")``) for use by dependencies which are +not expressed via a linker (e.g., Python or Lua module loading). .. _setup-dependent-environment: -- cgit v1.2.3-60-g2f50 From 4a87d4ab8ed873e6450df06512e09f815a276cd8 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 31 Aug 2016 19:40:22 -0700 Subject: Make gh-pages redirect to readthedocs.io --- lib/spack/docs/Makefile | 13 ++++++++++++- lib/spack/docs/_gh_pages_redirect/.nojekyll | 0 lib/spack/docs/_gh_pages_redirect/index.html | 10 ++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 lib/spack/docs/_gh_pages_redirect/.nojekyll create mode 100644 lib/spack/docs/_gh_pages_redirect/index.html diff --git a/lib/spack/docs/Makefile b/lib/spack/docs/Makefile index b0842373ab..95d26041b7 100644 --- a/lib/spack/docs/Makefile +++ b/lib/spack/docs/Makefile @@ -40,9 +40,20 @@ gh-pages: _build/html git push -f $$root master:gh-pages && \ rm -rf .git +# This version makes gh-pages into a single page that redirects +# to spack.readthedocs.io +gh-pages-redirect: + root="$$(git rev-parse --show-toplevel)" && \ + cd _gh_pages_redirect && \ + rm -rf .git && \ + git init && \ + git add . && \ + git commit -m "Spack Documentation" && \ + git push -f $$root master:gh-pages && \ + rm -rf .git + upload: rsync -avz --rsh=ssh --delete _build/html/ cab:/usr/global/web-pages/lc/www/adept/docs/spack - git push -f origin gh-pages git push -f github gh-pages apidoc: diff --git a/lib/spack/docs/_gh_pages_redirect/.nojekyll b/lib/spack/docs/_gh_pages_redirect/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/spack/docs/_gh_pages_redirect/index.html b/lib/spack/docs/_gh_pages_redirect/index.html new file mode 100644 index 0000000000..9c456abdaa --- /dev/null +++ b/lib/spack/docs/_gh_pages_redirect/index.html @@ -0,0 +1,10 @@ + + + + + +

+ This page has moved to http://spack.readthedocs.io/ +

+ + -- cgit v1.2.3-60-g2f50 From c46a15b574bcf86e93fc5779b6f1957a8b407173 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 1 Sep 2016 11:09:28 -0700 Subject: Fix dependency bug in database. Fixes #1265, #1320. --- lib/spack/spack/database.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index f3dcdef0a9..1240e9a658 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -436,7 +436,7 @@ class Database(object): self._data[key] = InstallRecord(spec.copy(), path, installed) - for dep in spec.dependencies('link'): + for dep in spec.dependencies(('link', 'run')): self._increment_ref_count(dep) self._data[key].ref_count += 1 -- cgit v1.2.3-60-g2f50 From a8aad95d41f0f1d4677281dc443b2c996dc4e1eb Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 16 Aug 2016 11:29:36 -0700 Subject: Specs now cache result of "fast" in-memory hash. - Hash causes major slowdown for reading/setting up large DBs - New version caches hash for concrete specs, which includes all specs in the install DB --- lib/spack/spack/spec.py | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index d8a7cf9d7b..bc7250eec5 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -504,6 +504,7 @@ class Spec(object): self.variants.spec = self self.namespace = other.namespace self._hash = other._hash + self._cmp_key_cache = other._cmp_key_cache # Specs are by default not assumed to be normal, but in some # cases we've read them from a file want to assume normal. @@ -858,9 +859,10 @@ class Spec(object): # Edge traversal yields but skips children of visited nodes if not (key in visited and cover == 'edges'): # This code determines direction and yields the children/parents + successors = deps if direction == 'parents': - successors = self.dependents_dict() + successors = self.dependents_dict() # TODO: deptype? visited.add(key) for name in sorted(successors): @@ -1278,15 +1280,15 @@ class Spec(object): # Mark everything in the spec as concrete, as well. self._mark_concrete() - def _mark_concrete(self): + def _mark_concrete(self, value=True): """Mark this spec and its dependencies as concrete. Only for internal use -- client code should use "concretize" unless there is a need to force a spec to be concrete. """ for s in self.traverse(deptype_query=alldeps): - s._normal = True - s._concrete = True + s._normal = value + s._concrete = value def concretized(self): """This is a non-destructive version of concretize(). First clones, @@ -1533,6 +1535,10 @@ class Spec(object): if self._normal and not force: return False + # avoid any assumptions about concreteness when forced + if force: + self._mark_concrete(False) + # Ensure first that all packages & compilers in the DAG exist. self.validate_names() # Get all the dependencies into one DependencyMap @@ -2059,10 +2065,17 @@ class Spec(object): 1. A tuple describing this node in the DAG. 2. The hash of each of this node's dependencies' cmp_keys. """ - dep_dict = self.dependencies_dict(deptype=('link', 'run')) - return self._cmp_node() + ( - tuple(hash(dep_dict[name]) - for name in sorted(dep_dict)),) + if self._cmp_key_cache: + return self._cmp_key_cache + + dep_tuple = tuple( + (d.spec.name, hash(d.spec), tuple(sorted(d.deptypes))) + for name, d in sorted(self._dependencies.items())) + + key = (self._cmp_node(), dep_tuple) + if self._concrete: + self._cmp_key_cache = key + return key def colorized(self): return colorize_spec(self) @@ -2457,6 +2470,7 @@ class SpecParser(spack.parse.Parser): spec._dependencies = DependencyMap() spec.namespace = spec_namespace spec._hash = None + spec._cmp_key_cache = None spec._normal = False spec._concrete = False -- cgit v1.2.3-60-g2f50 From 409e7a2e64f1010e961d23e2f3cc97a10180a95f Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 16 Aug 2016 13:13:04 -0700 Subject: Faster database loading. - use a 3-pass algorithm to load the installed package DAG. - avoid redundant hashing/comparing on load. --- lib/spack/spack/database.py | 54 +++++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 1240e9a658..ba29b8da30 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -198,7 +198,7 @@ class Database(object): except YAMLError as e: raise SpackYAMLError("error writing YAML database:", str(e)) - def _read_spec_from_yaml(self, hash_key, installs, parent_key=None): + def _read_spec_from_yaml(self, hash_key, installs): """Recursively construct a spec from a hash in a YAML database. Does not do any locking. @@ -212,19 +212,27 @@ class Database(object): # Build spec from dict first. spec = Spec.from_node_dict(spec_dict) + return spec + def _assign_dependencies(self, hash_key, installs, data): # Add dependencies from other records in the install DB to # form a full spec. + spec = data[hash_key].spec + spec_dict = installs[hash_key]['spec'] + if 'dependencies' in spec_dict[spec.name]: yaml_deps = spec_dict[spec.name]['dependencies'] for dname, dhash, dtypes in Spec.read_yaml_dep_specs(yaml_deps): - child = self._read_spec_from_yaml(dhash, installs, hash_key) - spec._add_dependency(child, dtypes) + if dhash not in data: + tty.warn("Missing dependency not in database: ", + "%s needs %s-%s" % ( + spec.format('$_$#'), dname, dhash[:7])) + continue - # Specs from the database need to be marked concrete because - # they represent actual installations. - spec._mark_concrete() - return spec + # defensive copy (not sure everything handles extra + # parent links yet) + child = data[dhash].spec + spec._add_dependency(child, dtypes) def _read_from_yaml(self, stream): """ @@ -267,22 +275,22 @@ class Database(object): self.reindex(spack.install_layout) installs = dict((k, v.to_dict()) for k, v in self._data.items()) - # Iterate through database and check each record. + # Build up the database in three passes: + # + # 1. Read in all specs without dependencies. + # 2. Hook dependencies up among specs. + # 3. Mark all specs concrete. + # + # The database is built up so that ALL specs in it share nodes + # (i.e., its specs are a true Merkle DAG, unlike most specs.) + + # Pass 1: Iterate through database and build specs w/o dependencies data = {} for hash_key, rec in installs.items(): try: # This constructs a spec DAG from the list of all installs spec = self._read_spec_from_yaml(hash_key, installs) - # Validate the spec by ensuring the stored and actual - # hashes are the same. - spec_hash = spec.dag_hash() - if not spec_hash == hash_key: - tty.warn( - "Hash mismatch in database: %s -> spec with hash %s" % - (hash_key, spec_hash)) - continue # TODO: is skipping the right thing to do? - # Insert the brand new spec in the database. Each # spec has its own copies of its dependency specs. # TODO: would a more immmutable spec implementation simplify @@ -296,6 +304,18 @@ class Database(object): "cause: %s: %s" % (type(e).__name__, str(e))) raise + # Pass 2: Assign dependencies once all specs are created. + for hash_key in data: + self._assign_dependencies(hash_key, installs, data) + + # Pass 3: Mark all specs concrete. Specs representing real + # installations must be explicitly marked. + # We do this *after* all dependencies are connected because if we + # do it *while* we're constructing specs,it causes hashes to be + # cached prematurely. + for hash_key, rec in data.items(): + rec.spec._mark_concrete() + self._data = data def reindex(self, directory_layout): -- cgit v1.2.3-60-g2f50 From 235a045d080dfe06e1738a23c1907f4221b66733 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 16 Aug 2016 13:13:59 -0700 Subject: Add option to copy only certain deptypes to Spec.copy() - can now pass these to Spec.copy() and Spec._dup(): - deps=True - deps=False - deps=(list of deptypes) - Makes it easy to filter out only part of a spec. --- lib/spack/spack/spec.py | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index bc7250eec5..99446d21dd 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1871,7 +1871,7 @@ class Spec(object): """Return list of any virtual deps in this spec.""" return [spec for spec in self.traverse() if spec.virtual] - def _dup(self, other, **kwargs): + def _dup(self, other, deps=True, cleardeps=True): """Copy the spec other into self. This is an overwriting copy. It does not copy any dependents (parents), but by default copies dependencies. @@ -1902,7 +1902,7 @@ class Spec(object): self.versions = other.versions.copy() self.architecture = other.architecture self.compiler = other.compiler.copy() if other.compiler else None - if kwargs.get('cleardeps', True): + if cleardeps: self._dependents = DependencyMap() self._dependencies = DependencyMap() self.compiler_flags = other.compiler_flags.copy() @@ -1912,19 +1912,15 @@ class Spec(object): self.external_module = other.external_module self.namespace = other.namespace self._hash = other._hash + self._cmp_key_cache = other._cmp_key_cache # If we copy dependencies, preserve DAG structure in the new spec - if kwargs.get('deps', True): + if deps: # This copies the deps from other using _dup(deps=False) - # XXX(deptype): We can keep different instances of specs here iff - # it is only a 'build' dependency (from its parent). - # All other instances must be shared (due to symbol - # and PATH contention). These should probably search - # for any existing installation which can satisfy the - # build and latch onto that because if 3 things need - # the same build dependency and it is *not* - # available, we only want to build it once. - new_nodes = other.flat_dependencies(deptype_query=alldeps) + deptypes = alldeps + if isinstance(deps, (tuple, list)): + deptypes = deps + new_nodes = other.flat_dependencies(deptypes=deptypes) new_nodes[self.name] = self stack = [other] @@ -1933,6 +1929,9 @@ class Spec(object): new_spec = new_nodes[cur_spec.name] for depspec in cur_spec._dependencies.values(): + if not any(d in deptypes for d in depspec.deptypes): + continue + stack.append(depspec.spec) # XXX(deptype): add any new deptypes that may have appeared @@ -1948,13 +1947,22 @@ class Spec(object): self.external_module = other.external_module return changed - def copy(self, **kwargs): + def copy(self, deps=True): """Return a copy of this spec. - By default, returns a deep copy. Supply dependencies=False - to get a shallow copy. + + By default, returns a deep copy. To control how dependencies are + copied, supply: + + deps=True: deep copy + + deps=False: shallow copy (no dependencies) + + deps=('link', 'build'): + only build and link dependencies. Similar for other deptypes. + """ clone = Spec.__new__(Spec) - clone._dup(self, **kwargs) + clone._dup(self, deps=deps) return clone @property -- cgit v1.2.3-60-g2f50 From bee5c055682cfcbac294c19890cdcdd0b20cc03d Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 16 Aug 2016 13:14:58 -0700 Subject: Update tests to reflect new in-memory hashing vs. coarser dag_hash. - Spack currently not hashing build deps (to allow more reuse of packages and less frequent re-installing) - Fast in-memory hash should still hash *all* deptypes, and installed specs will only reflect link and run deps. - We'll revert this when we can concretize more liberally based on what is already installed. --- lib/spack/spack/test/directory_layout.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/test/directory_layout.py b/lib/spack/spack/test/directory_layout.py index 2d0565acae..fdaa43464b 100644 --- a/lib/spack/spack/test/directory_layout.py +++ b/lib/spack/spack/test/directory_layout.py @@ -91,22 +91,33 @@ class DirectoryLayoutTest(MockPackagesTest): # Make sure spec file can be read back in to get the original spec spec_from_file = self.layout.read_spec(spec_path) - self.assertEqual(spec, spec_from_file) - self.assertTrue(spec.eq_dag, spec_from_file) + + # currently we don't store build dependency information when + # we write out specs to the filesystem. + + # TODO: fix this when we can concretize more loosely based on + # TODO: what is installed. We currently omit these to + # TODO: increase reuse of build dependencies. + stored_deptypes = ('link', 'run') + expected = spec.copy(deps=stored_deptypes) + self.assertEqual(expected, spec_from_file) + self.assertTrue(expected.eq_dag, spec_from_file) self.assertTrue(spec_from_file.concrete) # Ensure that specs that come out "normal" are really normal. with open(spec_path) as spec_file: read_separately = Spec.from_yaml(spec_file.read()) - read_separately.normalize() - self.assertEqual(read_separately, spec_from_file) + # TODO: revise this when build deps are in dag_hash + norm = read_separately.normalized().copy(deps=stored_deptypes) + self.assertEqual(norm, spec_from_file) - read_separately.concretize() - self.assertEqual(read_separately, spec_from_file) + # TODO: revise this when build deps are in dag_hash + conc = read_separately.concretized().copy(deps=stored_deptypes) + self.assertEqual(conc, spec_from_file) # Make sure the hash of the read-in spec is the same - self.assertEqual(spec.dag_hash(), spec_from_file.dag_hash()) + self.assertEqual(expected.dag_hash(), spec_from_file.dag_hash()) # Ensure directories are properly removed self.layout.remove_install_directory(spec) -- cgit v1.2.3-60-g2f50 From 69b68153a173f6a6f273755c9f56da452cb5970e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 1 Sep 2016 11:13:26 -0700 Subject: Fix `spack reindex` so that it will work if DB is corrupt (duh). - Transaction logic had gotten complicated -- DB would not reindex when corrupt, rather the error would be reported (ugh). - DB will now print the error and force a rebuild when errors are detected reading the old databse. --- lib/spack/spack/database.py | 61 +++++++++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index ba29b8da30..043e3b953d 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -164,6 +164,9 @@ class Database(object): self.lock = Lock(self._lock_path) self._data = {} + # whether there was an error at the start of a read transaction + self._error = None + def write_transaction(self, timeout=_db_lock_timeout): """Get a write lock context manager for use in a `with` block.""" return WriteTransaction(self.lock, self._read, self._write, timeout) @@ -256,7 +259,8 @@ class Database(object): def check(cond, msg): if not cond: - raise CorruptDatabaseError(self._index_path, msg) + raise CorruptDatabaseError( + "Spack database is corrupt: %s" % msg, self._index_path) check('database' in yfile, "No 'database' attribute in YAML.") @@ -275,6 +279,12 @@ class Database(object): self.reindex(spack.install_layout) installs = dict((k, v.to_dict()) for k, v in self._data.items()) + def invalid_record(hash_key, error): + msg = ("Invalid record in Spack database: " + "hash: %s, cause: %s: %s") + msg %= (hash_key, type(e).__name__, str(e)) + raise CorruptDatabaseError(msg, self._index_path) + # Build up the database in three passes: # # 1. Read in all specs without dependencies. @@ -298,15 +308,14 @@ class Database(object): data[hash_key] = InstallRecord.from_dict(spec, rec) except Exception as e: - tty.warn("Invalid database reecord:", - "file: %s" % self._index_path, - "hash: %s" % hash_key, - "cause: %s: %s" % (type(e).__name__, str(e))) - raise + invalid_record(hash_key, e) # Pass 2: Assign dependencies once all specs are created. for hash_key in data: - self._assign_dependencies(hash_key, installs, data) + try: + self._assign_dependencies(hash_key, installs, data) + except Exception as e: + invalid_record(hash_key, e) # Pass 3: Mark all specs concrete. Specs representing real # installations must be explicitly marked. @@ -324,7 +333,26 @@ class Database(object): Locks the DB if it isn't locked already. """ - with self.write_transaction(): + # Special transaction to avoid recursive reindex calls and to + # ignore errors if we need to rebuild a corrupt database. + def _read_suppress_error(): + try: + if os.path.isfile(self._index_path): + self._read_from_yaml(self._index_path) + except CorruptDatabaseError as e: + self._error = e + self._data = {} + + transaction = WriteTransaction( + self.lock, _read_suppress_error, self._write, _db_lock_timeout) + + with transaction: + if self._error: + tty.warn( + "Spack database was corrupt. Will rebuild. Error was:", + str(self._error)) + self._error = None + old_data = self._data try: self._data = {} @@ -333,10 +361,15 @@ class Database(object): for spec in directory_layout.all_specs(): # Create a spec for each known package and add it. path = directory_layout.path_for_spec(spec) - old_info = old_data.get(spec.dag_hash()) + + # Try to recover explicit value from old DB, but + # default it to False if DB was corrupt. explicit = False - if old_info is not None: - explicit = old_info.explicit + if old_data is not None: + old_info = old_data.get(spec.dag_hash()) + if old_info is not None: + explicit = old_info.explicit + self._add(spec, path, directory_layout, explicit=explicit) self._check_ref_counts() @@ -621,11 +654,7 @@ class Database(object): class CorruptDatabaseError(SpackError): - - def __init__(self, path, msg=''): - super(CorruptDatabaseError, self).__init__( - "Spack database is corrupt: %s. %s." % (path, msg), - "Try running `spack reindex` to fix.") + """Raised when errors are found while reading the database.""" class InvalidDatabaseVersionError(SpackError): -- cgit v1.2.3-60-g2f50 From 69d45b49e9b9a589b1e8ae782a3c726eb2cad343 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 2 Sep 2016 01:26:01 -0700 Subject: Fix hash handling in directory layout - Currently, build dependencies are not currently hashed; we are waiting to hash these until we have smarter concretization that can reuse more installed specs. The layout needs to account for this when checking whethert things are installed. --- lib/spack/spack/directory_layout.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index 0ae6f765f4..73286483ef 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -268,6 +268,13 @@ class YamlDirectoryLayout(DirectoryLayout): if installed_spec == spec: return path + # DAG hashes currently do not include build dependencies. + # + # TODO: remove this when we do better concretization and don't + # ignore build-only deps in hashes. + elif installed_spec == spec.copy(deps=('link', 'run')): + return path + if spec.dag_hash() == installed_spec.dag_hash(): raise SpecHashCollisionError(spec, installed_spec) else: -- cgit v1.2.3-60-g2f50 From 9268b7aa7c6dee44433c1cbf6780fe9f84158011 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 2 Sep 2016 01:26:19 -0700 Subject: Fix hash copying in _dup. - Spec._dup() incorrectly copied cached hashes and normal/concrete values even when dependency structure was not preserved. - Now these are only copied when *all* dependencies are copied. --- lib/spack/spack/spec.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 99446d21dd..f742ca4616 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1911,8 +1911,9 @@ class Spec(object): self.external = other.external self.external_module = other.external_module self.namespace = other.namespace - self._hash = other._hash - self._cmp_key_cache = other._cmp_key_cache + + self.external = other.external + self.external_module = other.external_module # If we copy dependencies, preserve DAG structure in the new spec if deps: @@ -1940,11 +1941,20 @@ class Spec(object): new_spec._add_dependency( new_nodes[depspec.spec.name], depspec.deptypes) - # Since we preserved structure, we can copy _normal safely. - self._normal = other._normal - self._concrete = other._concrete - self.external = other.external - self.external_module = other.external_module + # These fields are all cached results of expensive operations. + # If we preserved the original structure, we can copy them + # safely. If not, they need to be recomputed. + if deps == True or deps == alldeps: + self._hash = other._hash + self._cmp_key_cache = other._cmp_key_cache + self._normal = other._normal + self._concrete = other._concrete + else: + self._hash = None + self._cmp_key_cache = None + self._normal = False + self._concrete = False + return changed def copy(self, deps=True): -- cgit v1.2.3-60-g2f50 From c8b4f978e14110f903ca17b4c77aa60547b5bce5 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 2 Sep 2016 02:54:03 -0700 Subject: Clean up stable hashing so that specs don't contain !!python/object/apply - only output basic lists, dicts, etc. - spec and database now parse and write specs as ordered data. --- lib/spack/spack/architecture.py | 14 +++++---- lib/spack/spack/database.py | 10 +++--- lib/spack/spack/spec.py | 68 +++++++++++++++++++---------------------- lib/spack/spack/version.py | 9 ++++-- 4 files changed, 51 insertions(+), 50 deletions(-) diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py index 0d210f9741..57e266722e 100644 --- a/lib/spack/spack/architecture.py +++ b/lib/spack/spack/architecture.py @@ -87,6 +87,7 @@ import spack.compilers from spack.util.naming import mod_to_class from spack.util.environment import get_path from spack.util.multiproc import parmap +from spack.util.spack_yaml import syaml_dict import spack.error as serr @@ -407,12 +408,13 @@ class Arch(object): return (platform, platform_os, target) def to_dict(self): - d = {} - d['platform'] = str(self.platform) if self.platform else None - d['platform_os'] = str(self.platform_os) if self.platform_os else None - d['target'] = str(self.target) if self.target else None - - return d + return syaml_dict(( + ('platform', + str(self.platform) if self.platform else None), + ('platform_os', + str(self.platform_os) if self.platform_os else None), + ('target', + str(self.target) if self.target else None))) def _target_from_dict(target_name, plat=None): diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 043e3b953d..e450b4d424 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -42,7 +42,6 @@ filesystem. import os import socket -import yaml from yaml.error import MarkedYAMLError, YAMLError import llnl.util.tty as tty @@ -54,7 +53,7 @@ from spack.version import Version from spack.spec import Spec from spack.error import SpackError from spack.repository import UnknownPackageError - +import spack.util.spack_yaml as syaml # DB goes in this directory underneath the root _db_dirname = '.spack-db' @@ -197,7 +196,8 @@ class Database(object): } try: - return yaml.dump(database, stream=stream, default_flow_style=False) + return syaml.dump( + database, stream=stream, default_flow_style=False) except YAMLError as e: raise SpackYAMLError("error writing YAML database:", str(e)) @@ -247,9 +247,9 @@ class Database(object): try: if isinstance(stream, basestring): with open(stream, 'r') as f: - yfile = yaml.load(f) + yfile = syaml.load(f) else: - yfile = yaml.load(stream) + yfile = syaml.load(stream) except MarkedYAMLError as e: raise SpackYAMLError("error parsing YAML database:", str(e)) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index ac77abd57b..8b0486c4da 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -102,7 +102,6 @@ import sys from StringIO import StringIO from operator import attrgetter -import yaml from yaml.error import MarkedYAMLError import llnl.util.tty as tty @@ -119,6 +118,7 @@ from spack.build_environment import get_path_from_module, load_module from spack.util.naming import mod_to_class from spack.util.prefix import Prefix from spack.util.string import * +import spack.util.spack_yaml as syaml from spack.util.spack_yaml import syaml_dict from spack.version import * from spack.provider_index import ProviderIndex @@ -267,9 +267,10 @@ class CompilerSpec(object): return (self.name, self.versions) def to_dict(self): - d = {'name': self.name} + d = syaml_dict([('name', self.name)]) d.update(self.versions.to_dict()) - return {'compiler': d} + + return syaml_dict([('compiler', d)]) @staticmethod def from_dict(d): @@ -903,7 +904,7 @@ class Spec(object): return self._hash[:length] else: # XXX(deptype): ignore 'build' dependencies here - yaml_text = yaml.dump( + yaml_text = syaml.dump( self.to_node_dict(), default_flow_style=True, width=sys.maxint) sha = hashlib.sha1(yaml_text) b32_hash = base64.b32encode(sha.digest()).lower()[:length] @@ -912,45 +913,37 @@ class Spec(object): return b32_hash def to_node_dict(self): - ordered_dict = lambda d: syaml_dict(sorted(d.items())) - d = syaml_dict() - params = syaml_dict(sorted( - (name, v.value) for name, v in self.variants.items())) - params.update(ordered_dict(self.compiler_flags)) - - if params: - d['parameters'] = params + if self.versions: + d.update(self.versions.to_dict()) - deps = self.dependencies_dict(deptype=('link', 'run')) - if deps: - d['dependencies'] = syaml_dict(sorted(( - ( - name, - ordered_dict({ - 'hash': dspec.spec.dag_hash(), - 'type': sorted([str(s) for s in dspec.deptypes]) - }) - ) - for name, dspec in deps.items() - ))) + if self.compiler: + d.update(self.compiler.to_dict()) if self.namespace: d['namespace'] = self.namespace - if self.architecture: - # TODO: Fix the target.to_dict to account for the tuple - # Want it to be a dict of dicts - d['arch'] = ordered_dict(self.architecture.to_dict()) + params = syaml_dict(sorted( + (name, v.value) for name, v in self.variants.items())) + params.update(sorted(self.compiler_flags.items())) + if params: + d['parameters'] = params - if self.compiler: - d['compiler'] = syaml_dict(self.compiler.to_dict()['compiler']) + if self.architecture: + d['arch'] = self.architecture.to_dict() - if self.versions: - d.update(ordered_dict(self.versions.to_dict())) + deps = self.dependencies_dict(deptype=('link', 'run')) + if deps: + d['dependencies'] = syaml_dict([ + (name, + syaml_dict([ + ('hash', dspec.spec.dag_hash()), + ('type', sorted(str(s) for s in dspec.deptypes))]) + ) for name, dspec in sorted(deps.items()) + ]) - return syaml_dict({self.name: d}) + return syaml_dict([(self.name, d)]) def to_yaml(self, stream=None): node_list = [] @@ -958,8 +951,9 @@ class Spec(object): node = s.to_node_dict() node[s.name]['hash'] = s.dag_hash() node_list.append(node) - return yaml.dump({'spec': node_list}, - stream=stream, default_flow_style=False) + return syaml.dump( + syaml_dict([('spec', node_list)]), + stream=stream, default_flow_style=False) @staticmethod def from_node_dict(node): @@ -1033,7 +1027,7 @@ class Spec(object): """ try: - yfile = yaml.load(stream) + yfile = syaml.load(stream) except MarkedYAMLError as e: raise SpackYAMLError("error parsing YAML spec:", str(e)) @@ -1952,7 +1946,7 @@ class Spec(object): # These fields are all cached results of expensive operations. # If we preserved the original structure, we can copy them # safely. If not, they need to be recomputed. - if deps == True or deps == alldeps: + if deps is True or deps == alldeps: self._hash = other._hash self._cmp_key_cache = other._cmp_key_cache self._normal = other._normal diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index bc96dcd716..e3efa6c87a 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -49,6 +49,7 @@ from bisect import bisect_left from functools import wraps from functools_backport import total_ordering +from spack.util.spack_yaml import syaml_dict __all__ = ['Version', 'VersionRange', 'VersionList', 'ver'] @@ -593,9 +594,13 @@ class VersionList(object): def to_dict(self): """Generate human-readable dict for YAML.""" if self.concrete: - return {'version': str(self[0])} + return syaml_dict([ + ('version', str(self[0])) + ]) else: - return {'versions': [str(v) for v in self]} + return syaml_dict([ + ('versions', [str(v) for v in self]) + ]) @staticmethod def from_dict(dictionary): -- cgit v1.2.3-60-g2f50 From 0bd63ce8befc8b7f0ac6e9158aa0610739549b9b Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 2 Sep 2016 10:53:59 -0400 Subject: Make libiconv work with C11 C11 does not provide gets() any more, so we cannot reference it --- var/spack/repos/builtin/packages/libiconv/gets.patch | 13 +++++++++++++ var/spack/repos/builtin/packages/libiconv/package.py | 4 ++++ 2 files changed, 17 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libiconv/gets.patch diff --git a/var/spack/repos/builtin/packages/libiconv/gets.patch b/var/spack/repos/builtin/packages/libiconv/gets.patch new file mode 100644 index 0000000000..7c4b5562ec --- /dev/null +++ b/var/spack/repos/builtin/packages/libiconv/gets.patch @@ -0,0 +1,13 @@ +--- a/srclib/stdio.in.h ++++ b/srclib/stdio.in.h +@@ -692,10 +692,6 @@ + # undef gets + # endif + _GL_CXXALIASWARN (gets); +-/* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ +-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); + #endif + + diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py index f2eeb07b26..982929b80a 100644 --- a/var/spack/repos/builtin/packages/libiconv/package.py +++ b/var/spack/repos/builtin/packages/libiconv/package.py @@ -34,6 +34,10 @@ class Libiconv(Package): version('1.14', 'e34509b1623cec449dfeb73d7ce9c6c6') + # We cannot set up a warning for gets(), since gets() is not part + # of C11 any more and thus might not exist. + patch("gets.patch") + def install(self, spec, prefix): configure('--prefix={0}'.format(prefix), '--enable-extra-encodings') -- cgit v1.2.3-60-g2f50 From 9ceb3f6b492fba7eec7950c685ee30bfb179fdd1 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 2 Sep 2016 11:23:33 -0400 Subject: Add two famous old versions of autoconf These old versions are often used because their immediate successors are incompatible in some way. --- var/spack/repos/builtin/packages/autoconf/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/autoconf/package.py b/var/spack/repos/builtin/packages/autoconf/package.py index 2de1c390db..5eb7f3347b 100644 --- a/var/spack/repos/builtin/packages/autoconf/package.py +++ b/var/spack/repos/builtin/packages/autoconf/package.py @@ -34,6 +34,8 @@ class Autoconf(Package): version('2.69', '82d05e03b93e45f5a39b828dc9c6c29b') version('2.62', '6c1f3b3734999035d77da5024aab4fbd') + version('2.59', 'd4d45eaa1769d45e59dcb131a4af17a0') + version('2.13', '9de56d4a161a723228220b0f425dc711') depends_on('m4', type='build') -- cgit v1.2.3-60-g2f50 From d876d9b77853559d2d76afc59ee268fe673c3d1f Mon Sep 17 00:00:00 2001 From: "Robert.French" Date: Fri, 2 Sep 2016 15:29:12 +0000 Subject: Globus Toolkit --- .../builtin/packages/globus_toolkit/package.py | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/globus_toolkit/package.py diff --git a/var/spack/repos/builtin/packages/globus_toolkit/package.py b/var/spack/repos/builtin/packages/globus_toolkit/package.py new file mode 100644 index 0000000000..5cec13a5af --- /dev/null +++ b/var/spack/repos/builtin/packages/globus_toolkit/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 GlobusToolkit(Package): + """The Globus Toolkit is an open source software toolkit used for building + grids""" + + homepage = "http://toolkit.globus.org" + url = "http://toolkit.globus.org/ftppub/gt6/installers/src/globus_toolkit-6.0.1470089956.tar.gz" + + version('6.0.1470089956', 'b77fe3cc5a5844df995688b0e630d077') + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix) + make() + make('install') -- cgit v1.2.3-60-g2f50 From c7bb523c8f2b01774315cebcb4f552d830ef021c Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 2 Sep 2016 13:34:07 -0400 Subject: Declare qthreads dependency on automake (#1711) --- var/spack/repos/builtin/packages/qthreads/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/qthreads/package.py b/var/spack/repos/builtin/packages/qthreads/package.py index 634d934938..8d5cc87062 100644 --- a/var/spack/repos/builtin/packages/qthreads/package.py +++ b/var/spack/repos/builtin/packages/qthreads/package.py @@ -54,6 +54,7 @@ class Qthreads(Package): patch("trap.patch") depends_on("autoconf", type="build") + depends_on("automake", type="build") depends_on("hwloc") def install(self, spec, prefix): -- cgit v1.2.3-60-g2f50 From 5146c64dfc5096ce4320270354acb62135fc63e7 Mon Sep 17 00:00:00 2001 From: Jeffrey Salmond Date: Fri, 2 Sep 2016 18:41:35 +0100 Subject: Fixes for the ImageMagick package. (#1709) * add pango dependency * add new package ghostscript-fonts & add to ImageMagick as dependency also tell ImageMagick's configure where the font dir is! * refactor to fix flake8 * add homepage to ghostscript-fonts * use install_tree * remove unneeded import --- .../repos/builtin/packages/ImageMagick/package.py | 7 ++-- .../builtin/packages/ghostscript-fonts/package.py | 37 ++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/ghostscript-fonts/package.py diff --git a/var/spack/repos/builtin/packages/ImageMagick/package.py b/var/spack/repos/builtin/packages/ImageMagick/package.py index 61d4cc0cb4..0b474285ce 100644 --- a/var/spack/repos/builtin/packages/ImageMagick/package.py +++ b/var/spack/repos/builtin/packages/ImageMagick/package.py @@ -36,19 +36,22 @@ class Imagemagick(Package): version('7.0.2-6', 'aa5689129c39a5146a3212bf5f26d478') depends_on('jpeg') + depends_on('pango') depends_on('libtool', type='build') depends_on('libpng') depends_on('freetype') depends_on('fontconfig') depends_on('libtiff') depends_on('ghostscript') + depends_on('ghostscript-fonts') def url_for_version(self, version): return "https://github.com/ImageMagick/ImageMagick/archive/{0}.tar.gz".format(version) def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - + gs_font_dir = join_path(spec['ghostscript-fonts'].prefix.share, "font") + configure('--prefix={0}'.format(prefix), + '--with-gs-font-dir={0}'.format(gs_font_dir)) make() make('check') make('install') diff --git a/var/spack/repos/builtin/packages/ghostscript-fonts/package.py b/var/spack/repos/builtin/packages/ghostscript-fonts/package.py new file mode 100644 index 0000000000..0f82ed5fb6 --- /dev/null +++ b/var/spack/repos/builtin/packages/ghostscript-fonts/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 GhostscriptFonts(Package): + """Ghostscript Fonts""" + + homepage = "http://ghostscript.com/" + url = "ftp://ftp.imagemagick.org/pub/ImageMagick/delegates/ghostscript-fonts-std-8.11.tar.gz" + + version('8.11', '6865682b095f8c4500c54b285ff05ef6') + + def install(self, spec, prefix): + install_tree('.', join_path(prefix.share, 'font')) -- cgit v1.2.3-60-g2f50 From d78d18c4bdc307e6afa696c8fab09d90706edce5 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 2 Sep 2016 13:57:35 -0400 Subject: Update OpenMPI description (#1705) --- var/spack/repos/builtin/packages/openmpi/package.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index b0efe27def..f13feb123d 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -50,12 +50,14 @@ def _verbs_dir(): class Openmpi(Package): - """Open MPI is a project combining technologies and resources from - several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) - in order to build the best MPI library available. A completely - new MPI-2 compliant implementation, Open MPI offers advantages - for system and software vendors, application developers and - computer science researchers. + """The Open MPI Project is an open source Message Passing Interface + implementation that is developed and maintained by a consortium + of academic, research, and industry partners. Open MPI is + therefore able to combine the expertise, technologies, and + resources from all across the High Performance Computing + community in order to build the best MPI library available. + Open MPI offers advantages for system and software vendors, + application developers and computer science researchers. """ homepage = "http://www.open-mpi.org" -- cgit v1.2.3-60-g2f50 From 817c120b1c649963b15bab77e9568eba03ff9e51 Mon Sep 17 00:00:00 2001 From: Alfredo Gimenez Date: Fri, 2 Sep 2016 14:09:46 -0700 Subject: Fix vim package --- var/spack/repos/builtin/packages/vim/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index 01eccfab57..5f2e5e19d9 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -71,14 +71,14 @@ class Vim(Package): for fs in self.feature_sets: if "+" + fs in spec: if feature_set is not None: - tty.error( + raise InstallError( "Only one feature set allowed, specified %s and %s" % (feature_set, fs)) feature_set = fs if '+gui' in spec: if feature_set is not None: - if feature_set is not 'huge': - tty.error( + if feature_set != 'huge': + raise InstallError( "+gui variant requires 'huge' feature set, " "%s was specified" % feature_set) feature_set = 'huge' -- cgit v1.2.3-60-g2f50 From 19102559f0391a857f01f4002d7dbe537a4f80e2 Mon Sep 17 00:00:00 2001 From: Alfredo Gimenez Date: Fri, 2 Sep 2016 14:15:20 -0700 Subject: Add sbt (scala build tool) package --- var/spack/repos/builtin/packages/sbt/package.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sbt/package.py diff --git a/var/spack/repos/builtin/packages/sbt/package.py b/var/spack/repos/builtin/packages/sbt/package.py new file mode 100644 index 0000000000..0d675ef8ff --- /dev/null +++ b/var/spack/repos/builtin/packages/sbt/package.py @@ -0,0 +1,18 @@ +from spack import * +import shutil + + +class Sbt(Package): + """Scala Build Tool""" + + homepage = "http://http://www.scala-sbt.org" + url = "http://http://www.scala-sbt.org/download.html" + + version('0.13.12', 'cec3071d46ef13334c8097cc3467ff28', + url='https://dl.bintray.com/sbt/native-packages/sbt/0.13.12/sbt-0.13.12.tgz') + + depends_on('jdk') + + def install(self, spec, prefix): + shutil.copytree('bin', join_path(prefix, 'bin'), symlinks=True) + shutil.copytree('conf', join_path(prefix, 'conf'), symlinks=True) -- cgit v1.2.3-60-g2f50 From 07fa1cd5f8f225e0c1c988f8620b30b1ff799aba Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 2 Sep 2016 15:10:30 -0700 Subject: Attributes for directives need to be set at class construction time. (#1718) - moved ensure_dicts() call from Package.__init__ to Package.__metaclass__. --- lib/spack/spack/package.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 3ffedbbad9..882901d887 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -329,6 +329,12 @@ class Package(object): """ sanity_check_is_dir = [] + class __metaclass__(type): + """Ensure attributes required by Spack directives are present.""" + def __init__(cls, name, bases, dict): + type.__init__(cls, name, bases, dict) + spack.directives.ensure_dicts(cls) + def __init__(self, spec): # this determines how the package should be built. self.spec = spec @@ -342,9 +348,6 @@ class Package(object): # Allow custom staging paths for packages self.path = None - # Sanity check attributes required by Spack directives. - spack.directives.ensure_dicts(type(self)) - # Check versions in the versions dict. for v in self.versions: assert (isinstance(v, Version)) -- cgit v1.2.3-60-g2f50 From 497bbb3ae319f0bad23e7e6122560d541a32f1f3 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 3 Sep 2016 17:13:47 +0200 Subject: added package : pexsi (#1550) * pexsi : added package * cp2k : added pexsi (works for gcc+openmpi with and without plumed) --- lib/spack/spack/compilers/gcc.py | 4 + lib/spack/spack/compilers/intel.py | 4 + var/spack/repos/builtin/packages/cp2k/package.py | 22 ++++- var/spack/repos/builtin/packages/mpich/package.py | 4 + .../repos/builtin/packages/mvapich2/package.py | 4 + .../repos/builtin/packages/openmpi/package.py | 4 + var/spack/repos/builtin/packages/pexsi/make.inc | 79 ++++++++++++++++ var/spack/repos/builtin/packages/pexsi/package.py | 103 +++++++++++++++++++++ .../repos/builtin/packages/superlu-dist/package.py | 14 +-- 9 files changed, 229 insertions(+), 9 deletions(-) create mode 100644 var/spack/repos/builtin/packages/pexsi/make.inc create mode 100644 var/spack/repos/builtin/packages/pexsi/package.py diff --git a/lib/spack/spack/compilers/gcc.py b/lib/spack/spack/compilers/gcc.py index a556f346d7..9ea314efd5 100644 --- a/lib/spack/spack/compilers/gcc.py +++ b/lib/spack/spack/compilers/gcc.py @@ -83,3 +83,7 @@ class Gcc(Compiler): @classmethod def f77_version(cls, f77): return cls.fc_version(f77) + + @property + def stdcxx_libs(self): + return ('-lstdc++', ) diff --git a/lib/spack/spack/compilers/intel.py b/lib/spack/spack/compilers/intel.py index 4f0c12140f..14f4d2dc91 100644 --- a/lib/spack/spack/compilers/intel.py +++ b/lib/spack/spack/compilers/intel.py @@ -80,3 +80,7 @@ class Intel(Compiler): """ return get_compiler_version( comp, '--version', r'\((?:IFORT|ICC)\) ([^ ]+)') + + @property + def stdcxx_libs(self): + return ('-cxxlib', ) diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index ce9675d300..052c7a971c 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -52,12 +52,12 @@ class Cp2k(Package): depends_on('scalapack', when='+mpi') depends_on('plumed+shared+mpi', when='+plumed+mpi') depends_on('plumed+shared~mpi', when='+plumed~mpi') + depends_on('pexsi', when='+mpi') # TODO : add dependency on libint # TODO : add dependency on libsmm, libxsmm # TODO : add dependency on elpa # TODO : add dependency on CUDA - # TODO : add dependency on PEXSI # TODO : add dependency on QUIP # TODO : add dependency on libwannier90 @@ -88,6 +88,7 @@ class Cp2k(Package): } cppflags = [ '-D__FFTW3', + '-D__LIBPEXSI', '-I' + spec['fftw'].prefix.include ] fcflags = copy.deepcopy(optflags[self.spec.compiler.name]) @@ -144,11 +145,28 @@ class Cp2k(Package): '-D__parallel', '-D__SCALAPACK' ]) + fcflags.extend([ + '-I' + join_path(spec['pexsi'].prefix, 'fortran') + ]) ldflags.extend([ '-L' + spec['scalapack'].prefix.lib ]) + libs.extend([ + join_path(spec['pexsi'].prefix.lib, 'libpexsi.a'), + join_path(spec['superlu-dist'].prefix.lib, + 'libsuperlu_dist.a'), + join_path( + spec['parmetis'].prefix.lib, + 'libparmetis.{0}'.format(dso_suffix) + ), + join_path( + spec['metis'].prefix.lib, + 'libmetis.{0}'.format(dso_suffix) + ), + ]) libs.extend(spec['scalapack'].scalapack_shared_libs) - + libs.extend(self.spec['mpi'].mpicxx_shared_libs) + libs.extend(self.compiler.stdcxx_libs) # LAPACK / BLAS ldflags.extend([ '-L' + spec['lapack'].prefix.lib, diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index 90670ee517..a36ab4206e 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -66,6 +66,10 @@ class Mpich(Package): self.spec.mpicxx = join_path(self.prefix.bin, 'mpic++') self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') + self.spec.mpicxx_shared_libs = [ + join_path(self.prefix.lib, 'libmpicxx.{0}'.format(dso_suffix)), + join_path(self.prefix.lib, 'libmpi.{0}'.format(dso_suffix)) + ] def install(self, spec, prefix): config_args = ["--prefix=" + prefix, diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 54caf0e7e1..a123830185 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -227,6 +227,10 @@ class Mvapich2(Package): self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx') self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') + self.spec.mpicxx_shared_libs = [ + join_path(self.prefix.lib, 'libmpicxx.{0}'.format(dso_suffix)), + join_path(self.prefix.lib, 'libmpi.{0}'.format(dso_suffix)) + ] def install(self, spec, prefix): # we'll set different configure flags depending on our diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index f13feb123d..ca6bd473f1 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -129,6 +129,10 @@ class Openmpi(Package): self.spec.mpicxx = join_path(self.prefix.bin, 'mpic++') self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') + self.spec.mpicxx_shared_libs = [ + join_path(self.prefix.lib, 'libmpi_cxx.{0}'.format(dso_suffix)), + join_path(self.prefix.lib, 'libmpi.{0}'.format(dso_suffix)) + ] def setup_environment(self, spack_env, run_env): # As of 06/2016 there is no mechanism to specify that packages which diff --git a/var/spack/repos/builtin/packages/pexsi/make.inc b/var/spack/repos/builtin/packages/pexsi/make.inc new file mode 100644 index 0000000000..a8020fb370 --- /dev/null +++ b/var/spack/repos/builtin/packages/pexsi/make.inc @@ -0,0 +1,79 @@ +# Different compiling and linking options. +SUFFIX = linux + +# Compiler and tools +################################################################ +CC = @MPICC +CXX = @MPICXX +FC = @MPIFC +LOADER = @MPICXX + + +AR = ar +ARFLAGS = rvcu +# For System V based machine without ranlib, like Cray and SGI, +# use touch instead. +RANLIB = @RANLIB + +CP = cp +RM = rm +RMFLAGS = -f +################################################################ + +# PEXSI directory +PEXSI_DIR = @PEXSI_STAGE + +# Required libraries directories +DSUPERLU_DIR = @SUPERLU_PREFIX +METIS_DIR = @METIS_PREFIX +PARMETIS_DIR = @PARMETIS_PREFIX +LAPACK_DIR = @LAPACK_PREFIX +BLAS_DIR = @BLAS_PREFIX + +# Includes +PEXSI_INCLUDE = -I${PEXSI_DIR}/include +DSUPERLU_INCLUDE = -I${DSUPERLU_DIR}/include +INCLUDES = ${PEXSI_INCLUDE} ${DSUPERLU_INCLUDE} + +# Libraries +CPP_LIB = @STDCXX_LIB @MPICXX_LIB +#GFORTRAN_LIB = /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a +LAPACK_LIB = @LAPACK_LIBS +BLAS_LIB = @BLAS_LIBS +DSUPERLU_LIB = ${DSUPERLU_DIR}/lib/libsuperlu_dist.a +PEXSI_LIB = ${PEXSI_DIR}/src/libpexsi_${SUFFIX}.a + +# Graph partitioning libraries +METIS_LIB = -L${METIS_DIR}/lib -lmetis +PARMETIS_LIB = -L${PARMETIS_DIR}/libparmetis -lparmetis + +# Different compiling and linking options. +COMPILE_DEF = -DDEBUG=0 -DRELEASE +COMPILE_FLAG = -O3 -w + +LIBS = ${PEXSI_LIB} ${DSUPERLU_LIB} ${PARMETIS_LIB} ${METIS_LIB} ${LAPACK_LIB} ${BLAS_LIB} ${GFORTRAN_LIB} + +COMPILE_DEF += -DAdd_ + +CPPFLAG = -std=c++11 + +CFLAGS = ${COMPILE_FLAG} ${PROFILE_FLAG} ${INCLUDES} +FFLAGS = ${COMPILE_FLAG} ${PROFILE_FLAG} ${INCLUDES} +CXXFLAGS = ${COMPILE_FLAG} ${CPPFLAG} ${PROFILE_FLAG} ${INCLUDES} +CCDEFS = ${COMPILE_DEF} +CPPDEFS = ${COMPILE_DEF} +LOADOPTS = ${PROFILE_FLAG} ${LIBS} +FLOADOPTS = ${PROFILE_FLAG} ${LIBS} ${CPP_LIB} + +# Generate auto-dependencies +%.d: %.c + @set -e; rm -f $@; \ + $(CC) -M $(CCDEFS) $(CFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@;\ + rm -f $@.$$$$ + +%.d: %.cpp + @set -e; rm -f $@; \ + $(CXX) -M $(CPPDEFS) $(CXXFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@;\ + rm -f $@.$$$$ diff --git a/var/spack/repos/builtin/packages/pexsi/package.py b/var/spack/repos/builtin/packages/pexsi/package.py new file mode 100644 index 0000000000..e74ad6df01 --- /dev/null +++ b/var/spack/repos/builtin/packages/pexsi/package.py @@ -0,0 +1,103 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/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 Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, 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 Lesser 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 +############################################################################## + +import inspect +import os.path +import shutil + +from spack import * + + +class Pexsi(Package): + """The PEXSI library is written in C++, and uses message passing interface + (MPI) to parallelize the computation on distributed memory computing + systems and achieve scalability on more than 10,000 processors. + + The Pole EXpansion and Selected Inversion (PEXSI) method is a fast + method for electronic structure calculation based on Kohn-Sham density + functional theory. It efficiently evaluates certain selected elements + of matrix functions, e.g., the Fermi-Dirac function of the KS Hamiltonian, + which yields a density matrix. It can be used as an alternative to + diagonalization methods for obtaining the density, energy and forces + in electronic structure calculations. + """ + homepage = 'https://math.berkeley.edu/~linlin/pexsi/index.html' + url = 'https://math.berkeley.edu/~linlin/pexsi/download/pexsi_v0.9.0.tar.gz' + + version('0.9.0', '0c1a2de891ba1445dfc184b2fa270ed8') + + depends_on('parmetis') + depends_on('superlu-dist@3.3', when='@0.9.0') + + parallel = False + + def install(self, spec, prefix): + + substitutions = { + '@MPICC': self.spec['mpi'].mpicc, + '@MPICXX': self.spec['mpi'].mpicxx, + '@MPIFC': self.spec['mpi'].mpifc, + '@MPICXX_LIB': ' '.join(self.spec['mpi'].mpicxx_shared_libs), + '@RANLIB': 'ranlib', + '@PEXSI_STAGE': self.stage.source_path, + '@SUPERLU_PREFIX': self.spec['superlu-dist'].prefix, + '@METIS_PREFIX': self.spec['metis'].prefix, + '@PARMETIS_PREFIX': self.spec['parmetis'].prefix, + '@LAPACK_PREFIX': self.spec['lapack'].prefix, + '@BLAS_PREFIX': self.spec['blas'].prefix, + '@LAPACK_LIBS': self.spec['lapack'].lapack_shared_lib, + '@BLAS_LIBS': self.spec['lapack'].blas_shared_lib, + '@STDCXX_LIB': ' '.join(self.compiler.stdcxx_libs) + } + + template = join_path( + os.path.dirname(inspect.getmodule(self).__file__), + 'make.inc' + ) + makefile = join_path( + self.stage.source_path, + 'make.inc' + ) + shutil.copy(template, makefile) + for key, value in substitutions.items(): + filter_file(key, value, makefile) + + make() + # 'make install' does not exist, despite what documentation says + mkdirp(self.prefix.lib) + install( + join_path(self.stage.source_path, 'src', 'libpexsi_linux.a'), + join_path(self.prefix.lib, 'libpexsi.a') + ) + install_tree( + join_path(self.stage.source_path, 'include'), + self.prefix.include + ) + # fortran "interface" + make('-C', 'fortran') + install_tree( + join_path(self.stage.source_path, 'fortran'), + join_path(self.prefix, 'fortran') + ) diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index 4b3354e379..85b7f689d0 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -30,13 +30,14 @@ class SuperluDist(Package): """A general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations on high performance machines.""" homepage = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/" - url = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz" + url = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz" version('5.0.0', '2b53baf1b0ddbd9fcf724992577f0670') version('4.3', 'ee66c84e37b4f7cc557771ccc3dc43ae') version('4.2', 'ae9fafae161f775fbac6eba11e530a65') version('4.1', '4edee38cc29f687bd0c8eb361096a455') version('4.0', 'c0b98b611df227ae050bc1635c6940e0') + version('3.3', 'f4805659157d93a962500902c219046b') depends_on('mpi') depends_on('blas') @@ -61,14 +62,13 @@ class SuperluDist(Package): 'ARCH = ar', 'ARCHFLAGS = cr', 'RANLIB = true', - 'CC = %s' % spec['mpi'].mpicc, - 'CFLAGS = -fPIC -std=c99 -O2 -I%s -I%s' % - (spec['parmetis'].prefix.include, - spec['metis'].prefix.include), + 'CC = {0}'.format(self.spec['mpi'].mpicc), + 'CFLAGS = -fPIC -std=c99 -O2 -I%s -I%s' % ( + spec['parmetis'].prefix.include, spec['metis'].prefix.include), 'NOOPTS = -fPIC -std=c99', - 'FORTRAN = %s' % spec['mpi'].mpif77, + 'FORTRAN = {0}'.format(self.spec['mpi'].mpif77), 'F90FLAGS = -O2', - 'LOADER = %s' % spec['mpi'].mpif77, + 'LOADER = {0}'.format(self.spec['mpi'].mpif77), 'LOADOPTS =', 'CDEFS = -DAdd_' ]) -- cgit v1.2.3-60-g2f50 From 16c5403ab3ca35dfa6d715ce2c5434c65de81c17 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Sat, 3 Sep 2016 18:43:00 +0200 Subject: spack boostrap: fix missing include (#1657) fix a missing include in booststrap. found on debian 8 with python 2.7 --- lib/spack/spack/cmd/bootstrap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/bootstrap.py b/lib/spack/spack/cmd/bootstrap.py index 60e2bd3a11..a79ef4aa68 100644 --- a/lib/spack/spack/cmd/bootstrap.py +++ b/lib/spack/spack/cmd/bootstrap.py @@ -28,7 +28,7 @@ import llnl.util.tty as tty from llnl.util.filesystem import join_path, mkdirp import spack -from spack.util.executable import which +from spack.util.executable import ProcessError, which _SPACK_UPSTREAM = 'https://github.com/llnl/spack' -- cgit v1.2.3-60-g2f50