[153943] trunk/dports/science
Thibaut Paumard
thibaut at macports.org
Mon Oct 17 12:19:34 PDT 2016
I think this didn’t go to the list.
Le 17 oct. 2016 à 19:40, Paumard Thibaut <Thibaut.Paumard at obspm.fr> a écrit :
> Many thanks David,
>
> Let me answer some of your questions:
>
> Le Lundi 17 Octobre 2016 02:23 CEST, David Strubbe <dstrubbe at macports.org> a écrit:
>
>> 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.
>
> Thanks, I've applied your patch. Does this warrant a rev bump? I would think so, since the library may not be linked with the same version of blas and lapack.
>
>> - You are installing a lot of Makefiles and C source files -- is this on
>> purpose? It is somewhat unusual.
>
> Yes, this is on purpose. Those are codes that, unfortunately, need to be recompiled for each use case. So the scenario for using those codes from the macports-installed package is to copy the folder for a given code to a place with write access, configure it by putting the right parameter file in the right place, set HOME_LORENE (see below), and run make.
>
>> - 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.
>
> The code is meant to be used that way. I don't want to diverge from what upstream is doing: I could install the headers in ${prefix}/include etc., but I would have to symlink from the "main" lorene directory.
>
> To use the library, users are expected (by upstream) to set an environment variable to the place that contains the compiled source code for lorene and include $(HOME_LORENE)/local_settings.
>
>> - Since there are tests apparently available, you should create a test
>> phase rather than install their files, so that users can run "port test".
>
> Right, I should try and see which tests are suitable for that.
>
> Kind regards, Thibaut.
>
>> 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
>>>
>
>
>
>
>
>
More information about the macports-dev
mailing list