Skip to content

One folder per package for patches, tests and recipe files #220

Open

Description

@Tobias-Fischer

Follow-up to #217 (the monorepo moving to vinca-rs).

Today a package's RoboStack-specific files live in three places per layer (shared/ and distros/<d>/):

They are all the same kind of thing: files about one package, found by its name, in either layer. The only real difference is how vinca-rs wires them into the recipe, and that can be decided from the file name.

Proposal

One folder per package and layer, e.g. shared/packages/ros2-ros-workspace/ or distros/humble/packages/ros2-rclcpp/:

File vinca-rs
*.patch (with the .osx/.linux/.win/.unix/.emscripten suffixes) copied, and listed under source.patches with the platform's condition (as today)
tests.yaml its tests are added to the recipe (as today)
anything else copied into the recipe directory

pkg_additional_info.yaml stays a single file per layer: it holds short per-package entries, and robostack-bot and the stale-build tooling edit it. (With #217 it also holds the dependency fixes that were in patch/dependencies.yaml.)

Open question

Today a distribution's entry replaces the shared one for that package. With folders, merging per file is more natural: e.g. humble adds one patch to a package that also has shared patches, without copying them.

Work

  • vinca-rs: one folder scan instead of three (patches, tests, files).
  • Move about 1,140 patches (46 shared, 250–320 per ROS 2 distribution), 35 test files, 4 test folders and the files/ folder, by script.
  • Update tools/ (check_patches_clean_apply.py, check_orphaned_platform_patches.py, package_tests.py, import_distro.py, maintenance.py, robostack.py), the package-tests workflow, README, AGENTS.md and the skills.
  • Check: the generated recipes are identical before and after.

After #217 is merged, so that only vinca-rs reads this layout.

— Claude (AI assistant), on behalf of @Tobias-Fischer. Sorry in advance: this issue was written by an AI agent.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions