[111271] trunk/dports/science/ocaml-mpi/Portfile

Ryan Schmidt ryandesign at macports.org
Wed Sep 18 20:14:13 PDT 2013


On Sep 18, 2013, at 21:45, Eric A. Borisch wrote:

>> > -depends_lib         port:ocaml port:ocaml-findlib path:bin/mpicc:mpich
>> > +depends_lib         port:ocaml port:ocaml-findlib path:bin/mpicc-mp:mpich-default
> 
>> > +if {[file exists ${prefix}/lib/mpich-mp]} then {
>> > +   build.env           MPIINCDIR=${prefix}/include MPILIBDIR=${prefix}/lib/mpich-mp
>> > +} else {
>> > +   build.env           MPIINCDIR=${prefix}/include MPILIBDIR=${prefix}/lib/mpich-devel-mp
>> > +}
>> 
>> This is concerning, because it means the port builds differently depending on what ports the user already has installed. This won't work right if the user gets a pre-compiled package from the buildbot and is generally a bad idea.
> 
> True, but the only people it will be any issue for are those that have intentionally installed mpich-devel-default, and for those, rev-upgrade will rebuild it locally (the libs are in different locations; no chance of something subtle slipping by.) The two potential satisfying ports conflict with each other, so only one can possibly be installed.
> 
> These are people who have chosen to go off the beaten path intentionally.
> 
> Your thoughts?
>   - Eric

At the time that this code is evaluated:

if {[file exists ${prefix}/lib/mpich-mp]} then {
    build.env           MPIINCDIR=${prefix}/include MPILIBDIR=${prefix}/lib/mpich-mp
} else {
    build.env           MPIINCDIR=${prefix}/include MPILIBDIR=${prefix}/lib/mpich-devel-mp
}

the dependencies haven't necessarily been installed yet. If they haven't, then the code will set MPILIBDIR=${prefix}/lib/mpich-devel-mp, but the dependency path:bin/mpicc-mp:mpich-default will install mpich-default not mpich-devel-default.

This will affect any users who haven't already installed mpich-default by the time they ask to install ocaml-mpi. That includes new users and the buildbots, and therefore also any users who get the precompiled binaries.

I tried it just now and the build succeeded, but I don't know what effect the incorrect MPILIBDIR had.

You could fix this by changing the if statement. Check for a file from mpich-devel-default (not mpich-default). If it's not there, assume either mpich-default is installed, or will automatically be.



More information about the macports-dev mailing list