PKGBUILD 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # Maintainer: Martin Diehl <aur@martin-diehl.net>
  2. # Contributor: Samuel Williams <samuel.williams@oriontransfer.co.nz>
  3. pkgname=scotch
  4. pkgver=7.0.4
  5. pkgrel=1
  6. pkgdesc="Software package and libraries for graph, mesh and hypergraph partitioning, static mapping, and sparse matrix block ordering. This is the all-inclusive version (MPI/serial/esmumps)."
  7. url="https://gitlab.inria.fr/scotch/scotch"
  8. license=("custom:CeCILL-C")
  9. depends=('zlib' 'openmpi' 'bzip2')
  10. makedepends=('gcc-fortran' "cmake" "flex" "bison")
  11. provides=('ptscotch' 'ptscotch-openmpi' 'scotch_esmumps' 'scotch_ptesmumps')
  12. conflicts=('ptscotch-openmpi' 'scotch_esmumps' 'scotch_esmumps5')
  13. arch=('i686' 'x86_64')
  14. source=("https://gitlab.inria.fr/scotch/scotch/-/archive/v${pkgver}/${pkgname}-v${pkgver}.tar.gz")
  15. sha256sums=('8ef4719d6a3356e9c4ca7fefd7e2ac40deb69779a5c116f44da75d13b3d2c2c3')
  16. options=(!emptydirs)
  17. prepare() {
  18. [[ ! -d build ]] && mkdir build
  19. cd "${srcdir}/${pkgname}-v${pkgver}/src/"
  20. mkfile=${PWD}/Makefile.inc
  21. cp Make.inc/Makefile.inc.${CARCH/_/-}_pc_linux2.shlib ${mkfile}
  22. # Fix C compiler (still needed?)
  23. sed -i "s/CCD\t.*=.*gcc/CCD = mpicc/" ${mkfile}
  24. # Also enable bzip2 compression
  25. sed -i "s/-DCOMMON_FILE_COMPRESS_GZ/-DCOMMON_FILE_COMPRESS_GZ -DCOMMON_FILE_COMPRESS_BZ2/" ${mkfile}
  26. sed -i "s/-lz/-lz -lbz2/" ${mkfile}
  27. # Apply patch to fix shared library ldflags (still needed?)
  28. sed -i 's/$(AR) $(ARFLAGS) $(@) $(?)/$(AR) $(ARFLAGS) $(@) $(?) $(LDFLAGS)/g' \
  29. libscotch/Makefile
  30. }
  31. build() {
  32. cd "${srcdir}/${pkgname}-v${pkgver}"
  33. CONFOPTS=(
  34. -DCMAKE_INSTALL_PREFIX=/usr
  35. -DCMAKE_BUILD_TYPE=None
  36. -DCMAKE_COLOR_MAKEFILE=OFF
  37. -DCMAKE_CXX_COMPILER=mpicxx
  38. -DCMAKE_C_COMPILER=mpicc
  39. -DCMAKE_Fortran_COMPILER=mpifort
  40. -DCMAKE_C_FLAGS="${CFLAGS//-O2/-O3}"
  41. -DCMAKE_CXX_FLAGS="${CXXFLAGS//-O2/-O3}"
  42. -DINSTALL_METIS_HEADERS=OFF
  43. # -DINCLUDE_INSTALL_DIR=
  44. -DBUILD_LIBSCOTCHMETIS=ON
  45. -DBUILD_LIBESMUMPS=ON
  46. -DBUILD_PTSCOTCH=ON
  47. -DMPI_THREAD_MULTIPLE=ON
  48. -DTHREADS=ON
  49. -DINTSIZE:STRING="32"
  50. -DBUILD_SHARED_LIBS:BOOL=ON
  51. -DSCOTCH_PTHREAD:BOOL=ON
  52. -DSCOTCH_PTHREAD_MPI:BOOL=ON
  53. -DCOMMON_PTHREAD_AFFINITY_LINUX:BOOL=ON
  54. )
  55. echo CONFOPTS: ${CONFOPTS[@]}
  56. cmake -B "${srcdir}"/build -S "${srcdir}/${pkgname}-v${pkgver}" "${CONFOPTS[@]}"
  57. cmake --build "${srcdir}"/build
  58. }
  59. check() {
  60. cd "${srcdir}/${pkgname}-v${pkgver}/src"
  61. if [ -z $(ldconfig -p | grep libcuda.so.1) ]; then
  62. export OMPI_MCA_opal_warn_on_missing_libcuda=0
  63. fi
  64. ctest --test-dir "${srcdir}"/build
  65. }
  66. package() {
  67. cd "${srcdir}/${pkgname}-v${pkgver}/src"
  68. DESTDIR="${pkgdir}" cmake --build "${srcdir}"/build --target install
  69. # Gpart is no longer installed... why?
  70. # # To avoid conflict with extra/gpart, maybe move the package to /opt/scotch ?
  71. # mv "${pkgdir}/usr/bin/gpart" "${pkgdir}/usr/bin/gpart-scotch"
  72. mkdir -p "${pkgdir}"/usr/share/doc/"${pkgname}"
  73. cp -R ../doc/* "${pkgdir}"/usr/share/doc/"${pkgname}"
  74. install -m 644 -D "${pkgdir}"/usr/share/doc/scotch/CeCILL-C_V1-en.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
  75. }