-
Notifications
You must be signed in to change notification settings - Fork 214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Python3 fixes (maintains python2 compatibility) #214
base: master
Are you sure you want to change the base?
Conversation
Thanks for your contribution. I will have a look at my spare time. |
Some methods need replacing too, such as'has_key' |
Thank you for this PR, helped a lot! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
makes the example work with python 3.x without breaking the compatibility with python 2.x. It's a small fix that could be merged
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
everithing works with python 2.x and 3.x
After some digging, I think I may have resolved the segfault issue on Python>3.6.1 on MacOS (see #179). It has to do with
swig_link_libraries
(see https://cmake.org/cmake/help/latest/module/UseSWIG.html in conjunction with https://cmake.org/cmake/help/latest/policy/CMP0078.html)PythonInterp
andPythonLibs
. Best way to pass libraries totarget_link_libraries
is usingPython::Module
ofFindPython
This PR changes
PythonInterp
andPythonLibs
to preferFindPython
, which detects your python library (python 2 or 3) and sets up CMAKE appropriately. It then deprecatesswig_link_libraries
in favor oftarget_link_libraries
for CMAKE versions 3.13 and above.Additionally, assuming the presence of conda indicates preference for the python conda version, added
fmm/CMakeLists.txt
Line 39 in 676ced5
following suggestions in https://gitlab.kitware.com/cmake/cmake/-/issues/21322. This addresses issues when conda's python version is less than that of the system python install.
The above changes seem to still be compatible with ubuntu-based python 2 and python 3 installs, while resolving the segfault issues encountered in the python3 install of
fmm
on MacOS.CI testing might have to be changed a bit to test for python3 since
python
defaults to the python 2 install in most systems.Edit: It seems most of your build configs for testing rely on ubuntu 16.04, which uses an old version of CMAKE. To maintain compatibility with the old and new CMAKE versions, we can use
PythonInterp
andPythonLibs
for CMAKE<3.13, while using FindPython for newer CMAKE versions.