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.bret...@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 <jon...@hep.phy.cam.ac.uk 
>> <mailto:jon...@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.bret...@gmail.com 
>>> <mailto:mark.bret...@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.bret...@gmail.com <mailto:mark.bret...@gmail.com>
>>> 
>>> 
>>> 
>>>> On Jul 17, 2022, at 6:15 AM, Chris Jones <jon...@hep.phy.cam.ac.uk 
>>>> <mailto:jon...@hep.phy.cam.ac.uk>> wrote:
>>>> 
>>>> 
>>>> 
>>>>> On 17 Jul 2022, at 1:59 am, Mark Brethen <mark.bret...@gmail.com 
>>>>> <mailto:mark.bret...@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.bret...@gmail.com <mailto:mark.bret...@gmail.com>
>>>>> 
>>>>> 
>>>>> 
>>>>>> On Jul 6, 2022, at 10:19 PM, Mark Brethen <mark.bret...@gmail.com 
>>>>>> <mailto:mark.bret...@gmail.com>> wrote:
>>>>>> 
>>>>>> The Spooles library is written in C language and has multi-threading 
>>>>>> subroutines.
>>>>>> 
>>>>>> Mark Brethen
>>>>>> mark.bret...@gmail.com <mailto:mark.bret...@gmail.com>
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Jul 6, 2022, at 5:06 PM, Joshua Root <j...@macports.org 
>>>>>>> <mailto:j...@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
>>> 
> 

Reply via email to