From 81ac0ee49d1193d5919de1ca9d4edabc86c8df96 Mon Sep 17 00:00:00 2001 From: Tobias Fischer Date: Wed, 30 Sep 2026 22:19:07 -0400 Subject: [PATCH 1/3] Pin qt6-main and pyqt6 to 6.11; rebuild packages built against qt6-main 6.12 conda-forge released qt6-main 6.12, but its newest pyqt6 (6.11.0) still requires qt6-main <6.12. Since qt6_main was only pinned to '6', packages built in the current full rebuild picked up 6.12, so anything needing both them and python_qt_binding (pyqt6) is unsolvable, e.g. ros2-rqt-topic on linux-aarch64 and osx-arm64. Pin qt6_main and pyqt6 to 6.11 via vinca_pinning.yaml (rendered into conda_build_config.yaml) and bump the build number of the six packages that the robostack-rolling channel already has for the current mutex (0.22, build 29) with a qt6-main >=6.12 dependency, so they get rebuilt: gz_gui_vendor, gz_sim_vendor, rqt_plot, rqt_py_common, rviz_rendering, rviz_rendering_tests (published on linux-aarch64, osx-arm64, win-64). Co-Authored-By: Claude Opus 5.5 --- conda_build_config.yaml | 23 +++++++++++++++-------- pkg_additional_info.yaml | 24 ++++++++++++++++++++---- vinca_pinning.yaml | 8 ++++++++ 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/conda_build_config.yaml b/conda_build_config.yaml index bb40c2561..6926ee5f1 100644 --- a/conda_build_config.yaml +++ b/conda_build_config.yaml @@ -819,8 +819,6 @@ lol_html: - 3.0.1 ls_hpack: - 2.3.5 -lua: - - 5.4 lwtnn: - '2.14' lz4_c: @@ -1013,7 +1011,12 @@ qt: qt_main: - 5.15 qt6_main: - - '6' + - 6.11 + # conda-forge published sip 6.16.1 on 2026-09-08, which broke ABI targeting for + # packages like qt_gui_cpp_sip that build against PyQt-sip's fixed ABI v12 + # (hit this on humble/jazzy first; rolling also builds qt_gui_cpp via + # pyqt6/sip so it's equally exposed). Pin back to the last known-good line + # until upstream fixes it. qtkeychain: - '0.17' rav1e: @@ -1173,10 +1176,14 @@ libzenohc: - 1.10.1 libzenohcxx: - 1.10.1 - # conda-forge published sip 6.16.1 on 2026-09-08, which broke ABI targeting for - # packages like qt_gui_cpp_sip that build against PyQt-sip's fixed ABI v12 - # (hit this on humble/jazzy first; rolling also builds qt_gui_cpp via - # pyqt6/sip so it's equally exposed). Pin back to the last known-good line - # until upstream fixes it. + # cartographer was built with lua 5.4.8, otherwise it pulls in 5.5 which leads to conflicts +lua: + - 5.4 + # conda-forge's newest pyqt6 (6.11.0) still requires qt6-main <6.12, so + # packages built against the newly released qt6-main 6.12 can't be installed + # together with python_qt_binding (pyqt6). Pin both to 6.11 until pyqt6 is + # rebuilt for qt6-main 6.12. +pyqt6: + - 6.11 sip: - 6.15 diff --git a/pkg_additional_info.yaml b/pkg_additional_info.yaml index 6f03454ba..8dcc89ffb 100644 --- a/pkg_additional_info.yaml +++ b/pkg_additional_info.yaml @@ -46,8 +46,6 @@ gz_dartsim_vendor: additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK" gz_fuel_tools_vendor: additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK" -gz_gui_vendor: - additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK" gz_math_vendor: additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK" gz_msgs_vendor: @@ -64,8 +62,6 @@ gz_ros2_control: additional_cmake_args: "-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON" gz_sensors_vendor: additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK" -gz_sim_vendor: - additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK" gz_transport_vendor: additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK" gz_utils_vendor: @@ -198,3 +194,23 @@ visp: override_version: '3.7.0' zenoh_cpp_vendor: additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK -DUSE_SYSTEM_ZENOH=ON" +gz_gui_vendor: + additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK" + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +gz_sim_vendor: + additional_cmake_args: "-DAMENT_VENDOR_POLICY=NEVER_VENDOR_IGNORE_SATISFIED_CHECK" + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +rqt_plot: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +rqt_py_common: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +rviz_rendering: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +rviz_rendering_tests: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 diff --git a/vinca_pinning.yaml b/vinca_pinning.yaml index 192dd4e34..67c4a9396 100644 --- a/vinca_pinning.yaml +++ b/vinca_pinning.yaml @@ -46,6 +46,14 @@ pinning_overrides: # cartographer was built with lua 5.4.8, otherwise it pulls in 5.5 which leads to conflicts lua: - 5.4 + # conda-forge's newest pyqt6 (6.11.0) still requires qt6-main <6.12, so + # packages built against the newly released qt6-main 6.12 can't be installed + # together with python_qt_binding (pyqt6). Pin both to 6.11 until pyqt6 is + # rebuilt for qt6-main 6.12. + pyqt6: + - 6.11 + qt6_main: + - 6.11 # conda-forge published sip 6.16.1 on 2026-09-08, which broke ABI targeting for # packages like qt_gui_cpp_sip that build against PyQt-sip's fixed ABI v12 # (hit this on humble/jazzy first; rolling also builds qt_gui_cpp via From f5dfd1097ff3db80639fe24a55758955d2e3de02 Mon Sep 17 00:00:00 2001 From: Tobias Fischer Date: Wed, 30 Sep 2026 22:48:36 -0400 Subject: [PATCH 2/3] ci: use prefix.dev channel URLs in testpr.yml again Rolling's packages are published to prefix.dev, and vinca's skip_existing checks https://prefix.dev/robostack-rolling, so only unpublished recipes are generated. The bare `-c robostack-rolling` resolves to conda.anaconda.org/robostack-rolling, which has no ros2-* packages, so a PR that doesn't rebuild everything fails with "No candidates were found for ros2-ament-cmake". Restore the prefix.dev URLs from b01f36c, which 8a967e9 accidentally reverted when unifying testpr.yml with humble/jazzy. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/testpr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testpr.yml b/.github/workflows/testpr.yml index a6c7600f8..f1e345fc7 100644 --- a/.github/workflows/testpr.yml +++ b/.github/workflows/testpr.yml @@ -191,7 +191,7 @@ jobs: EXTRA_BUILD_ARGS="--no-build-id" fi # --channel-priority disabled: resolvo would otherwise refuse a just-built local package once any other-channel build of the same name exists. - pixi run rattler-build build --recipe-dir recipes --target-platform ${{ matrix.platform }} -m ./conda_build_config.yaml -c conda-forge -c robostack-rolling --skip-existing --channel-priority disabled $EXTRA_BUILD_ARGS 2>&1 | tee rattler-build.log + pixi run rattler-build build --recipe-dir recipes --target-platform ${{ matrix.platform }} -m ./conda_build_config.yaml -c https://prefix.dev/conda-forge -c https://prefix.dev/robostack-rolling --skip-existing --channel-priority disabled $EXTRA_BUILD_ARGS 2>&1 | tee rattler-build.log build_status=${PIPESTATUS[0]} echo "exit-code=${build_status}" >> "$GITHUB_OUTPUT" exit "$build_status" From 9397b93ae0c12ccb0c241b1c228334ce572c9c20 Mon Sep 17 00:00:00 2001 From: Tobias Fischer Date: Thu, 1 Oct 2026 09:54:28 -0400 Subject: [PATCH 3/3] Bump build_number of more packages built against qt6-main 6.12 rviz2, rviz_common, rviz_default_plugins, rviz_imu_plugin, rviz_satellite, rviz_visual_testing_framework and turtlesim also have b29 builds linked against qt6-main 6.12; rebuild them against 6.11. Co-Authored-By: Claude Opus 5.5 --- pkg_additional_info.yaml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pkg_additional_info.yaml b/pkg_additional_info.yaml index 8dcc89ffb..fa8738510 100644 --- a/pkg_additional_info.yaml +++ b/pkg_additional_info.yaml @@ -208,9 +208,30 @@ rqt_plot: rqt_py_common: # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). build_number: 30 +rviz2: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +rviz_common: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +rviz_default_plugins: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +rviz_imu_plugin: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 rviz_rendering: # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). build_number: 30 rviz_rendering_tests: # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). build_number: 30 +rviz_satellite: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +rviz_visual_testing_framework: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30 +turtlesim: + # Rebuild with qt6-main 6.11 (b29 was built against qt6-main 6.12, which pyqt6 6.11 can't install with). + build_number: 30