Merge pull request #1175 from davydden/pkg/arpack-3.4.0

Pkg/arpack 3.4.0
This commit is contained in:
Todd Gamblin 2016-07-06 14:45:21 -07:00 committed by GitHub
commit 6bb31a9a4c
3 changed files with 93 additions and 17 deletions

View File

@ -0,0 +1,24 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 607d221..50426c3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -389,3 +389,19 @@ target_link_libraries(bug_1323 arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES})
add_test(bug_1323 Tests/bug_1323)
add_dependencies(check dnsimp_test bug_1315_single bug_1315_double bug_1323)
+
+############################
+# install
+############################
+# 'make install' to the correct location
+install(TARGETS arpack
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin)
+
+if (MPI)
+ install(TARGETS parpack
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin)
+endif ()

View File

@ -27,7 +27,8 @@
class ArpackNg(Package):
"""
ARPACK-NG is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.
ARPACK-NG is a collection of Fortran77 subroutines designed to solve large
scale eigenvalue problems.
Important Features:
@ -38,43 +39,76 @@ class ArpackNg(Package):
Generalized Problems.
* Routines for Banded Matrices - Standard or Generalized Problems.
* Routines for The Singular Value Decomposition.
* Example driver routines that may be used as templates to implement numerous
Shift-Invert strategies for all problem types, data types and precision.
* Example driver routines that may be used as templates to implement
numerous Shift-Invert strategies for all problem types, data types and
precision.
This project is a joint project between Debian, Octave and Scilab in order to
provide a common and maintained version of arpack.
This project is a joint project between Debian, Octave and Scilab in order
to provide a common and maintained version of arpack.
Indeed, no single release has been published by Rice university for the last
few years and since many software (Octave, Scilab, R, Matlab...) forked it and
implemented their own modifications, arpack-ng aims to tackle this by providing
a common repository and maintained versions.
Indeed, no single release has been published by Rice university for the
last few years and since many software (Octave, Scilab, R, Matlab...)
forked it and implemented their own modifications, arpack-ng aims to tackle
this by providing a common repository and maintained versions.
arpack-ng is replacing arpack almost everywhere.
"""
homepage = 'https://github.com/opencollab/arpack-ng'
url = 'https://github.com/opencollab/arpack-ng/archive/3.3.0.tar.gz'
version('3.4.0', 'ae9ca13f2143a7ea280cb0e2fd4bfae4')
version('3.3.0', 'ed3648a23f0a868a43ef44c97a21bad5')
variant('shared', default=True, description='Enables the build of shared libraries')
variant('mpi', default=False, description='Activates MPI support')
# The function pdlamch10 does not set the return variable. This is fixed upstream
# The function pdlamch10 does not set the return variable.
# This is fixed upstream
# see https://github.com/opencollab/arpack-ng/issues/34
patch('pdlamch10.patch', when='@3.3:')
patch('pdlamch10.patch', when='@3.3.0')
patch('make_install.patch', when='@3.4.0')
patch('parpack_cmake.patch', when='@3.4.0')
depends_on('blas')
depends_on('lapack')
depends_on('automake')
depends_on('autoconf')
depends_on('libtool@2.4.2:')
depends_on('automake', when='@3.3.0')
depends_on('autoconf', when='@3.3.0')
depends_on('libtool@2.4.2:', when='@3.3.0')
depends_on('cmake@2.8.6:', when='@3.4.0:')
depends_on('mpi', when='+mpi')
@when('@3.4.0:')
def install(self, spec, prefix):
options = ['-DEXAMPLES=ON']
options.extend(std_cmake_args)
options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix)
# TODO:
# Arpack calls directly find_package(BLAS REQUIRED) and
# find_package(LAPACK REQUIRED). Make sure correct Blas/Lapack are
# picked up.
if '+mpi' in spec:
options.append('-DMPI=ON')
# TODO: -DINTERFACE64=ON
if '+shared' in spec:
options.append('-DBUILD_SHARED_LIBS=ON')
cmake('.', *options)
make()
# TODO: make test does not work
# make('test')
make('install')
@when('@3.3.0')
def install(self, spec, prefix):
# Apparently autotools are not bootstrapped
# TODO: switch to use the CMake build in the next version
# rather than bootstrapping.
which('libtoolize')()
bootstrap = Executable('./bootstrap')
@ -83,7 +117,7 @@ def install(self, spec, prefix):
if '+mpi' in spec:
options.extend([
'--enable-mpi',
'F77=mpif77' #FIXME: avoid hardcoding MPI wrapper names
'F77=%s' % spec['mpi'].mpif77
])
if '~shared' in spec:

View File

@ -0,0 +1,18 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 607d221..345b7fc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -113,11 +113,12 @@ set_target_properties(arpack PROPERTIES OUTPUT_NAME arpack${LIBSUFFIX})
if (MPI)
# add_library(parpack SHARED
- add_library(parpack
+ add_library(parpack
${parpacksrc_STAT_SRCS}
${parpackutil_STAT_SRCS})
target_link_libraries(parpack ${MPI_Fortran_LIBRARIES})
+ target_link_libraries(parpack arpack)
set_target_properties(parpack PROPERTIES OUTPUT_NAME parpack${LIBSUFFIX})
endif ()