I think this didn’t go to the list. Le 17 oct. 2016 à 19:40, Paumard Thibaut <thibaut.paum...@obspm.fr> a écrit :
> Many thanks David, > > Let me answer some of your questions: > > Le Lundi 17 Octobre 2016 02:23 CEST, David Strubbe <dstru...@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 <ryandes...@macports.org> >> wrote: >> >>> >>>> On Oct 16, 2016, at 12:41 PM, thib...@macports.org wrote: >>>> >>>> Revision >>>> 153943 >>>> Author >>>> thib...@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@lists.macosforge.org >>> https://lists.macosforge.org/mailman/listinfo/macports-dev >>> > > > > > > _______________________________________________ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev