# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 PortSystem 1.0 PortGroup compiler_blacklist_versions 1.0 PortGroup cmake 1.0 PortGroup mpi 1.0 PortGroup github 1.0 cmake.out_of_source yes name apbs categories science license BSD maintainers nomaintainer description Adaptive Poisson-Boltzmann Solver long_description APBS is a software package for the numerical \ solution of the Poisson-Boltzmann equation, \ a popular continuum model for describing \ electrostatic interactions between molecular \ solutes over a wide range of length scales. github.setup Electrostatics apbs-pdb2pqr d4e78c62e6a07f92c26924318d83a159fa6af063 version 1.4.1 homepage http://www.poissonboltzmann.org worksrcdir ${worksrcdir}/apbs revision 6 # stealth update; remove for next version dist_subdir ${name}/${version}_1 checksums rmd160 09ffa6a90c190eb4e584934519c8cbd6229fc7b8 \ sha256 3c3e6914a1a69c27d54d9d9ea7ffd1072e3bc82209971289f0a8a7964fcdf82b \ size 37120958 depends_lib port:maloc \ port:readline # dependencies are not managed correctly within this code, so errors such as from -lapbs_geoflow might occur # how to solve: first 'make apbs_geoflow', then 'make all' use_parallel_build no configure.optflags -O3 -ffast-math configure.args-append -DENABLE_OPENMP:BOOL=OFF \ -DENABLE_BEM=OFF \ -DCMAKE_C_COMPILER_ARG1:STRING="-I${worksrcpath}/include ${configure.cflags}" \ -DCMAKE_CXX_COMPILER_ARG1:STRING="-I${worksrcpath}/include ${configure.cxxflags} -stdlib=libc++" # otherwise obsolete subport installation will fail on patch phase and not get to pre-configure error about replacement if {${subport} eq ${name}} { patchfiles patch-CMakeLists.txt.diff patch-Eigen-include-path.diff patch-contrib-tabipb-CMakeLists.txt.diff patch-pbsolvercz.cpp.diff if {[mpi_variant_isset]} { patchfiles-append patch-tests-apbs_tester.py.diff } } test.run yes test { ln ${worksrcpath}/tools/manip/inputgen.py ${worksrcpath}/tests/ ln ${worksrcpath}/tools/manip/psize.py ${worksrcpath}/tests/ if {[mpi_variant_isset]} { reinplace "s|mpiexec|\"${mpi.exec}\", \"-n\", \"${build.jobs}\"|" ${worksrcpath}/tests/apbs_tester.py } system -W ${worksrcpath}/tests "python apbs_tester.py" system -W ${worksrcpath}/tests "cat test.log" system -W ${worksrcpath}/tests "if grep FAILED test.log; then echo \"FAIL\"; exit 1; fi" } # Some cmake tests will fail with "error: unrecognized option '-arch'" from gcc 4.6 and earlier. Same with dragonegg based on it. # llvm-gcc-4.2 will fail to build with: error: unrecognized command line option "-std=c++0x" # It comes with clang for OSX 10.6 so we need to blacklist clang to prevent it being used. compiler.blacklist macports-gcc-4.4 macports-gcc-4.5 macports-gcc-4.6 \ macports-dragonegg-3.4 gcc-4.2 llvm-gcc-4.2 apple-gcc-4.2 macports-llvm-gcc-4.2 {clang < 425} \ macports-clang-3.4 # g++ will just fail to link apbs_geoflow. probably about -lstdc++ stuff. So, just use Fortran. compilers.choose fc mpi.setup configure.args-append -DENABLE_MPI:BOOL=OFF post-destroot { set tools ${destroot}${prefix}/share/${subport}/tools move ${tools}/manip/psize.py ${destroot}${prefix}/bin/apbs-psize.py file attributes ${destroot}${prefix}/bin/apbs-psize.py \ -permissions 0755 foreach {bin} [glob -tails -dir ${tools}/bin *] { move ${tools}/bin/${bin} ${destroot}${prefix}/bin/apbs-${bin} file attributes ${destroot}${prefix}/bin/apbs-${bin} \ -permissions 0755 } } pre-configure { if {[mpi_variant_isset]} { configure.args-delete -DENABLE_MPI:BOOL=OFF configure.args-append -DENABLE_MPI:BOOL=ON \ -DMPI_C_COMPILER=${mpi.cc} \ -DMPI_CXX_COMPILER=${mpi.cxx} } } variant bem description {Build with support for Boundary Element Method} { configure.args-delete -DENABLE_BEM=OFF configure.args-append -DENABLE_BEM=ON if {![fortran_variant_isset]} { ui_error "+bem requires a Fortran variant, e.g. +gccX or +g95." return -code error "+bem requires a Fortran variant." } # BEM looks for 'gfortran', hard-coded, and configure fails without it if BEM is enabled, with a syntax error #CMake Error at CMakeLists.txt:217 (get_filename_component): # get_filename_component called with incorrect number of arguments post-patch { # -lstdc++ does not seem necessary and may cause trouble; specifying full paths avoid possible use of -ltabip from an earlier installation in ${prefix} reinplace "s|-L\${LIBGFORTRAN_PATH} -lgfortran -ltabipb -lstdc\+\+|${compilers.libfortran} ${worksrcpath}/lib/libtabipb.a|" ${worksrcpath}/CMakeLists.txt # provide this information to subsidiary cmake command run in tabipb directory during build phase reinplace "s|CMAKE_ARGS|CMAKE_ARGS -DCMAKE_Fortran_COMPILER:STRING=${configure.fc}|" ${worksrcpath}/CMakeLists.txt reinplace "s|FCFLAGS|${configure.fcflags}|g" ${worksrcpath}/contrib/tabipb/CMakeLists.txt } } # check for real releases, not github commits livecheck.type regex livecheck.version ${version} livecheck.url https://apbs-pdb2pqr.readthedocs.io/en/latest/downloads.html livecheck.regex APBS (\[0-9.\]+)