nest / nestml

A domain specific language for neuron and synapse models in spiking neural network simulation
GNU General Public License v2.0
46 stars 45 forks source link

make fails for Izhikevich tutorial #693

Open ErbB4 opened 2 years ago

ErbB4 commented 2 years ago

Hi there,

I am trying to install NESTML to implement my own model. I managed to install it but had difficulty running your tutorial code. In detail, I am testing using the tutorials and ran into some bugs when the code was trying to make the c++ code.

Bug

Following the instructions in the documentation, the Izhikevich tutorial produces errors when make.

A few things:

Error logs ``` [ 16%] Building CXX object CMakeFiles/nestmlmodule_lib.dir/nestmlmodule.cpp.o In file included from /tmp/nestml-component/nestmlmodule.cpp:47: /tmp/nestml-component/izhikevich_tutorial.h:87:1: error: expected class-name before '{' token 87 | { | ^ /tmp/nestml-component/izhikevich_tutorial.h:113:21: error: type 'nest::Node' is not a base type for type 'izhikevich_tutorial' 113 | using nest::Node::handles_test_event; | ^~~~~~~~~~~~~~~~~~ /tmp/nestml-component/izhikevich_tutorial.h:114:21: error: type 'nest::Node' is not a base type for type 'izhikevich_tutorial' 114 | using nest::Node::handle; | ^~~~~~ /tmp/nestml-component/izhikevich_tutorial.h: In member function 'nest::port izhikevich_tutorial::send_test_event(nest::Node&, nest::rport, nest::synindex, bool)': /tmp/nestml-component/izhikevich_tutorial.h:424:16: error: cannot convert 'izhikevich_tutorial' to 'nest::Node&' 424 | e.set_sender(*this); | ^~~~~ | | | izhikevich_tutorial In file included from /home/hanlu/anaconda3/envs/wnestml/include/nest/connector_model.h:34, from /home/hanlu/anaconda3/envs/wnestml/include/nest/common_synapse_properties.h:27, from /home/hanlu/anaconda3/envs/wnestml/include/nest/connector_base.h:39, from /home/hanlu/anaconda3/envs/wnestml/include/nest/connection_manager.h:37, from /home/hanlu/anaconda3/envs/wnestml/include/nest/connection_manager_impl.h:26, from /tmp/nestml-component/nestmlmodule.cpp:26: /home/hanlu/anaconda3/envs/wnestml/include/nest/event.h:1291:26: note: initializing argument 1 of 'void nest::Event::set_sender(nest::Node&)' 1291 | Event::set_sender( Node& s ) | ~~~~~~^ In file included from /tmp/nestml-component/nestmlmodule.cpp:47: /tmp/nestml-component/izhikevich_tutorial.h: In member function 'nest::port izhikevich_tutorial::handles_test_event(nest::SpikeEvent&, nest::port)': /tmp/nestml-component/izhikevich_tutorial.h:436:54: error: 'get_name' was not declared in this scope; did you mean 'get_a'? 436 | throw nest::UnknownReceptorType(receptor_type, get_name()); | ^~~~~~~~ | get_a /tmp/nestml-component/izhikevich_tutorial.h: In member function 'nest::port izhikevich_tutorial::handles_test_event(nest::CurrentEvent&, nest::port)': /tmp/nestml-component/izhikevich_tutorial.h:449:52: error: 'get_name' was not declared in this scope; did you mean 'get_a'? 449 | throw nest::UnknownReceptorType(receptor_type, get_name()); | ^~~~~~~~ | get_a /tmp/nestml-component/izhikevich_tutorial.h: In member function 'nest::port izhikevich_tutorial::handles_test_event(nest::DataLoggingRequest&, nest::port)': /tmp/nestml-component/izhikevich_tutorial.h:463:52: error: 'get_name' was not declared in this scope; did you mean 'get_a'? 463 | throw nest::UnknownReceptorType(receptor_type, get_name()); | ^~~~~~~~ | get_a /tmp/nestml-component/izhikevich_tutorial.h: In member function 'void izhikevich_tutorial::get_status(DictionaryDatum&) const': /tmp/nestml-component/izhikevich_tutorial.h:481:3: error: 'ArchivingNode' has not been declared 481 | ArchivingNode::get_status( __d ); | ^~~~~~~~~~~~~ /tmp/nestml-component/izhikevich_tutorial.h: In member function 'void izhikevich_tutorial::set_status(const DictionaryDatum&)': /tmp/nestml-component/izhikevich_tutorial.h:512:3: error: 'ArchivingNode' has not been declared 512 | ArchivingNode::set_status(__d); | ^~~~~~~~~~~~~ In file included from /home/hanlu/anaconda3/envs/wnestml/include/nest/model_manager.h:31, from /home/hanlu/anaconda3/envs/wnestml/include/nest/kernel_manager.h:31, from /home/hanlu/anaconda3/envs/wnestml/include/nest/connection_manager_impl.h:35, from /tmp/nestml-component/nestmlmodule.cpp:26: /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'bool nest::GenericModel::has_proxies() [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:171:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:173:17: error: 'class izhikevich_tutorial' has no member named 'has_proxies' 173 | return proto_.has_proxies(); | ~~~~~~~^~~~~~~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'bool nest::GenericModel::one_node_per_process() [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:178:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:180:17: error: 'class izhikevich_tutorial' has no member named 'one_node_per_process' 180 | return proto_.one_node_per_process(); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'bool nest::GenericModel::is_off_grid() [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:185:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:187:17: error: 'class izhikevich_tutorial' has no member named 'is_off_grid' 187 | return proto_.is_off_grid(); | ~~~~~~~^~~~~~~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel::sends_secondary_event(nest::GapJunctionEvent&) [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:199:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:201:17: error: 'class izhikevich_tutorial' has no member named 'sends_secondary_event' 201 | return proto_.sends_secondary_event( ge ); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:201:43: error: return-statement with a value, in function returning 'void' [-fpermissive] 201 | return proto_.sends_secondary_event( ge ); | ^ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel::sends_secondary_event(nest::InstantaneousRateConnectionEvent&) [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:206:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:208:17: error: 'class izhikevich_tutorial' has no member named 'sends_secondary_event' 208 | return proto_.sends_secondary_event( re ); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:208:43: error: return-statement with a value, in function returning 'void' [-fpermissive] 208 | return proto_.sends_secondary_event( re ); | ^ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel::sends_secondary_event(nest::DiffusionConnectionEvent&) [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:213:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:215:17: error: 'class izhikevich_tutorial' has no member named 'sends_secondary_event' 215 | return proto_.sends_secondary_event( de ); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:215:43: error: return-statement with a value, in function returning 'void' [-fpermissive] 215 | return proto_.sends_secondary_event( de ); | ^ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel::sends_secondary_event(nest::DelayedRateConnectionEvent&) [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:220:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:222:17: error: 'class izhikevich_tutorial' has no member named 'sends_secondary_event' 222 | return proto_.sends_secondary_event( re ); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:222:43: error: return-statement with a value, in function returning 'void' [-fpermissive] 222 | return proto_.sends_secondary_event( re ); | ^ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'nest::SignalType nest::GenericModel::sends_signal() const [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:227:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:229:17: error: 'const class izhikevich_tutorial' has no member named 'sends_signal' 229 | return proto_.sends_signal(); | ~~~~~~~^~~~~~~~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'const nest::Node& nest::GenericModel::get_prototype() const [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:257:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:259:10: error: invalid initialization of reference of type 'const nest::Node&' from expression of type 'const izhikevich_tutorial' 259 | return proto_; | ^~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel::set_model_id(int) [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:264:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:266:10: error: 'class izhikevich_tutorial' has no member named 'set_model_id' 266 | proto_.set_model_id( i ); | ~~~~~~~^~~~~~~~~~~~ /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'DictionaryDatum nest::GenericModel::get_status_() [with ElementT = izhikevich_tutorial; DictionaryDatum = lockPTRDatum]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:241:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:243:30: error: 'class izhikevich_tutorial' has no member named 'get_status_base'; did you mean 'get_status'? 243 | DictionaryDatum d = proto_.get_status_base(); | ~~~~~~~^~~~~~~~~~~~~~~ | get_status /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'nest::Node* nest::GenericModel::allocate_(void*) [with ElementT = izhikevich_tutorial]': /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:156:1: required from here /home/hanlu/anaconda3/envs/wnestml/include/nest/genericmodel.h:158:9: error: cannot convert 'izhikevich_tutorial*' to 'nest::Node*' in initialization 158 | Node* n = new ( adr ) ElementT( proto_ ); | ^ make[2]: *** [CMakeFiles/nestmlmodule_lib.dir/build.make:63: CMakeFiles/nestmlmodule_lib.dir/nestmlmodule.cpp.o] Error 1 make[2]: Leaving directory '/tmp/nestml-component' make[1]: *** [CMakeFiles/Makefile2:110: CMakeFiles/nestmlmodule_lib.dir/all] Error 2 make[1]: Leaving directory '/tmp/nestml-component' make: *** [Makefile:152: all] Error 2 PyNestML: Something went wrong in 'make all', see error above! ```

To Reproduce

Steps to reproduce the behavior: Following everything in this tutorial: https://nestml.readthedocs.io/en/latest/tutorials/izhikevich/nestml_izhikevich_tutorial.html

Desktop/Environment (please complete the following information):

Look forward to the updates! Kind regards, Han

pnbabu commented 2 years ago

Hi @ErbB4. Thanks for reaching out to us. I believe you have installed NESTML through pip. If so, the version of NESTML installed (4.0) is not compatible with NEST 2.20.2. Is there a specific requirement for you to use this NEST version? If not, could I ask you to use the latest NEST version (3.1) and try to compile it again?

conda install -c conda-forge nest-simulator=3.1

If you do want to use NEST 2.20.2, we support that in NESTML now as mentioned here but unfortunately, it is not yet released as a pip package. For this to work, you would have to install NESTML from Github as mentioned here. Please feel free to reach out to us if you face any issues.

SalvoUnict commented 2 years ago

Hi pnbabu,

I have the same problems of ErbB4. When I use the command "conda install -c conda-forge nest-simulator=3.1", I have:

"PackagesNotFoundError: The following packages are not available from current channels:

This is due to the fact that the last version for Ubuntu is the 2.20.2 (I saw the version using "conda search -c conda-forge nest-simulator" -> https://nest-simulator.readthedocs.io/en/latest/installation/).

How can I solve the problem? How can follow the tutorial in "https://nestml.readthedocs.io/en/latest/installation.html" correctly?

Kind regards, Salvo

steroal commented 2 years ago

Hi pnbabu, I have the same problems of Salvo,there is no nest-simulator=3.1 in -c conda-forge ,How can I solve the problem? Look forward to the updates! Kind regards Lst

steroal commented 2 years ago

i see the information of https://anaconda.org/conda-forge/nest-simulator/files. there is v3.1 for macos and only 2.20 for linux. that's too regretful.

SalvoUnict commented 2 years ago

Can anyone help us?

pnbabu commented 2 years ago

@SalvoUnict @steroal thanks for reporting this. Unfortunately, there are some issues with the conda package for Linux for the latest NEST version. For now, could I ask you to proceed with the installation separately by downloading the latest NEST release from Github? You could download the tarball from here and then proceed with the installation as explained here. Once NEST is successfully installed, you could continue with the steps for NESTML as mentioned here.

Please feel free to reach out to us if you have any more questions or face any issues.

jougs commented 2 years ago

@steffengraber: can you please fill us in on the status of the conda package for the latest NEST version? Thanks!

steffengraber commented 2 years ago

The conda build system creates incorrect packages that cannot be executed. Also a longer debugging session with the NEST installation group did not lead to a satisfying result.

The error when executing the buggy package is always:

/sli/scanner.cc:581: bool Scanner::operator()(Token&): Assertion `in->good()' failed

master has also been affected by this problem so far. It is still unclear where the error is.

Locally, within your own conda installation, you can install NEST from sources without problems.

steroal commented 2 years ago

Locally, within your own conda installation, you can install NEST from sources without problems.

i will have a try . Thank you for your very kind help

steroal commented 2 years ago

Hi pnbabu,

I have the same problems of ErbB4. When I use the command "conda install -c conda-forge nest-simulator=3.1", I have:

"PackagesNotFoundError: The following packages are not available from current channels:

  • nest-simulator=3.1 "

This is due to the fact that the last version for Ubuntu is the 2.20.2 (I saw the version using "conda search -c conda-forge nest-simulator" -> https://nest-simulator.readthedocs.io/en/latest/installation/).

How can I solve the problem? How can follow the tutorial in "https://nestml.readthedocs.io/en/latest/installation.html" correctly?

Kind regards, Salvo

@SalvoUnict could i get your email? i think we can share our experience and learn together because we have the same subject。if you cause,send message to my email 956493741@qq.com.Also i am a graduate in China。 have a good day, guys.

SalvoUnict commented 2 years ago

I tried to install Nest 3.1 following your guide. As you can see below, the Nest 3.1 is installed.

(base) salvo@salvo-Aspire-GX-781:~/Scrivania$ nest

          -- N E S T --

Copyright (C) 2004 The NEST Initiative

Version: nest-3.1 Built: Nov 29 2021 22:56:33

This program is provided AS IS and comes with NO WARRANTY. See the file LICENSE for details.

Problems or suggestions? Visit https://www.nest-simulator.org

Type 'help' to get more information. Type 'quit' or press CTRL-D to quit.

SLI ]

When I try to install NESTML following the guide that you linked, I had the same problem.

In particular, beyond the problem reported above, when I use the command: python setup.py test

I have, as before:

> ERROR: test_docstring_failure (tests.docstring_comment_test.DocstringCommentTest)
>  ------------------------------------------------------------------------------------
> Ran 145 tests in 59.062s
> 
> FAILED (errors=1)
> Test failed: <unittest.runner.TextTestResult run=145 errors=1 failures=0>
> error: Test failed: <unittest.runner.TextTestResult run=145 errors=1 failures=0>
> 

Concluding, the original problem is still here, as you can see:

[  0%] Built target generate_help
Scanning dependencies of target nestmlmodule_lib
[ 16%] Building CXX object CMakeFiles/nestmlmodule_lib.dir/nestmlmodule.o
In file included from /tmp/nestml-component/nestmlmodule.cpp:47:
/tmp/nestml-component/izhikevich_tutorial.h:87:1: error: expected class-name before '{' token
   87 | {
      | ^
/tmp/nestml-component/izhikevich_tutorial.h:113:21: error: type 'nest::Node' is not a base type for type 'izhikevich_tutorial'
  113 |   using nest::Node::handles_test_event;
      |                     ^~~~~~~~~~~~~~~~~~
/tmp/nestml-component/izhikevich_tutorial.h:114:21: error: type 'nest::Node' is not a base type for type 'izhikevich_tutorial'
  114 |   using nest::Node::handle;
      |                     ^~~~~~
/tmp/nestml-component/izhikevich_tutorial.h: In member function 'nest::port izhikevich_tutorial::send_test_event(nest::Node&, nest::rport, nest::synindex, bool)':
/tmp/nestml-component/izhikevich_tutorial.h:430:16: error: cannot convert 'izhikevich_tutorial' to 'nest::Node&'
  430 |   e.set_sender(*this);
      |                ^~~~~
      |                |
      |                izhikevich_tutorial
In file included from /home/salvo/anaconda3/envs/wnestml/include/nest/connector_model.h:34,
                 from /home/salvo/anaconda3/envs/wnestml/include/nest/common_synapse_properties.h:27,
                 from /home/salvo/anaconda3/envs/wnestml/include/nest/connector_base.h:39,
                 from /home/salvo/anaconda3/envs/wnestml/include/nest/connection_manager.h:37,
                 from /home/salvo/anaconda3/envs/wnestml/include/nest/connection_manager_impl.h:26,
                 from /tmp/nestml-component/nestmlmodule.cpp:26:
/home/salvo/anaconda3/envs/wnestml/include/nest/event.h:1291:26: note:   initializing argument 1 of 'void nest::Event::set_sender(nest::Node&)'
 1291 | Event::set_sender( Node& s )
      |                    ~~~~~~^
In file included from /tmp/nestml-component/nestmlmodule.cpp:47:
/tmp/nestml-component/izhikevich_tutorial.h: In member function 'nest::port izhikevich_tutorial::handles_test_event(nest::SpikeEvent&, nest::port)':
/tmp/nestml-component/izhikevich_tutorial.h:442:54: error: 'get_name' was not declared in this scope; did you mean 'get_a'?
  442 |       throw nest::UnknownReceptorType(receptor_type, get_name());
      |                                                      ^~~~~~~~
      |                                                      get_a
/tmp/nestml-component/izhikevich_tutorial.h: In member function 'nest::port izhikevich_tutorial::handles_test_event(nest::CurrentEvent&, nest::port)':
/tmp/nestml-component/izhikevich_tutorial.h:455:52: error: 'get_name' was not declared in this scope; did you mean 'get_a'?
  455 |     throw nest::UnknownReceptorType(receptor_type, get_name());
      |                                                    ^~~~~~~~
      |                                                    get_a
/tmp/nestml-component/izhikevich_tutorial.h: In member function 'nest::port izhikevich_tutorial::handles_test_event(nest::DataLoggingRequest&, nest::port)':
/tmp/nestml-component/izhikevich_tutorial.h:469:52: error: 'get_name' was not declared in this scope; did you mean 'get_a'?
  469 |     throw nest::UnknownReceptorType(receptor_type, get_name());
      |                                                    ^~~~~~~~
      |                                                    get_a
/tmp/nestml-component/izhikevich_tutorial.h: In member function 'void izhikevich_tutorial::get_status(DictionaryDatum&) const':
/tmp/nestml-component/izhikevich_tutorial.h:487:3: error: 'ArchivingNode' has not been declared
  487 |   ArchivingNode::get_status( __d );
      |   ^~~~~~~~~~~~~
/tmp/nestml-component/izhikevich_tutorial.h: In member function 'void izhikevich_tutorial::set_status(const DictionaryDatum&)':
/tmp/nestml-component/izhikevich_tutorial.h:518:3: error: 'ArchivingNode' has not been declared
  518 |   ArchivingNode::set_status(__d);
      |   ^~~~~~~~~~~~~
In file included from /home/salvo/anaconda3/envs/wnestml/include/nest/model_manager.h:31,
                 from /home/salvo/anaconda3/envs/wnestml/include/nest/kernel_manager.h:31,
                 from /home/salvo/anaconda3/envs/wnestml/include/nest/connection_manager_impl.h:35,
                 from /tmp/nestml-component/nestmlmodule.cpp:26:
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'bool nest::GenericModel<ElementT>::has_proxies() [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:171:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:173:17: error: 'class izhikevich_tutorial' has no member named 'has_proxies'
  173 |   return proto_.has_proxies();
      |          ~~~~~~~^~~~~~~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'bool nest::GenericModel<ElementT>::one_node_per_process() [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:178:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:180:17: error: 'class izhikevich_tutorial' has no member named 'one_node_per_process'
  180 |   return proto_.one_node_per_process();
      |          ~~~~~~~^~~~~~~~~~~~~~~~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'bool nest::GenericModel<ElementT>::is_off_grid() [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:185:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:187:17: error: 'class izhikevich_tutorial' has no member named 'is_off_grid'
  187 |   return proto_.is_off_grid();
      |          ~~~~~~~^~~~~~~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel<ElementT>::sends_secondary_event(nest::GapJunctionEvent&) [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:199:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:201:17: error: 'class izhikevich_tutorial' has no member named 'sends_secondary_event'
  201 |   return proto_.sends_secondary_event( ge );
      |          ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:201:43: error: return-statement with a value, in function returning 'void' [-fpermissive]
  201 |   return proto_.sends_secondary_event( ge );
      |                                           ^
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel<ElementT>::sends_secondary_event(nest::InstantaneousRateConnectionEvent&) [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:206:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:208:17: error: 'class izhikevich_tutorial' has no member named 'sends_secondary_event'
  208 |   return proto_.sends_secondary_event( re );
      |          ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:208:43: error: return-statement with a value, in function returning 'void' [-fpermissive]
  208 |   return proto_.sends_secondary_event( re );
      |                                           ^
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel<ElementT>::sends_secondary_event(nest::DiffusionConnectionEvent&) [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:213:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:215:17: error: 'class izhikevich_tutorial' has no member named 'sends_secondary_event'
  215 |   return proto_.sends_secondary_event( de );
      |          ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:215:43: error: return-statement with a value, in function returning 'void' [-fpermissive]
  215 |   return proto_.sends_secondary_event( de );
      |                                           ^
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel<ElementT>::sends_secondary_event(nest::DelayedRateConnectionEvent&) [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:220:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:222:17: error: 'class izhikevich_tutorial' has no member named 'sends_secondary_event'
  222 |   return proto_.sends_secondary_event( re );
      |          ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:222:43: error: return-statement with a value, in function returning 'void' [-fpermissive]
  222 |   return proto_.sends_secondary_event( re );
      |                                           ^
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'nest::SignalType nest::GenericModel<ElementT>::sends_signal() const [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:227:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:229:17: error: 'const class izhikevich_tutorial' has no member named 'sends_signal'
  229 |   return proto_.sends_signal();
      |          ~~~~~~~^~~~~~~~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'const nest::Node& nest::GenericModel<ElementT>::get_prototype() const [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:257:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:259:10: error: invalid initialization of reference of type 'const nest::Node&' from expression of type 'const izhikevich_tutorial'
  259 |   return proto_;
      |          ^~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'void nest::GenericModel<ElementT>::set_model_id(int) [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:264:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:266:10: error: 'class izhikevich_tutorial' has no member named 'set_model_id'
  266 |   proto_.set_model_id( i );
      |   ~~~~~~~^~~~~~~~~~~~
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'DictionaryDatum nest::GenericModel<ElementT>::get_status_() [with ElementT = izhikevich_tutorial; DictionaryDatum = lockPTRDatum<Dictionary, (& SLIInterpreter::Dictionarytype)>]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:241:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:243:30: error: 'class izhikevich_tutorial' has no member named 'get_status_base'; did you mean 'get_status'?
  243 |   DictionaryDatum d = proto_.get_status_base();
      |                       ~~~~~~~^~~~~~~~~~~~~~~
      |                       get_status
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h: In instantiation of 'nest::Node* nest::GenericModel<ElementT>::allocate_(void*) [with ElementT = izhikevich_tutorial]':
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:156:1:   required from here
/home/salvo/anaconda3/envs/wnestml/include/nest/genericmodel.h:158:9: error: cannot convert 'izhikevich_tutorial*' to 'nest::Node*' in initialization
  158 |   Node* n = new ( adr ) ElementT( proto_ );
      |         ^
make[2]: *** [CMakeFiles/nestmlmodule_lib.dir/build.make:82: CMakeFiles/nestmlmodule_lib.dir/nestmlmodule.o] Errore 1
make[1]: *** [CMakeFiles/Makefile2:127: CMakeFiles/nestmlmodule_lib.dir/all] Errore 2
make: *** [Makefile:171: all] Errore 2
---------------------------------------------------------------------------
CalledProcessError                        Traceback (most recent call last)
~/nestml/pynestml/utils/model_installer.py in install_nest(target_path, nest_path)
     72     try:
---> 73         subprocess.check_call(make_all_cmd, stderr=subprocess.STDOUT, shell=shell,
     74                               cwd=str(os.path.join(target_path)))

~/anaconda3/envs/wnestml/lib/python3.9/subprocess.py in check_call(*popenargs, **kwargs)
    372             cmd = popenargs[0]
--> 373         raise CalledProcessError(retcode, cmd)
    374     return 0

CalledProcessError: Command '['make', 'all']' returned non-zero exit status 2.

During handling of the above exception, another exception occurred:

GeneratedCodeBuildException               Traceback (most recent call last)
<ipython-input-1-d07e65574971> in <module>
      3         target_path="/tmp/nestml-component",
      4         logging_level="INFO")
----> 5 install_nest("/tmp/nestml-component", "/home/salvo/anaconda3/envs/wnestml/")

~/nestml/pynestml/frontend/pynestml_frontend.py in install_nest(target_path, nest_path)
    123         If any kind of failure occurs during cmake configuration, build, or install.
    124     '''
--> 125     nest_installer(target_path, nest_path)
    126 
    127 

~/nestml/pynestml/utils/model_installer.py in install_nest(target_path, nest_path)
     74                               cwd=str(os.path.join(target_path)))
     75     except subprocess.CalledProcessError as e:
---> 76         raise GeneratedCodeBuildException('Error occurred during \'make all\'! More detailed error messages can be found in stdout.')
     77 
     78     # finally execute make install

GeneratedCodeBuildException: Error occurred during 'make all'! More detailed error messages can be found in stdout.

In [2]: 
pnbabu commented 2 years ago

@SalvoUnict you can safely ignore the DocstringCommentTest failure as it is a negative test expected to fail with an exception.

Coming to the compilation error, it looks like CMake is still using NEST 2.20. Could you also share the log of your CMake configuration to check the NEST path being used? You can find this just before the compilation starts with the text Configuration Summary.