Fix cmake builds with Python 3.12, which deleted the long-deprecated 'distutils' module #13583
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If performing a cmake build with Python 3.11 or earlier, everything works fine; however, if using Python 3.12 the cmake build fails with
ModuleNotFoundError: No module named 'distutils'
. This is because thedistutils
module was deleted in Python 3.12 (see https://peps.python.org/pep-0632/ and https://docs.python.org/3/whatsnew/3.12.html#distutils).The problem was coming from nanopb which referenced the
distutils
module in itsCMakeLists.txt
. The fix was to copy the replacement command that works in Python 3.12, and should work all the way back to Python 3.7 (see nanopb/nanopb#727 and nanopb/nanopb#730). This PR merely tweaks the patching that is already done on nanopb.Here is what the error looks like, which this PR fixes:
#no-changelog