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 <[email protected]> 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 <[email protected]
>> <mailto:[email protected]>> 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 <[email protected]
>>> <mailto:[email protected]>> 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
>>> [email protected] <mailto:[email protected]>
>>>
>>>
>>>
>>>> On Jul 17, 2022, at 6:15 AM, Chris Jones <[email protected]
>>>> <mailto:[email protected]>> wrote:
>>>>
>>>>
>>>>
>>>>> On 17 Jul 2022, at 1:59 am, Mark Brethen <[email protected]
>>>>> <mailto:[email protected]>> 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
>>>>> [email protected] <mailto:[email protected]>
>>>>>
>>>>>
>>>>>
>>>>>> On Jul 6, 2022, at 10:19 PM, Mark Brethen <[email protected]
>>>>>> <mailto:[email protected]>> wrote:
>>>>>>
>>>>>> The Spooles library is written in C language and has multi-threading
>>>>>> subroutines.
>>>>>>
>>>>>> Mark Brethen
>>>>>> [email protected] <mailto:[email protected]>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On Jul 6, 2022, at 5:06 PM, Joshua Root <[email protected]
>>>>>>> <mailto:[email protected]>> 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
>>>
>