compilers PortGroup

Mark Brethen mark.brethen at gmail.com
Sun Jul 17 21:39:42 UTC 2022


Have I got this right? It seems to work:

    set ver [regsub -all {[[:alpha:]]+} ${compilers.gcc_default} {}]
    if { ${ver} >= 10 } {
        reinplace \
            "s|FFLAGS = -Wall -O2|FFLAGS = -Wall -O2 -fallow-argument-mismatch|g" \
            ${worksrcpath}/src/Makefile
    }


Thanks,
Mark



> On Jul 17, 2022, at 12:48 PM, Mark Brethen <mark.brethen at gmail.com> wrote:
> 
> Unfortunately spooles is no longer maintained, but I found this discussion online:
> 
> If you compile with GCC 10 or newer, you will get the following error, originating from CalculiX:
> 
> Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
> To work around this, you need to add -fallow-argument-mismatch to the FFLAGS inside Makefile:
> 
> - FFLAGS = -Wall -O3 -fopenmp $(INCLUDES)
> + FFLAGS = -Wall -O3 -fopenmp -fallow-argument-mismatch $(INCLUDES)
> 
> I’ll implement this in a patch, assuming everyone is building with >+ 10? Would it hurt to patch it even if gcc <10?
> 
> Mark 
> 
> 
> 
>> On Jul 17, 2022, at 12:01 PM, Chris Jones <jonesc at hep.phy.cam.ac.uk <mailto:jonesc at hep.phy.cam.ac.uk>> wrote:
>> 
>> Ok, shame.
>> 
>> Nevertheless, this is not an issue with the compiler but the code itself. You might try discussing it with the upstream maintainers.
>> 
>> Chris
>> 
>>> On 17 Jul 2022, at 3:29 pm, Mark Brethen <mark.brethen at gmail.com <mailto:mark.brethen at gmail.com>> wrote:
>>> 
>>> Hmm, 'compilers.allow_arguments_mismatch yes’ had no effect—same failure. I looked at the compilers group and with it set, and gfortran variant is selected, chooses ${compilers.gcc_default}. Which in my case was gcc12—which is already installed.
>>> 
>>> Mark Brethen
>>> mark.brethen at gmail.com <mailto:mark.brethen at gmail.com>
>>> 
>>> 
>>> 
>>>> On Jul 17, 2022, at 6:15 AM, Chris Jones <jonesc at hep.phy.cam.ac.uk <mailto:jonesc at hep.phy.cam.ac.uk>> wrote:
>>>> 
>>>> 
>>>> 
>>>>> On 17 Jul 2022, at 1:59 am, Mark Brethen <mark.brethen at gmail.com <mailto:mark.brethen at gmail.com>> wrote:
>>>>> 
>>>>> I’ve tested the build with gfortran-mp-12  which fails:
>>>>> 
>>>>> :info:build /opt/local/bin/gfortran-mp-12 -Wall -O2 -c gencontelem_n2f.f
>>>>> :info:build gencontelem_n2f.f:595:39:
>>>>> :info:build   184 |                call isortii(ialset(istartset(iset)),idummy,
>>>>> :info:build       |                                                    2
>>>>> :info:build ......
>>>>> :info:build   595 |                     call isortii(nodef,iorder,nopes,kflag)
>>>>> :info:build       |                                       1
>>>>> :info:build Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
>>>>> :info:build make: *** [gencontelem_n2f.o] Error 1
>>>>> 
>>>>> How is a particular value of gfortran blacklisted, in this case gfortran-mp-12? 
>>>> 
>>>> As Ken has eluded to, this is not a problem with the compiler, but an issue i. The code itself made apparent by stricter checks in recent compilers. You will likely run into the same with most recent versions so blacklisting is not the fix here.
>>>> 
>>>> The option Ken mentioned turns off those checks
>>>> 
>>>> https://github.com/macports/macports-ports/blob/8f07e286eac6e7fa7c9bcd282cc461ee945c7c8d/_resources/port1.0/group/compilers-1.0.tcl#L782 <https://github.com/macports/macports-ports/blob/8f07e286eac6e7fa7c9bcd282cc461ee945c7c8d/_resources/port1.0/group/compilers-1.0.tcl#L782>
>>>> 
>>>> so is definitely the way forward I would think.
>>>> 
>>>> Chris
>>>> 
>>>>> 
>>>>> Mark Brethen
>>>>> mark.brethen at gmail.com <mailto:mark.brethen at gmail.com>
>>>>> 
>>>>> 
>>>>> 
>>>>>> On Jul 6, 2022, at 10:19 PM, Mark Brethen <mark.brethen at gmail.com <mailto:mark.brethen at gmail.com>> wrote:
>>>>>> 
>>>>>> The Spooles library is written in C language and has multi-threading subroutines.
>>>>>> 
>>>>>> Mark Brethen
>>>>>> mark.brethen at gmail.com <mailto:mark.brethen at gmail.com>
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Jul 6, 2022, at 5:06 PM, Joshua Root <jmr at macports.org <mailto:jmr at macports.org>> wrote:
>>>>>>> 
>>>>>>> On 2022-7-7 07:40 , Mark Brethen wrote:
>>>>>>>> The source is a combination of C and fortran, so a C-compiler with fortran is needed-preferably gcc. The gcc8 build is the only one that does not issue those warnings. But I have successfully run verification test cases packaged with the source against gcc8, gcc9, gcc11 and gfortran builds.
>>>>>>>> The compilers PortGroup sets gfortran by default with these settings:
>>>>>>>> compilers.choose    fc cc
>>>>>>>> compilers.setup     require_fortran -g95 -clang
>>>>>>>> But it uses clang to compile the C-code. I tried blacklisting clang but then it wants to install clang-14. Choosing a gcc variant uses its associated mp-gfortan compiler.
>>>>>>> 
>>>>>>> Yes, +gfortran is there to only give you a fortran compiler (because clang doesn't have one). Is there a reason you need the C code to be compiled with gcc?
>>>>>>> 
>>>>>>> - Josh
>>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-dev/attachments/20220717/51efd72d/attachment-0001.htm>


More information about the macports-dev mailing list