diff --git a/CMakeModules/BoostPython3.cmake b/CMakeModules/BoostPython3.cmake index e0c298728..71372bba3 100644 --- a/CMakeModules/BoostPython3.cmake +++ b/CMakeModules/BoostPython3.cmake @@ -8,10 +8,18 @@ # what FindBoost.cmake is looking for. It looks for a library named # "libboost_${component}.so". # -# find_boost_python3() tries to find the package with different component names. -# By default it tries "python3" and "python-py$suffix", where suffix is based on -# the `python_version` argument. One can supply a custom component name by -# setting the `CALAMARES_BOOST_PYTHON3_COMPONENT` variable at CMake time. +# On Gentoo instead, the >=dev-libs/boost-1.54 package provides boost library +# with a name like: +# libboost_python-2.7.so +# libboost_python-3.3.so +# libboost_python-3.4.so +# depending on what python's targets you selected during install +# +# find_boost_python3() tries to find the package with different component +# names. By default it tries "python3", "python-py$suffix" and +# "python-$dotsuffix", where suffix is based on the `python_version` argument. +# One can supply a custom component name by setting the +# `CALAMARES_BOOST_PYTHON3_COMPONENT` variable at CMake time. set( CALAMARES_BOOST_PYTHON3_COMPONENT python3 CACHE STRING "Name of the Boost.Python component. If Boost.Python is installed as @@ -32,4 +40,15 @@ macro( find_boost_python3 boost_version python_version found_var ) break() endif() endforeach() + # The following loop chage the searched name for Gentoo based distributions + # turns "3.4.123abc" into "3.4" + string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\..*" "\\1.\\2" _fbp_python_short_version ${python_version} ) + foreach( _fbp_name ${CALAMARES_BOOST_PYTHON3_COMPONENT} python-${_fbp_python_short_version} ) + find_package( Boost ${boost_version} QUIET COMPONENTS ${_fbp_name} ) + string( TOUPPER ${_fbp_name} _fbp_uc_name ) + if( Boost_${_fbp_uc_name}_FOUND ) + set( ${found_var} ON ) + break() + endif() + endforeach() endmacro()