You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit cde63fd
Browse filesBrowse the repository at this point in the historyBrowse files
description: Add, exclude or restrict ROS packages in RoboStack vinca.yaml files (shared/ and distros/<d>/), including platform-only packages, dependency skips and the build gap report. Use when a package should be added, removed, made Linux-only, or when recipes/artifacts don't line up.
3
+
description: Add, exclude or restrict ROS packages in RoboStack vinca.yaml files (shared/ selection, packages_exclude / packages_skip per distribution), including platform-only packages and the build gap report. Use when a package should be added, removed, made Linux-only, or when recipes/artifacts don't line up.
4
4
---
5
5
6
6
# Package selection (vinca.yaml)
7
7
8
8
`distros/<d>/work/vinca.yaml` is assembled from `shared/vinca.yaml` plus
9
-
`distros/<d>/vinca.yaml`. The three package lists are concatenated; for other keys
10
-
the distribution wins. A package selected for every distribution goes into
11
-
`shared/vinca.yaml`.
9
+
`distros/<d>/vinca.yaml` (`tools/robostack.py`, `merge_vinca`): the package lists are
10
+
combined, vinca applies them.
12
11
13
-
## Add packages
12
+
## Selecting packages
13
+
14
+
All selections are in **`shared/vinca.yaml`** (`packages_select_by_deps`), with the
15
+
broadest platform condition that works:
16
+
17
+
```yaml
18
+
packages_select_by_deps:
19
+
- some_package
20
+
- if: linux
21
+
then:
22
+
- some_linux_only_package
23
+
```
24
+
25
+
vinca skips a selected package that a distribution's rosdistro doesn't have ("not in
26
+
available packages anymore"), so a package that only some distributions have is
27
+
still selected in `shared/`. Add packages with the bot or:
14
28
15
29
```bash
16
-
pixi run rs add-package foxglove_bridge rqt_gauges #every distribution that has them
30
+
pixi run rs add-package foxglove_bridge rqt_gauges # lists what each distribution builds
17
31
pixi run rs add-package foxglove_bridge humble jazzy --preview
18
32
```
19
33
20
-
This is the bot's `add-package`. It inserts in sorted position, chooses `shared/` when
21
-
every distribution gets the same packages, and lists what will be built on linux-64.
22
-
Names are ROS package names; dashes and underscores both work.
34
+
## Exceptions per distribution (or for all, in shared/)
23
35
24
-
## The three ways to exclude a package
36
+
Both keys take plain names (everywhere) or `- if: <condition>` / `then:` blocks (on
37
+
those platforms only), and both drop the package from the shared selection there:
25
38
26
-
vinca's revision is pinned in `pixi.toml`. If that pin moves, re-check
27
-
`vinca/main.py` and `vinca/resolve.py`.
39
+
- **`packages_exclude`**: never built, and dropped from the dependencies of every other
40
+
package (vinca's `packages_skip_by_deps` + `packages_remove_from_deps`). The usual
41
+
choice: a package that doesn't build on a platform, and nothing needs it.
42
+
- **`packages_skip`**: never built, but dependents keep depending on it (vinca's
43
+
`packages_skip_by_deps`only), e.g. when an already published build must be used
44
+
(rolling's `rviz_visual_tools`, which `moveit_visual_tools` needs).
45
+
46
+
ROS packages whose name `shared/robostack.yaml` maps to a conda-forge package (e.g.
47
+
`tl_expected`-> `cpp-expected`) are skipped automatically, so the conda-forge package
48
+
is used and not shadowed by a ROS build of the same name.
28
49
29
-
1.**`packages_select_by_deps` under a platform condition**: the primary way to keep a
30
-
package's own recipe off a platform. Every listed name is selected
31
-
unconditionally, so not listing it for a platform is what excludes it:
32
-
```yaml
33
-
packages_select_by_deps:
34
-
- if: linux
35
-
then:
36
-
- some_linux_only_pkg
37
-
```
38
-
2. **`packages_skip_by_deps`**: only stops transitive pull-in (`ignore_pkgs` for
39
-
`distro.get_depends()`). It doesn't stop a package listed directly in (1). It's
40
-
also the tool for ROS packages that map to conda-forge in `shared/robostack.yaml`
41
-
(`tl_expected`, `sophus`), so that vinca doesn't build them under the conda-forge
42
-
name.
43
-
3. **`packages_remove_from_deps`**: removes the package's own recipe *and* strips it
44
-
from every other package's host/run dependencies, together and inseparably. Use
45
-
it only if nothing selected legitimately needs it; otherwise use (1) + (2).
46
-
47
-
Keep (2) and (3) coherent with the platform conditions in (1). A truly platform-only
48
-
package goes behind a condition, not into a comment.
50
+
vinca rejects the old `packages_skip_by_deps` / `packages_remove_from_deps` keys. vinca's revision is pinned in `pixi.toml`; if that pin moves, re-check
51
+
`vinca/main.py`and `vinca/resolve.py`.
49
52
50
53
## Recipes vs. artifacts
51
54
@@ -65,5 +68,5 @@ Regenerate recipes after editing `vinca.yaml` before expecting the report to cha
65
68
## rosdep mappings
66
69
67
70
`shared/robostack.yaml`maps rosdep keys to conda packages (per platform);
68
-
`shared/packages-ignore.yaml`lists keys to drop. Changes there affect every
71
+
`robostack: []` drops a key. Changes there affect every
69
72
distribution: check them with `generate-recipes` for at least two distributions.
Copy file name to clipboardExpand all lines: .github/ISSUE_TEMPLATE/3_robostack_bot.yaml
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ body:
11
11
12
12
| command | who | what it does |
13
13
|---|---|---|
14
-
| `add-package` | anyone | Add ROS packages to the package selection of the chosen distributions that have them; the PR lists what will be built. A maintainer reviews and merges it. |
14
+
| `add-package` | anyone | Add ROS packages to the shared package selection (built by every distribution that has them); the PR lists what will be built. A maintainer reviews and merges it. |
15
15
| `update-rosdistro-snapshot` | maintainers | Refresh `rosdistro_snapshot.yaml` to the latest rosdistro sync (master for rolling) and bump the build number (highest released + 1, per-package build numbers removed) and mutex: a full rebuild. The PR lists the version bumps. Runs daily when a new sync is tagged. |
16
16
| `find-stale-packages` | maintainers | List published packages built against pins that no longer match, with the build-number snippet to rebuild them. Replies only. |
17
17
| `update-conda-forge-pinning` | maintainers | Move the shared conda-forge pinning to the latest version; re-renders `conda_build_config.yaml` and bumps the build number and mutex of the distributions whose pins changed. Runs weekly. |
@@ -34,7 +34,7 @@ body:
34
34
label: Distributions
35
35
description: "`all`: every distribution (for add-package: every one that has the package). Ignored by update-conda-forge-pinning."
0 commit comments