diff --git a/.gitignore b/.gitignore index 3a4a1b95201bed75157c3bcd4159c089ae9d1d3a..338638cc68a9e8ce978fd57b89b24979c1ca1bc5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ # Ignore any pyc files *.pyc +.DS_Store +._.DS_Store diff --git a/Golden_Repo/a/Advisor/Advisor-2020_update3.eb b/Golden_Repo/a/Advisor/Advisor-2020_update3.eb new file mode 100644 index 0000000000000000000000000000000000000000..3125a091a97eac23431fb0e0cb1a85266d13acde --- /dev/null +++ b/Golden_Repo/a/Advisor/Advisor-2020_update3.eb @@ -0,0 +1,21 @@ +name = 'Advisor' +version = '2020_update3' + +homepage = 'https://software.intel.com/intel-advisor-xe' +description = """Vectorization Optimization and Thread Prototyping + - Vectorize & thread code or performance "dies" + - Easy workflow + data + tips = faster code faster + - Prioritize, Prototype & Predict performance gain +""" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +toolchain = SYSTEM + +sources = ['advisor_%(version)s.tar.gz'] + +dontcreateinstalldir = True + +requires_runtime_license = False + +moduleclass = 'perf' diff --git a/Golden_Repo/b/Bazel/Bazel-3.4.1-GCCcore-9.3.0.eb b/Golden_Repo/b/Bazel/Bazel-3.4.1-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..1ba88f7240e26c1e3293c14fd5be6f5be4d07683 --- /dev/null +++ b/Golden_Repo/b/Bazel/Bazel-3.4.1-GCCcore-9.3.0.eb @@ -0,0 +1,19 @@ +name = 'Bazel' +version = '3.4.1' + +homepage = 'http://bazel.io/' +description = """Bazel is a build tool that builds code quickly and reliably. +It is used to build the majority of Google's software.""" + +site_contacts = 'a.strube@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['https://github.com/bazelbuild/bazel/releases/download/%(version)s'] +sources = ['%(namelower)s-%(version)s-dist.zip'] +patches = ['%(name)s-%(version)s_fix_protobuf_libstdc.patch'] + +builddependencies = [('binutils', '2.34')] +dependencies = [('Java', '1.8', '', True)] + +moduleclass = 'devel' diff --git a/Golden_Repo/b/Bazel/Bazel-3.4.1_fix_protobuf_libstdc.patch b/Golden_Repo/b/Bazel/Bazel-3.4.1_fix_protobuf_libstdc.patch new file mode 100644 index 0000000000000000000000000000000000000000..05d72c491443d4b5d6a5984ef36535d3635732f7 --- /dev/null +++ b/Golden_Repo/b/Bazel/Bazel-3.4.1_fix_protobuf_libstdc.patch @@ -0,0 +1,10 @@ +--- third_party/grpc/bazel/generate_cc.bzl.orig 2020-08-04 14:19:51.304155177 +0200 ++++ third_party/grpc/bazel/generate_cc.bzl 2020-08-04 14:20:08.316748158 +0200 +@@ -123,6 +123,7 @@ + outputs = out_files, + executable = ctx.executable.protoc, + arguments = arguments, ++ use_default_shell_env = True, + ) + + return struct(files = depset(out_files)) diff --git a/Golden_Repo/c/CDO/CDO-1.9.8-gpsmpi-2020.eb b/Golden_Repo/c/CDO/CDO-1.9.8-gpsmpi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..a8ff27662adb03ce16b43a8bb347e4d6bb52d1a9 --- /dev/null +++ b/Golden_Repo/c/CDO/CDO-1.9.8-gpsmpi-2020.eb @@ -0,0 +1,35 @@ +easyblock = 'ConfigureMake' + +name = 'CDO' +version = '1.9.8' + +homepage = 'https://code.zmaw.de/projects/cdo' +description = """CDO is a collection of command line Operators to manipulate and analyse Climate and NWP model Data.""" + +toolchain = {'name': 'gpsmpi', 'version': '2020'} +# stick to lowopt (-O1) to avoid internal compiler error when building on Intel Skylake +toolchainopts = {'pic': True, 'usempi': True, 'lowopt': True} + +source_urls = ['https://code.mpimet.mpg.de/attachments/download/20826/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['f2660ac6f8bf3fa071cf2a3a196b3ec75ad007deb3a782455e80f28680c5252a'] + +dependencies = [ + ('HDF5', '1.10.6'), + ('netCDF', '4.7.4'), + ('YAXT', '0.9.0'), + ('ecCodes', '2.18.0'), +] + + +configopts = "--with-hdf5=$EBROOTHDF5 --with-netcdf=$EBROOTNETCDF --with-eccodes=$EBROOTECCODES --with-szlib=yes" + +# fix for linking issues with HDF5 libraries for libcdi, should link with both -lnetcdf and -lhdf5_hl -lhdf5 +# prebuildopts = "find libcdi -name Makefile | xargs sed -i 's/-lnetcdf -lnetcdf/-lnetcdf -lhdf5_hl -lhdf5/g' && " +preconfigopts = 'export CFLAGS="$CFLAGS -lhdf5" && ' +sanity_check_paths = { + 'files': ['bin/cdo'], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/e/Elemental/Elemental-0.87.7-gpsmkl-2020.eb b/Golden_Repo/e/Elemental/Elemental-0.87.7-gpsmkl-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..83c7f25f9b2b9b66a619fe03ba38e34cb9d91b0f --- /dev/null +++ b/Golden_Repo/e/Elemental/Elemental-0.87.7-gpsmkl-2020.eb @@ -0,0 +1,79 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild +# +# Authors:: Inge Gutheil <i.gutheil@fz-juelich.de> D.Alvarez <d.alvarez@fz-juelich.de> +# +# This work implements Elemental 0.87.7 +# +# https://computation.llnl.gov/casc/Elemental/main.html +# +## +easyblock = 'CMakeMake' + +name = 'Elemental' +version = '0.87.7' + +homepage = 'http://libelemental.org/download/' +description = """Elemental is an open-source library for distributed-memory dense and sparse-direct linear algebra and +and optimization which builds on top of BLAS, LAPACK, and MPI using modern C++ and additionally exposes interfaces to C +and Python. + +The hybrid version uses a combination of MPI and OpenMP. +Version 0.87.7 has been installed as module in $EBROOTELEMENTAL""" + +examples = """Examples can be found in $EBROOTELEMENTAL/examples""" + +site_contacts = 'I. Gutheil (i.gutheil@fz-juelich.de)' + +toolchain = {'name': 'gpsmkl', 'version': '2020'} +toolchainopts = {'optarch': True, 'usempi': True, 'openmp': True} + +sources = [SOURCE_TGZ] +source_urls = ['http://libelemental.org/pub/releases'] + +patches = [ + 'elemental-0.87.7_rangehermitianeig.patch', + # See https://github.com/elemental/Elemental/pull/264 + 'Elemental-0.87.7_ambiguous_template.patch' +] + +builddependencies = [ + ('CMake', '3.18.0'), +] + +dependencies = [ + ('ParMETIS', '4.0.3'), +] + +separate_build_dir = 'True' + +preconfigopts = 'export LDFLAGS="-lm $LDFLAGS" && ' + +configopts = '-DEL_EXAMPLES=ON -DEL_TESTS=ON -DMATH_LIBS="$LIBLAPACK_MT" -DINSTALL_PYTHON_PACKAGE=OFF -DEL_HYBRID=ON ' +configopts += '-DPARMETIS_LIB_DIR=$EBROOTPARMETIS/lib -DPARMETIS_INCLUDE_DIR=$EBROOTPARMETIS/include ' + +postinstallcmds = [ + "cp -r %(builddir)s/%(name)s-%(version)s/examples %(installdir)s/examples", + "chmod 755 %(installdir)s/examples", + "chmod 755 %(installdir)s/examples/*", + "chmod 644 %(installdir)s/examples/blas_like/*", + "chmod 644 %(installdir)s/examples/core/*", + "chmod 644 %(installdir)s/examples/interface/*", + "chmod 644 %(installdir)s/examples/io/*", + "chmod 644 %(installdir)s/examples/lapack_like/*", + "chmod 644 %(installdir)s/examples/matrices/*", + "chmod 644 %(installdir)s/examples/optimization/*", +] + +sanity_check_paths = { + 'files': [], + 'dirs': ['include', 'lib64'], +} + +modextravars = { + 'ELEMENTAL_INCLUDE': '%(installdir)s/include', + 'ELEMENTAL_LIB': '%(installdir)s/lib', + 'ELEMENTAL_ROOT': '%(installdir)s', +} + +moduleclass = 'math' diff --git a/Golden_Repo/e/Elemental/Elemental-0.87.7-intel-para-2020.eb b/Golden_Repo/e/Elemental/Elemental-0.87.7-intel-para-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..a32b0e6294f2e162a70ee89a79cbc5496089b49a --- /dev/null +++ b/Golden_Repo/e/Elemental/Elemental-0.87.7-intel-para-2020.eb @@ -0,0 +1,75 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild +# +# Authors:: Inge Gutheil <i.gutheil@fz-juelich.de> D.Alvarez <d.alvarez@fz-juelich.de> +# +# This work implements Elemental 0.87.7 +# +# https://computation.llnl.gov/casc/Elemental/main.html +# +## +easyblock = 'CMakeMake' + +name = 'Elemental' +version = '0.87.7' + +homepage = 'http://libelemental.org/download/' +description = """Elemental is an open-source library for distributed-memory dense and sparse-direct linear algebra and +and optimization which builds on top of BLAS, LAPACK, and MPI using modern C++ and additionally exposes interfaces to C +and Python. + +The hybrid version uses a combination of MPI and OpenMP. +Version 0.87.7 has been installed as module in $EBROOTELEMENTAL""" + +examples = """Examples can be found in $EBROOTELEMENTAL/examples""" + +site_contacts = 'I. Gutheil (i.gutheil@fz-juelich.de)' + +toolchain = {'name': 'intel-para', 'version': '2020'} +toolchainopts = {'optarch': True, 'usempi': True, 'openmp': True} + +sources = [SOURCE_TGZ] +source_urls = ['http://libelemental.org/pub/releases'] + +patches = [ + 'elemental-0.87.7_rangehermitianeig.patch' +] + +builddependencies = [ + ('CMake', '3.18.0'), +] + +dependencies = [ + ('ParMETIS', '4.0.3'), +] + +separate_build_dir = 'True' + +configopts = '-DEL_EXAMPLES=ON -DEL_TESTS=ON -DMATH_LIBS="$LIBLAPACK_MT" -DINSTALL_PYTHON_PACKAGE=OFF -DEL_HYBRID=ON ' +configopts += '-DPARMETIS_LIB_DIR=$EBROOTPARMETIS/lib -DPARMETIS_INCLUDE_DIR=$EBROOTPARMETIS/include ' + +postinstallcmds = [ + "cp -r %(builddir)s/%(name)s-%(version)s/examples %(installdir)s/examples", + "chmod 755 %(installdir)s/examples", + "chmod 755 %(installdir)s/examples/*", + "chmod 644 %(installdir)s/examples/blas_like/*", + "chmod 644 %(installdir)s/examples/core/*", + "chmod 644 %(installdir)s/examples/interface/*", + "chmod 644 %(installdir)s/examples/io/*", + "chmod 644 %(installdir)s/examples/lapack_like/*", + "chmod 644 %(installdir)s/examples/matrices/*", + "chmod 644 %(installdir)s/examples/optimization/*", +] + +sanity_check_paths = { + 'files': [], + 'dirs': ['include', 'lib64'], +} + +modextravars = { + 'ELEMENTAL_INCLUDE': '%(installdir)s/include', + 'ELEMENTAL_LIB': '%(installdir)s/lib', + 'ELEMENTAL_ROOT': '%(installdir)s', +} + +moduleclass = 'math' diff --git a/Golden_Repo/e/Elemental/Elemental-0.87.7_ambiguous_template.patch b/Golden_Repo/e/Elemental/Elemental-0.87.7_ambiguous_template.patch new file mode 100644 index 0000000000000000000000000000000000000000..563863fddce0ea3ec4738318734e243d71a4071c --- /dev/null +++ b/Golden_Repo/e/Elemental/Elemental-0.87.7_ambiguous_template.patch @@ -0,0 +1,459 @@ +diff --git a/include/El/blas_like/level1/decl.hpp b/include/El/blas_like/level1/decl.hpp +index e129c0968..7565b88b0 100644 +--- a/include/El/blas_like/level1/decl.hpp ++++ b/include/El/blas_like/level1/decl.hpp +@@ -487,7 +487,7 @@ void Contract( const BlockMatrix<T>& A, BlockMatrix<T>& B ); + template<typename T> + void Copy( const Matrix<T>& A, Matrix<T>& B ); + template<typename S,typename T, +- typename=EnableIf<CanCast<S,T>>> ++ typename=EnableIf<And< CanCast<S,T>, Not<IsSame<S,T>> >>> + void Copy( const Matrix<S>& A, Matrix<T>& B ); + + template<typename S,typename T, +@@ -501,7 +501,7 @@ void Copy( const BlockMatrix<S>& A, BlockMatrix<T>& B ); + template<typename T> + void Copy( const AbstractDistMatrix<T>& A, AbstractDistMatrix<T>& B ); + template<typename S,typename T, +- typename=EnableIf<CanCast<S,T>>> ++ typename=EnableIf<And< CanCast<S,T>, Not<IsSame<S,T>> >>> + void Copy( const AbstractDistMatrix<S>& A, AbstractDistMatrix<T>& B ); + + template<typename T> +@@ -532,7 +532,7 @@ template<typename T> + void Copy( const SparseMatrix<T>& A, SparseMatrix<T>& B ); + + template<typename S,typename T, +- typename=EnableIf<CanCast<S,T>>> ++ typename=EnableIf<And< CanCast<S,T>, Not<IsSame<S,T>> >> > + void Copy( const SparseMatrix<S>& A, SparseMatrix<T>& B ); + + template<typename S,typename T, +@@ -543,7 +543,7 @@ template<typename T> + void Copy( const DistSparseMatrix<T>& A, DistSparseMatrix<T>& B ); + + template<typename S,typename T, +- typename=EnableIf<CanCast<S,T>>> ++ typename=EnableIf<And<CanCast<S,T>,Not<IsSame<S,T>>>>> + void Copy( const DistSparseMatrix<S>& A, DistSparseMatrix<T>& B ); + + template<typename S,typename T, +@@ -559,7 +559,7 @@ template<typename T> + void Copy( const DistMultiVec<T>& A, DistMultiVec<T>& B ); + + template<typename S,typename T, +- typename=EnableIf<CanCast<S,T>>> ++ typename=EnableIf< And< CanCast<S,T>, Not<IsSame<S,T>> > >> + void Copy( const DistMultiVec<S>& A, DistMultiVec<T>& B ); + + template<typename T> +diff --git a/include/El/core.hpp b/include/El/core.hpp +index 02fa0e418..0f89acaed 100644 +--- a/include/El/core.hpp ++++ b/include/El/core.hpp +@@ -102,6 +102,16 @@ enum FortranLogicalEnum + template<typename S,typename T> + using IsSame = std::is_same<S,T>; + ++template<typename S, typename T> ++struct And { ++ static constexpr bool value = S::value && T::value; ++}; ++ ++template<typename T> ++struct Not { ++ static constexpr bool value = !T::value; ++}; ++ + template<typename Condition,class T=void> + using EnableIf = typename std::enable_if<Condition::value,T>::type; + template<typename Condition,class T=void> +diff --git a/src/core/imports/mpi.cpp b/src/core/imports/mpi.cpp +index 845caa34a..473f6f280 100644 +--- a/src/core/imports/mpi.cpp ++++ b/src/core/imports/mpi.cpp +@@ -2845,238 +2845,248 @@ EL_NO_RELEASE_EXCEPT + #endif + } + +-#define MPI_PROTO(T) \ ++#define MPI_PROTO_BASE(T) \ + template bool Test( Request<T>& request ) EL_NO_RELEASE_EXCEPT; \ + template void Wait( Request<T>& request ) EL_NO_RELEASE_EXCEPT; \ + template void Wait( Request<T>& request, Status& status ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void WaitAll( int numRequests, Request<T>* requests ) \ ++ template void WaitAll<T>( int numRequests, Request<T>* requests ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void WaitAll \ ++ template void WaitAll<T> \ + ( int numRequests, Request<T>* requests, Status* statuses ) \ + EL_NO_RELEASE_EXCEPT; \ + template int GetCount<T>( Status& status ) EL_NO_RELEASE_EXCEPT; \ +- template void TaggedSend \ ++ template void TaggedSend<T> \ + ( const T* buf, int count, int to, int tag, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Send( const T* buf, int count, int to, Comm comm ) \ ++ template void Send<T>( const T* buf, int count, int to, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void TaggedSend( T b, int to, int tag, Comm comm ) \ ++ template void TaggedSend<T>( T b, int to, int tag, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Send( T b, int to, Comm comm ) \ ++ template void Send<T>( T b, int to, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void TaggedISend \ +- ( const T* buf, int count, int to, int tag, Comm comm, Request<T>& request ) \ +- EL_NO_RELEASE_EXCEPT; \ +- template void ISend \ ++ template void ISend<T> \ + ( const T* buf, int count, int to, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void TaggedISend \ ++ template void TaggedISend<T> \ + ( T buf, int to, int tag, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void ISend( T buf, int to, Comm comm, Request<T>& request ) \ ++ template void ISend<T>( T buf, int to, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void TaggedISSend \ ++ template void TaggedISSend<T> \ + ( const T* buf, int count, int to, int tag, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void ISSend \ ++ template void ISSend<T> \ + ( const T* buf, int count, int to, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void TaggedISSend \ ++ template void TaggedISSend<T> \ + ( T b, int to, int tag, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void TaggedRecv \ ++ template void TaggedRecv<T> \ + ( T* buf, int count, int from, int tag, Comm comm ) EL_NO_RELEASE_EXCEPT; \ +- template void Recv( T* buf, int count, int from, Comm comm ) \ ++ template void Recv<T>( T* buf, int count, int from, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ + template T TaggedRecv<T>( int from, int tag, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template T Recv( int from, Comm comm ) EL_NO_RELEASE_EXCEPT; \ +- template void TaggedIRecv \ ++ template T Recv<T>( int from, Comm comm ) EL_NO_RELEASE_EXCEPT; \ ++ template void TaggedIRecv<T> \ + ( T* buf, int count, int from, int tag, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void IRecv \ ++ template void IRecv<T> \ + ( T* buf, int count, int from, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ + template T TaggedIRecv<T> \ + ( int from, int tag, Comm comm, Request<T>& request ) EL_NO_RELEASE_EXCEPT; \ + template T IRecv<T>( int from, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void TaggedSendRecv \ ++ template void TaggedSendRecv<T> \ + ( const T* sbuf, int sc, int to, int stag, \ + T* rbuf, int rc, int from, int rtag, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void SendRecv \ ++ template void SendRecv<T> \ + ( const T* sbuf, int sc, int to, \ + T* rbuf, int rc, int from, Comm comm ) EL_NO_RELEASE_EXCEPT; \ +- template T TaggedSendRecv \ ++ template T TaggedSendRecv<T> \ + ( T sb, int to, int stag, int from, int rtag, Comm comm ); \ + template T SendRecv( T sb, int to, int from, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void TaggedSendRecv \ ++ template void TaggedSendRecv<T> \ + ( T* buf, int count, int to, int stag, int from, int rtag, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void SendRecv \ ++ template void SendRecv<T> \ + ( T* buf, int count, int to, int from, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Broadcast( T* buf, int count, int root, Comm comm ) \ ++ template void Broadcast<T>( T& b, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Broadcast( T& b, int root, Comm comm ) \ +- EL_NO_RELEASE_EXCEPT; \ +- template void IBroadcast \ ++ template void IBroadcast<T> \ + ( T* buf, int count, int root, Comm comm, Request<T>& request ); \ +- template void IBroadcast \ ++ template void IBroadcast<T> \ + ( T& b, int root, Comm comm, Request<T>& request ); \ +- template void Gather \ +- ( const T* sbuf, int sc, T* rbuf, int rc, int root, Comm comm ) \ +- EL_NO_RELEASE_EXCEPT; \ +- template void IGather \ ++ template void IGather<T> \ + ( const T* sbuf, int sc, \ + T* rbuf, int rc, \ + int root, Comm comm, Request<T>& request ); \ +- template void Gather \ +- ( const T* sbuf, int sc, \ +- T* rbuf, const int* rcs, const int* rds, int root, Comm comm ) \ ++ template vector<T> AllToAll<T> \ ++ ( const vector<T>& sendBuf, \ ++ const vector<int>& sendCounts, \ ++ const vector<int>& sendOffs, \ ++ Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void AllGather( const T* sbuf, int sc, T* rbuf, int rc, Comm comm ) \ ++ template void Reduce<T> \ ++ ( const T* sbuf, T* rbuf, int count, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void AllGather \ +- ( const T* sbuf, int sc, \ +- T* rbuf, const int* rcs, const int* rds, Comm comm ) \ ++ template T Reduce<T>( T sb, Op op, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Scatter \ +- ( const T* sbuf, int sc, \ +- T* rbuf, int rc, int root, Comm comm ) \ ++ template T Reduce<T>( T sb, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Scatter( T* buf, int sc, int rc, int root, Comm comm ) \ ++ template void Reduce<T>( T* buf, int count, Op op, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void AllToAll \ +- ( const T* sbuf, int sc, \ +- T* rbuf, int rc, Comm comm ) \ ++ template void Reduce<T>( T* buf, int count, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void AllToAll \ +- ( const T* sbuf, const int* scs, const int* sds, \ +- T* rbuf, const int* rcs, const int* rds, Comm comm ) \ ++ template void AllReduce<T>( const T* sbuf, T* rbuf, int count, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template vector<T> AllToAll \ +- ( const vector<T>& sendBuf, \ +- const vector<int>& sendCounts, \ +- const vector<int>& sendOffs, \ +- Comm comm ) \ ++ template T AllReduce<T>( T sb, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Reduce \ +- ( const T* sbuf, T* rbuf, int count, Op op, int root, Comm comm ) \ ++ template T AllReduce<T>( T sb, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Reduce \ +- ( const T* sbuf, T* rbuf, int count, int root, Comm comm ) \ ++ template void AllReduce<T>( T* buf, int count, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template T Reduce( T sb, Op op, int root, Comm comm ) \ ++ template void ReduceScatter<T>( T* sbuf, T* rbuf, int rc, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template T Reduce( T sb, int root, Comm comm ) \ ++ template void ReduceScatter<T>( T* sbuf, T* rbuf, int rc, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Reduce( T* buf, int count, Op op, int root, Comm comm ) \ ++ template T ReduceScatter<T>( T sb, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Reduce( T* buf, int count, int root, Comm comm ) \ ++ template T ReduceScatter<T>( T sb, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void AllReduce \ +- ( const T* sbuf, T* rbuf, int count, Op op, Comm comm ) \ ++ template void ReduceScatter<T>( T* buf, int rc, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void AllReduce( const T* sbuf, T* rbuf, int count, Comm comm ) \ ++ template void ReduceScatter<T>( T* buf, int rc, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template T AllReduce( T sb, Op op, Comm comm ) \ ++ template void ReduceScatter<T> \ ++ ( const T* sbuf, T* rbuf, const int* rcs, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template T AllReduce( T sb, Comm comm ) \ ++ template void ReduceScatter<T> \ ++ ( const T* sbuf, T* rbuf, const int* rcs, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void AllReduce( T* buf, int count, Op op, Comm comm ) \ ++ template void Scan<T>( const T* sbuf, T* rbuf, int count, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void AllReduce( T* buf, int count, Comm comm ) \ ++ template void Scan<T>( const T* sbuf, T* rbuf, int count, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void ReduceScatter( T* sbuf, T* rbuf, int rc, Op op, Comm comm ) \ ++ template T Scan<T>( T sb, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void ReduceScatter( T* sbuf, T* rbuf, int rc, Comm comm ) \ ++ template T Scan<T>( T sb, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template T ReduceScatter( T sb, Op op, Comm comm ) \ ++ template void Scan<T>( T* buf, int count, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template T ReduceScatter( T sb, Comm comm ) \ ++ template void Scan<T>( T* buf, int count, Comm comm ) \ ++ EL_NO_RELEASE_EXCEPT; ++ ++#define MPI_PROTO_DIFF(S,T) \ ++ template void TaggedISend<S> \ ++ ( const T* buf, int count, int to, int tag, Comm comm, Request<T>& request ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void ReduceScatter( T* buf, int rc, Op op, Comm comm ) \ ++ template void Broadcast<S>( T* buf, int count, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void ReduceScatter( T* buf, int rc, Comm comm ) \ ++ template void Gather<S> \ ++ ( const T* sbuf, int sc, T* rbuf, int rc, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void ReduceScatter \ +- ( const T* sbuf, T* rbuf, const int* rcs, Op op, Comm comm ) \ ++ template void Gather<S> \ ++ ( const T* sbuf, int sc, \ ++ T* rbuf, const int* rcs, const int* rds, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void ReduceScatter \ +- ( const T* sbuf, T* rbuf, const int* rcs, Comm comm ) \ ++ template void AllGather<S>( const T* sbuf, int sc, T* rbuf, int rc, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Scan( const T* sbuf, T* rbuf, int count, Op op, Comm comm ) \ ++ template void AllGather<S> \ ++ ( const T* sbuf, int sc, \ ++ T* rbuf, const int* rcs, const int* rds, Comm comm ) \ ++ EL_NO_RELEASE_EXCEPT; \ ++ template void Scatter<S> \ ++ ( const T* sbuf, int sc, \ ++ T* rbuf, int rc, int root, Comm comm ) \ ++ EL_NO_RELEASE_EXCEPT; \ ++ template void Scatter<S>( T* buf, int sc, int rc, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Scan( const T* sbuf, T* rbuf, int count, Comm comm ) \ ++ template void AllToAll<S> \ ++ ( const T* sbuf, int sc, \ ++ T* rbuf, int rc, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template T Scan( T sb, Op op, Comm comm ) \ ++ template void AllToAll<S> \ ++ ( const T* sbuf, const int* scs, const int* sds, \ ++ T* rbuf, const int* rcs, const int* rds, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template T Scan( T sb, Comm comm ) \ ++ template void Reduce<S> \ ++ ( const T* sbuf, T* rbuf, int count, Op op, int root, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Scan( T* buf, int count, Op op, Comm comm ) \ ++ template void AllReduce<S> \ ++ ( const T* sbuf, T* rbuf, int count, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; \ +- template void Scan( T* buf, int count, Comm comm ) \ ++ template void AllReduce<S>( T* buf, int count, Op op, Comm comm ) \ + EL_NO_RELEASE_EXCEPT; + +-MPI_PROTO(byte) +-MPI_PROTO(int) +-MPI_PROTO(unsigned) +-MPI_PROTO(long int) +-MPI_PROTO(unsigned long) ++#define MPI_PROTO_REAL(T) \ ++ MPI_PROTO_BASE(T) \ ++ MPI_PROTO_DIFF(T, T) ++ ++#define MPI_PROTO_COMPLEX(T) \ ++ MPI_PROTO_BASE(Complex<T>) \ ++ MPI_PROTO_DIFF(T, Complex<T>) ++ ++MPI_PROTO_REAL(byte) ++MPI_PROTO_REAL(int) ++MPI_PROTO_REAL(unsigned) ++MPI_PROTO_REAL(long int) ++MPI_PROTO_REAL(unsigned long) + #ifdef EL_HAVE_MPI_LONG_LONG +-MPI_PROTO(long long int) +-MPI_PROTO(unsigned long long) ++MPI_PROTO_REAL(long long int) ++MPI_PROTO_REAL(unsigned long long) + #endif +-MPI_PROTO(ValueInt<Int>) +-MPI_PROTO(Entry<Int>) +-MPI_PROTO(float) +-MPI_PROTO(Complex<float>) +-MPI_PROTO(ValueInt<float>) +-MPI_PROTO(ValueInt<Complex<float>>) +-MPI_PROTO(Entry<float>) +-MPI_PROTO(Entry<Complex<float>>) +-MPI_PROTO(double) +-MPI_PROTO(Complex<double>) +-MPI_PROTO(ValueInt<double>) +-MPI_PROTO(ValueInt<Complex<double>>) +-MPI_PROTO(Entry<double>) +-MPI_PROTO(Entry<Complex<double>>) ++MPI_PROTO_REAL(ValueInt<Int>) ++MPI_PROTO_REAL(Entry<Int>) ++MPI_PROTO_REAL(float) ++MPI_PROTO_COMPLEX(float) ++MPI_PROTO_REAL(ValueInt<float>) ++MPI_PROTO_REAL(ValueInt<Complex<float>>) ++MPI_PROTO_REAL(Entry<float>) ++MPI_PROTO_REAL(Entry<Complex<float>>) ++MPI_PROTO_REAL(double) ++MPI_PROTO_COMPLEX(double) ++MPI_PROTO_REAL(ValueInt<double>) ++MPI_PROTO_REAL(ValueInt<Complex<double>>) ++MPI_PROTO_REAL(Entry<double>) ++MPI_PROTO_REAL(Entry<Complex<double>>) + #ifdef EL_HAVE_QD +-MPI_PROTO(DoubleDouble) +-MPI_PROTO(QuadDouble) +-MPI_PROTO(Complex<DoubleDouble>) +-MPI_PROTO(Complex<QuadDouble>) +-MPI_PROTO(ValueInt<DoubleDouble>) +-MPI_PROTO(ValueInt<QuadDouble>) +-MPI_PROTO(ValueInt<Complex<DoubleDouble>>) +-MPI_PROTO(ValueInt<Complex<QuadDouble>>) +-MPI_PROTO(Entry<DoubleDouble>) +-MPI_PROTO(Entry<QuadDouble>) +-MPI_PROTO(Entry<Complex<DoubleDouble>>) +-MPI_PROTO(Entry<Complex<QuadDouble>>) ++MPI_PROTO_REAL(DoubleDouble) ++MPI_PROTO_REAL(QuadDouble) ++MPI_PROTO_COMPLEX(DoubleDouble) ++MPI_PROTO_COMPLEX(QuadDouble) ++MPI_PROTO_REAL(ValueInt<DoubleDouble>) ++MPI_PROTO_REAL(ValueInt<QuadDouble>) ++MPI_PROTO_REAL(ValueInt<Complex<DoubleDouble>>) ++MPI_PROTO_REAL(ValueInt<Complex<QuadDouble>>) ++MPI_PROTO_REAL(Entry<DoubleDouble>) ++MPI_PROTO_REAL(Entry<QuadDouble>) ++MPI_PROTO_REAL(Entry<Complex<DoubleDouble>>) ++MPI_PROTO_REAL(Entry<Complex<QuadDouble>>) + #endif + #ifdef EL_HAVE_QUAD +-MPI_PROTO(Quad) +-MPI_PROTO(Complex<Quad>) +-MPI_PROTO(ValueInt<Quad>) +-MPI_PROTO(ValueInt<Complex<Quad>>) +-MPI_PROTO(Entry<Quad>) +-MPI_PROTO(Entry<Complex<Quad>>) ++MPI_PROTO_REAL(Quad) ++MPI_PROTO_COMPLEX(Quad) ++MPI_PROTO_REAL(ValueInt<Quad>) ++MPI_PROTO_REAL(ValueInt<Complex<Quad>>) ++MPI_PROTO_REAL(Entry<Quad>) ++MPI_PROTO_REAL(Entry<Complex<Quad>>) + #endif + #ifdef EL_HAVE_MPC +-MPI_PROTO(BigInt) +-MPI_PROTO(BigFloat) +-MPI_PROTO(Complex<BigFloat>) +-MPI_PROTO(ValueInt<BigInt>) +-MPI_PROTO(ValueInt<BigFloat>) +-MPI_PROTO(ValueInt<Complex<BigFloat>>) +-MPI_PROTO(Entry<BigInt>) +-MPI_PROTO(Entry<BigFloat>) +-MPI_PROTO(Entry<Complex<BigFloat>>) ++MPI_PROTO_REAL(BigInt) ++MPI_PROTO_REAL(BigFloat) ++MPI_PROTO_REAL(Complex<BigFloat>) ++MPI_PROTO_REAL(ValueInt<BigInt>) ++MPI_PROTO_REAL(ValueInt<BigFloat>) ++MPI_PROTO_REAL(ValueInt<Complex<BigFloat>>) ++MPI_PROTO_REAL(Entry<BigInt>) ++MPI_PROTO_REAL(Entry<BigFloat>) ++MPI_PROTO_REAL(Entry<Complex<BigFloat>>) + #endif + + #define PROTO(T) \ diff --git a/Golden_Repo/e/Elemental/elemental-0.87.7_rangehermitianeig.patch b/Golden_Repo/e/Elemental/elemental-0.87.7_rangehermitianeig.patch new file mode 100644 index 0000000000000000000000000000000000000000..f94ee5c6fa22f8c139dad98601e2f6f5fec5f7d4 --- /dev/null +++ b/Golden_Repo/e/Elemental/elemental-0.87.7_rangehermitianeig.patch @@ -0,0 +1,921 @@ +--- Elemental-0.87.7/src/lapack_like/spectral/BidiagSVD.cpp 2017-02-07 02:23:30.000000000 +0100 ++++ Elemental-0.87.7_ok/src/lapack_like/spectral/BidiagSVD.cpp 2017-04-21 11:00:49.566845000 +0200 +@@ -1,5 +1,5 @@ + /* +- Copyright (c) 2009-2016, Jack Poulson ++ Copyright (c) 2009-2017, Jack Poulson + All rights reserved. + + This file is part of Elemental and is under the BSD 2-Clause License, +--- Elemental-0.87.7/src/lapack_like/spectral/HermitianEig.cpp 2017-02-07 02:23:30.000000000 +0100 ++++ Elemental-0.87.7_ok/src/lapack_like/spectral/HermitianEig.cpp 2017-04-21 11:01:19.743963000 +0200 +@@ -1,9 +1,9 @@ + /* +- Copyright (c) 2009-2016, Jack Poulson ++ Copyright (c) 2009-2017, Jack Poulson + All rights reserved. + +- This file is part of Elemental and is under the BSD 2-Clause License, +- which can be found in the LICENSE file in the root directory, or at ++ This file is part of Elemental and is under the BSD 2-Clause License, ++ which can be found in the LICENSE file in the root directory, or at + http://opensource.org/licenses/BSD-2-Clause + */ + #include <El.hpp> +@@ -78,8 +78,8 @@ + + namespace herm_eig { + +-// We create specialized redistribution routines for redistributing the +-// real eigenvectors of the symmetric tridiagonal matrix at the core of our ++// We create specialized redistribution routines for redistributing the ++// real eigenvectors of the symmetric tridiagonal matrix at the core of our + // eigensolver in order to minimize the temporary memory usage. + template<typename F> + void InPlaceRedist( DistMatrix<F>& Q, Int rowAlign, const Base<F>* readBuffer ) +@@ -101,7 +101,7 @@ + const Int maxHeight = MaxLength(height,r); + const Int maxWidth = MaxLength(width,p); + const Int portionSize = mpi::Pad( maxHeight*maxWidth ); +- ++ + // Allocate our send/recv buffers + vector<Real> buffer(2*r*portionSize); + Real* sendBuffer = &buffer[0]; +@@ -119,7 +119,7 @@ + EL_INNER_PARALLEL_FOR_COLLAPSE2 + for( Int j=0; j<localWidth; ++j ) + for( Int i=0; i<thisLocalHeight; ++i ) +- data[i+j*thisLocalHeight] = ++ data[i+j*thisLocalHeight] = + readBuffer[thisColShift+i*r+j*height]; + } + +@@ -172,7 +172,7 @@ + HermitianEigInfo + BlackBox + ( UpperOrLower uplo, +- Matrix<F>& A, ++ Matrix<F>& A, + Matrix<Base<F>>& w, + const HermitianEigCtrl<F>& ctrl ) + { +@@ -205,13 +205,13 @@ + const Int n = A.Height(); + Int numValid = n; + if( subset.indexSubset ) +- { ++ { + numValid = subset.upperIndex-subset.lowerIndex+1; + } + else if( subset.rangeSubset ) + { + if( subset.lowerBound >= Real(0) || subset.upperBound < Real(0) ) +- { ++ { + numValid = 0; + } + } +@@ -256,7 +256,7 @@ + HermitianEigInfo + HermitianEig + ( UpperOrLower uplo, +- Matrix<F>& A, ++ Matrix<F>& A, + Matrix<Base<F>>& w, + const HermitianEigCtrl<F>& ctrl ) + { +@@ -279,7 +279,7 @@ + HermitianEigInfo + SequentialHelper + ( UpperOrLower uplo, +- AbstractDistMatrix<F>& A, ++ AbstractDistMatrix<F>& A, + AbstractDistMatrix<Base<F>>& w, + const HermitianEigCtrl<F>& ctrl ) + { +@@ -314,7 +314,8 @@ + + + #ifdef EL_HAVE_SCALAPACK +-template<typename F,typename=EnableIf<IsBlasScalar<Base<F>>>> ++template<typename F, ++ typename=EnableIf<IsBlasScalar<Base<F>>>> + HermitianEigInfo + ScaLAPACKHelper + ( UpperOrLower uplo, +@@ -367,7 +368,9 @@ + return info; + } + +-template<typename F,typename=DisableIf<IsBlasScalar<Base<F>>>,typename=void> ++template<typename F, ++ typename=DisableIf<IsBlasScalar<Base<F>>>, ++ typename=void> + HermitianEigInfo + ScaLAPACKHelper + ( UpperOrLower uplo, +@@ -426,7 +429,7 @@ + else if( subset.rangeSubset ) + { + if( subset.lowerBound >= Real(0) || subset.upperBound < Real(0) ) +- { ++ { + numValid = 0; + } + } +@@ -451,7 +454,7 @@ + if( A.Grid().Rank() == 0 ) + timer.Start(); + } +- ++ + // Tridiagonalize A + herm_tridiag::ExplicitCondensed( uplo, A, ctrl.tridiagCtrl ); + +@@ -540,7 +543,7 @@ + ( UpperOrLower uplo, + Matrix<F>& A, + Matrix<Base<F>>& w, +- Matrix<F>& Q, ++ Matrix<F>& Q, + const HermitianEigCtrl<F>& ctrl ) + { + EL_DEBUG_CSE +@@ -566,14 +569,14 @@ + ( UpperOrLower uplo, + AbstractDistMatrix<F>& APre, + AbstractDistMatrix<Base<F>>& w, +- AbstractDistMatrix<F>& QPre, ++ AbstractDistMatrix<F>& QPre, + const HermitianEigCtrl<F>& ctrl ) + { + EL_DEBUG_CSE + const Grid& g = APre.Grid(); + HermitianEigInfo info; + +- DistMatrixReadProxy<F,F,MC,MR> AProx( APre ); ++ DistMatrixReadProxy<F,F,MC,MR> AProx( APre ); + auto& A = AProx.Get(); + + // TODO(poulson): Extend interface to support ctrl.tridiagCtrl +@@ -613,7 +616,7 @@ + ( UpperOrLower uplo, + Matrix<F>& A, + Matrix<Base<F>>& w, +- Matrix<F>& Q, ++ Matrix<F>& Q, + const HermitianEigCtrl<F>& ctrl ) + { + EL_DEBUG_CSE +@@ -648,13 +651,13 @@ + const Int n = A.Height(); + Int numValid = n; + if( subset.indexSubset ) +- { ++ { + numValid = subset.upperIndex-subset.lowerIndex+1; + } + else if( subset.rangeSubset ) + { + if( subset.lowerBound >= Real(0) || subset.upperBound < Real(0) ) +- { ++ { + numValid = 0; + } + } +@@ -701,9 +704,9 @@ + HermitianEigInfo + SequentialHelper + ( UpperOrLower uplo, +- AbstractDistMatrix<F>& A, ++ AbstractDistMatrix<F>& A, + AbstractDistMatrix<Base<F>>& w, +- AbstractDistMatrix<F>& Q, ++ AbstractDistMatrix<F>& Q, + const HermitianEigCtrl<F>& ctrl ) + { + EL_DEBUG_CSE +@@ -728,7 +731,7 @@ + Matrix<Base<F>> wProx; + Matrix<F> QProx; + wProx.Resize( n, 1 ); +- QProx.Resize( n, n ); ++ QProx.Resize( n, n ); + + info = HermitianEig( uplo, A.Matrix(), wProx, QProx, ctrl ); + +@@ -749,7 +752,8 @@ + } + + #ifdef EL_HAVE_SCALAPACK +-template<typename F,typename=EnableIf<IsBlasScalar<Base<F>>>> ++template<typename F, ++ typename=EnableIf<IsBlasScalar<Base<F>>>> + HermitianEigInfo + ScaLAPACKHelper + ( UpperOrLower uplo, +@@ -816,7 +820,9 @@ + return info; + } + +-template<typename F,typename=DisableIf<IsBlasScalar<Base<F>>>,typename=void> ++template<typename F, ++ typename=DisableIf<IsBlasScalar<Base<F>>>, ++ typename=void> + HermitianEigInfo + ScaLAPACKHelper + ( UpperOrLower uplo, +@@ -890,18 +896,18 @@ + else + kEst = n; + +- // We will use the same buffer for Q in the vector distribution used by +- // PMRRR as for the matrix distribution used by Elemental. In order to ++ // We will use the same buffer for Q in the vector distribution used by ++ // PMRRR as for the matrix distribution used by Elemental. In order to + // do so, we must pad Q's dimensions slightly. + const Int N = MaxLength(n,g.Height())*g.Height(); +- const Int K = MaxLength(kEst,g.Size())*g.Size(); ++ const Int K = MaxLength(kEst,g.Size())*g.Size(); + + ElementalProxyCtrl proxCtrl; + proxCtrl.colConstrain = true; + proxCtrl.rowConstrain = true; + proxCtrl.colAlign = 0; + proxCtrl.rowAlign = 0; +- ++ + DistMatrixWriteProxy<F,F,MC,MR> QProx( QPre, proxCtrl ); + auto& Q = QProx.Get(); + +@@ -941,14 +947,14 @@ + + const Int k = w.Height(); + { +- // Redistribute Q piece-by-piece in place. This is to keep the ++ // Redistribute Q piece-by-piece in place. This is to keep the + // send/recv buffer memory usage low. + const Int p = g.Size(); + const Int numEqualPanels = K/p; + const Int numPanelsPerComm = (numEqualPanels / TARGET_CHUNKS) + 1; + const Int nbProp = numPanelsPerComm*p; + +- // Manually maintain information about the implicit Q[* ,VR] stored ++ // Manually maintain information about the implicit Q[* ,VR] stored + // at the end of the Q[MC,MR] buffers. + Int alignment = 0; + const Real* readBuffer = Q_STAR_VR.LockedBuffer(); +@@ -1104,7 +1110,7 @@ + } + + auto sortPairs = TaggedSort( w, ctrl.tridiagEigCtrl.sort ); +- for( Int j=0; j<n; ++j ) ++ for( Int j=0; j<w.Height(); ++j ) + w.Set( j, 0, sortPairs[j].value ); + ApplyTaggedSortToEachRow( sortPairs, Q ); + +--- Elemental-0.87.7/src/lapack_like/spectral/HermitianTridiagEig.cpp 2017-02-07 02:23:30.000000000 +0100 ++++ Elemental-0.87.7_ok/src/lapack_like/spectral/HermitianTridiagEig.cpp 2017-04-21 11:01:34.618650000 +0200 +@@ -1,9 +1,9 @@ + /* +- Copyright (c) 2009-2016, Jack Poulson ++ Copyright (c) 2009-2017, Jack Poulson + All rights reserved. + +- This file is part of Elemental and is under the BSD 2-Clause License, +- which can be found in the LICENSE file in the root directory, or at ++ This file is part of Elemental and is under the BSD 2-Clause License, ++ which can be found in the LICENSE file in the root directory, or at + http://opensource.org/licenses/BSD-2-Clause + */ + #include <El.hpp> +@@ -315,7 +315,7 @@ + { + EL_DEBUG_CSE + HermitianTridiagEigInfo info; +- w = d; ++ w = d; + info.qrInfo = QRAlg( w, dSub, ctrl ); + herm_eig::SortAndFilter( w, ctrl ); + return info; +@@ -332,6 +332,8 @@ + EL_DEBUG_CSE + HermitianTridiagEigInfo info; + auto ctrlMod( ctrl ); ++ ctrlMod.subset.indexSubset = false; ++ ctrlMod.subset.rangeSubset = false; + ctrlMod.wantEigVecs = false; + Matrix<Real> Q; + info.dcInfo = DivideAndConquer( d, dSub, w, Q, ctrlMod ); +@@ -339,7 +341,8 @@ + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + LAPACKHelper + ( Matrix<Real>& d, +@@ -355,7 +358,7 @@ + if( ctrl.subset.rangeSubset ) + { + const Int k = lapack::SymmetricTridiagEig +- ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), ++ ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), + ctrl.subset.lowerBound, ctrl.subset.upperBound ); + w.Resize( k, 1 ); + } +@@ -363,7 +366,7 @@ + { + const Int numEig = ctrl.subset.upperIndex-ctrl.subset.lowerIndex+1; + lapack::SymmetricTridiagEig +- ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), ++ ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), + BlasInt(ctrl.subset.lowerIndex), + BlasInt(ctrl.subset.upperIndex) ); + w.Resize( numEig, 1 ); +@@ -376,7 +379,8 @@ + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + Helper + ( const Matrix<Real>& d, +@@ -403,7 +407,9 @@ + return LAPACKHelper( dMod, dSubMod, w, ctrl ); + } + +-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void> ++template<typename Real, ++ typename=DisableIf<IsBlasScalar<Real>>, ++ typename=void> + HermitianTridiagEigInfo + Helper + ( const Matrix<Real>& d, +@@ -462,7 +468,7 @@ + QRHelper + ( const AbstractDistMatrix<Real>& d, + const AbstractDistMatrix<Real>& dSub, +- AbstractDistMatrix<Real>& w, ++ AbstractDistMatrix<Real>& w, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -515,6 +521,8 @@ + auto& w = wProx.Get(); + + auto ctrlMod( ctrl ); ++ ctrlMod.subset.indexSubset = false; ++ ctrlMod.subset.rangeSubset = false; + ctrlMod.wantEigVecs = false; + DistMatrix<Real> Q(w.Grid()); + info.dcInfo = +@@ -546,6 +554,8 @@ + auto& w = wProx.Get(); + + auto ctrlMod( ctrl ); ++ ctrlMod.subset.indexSubset = false; ++ ctrlMod.subset.rangeSubset = false; + ctrlMod.wantEigVecs = false; + DistMatrix<Real> Q(w.Grid()); + info.dcInfo = +@@ -555,7 +565,8 @@ + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + MRRRHelper + ( const AbstractDistMatrix<Real>& d, +@@ -586,17 +597,17 @@ + herm_tridiag_eig::Info rangeInfo; + if( ctrl.subset.rangeSubset ) + rangeInfo = herm_tridiag_eig::Eig +- ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), +- wVector.data(), w.ColComm(), ++ ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), ++ wVector.data(), w.ColComm(), + ctrl.subset.lowerBound, ctrl.subset.upperBound ); + else if( ctrl.subset.indexSubset ) + rangeInfo = herm_tridiag_eig::Eig +- ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), +- wVector.data(), w.ColComm(), ++ ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), ++ wVector.data(), w.ColComm(), + int(ctrl.subset.lowerIndex), int(ctrl.subset.upperIndex) ); + else + rangeInfo = herm_tridiag_eig::Eig +- ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), ++ ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), + wVector.data(), w.ColComm() ); + w.Resize( rangeInfo.numGlobalEigenvalues, 1 ); + for( Int iLoc=0; iLoc<w.LocalHeight(); ++iLoc ) +@@ -606,7 +617,8 @@ + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + Helper + ( const AbstractDistMatrix<Real>& d, +@@ -629,12 +641,14 @@ + } + } + +-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void> ++template<typename Real, ++ typename=DisableIf<IsBlasScalar<Real>>, ++ typename=void> + HermitianTridiagEigInfo + Helper + ( const AbstractDistMatrix<Real>& d, + const AbstractDistMatrix<Real>& dSub, +- AbstractDistMatrix<Real>& w, ++ AbstractDistMatrix<Real>& w, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -648,12 +662,13 @@ + } + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + MRRRHelper + ( const AbstractDistMatrix<Real >& d, + const AbstractDistMatrix<Complex<Real>>& dSub, +- AbstractDistMatrix<Real >& wPre, ++ AbstractDistMatrix<Real >& wPre, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -711,12 +726,13 @@ + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + Helper + ( const AbstractDistMatrix<Real >& d, + const AbstractDistMatrix<Complex<Real>>& dSub, +- AbstractDistMatrix<Real >& wPre, ++ AbstractDistMatrix<Real >& wPre, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -734,12 +750,14 @@ + } + } + +-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void> ++template<typename Real, ++ typename=DisableIf<IsBlasScalar<Real>>, ++ typename=void> + HermitianTridiagEigInfo + Helper + ( const AbstractDistMatrix<Real >& d, + const AbstractDistMatrix<Complex<Real>>& dSub, +- AbstractDistMatrix<Real >& w, ++ AbstractDistMatrix<Real >& w, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -760,7 +778,7 @@ + HermitianTridiagEig + ( const AbstractDistMatrix<Base<F>>& d, + const AbstractDistMatrix<F >& dSub, +- AbstractDistMatrix<Base<F>>& w, ++ AbstractDistMatrix<Base<F>>& w, + const HermitianTridiagEigCtrl<Base<F>>& ctrl ) + { + EL_DEBUG_CSE +@@ -783,7 +801,7 @@ + { + EL_DEBUG_CSE + HermitianTridiagEigInfo info; +- w = d; ++ w = d; + info.qrInfo = QRAlg( w, dSub, Q, ctrl ); + herm_eig::SortAndFilter( w, Q, ctrl ); + return info; +@@ -806,13 +824,17 @@ + } + else + { +- info.dcInfo = DivideAndConquer( d, dSub, w, Q, ctrl ); ++ auto ctrlMod( ctrl ); ++ ctrlMod.subset.indexSubset = false; ++ ctrlMod.subset.rangeSubset = false; ++ info.dcInfo = DivideAndConquer( d, dSub, w, Q, ctrlMod ); + herm_eig::SortAndFilter( w, Q, ctrl ); + } + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + LAPACKHelper + ( Matrix<Real>& d, +@@ -831,7 +853,7 @@ + { + Q.Resize( n, n ); + const Int k = lapack::SymmetricTridiagEig +- ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), ++ ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), + Q.Buffer(), BlasInt(Q.LDim()), + ctrl.subset.lowerBound, ctrl.subset.upperBound ); + w.Resize( k, 1 ); +@@ -842,7 +864,7 @@ + const Int numEig = ctrl.subset.upperIndex-ctrl.subset.lowerIndex+1; + Q.Resize( n, numEig ); + lapack::SymmetricTridiagEig +- ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), ++ ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), + Q.Buffer(), BlasInt(Q.LDim()), + BlasInt(ctrl.subset.lowerIndex), + BlasInt(ctrl.subset.upperIndex) ); +@@ -852,7 +874,7 @@ + { + Q.Resize( n, n ); + lapack::SymmetricTridiagEig +- ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), ++ ( BlasInt(n), d.Buffer(), dSub.Buffer(), w.Buffer(), + Q.Buffer(), BlasInt(Q.LDim()) ); + } + auto sortPairs = TaggedSort( w, ctrl.sort ); +@@ -863,7 +885,8 @@ + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + Helper + ( const Matrix<Real>& d, +@@ -894,7 +917,9 @@ + } + } + +-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void> ++template<typename Real, ++ typename=DisableIf<IsBlasScalar<Real>>, ++ typename=void> + HermitianTridiagEigInfo + Helper + ( const Matrix<Real>& d, +@@ -925,7 +950,7 @@ + Helper + ( const Matrix<Real>& d, + const Matrix<Complex<Real>>& dSub, +- Matrix<Real>& w, ++ Matrix<Real>& w, + Matrix<Complex<Real>>& Q, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { +@@ -953,7 +978,7 @@ + ( const Matrix<Base<F>>& d, + const Matrix<F>& dSub, + Matrix<Base<F>>& w, +- Matrix<F>& Q, ++ Matrix<F>& Q, + const HermitianTridiagEigCtrl<Base<F>>& ctrl ) + { + EL_DEBUG_CSE +@@ -967,8 +992,8 @@ + QRHelper + ( const AbstractDistMatrix<Real>& d, + const AbstractDistMatrix<Real>& dSub, +- AbstractDistMatrix<Real>& w, +- AbstractDistMatrix<Real>& QPre, ++ AbstractDistMatrix<Real>& w, ++ AbstractDistMatrix<Real>& QPre, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -1000,8 +1025,8 @@ + QRHelper + ( const AbstractDistMatrix<Real >& d, + const AbstractDistMatrix<Complex<Real>>& dSub, +- AbstractDistMatrix<Real >& w, +- AbstractDistMatrix<Complex<Real>>& QPre, ++ AbstractDistMatrix<Real >& w, ++ AbstractDistMatrix<Complex<Real>>& QPre, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -1048,8 +1073,8 @@ + DCHelper + ( const AbstractDistMatrix<Real>& d, + const AbstractDistMatrix<Real>& dSub, +- AbstractDistMatrix<Real>& wPre, +- AbstractDistMatrix<Real>& QPre, ++ AbstractDistMatrix<Real>& wPre, ++ AbstractDistMatrix<Real>& QPre, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -1066,9 +1091,12 @@ + auto& w = wProx.Get(); + DistMatrixWriteProxy<Real,Real,MC,MR> QProx( QPre ); + auto& Q = QProx.Get(); ++ auto ctrlMod( ctrl ); ++ ctrlMod.subset.indexSubset = false; ++ ctrlMod.subset.rangeSubset = false; + info.dcInfo = + DivideAndConquer +- ( d_STAR_STAR.Matrix(), dSub_STAR_STAR.Matrix(), w, Q, ctrl ); ++ ( d_STAR_STAR.Matrix(), dSub_STAR_STAR.Matrix(), w, Q, ctrlMod ); + herm_eig::SortAndFilter( w, Q, ctrl ); + } + +@@ -1107,9 +1135,12 @@ + DistMatrixWriteProxy<Real,Real,STAR,STAR> wProx( wPre ); + auto& w = wProx.Get(); + ++ auto ctrlMod( ctrl ); ++ ctrlMod.subset.indexSubset = false; ++ ctrlMod.subset.rangeSubset = false; + info.dcInfo = + DivideAndConquer +- ( d_STAR_STAR.Matrix(), dSubReal.Matrix(), w, QReal, ctrl ); ++ ( d_STAR_STAR.Matrix(), dSubReal.Matrix(), w, QReal, ctrlMod ); + herm_eig::SortAndFilter( w, QReal, ctrl ); + + Copy( QReal, Q ); +@@ -1119,13 +1150,14 @@ + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + MRRRHelper + ( const AbstractDistMatrix<Real>& d, + const AbstractDistMatrix<Real>& dSub, +- AbstractDistMatrix<Real>& wPre, +- AbstractDistMatrix<Real>& QPre, ++ AbstractDistMatrix<Real>& wPre, ++ AbstractDistMatrix<Real>& QPre, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -1174,17 +1206,17 @@ + vector<double> wVector(n); + if( ctrl.subset.rangeSubset ) + rangeInfo = herm_tridiag_eig::Eig +- ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), ++ ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), + wVector.data(), Q.Buffer(), Q.LDim(), w.ColComm(), + ctrl.subset.lowerBound, ctrl.subset.upperBound ); + else if( ctrl.subset.indexSubset ) + rangeInfo = herm_tridiag_eig::Eig +- ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), ++ ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), + wVector.data(), Q.Buffer(), Q.LDim(), w.ColComm(), + int(ctrl.subset.lowerIndex), int(ctrl.subset.upperIndex) ); + else + rangeInfo = herm_tridiag_eig::Eig +- ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), ++ ( int(n), d_STAR_STAR.Buffer(), dSub_STAR_STAR.Buffer(), + wVector.data(), Q.Buffer(), Q.LDim(), w.ColComm() ); + w.Resize( rangeInfo.numGlobalEigenvalues, 1 ); + Q.Resize( n, rangeInfo.numGlobalEigenvalues ); +@@ -1199,13 +1231,14 @@ + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + MRRRHelper + ( const AbstractDistMatrix<Real >& d, + const AbstractDistMatrix<Complex<Real>>& dSub, +- AbstractDistMatrix<Real >& wPre, +- AbstractDistMatrix<Complex<Real>>& QPre, ++ AbstractDistMatrix<Real >& wPre, ++ AbstractDistMatrix<Complex<Real>>& QPre, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -1261,17 +1294,17 @@ + vector<double> wVector(n); + if( ctrl.subset.rangeSubset ) + rangeInfo = herm_tridiag_eig::Eig +- ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(), ++ ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(), + wVector.data(), QReal.Buffer(), QReal.LDim(), w.ColComm(), + ctrl.subset.lowerBound, ctrl.subset.upperBound ); + else if( ctrl.subset.indexSubset ) + rangeInfo = herm_tridiag_eig::Eig +- ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(), ++ ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(), + wVector.data(), QReal.Buffer(), QReal.LDim(), w.ColComm(), + int(ctrl.subset.lowerIndex), int(ctrl.subset.upperIndex) ); + else + rangeInfo = herm_tridiag_eig::Eig +- ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(), ++ ( int(n), d_STAR_STAR.Buffer(), dSubReal.Buffer(), + wVector.data(), QReal.Buffer(), QReal.LDim(), w.ColComm() ); + + w.Resize( rangeInfo.numGlobalEigenvalues, 1 ); +@@ -1287,18 +1320,19 @@ + ApplyTaggedSortToEachRow( sortPairs, QReal ); + + Copy( QReal, Q ); +- DiagonalScale( LEFT, NORMAL, phase, Q ); ++ DiagonalScale( LEFT, NORMAL, phase, Q ); + + return info; + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + Helper + ( const AbstractDistMatrix<Real>& d, + const AbstractDistMatrix<Real>& dSub, +- AbstractDistMatrix<Real>& w, +- AbstractDistMatrix<Real>& Q, ++ AbstractDistMatrix<Real>& w, ++ AbstractDistMatrix<Real>& Q, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -1316,13 +1350,15 @@ + } + } + +-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void> ++template<typename Real, ++ typename=DisableIf<IsBlasScalar<Real>>, ++ typename=void> + HermitianTridiagEigInfo + Helper + ( const AbstractDistMatrix<Real>& d, + const AbstractDistMatrix<Real>& dSub, +- AbstractDistMatrix<Real>& w, +- AbstractDistMatrix<Real>& Q, ++ AbstractDistMatrix<Real>& w, ++ AbstractDistMatrix<Real>& Q, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -1336,13 +1372,14 @@ + } + } + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + Helper + ( const AbstractDistMatrix<Real >& d, + const AbstractDistMatrix<Complex<Real>>& dSub, +- AbstractDistMatrix<Real >& w, +- AbstractDistMatrix<Complex<Real>>& Q, ++ AbstractDistMatrix<Real >& w, ++ AbstractDistMatrix<Complex<Real>>& Q, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -1360,13 +1397,15 @@ + } + } + +-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void> ++template<typename Real, ++ typename=DisableIf<IsBlasScalar<Real>>, ++ typename=void> + HermitianTridiagEigInfo + Helper + ( const AbstractDistMatrix<Real >& d, + const AbstractDistMatrix<Complex<Real>>& dSub, +- AbstractDistMatrix<Real >& w, +- AbstractDistMatrix<Complex<Real>>& QPre, ++ AbstractDistMatrix<Real >& w, ++ AbstractDistMatrix<Complex<Real>>& QPre, + const HermitianTridiagEigCtrl<Real>& ctrl ) + { + EL_DEBUG_CSE +@@ -1388,7 +1427,7 @@ + ( const AbstractDistMatrix<Base<F>>& d, + const AbstractDistMatrix<F>& dSub, + AbstractDistMatrix<Base<F>>& w, +- AbstractDistMatrix<F>& Q, ++ AbstractDistMatrix<F>& Q, + const HermitianTridiagEigCtrl<Base<F>>& ctrl ) + { + EL_DEBUG_CSE +@@ -1397,7 +1436,8 @@ + + namespace herm_tridiag_eig { + +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + Int MRRREstimateHelper + ( const AbstractDistMatrix<Real>& d, + const AbstractDistMatrix<Real>& dSub, +@@ -1421,7 +1461,9 @@ + return estimate.numGlobalEigenvalues; + } + +-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void> ++template<typename Real, ++ typename=DisableIf<IsBlasScalar<Real>>, ++ typename=void> + Int MRRREstimateHelper + ( const AbstractDistMatrix<Real>& d, + const AbstractDistMatrix<Real>& dSub, +@@ -1435,7 +1477,8 @@ + } + + // Q is assumed to be sufficiently large and properly aligned +-template<typename Real,typename=EnableIf<IsBlasScalar<Real>>> ++template<typename Real, ++ typename=EnableIf<IsBlasScalar<Real>>> + HermitianTridiagEigInfo + MRRRPostEstimateHelper + ( const AbstractDistMatrix<Real>& d, +@@ -1488,7 +1531,9 @@ + return info; + } + +-template<typename Real,typename=DisableIf<IsBlasScalar<Real>>,typename=void> ++template<typename Real, ++ typename=DisableIf<IsBlasScalar<Real>>, ++ typename=void> + HermitianTridiagEigInfo + MRRRPostEstimateHelper + ( const AbstractDistMatrix<Real>& d, +--- Elemental-0.87.7/src/lapack_like/spectral/HermitianTridiagEig/DivideAndConquer.hpp 2017-02-07 02:23:30.000000000 +0100 ++++ Elemental-0.87.7_ok/src/lapack_like/spectral/HermitianTridiagEig/DivideAndConquer.hpp 2017-04-21 11:02:22.872284000 +0200 +@@ -1,5 +1,5 @@ + /* +- Copyright (c) 2009-2016, Jack Poulson ++ Copyright (c) 2009-2017, Jack Poulson + All rights reserved. + + This file is part of Elemental and is under the BSD 2-Clause License, +@@ -1126,10 +1126,13 @@ + EL_DEBUG_CSE + const Int n = mainDiag.Height(); + const auto& dcCtrl = ctrl.dcCtrl; ++ if( ctrl.subset.indexSubset || ctrl.subset.rangeSubset ) ++ LogicError ++ ("DivideAndConquer should not have been called directly for subset " ++ "computation"); + + DCInfo info; + auto& secularInfo = info.secularInfo; +- + if( n <= Max(dcCtrl.cutoff,3) ) + { + auto ctrlMod( ctrl ); +@@ -1230,11 +1233,15 @@ + bool topLevel=true ) + { + EL_DEBUG_CSE +- const Grid& grid = Q.Grid(); + const Int n = mainDiag.Height(); + const auto& dcCtrl = ctrl.dcCtrl; +- DCInfo info; ++ const Grid& grid = Q.Grid(); ++ if( ctrl.subset.indexSubset || ctrl.subset.rangeSubset ) ++ LogicError ++ ("DivideAndConquer should not have been called directly for subset " ++ "computation"); + ++ DCInfo info; + if( n <= Max(dcCtrl.cutoff,3) ) + { + // Run the problem redundantly locally +--- Elemental-0.87.7/cmake/configure_files/ElementalConfig.cmake.in 2017-02-07 02:23:30.000000000 +0100 ++++ Elemental-0.87.7_ok/cmake/configure_files/ElementalConfig.cmake.in 2017-10-06 14:31:00.754510000 +0200 +@@ -13,6 +13,6 @@ + set(Elemental_DEFINITIONS "@Qt5Widgets_DEFINITIONS@") + + # Our library dependencies (contains definitions for IMPORTED targets) +-include("@CMAKE_INSTALL_PREFIX@/CMake/ElementalTargets.cmake") ++include("@CMAKE_INSTALL_PREFIX@/CMake/elemental/ElementalTargets.cmake") + + set(Elemental_LIBRARIES El) diff --git a/Golden_Repo/e/Emacs/Emacs-27.1-GCCcore-9.3.0.eb b/Golden_Repo/e/Emacs/Emacs-27.1-GCCcore-9.3.0.eb index 9ab35bee5ad9257419a1923e8c031b213e36fb83..b7e41c7758f46000c181575fe5819fea19b1cb06 100644 --- a/Golden_Repo/e/Emacs/Emacs-27.1-GCCcore-9.3.0.eb +++ b/Golden_Repo/e/Emacs/Emacs-27.1-GCCcore-9.3.0.eb @@ -27,7 +27,6 @@ dependencies = [ ('GTK+', '3.24.17'), ('X11', '20200222'), ('LibTIFF', '4.1.0'), - ('adwaita-icon-theme', '3.37.2'), ] configopts = '--x-includes=$EBROOTX11/include --x-libraries=$EBROOTX11/lib --with-gif=no --with-gnutls=no ' diff --git a/Golden_Repo/e/Exiv2/Exiv2-0.27.3-GCCcore-9.3.0.eb b/Golden_Repo/e/Exiv2/Exiv2-0.27.3-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..52ebf5497a41283bd8682d1f1f39d0e7dede68e4 --- /dev/null +++ b/Golden_Repo/e/Exiv2/Exiv2-0.27.3-GCCcore-9.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'CMakeMake' + +name = 'Exiv2' +version = '0.27.3' + +homepage = 'http://www.exiv2.org' +description = """ + Exiv2 is a C++ library and a command line utility to manage image metadata. It provides fast and easy read and write + access to the Exif, IPTC and XMP metadata of digital images in various formats. Exiv2 is available as free software and + with a commercial license, and is used in many projects. +""" + +site_contacts = 'a.strube@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['http://www.exiv2.org/builds'] +sources = ['%(namelower)s-%(version)s-Source.tar.gz'] + +builddependencies = [ + ('binutils', '2.34'), + ('CMake', '3.18.0'), +] + +dependencies = [ + ('expat', '2.2.9'), +] + +sanity_check_paths = { + 'files': ['bin/exiv2', 'lib/libexiv2.%s' % SHLIB_EXT], + 'dirs': [] +} + +moduleclass = 'vis' diff --git a/Golden_Repo/f/FFmpeg/FFmpeg-4.3.1-GCCcore-9.3.0.eb b/Golden_Repo/f/FFmpeg/FFmpeg-4.3.1-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..7effdcd30efccb73dfe2034ac501d38e1e9c1707 --- /dev/null +++ b/Golden_Repo/f/FFmpeg/FFmpeg-4.3.1-GCCcore-9.3.0.eb @@ -0,0 +1,46 @@ +easyblock = 'ConfigureMake' + +name = 'FFmpeg' +version = '4.3.1' + +homepage = 'https://www.ffmpeg.org/' +description = """A complete, cross-platform solution to record, convert and stream audio and video.""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['https://ffmpeg.org/releases/'] +sources = [SOURCELOWER_TAR_BZ2] +checksums = ['f4a4ac63946b6eee3bbdde523e298fca6019d048d6e1db0d1439a62cea65f0d9'] + +builddependencies = [ + ('binutils', '2.34'), + ('pkg-config', '0.29.2') +] + +dependencies = [ + ('NASM', '2.15.03'), + ('zlib', '1.2.11'), + ('bzip2', '1.0.8'), + ('x264', '20200912'), + ('LAME', '3.100'), + ('x265', '3.4'), + ('X11', '20200222'), + ('freetype', '2.10.1'), + ('fontconfig', '2.13.92'), + ('FriBidi', '1.0.9'), +] + +configopts = '--enable-pic --enable-shared --enable-gpl --enable-version3 --enable-nonfree --cc="$CC" --cxx="$CXX" ' +configopts += '--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfreetype --enable-fontconfig ' +configopts += '--enable-libfribidi' + +sanity_check_paths = { + 'files': ['bin/ff%s' % x for x in ['mpeg', 'probe']] + + ['lib/lib%s.%s' % (x, y) for x in ['avdevice', 'avfilter', 'avformat', 'avcodec', 'postproc', + 'swresample', 'swscale', 'avutil'] for y in [SHLIB_EXT, 'a']], + 'dirs': ['include'] +} + +moduleclass = 'vis' diff --git a/Golden_Repo/g/GL2PS/GL2PS-1.4.2-GCCcore-9.3.0.eb b/Golden_Repo/g/GL2PS/GL2PS-1.4.2-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..e119f41fbb7dd6c66e1aaf6380c178645976bdf0 --- /dev/null +++ b/Golden_Repo/g/GL2PS/GL2PS-1.4.2-GCCcore-9.3.0.eb @@ -0,0 +1,35 @@ +easyblock = 'CMakeMake' + +name = 'GL2PS' +version = '1.4.2' + +homepage = 'http://www.geuz.org/gl2ps/' +description = """GL2PS: an OpenGL to PostScript printing library +""" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['http://geuz.org/gl2ps/src/'] +sources = [SOURCELOWER_TGZ] + +builddependencies = [ + ('binutils', '2.34'), + ('CMake', '3.18.0'), +] + +dependencies = [ + ('X11', '20200222'), + ('OpenGL', '2020'), + ('freeglut', '3.2.1'), + ('libpng', '1.6.37'), + ('zlib', '1.2.11'), +] + +sanity_check_paths = { + 'files': ['include/gl2ps.h', 'lib/libgl2ps.so'], + 'dirs': [] +} + +moduleclass = 'vis' diff --git a/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb b/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..78e0e5ebffd41e5d70075fe1d944895f0dade8eb --- /dev/null +++ b/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb @@ -0,0 +1,69 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Copyright:: Copyright 2012-2016 University of Luxembourg / LCSB, Cyprus Institute / CaSToRC, +# Ghent University / The Francis Crick Institute +# Authors:: +# * Wiktor Jurkowski <wiktor.jurkowski@gmail.com> +# * Fotis Georgatos <fotis@cern.ch> +# * George Tsouloupas <g.tsouloupas@cyi.ac.cy> +# * Kenneth Hoste <kenneth.hoste@ugent.be> +# * Adam Huffman <adam.huffman@crick.ac.uk> +# License:: MIT/GPL +## + +name = 'GROMACS' +version = '2020.4' + +homepage = 'http://www.gromacs.org' +description = """ +GROMACS is a versatile package to perform molecular dynamics, i.e. simulate the Newtonian equations +of motion for systems with hundreds to millions of particles. It is primarily designed for +biochemical molecules like proteins and lipids that have a lot of complicated bonded interactions, +but since GROMACS is extremely fast at calculating the non-bonded interactions (that usually +dominate simulations) many groups are also using it for research on non-biological systems, e.g. +polymers. + +Documentation +============= +Use `gmx` to execute GROMACS commands on a single node, for example, to prepare your run. Use +`gmx_mpi mdrun` in your job scripts with `srun`. The user documentation of GROMACS can be found at +http://manual.gromacs.org/documentation/current/user-guide/index.html. + +""" + +site_contacts = 'sc@fz-juelich.de' + +toolchain = {'name': 'gpsmkl', 'version': '2020'} +toolchainopts = {'openmp': True, 'usempi': True} + +source_urls = ['ftp://ftp.gromacs.org/pub/gromacs/'] +sources = [SOURCELOWER_TAR_GZ] + +builddependencies = [ + ('CMake', '3.18.0'), + ('libxml2', '2.9.10') +] + + +# Removed ('hwloc', '2.0.3') from dependencies due to runtime failures. +dependencies = [ + ('CUDA', '11.0', '', True), +] + +configopts = '-DCMAKE_PREFIX_PATH=$EBROOTHWLOC -DMPIEXEC_MAX_NUMPROCS="24" ' +configopts += '-DMKL_LIBRARIES="${MKLROOT}/lib/intel64/libmkl_intel_ilp64.so;' +configopts += '${MKLROOT}/lib/intel64/libmkl_sequential.so;${MKLROOT}/lib/intel64/libmkl_core.so" ' +configopts += '-DGMX_CUDA_TARGET_SM="60;70;80" ' + +mpiexec = 'srun' +mpiexec_numproc_flag = '"--gres=gpu:1 -n"' +mpi_numprocs = '24' + +runtest = False + +modluafooter = ''' +add_property("arch","gpu") +''' + +moduleclass = 'bio' diff --git a/Golden_Repo/g/GTK+/GTK+-3.24.17-GCCcore-9.3.0.eb b/Golden_Repo/g/GTK+/GTK+-3.24.17-GCCcore-9.3.0.eb index d98eb4ff60bc80716eacad8b7dddf60e245952ab..10d66dd098b76753cfe0503783ce558e4dea3bd0 100644 --- a/Golden_Repo/g/GTK+/GTK+-3.24.17-GCCcore-9.3.0.eb +++ b/Golden_Repo/g/GTK+/GTK+-3.24.17-GCCcore-9.3.0.eb @@ -1,4 +1,4 @@ -easyblock = 'ConfigureMake' +easyblock = 'Bundle' name = 'GTK+' version = '3.24.17' @@ -12,14 +12,13 @@ site_contacts = 'a.kreuzer@fz-juelich.de' toolchain = {'name': 'GCCcore', 'version': '9.3.0'} -source_urls = [FTPGNOME_SOURCE] -sources = [SOURCELOWER_TAR_XZ] - builddependencies = [ ('binutils', '2.34'), ('Coreutils', '8.32'), ('pkg-config', '0.29.2'), ('GObject-Introspection', '1.64.1'), + ('cairo', '1.17.2'), + ('Perl', '5.32.0'), ] dependencies = [ @@ -29,13 +28,47 @@ dependencies = [ ('Pango', '1.44.7'), ('X11', '20200222'), ('libepoxy', '1.5.4'), + ('zlib', '1.2.11'), + ('FriBidi', '1.0.9'), +] + +default_easyblock = 'ConfigureMake' + +default_component_specs = { + 'sources': [SOURCELOWER_TAR_XZ], + 'start_dir': '%(namelower)s-%(version)s', +} + +components = [ + (name, version, { + 'source_urls': [FTPGNOME_SOURCE], + 'checksums': ['f210255b221cb0f0db3e7b21399983b715c9dda6eb1e5c2f7fdf38f4f1b6bac0'], + 'configopts': "--disable-silent-rules --disable-glibtest --enable-introspection=yes --disable-visibility ", + }), + ('hicolor-icon-theme', '0.17', { + 'source_urls': ['https://icon-theme.freedesktop.org/releases/'], + 'checksums': ['317484352271d18cbbcfac3868eab798d67fff1b8402e740baa6ff41d588a9d8'], + }), + ('adwaita-icon-theme', '3.36.0', { + 'source_urls': [FTPGNOME_SOURCE], + 'checksums': ['1a172112b6da482d3be3de6a0c1c1762886e61e12b4315ae1aae9b69da1ed518'], + }), ] -configopts = "--disable-silent-rules --disable-glibtest --enable-introspection=yes " +postinstallcmds = ['gtk-update-icon-cache'] modextrapaths = { 'GI_TYPELIB_PATH': 'lib64/girepository-1.0', 'XDG_DATA_DIRS': 'share', } +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['gtk3-demo', 'gtk3-demo-application', 'gtk3-icon-browser', 'gtk3-widget-factory', + 'gtk-builder-tool', 'gtk-launch', 'gtk-query-immodules-3.0', 'gtk-query-settings', + 'gtk-update-icon-cache']] + + ['lib/%s-%%(version_major)s.%s' % (x, SHLIB_EXT) for x in ['libgailutil', 'libgdk', 'libgtk']], + 'dirs': ['include/%s-%%(version_major)s.0' % x for x in ['gail', 'gtk']] + + ['share/icons/hicolor', 'share/icons/Adwaita'], +} + moduleclass = 'vis' diff --git a/Golden_Repo/g/GraphicsMagick/GraphicsMagick-1.3.35-GCCcore-9.3.0.eb b/Golden_Repo/g/GraphicsMagick/GraphicsMagick-1.3.35-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..81aac97f88dc0950a239efc151733feb08c88743 --- /dev/null +++ b/Golden_Repo/g/GraphicsMagick/GraphicsMagick-1.3.35-GCCcore-9.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'GraphicsMagick' +version = '1.3.35' + +homepage = 'http://www.graphicsmagick.org/' +description = """GraphicsMagick is the swiss army knife of image processing. +""" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'pic': True} + +source_urls = [ + SOURCEFORGE_SOURCE, + 'ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/%(version_major_minor)s/', +] +sources = [SOURCE_TAR_GZ] + +configopts = "--enable-shared --enable-static " + +builddependencies = [ + ('binutils', '2.34'), + ('pkg-config', '0.29.2'), + ('libtool', '2.4.6'), +] + +dependencies = [ + ('X11', '20200222'), + ('bzip2', '1.0.8'), + ('freetype', '2.10.1'), + ('libpng', '1.6.37'), + ('libjpeg-turbo', '2.0.5'), + ('LibTIFF', '4.1.0'), + ('libxml2', '2.9.10'), + ('XZ', '5.2.5'), + ('zlib', '1.2.11'), +] + +moduleclass = 'vis' diff --git a/Golden_Repo/h/Horovod/Horovod-0.20.3-gomkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb b/Golden_Repo/h/Horovod/Horovod-0.20.3-gomkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..13375a560e57c09c319915a214b91d0081f970fd --- /dev/null +++ b/Golden_Repo/h/Horovod/Horovod-0.20.3-gomkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb @@ -0,0 +1,97 @@ +# on juwels booster, one needs to call "export UCX_LOG_LEVEL=FATAL ebw ... + +easyblock = 'PythonBundle' + +name = 'Horovod' +version = '0.20.3' +local_tf_version = '2.3.1' +versionsuffix = '-TensorFlow-%s-Python-%%(pyver)s' % local_tf_version + +homepage = 'https://github.com/uber/horovod' +description = "Horovod is a distributed training framework for TensorFlow." + +toolchain = {'name': 'gomkl', 'version': '2020'} +toolchainopts = {'usempi': True, 'pic': True} + +site_contacts = 'a.strube@fz-juelich.de' + +builddependencies = [ + ('CMake', '3.18.0'), +] +dependencies = [ + ('Python', '3.8.5'), + # ('PyYAML', '5.1.2'), # PyYAML is inside JSC's python + ('TensorFlow', local_tf_version, '-Python-%(pyver)s'), +] + +use_pip = True +sanity_pip_check = True + +# possible vars: +# HOROVOD_BUILD_ARCH_FLAGS - additional C++ compilation flags to pass in for your build architecture. +# HOROVOD_CUDA_HOME - path where CUDA include and lib directories can be found. +# HOROVOD_BUILD_CUDA_CC_LIST - List of compute capabilities to build Horovod CUDA +# kernels for (example: HOROVOD_BUILD_CUDA_CC_LIST=60,70,75) +# HOROVOD_ROCM_HOME - path where ROCm include and lib directories can be found. +# HOROVOD_NCCL_HOME - path where NCCL include and lib directories can be found. +# HOROVOD_NCCL_INCLUDE - path to NCCL include directory. +# HOROVOD_NCCL_LIB - path to NCCL lib directory. +# HOROVOD_NCCL_LINK - {SHARED, STATIC}. Mode to link NCCL library. Defaults to STATIC for CUDA, SHARED for ROCm. +# HOROVOD_WITH_GLOO - {1}. Require that Horovod is built with Gloo support enabled. +# HOROVOD_WITHOUT_GLOO - {1}. Skip building with Gloo support. +# HOROVOD_WITH_MPI - {1}. Require that Horovod is built with MPI support enabled. +# HOROVOD_WITHOUT_MPI - {1}. Skip building with MPI support. +# HOROVOD_GPU - {CUDA, ROCM}. Framework to use for GPU operations. +# HOROVOD_GPU_OPERATIONS - {NCCL, MPI}. Framework to use for GPU tensor allreduce, allgather, and broadcast. +# HOROVOD_GPU_ALLREDUCE - {NCCL, MPI}. Framework to use for GPU tensor allreduce. +# HOROVOD_GPU_ALLGATHER - {NCCL, MPI}. Framework to use for GPU tensor allgather. +# HOROVOD_GPU_BROADCAST - {NCCL, MPI}. Framework to use for GPU tensor broadcast. +# HOROVOD_ALLOW_MIXED_GPU_IMPL - {1}. Allow Horovod to install with NCCL allreduce and MPI GPU allgather / +# broadcast. Not recommended due to a possible deadlock. +# HOROVOD_CPU_OPERATIONS - {MPI, GLOO, CCL}. Framework to use for CPU tensor allreduce, allgather, and broadcast. +# HOROVOD_CMAKE - path to the CMake binary used to build Gloo (not required when using MPI). +# HOROVOD_WITH_TENSORFLOW - {1}. Require Horovod to install with TensorFlow support enabled. +# HOROVOD_WITHOUT_TENSORFLOW - {1}. Skip installing TensorFlow support. +# HOROVOD_WITH_PYTORCH - {1}. Require Horovod to install with PyTorch support enabled. +# HOROVOD_WITHOUT_PYTORCH - {1}. Skip installing PyTorch support. +# HOROVOD_WITH_MXNET - {1}. Require Horovod to install with MXNet support enabled. +# HOROVOD_WITHOUT_MXNET - {1}. Skip installing MXNet support. + +#prebuildopts = 'export LDSHARED="$CC -shared" && ' +#prebuildopts += ' HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITHOUT_PYTORCH=1 HOROVOD_WITHOUT_MXNET=1 ' +#prebuildopts += ' HOROVOD_NCCL_LINK=SHARED HOROVOD_NCCL_HOME=$EBROOTNCCL ' +#prebuildopts += ' HOROVOD_GPU_OPERATIONS=NCCL ' +#prebuildopts += ' HOROVOD_CPU_OPERATIONS=MPI ' +## prebuildopts += ' HOROVOD_GPU_ALLREDUCE=NCCL ' +## prebuildopts += ' HOROVOD_GPU_BROADCAST=NCCL ' +#prebuildopts += ' HOROVOD_WITH_MPI=1 ' + + +prebuildopts = 'export LDSHARED="$CC -shared" && ' +prebuildopts += 'HOROVOD_NCCL_LINK=SHARED HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_NCCL_HOME=$EBROOTNCCL ' +prebuildopts += ' NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 \ + -gencode=arch=compute_75,code=sm_75 \ + -gencode=arch=compute_80,code=sm_80"' + +preinstallopts = prebuildopts + + +exts_default_options = {'source_urls': [PYPI_SOURCE]} + +exts_list = [ + # ('cloudpickle', '1.5.0', { # Cloudpickle is in python + # 'checksums': ['820c9245cebdec7257211cbe88745101d5d6a042bca11336d78ebd4897ddbc82'], + # }), + ('horovod', version, { + 'checksums': ['6ebc90d627af486d44335ed48489e1e8dc190607574758867c52e4e17d75a247'], + 'cuda_compute_capabilities': ['7.0', '7.5', '8.0'], + }), +] + +sanity_check_paths = { + 'files': ['bin/horovodrun'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + + +moduleclass = 'tools' diff --git a/Golden_Repo/h/Horovod/Horovod-0.20.3-gpsmkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb b/Golden_Repo/h/Horovod/Horovod-0.20.3-gpsmkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb index e5b2c9ca410e5331e37cc3f1f7bb3c4b3af98302..96f4cd6be87248b51f006dc4d31e7ceb94f36e69 100644 --- a/Golden_Repo/h/Horovod/Horovod-0.20.3-gpsmkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb +++ b/Golden_Repo/h/Horovod/Horovod-0.20.3-gpsmkl-2020-TensorFlow-2.3.1-Python-3.8.5.eb @@ -60,7 +60,7 @@ sanity_pip_check = True prebuildopts = 'export LDSHARED="$CC -shared" && ' prebuildopts += ' HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITHOUT_PYTORCH=1 HOROVOD_WITHOUT_MXNET=1 ' prebuildopts += ' HOROVOD_NCCL_LINK=SHARED HOROVOD_NCCL_HOME=$EBROOTNCCL ' -prebuildopts += ' HOROVOD_GPU_OPERATIONS=MPI ' +prebuildopts += ' HOROVOD_GPU_OPERATIONS=NCCL ' prebuildopts += ' HOROVOD_CPU_OPERATIONS=MPI ' # prebuildopts += ' HOROVOD_GPU_ALLREDUCE=NCCL ' # prebuildopts += ' HOROVOD_GPU_BROADCAST=NCCL ' diff --git a/Golden_Repo/h/h5py/h5py-2.10.0-gompi-2020-Python-3.8.5.eb b/Golden_Repo/h/h5py/h5py-2.10.0-gompi-2020-Python-3.8.5.eb index c60aa1213f990dd80cc0b1fca3478ca2625f2e1f..2e3149123788e4bd13251ade5232603e1f45d4d5 100644 --- a/Golden_Repo/h/h5py/h5py-2.10.0-gompi-2020-Python-3.8.5.eb +++ b/Golden_Repo/h/h5py/h5py-2.10.0-gompi-2020-Python-3.8.5.eb @@ -24,6 +24,8 @@ req_py_minver = 0 # to really use mpi enabled hdf5 we now seem to need a configure step prebuildopts = 'export LDSHARED="$CC -shared" && python setup.py configure --mpi --hdf5=$EBROOTHDF5 && ' +patches = ['h5py-2.10.0_avoid-mpi-init.patch'] + builddependencies = [ ('pkgconfig', '1.5.1', versionsuffix), ] diff --git a/Golden_Repo/h/h5py/h5py-2.10.0_avoid-mpi-init.patch b/Golden_Repo/h/h5py/h5py-2.10.0_avoid-mpi-init.patch new file mode 100644 index 0000000000000000000000000000000000000000..98034776400e528d4baebce3c01bd9dca5bfc4a9 --- /dev/null +++ b/Golden_Repo/h/h5py/h5py-2.10.0_avoid-mpi-init.patch @@ -0,0 +1,85 @@ +avoid that 'import h5py' triggers MPI_Init via mpi4py + +backported to h5py 2.10.0 from https://github.com/h5py/h5py/pull/1552 by Kenneth Hoste (HPC-UGent) + +diff -ru h5py-2.10.0.orig/h5py/api_types_ext.pxd h5py-2.10.0/h5py/api_types_ext.pxd +--- h5py-2.10.0.orig/h5py/api_types_ext.pxd 2019-09-06 23:29:33.000000000 +0200 ++++ h5py-2.10.0/h5py/api_types_ext.pxd 2020-05-25 19:30:30.000000000 +0200 +@@ -12,7 +12,7 @@ + include 'config.pxi' + + IF MPI: +- from mpi4py.MPI cimport MPI_Comm, MPI_Info, Comm, Info ++ from mpi4py.libmpi cimport MPI_Comm, MPI_Info + + cdef extern from "stdlib.h": + ctypedef long size_t +@@ -52,6 +52,7 @@ + cdef extern from "Python.h": + ctypedef void PyObject + ctypedef ssize_t Py_ssize_t ++ ctypedef size_t Py_uintptr_t + + PyObject* PyErr_Occurred() + void PyErr_SetString(object type, char *message) +diff -ru h5py-2.10.0.orig/h5py/h5p.pyx h5py-2.10.0/h5py/h5p.pyx +--- h5py-2.10.0.orig/h5py/h5p.pyx 2019-09-06 23:29:33.000000000 +0200 ++++ h5py-2.10.0/h5py/h5p.pyx 2020-05-25 19:33:24.000000000 +0200 +@@ -17,6 +17,7 @@ + from cpython.buffer cimport PyObject_CheckBuffer, \ + PyObject_GetBuffer, PyBuffer_Release, \ + PyBUF_SIMPLE ++from cpython.long cimport PyLong_AsVoidPtr + + from utils cimport require_tuple, convert_dims, convert_tuple, \ + emalloc, efree, \ +@@ -1161,7 +1162,7 @@ + + IF MPI: + @with_phil +- def set_fapl_mpio(self, Comm comm not None, Info info not None): ++ def set_fapl_mpio(self, comm, info): + """ (Comm comm, Info info) + + Set MPI-I/O Parallel HDF5 driver. +@@ -1169,7 +1170,12 @@ + Comm: An mpi4py.MPI.Comm instance + Info: An mpi4py.MPI.Info instance + """ +- H5Pset_fapl_mpio(self.id, comm.ob_mpi, info.ob_mpi) ++ from mpi4py.MPI import Comm, Info, _handleof ++ assert isinstance(comm, Comm) ++ assert isinstance(info, Info) ++ cdef Py_uintptr_t _comm = _handleof(comm) ++ cdef Py_uintptr_t _info = _handleof(info) ++ H5Pset_fapl_mpio(self.id, <MPI_Comm>_comm, <MPI_Info>_info) + + + @with_phil +@@ -1183,20 +1189,22 @@ + """ + cdef MPI_Comm comm + cdef MPI_Info info ++ from mpi4py.MPI import Comm, Info, _addressof + + H5Pget_fapl_mpio(self.id, &comm, &info) + pycomm = Comm() +- pyinfo = Info() +- MPI_Comm_dup(comm, &pycomm.ob_mpi) +- MPI_Info_dup(info, &pyinfo.ob_mpi) ++ MPI_Comm_dup(comm, <MPI_Comm *>PyLong_AsVoidPtr(_addressof(pycomm))) + MPI_Comm_free(&comm) ++ ++ pyinfo = Info() ++ MPI_Info_dup(info, <MPI_Info *>PyLong_AsVoidPtr(_addressof(pyinfo))) + MPI_Info_free(&info) + + return (pycomm, pyinfo) + + + @with_phil +- def set_fapl_mpiposix(self, Comm comm not None, bint use_gpfs_hints=0): ++ def set_fapl_mpiposix(self, comm, bint use_gpfs_hints=0): + """ Obsolete. + """ + raise RuntimeError("MPI-POSIX driver is broken; removed in h5py 2.3.1") diff --git a/Golden_Repo/hidden_deps.txt b/Golden_Repo/hidden_deps.txt index 219750a5b95d5fdcfe613ecbd9849e51b4fd9c92..a02aa09a824c4b0622189e56beb992c62e584eb3 100644 --- a/Golden_Repo/hidden_deps.txt +++ b/Golden_Repo/hidden_deps.txt @@ -117,6 +117,7 @@ LibTIFF libtool libunistring libunwind +libwebp LibUUID libX11 libXau @@ -144,6 +145,7 @@ libXt libXtst libyaml libyuv +lz4 LittleCMS LMDB LZO @@ -186,6 +188,7 @@ Qt Qt5 randrproto recordproto +rencode renderproto SCons scrollkeeper @@ -198,6 +201,7 @@ SWIG Szip texinfo Tk +uglifyjs UDUNITS util-linux vpx @@ -221,5 +225,6 @@ xprop xproto xtrans XZ +yuicompressor Yasm zlib diff --git a/Golden_Repo/i/itac/itac-2020.2.031.eb b/Golden_Repo/i/itac/itac-2020.2.031.eb new file mode 100644 index 0000000000000000000000000000000000000000..c52ed1b9b8948ab00127f9f9bbf4ce489bf86814 --- /dev/null +++ b/Golden_Repo/i/itac/itac-2020.2.031.eb @@ -0,0 +1,36 @@ +name = 'itac' +version = '2020.2.031' + +homepage = 'http://software.intel.com/en-us/intel-trace-analyzer/' +description = """The Intel Trace Collector is a low-overhead tracing library that performs + event-based tracing in applications. The Intel Trace Analyzer provides a convenient way to monitor application + activities gathered by the Intel Trace Collector through graphical displays. +""" + +usage = """ + Basic usage: + 1. module load itac + + Then either method 1: Static Linking + 2. Instrument application by linking with -L$VT_LIB_DIR -lVT $VT_ADD_LIBS + 3. Measure data by executing instrumented application + + or method 2: Library preloading + 2. export LD_PRELOAD=$VT_SLIB_DIR/libVT.so + 3. Measure data by executing uninstrumented application + + Afterwards + 4. traceanalyzer <exe>.stf +""" + +site_contacts = 'a.strube@fz-juelich.de' + +toolchain = SYSTEM + +sources = ['l_itac_p_%(version)s.tgz'] + +dontcreateinstalldir = 'True' + +preferredmpi = 'impi5' + +moduleclass = 'tools' diff --git a/Golden_Repo/jusuf_overlay/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb b/Golden_Repo/jusuf_overlay/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb new file mode 100644 index 0000000000000000000000000000000000000000..554fa8ff8ce3529416d12bafb8cfd96bcd58d27e --- /dev/null +++ b/Golden_Repo/jusuf_overlay/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb @@ -0,0 +1,40 @@ +easyblock = 'SystemBundle' + +name = 'OpenMPI-settings' +version = '4.1' +versionsuffix = 'UCX-CUDA' + +homepage = '' +description = """This is a module to load the default OpenMPI configuration""" + +site_contacts = 'd.alvarez@fz-juelich.de' + +toolchain = SYSTEM + +source_urls = [] + +sources = [] +modextravars = { + 'SLURM_MPI_TYPE': 'pspmix', + 'UCX_TLS': 'rc_x,cuda_ipc,gdr_copy,self,sm,cuda_copy', + 'OMPI_MCA_mca_base_component_show_load_errors': '1', + 'OMPI_MCA_mpi_param_check': '1', + 'OMPI_MCA_mpi_show_handle_leaks': '1', + 'OMPI_MCA_mpi_warn_on_fork': '1', + 'OMPI_MCA_btl': 'self,vader,uct', + 'OMPI_MCA_btl_openib_allow_ib': '1', + 'OMPI_MCA_bml_r2_show_unreach_errors': '0', + 'OMPI_MCA_coll': '^ml', + 'OMPI_MCA_coll_hcoll_enable': '1', + 'OMPI_MCA_coll_hcoll_np': '0', + 'OMPI_MCA_pml': 'ucx', + 'OMPI_MCA_osc': '^rdma', + 'OMPI_MCA_opal_abort_print_stack': '1', + 'OMPI_MCA_opal_set_max_sys_limits': '1', + 'OMPI_MCA_opal_event_include': 'epoll', + 'OMPI_MCA_btl_openib_warn_default_gid_prefix': '0', + # So mlx5_0 is not taken, given that one is an ethernet port in jusuf + 'OMPI_MCA_btl_openib_if_include': 'mlx5_1', +} + +moduleclass = 'system' diff --git a/Golden_Repo/l/LAME/LAME-3.100-GCCcore-9.3.0.eb b/Golden_Repo/l/LAME/LAME-3.100-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..791f7598c62abedfd552ed21e1a3ba1f15916b9e --- /dev/null +++ b/Golden_Repo/l/LAME/LAME-3.100-GCCcore-9.3.0.eb @@ -0,0 +1,38 @@ +# # +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# +# Author: Stephane Thiell <sthiell@stanford.edu> +# ## + +easyblock = 'ConfigureMake' + +name = 'LAME' +version = '3.100' + +homepage = 'http://lame.sourceforge.net/' +description = "LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL." + +site_contacts = 'a.kreuzer@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['https://sourceforge.net/projects/%(namelower)s/files/%(namelower)s/%(version_major_minor)s/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e'] + +builddependencies = [ + ('binutils', '2.34'), +] +dependencies = [ + ('ncurses', '6.2'), +] + +# configure is broken: add workaround to find libncurses... +configure_cmd_prefix = "FRONTEND_LDADD='-L${EBROOTNCURSES}/lib' " + +sanity_check_paths = { + 'files': ['bin/%(namelower)s', 'include/%(namelower)s/%(namelower)s.h', 'lib/libmp3lame.so'], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/l/libvpx/libvpx-1.9.0-GCCcore-9.3.0.eb b/Golden_Repo/l/libvpx/libvpx-1.9.0-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..eec9c5f0fa9fdcc6b821bc8d98f2a343bc7733ce --- /dev/null +++ b/Golden_Repo/l/libvpx/libvpx-1.9.0-GCCcore-9.3.0.eb @@ -0,0 +1,35 @@ +easyblock = 'ConfigureMake' + +name = 'libvpx' +version = '1.9.0' + +homepage = 'http://www.webmproject.org' +description = """VPx are open and royalty free video compression formats owned by Google. +""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://chromium.googlesource.com/webm/libvpx/+archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['cae0180c225667663b716f2498b5a6a4415da7db2aef43ddc17db25e2d3274b7'] + +builddependencies = [ + ('binutils', '2.34'), + ('pkg-config', '0.29.2'), + ('NASM', '2.15.03'), +] + +dependencies = [ +] + +configopts = '--enable-pic --enable-shared' + +sanity_check_paths = { + 'files': ['bin/vpxdec', 'bin/vpxenc', 'include/vpx/vpx_codec.h', 'lib/libvpx.a'], # 'lib/libvpx.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/l/libwebp/libwebp-1.1.0-GCCcore-9.3.0.eb b/Golden_Repo/l/libwebp/libwebp-1.1.0-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..cdeba8b3bd4190a365734a9df4c933a5e46bbfc6 --- /dev/null +++ b/Golden_Repo/l/libwebp/libwebp-1.1.0-GCCcore-9.3.0.eb @@ -0,0 +1,37 @@ +easyblock = 'ConfigureMake' + +name = 'libwebp' +version = '1.1.0' + +homepage = 'https://developers.google.com/speed/webp/' +description = """WebP is a modern image format that provides superior +lossless and lossy compression for images on the web. Using WebP, +webmasters and web developers can create smaller, richer images that +make the web faster.""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['https://storage.googleapis.com/downloads.webmproject.org/releases/webp'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['98a052268cc4d5ece27f76572a7f50293f439c17a98e67c4ea0c7ed6f50ef043'] + +builddependencies = [('binutils', '2.34')] + +dependencies = [ + ('libjpeg-turbo', '2.0.5'), + ('libpng', '1.6.37'), + ('LibTIFF', '4.1.0'), +] + +configopts = "--enable-libwebpmux" + +sanity_check_paths = { + 'files': ['include/webp/%s' % f for f in ['decode.h', 'demux.h', 'encode.h', 'mux.h', 'mux_types.h', 'types.h']] + + ['lib/lib%s.a' % l for l in ['webp', 'webpdemux', 'webpmux']] + + ['lib/lib%s.%s' % (l, SHLIB_EXT) for l in ['webp', 'webpdemux', 'webpmux']], + 'dirs': ['lib/'] +} + +moduleclass = 'lib' diff --git a/Golden_Repo/l/libyuv/libyuv-20201024-GCCcore-9.3.0.eb b/Golden_Repo/l/libyuv/libyuv-20201024-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..de42aaaccd80dd8908ae269ca8328d4db9eaa84f --- /dev/null +++ b/Golden_Repo/l/libyuv/libyuv-20201024-GCCcore-9.3.0.eb @@ -0,0 +1,56 @@ +easyblock = 'CMakeMake' + +name = 'libyuv' +version = '20201024' + +homepage = 'https://chromium.googlesource.com/libyuv/libyuv/' +description = """ +libyuv for colorspace conversion. libyuv is Optimized for SSE2/SSSE3/AVX2 on x86/x64. +""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'pic': True} + +sources = [ + { + 'source_urls': ['https://chromium.googlesource.com/libyuv/libyuv/+archive/'], + 'filename': '%(name)s-19d71f6b351fe992ae34b114eebd872c383a6bdb.tar.gz', + 'download_filename': '19d71f6b351fe992ae34b114eebd872c383a6bdb.tar.gz', + }, { + 'filename': 'libyuv.pc.gz', + } +] +checksums = ['3796b5b96cc0c5987b6d4d6e52a726de6277623d900937f100a6b0cffd3adda8'] + +builddependencies = [ + ('binutils', '2.34'), + ('CMake', '3.18.0') +] + +dependencies = [ +] + +separate_build_dir = True +start_dir = './' + +maxparallel = 12 + +configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON ' + +postinstallcmds = [ + 'sed -ie "s#PREFIX_TEMPLATE#%(installdir)s#g" %(builddir)s/libyuv.pc', + 'cp %(builddir)s/libyuv.pc %(installdir)s' +] + +sanity_check_paths = { + 'files': ['lib/libyuv.a', 'include/libyuv.h'], + 'dirs': [], +} + +modextrapaths = { + 'PKG_CONFIG_PATH': '' +} + +moduleclass = 'vis' diff --git a/Golden_Repo/l/libyuv/libyuv.pc.gz b/Golden_Repo/l/libyuv/libyuv.pc.gz new file mode 100644 index 0000000000000000000000000000000000000000..401bc3c4d99707e1392a2d2cd279466259a38380 Binary files /dev/null and b/Golden_Repo/l/libyuv/libyuv.pc.gz differ diff --git a/Golden_Repo/l/lz4/lz4-3.1.0-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/l/lz4/lz4-3.1.0-GCCcore-9.3.0-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..c9c8b0cfc3ab5528eebff53b059b7641e238d20c --- /dev/null +++ b/Golden_Repo/l/lz4/lz4-3.1.0-GCCcore-9.3.0-Python-3.8.5.eb @@ -0,0 +1,36 @@ +easyblock = 'PythonPackage' + +name = 'lz4' +version = '3.1.0' +versionsuffix = '-Python-%(pyver)s' + +homepage = 'https://github.com/lz4' +description = """ +LZ4 is lossless compression algorithm, providing compression speed > 500 MB/s per core, +scalable with multi-cores CPU. It features an extremely fast decoder, with speed in +multiple GB/s per core, typically reaching RAM speed limits on multi-core systems. +""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +sources = [SOURCE_TAR_GZ] +source_urls = [PYPI_SOURCE] + +dependencies = [ + ('Python', '3.8.5'), +] + +maxparallel = 12 + +start_dir = '%(builddir)s/%(name)s-%(version)s/' + +options = {'modulename': 'lz4'} + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/'], +} + +moduleclass = 'lib' diff --git a/Golden_Repo/m/Mercurial/Mercurial-5.5.2-GCCcore-9.3.0-Python-3.8.15.eb b/Golden_Repo/m/Mercurial/Mercurial-5.5.2-GCCcore-9.3.0-Python-3.8.15.eb new file mode 100644 index 0000000000000000000000000000000000000000..09b0a9ec24f913b12a6728555be1cb87405f1a03 --- /dev/null +++ b/Golden_Repo/m/Mercurial/Mercurial-5.5.2-GCCcore-9.3.0-Python-3.8.15.eb @@ -0,0 +1,31 @@ +easyblock = "PythonPackage" + +name = 'Mercurial' +version = '5.5.2' +versionsuffix = "-Python-%(pyver)s" + +homepage = 'http://mercurial.selenic.com/' +description = """Mercurial is a free, distributed source control management tool. It efficiently handles projects +of any size and offers an easy and intuitive interface. +""" + +site_contacts = 'a.strube@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +source_urls = ['http://mercurial-scm.org/release/'] +sources = [SOURCELOWER_TAR_GZ] + +download_dep_fail = True + +builddependencies = [('binutils', '2.34')] + +dependencies = [ + ('Python', '3.8.5') +] + +sanity_check_paths = { + 'files': ['bin/hg'], + 'dirs': ['lib/python%(pyshortver)s/site-packages/mercurial'], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/m/meld/meld-3.20.2-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/m/meld/meld-3.20.2-GCCcore-9.3.0-Python-3.8.5.eb index 1c31530b907799f7f3de5cb0ee96d6336aff1cc6..aa470de3ebedda028db385fc150561d10eb087ab 100644 --- a/Golden_Repo/m/meld/meld-3.20.2-GCCcore-9.3.0-Python-3.8.5.eb +++ b/Golden_Repo/m/meld/meld-3.20.2-GCCcore-9.3.0-Python-3.8.5.eb @@ -30,7 +30,6 @@ dependencies = [ ('GTK+', '3.24.17'), ('GtkSourceView', '4.4.0'), ('gsettings-desktop-schemas', '3.34.0'), - ('adwaita-icon-theme', '3.37.2'), ('GLib', '2.64.4'), ] diff --git a/Golden_Repo/m/motif/motif-2.3.8-GCCcore-9.3.0.eb b/Golden_Repo/m/motif/motif-2.3.8-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..0eff9df6ccb1d4eeee7793ca60fa5464757ee237 --- /dev/null +++ b/Golden_Repo/m/motif/motif-2.3.8-GCCcore-9.3.0.eb @@ -0,0 +1,42 @@ +easyblock = 'ConfigureMake' + +name = 'motif' +version = '2.3.8' + +homepage = 'https://motif.ics.com/' +description = """Motif refers to both a graphical user interface (GUI) specification and the widget toolkit for building + applications that follow that specification under the X Window System on Unix and other POSIX-compliant systems. + It was the standard toolkit for the Common Desktop Environment and thus for Unix. +""" + +site_contacts = 'a.strube@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +sources = [SOURCELOWER_TAR_GZ] +source_urls = [SOURCEFORGE_SOURCE] + +dependencies = [ + ('freetype', '2.10.1'), + ('libjpeg-turbo', '2.0.5'), + ('X11', '20200222'), +] + +builddependencies = [ + ('binutils', '2.34'), + ('pkg-config', '0.29.2'), + ('Autotools', '20200321'), + ('flex', '2.6.4'), + ('Bison', '3.6.4'), + ('util-linux', '2.36'), +] + +# makefile is not parallel safe +parallel = 1 + +sanity_check_paths = { + 'files': ['lib/libMrm.a', 'lib/libUil.a', 'lib/libXm.a', 'bin/mwm', 'bin/uil', 'bin/xmbind'], + 'dirs': ['include/Mrm', 'include/uil', 'include/X11', 'include/Xm'], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/m/mpi4py/mpi4py-3.0.3-gompi-2020-Python-3.8.5.eb b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-gompi-2020-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..425ebec809240c7feda580755bb9ef23074e1748 --- /dev/null +++ b/Golden_Repo/m/mpi4py/mpi4py-3.0.3-gompi-2020-Python-3.8.5.eb @@ -0,0 +1,27 @@ +easyblock = 'PythonPackage' + +name = 'mpi4py' +version = '3.0.3' + +homepage = 'https://bitbucket.org/mpi4py/mpi4py' +description = """MPI for Python (mpi4py) provides bindings of the Message Passing Interface (MPI) standard for + the Python programming language, allowing any Python program to exploit multiple processors. +""" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +toolchain = {'name': 'gompi', 'version': '2020'} + +source_urls = [BITBUCKET_DOWNLOADS] +sources = [SOURCE_TAR_GZ] + +versionsuffix = '-Python-%(pyver)s' + +dependencies = [('Python', '3.8.5')] + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/mpi4py'], +} + +moduleclass = 'mpi' diff --git a/Golden_Repo/n/NCO/NCO-4.9.5-gpsmpi-2020.eb b/Golden_Repo/n/NCO/NCO-4.9.5-gpsmpi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..18b667fad77c0277ebb679667c7b6c6b9906b115 --- /dev/null +++ b/Golden_Repo/n/NCO/NCO-4.9.5-gpsmpi-2020.eb @@ -0,0 +1,51 @@ +easyblock = 'ConfigureMake' + +name = 'NCO' +version = '4.9.5' + +homepage = 'http://nco.sourceforge.net' +description = """NCO manipulates data stored in netCDF-accessible formats, + including HDF4 and HDF5. It also exploits the geophysical expressivity of many + CF (Climate & Forecast) metadata conventions, the flexible description of + physical dimensions translated by UDUnits, the network transparency of OPeNDAP, + the storage features (e.g., compression, chunking, groups) of HDF (the + Hierarchical Data Format), and many powerful mathematical and statistical + algorithms of GSL (the GNU Scientific Library). +""" + +site_contacts = 'a.ghasemi@fz-juelich.de' + +toolchain = {'name': 'gpsmpi', 'version': '2020'} +toolchainopts = {'opt': True, 'pic': True} + +configopts = '--enable-optimize-custom --enable-debug-custom ' + +sources = [SOURCELOWER_TAR_GZ] +source_urls = ['http://nco.sourceforge.net/src/'] + +patches = ['nco_4.9.5_yyget_gcc9.patch'] + +builddependencies = [ + ('Bison', '3.6.4'), + ('flex', '2.6.4'), +] + +dependencies = [ + ('cURL', '7.71.1'), + ('netCDF', '4.7.4'), + ('UDUNITS', '2.2.26'), + ('GSL', '2.6'), + ('expat', '2.2.9'), + # ANTLR 3.X doesn't have C++ support and therefore is not usable + # ANTLR 4.X has C++ support, but right now is not compatible with NCO + # See https://sourceforge.net/p/nco/discussion/9831/thread/1a424aac/ + ('ANTLR', '2.7.7', '-Python-3.8.5'), + ('libdap', '3.20.6'), +] + +sanity_check_paths = { + 'files': ["bin/ncks", "bin/ncrename"], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/n/NCO/nco_4.9.5_yyget_gcc9.patch b/Golden_Repo/n/NCO/nco_4.9.5_yyget_gcc9.patch new file mode 100644 index 0000000000000000000000000000000000000000..6c62faa6a24e89651ccffb86b6fc70c1be1e8fe9 --- /dev/null +++ b/Golden_Repo/n/NCO/nco_4.9.5_yyget_gcc9.patch @@ -0,0 +1,12 @@ +diff -ruN nco-4.9.5.orig/src/nco/ncap_lex.l nco-4.9.5/src/nco/ncap_lex.l +--- nco-4.9.5.orig/src/nco/ncap_lex.l 2018-09-21 17:23:39.000000000 +0200 ++++ nco-4.9.5/src/nco/ncap_lex.l 2018-11-09 16:43:31.201995148 +0100 +@@ -107,7 +107,7 @@ + Once all platforms upgrade to Flex >= 2.6.4 we can deprecate yy_size_t code + However, MacOSX may never upgrade to newer Flex + CZ's decision is to keep current behavior until breakage cannot be ignored and then sacrifice buildability on older Flex */ +- yy_size_t yyget_leng(void); /* fixes: warning: no previous prototype for `yyget_leng' */ ++ int yyget_leng(void); /* fixes: warning: no previous prototype for `yyget_leng' */ + int yyget_lineno(void); /* fixes: warning: no previous prototype for `yyget_lineno' */ + int yylex_destroy(void); /* fixes: warning: no previous prototype for `yylex_destroy' */ + void yyset_debug(int bdebug); /* fixes: warning: no previous prototype for `yyset_debug' */ diff --git a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2020.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..4579678528d194e85d13e299bff06a71660fae51 --- /dev/null +++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-gompi-2020.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' + +name = 'netCDF-C++4' +version = '4.3.1' + +homepage = 'http://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data. +""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'gompi', 'version': '2020'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc'] + +dependencies = [('netCDF', '4.7.4')] + +sanity_check_paths = { + 'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-iompi-2020.eb b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-iompi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..004248a3895cbf017105a68c04f320f2833d1d6d --- /dev/null +++ b/Golden_Repo/n/netCDF-C++4/netCDF-C++4-4.3.1-iompi-2020.eb @@ -0,0 +1,28 @@ +easyblock = 'ConfigureMake' + +name = 'netCDF-C++4' +version = '4.3.1' + +homepage = 'http://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data. +""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'iompi', 'version': '2020'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc'] + +dependencies = [('netCDF', '4.7.4')] + +sanity_check_paths = { + 'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-gompi-2020.eb b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-gompi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..02af1d5a4d1da21c3dfb4a5e35f867f36decda39 --- /dev/null +++ b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-gompi-2020.eb @@ -0,0 +1,24 @@ +name = 'netCDF-Fortran' +version = '4.5.3' + +homepage = 'http://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data. +""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'gompi', 'version': '2020'} +toolchainopts = {'pic': True} + +source_urls = [ + 'ftp://ftp.unidata.ucar.edu/pub/netcdf/', + 'ftp://ftp.unidata.ucar.edu/pub/netcdf/old', +] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['123a5c6184336891e62cf2936b9f2d1c54e8dee299cfd9d2c1a1eb05dd668a74'] + +dependencies = [('netCDF', '4.7.4')] + +moduleclass = 'data' diff --git a/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-iompi-2020.eb b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-iompi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..4603bd8d204b006b82f51baf790229f171205c71 --- /dev/null +++ b/Golden_Repo/n/netCDF-Fortran/netCDF-Fortran-4.5.3-iompi-2020.eb @@ -0,0 +1,24 @@ +name = 'netCDF-Fortran' +version = '4.5.3' + +homepage = 'http://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data. +""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'iompi', 'version': '2020'} +toolchainopts = {'pic': True} + +source_urls = [ + 'ftp://ftp.unidata.ucar.edu/pub/netcdf/', + 'ftp://ftp.unidata.ucar.edu/pub/netcdf/old', +] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['123a5c6184336891e62cf2936b9f2d1c54e8dee299cfd9d2c1a1eb05dd668a74'] + +dependencies = [('netCDF', '4.7.4')] + +moduleclass = 'data' diff --git a/Golden_Repo/n/netCDF/netCDF-4.7.4-gompi-2020.eb b/Golden_Repo/n/netCDF/netCDF-4.7.4-gompi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..caf338f731becd8486766baa70e69ee453f2558f --- /dev/null +++ b/Golden_Repo/n/netCDF/netCDF-4.7.4-gompi-2020.eb @@ -0,0 +1,44 @@ +name = 'netCDF' +version = '4.7.4' + +homepage = 'http://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data. +""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'gompi', 'version': '2020'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = ['https://github.com/Unidata/netcdf-c/archive/'] +sources = ['v%s.tar.gz' % (version)] +checksums = ['99930ad7b3c4c1a8e8831fb061cb02b2170fc8e5ccaeda733bd99c3b9d31666b'] + +dependencies = [ + ('HDF5', '1.10.6'), + ('cURL', '7.71.1'), + ('Szip', '2.1.1'), + ('parallel-netcdf', '1.12.1') +] + +builddependencies = [ + ('CMake', '3.18.0'), + ('Doxygen', '1.8.18'), +] + +# make sure both static and shared libs are built +configopts = [ + "-DCURL_LIBRARY=$EBROOTCURL/lib/libcurl.so -DCURL_INCLUDE_DIR=$EBROOTCURL/include " + + "-DENABLE_PNETCDF=ON -DBUILD_SHARED_LIBS=ON", + "-DCURL_LIBRARY=$EBROOTCURL/lib/libcurl.so -DCURL_INCLUDE_DIR=$EBROOTCURL/include " + + "-DENABLE_PNETCDF=ON -DBUILD_SHARED_LIBS=OFF", +] + +sanity_check_paths = { + 'files': ["include/netcdf_mem.h", "include/netcdf_par.h"], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/n/netCDF/netCDF-4.7.4-iompi-2020.eb b/Golden_Repo/n/netCDF/netCDF-4.7.4-iompi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..000bde607dc100300c8c448c4a2043b85579ff37 --- /dev/null +++ b/Golden_Repo/n/netCDF/netCDF-4.7.4-iompi-2020.eb @@ -0,0 +1,44 @@ +name = 'netCDF' +version = '4.7.4' + +homepage = 'http://www.unidata.ucar.edu/software/netcdf/' +description = """NetCDF (network Common Data Form) is a set of software libraries + and machine-independent data formats that support the creation, access, and sharing of array-oriented + scientific data. +""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'iompi', 'version': '2020'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = ['https://github.com/Unidata/netcdf-c/archive/'] +sources = ['v%s.tar.gz' % (version)] +checksums = ['99930ad7b3c4c1a8e8831fb061cb02b2170fc8e5ccaeda733bd99c3b9d31666b'] + +dependencies = [ + ('HDF5', '1.10.6'), + ('cURL', '7.71.1'), + ('Szip', '2.1.1'), + ('parallel-netcdf', '1.12.1') +] + +builddependencies = [ + ('CMake', '3.18.0'), + ('Doxygen', '1.8.18'), +] + +# make sure both static and shared libs are built +configopts = [ + "-DCURL_LIBRARY=$EBROOTCURL/lib/libcurl.so -DCURL_INCLUDE_DIR=$EBROOTCURL/include " + + "-DENABLE_PNETCDF=ON -DBUILD_SHARED_LIBS=ON", + "-DCURL_LIBRARY=$EBROOTCURL/lib/libcurl.so -DCURL_INCLUDE_DIR=$EBROOTCURL/include " + + "-DENABLE_PNETCDF=ON -DBUILD_SHARED_LIBS=OFF", +] + +sanity_check_paths = { + 'files': ["include/netcdf_mem.h", "include/netcdf_par.h"], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/n/netcdf4-python/netcdf4-python-1.5.4-ipsmpi-2020-Python-3.8.5.eb b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.5.4-ipsmpi-2020-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..eb556e313557705771705c612092036b7c422fd9 --- /dev/null +++ b/Golden_Repo/n/netcdf4-python/netcdf4-python-1.5.4-ipsmpi-2020-Python-3.8.5.eb @@ -0,0 +1,44 @@ +easyblock = 'PythonBundle' + +name = 'netcdf4-python' +version = '1.5.4' +versionsuffix = '-Python-%(pyver)s' + +homepage = 'https://unidata.github.io/netcdf4-python/' +description = """Python/numpy interface to netCDF.""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'ipsmpi', 'version': '2020'} +toolchainopts = {'usempi': True} + +source_urls = ['https://github.com/Unidata/netcdf4-python/archive/'] + +dependencies = [ + ('Python', '3.8.5'), + ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')), + ('netCDF', '4.7.4'), + ('mpi4py', '3.0.3', versionsuffix), +] + +use_pip = True +sanity_pip_check = True +runtest = False # mpirun problems +skipsteps = ['sanitycheck'] # mpirun problems + +exts_default_options = {'source_urls': [PYPI_SOURCE]} + +exts_list = [ + ('cftime', '1.2.1', { + 'checksums': ['ab5d5076f7d3e699758a244ada7c66da96bae36e22b9e351ce0ececc36f0a57f'], + }), + (name, version, { + 'source_tmpl': 'netCDF4-%(version)s.tar.gz', + 'source_urls': ['https://pypi.python.org/packages/source/n/netCDF4'], + 'checksums': ['941de6f3623b6474ecb4d043be5990690f7af4cf0d593b31be912627fe5aad03'], + }), +] + +fix_python_shebang_for = ['bin/*'] + +moduleclass = 'data' diff --git a/Golden_Repo/n/nodejs/nodejs-12.19.0-GCCcore-9.3.0.eb b/Golden_Repo/n/nodejs/nodejs-12.19.0-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..fc8283d69c6eef1e64e261eac88f20bdce88f324 --- /dev/null +++ b/Golden_Repo/n/nodejs/nodejs-12.19.0-GCCcore-9.3.0.eb @@ -0,0 +1,46 @@ +easyblock = 'ConfigureMake' + +name = 'nodejs' +version = '12.19.0' +local_libversion = '72' + +homepage = 'https://nodejs.org' +description = """Node.js is a platform built on Chrome's JavaScript runtime + for easily building fast, scalable network applications. Node.js uses an + event-driven, non-blocking I/O model that makes it lightweight and efficient, + perfect for data-intensive real-time applications that run across distributed devices.""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['http://%(name)s.org/dist/v%(version)s/'] +sources = ['node-v%(version)s.tar.gz'] +checksums = ['1279e49be60d92cf4c1a48c9d92397db4e9284a100bc47689ce7924686bbddd1'] + +builddependencies = [ + ('binutils', '2.34'), + ('Python', '3.8.5'), +] + +configopts = [ + '--with-intl=none', # Fully disable ICU to avoid issues with the embedded icu-small library + '--shared --with-intl=none', # Build libnode.so in a second run +] + +# Link libv8 libs to libnode +postinstallcmds = [ + "cd %%(installdir)s/lib; ln -s libnode.%s.%s libnode.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT), + "cd %%(installdir)s/lib; ln -s libnode.%s.%s libv8.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT), + "cd %%(installdir)s/lib; ln -s libnode.%s.%s libv8_libbase.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT), + "cd %%(installdir)s/lib; ln -s libnode.%s.%s libv8_libplatform.%s" % (SHLIB_EXT, local_libversion, SHLIB_EXT), +] + +sanity_check_paths = { + 'files': ['bin/node', 'bin/npm', 'lib/libnode.%s.%s' % (SHLIB_EXT, local_libversion)], + 'dirs': ['lib/node_modules', 'include/node'] +} + +modextrapaths = {'CPATH': 'include/node'} + +moduleclass = 'lang' diff --git a/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb b/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..1fab2a86a834a9dd27ad5cce12f854a1b902d38a --- /dev/null +++ b/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb @@ -0,0 +1,71 @@ +easyblock = 'ConfigureMake' + +name = 'Octave' +version = '5.2.0' + +homepage = 'http://www.gnu.org/software/octave/' +description = """GNU Octave is a high-level interpreted language, primarily intended for numerical computations.""" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +toolchain = {'name': 'gpsmkl', 'version': '2020'} + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_GZ] + +builddependencies = [ + ('Bison', '3.6.4'), + ('flex', '2.6.4'), + ('pkg-config', '0.29.2'), + ('texinfo', '6.7'), + ('gperf', '3.1'), + ('Autotools', '20200321'), +] + +dependencies = [ + ('X11', '20200222'), + ('PCRE', '8.44'), + ('ncurses', '6.2'), + ('libreadline', '8.0'), + ('ARPACK-NG', '3.7.0'), + ('cURL', '7.71.1'), + ('FLTK', '1.3.5'), + ('fontconfig', '2.13.92'), + ('freetype', '2.10.1'), + ('GLPK', '4.65'), + ('GL2PS', '1.4.2'), + ('gnuplot', '5.2.8'), + ('Java', '1.8', '', True), + ('OpenGL', '2020'), + ('zlib', '1.2.11'), + ('Qhull', '2020.1'), + ('Qt5', '5.14.2'), + ('HDF5', '1.10.6'), + ('qrupdate', '1.1.2'), + ('SuiteSparse', '5.7.1', '-CUDA'), + ('GraphicsMagick', '1.3.35'), + ('FFTW', '3.3.8'), +] + +# This is an OS dep because texinfo requires tex (and tex is too much to port to EB). +# There is a texinfo in the EB repo but this doesn't really work as it requires an additional step to install +# the necessary texinfo.tex files in the main tex installation. If tex is coming from the system and not +# EB then this additional step can't be done...so better to push everything back to the OS +osdependencies = ['texinfo-tex'] + +configopts = 'MOC=$EBROOTQT5/bin/moc ' +configopts += 'UIC=$EBROOTQT5/bin/uic ' +configopts += 'RCC=$EBROOTQT5/bin/rcc ' +configopts += 'LRELEASE=$EBROOTQT5/bin/lrelease ' +configopts += '--with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK" --disable-docs ' +# correct for both GCC and Intel compilers +configopts += '--enable-fortran-calling-convention=gfortran ' + +sanity_check_paths = { + 'files': ['bin/octave'], + 'dirs': [] +} + +sanity_check_commands = [('octave', '--eval "1+2"')] + +moduleclass = 'math' diff --git a/Golden_Repo/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb b/Golden_Repo/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb index 20e5da539a12d0939f42dca3580b0cbd9a478332..7ca6573771b35106285233167015aec6f98c51ca 100644 --- a/Golden_Repo/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb +++ b/Golden_Repo/o/OpenMPI-settings/OpenMPI-settings-4.1-UCX-CUDA.eb @@ -21,7 +21,7 @@ modextravars = { 'OMPI_MCA_mpi_param_check': '1', 'OMPI_MCA_mpi_show_handle_leaks': '1', 'OMPI_MCA_mpi_warn_on_fork': '1', - 'OMPI_MCA_btl': 'self,vader,openib', + 'OMPI_MCA_btl': 'self,vader,uct', 'OMPI_MCA_btl_openib_allow_ib': '1', 'OMPI_MCA_bml_r2_show_unreach_errors': '0', 'OMPI_MCA_coll': '^ml', diff --git a/Golden_Repo/p/PETSc/PETSc-3.14-gpsmkl-2020.eb b/Golden_Repo/p/PETSc/PETSc-3.14-gpsmkl-2020.eb index 907c2b9a49a7cca8960b7224c92bb450b930f1b1..414bc9f17b0acfde951aadd442d484c4d756ba80 100644 --- a/Golden_Repo/p/PETSc/PETSc-3.14-gpsmkl-2020.eb +++ b/Golden_Repo/p/PETSc/PETSc-3.14-gpsmkl-2020.eb @@ -25,6 +25,9 @@ sources = ['petsc-lite-%s.tar.gz' % version] builddependencies = [ ('CMake', '3.18.0') ] +dependencies = [ + ('HDF5', '1.10.6'), +] download_deps = [ 'triangle', @@ -42,7 +45,6 @@ download_deps_static = [ 'chaco', 'sundials', 'parms', - 'hdf5', ] configopts = '--with-large-file-io --with-cxx-dialect=C++11 --with-pic=0 -fPIC' diff --git a/Golden_Repo/p/PETSc/PETSc-3.14-intel-2020.eb b/Golden_Repo/p/PETSc/PETSc-3.14-intel-2020.eb index 0084920dbfb6ba5074efcf6be183bf8876ca1360..3fd12b03816ec55e3ec3ec8c96672a98cc8a392e 100644 --- a/Golden_Repo/p/PETSc/PETSc-3.14-intel-2020.eb +++ b/Golden_Repo/p/PETSc/PETSc-3.14-intel-2020.eb @@ -25,6 +25,9 @@ sources = ['petsc-lite-%s.tar.gz' % version] builddependencies = [ ('CMake', '3.18.0') ] +dependencies = [ + ('HDF5', '1.10.6'), +] download_deps = [ 'triangle', @@ -42,7 +45,6 @@ download_deps_static = [ 'chaco', 'sundials', 'parms', - 'hdf5', ] configopts = '--with-large-file-io --with-cxx-dialect=C++11 --with-pic=0 -fPIC' diff --git a/Golden_Repo/p/PETSc/PETSc-3.14-intel-para-2020.eb b/Golden_Repo/p/PETSc/PETSc-3.14-intel-para-2020.eb index c427c686f704885c0454300ff616e683d578d749..4e4d267f16a35d5f687482412d8402ebda490cf8 100644 --- a/Golden_Repo/p/PETSc/PETSc-3.14-intel-para-2020.eb +++ b/Golden_Repo/p/PETSc/PETSc-3.14-intel-para-2020.eb @@ -25,6 +25,9 @@ sources = ['petsc-lite-%s.tar.gz' % version] builddependencies = [ ('CMake', '3.18.0') ] +dependencies = [ + ('HDF5', '1.10.6'), +] download_deps = [ 'triangle', @@ -42,7 +45,6 @@ download_deps_static = [ 'chaco', 'sundials', 'parms', - 'hdf5', ] configopts = '--with-large-file-io --with-cxx-dialect=C++11 --with-pic=0 -fPIC' diff --git a/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb b/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb index d2d1123218465a79a313b81613dd7484667acdf2..e18f87f8d34dd5f804eeca69be97bacf47e6a11c 100644 --- a/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb +++ b/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb @@ -25,7 +25,7 @@ toolchain = {'name': 'GCCcore', 'version': '9.3.0'} osdependencies = [('openssl-devel', 'libssl-dev')] dependencies = [ - ('Java', '11', '', True), + ('Java', '1.8', '', True), ('libreadline', '8.0'), ('zlib', '1.2.11'), ] diff --git a/Golden_Repo/p/PyCairo/PyCairo-1.18.2-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/p/PyCairo/PyCairo-1.18.2-GCCcore-9.3.0-Python-3.8.5.eb index b214687e48e17d06a7397ee78c5df498360de28b..a728a40dc2e7f436f686d483e56f0586c716227b 100644 --- a/Golden_Repo/p/PyCairo/PyCairo-1.18.2-GCCcore-9.3.0-Python-3.8.5.eb +++ b/Golden_Repo/p/PyCairo/PyCairo-1.18.2-GCCcore-9.3.0-Python-3.8.5.eb @@ -16,13 +16,10 @@ sources = [SOURCELOWER_TAR_GZ] download_dep_fail = True -configopts = " --nopyc --nopyo " - builddependencies = [ ('binutils', '2.34'), ('Coreutils', '8.32'), ('pkg-config', '0.29.2'), - ('X11', '20200222'), ] dependencies = [ @@ -30,6 +27,13 @@ dependencies = [ ('cairo', '1.17.2'), ] +# PyGTK needs PyCairo installed by pip +use_pip = True +sanity_pip_check = True + +# Don't build a wheel or the pkg-cfg file won't be installed +installopts = '--no-binary=%(namelower)s' + options = {'modulename': 'cairo'} modextrapaths = { @@ -37,8 +41,11 @@ modextrapaths = { } sanity_check_paths = { - 'files': [], - 'dirs': ['lib/python%(pyshortver)s/site-packages'], + 'files': ['%s/%s.%s' % (p, n, e) + for (p, e) in [('include/pycairo', 'h'), ('lib/pkgconfig', 'pc')] for n in ['py3cairo']], + 'dirs': ['lib/python%(pyshortver)s/site-packages/cairo'], } +options = {'modulename': 'cairo'} + moduleclass = 'vis' diff --git a/Golden_Repo/p/PyGObject/PyGObject-3.34.0-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/p/PyGObject/PyGObject-3.34.0-GCCcore-9.3.0-Python-3.8.5.eb index 5461f0610d7ff3b09f184924af5c3c0ab3cd0728..e64e5fedbd5150883504dd7e8ea1f4c47167b8dc 100644 --- a/Golden_Repo/p/PyGObject/PyGObject-3.34.0-GCCcore-9.3.0-Python-3.8.5.eb +++ b/Golden_Repo/p/PyGObject/PyGObject-3.34.0-GCCcore-9.3.0-Python-3.8.5.eb @@ -4,16 +4,18 @@ name = 'PyGObject' version = '3.34.0' versionsuffix = '-Python-%(pyver)s' -homepage = 'http://www.pygtk.org/' -description = """Python Bindings for GLib/GObject/GIO/GTK+ +homepage = 'https://pygobject.readthedocs.io' +description = """PyGObject is a Python package which provides bindings for GObject based +libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more. """ site_contacts = 'a.kreuzer@fz-juelich.de' toolchain = {'name': 'GCCcore', 'version': '9.3.0'} -source_urls = [FTPGNOME_SOURCE] -sources = [SOURCELOWER_TAR_XZ] +source_urls = [PYPI_SOURCE] +sources = [SOURCE_TAR_GZ] +checksums = ['2acb0daf2b3a23a90f52066cc23d1053339fee2f5f7f4275f8baa3704ae0c543'] builddependencies = [ ('binutils', '2.34'), @@ -25,12 +27,16 @@ dependencies = [ ('GLib', '2.64.4'), ('GObject-Introspection', '1.64.1'), ('PyCairo', '1.18.2', versionsuffix), + ('libffi', '3.3'), ] use_pip = True sanity_pip_check = True download_dep_fail = True +# Don't build a wheel or the pkg-cfg file won't be installed +installopts = '--no-binary=%(namelower)s --no-use-pep517' + sanity_check_paths = { 'files': ['include/pygobject-%(version_major)s.0/pygobject.h'], 'dirs': ['lib/python%(pyshortver)s/site-packages/'], diff --git a/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-gompi-2020.eb b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-gompi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..06bd3df7f9eb7ef41eba455eb10c0ce61d603ad1 --- /dev/null +++ b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-gompi-2020.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'parallel-netcdf' +version = '1.12.1' + +homepage = 'http://trac.mcs.anl.gov/projects/parallel-netcdf' +description = """PnetCDF is a library providing high-performance parallel I/O while still maintaining file-format +compatibility with Unidata's NetCDF, specifically the formats of CDF-1 and CDF-2. + +Although NetCDF supports parallel I/O starting from version 4, the files must be in HDF5 format. PnetCDF is currently +the only choice for carrying out parallel I/O on files that are in classic formats +""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'gompi', 'version': '2020'} +toolchainopts = {'usempi': True, 'pic': True} + +source_urls = ['https://parallel-netcdf.github.io/Release/'] +sources = ['pnetcdf-%(version)s.tar.gz'] +checksums = ['56f5afaa0ddc256791c405719b6436a83b92dcd5be37fe860dea103aee8250a2'] + +configopts = '--enable-shared' + +builddependencies = [ + ('M4', '1.4.18'), +] + +sanity_check_paths = { + 'files': ['include/pnetcdf.h', 'include/pnetcdf.inc', 'include/pnetcdf.mod', 'lib/libpnetcdf.a'], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-iompi-2020.eb b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-iompi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..982ba9e407bb97743efafb3c20846db0c8953e26 --- /dev/null +++ b/Golden_Repo/p/parallel-netcdf/parallel-netcdf-1.12.1-iompi-2020.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'parallel-netcdf' +version = '1.12.1' + +homepage = 'http://trac.mcs.anl.gov/projects/parallel-netcdf' +description = """PnetCDF is a library providing high-performance parallel I/O while still maintaining file-format +compatibility with Unidata's NetCDF, specifically the formats of CDF-1 and CDF-2. + +Although NetCDF supports parallel I/O starting from version 4, the files must be in HDF5 format. PnetCDF is currently +the only choice for carrying out parallel I/O on files that are in classic formats +""" + +site_contacts = 's.luehrs@fz-juelich.de' + +toolchain = {'name': 'iompi', 'version': '2020'} +toolchainopts = {'usempi': True, 'pic': True} + +source_urls = ['https://parallel-netcdf.github.io/Release/'] +sources = ['pnetcdf-%(version)s.tar.gz'] +checksums = ['56f5afaa0ddc256791c405719b6436a83b92dcd5be37fe860dea103aee8250a2'] + +configopts = '--enable-shared' + +builddependencies = [ + ('M4', '1.4.18'), +] + +sanity_check_paths = { + 'files': ['include/pnetcdf.h', 'include/pnetcdf.inc', 'include/pnetcdf.mod', 'lib/libpnetcdf.a'], + 'dirs': [], +} + +moduleclass = 'data' diff --git a/Golden_Repo/q/Qhull/Qhull-2020.1-GCCcore-9.3.0.eb b/Golden_Repo/q/Qhull/Qhull-2020.1-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..09d0d58443905b2770901c4495d728d2892d2da9 --- /dev/null +++ b/Golden_Repo/q/Qhull/Qhull-2020.1-GCCcore-9.3.0.eb @@ -0,0 +1,39 @@ +easyblock = 'CMakeMake' + +name = 'Qhull' +version = '2020.1' + +homepage = 'http://www.qhull.org' +description = """ +Qhull computes the convex hull, Delaunay triangulation, Voronoi diagram, halfspace intersection about a point, +furthest-site Delaunay triangulation, and furthest-site Voronoi diagram. The source code runs in 2-d, 3-d, 4-d, +and higher dimensions. Qhull implements the Quickhull algorithm for computing the convex hull. +""" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +# Recently changed the Unix version numbering see http://www.qhull.org/src/Changes.txt +# and https://github.com/Homebrew/homebrew-science/issues/3353 +sources = ['%(namelower)s-%(version_major)s-src-8.0.0.tgz'] +source_urls = ['http://www.qhull.org/download/'] + +builddependencies = [ + ('binutils', '2.34'), + ('CMake', '3.18.0'), +] + + +sanity_check_paths = { + 'files': ['bin/qhull', 'lib/libqhull.%s' % SHLIB_EXT, 'lib/pkgconfig/qhull.pc'], + 'dirs': [], +} + +modextrapaths = { + 'CPATH': ['qhull/include'], +} + +parallel = 1 + +moduleclass = 'math' diff --git a/Golden_Repo/q/qrupdate/qrupdate-1.1.2-GCCcore-9.3.0.eb b/Golden_Repo/q/qrupdate/qrupdate-1.1.2-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..34018ae3b1ed3a1fe5dd602c68b52885e494578d --- /dev/null +++ b/Golden_Repo/q/qrupdate/qrupdate-1.1.2-GCCcore-9.3.0.eb @@ -0,0 +1,34 @@ +easyblock = 'MakeCp' + +name = 'qrupdate' +version = '1.1.2' + +homepage = 'https://sourceforge.net/projects/qrupdate/' +description = """qrupdate is a Fortran library for fast updates of QR and Cholesky decompositions.""" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'pic': True} + +sources = [SOURCE_TAR_GZ] +source_urls = [SOURCEFORGE_SOURCE] + +patches = ['%(name)s-%(version)s_makeconf.patch'] + +builddependencies = [ + ('binutils', '2.34') +] + +buildopts = 'lib' + +files_to_copy = [(['libqrupdate.a'], 'lib')] + +sanity_check_paths = { + 'files': ['lib/libqrupdate.a'], + 'dirs': [], +} + +parallel = 1 + +moduleclass = 'numlib' diff --git a/Golden_Repo/q/qrupdate/qrupdate-1.1.2_makeconf.patch b/Golden_Repo/q/qrupdate/qrupdate-1.1.2_makeconf.patch new file mode 100644 index 0000000000000000000000000000000000000000..8e0f5c03c6296679d934b64ce3ff9d510808b1c9 --- /dev/null +++ b/Golden_Repo/q/qrupdate/qrupdate-1.1.2_makeconf.patch @@ -0,0 +1,17 @@ +# Pick FC and FFLAGS from environmental variables +# March 8th 2016 B. Hajgato (Free Uviveristy Brussels - VUB) +--- qrupdate-1.1.2/Makeconf.old 2010-01-19 12:35:49.000000000 +0100 ++++ qrupdate-1.1.2/Makeconf 2016-03-08 20:51:11.662603099 +0100 +@@ -1,9 +1,9 @@ + # set this to your compiler's executable name (e.g. gfortran, g77) +-FC=gfortran ++FC?=gfortran + # requested flags +-FFLAGS=-fimplicit-none -O3 -funroll-loops ++FFLAGS?=-fimplicit-none -O3 -funroll-loops + # set if you need shared library +-FPICFLAGS=-fPIC ++FPICFLAGS= + + # BLAS library (only required for tests) + BLAS=-lblas diff --git a/Golden_Repo/r/rencode/rencode-1.0.5-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/r/rencode/rencode-1.0.5-GCCcore-9.3.0-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..9a3883116196a44240b3bdc026a9e678e209c82e --- /dev/null +++ b/Golden_Repo/r/rencode/rencode-1.0.5-GCCcore-9.3.0-Python-3.8.5.eb @@ -0,0 +1,44 @@ +easyblock = 'PythonPackage' + +name = 'rencode' +version = '1.0.5' +versionsuffix = '-Python-%(pyver)s' + +homepage = 'https://pypi.python.org/pypi/rencode/' +description = """ +The rencode module is similar to bencode from the BitTorrent project. +For complex, heterogeneous data structures with many small elements, +r-encodings take up significantly less space than b-encodings. +This version of rencode is a complete rewrite in Cython to attempt to +increase the performance over the pure Python module written by Petru Paler, Connelly Barnes et al. +""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +sources = [SOURCE_TAR_GZ] +source_urls = [PYPI_SOURCE] + +builddependencies = [ + ('binutils', '2.34'), +] + +dependencies = [ + ('Python', '3.8.5'), +] + +maxparallel = 12 + +use_pip = True +sanity_pip_check = True +download_dep_fail = True + +options = {'modulename': 'rencode'} + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/'], +} + +moduleclass = 'lib' diff --git a/Golden_Repo/r/rpmrebuild/rpmrebuild-2.15.eb b/Golden_Repo/r/rpmrebuild/rpmrebuild-2.15.eb new file mode 100644 index 0000000000000000000000000000000000000000..938c66f06f51237f7dc32b1055f5742b6cff159c --- /dev/null +++ b/Golden_Repo/r/rpmrebuild/rpmrebuild-2.15.eb @@ -0,0 +1,33 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild +# +# Copyright:: Copyright 2016 Forschungszentrum Juelich GmbH +# Authors:: Damian Alvarez <d.alvarez@fz-juelich.de> +# License:: MIT/GPL +# $Id$ +## + +easyblock = "Tarball" + +name = "rpmrebuild" +version = "2.15" + +homepage = 'http://rpmrebuild.sourceforge.net/' +description = """rpmrebuild is a tool to build an RPM file from a package that has already been installed""" + +site_contacts = 'a.strube@fz-juelich.de' + +toolchain = SYSTEM + +source_urls = [SOURCEFORGE_SOURCE] +sources = [SOURCELOWER_TAR_GZ] + +modextrapaths = {'PATH': ['']} +modextravars = {'RPMREBUILD_ROOT_DIR': '%(installdir)s'} + +sanity_check_paths = { + 'files': ["rpmrebuild"], + 'dirs': [] +} + +moduleclass = 'tools' diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gomkl-2020-Python-3.8.5.eb b/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gomkl-2020-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..c771059b9fdbe96ce2260d9dceb2364a54a70972 --- /dev/null +++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gomkl-2020-Python-3.8.5.eb @@ -0,0 +1,184 @@ +# Tensorflow takes a LOT of space during install. Try using --buildpath=$HOME/temp +easyblock = 'PythonBundle' + +name = 'TensorFlow' +version = '2.3.1' +versionsuffix = '-Python-%(pyver)s' + +homepage = 'https://www.tensorflow.org/' +description = "An open-source software library for Machine Intelligence" + +toolchain = {'name': 'gomkl', 'version': '2020'} +toolchainopts = {'usempi': True, 'pic': True} + +site_contacts = 'a.strube@fz-juelich.de' + +local_cudaver = '11.0' + +builddependencies = [ + ('binutils', '2.34'), + ('Bazel', '3.6.0'), + ('protobuf', '3.13.0'), + # git 2.x required, see also https://github.com/tensorflow/tensorflow/issues/29053 + ('git', '2.28.0'), + ('pybind11', '2.5.0', versionsuffix), +] +dependencies = [ + ('CUDA', local_cudaver, '', True), + ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, True), + ('NCCL', '2.7.8-1', '-CUDA-%s' % local_cudaver), + ('Python', '3.8.5'), + #('SciPy-Stack', '2020', pysuffix, ('gcccoremkl', '9.3.0-2020.2.254')), + ('h5py', '2.10.0', versionsuffix), + ('cURL', '7.71.1'), + ('double-conversion', '3.1.5'), + ('flatbuffers', '1.12.0'), + ('giflib', '5.2.1'), + ('hwloc', '2.2.0'), + ('ICU', '67.1'), + ('JsonCpp', '1.9.4'), + ('libjpeg-turbo', '2.0.5'), + ('LMDB', '0.9.24'), + ('NASM', '2.15.03'), + ('nsync', '1.24.0'), + ('SQLite', '3.32.3'), + ('PCRE', '8.44'), + ('protobuf-python', '3.13.0', versionsuffix), + ('libpng', '1.6.37'), + ('snappy', '1.1.8'), + ('SWIG', '4.0.2', versionsuffix), + ('zlib', '1.2.11'), +] + +exts_default_options = { + 'source_urls': [PYPI_SOURCE], + 'sanity_pip_check': True, +} +use_pip = True + +# Dependencies created and updated using findPythonDeps.sh: +# https://gist.github.com/Flamefire/49426e502cd8983757bd01a08a10ae0d +exts_list = [ + ('numpy', '1.18.5', { + 'source_urls': ['https://github.com/numpy/numpy/releases/download/v1.18.5/'], + 'patches': ['numpy-1.14.2-mkl.patch', + 'numpy-1.14.2-xhost.patch', + ], + }), + ('pandas', '1.1.3' + ), + ('Markdown', '3.2.2', { + 'checksums': ['1fafe3f1ecabfb514a5285fca634a53c1b32a81cb0feb154264d55bf2ff22c17'], + }), + ('pyasn1-modules', '0.2.8', { + 'checksums': ['905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e'], + }), + ('rsa', '4.6', { + 'checksums': ['109ea5a66744dd859bf16fe904b8d8b627adafb9408753161e766a92e7d681fa'], + }), + ('cachetools', '4.1.1', { + 'checksums': ['bbaa39c3dede00175df2dc2b03d0cf18dd2d32a7de7beb68072d13043c9edb20'], + }), + ('google-auth', '1.22.1', { + 'modulename': 'google.auth', + }), + ('oauthlib', '3.1.0', { + 'checksums': ['bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889'], + }), + ('requests-oauthlib', '1.3.0', { + 'checksums': ['b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a'], + }), + ('google-auth-oauthlib', '0.4.1', { + 'checksums': ['88d2cd115e3391eb85e1243ac6902e76e77c5fe438b7276b297fbe68015458dd'], + }), + ('Werkzeug', '1.0.1', { + 'checksums': ['6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c'], + }), + ('absl-py', '0.10.0', { + 'modulename': 'absl', + 'checksums': ['b20f504a7871a580be5268a18fbad48af4203df5d33dbc9272426cb806245a45'], + }), + ('astunparse', '1.6.3', { + 'checksums': ['5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872'], + }), + ('grpcio', '1.33.1', { + 'modulename': 'grpc', + }), + ('tensorboard-plugin-wit', '1.7.0', { + 'source_tmpl': 'tensorboard_plugin_wit-%(version)s-py3-none-any.whl', + 'unpack_sources': False, + 'checksums': ['ee775f04821185c90d9a0e9c56970ee43d7c41403beb6629385b39517129685b'], + }), + ('tensorboard', '2.3.0', { + 'source_tmpl': 'tensorboard-%(version)s-py3-none-any.whl', + 'unpack_sources': False, + 'checksums': ['d34609ed83ff01dd5b49ef81031cfc9c166bba0dabd60197024f14df5e8eae5e'], + }), + ('google-pasta', '0.2.0', { + 'modulename': 'pasta', + 'checksums': ['c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e'], + }), + ('termcolor', '1.1.0', { + 'checksums': ['1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b'], + }), + ('tensorflow-estimator', '2.3.0', { + 'source_tmpl': 'tensorflow_estimator-%(version)s-py2.py3-none-any.whl', + 'unpack_sources': False, + 'checksums': ['b75e034300ccb169403cf2695adf3368da68863aeb0c14c3760064c713d5c486'], + }), + ('astor', '0.8.1', { + }), + ('gast', '0.3.3', { + 'checksums': ['b881ef288a49aa81440d2c5eb8aeefd4c2bb8993d5f50edae7413a85bfdb3b57'], + }), + ('opt-einsum', '3.3.0', { + 'source_tmpl': 'opt_einsum-%(version)s.tar.gz', + 'checksums': ['59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549'], + }), + ('wrapt', '1.12.1', { + 'checksums': ['b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7'], + }), + ('Keras-Preprocessing', '1.1.2', { + 'source_tmpl': 'Keras_Preprocessing-%(version)s.tar.gz', + 'checksums': ['add82567c50c8bc648c14195bf544a5ce7c1f76761536956c3d2978970179ef3'], + }), + (name, version, { + 'patches': [ + 'TensorFlow-2.1.0_fix-cuda-build.patch', + 'TensorFlow-2.1.0_fix-system-nasm.patch', + 'TensorFlow-2.3.0_fix-json-include-style.patch', + 'TensorFlow-2.3.0_fix-system_absl_py.patch', + 'TensorFlow-2.3.0_fix-system-protobuf.patch', + 'TensorFlow-2.3.0_fix-system-protobuf2.patch', + 'TensorFlow-2.3.0_fix-protoc-build.patch', + 'TensorFlow-2.3.0_revert-tools-to-exectools-renaming.patch', + 'TensorFlow-2.3.1-fix-numpy-gcc10.patch', + ], + 'source_tmpl': 'v%(version)s.tar.gz', + 'source_urls': ['https://github.com/tensorflow/tensorflow/archive/'], + # 'test_script': 'TensorFlow-2.x_mnist-test.py', # Fails on juwels login nodes + 'checksums': [ + 'ee534dd31a811f7a759453567257d1e643f216d8d55a25c32d2fbfff8153a1ac', # v2.3.1.tar.gz + '78c20aeaa7784b8ceb46238a81e8c2461137d28e0b576deeba8357d23fbe1f5a', # TensorFlow-2.1.0_fix-cuda-build.patch + # TensorFlow-2.1.0_fix-system-nasm.patch + '6671e40d60edaf1e57b1861aa3b2178d48f9b7dfb5b5c0d44db541116f848f2a', + # TensorFlow-2.3.0_fix-json-include-style.patch + 'e04f5d9aa4c1222393b2cad4b84cd63128ef56eb5cc732d2afbc5d98dfa596a4', + # TensorFlow-2.3.0_fix-system_absl_py.patch + '04e53b637ca64c4804a4a8d636d75e3c09257034b143b70a33bfee09e6ab4b10', + # TensorFlow-2.3.0_fix-system-protobuf.patch + '4407c3f126eb9d3c1658ef8d6ab3a26e7ed2a40ac869dd194d8a1282f6432c1d', + # TensorFlow-2.3.0_fix-system-protobuf2.patch + '74718e007acb7f5f016848218421895a33e9e894620154482deb75408225577d', + # TensorFlow-2.3.0_fix-protoc-build.patch + '78a8390ea5e06dfcfb25f6434721abbe678e37c4ad7f052aad766c4df399bd53', + # TensorFlow-2.3.0_revert-tools-to-exectools-renaming.patch + '1a72f072a764bf66733445ce027c0bad7de7c88092363c0e2a7b91a422608d56', + # TensorFlow-2.3.1-fix-numpy-gcc10.patch + '48250cb9f5287438021ec50f32618b200a90ca81be069f1d888fdef655ed6eed', + ], + 'cuda_compute_capabilities': ['7.0', '7.5', '8.0'], + }), +] + +moduleclass = 'lib' diff --git a/Golden_Repo/t/tcsh/tcsh-6.22.02-GCCcore-9.3.0.eb b/Golden_Repo/t/tcsh/tcsh-6.22.02-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..ceb1f02fe628ded1cd643343eb4a78d76b3f966d --- /dev/null +++ b/Golden_Repo/t/tcsh/tcsh-6.22.02-GCCcore-9.3.0.eb @@ -0,0 +1,47 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild +# +# Copyright:: Copyright 2012-2013 University of Luxembourg/Computer Science and Communications Research Unit +# Authors:: Valentin Plugaru <valentin.plugaru@gmail.com> +# License:: MIT/GPL +# $Id$ +# +# This work implements a part of the HPCBIOS project and is a component of the policy: +# http://hpcbios.readthedocs.org/en/latest/HPCBIOS_05-06.html +## +easyblock = 'ConfigureMake' + +name = 'tcsh' +version = '6.22.02' + +homepage = 'https://www.tcsh.org' +description = """Tcsh is an enhanced, but completely compatible version of the Berkeley UNIX C shell (csh). + It is a command language interpreter usable both as an interactive login shell and a shell script command + processor. It includes a command-line editor, programmable word completion, spelling correction, a history + mechanism, job control and a C-like syntax. +""" + +site_contacts = 'a.strube@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +sources = [SOURCELOWER_TAR_GZ] +source_urls = [ + 'ftp://ftp.astron.com/pub/%(namelower)s', + 'ftp://ftp.astron.com/pub/%(namelower)s/old', +] + +builddependencies = [ + ('binutils', '2.34'), +] + +dependencies = [ + ('ncurses', '6.2') +] + +sanity_check_paths = { + 'files': ["bin/tcsh"], + 'dirs': [] +} + +moduleclass = 'tools' diff --git a/Golden_Repo/t/texinfo/texinfo-6.7-GCCcore-9.3.0.eb b/Golden_Repo/t/texinfo/texinfo-6.7-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..3bf0f70a4452f445269f286367f9b80e5b52e950 --- /dev/null +++ b/Golden_Repo/t/texinfo/texinfo-6.7-GCCcore-9.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'ConfigureMake' + +name = 'texinfo' +version = '6.7' + +homepage = 'https://www.gnu.org/software/texinfo/' +description = """Texinfo is the official documentation format of the GNU project.""" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +source_urls = [GNU_SOURCE] +sources = [SOURCELOWER_TAR_XZ] + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +builddependencies = [ + ('binutils', '2.34'), +] + +dependencies = [ + ('ncurses', '6.2'), + ('texlive', '20200406'), +] + +preinstallopts = "make TEXMF=%(installdir)s/texmf install-tex && " + +# This will overwrite a users $TEXMFHOME so this module is best used as a build dependency +modextravars = {'TEXMFHOME': '%(installdir)s/texmf'} +modloadmsg = "\\n" +modloadmsg += "WARNING: This texinfo module has (re)defined the value for the environment variable \\$TEXMFHOME.\\n" +modloadmsg += "If you use a custom texmf directory (such as ~/texmf) you should copy files found in the\\n" +modloadmsg += "new \\$TEXMFHOME to your custom directory and reset the value of \\$TEXMFHOME to point to that space:\\n" +modloadmsg += "\\tcp -r \\$TEXMFHOME/* /path/to/your/texmf\\n" +modloadmsg += "\\texport TEXMFHOME=/path/to/your/texmf\\n" + +sanity_check_paths = { + 'files': ['bin/info', 'bin/makeinfo', 'bin/pod2texi', 'bin/texi2pdf', 'texmf/tex/texinfo/texinfo.tex'], + 'dirs': [], +} + +moduleclass = 'devel' diff --git a/Golden_Repo/t/texlive/texlive-20200406-GCCcore-9.3.0.eb b/Golden_Repo/t/texlive/texlive-20200406-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..0bfa984ab3a17a8839b321813a6d45d8be1aa859 --- /dev/null +++ b/Golden_Repo/t/texlive/texlive-20200406-GCCcore-9.3.0.eb @@ -0,0 +1,62 @@ +# Based off the 2017 version by John Dey jfdey@fredhutch.org +# https://github.com/easybuilders/easybuild-easyconfigs/pull/5085 +easyblock = 'Tarball' + +name = 'texlive' +version = '20200406' + +homepage = 'https://tug.org' +description = """TeX is a typesetting language. Instead of visually formatting your text, you enter your manuscript + text intertwined with TeX commands in a plain text file. You then run TeX to produce formatted output, such as a + PDF file. Thus, in contrast to standard word processors, your document is a separate file that does not pretend to + be a representation of the final typeset output, and so can be easily edited and manipulated.""" + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['ftp://tug.org/texlive/historic/2020/'] +sources = [ + { + 'download_filename': 'install-tl-unx.tar.gz', + 'filename': 'install-tl-unx-%(version)s.tar.gz', + } +] +checksums = ['7c90a50e55533d57170cbc7c0370a010019946eb18570282948e1af6f809382d'] + +dependencies = [ + ('X11', '20200222'), + ('libpng', '1.6.37'), + ('OpenGL', '2020'), + ('Perl', '5.32.0'), + ('HarfBuzz', '2.6.7'), + # Poppler, optional - PDF rendering library + # ('poppler', '0.90.1'), + ('cairo', '1.17.2'), + ('fontconfig', '2.13.92'), + ('zlib', '1.2.11'), + # Graphite2, optional - font system for lesser-known languages + # ('graphite2', '1.3.14'), +] + +postinstallcmds = [ + 'echo "TEXDIR %(installdir)s/" > %(installdir)s/texlive.profile && ' + 'echo "TEXMFLOCAL %(installdir)s/texmf-local" >> %(installdir)s/texlive.profile && ' + 'echo "TEXMFSYSCONFIG %(installdir)s/texmf-config" >> %(installdir)s/texlive.profile && ' + 'echo "TEXMFSYSVAR %(installdir)s/texmf-var" >> %(installdir)s/texlive.profile && ' + '%(builddir)s/install-tl-%(version)s/install-tl -profile %(installdir)s/texlive.profile' +] + +modextrapaths = { + 'PATH': 'bin/x86_64-linux', + 'INFOPATH': 'texmf-dist/doc/info', + 'MANPATH': 'texmf-dist/doc/man', +} +modextravars = { + 'TEXMFHOME': '%(installdir)s/texmf-dist' +} + +sanity_check_paths = { + 'files': ['bin/x86_64-linux/tex', 'bin/x86_64-linux/latex'], + 'dirs': ['bin/x86_64-linux', 'texmf-dist'], +} + +moduleclass = 'devel' diff --git a/Golden_Repo/u/uglifyjs/uglifyjs-3.11.4-GCCcore-9.3.0.eb b/Golden_Repo/u/uglifyjs/uglifyjs-3.11.4-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..9e483332372855c37f319c94bff57adfb45b0015 --- /dev/null +++ b/Golden_Repo/u/uglifyjs/uglifyjs-3.11.4-GCCcore-9.3.0.eb @@ -0,0 +1,31 @@ +easyblock = 'Binary' + +name = 'uglifyjs' +version = '3.11.4' + +homepage = 'https://github.com/mishoo/UglifyJS' +description = """UglifyJS is a JavaScript parser, minifier, compressor and beautifier toolkit.""" + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +site_contacts = 'j.goebbert@fz-juelich.de' + +source_urls = ['https://github.com/mishoo/UglifyJS/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['9220bf2c4b11ba225d49a8fecf161501802246f16c00d6b0b0a49ab06fc90b02'] + +builddependencies = [('binutils', '2.34')] + +dependencies = [ + ('nodejs', '12.19.0'), +] + +install_cmd = 'npm install --no-package-lock -g --prefix %(installdir)s uglify-js@%(version)s v%(version)s.tar.gz' + +sanity_check_paths = { + 'files': ['bin/%(namelower)s'], + 'dirs': ['lib/node_modules/uglify-js'], +} +sanity_check_commands = ['%(namelower)s --help'] + +moduleclass = 'vis' diff --git a/Golden_Repo/v/Valgrind/Valgrind-3.16.1-gpsmpi-2020.eb b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-gpsmpi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..6973007036ca84087e9dc0d154f5411efd6884ac --- /dev/null +++ b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-gpsmpi-2020.eb @@ -0,0 +1,30 @@ +easyblock = 'ConfigureMake' + +name = 'Valgrind' +version = '3.16.1' + +homepage = 'http://valgrind.org/downloads/' +description = "Valgrind: Debugging and profiling tools" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +source_urls = ['ftp://sourceware.org/pub/valgrind/'] +sources = [SOURCELOWER_TAR_BZ2] + +toolchain = {'name': 'gpsmpi', 'version': '2020'} + +preconfigopts = 'unset CC CFLAGS &&' +configopts = ' --with-mpicc="$MPICC"' + +local_binaries = [ + 'callgrind_annotate', 'callgrind_control', 'cg_annotate', 'cg_diff', + 'cg_merge', 'ms_print', 'valgrind', 'valgrind-listener', 'vgdb' +] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_binaries] + + ['lib/valgrind/libmpiwrap-amd64-linux.%s' % SHLIB_EXT], + 'dirs': [] +} + +moduleclass = 'debugger' diff --git a/Golden_Repo/v/Valgrind/Valgrind-3.16.1-iimpi-2020.eb b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-iimpi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..1c424241219c90dec3cc354cc959228ecf856824 --- /dev/null +++ b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-iimpi-2020.eb @@ -0,0 +1,30 @@ +easyblock = 'ConfigureMake' + +name = 'Valgrind' +version = '3.16.1' + +homepage = 'http://valgrind.org/downloads/' +description = "Valgrind: Debugging and profiling tools" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +source_urls = ['ftp://sourceware.org/pub/valgrind/'] +sources = [SOURCELOWER_TAR_BZ2] + +toolchain = {'name': 'iimpi', 'version': '2020'} + +preconfigopts = 'unset CC CFLAGS &&' +configopts = ' --with-mpicc="$MPICC"' + +local_binaries = [ + 'callgrind_annotate', 'callgrind_control', 'cg_annotate', 'cg_diff', + 'cg_merge', 'ms_print', 'valgrind', 'valgrind-listener', 'vgdb' +] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_binaries] + + ['lib/valgrind/libmpiwrap-amd64-linux.%s' % SHLIB_EXT], + 'dirs': [] +} + +moduleclass = 'debugger' diff --git a/Golden_Repo/v/Valgrind/Valgrind-3.16.1-ipsmpi-2020.eb b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-ipsmpi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..c63f419b854fa6003177d92ac345bd99325c7556 --- /dev/null +++ b/Golden_Repo/v/Valgrind/Valgrind-3.16.1-ipsmpi-2020.eb @@ -0,0 +1,30 @@ +easyblock = 'ConfigureMake' + +name = 'Valgrind' +version = '3.16.1' + +homepage = 'http://valgrind.org/downloads/' +description = "Valgrind: Debugging and profiling tools" + +site_contacts = 'a.kreuzer@fz-juelich.de' + +source_urls = ['ftp://sourceware.org/pub/valgrind/'] +sources = [SOURCELOWER_TAR_BZ2] + +toolchain = {'name': 'ipsmpi', 'version': '2020'} + +preconfigopts = 'unset CC CFLAGS &&' +configopts = ' --with-mpicc="$MPICC"' + +local_binaries = [ + 'callgrind_annotate', 'callgrind_control', 'cg_annotate', 'cg_diff', + 'cg_merge', 'ms_print', 'valgrind', 'valgrind-listener', 'vgdb' +] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_binaries] + + ['lib/valgrind/libmpiwrap-amd64-linux.%s' % SHLIB_EXT], + 'dirs': [] +} + +moduleclass = 'debugger' diff --git a/Golden_Repo/x/x264/x264-20200912-GCCcore-9.3.0.eb b/Golden_Repo/x/x264/x264-20200912-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..f290dc1c417e080f483e1b69715a276d77e0081d --- /dev/null +++ b/Golden_Repo/x/x264/x264-20200912-GCCcore-9.3.0.eb @@ -0,0 +1,36 @@ +easyblock = 'ConfigureMake' + +name = 'x264' +version = '20200912' + +homepage = 'http://www.videolan.org/developers/x264.html' +description = """x264 is a free software library and application for encoding video streams into the H.264/MPEG-4 + AVC compression format, and is released under the terms of the GNU GPL. +""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://code.videolan.org/videolan/x264/-/archive/d198931a63049db1f2c92d96c34904c69fde8117/'] +sources = ['x264-d198931a63049db1f2c92d96c34904c69fde8117.tar.gz'] +checksums = ['31dc10bf77dcf7359094c1837359ff151dbc4bcf2536d76729ef9ad88bf7c194'] + +builddependencies = [ + ('binutils', '2.34'), + ('pkg-config', '0.29.2'), +] + +dependencies = [ + ('NASM', '2.15.03'), +] + +configopts = " --enable-shared --enable-static " + +sanity_check_paths = { + 'files': ['bin/x264', 'include/x264_config.h', 'include/x264.h', 'lib/libx264.a', 'lib/libx264.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/x/x265/x265-3.4-GCCcore-9.3.0.eb b/Golden_Repo/x/x265/x265-3.4-GCCcore-9.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..30a8179083c3e1a57f8651322b2c5b44ca4a6f23 --- /dev/null +++ b/Golden_Repo/x/x265/x265-3.4-GCCcore-9.3.0.eb @@ -0,0 +1,39 @@ +easyblock = 'CMakeMake' + +name = 'x265' +version = '3.4' + +homepage = 'https://www.videolan.org/developers/x265.html' +description = """x265 is a free software library and application for encoding video streams + into the H.265/MPEG-H HEVC compression format, and is released under the terms of the GNU GPL. +""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/videolan/x265/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['544d147bf146f8994a7bf8521ed878c93067ea1c7c6e93ab602389be3117eaaf'] + +builddependencies = [ + ('CMake', '3.18.0'), + ('binutils', '2.34'), + ('pkg-config', '0.29.2'), +] + +dependencies = [ + ('NASM', '2.15.03'), +] + +separate_build_dir = True +srcdir = '../x265-%(version)s/source' + +configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON ' + +sanity_check_paths = { + 'files': ['bin/x265', 'include/x265_config.h', 'include/x265.h', 'lib/libx265.a', 'lib/libx265.%s' % SHLIB_EXT], + 'dirs': [], +} +moduleclass = 'vis' diff --git a/Golden_Repo/x/xpra/xpra-4.0.4-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/x/xpra/xpra-4.0.4-GCCcore-9.3.0-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..238649eab57acc453aace9ebdb246e8bc7aaae00 --- /dev/null +++ b/Golden_Repo/x/xpra/xpra-4.0.4-GCCcore-9.3.0-Python-3.8.5.eb @@ -0,0 +1,68 @@ +easyblock = 'PythonPackage' + +name = 'xpra' +version = '4.0.4' +versionsuffix = '-Python-%(pyver)s' + +homepage = "http://www.xpra.org" +description = """Xpra is an open-source multi-platform persistent remote display server and client +for forwarding applications and desktop screens. +""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['http://xpra.org/src/'] +sources = [ + 'xpra-%(version)s.tar.bz2', + 'xpra-html5-%(version)s.tar.bz2', +] +checksums = [ + 'a443282225d2498fe372ebc01bebf884fdecaf4d181a7053be420424a2b6dde7', + 'c294f80016a2cbf8878673cba7884ac2ffcaf5495141975f65eb4e93a08623db', +] + +builddependencies = [ + ('binutils', '2.34'), + ('pkg-config', '0.29.2'), +] + +dependencies = [ + ('Python', '3.8.5'), + ('X11', '20200222'), + ('SciPy-Stack', '2020', '-Python-%(pyver)s', ('gcccoremkl', '9.3.0-2020.2.254')), + ('PyCairo', '1.18.2', '-Python-%(pyver)s'), + ('PyGObject', '3.34.0', '-Python-%(pyver)s'), + ('GTK+', '3.24.17'), + ('rencode', '1.0.5', '-Python-%(pyver)s'), + ('lz4', '3.1.0', '-Python-%(pyver)s'), + ('yuicompressor', '2.4.8', '-Python-%(pyver)s'), + ('x264', '20200912'), + ('x265', '3.4'), + ('libvpx', '1.9.0'), + ('FFmpeg', '4.3.1'), + ('libwebp', '1.1.0'), + ('libpng', '1.6.37'), + ('libjpeg-turbo', '2.0.5'), + ('zlib', '1.2.11'), + ('LibTIFF', '4.1.0'), + ('freetype', '2.10.1'), + ('libyuv', '20201024'), + ('uglifyjs', '3.11.4'), +] + +prebuildopts = " export CFLAGS='-Wno-error=unused-function' && " +installopts = "--with-tests --without-service" + +modextrapaths = { + 'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages', 'lib64/python%(pyshortver)s/site-packages'], +} + +sanity_check_paths = { + 'files': ['bin/xpra'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..da015d63ed316562930d1cec1ebdc2e926c6f4c1 --- /dev/null +++ b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb @@ -0,0 +1,41 @@ +easyblock = 'PythonPackage' + +name = 'yuicompressor' +version = '2.4.8' +versionsuffix = '-Python-%(pyver)s' + +homepage = 'https://github.com/sprat/yuicompressor' +description = """YUI Compressor is a JavaScript and CSS minifier written in Java.""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} + +source_urls = ['https://github.com/sprat/yuicompressor/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['0054abb77cc151147597aeaa5b47b6843925d3293e2e44d5b36e68ee54a1154f'] + +builddependencies = [ + ('binutils', '2.34'), + ('pkg-config', '0.29.2'), +] + +dependencies = [ + ('Python', '3.8.5'), + ('Java', '1.8', '', True), +] + +use_pip = True +sanity_pip_check = True +download_dep_fail = True + +modextrapaths = { + 'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages', 'lib64/python%(pyshortver)s/site-packages'], +} + +sanity_check_paths = { + 'files': ['bin/%(name)s'], + 'dirs': ['lib/python%(pyshortver)s/site-packages/%(name)s'], +} + +moduleclass = 'vis'