From 98a90496f63ecbe4ca8b38367c878c4e584d1ee7 Mon Sep 17 00:00:00 2001 From: nsubiron Date: Mon, 15 Oct 2018 19:41:51 +0200 Subject: [PATCH] Support for Python 3 on Linux --- LibCarla/source/carla/PythonUtil.h | 2 +- PythonAPI/source/libcarla/SensorData.cpp | 2 +- Util/BuildTools/Check.sh | 2 +- Util/BuildTools/Environment.sh | 2 ++ Util/BuildTools/Linux.mk | 2 +- Util/BuildTools/Setup.sh | 17 +++++++++++++---- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/LibCarla/source/carla/PythonUtil.h b/LibCarla/source/carla/PythonUtil.h index c9bdb7542..528bf8470 100644 --- a/LibCarla/source/carla/PythonUtil.h +++ b/LibCarla/source/carla/PythonUtil.h @@ -19,7 +19,7 @@ namespace carla { static bool ThisThreadHasTheGIL() { #ifdef LIBCARLA_WITH_PYTHON_SUPPORT -# ifdef PYTHON3X +# if PY_MAJOR_VERSION >= 3 return PyGILState_Check(); # else PyThreadState *tstate = _PyThreadState_Current; diff --git a/PythonAPI/source/libcarla/SensorData.cpp b/PythonAPI/source/libcarla/SensorData.cpp index bbdc52710..90b5341d6 100644 --- a/PythonAPI/source/libcarla/SensorData.cpp +++ b/PythonAPI/source/libcarla/SensorData.cpp @@ -51,7 +51,7 @@ template static auto GetRawDataAsBuffer(T &self) { auto *data = reinterpret_cast(self.data()); auto size = sizeof(typename T::value_type) * self.size(); -#if PYTHON3X // NOTE(Andrei): python 3 +#if PY_MAJOR_VERSION >= 3 // NOTE(Andrei): python 3 auto *ptr = PyMemoryView_FromMemory(reinterpret_cast(data), size, PyBUF_READ); #else // NOTE(Andrei): python 2 auto *ptr = PyBuffer_FromMemory(data, size); diff --git a/Util/BuildTools/Check.sh b/Util/BuildTools/Check.sh index 41feed55a..c31b8420a 100755 --- a/Util/BuildTools/Check.sh +++ b/Util/BuildTools/Check.sh @@ -52,7 +52,7 @@ while true; do LIBCARLA_RELEASE=true; LIBCARLA_DEBUG=true; PYTHON_API_2=true; - PYTHON_API_3=false; # @todo Python 3 not supported yet. + PYTHON_API_3=true; shift ;; --libcarla-release ) LIBCARLA_RELEASE=true; diff --git a/Util/BuildTools/Environment.sh b/Util/BuildTools/Environment.sh index 03a334009..059da0f8c 100644 --- a/Util/BuildTools/Environment.sh +++ b/Util/BuildTools/Environment.sh @@ -45,3 +45,5 @@ function move_if_changed { copy_if_changed $1 $2 rm -f $1 } + +CARLA_BUILD_CONCURRENCY=`nproc --all` diff --git a/Util/BuildTools/Linux.mk b/Util/BuildTools/Linux.mk index 130727c94..a1100969e 100644 --- a/Util/BuildTools/Linux.mk +++ b/Util/BuildTools/Linux.mk @@ -44,7 +44,7 @@ CarlaUE4Editor: LibCarla .PHONY: PythonAPI PythonAPI: LibCarla - @${CARLA_BUILD_TOOLS_FOLDER}/BuildPythonAPI.sh --py2 + @${CARLA_BUILD_TOOLS_FOLDER}/BuildPythonAPI.sh --py2 --py3 .PHONY: LibCarla LibCarla: setup diff --git a/Util/BuildTools/Setup.sh b/Util/BuildTools/Setup.sh index be33be709..4ad1b9103 100755 --- a/Util/BuildTools/Setup.sh +++ b/Util/BuildTools/Setup.sh @@ -99,10 +99,19 @@ else ./bootstrap.sh \ --with-toolset=clang \ --prefix=../boost-install \ - --with-libraries=python,filesystem - ./b2 clean - ./b2 toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" -j 12 stage release - ./b2 install toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" -j 12 + --with-libraries=python,filesystem \ + --with-python=/usr/bin/python2 --with-python-root=/usr + ./b2 toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" -j ${CARLA_BUILD_CONCURRENCY} stage release + ./b2 toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" -j ${CARLA_BUILD_CONCURRENCY} install + ./b2 toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" -j ${CARLA_BUILD_CONCURRENCY} --clean-all + + ./bootstrap.sh \ + --with-toolset=clang \ + --prefix=../boost-install \ + --with-libraries=python \ + --with-python=/usr/bin/python3 --with-python-root=/usr + ./b2 toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" -j ${CARLA_BUILD_CONCURRENCY} stage release + ./b2 toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" -j ${CARLA_BUILD_CONCURRENCY} install popd >/dev/null