help make port for opencoarrays

Tijl Coosemans tijl at FreeBSD.org
Mon Feb 22 09:06:09 UTC 2016


On Sun, 21 Feb 2016 13:51:28 -0800 (PST) Anton Shterenlikht <mexas at bris.ac.uk> wrote:
> From thierry at pompo.net Sun Feb 21 17:36:47 2016
>> Le mer 17 f_v 16 _ 23:50:37 +0100, Anton Shterenlikht <mexas at bris.ac.uk>
>> _crivait_:  
>>> Please help/advise
>>> 
>>> https://github.com/sourceryinstitute/opencoarrays
>>> 
>>> It requires mpich built with at least gcc5.3,
>>> more specifically mpif90 built with gcc5.3 or gcc6.
>>> net/mpich has FORTRAN_USES=fortran, which I understand
>>> triggers lang/gcc.
>>> 
>>> Is it a good idea (or at all possible) to add
>>> an option to net/mpich to choose a particular
>>> gcc version?
>>> 
>>> Any other advice?  
>>
>> ATM Fortran in FreeBSD is in a very bad shape, and, as you know, we
>> encounter difficulties with several ports (french/aster, cad/salome,
>> etc.) caused by a mix between clang and Gcc, and thus libstdc++ /
>> libc++.  

I think Fortran is fine.  It's C++ that's in a bad shape.  I think the
lang/gcc* ports need to be modified so libstdc++ sits on top of libcxxrt
instead of libsupc++.  Maybe David can say more about that (CCed).

>> If building mpich with a newer Gcc could solve the problem with
>> opencoarrays, I'm afraid it would cause uncompatibilities in other
>> dependencies - but unfortunately I cannot suggest a better alternative!  
> 
> Well, I'm only asking for an option in the port.
> The default will not change.
> 
> I'll have a go locally and see what happens.
> But I'm not sure what option to use to build
> with e.g. GCC6. Is it this line?
> 
> FORTRAN_USES=                   fortran
> 
> Or are you saying that building mpich with
> non-default gcc is problematic because all
> its dependencies should be built with the
> same gcc version?

Users can change ports tree default versions by setting DEFAULT_VERSIONS
in /etc/make.conf:

DEFAULT_VERSIONS=	gcc=5

DEFAULT_VERSIONS is handled in /usr/ports/Mk/bsd.default-versions.mk and
/usr/ports/Mk/Uses/fortran.mk uses it to select the Fortran compiler.
So with the line above the Fortran part of net/mpich will be built with
lang/gcc5.

In your opencoarray port I think you can do something like this:

...
USES=	fortran
...
.include <bsd.port.pre.mk>

.if ${GCC_DEFAULT:R} < 5
IGNORE=	This port requires that the default GCC version is 5 or higher
.endif
...
.include <bsd.port.post.mk>


More information about the freebsd-ports mailing list