Boost in xeus-cling jupyter kernel

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Boost in xeus-cling jupyter kernel

Boost - Users mailing list
Hi everyone,

As my first post in this mailing list I would like to ask, has anyone tried using boost in a xeus-cling jupyter kernel? Or just cling?

My plan is to use odeint in the jupyter notebook for some simulations. However I had issues when I tried to run one of the odeint examples. I originally posted my issue on stackoverlfow but didn;t get any feedback. So I'm going to mostly copy my original question in this email.


I'm running Pop!_OS (ubuntu derivative) and apt installed boost (libboost-all-dev) from the default repositories. I know it has been installed properly since I can compile and run the simple boost odeint example with GCC.

However when I tried to run the same example inside a jupyter notebook using the zeus-cling kernel I got an error while including the odeint header. I can recreate the error while executing this code:

#pragma cling add_include_path("/usr/include")
#include <boost/numeric/odeint.hpp>

The error message I get is:

In file included from input_line_8:1:
In file included from /usr/include/boost/numeric/odeint.hpp:22:
In file included from /usr/include/boost/numeric/odeint/config.hpp:44:
In file included from /usr/include/boost/config.hpp:48:
In file included from /usr/include/boost/config/stdlib/libstdcpp3.hpp:78:
/usr/include/unistd.h:756:28: error: expected function body after function declarator
extern __pid_t fork (void) __THROWNL;
                           ^
/usr/include/unistd.h:869:11: fatal error: 'bits/getopt_posix.h' file not found
# include <bits/getopt_posix.h>
          ^~~~~~~~~~~~~~~~~~~~~
Interpreter Error: 

From what I understand bits/getopt_posix.h is a GCC only header, thus I think the problem might be because the boost headers are configuring themselves as if they are compiling under GCC instead of cling/clang.

My solution so far has been to submodule the boost super project into my repository and add all the include paths necessary to get odeint and it's dependencies to compile. This is fine since odeint is a header only library anyways. But I'm pretty sure there is a better solution to this problem.

Thanks in advance and hope to hear from someone back soon.


Cheers,
Aaron M. de Windt



_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
Reply | Threaded
Open this post in threaded view
|

Re: Boost in xeus-cling jupyter kernel

Boost - Users mailing list
On 6/12/2020 12:11 PM, A. de Windt via Boost-users wrote:

> Hi everyone,
>
> As my first post in this mailing list I would like to ask, has anyone
> tried using boost in a xeus-cling jupyter kernel? Or just cling?
>
> My plan is to use odeint in the jupyter notebook for some simulations.
> However I had issues when I tried to run one of the odeint examples. I
> originally posted my issue on stackoverlfow but didn;t get any feedback.
> So I'm going to mostly copy my original question in this email.
>
> https://stackoverflow.com/questions/61205040/how-do-i-use-boost-with-the-xeus-cling-jupyter-kernel
>
> I'm running Pop!_OS (ubuntu derivative) and apt installed boost
> (libboost-all-dev) from the default repositories. I know it has been
> installed properly since I can compile and run the simple boost odeint
> example with GCC.
>
> However when I tried to run the same example inside a jupyter notebook
> using the zeus-cling kernel I got an error while including the odeint
> header. I can recreate the error while executing this code:
>
> |#pragmacling
> add_include_path("/usr/include")#include<boost/numeric/odeint.hpp>|
>
> The error message I get is:
>
> |In file included from input_line_8:1: In file included from
> /usr/include/boost/numeric/odeint.hpp:22: In file included from
> /usr/include/boost/numeric/odeint/config.hpp:44: In file included from
> /usr/include/boost/config.hpp:48: In file included from
> /usr/include/boost/config/stdlib/libstdcpp3.hpp:78:
> /usr/include/unistd.h:756:28: error: expected function body after
> function declarator extern __pid_t fork (void) __THROWNL; ^
> /usr/include/unistd.h:869:11: fatal error: 'bits/getopt_posix.h' file
> not found # include <bits/getopt_posix.h> ^~~~~~~~~~~~~~~~~~~~~
> Interpreter Error: |
>
>  From what I understand |bits/getopt_posix.h| is a GCC only header, thus
> I think the problem might be because the boost headers are configuring
> themselves as if they are compiling under GCC instead of cling/clang.
>
> My solution so far has been to submodule the boost super project into my
> repository and add all the include paths necessary to get odeint and
> it's dependencies to compile. This is fine since odeint is a header only
> library anyways. But I'm pretty sure there is a better solution to this
> problem.

You could look at the Boost 'bcp' tool to extract odeint and whatever it
depends upon for your use. I have no idea whether this solves your
problem, but it is just a suggestion.

_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
Reply | Threaded
Open this post in threaded view
|

Re: Boost in xeus-cling jupyter kernel

Boost - Users mailing list
In reply to this post by Boost - Users mailing list

Ηi there, 

I ve been using boost (geometry) with xeus-cling kernel without any issues, so far. I install boost from conda forge:
 
conda install boost -c conda-forge
 
I tried to include odeint.hpp without any issues on my cling environment:

 
BW 
G


On Fri, 12 Jun 2020, 19:46 A. de Windt via Boost-users, <[hidden email]> wrote:
Hi everyone,

As my first post in this mailing list I would like to ask, has anyone tried using boost in a xeus-cling jupyter kernel? Or just cling?

My plan is to use odeint in the jupyter notebook for some simulations. However I had issues when I tried to run one of the odeint examples. I originally posted my issue on stackoverlfow but didn;t get any feedback. So I'm going to mostly copy my original question in this email.


I'm running Pop!_OS (ubuntu derivative) and apt installed boost (libboost-all-dev) from the default repositories. I know it has been installed properly since I can compile and run the simple boost odeint example with GCC.

However when I tried to run the same example inside a jupyter notebook using the zeus-cling kernel I got an error while including the odeint header. I can recreate the error while executing this code:

#pragma cling add_include_path("/usr/include")
#include <boost/numeric/odeint.hpp>

The error message I get is:

In file included from input_line_8:1:
In file included from /usr/include/boost/numeric/odeint.hpp:22:
In file included from /usr/include/boost/numeric/odeint/config.hpp:44:
In file included from /usr/include/boost/config.hpp:48:
In file included from /usr/include/boost/config/stdlib/libstdcpp3.hpp:78:
/usr/include/unistd.h:756:28: error: expected function body after function declarator
extern __pid_t fork (void) __THROWNL;
                           ^
/usr/include/unistd.h:869:11: fatal error: 'bits/getopt_posix.h' file not found
# include <bits/getopt_posix.h>
          ^~~~~~~~~~~~~~~~~~~~~
Interpreter Error: 

From what I understand bits/getopt_posix.h is a GCC only header, thus I think the problem might be because the boost headers are configuring themselves as if they are compiling under GCC instead of cling/clang.

My solution so far has been to submodule the boost super project into my repository and add all the include paths necessary to get odeint and it's dependencies to compile. This is fine since odeint is a header only library anyways. But I'm pretty sure there is a better solution to this problem.

Thanks in advance and hope to hear from someone back soon.


Cheers,
Aaron M. de Windt


_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users

_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users