Peter Danecek <[email protected]> writes:

> Sean,
>
> I am looking into the compilers Portgroup again. But I have the impression to 
> know really what I am actually doing. See details below.

Cool! Thanks for taking interest in this :-)

> On 10 Feb 2014, at 22:03, Sean Farley <[email protected]> wrote:
>
>> 
>> [email protected] writes:
>> 
>>> Unfortunately, I have no complete picture of how this port group is 
>>> supposed to be used and miss some documentation, nothing found in Guide 
>>> 5.9, introductory comment in the tcl file, no Recipe. 
>> 
>> Patches would be welcomed :-) but, yes, you are correct. I have very
>> little documentation since some of these ideas are still fluid and open
>> to discussion.
>
> I could try to contribute once I have understood the logic. Anyway, if you 
> still consider this WIP, maybe just add a somewhat extended Usage comment to 
> the tcl file itself and change it along with this file. Ones, this is 
> consolidated we could add documentation to the Guide at that point the 
> `Recipes` might not be necessary any more.

Sure, that could work.

>> You could take a look at netcdf-fortran to see how a port can require a
>> fortran compiler. Probably, the best way to document this stuff is to
>> ask questions on the mailing list so everyone can remain in the loop
>> (and it can help guide me to write documentation).
>
> I am not sure if the cited port is really representative for the situation I 
> am interested in, i.e. replacing the Fortran recipe. This is from the cited 
> netcdf-fortran Portfile:
>
> --- snip ---
> PortSystem                  1.0
> PortGroup                   muniversal 1.0
> PortGroup                   mpi 1.0
>
> compilers.choose            f77 f90 fc
> mpi.setup                   require_fortran
>
> mpi.enforce_variant         hdf5-18
>
> […]
> --- snip ---
>
> So it actually used the MPI portgroup not the compilers group directly. Okay, 
> the MPI group used compiles. So I tried replacing mpi.* with compilers.*. It 
> somehow works, but I do not get the the desired result. 
>
> My Portfile now starts this way:
> --- snip ---
> PortSystem          1.0
> PortGroup           python 1.0
> PortGroup           github 1.0
> PortGroup           compilers 1.0
>
> github.setup        obspy obspy 4d67519
> compilers.setup     require_fortran
> compilers.choose    f77 f90 fc
> --- snip ---

Well, you didn't replace 'mpi' with 'compilers' exactly, else you would
end up with the same order (which is important; more below)

> 1) there is no default variant set. I would expect that if I require Fortran 
> (the only motivation to care about all this), this would be set to some 
> defaults which would work;
>
> 2) When testing with the +gcc48 (the former default) the port now compiles 
> also C extensions with the selected GCC variant. This might be okay for the 
> particular port. But actually this was what the Fortran recipe wanted to 
> avoid.
>
> So would be the correct use here? I just want to replace the recipe here.

The important part that I didn't really document is that compilers.setup
has to be the last call. In all the examples, I have compilers/mpi calls
after the PortGroup but before everything else and also with the setup
call last.

I think you'll get the desired outcome if you change the order to:
--- snip ---
PortSystem          1.0
PortGroup           python 1.0
PortGroup           github 1.0
PortGroup           compilers 1.0

compilers.choose    f77 f90 fc
compilers.setup     require_fortran

github.setup        obspy obspy 4d67519
--- snip ---

If this were Python, I could make lazily evaluated properties for this
but, unfortunately, this is not Python and my Tcl is pretty mediocre.
_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to