[108659] trunk/dports/science/octopus/Portfile
macsforever2000 at macports.org
macsforever2000 at macports.org
Mon Jul 29 16:03:25 PDT 2013
Revision: 108659
https://trac.macports.org/changeset/108659
Author: macsforever2000 at macports.org
Date: 2013-07-29 16:03:24 -0700 (Mon, 29 Jul 2013)
Log Message:
-----------
octopus: Add MPI support. (#39835)
Modified Paths:
--------------
trunk/dports/science/octopus/Portfile
Modified: trunk/dports/science/octopus/Portfile
===================================================================
--- trunk/dports/science/octopus/Portfile 2013-07-29 22:36:46 UTC (rev 108658)
+++ trunk/dports/science/octopus/Portfile 2013-07-29 23:03:24 UTC (rev 108659)
@@ -30,26 +30,82 @@
--disable-gdlib --without-sparskit --with-netcdf-prefix=no \
--with-etsf-io-prefix=no --with-berkeleygw-prefix=no \
--with-arpack=no --with-libfm=no --with-pfft-prefix=no \
- --with-pspio-prefix=no --with-nfft=no
+ --with-pspio-prefix=no --with-nfft=no --with-blacs=no \
+ --with-scalapack=no FCCPP="${configure.cc} -E -ansi" \
+ --enable-utils
# configure will find and use these other libraries unless they are explicitly disabled
+configure.optflags -O3
-pre-configure {
- configure.args-append FCCPP="${configure.cpp} -ansi"
+default_variants +newuoa
+if {![variant_isset gcc46] && ![variant_isset gcc48] && ![variant_isset openmpi] && ![variant_isset mpich]} {
+ default_variants +gcc47
+}
+pre-fetch {
+ set fortran unknown
+ set fortrans { gcc42 gcc43 gcc44 gcc45 gcc46 gcc47 gcc48 g95 }
+
+ foreach fc_name ${fortrans} {
+ if { [variant_isset ${fc_name}] } {
+ set fortran ${fc_name}
+ } elseif { [variant_isset openmpi] } {
+ if { [active_variants openmpi ${fc_name}] } { set fortran ${fc_name} }
+ } elseif { [variant_isset mpich] } {
+ if { [_portnameactive mpich] } {
+ if { [active_variants mpich ${fc_name}] } { set fortran ${fc_name} }
+ } elseif { [_portnameactive mpich-devel] } {
+ if { [active_variants mpich-devel ${fc_name}] } { set fortran ${fc_name} }
+ }
+ }
+ }
+
+ if { ${fortran} == "unknown" } {
+ if { [variant_isset openmpi] } {
+ ui_error "Variant +openmpi requires openmpi to have been built with Fortran support."
+ return -code error "Variant +openmpi requires openmpi to have been built with Fortran support."
+ } elseif { [variant_isset mpich] } {
+ ui_error "Variant +mpich requires mpich/mpich-devel to have been built with Fortran support."
+ return -code error "Variant +mpich requires mpich/mpich-devel to have been built with Fortran support."
+ } else {
+ ui_error "Internal error: cannot determine Fortran compiler."
+ return -code error "Internal error: cannot determine Fortran compiler."
+ }
+ }
+ ui_msg "Fortran compiler is ${fortran}."
+
+ if { ![active_variants libxc ${fortran}] } {
+ ui_error "libxc must have been built with +${fortran}."
+ return -code error "libxc must have been built with +${fortran}."
+ }
+
+ if { [variant_isset netcdf-fortran] } {
+ if {![active_variants netcdf-fortran ${fortran}] } {
+ ui_error "netcdf-fortran must have been built with +${fortran}."
+ return -code error "netcdf-fortran must have been built with +${fortran}."
+ }
+ }
+
+ if { [variant_isset etsf_io] } {
+ if {![active_variants etsf_io ${fortran}] } {
+ ui_error "etsf_io must have been built with +${fortran}."
+ return -code error "etsf_io must have been built with +${fortran}."
+ }
+ }
+
# use of the same Fortran compiler as the one being used here does not seem necessary
- if { ![active_variants fftw-3 gcc43] && ![active_variants fftw-3 gcc44] && \
- ![active_variants fftw-3 gcc45] && ![active_variants fftw-3 gcc46] && \
- ![active_variants fftw-3 gcc47] && ![active_variants fftw-3 gcc48] && \
- ![active_variants fftw-3 g95] } {
- ui_error "fftw-3 must be built with a Fortran variant"
- return -code error "fftw-3 needs Fortran variant"
+ set fftw_fortran no
+ foreach fc_name ${fortrans} {
+ if { [active_variants fftw-3 ${fc_name}] } { set fftw_fortran yes }
}
+ if { ${fftw_fortran} == "no" } {
+ ui_error "fftw-3 must have been built with a Fortran variant"
+ return -code error "fftw-3 must have been built with a Fortran variant"
+ }
}
-configure.optflags -O3
# More options that could be added:
-# variants: berkeleygw, openmp, openmpi, mpich, threads (for fftw, atlas?), scalapack, arpack
-# with MPI would need to disable zoltan, scalapack explicitly. no way to turn off PAPI.
+# variants: berkeleygw, openmp, threads (for fftw, atlas?), scalapack, arpack
+# no way to turn off PAPI.
# libxc does not have universal variant, so octopus cannot either
universal_variant no
@@ -57,23 +113,39 @@
test.run yes
test.target check-full
-variant gcc46 conflicts gcc47 description {Build with GCC 4.6} {
+variant gcc46 conflicts gcc47 gcc48 openmpi mpich description {Build with GCC 4.6} {
configure.compiler macports-gcc-4.6
depends_lib-append port:gcc46
- require_active_variants libxc gcc46
}
-variant gcc47 conflicts gcc46 description {Build with GCC 4.7} {
+variant gcc47 conflicts gcc46 gcc48 openmpi mpich description {Build with GCC 4.7} {
configure.compiler macports-gcc-4.7
depends_lib-append port:gcc47
- require_active_variants libxc gcc47
}
-default_variants +newuoa
-if {![variant_isset gcc46]} {
- default_variants +gcc47
+variant gcc48 conflicts gcc46 gcc47 openmpi mpich description {Build with GCC 4.8} {
+ configure.compiler macports-gcc-4.8
+ depends_lib-append port:gcc48
}
+variant openmpi conflicts gcc46 gcc47 gcc48 mpich description {Build with OpenMPI} {
+ configure.cc openmpicc
+ configure.fc openmpif90
+ configure.args-delete --disable-mpi
+ # an in-place allreduce of lxyz_inv in mesh_init.F90 leads to zeroes afterwards with MPI2
+ configure.args-append --enable-mpi --without-external_zoltan --disable-mpi2
+ depends_lib-append port:openmpi
+ test.env-append MPIEXEC=${prefix}/bin/openmpiexec
+}
+
+variant mpich conflicts gcc46 gcc47 gcc48 openmpi description {Build with MPICH} {
+ configure.cc mpicc
+ configure.fc mpif90
+ configure.args-delete --disable-mpi
+ configure.args-append --enable-mpi --without-external_zoltan
+ depends_lib-append path:bin/mpif90:mpich
+}
+
variant newuoa description {Build with internal newuoa library for optimal control} {
configure.args-append --enable-newuoa
}
@@ -82,25 +154,13 @@
configure.args-delete --with-netcdf-prefix=no
configure.args-append --with-netcdf-prefix=${prefix}
depends_lib-append port:netcdf-fortran
-
require_active_variants netcdf-fortran {} universal
- if {[variant_isset gcc46]} {
- require_active_variants netcdf-fortran gcc46
- } else {
- require_active_variants netcdf-fortran gcc47
- }
}
variant etsf_io requires netcdf description {Build with support for ETSF_IO output} {
configure.args-delete --with-etsf-io-prefix=no
configure.args-append --with-etsf-io-prefix=${prefix}
depends_lib-append port:etsf_io
-
- if {[variant_isset gcc46]} {
- require_active_variants etsf_io gcc46
- } else {
- require_active_variants etsf_io gcc47
- }
}
variant sparskit description {Build with support for SPARSKIT propagators} {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130729/e2e0d7ee/attachment.html>
More information about the macports-changes
mailing list