Skip to content

lyrical: build python packages for 3.12 next to 3.14 - #144

Draft
ruben-arts wants to merge 7 commits into
RoboStack:mainfrom
ruben-arts:lyrical-python-312
Draft

ruben-arts wants to merge 7 commits into
RoboStack:mainfrom
ruben-arts:lyrical-python-312

Conversation

@ruben-arts

@ruben-arts ruben-arts commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Implementation to fix #170: lyrical builds its Python packages for 3.12 next to 3.14.

What changed:

  • Python 3.12 variant: lyrical's pinning gets a python: 3.12 variant next to 3.14, so every Python-dependent package is built for both.
  • Only build what's missing: builds now use --skip-existing=all (also checks the channels, not only the local output), and vinca is bumped to a7041a7 (Skip already built recipes by exact build string vinca#184), which skips recipes by their exact build string. A recipe whose 3.14 build is already published only builds the new 3.12 variant.
  • qt6-main pinned to 6.11.2 for lyrical: every pyqt6 6.11.0 build on conda-forge needs qt6-main <=6.11.2, but the shared 6.11 pin resolved to 6.11.3, whose run export (>=6.11.3) ruled pyqt6 out. The rqt packages then couldn't be installed together with python_qt_binding ("Failed to resolve dependencies"). The published 3.14 packages were already built against 6.11.2. The 28 recipes that link against Qt are evicted from the PR build cache (distros/lyrical/ci.yaml) so they rebuild with the pin; this also rebuilds their 3.14 variants. The pin can go once pyqt6 is rebuilt for qt6-main 6.11.3+.
  • Merged main, which brings rattler-build 0.79 with parallel builds.

Related: prefix-dev/rattler-build#2909 fixes a scheduling race in parallel builds with --skip-existing, where an output could start before a dependency of a skipped package was built.

Before merging: reset evict_cache in distros/lyrical/ci.yaml.

AI assisted by Claude Opus 5.5 (claude-opus-5-5).

Adds a 3.12 python variant to lyrical's pinning so packages are built for
both versions.
@traversaro

Copy link
Copy Markdown
Member

I would enable conditional_python_dependency: true (See RoboStack/vinca#153) and ideally sccache support, and force a full rebuild, even if to be honest I do not know how to do that with the monorepo. fyi @Tobias-Fischer

@traversaro

Copy link
Copy Markdown
Member

Also, xref #131 as this would be the first attempt in this direction.

@traversaro

Copy link
Copy Markdown
Member

I would enable conditional_python_dependency: true (See RoboStack/vinca#153) and ideally sccache support, and force a full rebuild, even if to be honest I do not know how to do that with the monorepo. fyi @Tobias-Fischer

Sorry, as usual that means bumping the mutex minor and build number in https://github.com/ruben-arts/robostack/blob/lyrical-python-312/distros/lyrical/vinca.yaml#L6-L9, not sure why I was confused (probably I was confusing distro.yaml and vinca.yaml).

@Tobias-Fischer

Copy link
Copy Markdown
Collaborator

See also RoboStack/ros-humble#424

@ruben-arts
ruben-arts marked this pull request as draft October 26, 2026 07:49
--skip-existing alone means local; =all also checks the channels, so a
recipe with a missing variant (e.g. python 3.12) builds only that
variant and skips the published ones.
The shared qt6_main 6.11 pin resolves to qt6-main 6.11.3, whose run export
(>=6.11.3) conflicts with every pyqt6 6.11.0 build on conda-forge (they need
<=6.11.2). The py312 rqt packages built in this PR could not be installed
with python_qt_binding. Evict the packages built against 6.11.3 from the PR
cache.
@ruben-arts

Copy link
Copy Markdown
Contributor Author

@RoboStack/robostack-core

This is currently waiting for a release of rattler-build. I'll probably not be able to finish this project as I'll be on vacation next weeks. If someone would be able to take it over that would be awesome! Feel free to close and reopen if you don't have the permissions!

This should help the Nvidia Isaac Sim team to use robostack directly for their ROS examples.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ROS 2 Lyrical packages for Python 3.12

3 participants