Re: [HTCondor-devel] HTCondor Python Bindings: propose to implement via pybind11 instead of Boost?


Date: Thu, 8 Nov 2018 22:24:23 +0000
From: Jason Patton <jpatton@xxxxxxxxxxx>
Subject: Re: [HTCondor-devel] HTCondor Python Bindings: propose to implement via pybind11 instead of Boost?
Good news, my bellyaching about C++11 support in the manylinux1 Docker image may have been premature. The image uses gcc 4.8.2 via the devtoolset-2 software collection (which was the latest release Red Hat made available before stopping RHEL 5 support). As a quick test, I spit out the value of the __cplusplus macro under the various C++ standard compile options:

c++ -std=c++98 -> __cplusplus:
199711
c++ -std=c++03 -> __cplusplus:
199711
c++ -std=c++11 -> __cplusplus:
201103
c++ -std=c++0x -> __cplusplus:
201103
c++ -std=c++14 -> __cplusplus:
c++: error: unrecognized command line option â-std=c++14â
c++ -std=c++1y -> __cplusplus:
201103
c++ -std=c++17 -> __cplusplus:
c++: error: unrecognized command line option â-std=c++17â
c++ -std=c++1z -> __cplusplus:
c++: error: unrecognized command line option â-std=c++1zâ

Jason

On Tue, Apr 24, 2018 at 3:08 PM Jason Patton <jpatton@xxxxxxxxxxx> wrote:
I was going to raise a bit of an objection for packaging wheels for PyPI, *but* I just did some searching around to double-check and there is a method for using a newer compiler and building C++11 (and even C++14) code in a way that the wheels are still "manylinux1" compatible, so I will look into that. Right now, I patch out some XferStats code (that I don't think even makes it in the compiled python bindings?) that isn't compatible with the gcc compiler that's bundled in the build container, and presumably I wouldn't have to do that anymore, which would be nice.

(FYI, there has been some good progress recently from the wheel building community on making the next version of manylinux that will bring the build container version up to CentOS 6. Though as I'm now seeing Greg's reply, maybe that won't solve a whole lot.)

Jason


On Tue, Apr 24, 2018 at 3:05 PM, Greg Thain <gthain@xxxxxxxxxxx> wrote:
On 04/24/2018 02:46 PM, Todd Tannenbaum wrote:
Hi all,

Currently our increasingly popular HTCondor python bindings are implemented via Boost.Python.  Now that all HTCondor supported platforms have C++11-compatible compilers, I propose we consider implementing our bindings via pybind11 [see below for description] instead.

Note that RHEL6 doesn't fully support c++11.

pybind11 needs gcc 4.8 or VC++ 2015.  RHEL 6 is gcc 4.4.  RHEL 7 is gcc 4.8.

I'm feeling increasing frustrated by the age of the default c++ compilers on RHEL.  There are packages for EL that provide modern gcc's that statically link in the c++ libraries, so that they run on stock el6/7s.  Perhaps this is a path we should consider, even though it inconveniences our downstream friends?

-greg



_______________________________________________
HTCondor-devel mailing list
HTCondor-devel@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/htcondor-devel

[← Prev in Thread] Current Thread [Next in Thread→]