Skip to content
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

Permit building python bindings separately from main library #554

Merged
merged 7 commits into from
Nov 8, 2024

Conversation

scpeters
Copy link
Member

@scpeters scpeters commented Nov 8, 2024

🎉 New feature

Part of osrf/homebrew-simulation#2834, related to gazebosim/gz-math#636

Summary

This allows the python/CMakeLists.txt file to be built as a top-level cmake project against an external gz-transport library.

Test it

  1. Invoke cmake on the root CMakeLists.txt with using -DSKIP_PYBIND11=ON to build and install the libsdformat library without python bindings.
  2. Invoke cmake on python/CMakeLists.txt with -DPython_EXECUTABLE=/path/to/python to build and install python bindings for a given python version
  3. Repeat 2 with for each desired version of python

TODO: update homebrew formula using this branch in a draft PR

Checklist

  • Signed all commits for DCO
  • Added tests
  • Added example and/or tutorial
  • Updated documentation (as needed)
  • Updated migration guide (as needed)
  • Consider updating Python bindings (if the library has them)
  • codecheck passed (See contributing)
  • All tests passed (See test coverage)
  • While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining Signed-off-by messages.

traversaro and others added 7 commits November 5, 2024 07:03
Signed-off-by: Silvio Traversaro <silvio@traversaro.it>
Signed-off-by: Silvio Traversaro <silvio@traversaro.it>
Use CMAKE_INSTALL_LIBDIR from GNUInstallDirs instead
of GZ_LIB_INSTALL_DIR, which won't be available if
only building python bindings.

Signed-off-by: Steve Peters <scpeters@openrobotics.org>
Also remove unneeded enable_testing() call.

Signed-off-by: Steve Peters <scpeters@openrobotics.org>
Signed-off-by: Steve Peters <scpeters@openrobotics.org>
Combine similar steps for Ubuntu and macOS

Signed-off-by: Steve Peters <scpeters@openrobotics.org>
Signed-off-by: Steve Peters <scpeters@openrobotics.org>
@scpeters scpeters requested a review from caguero as a code owner November 8, 2024 05:21
@github-actions github-actions bot added 🏛️ ionic Gazebo Ionic 🪵 jetty Gazebo Jetty labels Nov 8, 2024
@scpeters scpeters changed the title Scpeters/build python bindings separately Permit building python bindings separately from main library Nov 8, 2024
@scpeters
Copy link
Member Author

scpeters commented Nov 8, 2024

I've tested building multiple python bindings in homebrew in osrf/homebrew-simulation#2855 a jenkins build runs successfully:

@scpeters scpeters merged commit 250e95f into gz-transport14 Nov 8, 2024
11 checks passed
@scpeters scpeters deleted the scpeters/build_python_bindings_separately branch November 8, 2024 22:47
@scpeters
Copy link
Member Author

https://github.com/Mergifyio backport gz-transport13

Copy link

mergify bot commented Nov 10, 2024

backport gz-transport13

✅ Backports have been created

mergify bot pushed a commit that referenced this pull request Nov 10, 2024
This allows the python/CMakeLists.txt file to be built
as a top-level cmake project against an external gz-transport
library, with documentation added to the installation tutorial.

The logic for finding pybind11 is also moved from the root
CMakeLists.txt to python/CMakeLists.txt to reduce code
duplication. When invoked through the root CMakeLists.txt,
pybind11 is treated as an optional dependency, but when
invoked from the python folder, pybind11 is treated as
required by setting the variable
CMAKE_REQUIRE_FIND_PACKAGE_pybind11 to TRUE.

Signed-off-by: Silvio Traversaro <silvio@traversaro.it>
Signed-off-by: Steve Peters <scpeters@openrobotics.org>
Co-authored-by: Silvio Traversaro <silvio@traversaro.it>
(cherry picked from commit 250e95f)

# Conflicts:
#	python/CMakeLists.txt
scpeters added a commit that referenced this pull request Nov 15, 2024
This allows the python/CMakeLists.txt file to be built
as a top-level cmake project against an external gz-transport
library, with documentation added to the installation tutorial.

The logic for finding pybind11 is also moved from the root
CMakeLists.txt to python/CMakeLists.txt to reduce code
duplication. When invoked through the root CMakeLists.txt,
pybind11 is treated as an optional dependency, but when
invoked from the python folder, pybind11 is treated as
required by setting the variable
CMAKE_REQUIRE_FIND_PACKAGE_pybind11 to TRUE.

Signed-off-by: Silvio Traversaro <silvio@traversaro.it>
Signed-off-by: Steve Peters <scpeters@openrobotics.org>
Co-authored-by: Silvio Traversaro <silvio@traversaro.it>
(cherry picked from commit 250e95f)
scpeters added a commit that referenced this pull request Dec 9, 2024
This allows the python/CMakeLists.txt file to be built
as a top-level cmake project against an external gz-transport
library, with documentation added to the installation tutorial.

The logic for finding pybind11 is also moved from the root
CMakeLists.txt to python/CMakeLists.txt to reduce code
duplication. When invoked through the root CMakeLists.txt,
pybind11 is treated as an optional dependency, but when
invoked from the python folder, pybind11 is treated as
required by setting the variable
CMAKE_REQUIRE_FIND_PACKAGE_pybind11 to TRUE.

Signed-off-by: Silvio Traversaro <silvio@traversaro.it>
Signed-off-by: Steve Peters <scpeters@openrobotics.org>
Co-authored-by: Silvio Traversaro <silvio@traversaro.it>
(cherry picked from commit 250e95f)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🏛️ ionic Gazebo Ionic 🪵 jetty Gazebo Jetty
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants