[152561] trunk/dports/science/berkeleygw

dstrubbe at macports.org dstrubbe at macports.org
Mon Sep 12 10:31:18 PDT 2016


Revision: 152561
          https://trac.macports.org/changeset/152561
Author:   dstrubbe at macports.org
Date:     2016-09-12 10:31:18 -0700 (Mon, 12 Sep 2016)
Log Message:
-----------
berkeleygw: Update to version 1.2.0. FFTW-3 is now used by default; +fftw2 uses FFTW-2. Take advantage of fixes that enable broader cpp usage. Better scalapack compatibility checking. A couple of patches to build system. Use gsed in testsuite. Enable OpenMP threads.

Modified Paths:
--------------
    trunk/dports/science/berkeleygw/Portfile

Added Paths:
-----------
    trunk/dports/science/berkeleygw/files/
    trunk/dports/science/berkeleygw/files/patch-Common-common-rules.mk.diff
    trunk/dports/science/berkeleygw/files/patch-Makefile.diff

Modified: trunk/dports/science/berkeleygw/Portfile
===================================================================
--- trunk/dports/science/berkeleygw/Portfile	2016-09-12 17:22:38 UTC (rev 152560)
+++ trunk/dports/science/berkeleygw/Portfile	2016-09-12 17:31:18 UTC (rev 152561)
@@ -6,8 +6,7 @@
 PortGroup           linear_algebra 1.0
 
 name                berkeleygw
-version             1.1-beta2
-revision            1
+version             1.2.0
 categories          science
 platforms           darwin
 license             BSD
@@ -21,15 +20,17 @@
 homepage            http://www.berkeleygw.org
 master_sites        ${homepage}/releases
 
-checksums           rmd160  7e1ce392da45282ef878ed1a53b34184d96c7ca2 \
-                    sha256  83deea17ccbd50e9e505f69fadf858595793f9b853ec012722659100d5cf8885
+checksums           rmd160  26933a24c10ba03457c667bc5f2d3ca21df2a436 \
+                    sha256  1305dc8587af666fe437bc2561a9106b2b0bcdbe91980b8f1ae7bbd491ce1e25
 
 distfiles           BGW-${version}.tar.gz
 # needed for case-sensitive filesystems
 worksrcdir          BerkeleyGW-${version}
 
-depends_lib         port:fftw
-# fftw port always has a Fortran variant
+depends_lib         port:fftw-3
+if {![variant_isset fftw2]} {
+    compilers.enforce_some_fortran  fftw-3
+}
 
 # May fail with +mpich +gcc5. Use +mpich +gfortran instead.
 # In file included from /opt/local/include/mpich-gcc5/mpi.h:2231:0,
@@ -38,34 +39,36 @@
 #  #  error 'Please use the same version of GCC and g++ for compiling MPICH and user MPI programs'
 #     ^
 
-# WHAT DO WE DO WHEN meaning of 'gfortran' is updated? No record... Must rename to gfortran5 etc.
+# WHAT DO WE DO WHEN meaning of 'gfortran' is updated? No record... Maybe rename to gfortran5 etc. ?
 
 # test hangs in Epsilon with OpenMPI, for unknown reason.
-# no appropriate way to set cpp for gcc5, gcc6, or clang
 # dragonegg fails to link with error
 #   Undefined symbols for architecture x86_64:
 #   "_llvm.objectsize.i64", referenced from:
 #   _spg_get_international in libsymspg.a(spglib.o)
 #   _spg_get_schoenflies in libsymspg.a(spglib.o)
 compilers.choose    fc cc cxx cpp
-mpi.setup           require_fortran -dragonegg -openmpi -openmpi_devel
+mpi.setup           require_fortran -dragonegg -openmpi -openmpi_devel -gfortran -clang -llvm
+# FIXME: +gfortran just needs smarter setting of cpp to the one from gcc;
+#clang and llvm only useful with +g95 currently (which is useless)
 
 # just for cpp
-if {[variant_isset g95] || [variant_isset gcc5] || [variant_isset gcc6] || [variant_isset gfortran]} {
+if {[variant_isset g95]} {
     depends_build-append  port:llvm-gcc42
 }
 
 # FIXME: this unnecessarily enforces scalapack also had same C compiler as we are using.
 if {[mpi_variant_isset]} {
     depends_lib-append  port:scalapack
-    mpi.enforce_variant     scalapack
+    if {![mpi_variant_isset]} {
+        ui_error "+scalapack requires an MPI variant. Choose +mpich, +mpich_devel, +openmpi, or +openmpi_devel."
+        return -code error "+scalapack requires an MPI variant."
+    }
 }
 
 # fftw is not universal
 universal_variant   no
 
-# FIXME: add options for threads
-
 configure {
     system -W ${worksrcpath} "sed 's|/opt/local|${prefix}|' < config/generic.serial.macos.mk > arch.mk"
     reinplace -W ${worksrcpath} "s|MATHFLAG += -DHDF5||" arch.mk
@@ -74,6 +77,9 @@
     }
 }
 
+patchfiles          patch-Common-common-rules.mk.diff \
+                    patch-Makefile.diff
+
 build.target	    all-flavors
 use_parallel_build  yes
 
@@ -81,16 +87,19 @@
 
 test.run            yes
 
-# known problems to be fixed: Graphene incorrectly has kernel_k_interpolation.
-# Si2-SAPO/sapo.inp has pointer being freed was not allocated
 
+#depends_build       port:gsed
 pre-test {
+    reinplace -W ${worksrcpath}/testsuite "s|sed|gsed|" Graphene/Graphene.test Graphene/Graphene_3D.test \
+        Si-EPM/Si.test Si-EPM/Si_cplx_spin.test
+
     if {[mpi_variant_isset]} {
-        test.args-append    TESTSCRIPT="MPIEXEC=${prefix}/bin/${mpi.exec} make check-parallel" PARAFLAG=-DMPI
+        test.args-append    TESTSCRIPT="MPIEXEC=${prefix}/bin/${mpi.exec} make check-parallel"
         test.target         check-jobscript
 
+        # FIXME: what about with threads? set OMP_NUM_THREADS=2 and divide ncpus by 2.
         if {![catch {sysctl hw.ncpu} ncpus]} {
-            test.env-append OCT_TEST_NJOBS=$ncpus
+            test.env-append BGW_TEST_MPI_NPROCS=$ncpus
         }
         ui_msg "Running testsuite in parallel with $ncpus MPI tasks"       
     } else {
@@ -111,19 +120,23 @@
         set mathflag "${mathflag} -DHDF5"
     }
     
-    if {[variant_isset fftw3]} {
-        build.args-append  FFTWLIB="-L${prefix}/lib/ -lfftw3"
+    if {[variant_isset fftw2]} {
+        build.args-append  FFTWLIB="-L${prefix}/lib/ -ldfftw"
+    } else {
+        if {[variant_isset threads]} {
+            build.args-append  FFTWLIB="-L${prefix}/lib/ -lfftw3 -lfftw3_threads"
+        } else {
+            build.args-append  FFTWLIB="-L${prefix}/lib/ -lfftw3"
+        }
         set mathflag "${mathflag} -DUSEFFTW3"
-    } else {
-        build.args-append  FFTWLIB="-L${prefix}/lib/ -ldfftw"
     }
 
-    if {[variant_isset g95] || [variant_isset gcc5] || [variant_isset gcc6] || [variant_isset gfortran]} {
+    if {[variant_isset g95]} {
         set configure.cpp     llvm-cpp-4.2
     }
 
     if {[variant_isset g95]} {
-        build.args-append COMPFLAG="-DG95" FCPP="${configure.cpp} -P -ansi" \
+        build.args-append COMPFLAG="-DG95" FCPP="${configure.cpp} -P -C" \
                           F90free="${prefix}/bin/g95 -ffree-form -ffree-line-length-huge -fno-second-underscore" \
                           MOD_OPT="-fmod="
         # test, destroot args needed just to avoid trying to build in the test/openmp directory unnecessarily
@@ -131,19 +144,30 @@
         destroot.args-append  COMPFLAG="-DG95"
     } else {
         # gcc is default in arch.mk so most things do not need to be modified
-        build.args-append FCPP="${configure.cpp} -ansi" \
+        build.args-append FCPP="${configure.cpp} -C" \
             F90free="${configure.fc} -ffree-form -ffree-line-length-none -fno-second-underscore"
     }
 
+    if {[variant_isset threads]} {
+        set paraflag "-DOMP"
+    } else {
+        set paraflag ""
+    }
+    
     if {[mpi_variant_isset]} {
         set mathflag "${mathflag} -DUSESCALAPACK"
-        build.args-append PARAFLAG="-DMPI" C_PARAFLAG="-DPARA" SCALAPACKLIB="-L${prefix}/lib/ -lscalapack"
+        set paraflag "${paraflag} -DMPI"
+        build.args-append C_PARAFLAG="-DPARA" SCALAPACKLIB="-L${prefix}/lib/ -lscalapack"
     }
 
-    build.args-append   MATHFLAG="${mathflag}"
-    test.args-append    MATHFLAG="${mathflag}"
+    build.args-append   MATHFLAG="${mathflag}" PARAFLAG="${paraflag}"
+    test.args-append    MATHFLAG="${mathflag}" PARAFLAG="${paraflag}"
 }
 
+variant threads description {Build with OpenMP support} conflicts g95 {
+    set configure.fc "${configure.fc} -fopenmp"
+}
+
 variant debug description {Add debug flags for more checking and output, but slower runs.} {
     build.args-append    DEBUGFLAG="-DDEBUG -DVERBOSE"
 }
@@ -154,9 +178,9 @@
     compilers.enforce_fortran   hdf5
 }
 
-variant fftw3 description {Build with FFTW-3 rather than FFTW-2 for better performance} {
-    depends_lib-replace         port:fftw port:fftw-3
-    compilers.enforce_some_fortran  fftw-3
+variant fftw2 description {Build with FFTW-2} {
+    depends_lib-replace        port:fftw-3 port:fftw
+    # fftw port always has a Fortran variant
 }
 
 livecheck.type      none

Added: trunk/dports/science/berkeleygw/files/patch-Common-common-rules.mk.diff
===================================================================
--- trunk/dports/science/berkeleygw/files/patch-Common-common-rules.mk.diff	                        (rev 0)
+++ trunk/dports/science/berkeleygw/files/patch-Common-common-rules.mk.diff	2016-09-12 17:31:18 UTC (rev 152561)
@@ -0,0 +1,9 @@
+--- Common/common-rules.mk.orig	2016-09-09 10:35:06.000000000 -0700
++++ Common/common-rules.mk	2016-09-09 10:35:16.000000000 -0700
+@@ -333,4 +333,5 @@
+ clean-keepmod clean-keepmod-common \
+ clean-keepmod-utilities clean-cpp clean-wfnutils \
+ qhull clean-qhull cleanall-qhull clean-keepmod-qhull \
+-abi2bgw clean-abi2bgw cleanall-abi2bgw clean-keepmod-abi2bgw
++abi2bgw clean-abi2bgw cleanall-abi2bgw clean-keepmod-abi2bgw \
++sapo epm icm utilities

Added: trunk/dports/science/berkeleygw/files/patch-Makefile.diff
===================================================================
--- trunk/dports/science/berkeleygw/files/patch-Makefile.diff	                        (rev 0)
+++ trunk/dports/science/berkeleygw/files/patch-Makefile.diff	2016-09-12 17:31:18 UTC (rev 152561)
@@ -0,0 +1,11 @@
+--- Makefile.orig	2016-09-09 18:09:20.000000000 -0400
++++ Makefile	2016-09-09 18:09:31.000000000 -0400
+@@ -106,7 +106,7 @@
+ manual: printsvninfo
+ 	bin/assemble_manual.sh > manual.html
+ 
+-install: all-flavors
++install: all
+ ifdef INSTDIR
+ 	mkdir -p $(INSTDIR)/bin
+ 	install bin/*.x $(INSTDIR)/bin/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20160912/980fdca7/attachment.html>


More information about the macports-changes mailing list