Skip to content

Instantly share code, notes, and snippets.

@lethalbit
Last active January 20, 2024 09:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lethalbit/1ceb9c120b8bb684678587c8dc795493 to your computer and use it in GitHub Desktop.
Save lethalbit/1ceb9c120b8bb684678587c8dc795493 to your computer and use it in GitHub Desktop.
Parallel Xyce™ w/ static Trilinos
pkgname=('xyce')
trilinos_ver=15.0.0
xyce_ver=7.8.0
pkgver="${xyce_ver}"
pkgrel=1
pkgdesc='The Xyce™ Parallel Electronic Simulator'
arch=('x86_64')
license=('GPL3')
depends=('python' 'lapack' 'boost' 'netcdf' 'libmatio' 'libx11' 'hdf5-openmpi' 'openmpi')
makedepends=('gcc-fortran' 'perl' 'blas' 'cmake' 'bc' 'python-numpy' 'suitesparse' 'flex' 'bison')
provides=('xyce')
source=(
"Trilinos-${trilinos_ver}.tar.gz::https://github.com/trilinos/Trilinos/archive/refs/tags/trilinos-release-${trilinos_ver//./-}.tar.gz"
"Xyce-${xyce_ver}.tar.gz::https://github.com/Xyce/Xyce/archive/refs/tags/Release-${xyce_ver}.tar.gz"
)
sha512sums=(
'a364e67686cdd4e1e34aa0e14b6cc051ed21a72b63719c47260d7839d47590b9e652be76cb9d61e513c7933b965fc8141c3ff898167e22353b33c9491a525c84'
'3d5e315950f4e7687561fbe9395d578fb3cfc8dffaf3e4902d851f080c83b70cfccc86606fa0d2e7a093163330de36c70556e878eb42a93dd4e0984bb6693d80'
)
_PREFIX="/usr"
prepare() {
cd "${srcdir}/Trilinos-trilinos-release-${trilinos_ver//./-}"
sed -i 's/SET(TEST_REQUIRED_DEP_PACKAGES Gtest STKUnit_test_utils)/SET(TEST_REQUIRED_DEP_PACKAGES Gtest)/' packages/krino/cmake/Dependencies.cmake
sed -i '/add_subdirectory(unit_tests)/g' packages/krino/krino/CMakeLists.txt
}
build() {
_TRILINOS_SRC_DIR="${srcdir}/Trilinos-trilinos-release-${trilinos_ver//./-}"
_TRILINOS_BIN_DIR="${srcdir}/trilinos-static"
_XYCE_SRC_DIR="${srcdir}/Xyce-Release-${xyce_ver}"
cd "${_TRILINOS_SRC_DIR}"
cmake -G Ninja \
-B build \
-D CMAKE_INSTALL_PREFIX:PATH=${_PREFIX} \
-D CMAKE_C_COMPILER=mpicc \
-D CMAKE_CXX_COMPILER=mpicxx \
-D CMAKE_Fortran_COMPILER=mpifort \
-D Amesos_ENABLE_KLU:BOOL=ON \
-D Amesos2_ENABLE_Basker:BOOL=ON \
-D Amesos2_ENABLE_KLU2:BOOL=ON \
-D BUILD_SHARED_LIBS:BOOL=ON \
-D EpetraExt_BUILD_BTF:BOOL=ON \
-D EpetraExt_BUILD_EXPERIMENTAL:BOOL=ON \
-D EpetraExt_BUILD_GRAPH_REORDERINGS:BOOL=ON \
-D NOX_ENABLE_LOCA:BOOL=ON \
-D TPL_ENABLE_AMD:BOOL=ON \
-D TPL_ENABLE_BLAS:BOOL=ON \
-D TPL_ENABLE_gtest:BOOL=OFF \
-D TPL_ENABLE_HDF5:BOOL=ON \
-D TPL_ENABLE_LAPACK:BOOL=ON \
-D TPL_ENABLE_LAPACK:BOOL=ON \
-D TPL_ENABLE_MPI:BOOL=ON \
-D TPL_ENABLE_UMFPACK:BOOL=ON \
-D Trilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=ON \
-D Trilinos_ENABLE_Amesos:BOOL=ON \
-D Trilinos_ENABLE_Amesos2:BOOL=ON \
-D Trilinos_ENABLE_AztecOO:BOOL=ON \
-D Trilinos_ENABLE_Belos:BOOL=ON \
-D Trilinos_ENABLE_COMPLEX_DOUBLE:BOOL=ON \
-D Trilinos_ENABLE_EpetraExt:BOOL=ON \
-D Trilinos_ENABLE_Gtest:BOOL=OFF \
-D Trilinos_ENABLE_Ifpack:BOOL=ON \
-D Trilinos_ENABLE_Isorropia:BOOL=ON \
-D Trilinos_ENABLE_NOX:BOOL=ON \
-D Trilinos_ENABLE_PyTrilinos:BOOL=OFF \
-D Trilinos_ENABLE_ROL:BOOL=ON \
-D Trilinos_ENABLE_Sacado:BOOL=ON \
-D Trilinos_ENABLE_Stokhos:BOOL=ON \
-D Trilinos_ENABLE_TESTS:BOOL=OFF \
-D Trilinos_ENABLE_Teuchos:BOOL=ON \
-D Trilinos_ENABLE_TrilinosATDMConfigTests:BOOL=OFF \
-D Trilinos_ENABLE_TrilinosCouplings:BOOL=ON \
-D Trilinos_ENABLE_TrilinosFrameworkTests:BOOL=OFF \
-D Trilinos_ENABLE_Zoltan:BOOL=ON \
-D UMFPACK_INCLUDE_DIRS=/usr/include/suitesparse \
-D AMD_INCLUDE_DIRS=/usr/include/suitesparse \
-D BUILD_SHARED_LIBS:BOOL=OFF \
-D CMAKE_Fortran_FLAGS="$FCFLAGS -fallow-argument-mismatch" \
-D CMAKE_POSITION_INDEPENDENT_CODE=TRUE
ninja -C build
DESTDIR="${_TRILINOS_BIN_DIR}" ninja -C build install
cd "${_XYCE_SRC_DIR}"
cmake -G Ninja \
-B build \
-D CMAKE_INSTALL_PREFIX:PATH=${_PREFIX} \
-D CMAKE_C_COMPILER=mpicc \
-D CMAKE_CXX_COMPILER=mpicxx \
-D CMAKE_Fortran_COMPILER=mpifort \
-D Xyce_AMD:BOOL=ON \
-D Xyce_AMESOS2:BOOL=ON \
-D Xyce_AMESOS2_BASKER:BOOL=ON \
-D Xyce_AMESOS2_KLU2:BOOL=ON \
-D Xyce_NEURON_MODELS:BOOL=ON \
-D Xyce_PARALLEL_MPI:BOOL=ON \
-D Xyce_PLUGIN_SUPPORT:BOOL=ON \
-D Xyce_REACTION_PARSER:BOOL=ON \
-D Xyce_ROL:BOOL=ON \
-D Xyce_SHYLU:BOOL=ON \
-D Xyce_STOKHOS_ENABLE:BOOL=ON \
-D Xyce_TEST_BINARIES:BOOL=OFF \
-D Xyce_FFT:BOOL=ON \
-D Xyce_FFTW:BOOL=ON \
-D Trilinos_DIR="${_TRILINOS_BIN_DIR}/usr/lib/cmake/Trilinos"
ninja -C build
}
package() {
_PKG_DIR="${pkgdir}/${_PREFIX}"
cd "${srcdir}/Xyce-Release-${xyce_ver}"
DESTDIR="${pkgdir}" ninja -C build install
# Clean up some things
rm -rf "${_PKG_DIR}/doc"
rm -rf "${_PKG_DIR}/include"
rm -rf "${_PKG_DIR}/lib"
rm -rf "${_PKG_DIR}/share"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment