I am currently trying to wrap the MSTM code, written in Fortran 90, to be used in Python using f2py. The relevant files for compiling the actual executable (for serial mode) are found in the code/make-serial.bat
file. I was trying to generate the module using the command:
f2py --verbose -c --f90flags='-O2 -fallow-argument-mismatch' -m mstm mstm-intrinsics.f90 mpidefs-serial.f90 mstm-v4.0.f90
This results in the following error:
...
...
...
getctype: No C-type found in "{'=': '(1.d0', 'attrspec': ['optional']}", assuming void.
Traceback (most recent call last):
File "/home/user/.local/bin/f2py3.10", line 8, in <module>
sys.exit(main())
File "/home/user/.local/lib/python3.10/site-packages/numpy/f2py/f2py2e.py", line 702, in main
run_compile()
File "/home/user/.local/lib/python3.10/site-packages/numpy/f2py/f2py2e.py", line 669, in run_compile
setup(ext_modules=[ext])
File "/home/user/.local/lib/python3.10/site-packages/numpy/distutils/core.py", line 169, in setup
return old_setup(**new_attr)
File "/usr/lib64/python3.10/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib64/python3.10/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/usr/lib64/python3.10/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/home/user/.local/lib/python3.10/site-packages/numpy/distutils/command/build.py", line 62, in run
old_build.run(self)
File "/usr/lib64/python3.10/distutils/command/build.py", line 135, in run
self.run_command(cmd_name)
File "/usr/lib64/python3.10/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib64/python3.10/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/home/user/.local/lib/python3.10/site-packages/numpy/distutils/command/build_src.py", line 144, in run
self.build_sources()
File "/home/user/.local/lib/python3.10/site-packages/numpy/distutils/command/build_src.py", line 161, in build_sources
self.build_extension_sources(ext)
File "/home/user/.local/lib/python3.10/site-packages/numpy/distutils/command/build_src.py", line 321, in build_extension_sources
sources = self.f2py_sources(sources, ext)
File "/home/user/.local/lib/python3.10/site-packages/numpy/distutils/command/build_src.py", line 562, in f2py_sources
numpy.f2py.run_main(f2py_options + ['--lower',
File "/home/user/.local/lib/python3.10/site-packages/numpy/f2py/f2py2e.py", line 475, in run_main
ret = buildmodules(postlist)
File "/home/user/.local/lib/python3.10/site-packages/numpy/f2py/f2py2e.py", line 397, in buildmodules
dict_append(ret[name], rules.buildmodule(module, um))
File "/home/user/.local/lib/python3.10/site-packages/numpy/f2py/rules.py", line 1254, in buildmodule
mr, wrap = f90mod_rules.buildhooks(m)
File "/home/user/.local/lib/python3.10/site-packages/numpy/f2py/f90mod_rules.py", line 143, in buildhooks
at = capi_maps.c2capi_map[ct]
KeyError: 'void'
By commenting out everything after the line 2775, the surface_subroutines module I get the following GCC logs:
...
...
...
routsign2map: Confused: function gkintegrate has externals ['qsub'] but no "use" statement.
sign2map: Confused: external qsub is not in lcb_map[].
append_needs: unknown need 'qsub'
append_needs: unknown need 'qsub'
qint = gkintegrate(ntot,t0,t1,subdiv,errorcodes,inteps,mindiv,maxnumdiv)
Constructing wrapper function "specialfuncs.realsort"...
realsort(limits,eps,nlimits,[nlimits0])
Wrote C/API module "mstm" to file "/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c"
Fortran 90 wrappers are saved to "/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstm-f2pywrappers2.f90"
...
...
...
creating /tmp/tmp4hscirie/tmp
creating /tmp/tmp4hscirie/tmp/tmp4hscirie
creating /tmp/tmp4hscirie/tmp/tmp4hscirie/src.linux-x86_64-3.10
INFO: compile options: '-DNPY_DISABLE_OPTIMIZATION=1 -I/tmp/tmp4hscirie/src.linux-x86_64-3.10 -I/home/user/.local/lib/python3.10/site-packages/numpy/core/include -I/usr/include/python3.10 -c'
INFO: gcc: /tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c
INFO: gcc: /tmp/tmp4hscirie/src.linux-x86_64-3.10/fortranobject.c
In file included from /home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/ndarraytypes.h:1948,
from /home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
from /home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/arrayobject.h:5,
from /tmp/tmp4hscirie/src.linux-x86_64-3.10/fortranobject.h:13,
from /tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:23:
/home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
17 | #warning "Using deprecated NumPy API, disable it with " \
| ^~~~~~~
In file included from /home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/ndarraytypes.h:1948,
from /home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
from /home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/arrayobject.h:5,
from /tmp/tmp4hscirie/src.linux-x86_64-3.10/fortranobject.h:13,
from /tmp/tmp4hscirie/src.linux-x86_64-3.10/fortranobject.c:2:
/home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
17 | #warning "Using deprecated NumPy API, disable it with " \
| ^~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f_’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:720:9: warning: variable ‘capi_j’ set but not used [-Wunused-but-set-variable]
720 | int capi_j,capi_i = 0;
| ^~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f2py_rout_mstm_mpidefs_mstm_mpi’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:1434:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
1434 | if (mpi_flag_capi != Py_None)
| ^~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:1436:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
1436 | f2py_success = 1;
| ^~~~~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f2py_rout_mstm_specialfuncs_timewrite’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:1759:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
1759 | if (line_break_capi != Py_None)
| ^~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:1761:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
1761 | f2py_success = 1;
| ^~~~~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f2py_rout_mstm_specialfuncs_complexpivec’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:3846:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
3846 | if (lr_model_capi != Py_None)
| ^~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:3848:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
3848 | f2py_success = 1;
| ^~~~~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f2py_rout_mstm_specialfuncs_genplanewavecoef’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:4217:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
4217 | if (lr_tran_capi != Py_None)
| ^~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:4219:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
4219 | f2py_success = 1;
| ^~~~~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f2py_rout_mstm_specialfuncs_gaussianbeamcoef’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:4341:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
4341 | if (lr_tran_capi != Py_None)
| ^~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:4343:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
4343 | f2py_success = 1;
| ^~~~~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f2py_rout_mstm_specialfuncs_vwhcalc’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:5776:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
5776 | if (lr_to_mode_capi != Py_None)
| ^~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:5778:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
5778 | f2py_success = 1;
| ^~~~~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f2py_rout_mstm_specialfuncs_lr_mode_transformation’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:6641:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
6641 | if (lr_to_mode_capi != Py_None)
| ^~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:6643:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
6643 | f2py_success = 1;
| ^~~~~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f2py_rout_mstm_specialfuncs_gkintegrate’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7453:5: error: unknown type name ‘qsub_t’
7453 | qsub_t qsub_cb = { Py_None, NULL, 0 };
| ^~~~~~
In file included from /usr/include/python3.10/Python.h:74,
from /tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:18:
/usr/include/python3.10/object.h:606:17: warning: initialization of ‘int’ from ‘PyObject *’ {aka ‘struct _object *’} makes integer from pointer without a cast [-Wint-conversion]
606 | #define Py_None (&_Py_NoneStruct)
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7453:24: note: in expansion of macro ‘Py_None’
7453 | qsub_t qsub_cb = { Py_None, NULL, 0 };
| ^~~~~~~
/usr/include/python3.10/object.h:606:17: note: (near initialization for ‘qsub_cb’)
606 | #define Py_None (&_Py_NoneStruct)
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7453:24: note: in expansion of macro ‘Py_None’
7453 | qsub_t qsub_cb = { Py_None, NULL, 0 };
| ^~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7453:33: warning: excess elements in scalar initializer
7453 | qsub_t qsub_cb = { Py_None, NULL, 0 };
| ^~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7453:33: note: (near initialization for ‘qsub_cb’)
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7453:39: warning: excess elements in scalar initializer
7453 | qsub_t qsub_cb = { Py_None, NULL, 0 };
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7453:39: note: (near initialization for ‘qsub_cb’)
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7454:5: error: unknown type name ‘qsub_t’
7454 | qsub_t *qsub_cb_ptr = &qsub_cb;
| ^~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7507:12: error: request for member ‘capi’ in something not a structure or union
7507 | if (qsub_cb.capi==Py_None) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7508:10: error: request for member ‘capi’ in something not a structure or union
7508 | qsub_cb.capi = PyObject_GetAttrString(mstm_module,"qsub");
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7509:14: error: request for member ‘capi’ in something not a structure or union
7509 | if (qsub_cb.capi) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7527:14: error: request for member ‘capi’ in something not a structure or union
7527 | if (qsub_cb.capi==NULL) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:34: error: request for member ‘capi’ in something not a structure or union
7533 | if (create_cb_arglist(qsub_cb.capi,qsub_xa_capi,#maxnofargs#,#nofoptargs#,&qsub_cb.nofargs,&qsub_cb.args_capi,"failed in processing argument list for call-back qsub.")) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:53: error: stray ‘#’ in program
7533 | if (create_cb_arglist(qsub_cb.capi,qsub_xa_capi,#maxnofargs#,#nofoptargs#,&qsub_cb.nofargs,&qsub_cb.args_capi,"failed in processing argument list for call-back qsub.")) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:64: error: stray ‘#’ in program
7533 | if (create_cb_arglist(qsub_cb.capi,qsub_xa_capi,#maxnofargs#,#nofoptargs#,&qsub_cb.nofargs,&qsub_cb.args_capi,"failed in processing argument list for call-back qsub.")) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:54: error: ‘maxnofargs’ undeclared (first use in this function)
7533 | if (create_cb_arglist(qsub_cb.capi,qsub_xa_capi,#maxnofargs#,#nofoptargs#,&qsub_cb.nofargs,&qsub_cb.args_capi,"failed in processing argument list for call-back qsub.")) {
| ^~~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:54: note: each undeclared identifier is reported only once for each function it appears in
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:66: error: stray ‘#’ in program
7533 | if (create_cb_arglist(qsub_cb.capi,qsub_xa_capi,#maxnofargs#,#nofoptargs#,&qsub_cb.nofargs,&qsub_cb.args_capi,"failed in processing argument list for call-back qsub.")) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:77: error: stray ‘#’ in program
7533 | if (create_cb_arglist(qsub_cb.capi,qsub_xa_capi,#maxnofargs#,#nofoptargs#,&qsub_cb.nofargs,&qsub_cb.args_capi,"failed in processing argument list for call-back qsub.")) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:67: error: ‘nofoptargs’ undeclared (first use in this function); did you mean ‘optarg’?
7533 | if (create_cb_arglist(qsub_cb.capi,qsub_xa_capi,#maxnofargs#,#nofoptargs#,&qsub_cb.nofargs,&qsub_cb.args_capi,"failed in processing argument list for call-back qsub.")) {
| ^~~~~~~~~~
| optarg
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:87: error: request for member ‘nofargs’ in something not a structure or union
7533 | if (create_cb_arglist(qsub_cb.capi,qsub_xa_capi,#maxnofargs#,#nofoptargs#,&qsub_cb.nofargs,&qsub_cb.args_capi,"failed in processing argument list for call-back qsub.")) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7533:104: error: request for member ‘args_capi’ in something not a structure or union
7533 | if (create_cb_arglist(qsub_cb.capi,qsub_xa_capi,#maxnofargs#,#nofoptargs#,&qsub_cb.nofargs,&qsub_cb.args_capi,"failed in processing argument list for call-back qsub.")) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7536:23: warning: implicit declaration of function ‘swap_active_qsub’ [-Wimplicit-function-declaration]
7536 | qsub_cb_ptr = swap_active_qsub(qsub_cb_ptr);
| ^~~~~~~~~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7536:21: warning: assignment to ‘int *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
7536 | qsub_cb_ptr = swap_active_qsub(qsub_cb_ptr);
| ^
In file included from /home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/npy_interrupt.h:22,
from /home/user/.local/lib/python3.10/site-packages/numpy/core/include/numpy/arrayobject.h:6:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7554:28: error: request for member ‘jmpbuf’ in something not a structure or union
7554 | if ((setjmp(qsub_cb.jmpbuf))) {
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7583:21: warning: assignment to ‘int *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
7583 | qsub_cb_ptr = swap_active_qsub(qsub_cb_ptr);
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7584:26: error: request for member ‘args_capi’ in something not a structure or union
7584 | Py_DECREF(qsub_cb.args_capi);
| ^
/usr/include/python3.10/object.h:112:41: note: in definition of macro ‘_PyObject_CAST’
112 | #define _PyObject_CAST(op) ((PyObject*)(op))
| ^~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7584:9: note: in expansion of macro ‘Py_DECREF’
7584 | Py_DECREF(qsub_cb.args_capi);
| ^~~~~~~~~
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: In function ‘f2py_setup_numconstants’:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7807:40: warning: assignment to ‘f2py_init_func’ {aka ‘void (*)(int *, long int *, void (*)(char *, long int *), int *)’} from incompatible pointer type ‘void (*)(int *, int *, void (*)(char *, int *), int *)’ [-Wincompatible-pointer-types]
7807 | f2py_numconstants_def[i_f2py++].func = monen;
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7809:40: warning: assignment to ‘f2py_init_func’ {aka ‘void (*)(int *, long int *, void (*)(char *, long int *), int *)’} from incompatible pointer type ‘void (*)(int *, int *, void (*)(char *, int *), int *)’ [-Wincompatible-pointer-types]
7809 | f2py_numconstants_def[i_f2py++].func = bcof;
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7810:40: warning: assignment to ‘f2py_init_func’ {aka ‘void (*)(int *, long int *, void (*)(char *, long int *), int *)’} from incompatible pointer type ‘void (*)(int *, int *, void (*)(char *, int *), int *)’ [-Wincompatible-pointer-types]
7810 | f2py_numconstants_def[i_f2py++].func = fnr;
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7811:40: warning: assignment to ‘f2py_init_func’ {aka ‘void (*)(int *, long int *, void (*)(char *, long int *), int *)’} from incompatible pointer type ‘void (*)(int *, int *, void (*)(char *, int *), int *)’ [-Wincompatible-pointer-types]
7811 | f2py_numconstants_def[i_f2py++].func = vwh_coef;
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7812:40: warning: assignment to ‘f2py_init_func’ {aka ‘void (*)(int *, long int *, void (*)(char *, long int *), int *)’} from incompatible pointer type ‘void (*)(int *, int *, void (*)(char *, int *), int *)’ [-Wincompatible-pointer-types]
7812 | f2py_numconstants_def[i_f2py++].func = vcc_const;
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7813:40: warning: assignment to ‘f2py_init_func’ {aka ‘void (*)(int *, long int *, void (*)(char *, long int *), int *)’} from incompatible pointer type ‘void (*)(int *, int *, void (*)(char *, int *), int *)’ [-Wincompatible-pointer-types]
7813 | f2py_numconstants_def[i_f2py++].func = fnm1_const;
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7814:40: warning: assignment to ‘f2py_init_func’ {aka ‘void (*)(int *, long int *, void (*)(char *, long int *), int *)’} from incompatible pointer type ‘void (*)(int *, int *, void (*)(char *, int *), int *)’ [-Wincompatible-pointer-types]
7814 | f2py_numconstants_def[i_f2py++].func = fn_const;
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7815:40: warning: assignment to ‘f2py_init_func’ {aka ‘void (*)(int *, long int *, void (*)(char *, long int *), int *)’} from incompatible pointer type ‘void (*)(int *, int *, void (*)(char *, int *), int *)’ [-Wincompatible-pointer-types]
7815 | f2py_numconstants_def[i_f2py++].func = fnp1_const;
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:7816:40: warning: assignment to ‘f2py_init_func’ {aka ‘void (*)(int *, long int *, void (*)(char *, long int *), int *)’} from incompatible pointer type ‘void (*)(int *, int *, void (*)(char *, int *), int *)’ [-Wincompatible-pointer-types]
7816 | f2py_numconstants_def[i_f2py++].func = tran_coef;
| ^
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c: At top level:
/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c:248:12: warning: ‘f2py_size’ defined but not used [-Wunused-function]
248 | static int f2py_size(PyArrayObject* var, ...)
| ^~~~~~~~~
error: Command "gcc -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DNPY_DISABLE_OPTIMIZATION=1 -I/tmp/tmp4hscirie/src.linux-x86_64-3.10 -I/home/user/.local/lib/python3.10/site-packages/numpy/core/include -I/usr/include/python3.10 -c /tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.c -o /tmp/tmp4hscirie/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.o -MMD -MF /tmp/tmp4hscirie/tmp/tmp4hscirie/src.linux-x86_64-3.10/mstmmodule.o.d" failed with exit status 1
This leads me to believe the external function qsub
in the recursive subrutine gkintegrate
is the culprit. I am not sure why it tries to give the callback variable qsub_cb
the type qsub_t
(indicated in the log).
I tried to precompile the files like described here, and using the output file for the f2py
command with no avail.
I also tried including a !f2py intent(callback) f
and !f2py intent(callback) qsub
in the qng
and gkintegrate
subroutines, but nothing has changed. It has an effect on a resulting .pyf
file using the -h
switch in f2py
, but the error stays the same.
I also tried to generate the .pyf
file and include the user generated subroutines in there and compile anew like described here, but it didn't help either.
I tested the compilation by just commenting out the gkintegrate
subroutine and it works! I was thinking the recursive attribute of the subroutine is the problem, but a similar topic has made it work here. I am not sure on how the implementation of gkintegrate
differs and what is causing the problem.