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 libsdformat library #1491

Merged
merged 11 commits into from
Nov 5, 2024

Conversation

scpeters
Copy link
Member

🎉 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 libsdformat library. The first commit (1985c90) is a patch from @traversaro used in conda, and the second commit (4644d3b) replaces the GZ_LIB_INSTALL_DIR cmake variable with CMAKE_INSTALL_LIBDIR (see GzPackaging.cmake:111) since GZ_LIB_INSTALL_DIR is not defined with the minimal cmake project added in 1985c90.

Test it

  1. Follow the instructions from Permit building python bindings separately from gz-math library gz-math#636 to build gz-math python bindings
  2. Invoke cmake on the root CMakeLists.txt with using -DSKIP_PYBIND11=ON to build and install the libsdformat library without python bindings.
  3. Invoke cmake on python/CMakeLists.txt with -DPython_EXECUTABLE=/path/to/python to build and install python bindings for a given python version
  4. Repeat 2 with for each desired version of python

I have a draft of an updated homebrew formula using this branch in osrf/homebrew-simulation#2836

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.

scpeters and others added 5 commits October 15, 2024 13:57
* Refer to https://brew.sh instead of duplicating the
  brew installation command.
* List cmake variables in a markdown table.

Signed-off-by: Steve Peters <[email protected]>
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 <[email protected]>
* Document SKIP_PYBIND11 cmake option
* Document how to build bindings separately from the
  main libsdformat library

Signed-off-by: Steve Peters <[email protected]>
The sdformat main library already links publicly to gz-utils.

Signed-off-by: Steve Peters <[email protected]>
Also remove unneeded enable_testing() call.

Signed-off-by: Steve Peters <[email protected]>
@scpeters scpeters marked this pull request as ready for review October 29, 2024 06:41
@scpeters scpeters requested a review from azeey as a code owner October 29, 2024 06:41
@scpeters
Copy link
Member Author

gazebosim/gz-math#636 has been merged and the homebrew bottle updated, and I have applied the changes in response to its review comments to this branch. This is ready for review

Base automatically changed from scpeters/improve_installation_instructions to sdf15 October 29, 2024 17:13
@scpeters scpeters added ign to gz Renaming Ignition to Gazebo. 🏛️ ionic Gazebo Ionic and removed ign to gz Renaming Ignition to Gazebo. labels Oct 29, 2024
@scpeters
Copy link
Member Author

scpeters commented Nov 5, 2024

the brew CI issue should be fixed by gazebo-tooling/release-tools#1197

@scpeters scpeters merged commit 3dcdd55 into sdf15 Nov 5, 2024
12 checks passed
@scpeters scpeters deleted the scpeters/build_python_bindings_separately branch November 5, 2024 21:24
@scpeters
Copy link
Member Author

scpeters commented Nov 6, 2024

https://github.com/Mergifyio backport sdf14

Copy link
Contributor

mergify bot commented Nov 6, 2024

backport sdf14

✅ Backports have been created

mergify bot pushed a commit that referenced this pull request Nov 6, 2024
…1491)

This allows the src/python_pybind11/CMakeLists.txt file to be
built as a top-level cmake project against an external sdformat
library, with documentation added to the README.

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: Steve Peters <[email protected]>
Signed-off-by: Silvio Traversaro <[email protected]>
Co-authored-by: Silvio Traversaro <[email protected]>
(cherry picked from commit 3dcdd55)

# Conflicts:
#	python/CMakeLists.txt
scpeters pushed a commit that referenced this pull request Nov 7, 2024
…1497)

Backport of #1491 with adapted package finding logic and a note
about requiring cmake 3.22.1.

This allows the src/python_pybind11/CMakeLists.txt file to be
built as a top-level cmake project against an external sdformat
library, with documentation added to the README.

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: Steve Peters <[email protected]>
Signed-off-by: Silvio Traversaro <[email protected]>
Co-authored-by: Silvio Traversaro <[email protected]>
(cherry picked from commit 3dcdd55)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🏛️ ionic Gazebo Ionic
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants