From 8557f26619006310dd4bbefc6247ead4278cf26b Mon Sep 17 00:00:00 2001 From: Tobias Fischer Date: Sat, 10 Oct 2026 21:04:41 +1000 Subject: [PATCH] bump_partial: keep pkg_additional_info.yaml in pixi run sort order It appended new build-number entries unsorted, so every partial-rebuild PR of the pinning bot failed rs check ("YAML files are not sorted"). Co-Authored-By: Claude Opus 5.5 --- tools/maintenance.py | 3 +++ tools/tests/test_mutex.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/tools/maintenance.py b/tools/maintenance.py index 89f98c8b..1d3f0c81 100644 --- a/tools/maintenance.py +++ b/tools/maintenance.py @@ -208,6 +208,9 @@ def bump_partial(distro: str, packages: dict[str, str]) -> list[str]: entry["build_number"] = number with info.open("w") as fh: ry.dump(data, fh) + from vinca.sort_yaml_keys import sort_mapping_keys + + sort_mapping_keys(info) # `pixi run sort` order (rs check fails otherwise): build-number entries last return [f"{len(packages)} packages get `build_number: {number}` in `distros/{distro}/pkg_additional_info.yaml`"] diff --git a/tools/tests/test_mutex.py b/tools/tests/test_mutex.py index 641858d9..746cb72e 100644 --- a/tools/tests/test_mutex.py +++ b/tools/tests/test_mutex.py @@ -44,3 +44,20 @@ def test_partial_rebuild_leaves_the_mutex_alone(tmp_path, monkeypatch): info = maintenance.yaml.safe_load((distro / "pkg_additional_info.yaml").read_text()) assert info == {"rclcpp": {"build_number": 8, "add_host": ["foo"]}, "std_msgs": {"build_number": 8}} assert (distro / "vinca.yaml").read_text() == vinca + + +def test_partial_rebuild_keeps_pkg_additional_info_sorted(tmp_path, monkeypatch): + from vinca.sort_yaml_keys import sort_mapping_keys + + distro = tmp_path / "distros" / "testdistro" + distro.mkdir(parents=True) + (distro / "vinca.yaml").write_text("ros_distro: testdistro\nbuild_number: 5\n") + (distro / "pkg_additional_info.yaml").write_text("zeta:\n add_host: [foo]\nalpha:\n build_number: 3\n") + monkeypatch.setattr(rs, "DISTROS", tmp_path / "distros") + monkeypatch.setattr(maintenance, "released_builds", lambda d: {"ros2-alpha": 7}) + monkeypatch.setattr(rs, "read_vinca", lambda d, platform=None: {"mutex_package": {"name": "ros2-distro-mutex"}}) + + maintenance.bump_partial("testdistro", {"mid": "uses libboost", "beta": "uses libboost"}) + + info = distro / "pkg_additional_info.yaml" + assert sort_mapping_keys(info) is False # already in `pixi run sort` order: nothing to change