Commit 27a14ed7 authored by Ed Reel's avatar Ed Reel Committed by Chris Thurber

Add scientific computing libraries (#3390)

Add the following:
  arpack_ng.rb
  hdf5.rb
  openmpi.rb
  superlu.rb

Rename liblapack.rb to lapack.rb and update

Update armadillo from 8.400.0 to 9.600.5

Add pre-built binaries
parent 8c6f353e
...@@ -3,35 +3,40 @@ require 'package' ...@@ -3,35 +3,40 @@ require 'package'
class Armadillo < Package class Armadillo < Package
description 'Armadillo is a high quality linear algebra library (matrix maths) for the C++ language, aiming towards a good balance between speed and ease of use' description 'Armadillo is a high quality linear algebra library (matrix maths) for the C++ language, aiming towards a good balance between speed and ease of use'
homepage 'http://arma.sourceforge.net/' homepage 'http://arma.sourceforge.net/'
version '8.400.0' version '9.600.5'
source_url 'https://downloads.sourceforge.net/project/arma/armadillo-8.400.0.tar.xz' source_url 'https://downloads.sourceforge.net/project/arma/armadillo-9.600.5.tar.xz'
source_sha256 '5cb6bc2f457a9d6a0758cfb15c418d48289909daccd79d0e428452029285dd9b' source_sha256 'dd9cd664282f2c3483af194ceedc2fba8559e0d20f8782c640fd6f3ac7cac2bf'
binary_url ({ binary_url ({
aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/armadillo-8.400.0-chromeos-armv7l.tar.xz', aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/armadillo-9.600.5-chromeos-armv7l.tar.xz',
armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/armadillo-8.400.0-chromeos-armv7l.tar.xz', armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/armadillo-9.600.5-chromeos-armv7l.tar.xz',
i686: 'https://dl.bintray.com/chromebrew/chromebrew/armadillo-8.400.0-chromeos-i686.tar.xz', i686: 'https://dl.bintray.com/chromebrew/chromebrew/armadillo-9.600.5-chromeos-i686.tar.xz',
x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/armadillo-8.400.0-chromeos-x86_64.tar.xz', x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/armadillo-9.600.5-chromeos-x86_64.tar.xz',
}) })
binary_sha256 ({ binary_sha256 ({
aarch64: '97a7f23c22e8dcd9b92806918bd2a5f7a72230f8b16033ca3dfc6ebebc8fc2f5', aarch64: 'cabc00c9184da1185c0fcbe834c1447e0e31a9ff34b9c2ede39f7419b95768cc',
armv7l: '97a7f23c22e8dcd9b92806918bd2a5f7a72230f8b16033ca3dfc6ebebc8fc2f5', armv7l: 'cabc00c9184da1185c0fcbe834c1447e0e31a9ff34b9c2ede39f7419b95768cc',
i686: 'bbefa4f2c66db16180c367d4e6bb568cbcf9abd5d26b19266f9d744e93ebda9c', i686: 'cead7ef29533291a9070b8b1cddf6d909c224463e0e984a4d5bf49a208f17590',
x86_64: 'd2dc68a222aa585676e5ea325970ded3015ad817027aca890199bc7f5c090799', x86_64: '313502ef0f2c9c701c4e5c59d456a6105c8aba4c63bc0a77a829649ffa2e9e78',
}) })
depends_on 'openblas' depends_on 'arpack_ng'
depends_on 'hdf5'
depends_on 'superlu'
def self.build def self.build
system "./configure", suffix = ''
suffix = '64' if ARCH == 'x86_64'
system 'cmake',
'-DCMAKE_BUILD_TYPE=Release',
"-DCMAKE_INSTALL_PREFIX=#{CREW_PREFIX}", "-DCMAKE_INSTALL_PREFIX=#{CREW_PREFIX}",
"-DCMAKE_INSTALL_LIBDIR=#{CREW_LIB_PREFIX}" "-DCMAKE_INSTALL_LIBDIR=#{ARCH_LIB}",
system "make" "-DARPACK_LIBRARY=#{CREW_LIB_PREFIX}/libarpack#{suffix}.so",
'.'
system 'make'
end end
def self.install def self.install
system "make", system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install'
"DESTDIR=#{CREW_DEST_DIR}",
"install"
end end
end end
require 'package'
class Arpack_ng < Package
description 'Collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.'
homepage 'https://github.com/opencollab/arpack-ng'
version '3.7.0'
source_url 'https://github.com/opencollab/arpack-ng/archive/3.7.0.tar.gz'
source_sha256 '972e3fc3cd0b9d6b5a737c9bf6fd07515c0d6549319d4ffb06970e64fa3cc2d6'
binary_url ({
aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/arpack_ng-3.7.0-chromeos-armv7l.tar.xz',
armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/arpack_ng-3.7.0-chromeos-armv7l.tar.xz',
i686: 'https://dl.bintray.com/chromebrew/chromebrew/arpack_ng-3.7.0-chromeos-i686.tar.xz',
x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/arpack_ng-3.7.0-chromeos-x86_64.tar.xz',
})
binary_sha256 ({
aarch64: '8ac867cd31ef8c507039105de1e6467807c30a75f1752ab43650d82348b558d0',
armv7l: '8ac867cd31ef8c507039105de1e6467807c30a75f1752ab43650d82348b558d0',
i686: '8c2096851e7868c456220480b315d8ba84b5c188d8bf193cf8ce8abea6b20eb4',
x86_64: '83b1d11cbc66d977dc2287f8273a39527bd33c302b81baaa84172c110b6aeed1',
})
depends_on 'lapack'
depends_on 'openblas'
depends_on 'openmpi'
depends_on 'ld_default' => :build
def self.patch
# Fix Unknown CMake command "check_symbol_exists".
# See https://techoverflow.net/2019/06/20/how-to-fix-unknown-cmake-command-check_symbol_exists/.
system "sed -i '1iinclude(CheckSymbolExists)' CMakeLists.txt"
end
def self.build
Dir.mkdir 'build'
Dir.chdir 'build' do
suffix = ''
interface = 'OFF'
if ARCH == 'x86_64'
suffix = '64'
interface = 'ON'
end
# Use the gold linker.
old_ld = `ld_default g`.chomp
system 'cmake',
'-DCMAKE_BUILD_TYPE=Release',
"-DCMAKE_INSTALL_PREFIX=#{CREW_PREFIX}",
"-DBLAS_LIBRARIES=#{CREW_LIB_PREFIX}/libopenblas.so",
"-DINTERFACE64=#{interface}",
"-DLIBSUFFIX=#{suffix}",
'-DBUILD_SHARED_LIBS=ON',
'-DEXAMPLES=ON',
'-DICB=ON',
'-DMPI=ON',
'..'
system 'make'
system 'ld_default', "#{old_ld}"
end
end
def self.install
Dir.chdir 'build' do
system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install'
end
end
end
require 'package'
class Hdf5 < Package
description 'HDF5 is a unique technology suite that makes possible the management of extremely large and complex data collections.'
homepage 'https://www.hdfgroup.org/'
version '1.10.5'
source_url 'https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.5/src/hdf5-1.10.5.tar.bz2'
source_sha256 '68d6ea8843d2a106ec6a7828564c1689c7a85714a35d8efafa2fee20ca366f44'
binary_url ({
aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/hdf5-1.10.5-chromeos-armv7l.tar.xz',
armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/hdf5-1.10.5-chromeos-armv7l.tar.xz',
i686: 'https://dl.bintray.com/chromebrew/chromebrew/hdf5-1.10.5-chromeos-i686.tar.xz',
x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/hdf5-1.10.5-chromeos-x86_64.tar.xz',
})
binary_sha256 ({
aarch64: 'e1f92f38039d13d530ef8dee9f0c2bf3ddb9be9be3a60adee6bb82dc87a62a3a',
armv7l: 'e1f92f38039d13d530ef8dee9f0c2bf3ddb9be9be3a60adee6bb82dc87a62a3a',
i686: 'd56fe7f4f5e7234fad92a98cd081a812d07f4906c190ba3d615c1a14ca188957',
x86_64: '258e724a97f0943a940f1b8663a591efeff11ffc507ca51ecd0ffe38b3997fdb',
})
def self.build
system './configure',
"--prefix=#{CREW_PREFIX}",
"--libdir=#{CREW_LIB_PREFIX}",
'--disable-maintainer-mode',
'--disable-static'
system 'make'
end
def self.install
system "make", "DESTDIR=#{CREW_DEST_DIR}", "install"
end
end
require 'package'
class Lapack < Package
description 'Lapack is a linear algebra package.'
homepage 'https://www.netlib.org/lapack/'
version '3.8.0-1'
source_url 'https://www.netlib.org/lapack/lapack-3.8.0.tar.gz'
source_sha256 'deb22cc4a6120bff72621155a9917f485f96ef8319ac074a7afbc68aab88bcf6'
binary_url ({
aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/lapack-3.8.0-1-chromeos-armv7l.tar.xz',
armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/lapack-3.8.0-1-chromeos-armv7l.tar.xz',
i686: 'https://dl.bintray.com/chromebrew/chromebrew/lapack-3.8.0-1-chromeos-i686.tar.xz',
x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/lapack-3.8.0-1-chromeos-x86_64.tar.xz',
})
binary_sha256 ({
aarch64: 'f93b9afdd088faa48b11735b7467a2056f13efc98d0edc158166364f1edd795d',
armv7l: 'f93b9afdd088faa48b11735b7467a2056f13efc98d0edc158166364f1edd795d',
i686: '3f3d266856c00034b1f3a1efad00a4a8d838ecbc3682cc7a3788fbb209ff0da7',
x86_64: '45aec7ef9a9c37e098be7fd80b88c580bef29181b398e6e4c8d15cee9ddf7456',
})
depends_on 'python27'
def self.build
Dir.mkdir 'build'
Dir.chdir 'build' do
system 'cmake',
'-DCMAKE_BUILD_TYPE=Release',
"-DCMAKE_INSTALL_PREFIX=#{CREW_PREFIX}",
"-DCMAKE_INSTALL_LIBDIR=#{CREW_LIB_PREFIX}",
'-DBUILD_SHARED_LIBS=ON',
'..'
system 'make'
end
end
def self.install
Dir.chdir 'build' do
system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install'
end
end
end
require 'package'
class Liblapack < Package # The first character of the class name must be upper case
description 'Lapack is a linear algebra package.'
homepage 'http://www.netlib.org/lapack/#_lapack_version_3_8_0'
version '3.8.0'
source_url 'http://www.netlib.org/lapack/lapack-3.8.0.tar.gz'
source_sha256 'deb22cc4a6120bff72621155a9917f485f96ef8319ac074a7afbc68aab88bcf6' # Use the command "sha256sum"
binary_url ({
aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/liblapack-3.8.0-chromeos-armv7l.tar.xz',
armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/liblapack-3.8.0-chromeos-armv7l.tar.xz',
i686: 'https://dl.bintray.com/chromebrew/chromebrew/liblapack-3.8.0-chromeos-i686.tar.xz',
x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/liblapack-3.8.0-chromeos-x86_64.tar.xz',
})
binary_sha256 ({
aarch64: 'b0a873d5eae0a920c67c7fd7101b1c4d8f2486f46a553632b5bc1e3792618c6d',
armv7l: 'b0a873d5eae0a920c67c7fd7101b1c4d8f2486f46a553632b5bc1e3792618c6d',
i686: 'df07a794c858335da05f4ca3ad547d8aa86e4a5472035c32e83524288315ef6c',
x86_64: '049da8a6932acae411f33f603ce0a4a2b1544cfda49627033068947f323cf36e',
})
depends_on 'cmake' => :build
def self.build
Dir.mkdir 'build'
Dir.chdir 'build' do
system "cmake .. -DCMAKE_INSTALL_PREFIX=#{CREW_PREFIX} -DCMAKE_INSTALL_LIBDIR=#{CREW_DEST_LIB_PREFIX}"
system "make"
end
end
def self.install
Dir.chdir 'build' do
system "make", "DESTDIR=#{CREW_DEST_DIR}", "install"
end
end
end
require 'package'
class Openmpi < Package
description 'The Open MPI Project is an open source Message Passing Interface implementation that is developed and maintained by a consortium of academic, research, and industry partners.'
homepage 'https://www.open-mpi.org/'
version '4.0.1'
source_url 'https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.1.tar.bz2'
source_sha256 'cce7b6d20522849301727f81282201d609553103ac0b09162cf28d102efb9709'
binary_url ({
aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/openmpi-4.0.1-chromeos-armv7l.tar.xz',
armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/openmpi-4.0.1-chromeos-armv7l.tar.xz',
i686: 'https://dl.bintray.com/chromebrew/chromebrew/openmpi-4.0.1-chromeos-i686.tar.xz',
x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/openmpi-4.0.1-chromeos-x86_64.tar.xz',
})
binary_sha256 ({
aarch64: '6ebfd586e6e8efcbdda5ec1c69356bf29adc2c15844405fc9fd6b595330cebff',
armv7l: '6ebfd586e6e8efcbdda5ec1c69356bf29adc2c15844405fc9fd6b595330cebff',
i686: '7b95e3be4d88619c4abdbe3df69534b023955699ec7633f310cb77bf320514d0',
x86_64: '3985ef364b793db8053ae6a3640549a635bdda668134100e3017b17634e82eed',
})
def self.build
system './configure',
"--prefix=#{CREW_PREFIX}",
"--libdir=#{CREW_LIB_PREFIX}",
'--disable-maintainer-mode'
system 'make'
end
def self.install
system "make", "DESTDIR=#{CREW_DEST_DIR}", "install"
end
end
require 'package'
class Superlu < Package
description 'SuperLU is a general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations.'
homepage 'https://portal.nersc.gov/project/sparse/superlu/'
version '5.2.1'
source_url 'https://github.com/xiaoyeli/superlu/archive/v5.2.1.tar.gz'
source_sha256 '77582501dedef295eb74e4dc9433e2816d2d8be211eae307379c13d93c65bc71'
binary_url ({
aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/superlu-5.2.1-chromeos-armv7l.tar.xz',
armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/superlu-5.2.1-chromeos-armv7l.tar.xz',
i686: 'https://dl.bintray.com/chromebrew/chromebrew/superlu-5.2.1-chromeos-i686.tar.xz',
x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/superlu-5.2.1-chromeos-x86_64.tar.xz',
})
binary_sha256 ({
aarch64: 'ba7c045b4aefe809e33de9fe35476cca3ed62af1e38ec162c5e199d36d8181e1',
armv7l: 'ba7c045b4aefe809e33de9fe35476cca3ed62af1e38ec162c5e199d36d8181e1',
i686: '5f72a5326b985427af744b7de4d379141bb71acf3a0611726ff14fc8832019b5',
x86_64: '349e683c9d47ecd626543ed10fd2a76561eeb122ecfff7e45d67798db53c5d2c',
})
def self.build
Dir.mkdir 'build'
Dir.chdir 'build' do
system 'cmake',
"-DCMAKE_INSTALL_PREFIX=#{CREW_PREFIX}",
"-DCMAKE_INSTALL_LIBDIR=#{ARCH_LIB}",
'-DCMAKE_BUILD_TYPE=Release',
'-DBUILD_SHARED_LIBS=ON',
'..'
system 'make'
end
end
def self.check
Dir.chdir 'build' do
system 'make', 'test'
end
end
def self.install
Dir.chdir 'build' do
system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install'
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment