0

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'

Complete logs

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

Complete logs

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.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
CryoDrakon
  • 268
  • 1
  • 3
  • 12

0 Answers0