Hi all,

I am trying to install pyindi-client on my Raspberry Pi 3 following this tuto : indilib.org/support/tutorials/166-instal...on-raspberry-pi.html

I have installed Ubuntu Mate 16.04 on a 64 GB SD card, upgraded all its packages, installed indi-full, everything successfully. But at this step :

pip3 install --user --install-option="--prefix=" pyindi-client
The installation raises an error concerning a missing C++ 2011 compiler.
/usr/lib/python3/dist-packages/pip/commands/install.py:198: UserWarning: Disabling all use of wheels due to the use of --build-options / --global-options / --install-options.
  cmdoptions.check_install_build_global(options)
Collecting pyindi-client
  Downloading pyindi-client-0.2.1.tar.gz
Skipping bdist_wheel for pyindi-client, due to binaries being disabled for it.
Installing collected packages: pyindi-client
  Running setup.py install for pyindi-client ... error
    Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-bbgycfcq/pyindi-client/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-59uuj_nv-record/install-record.txt --single-version-externally-managed --compile --prefix= --user --prefix=:
    running install
    running build_ext
    building '_PyIndi' extension
    swigging indiclientpython.i to indiclientpython_wrap.cpp
    swig -python -v -Wall -c++ -threads -I/usr/include -I/usr/include/libindi -o indiclientpython_wrap.cpp indiclientpython.i
    Language subdirectory: python
    Search paths:
       ./
       /usr/include/
       /usr/include/libindi/
       ./swig_lib/python/
       /usr/share/swig3.0/python/
       ./swig_lib/
       /usr/share/swig3.0/
    Preprocessing...
    Starting language-specific parse...
    /usr/include/libindi/baseclient.h:33: Warning 322: Redundant redeclaration of 'MAXRBUF',
    /usr/include/libindi/indibase.h:8: Warning 322: previous declaration of 'MAXRBUF'.
    /usr/include/libindi/baseclient.h:229: Warning 325: Nested struct not currently supported (BLOBMode ignored)
    /usr/include/libindi/basedevice.h:30: Warning 322: Redundant redeclaration of 'MAXRBUF',
    /usr/include/libindi/indibase.h:8: Warning 322: previous declaration of 'MAXRBUF'.
    /usr/include/libindi/baseclient.h:55: Warning 403: Class 'INDI::BaseClient' might be abstract, no constructors generated,
    /usr/include/libindi/indibase.h:78: Warning 403: Method INDI::BaseMediator::newDevice(INDI::BaseDevice *) might not be implemented.
    Processing types...
    C++ analysis...
    Processing nested classes...
    Generating wrappers...
    creating build
    creating build/temp.linux-armv7l-3.5
    arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include -I/usr/include/libindi -I/usr/include/python3.5m -c indiclientpython_wrap.cpp -o build/temp.linux-armv7l-3.5/indiclientpython_wrap.o
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    In file included from /usr/include/c++/5/thread:35:0,
                     from /usr/include/libindi/baseclient.h:27,
                     from indiclientpython_wrap.cpp:3609:
    /usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
     #error This file requires compiler and library support \
      ^
    In file included from indiclientpython_wrap.cpp:3609:0:
    /usr/include/libindi/baseclient.h:245:5: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
         std::thread *listen_thread=nullptr;
         ^
    In file included from /usr/include/libindi/basedevice.h:23:0,
                     from indiclientpython_wrap.cpp:3610:
    /usr/include/libindi/indistandardproperty.h:65:5: warning: identifier ‘constexpr’ is a keyword in C++11 [-Wc++0x-compat]
         static constexpr const char *CONNECTION = "CONNECTION";
         ^
    In file included from indiclientpython_wrap.cpp:3609:0:
    /usr/include/libindi/baseclient.h:245:10: error: ‘thread’ in namespace ‘std’ does not name a type
         std::thread *listen_thread=nullptr;
              ^
    In file included from /usr/include/libindi/basedevice.h:23:0,
                     from indiclientpython_wrap.cpp:3610:
    /usr/include/libindi/indistandardproperty.h:65:12: error: ‘constexpr’ does not name a type
         static constexpr const char *CONNECTION = "CONNECTION";
                ^
    /usr/include/libindi/indistandardproperty.h:65:12: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
    /usr/include/libindi/indistandardproperty.h:72:7: error: expected nested-name-specifier before ‘SP’
     using SP = StandardProperty;
           ^
    error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1
    
    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-bbgycfcq/pyindi-client/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-59uuj_nv-record/install-record.txt --single-version-externally-managed --compile --prefix= --user --prefix=" failed with error code 1 in /tmp/pip-build-bbgycfcq/pyindi-client/
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

I have googled the error but my version of GCC and G++ is the 5.4 which natively supports C++ 2011 compilers and since I don't have access to the compilation step, I don't know how to add by default the -std=c++11 or -std=gnu++11 compiler options.

Many thanks for your help !

Read More...