[153943] trunk/dports/science

David Strubbe dstrubbe at macports.org
Sun Oct 16 17:23:28 PDT 2016


Hi,

Let me add a few comments.
- The dependency for BLAS is wrong: the port OpenBLAS provides a library
-lopenblas not -lblas. Apparently the "lapack" port includes BLAS anyway.
To be simpler and more flexible, I suggest use of the linear algebra port
group I created to handle all this and also provide choices of different
optimized implementations (ATLAS, Accelerate, or OpenBLAS -- the port has
lapack included). See patch below.
- You are installing a lot of Makefiles and C source files -- is this on
purpose? It is somewhat unusual.
- You are putting everything in the lib directory. This should be reserved
for libraries. Headers should go in include; documentation or miscellaneous
things should go in share; etc.
- Since there are tests apparently available, you should create a test
phase rather than install their files, so that users can run "port test".

David

Index: Portfile
===================================================================
--- Portfile    (revision 153958)
+++ Portfile    (working copy)
@@ -3,6 +3,7 @@

 PortSystem      1.0
 PortGroup       compilers 1.0
+PortGroup       linear_algebra 1.0

 cvs.date           20160908

@@ -29,9 +30,7 @@
                     sha256
 ef797abc51ed8ae27c200f5b71fd0a3824d1fa310392dac57067de2e423222ed
 worksrcdir             ${distname}-${version}+dfsg

-depends_lib            port:OpenBLAS \
-                    port:lapack \
-                    port:gsl \
+depends_lib            port:gsl \
                     port:fftw-3 \
                     port:pgplot \
                     port:xorg-libX11
@@ -47,6 +46,7 @@
     reinplace -W ${worksrcpath} "s|@FFLAGS@|${configure.fflags}|g"
local_settings
     reinplace -W ${worksrcpath} "s|@LDFLAGS@|${configure.ldflags}|g"
local_settings
     reinplace -W ${worksrcpath} "s|@LIB_FORTRAN@|${compilers.libfortran}|g"
local_settings
+    reinplace -W ${worksrcpath} "s|@LIB_LAPACK@|${linalglib}|g"
local_settings
 }

 build.env-append    HOME_LORENE=${worksrcpath}
Index: files/local_settings
===================================================================
--- files/local_settings        (revision 153958)
+++ files/local_settings        (working copy)
@@ -74,7 +74,7 @@

 # Linear Algebra Package (LAPACK) library
 # ---------------------------------------
-LIB_LAPACK = -llapack -lblas
+LIB_LAPACK = @LIB_LAPACK

 # Graphical libraries: PGPLOT, PNG and X11
 # ----------------------------------------


On Sun, Oct 16, 2016 at 1:27 PM, Ryan Schmidt <ryandesign at macports.org>
wrote:

>
> > On Oct 16, 2016, at 12:41 PM, thibaut at macports.org wrote:
> >
> > Revision
> > 153943
> > Author
> > thibaut at macports.org
> > Date
> > 2016-10-16 10:41:08 -0700 (Sun, 16 Oct 2016)
> > Log Message
> >
> > New port: LORENE
> > Added Paths
> >
> >       • trunk/dports/science/LORENE/
> >       • trunk/dports/science/LORENE/Portfile
> >       • trunk/dports/science/LORENE/files/
> >       • trunk/dports/science/LORENE/files/local_settings
> > Diff
> >
> > Added: trunk/dports/science/LORENE/Portfile (0 => 153943)
> >
> > --- trunk/dports/science/LORENE/Portfile
> (rev 0)
> > +++ trunk/dports/science/LORENE/Portfile      2016-10-16 17:41:08 UTC
> (rev 153943)
> > @@ -0,0 +1,67 @@
> > +# -*- 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
> > +# $Id$
>
> The whitespace of this portfile does not conform to this modeline. Tabs
> should be replaced with spaces.
>
>
> > +PortSystem      1.0
> > +PortGroup       compilers 1.0
> > +
> > +cvs.date         20160908
> > +
> > +name                 LORENE
> > +version                      0.0.0~cvs${cvs.date}
> > +
> > +categories           science
> > +maintainers          thibaut openmaintainer
> > +description          Langage Objet pour la RElativité NumériquE
> > +long_description    LORENE is a set of C++ classes to solve various
> problems \
> > +                    arising in numerical relativity, and more generally
> in \
> > +                    computational astrophysics. It provides tools to
> solve \
> > +                    partial differential equations by means of
> multi-domain \
> > +                    spectral methods.
> > +
> > +license             gpl-2+
> > +platforms            darwin
> > +
> > +homepage             http://www.lorene.obspm.fr/
> > +master_sites     https://people.debian.org/~thibaut/debian/pool/main/l/
> lorene/
> > +distname             lorene
> > +distfiles            ${distname}_${version}+dfsg.orig.tar.xz
>
> Because this is not a tar.gz file but a tar.xz file, you must use "use_xz
> yes" to tell MacPorts how to decompress it. (Mavericks (?) and later can
> figure it out automatically, but our policy is not to rely on that, and to
> specify it correctly in the Portfile.)
>
>
> > +checksums           rmd160  36346f8d7a50acee20a5b81051af2e7fe5f188c1 \
> > +                    sha256  ef797abc51ed8ae27c200f5b71fd0a
> 3824d1fa310392dac57067de2e423222ed
> > +worksrcdir           ${distname}-${version}+dfsg
> > +
> > +depends_lib          port:OpenBLAS \
> > +                    port:lapack \
> > +                    port:gsl \
> > +                    port:fftw-3 \
> > +                    port:pgplot \
> > +                    port:xorg-libX11
> > +
> > +compilers.choose    cxx f77
> > +compilers.setup     require_fortran
> > +
> > +configure        {
> > +    file copy ${filespath}/local_settings ${worksrcpath}/
> > +    reinplace -W ${worksrcpath} "s|@CXX@|${configure.cxx}|g"
> local_settings
> > +    reinplace -W ${worksrcpath} "s|@F77@| ${configure.f77} |g"
> local_settings
> > +    reinplace -W ${worksrcpath} "s|@CXXFLAGS@|${configure.cxxflags}|g"
> local_settings
> > +    reinplace -W ${worksrcpath} "s|@FFLAGS@|${configure.fflags}|g"
> local_settings
> > +    reinplace -W ${worksrcpath} "s|@LDFLAGS@|${configure.ldflags}|g"
> local_settings
> > +    reinplace -W ${worksrcpath} "s|@LIB_FORTRAN@|${compilers.libfortran}|g"
> local_settings
> > +}
>
> I don't see anywhere in this Portfile that arranges for the correct -arch
> (or, in the case of fortran, -m32/-m64) flags to be used.
> ([get_canonical_archflags ...])
>
> The universal variant fails and should probably be disabled because:
>
> Error: Cannot install LORENE for the archs 'i386 x86_64' because
> Error: its dependency pgplot does not build for the required archs by
> default
> Error: and does not have a universal variant.
>
>
> > +build.env-append    HOME_LORENE=${worksrcpath}
> > +build.target        cpp fortran export
> > +use_parallel_build  no
> > +
> > +destroot            {
> > +    xinstall -d ${destroot}${prefix}/lib/lorene/Lib
> > +    xinstall {*}[glob ${worksrcpath}/Lib/*.a] ${destroot}${prefix}/lib/
> lorene/Lib/
> > +    xinstall -d ${destroot}${prefix}/lib/lorene/C++/Include
> > +    xinstall {*}[glob ${worksrcpath}/C++/Include/*.h]
> ${destroot}${prefix}/lib/lorene/C++/Include/
> > +    xinstall -d ${destroot}${prefix}/lib/lorene/C++/Include/Template
> > +    xinstall {*}[glob ${worksrcpath}/C++/Include/Template/*]
> ${destroot}${prefix}/lib/lorene/C++/Include/Template/
> > +    xinstall ${worksrcpath}/local_settings ${destroot}${prefix}/lib/
> lorene/
> > +    xinstall -d ${destroot}${prefix}/lib/lorene/Devel
> > +    xinstall {*}[glob ${worksrcpath}/Devel/*] ${destroot}${prefix}/lib/
> lorene/Devel/
> > +    exec cp -a ${worksrcpath}/Codes ${destroot}${prefix}/lib/lorene/
> > +}
>
> Why "exec cp -a" instead of "copy"?
>
>
> > --- trunk/dports/science/LORENE/files/local_settings
>       (rev 0)
> > +++ trunk/dports/science/LORENE/files/local_settings  2016-10-16
> 17:41:08 UTC (rev 153943)
> > @@ -0,0 +1,89 @@
> > +     ###############################################################
> > +#
>
> Should there be this indentation on the first line?
>
>
> > +#  Edit the following lines according to your implementation.
> > +#
> > +#  The environment variable HOME_LORENE (root directory for the
> > +#   Lorene implementation) must be have been already defined.
> > +#
> > +###############################################################
> > +
> > +#===============================#
> > +#           COMPILERS                #
> > +#===============================#
> > +
> > +# C++ compiler:
> > +# ------------
> > +CXX   = @CXX@
> > +
> > +# Options for the C++ compiler to produce the optimized library:
> > +# -------------------------------------------------------------
> > +CXXFLAGS = @CXXFLAGS@ -DNDEBUG -fPIC
> > +
> > +# Options for the C++ compiler to produce the library for debugging:
> > +# -----------------------------------------------------------------
> > +CXXFLAGS_G = -g -fPIC
> > +
> > +# Path for the include files:
> > +# --------------------------
> > +INC  = -I$(HOME_LORENE)/C++/Include
> > +
> > +# Converting archives to random libraries (if required, otherwise just
> ls)
> > +# ------------------------------------------------------------
> ------------
> > +RANLIB = ls
> > +
> > +# Fortran 77 compiler:
> > +# -------------------
> > +F77   = @F77@
> > +
> > +# Options for the Fortran 77 compiler to produce the optimized library:
> > +# ---------------------------------------------------------------------
> > +F77FLAGS =  @FFLAGS@ -ffixed-form -ffixed-line-length-none -fPIC
> > +
> > +# Options for the Fortran 77 compiler to produce the library for
> debugging:
> > +# ------------------------------------------------------------
> ------------
> > +F77FLAGS_G = -ffixed-form -ffixed-line-length-none -g -fPIC
> > +
> > +#===============================#
> > +#           MAKEDEPEND               #
> > +#===============================#
> > +
> > +# First line uses the C precompiler (usually called cpp)
> > +# if yours does not support the -M option try to figure out
> > +# how to output dependencies file, or use makedepend (2nd line)
> > +#--------------------------------------------------------------
> > +MAKEDEPEND = @CXX@ $(INC) -M >> $(df).d $<
> > +#MAKEDEPEND = touch $(df).d && makedepend $(INC) -f $(df).d $<
> > +DEPDIR = .deps
> > +
> > +#===============================#
> > +#      SYSTEM LIBRARIES              #
> > +#===============================#
> > +
> > +# FFT library: FFT991 in Fortran coming with Lorene
> > +#              FFTW3 library (must be installed separately)
> > +# -------------------------------------------------------------------
> > +FFT_DIR = FFTW3
> > +
> > +# C, C++ library, mathematical library and Fortran library
> > +# ---------------------------------------------------------
> > +ifeq ($(FFT_DIR),FFTW3)
> > +LIB_CXX = @LDFLAGS@ -lfftw3 @LIB_FORTRAN@ -lstdc++ -lm
> > +else
> > +LIB_CXX = @LDFLAGS -lgfortran -lstdc++ -lm
> > +endif
>
> On the second LIB_CXX line, did you mean to use "@LIB_FORTRAN@" again
> instead of "-lgfortran"? You probably also meant "@LDFLAGS@" instead of
> "@LDFLAGS".
>
>
> > +
> > +# Linear Algebra Package (LAPACK) library
> > +# ---------------------------------------
> > +LIB_LAPACK = -llapack -lblas
> > +
> > +# Graphical libraries: PGPLOT, PNG and X11
> > +# ----------------------------------------
> > +LIB_PGPLOT = -lcpgplot -lpgplot -lX11
> > +
> > +# GNU scientific library
> > +# -----------------------------------
> > +LIB_GSL = -lgsl -lgslcblas
>
>
>
> _______________________________________________
> macports-dev mailing list
> macports-dev at lists.macosforge.org
> https://lists.macosforge.org/mailman/listinfo/macports-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-dev/attachments/20161016/684d96c9/attachment-0001.html>


More information about the macports-dev mailing list