Menu

#735 pytango 8.1.6 FTBFS with gcc5.2

open
nobody
None
PyTango
5
2015-09-13
2015-09-04
No

Hello, It seems that pytango 8.1.6 fail to build with the latest gcc5.2 and libstdc++6 on Debian unstable.

the standard used to build C+++ changed by default to c++11.

I attached the build log

thanks

Frederic

1 Attachments

Discussion

  • Frédéric PICCA

    Hello, here the bug reported by a Debian user and the begining of our investigation, (me and debian-python guyes)

    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=797284

    just for information. This bug make pytango unusable for now on Debian testing and unstable. pytango and tango are marked for auto removal at the end of the month if nothing is done until then.

    Another interesting point is that Ubuntu 15.10 will be released and someone should check that the next Ubuntu tango pytango package are working on this platform (if you are interested indeeed) before this release.

    It is a lot easier to fix a package before the release than after.

    Just to test if it works, you just need to import PyTango. then you will see the missing symbol message ornot

    Have a good day

    Fred

     
  • Emmanuel Taurel

    Emmanuel Taurel - 2015-09-10

    Hi Fred,

    Is PyTango compiled with Tango modified due to gcc 5.2 compatibility (See bug 732)?
    I am not a PyTango expert but it seems to me that the error message is the same (pb with new C++ string ABI)

    Cheers

    Manu

     
  • Frédéric PICCA

    Hello, after dicussing about this on the gcc mailing list,
    https://gcc.gnu.org/ml/gcc-help/2015-09/msg00057.html

    It seems that this is a problem between tango and gcc5.

    I put this in the tango_const.h file and it solved the pytango compilation problem.
    now it would be nice if you could find an official solution :).

    // Ranges type-enum-string conversions

    ifdef _GLIBCXX_USE_CXX11_ABI

    define TANGO_CXX11_ABI __attribute((abi_tag("cxx11")))

    else

    define TANGO_CXX11_ABI

    endif

    template <typename T="">
    struct ranges_type2const
    {
    static CmdArgType enu;
    static TANGO_CXX11_ABI string str;
    };

    template <CmdArgType>
    struct ranges_const2type
    {
    static TANGO_CXX11_ABI string str;
    };

    define RANGES_TYPE2CONST(type,constant) \

        template <> \
        struct ranges_type2const<type> \
        { \
                static CmdArgType enu; \
                TANGO_CXX11_ABI static string str; \
        }; \
        CmdArgType ranges_type2const<type>::enu = constant; \
        TANGO_CXX11_ABI string ranges_type2const<type>::str = #type; \
        template<> \
        struct ranges_const2type<Tango::constant> \
        { \
                typedef type Type; \
                TANGO_CXX11_ABI static string str; \
        }; \
        TANGO_CXX11_ABI string ranges_const2type<Tango::constant>::str = #type;
    
     
  • Frédéric PICCA

    Just for info this addition to tango_const.h is enought to solve the tango FTBFS of #732
    so it is not necessary to move around the declarations.

    I am wondering if the instaciations of these templates should not be done in the tango_const.h staticaly ? In order to be available an visible from downstream projects.

     

Log in to post a comment.