mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-06 20:43:46 +08:00
69 lines
3.8 KiB
Markdown
69 lines
3.8 KiB
Markdown
# Tracked dependency sources
|
|
|
|
Dependencies are ordinary folders in this repository. Clone normally, run
|
|
`tools/op.sh setup`, and commit application and dependency edits together.
|
|
|
|
`upstream-sync.json` records the last integrated upstream commit and its pristine
|
|
tree for each dependency. A recorded tree identifies the merge base; it does not
|
|
claim that the current folder is unchanged. Optional import exclusions are
|
|
explicit, and an optional `include` list imports only the listed upstream paths. Required third-party license notices remain in the source folders.
|
|
|
|
Run `python3 tools/vendor/check.py` to validate the tracked working tree, or add
|
|
`--revision REV` to validate a fetched commit before checking it out. Validation
|
|
checks layout and provenance fields; it does not establish runtime compatibility.
|
|
|
|
Maintainers can preview a dependency update with:
|
|
|
|
```sh
|
|
python3 tools/vendor/sync.py panda FULL_UPSTREAM_COMMIT_HASH
|
|
```
|
|
|
|
The base is the previously integrated snapshot, ours is the committed local
|
|
folder, and theirs is the selected upstream snapshot. The command requires a
|
|
clean checkout. It downloads objects into an external cache, reports conflicts
|
|
without changing the checkout, and preserves local edits through a three-way
|
|
merge. Use `--source-repo /path/to/upstream/repo` for an existing local object
|
|
cache. Add `--apply` to stage a conflict-free result and updated manifest. Review
|
|
the diff, run the affected tests, and create one ordinary local commit. The tool
|
|
does not commit, push, or resolve conflicts by discarding local changes.
|
|
|
|
Updating the main openpilot base is a separate integration task. Review the
|
|
upstream changes and dependency pins together, resolve any dependency tree
|
|
replacements explicitly, and update the main manifest revision only after
|
|
integration. Never accept a gitlink in place of a source folder. Updater and CI
|
|
checks reject that layout.
|
|
|
|
Dependency provenance checks do not replace runtime, firmware, or vehicle
|
|
qualification for an update.
|
|
|
|
## Local Mapd integration
|
|
|
|
`mapd_repo/` contains tracked source with StarPilot changes. The static Linux
|
|
ARM64 executable and its source/hash manifest are also tracked, under
|
|
`openpilot/starpilot/maps/provider/`. The upstream pin identifies the original
|
|
merge base; it does not require this source folder to match upstream exactly.
|
|
|
|
The local `limit_preview.go` helper publishes bounded, data-only speed-limit
|
|
previews from the provider's qualified road evidence. Python SLC owns advance
|
|
timing, offsets, confirmations, overrides and vehicle commands. Preserve the
|
|
preview lifecycle hooks, matching/schema changes and Go/Python regression tests
|
|
together when updating the provider.
|
|
|
|
Fixed one-way generation and closed-loop entry are backported from
|
|
[pfeiferj/mapd PR #105](https://github.com/pfeiferj/mapd/pull/105), merged as
|
|
`92a22aaac0396330d0db40432407f011ff723553`. Reverse one-way roads reverse their
|
|
nodes and both directional speed-tag pairs. Closed two-way loops cannot qualify
|
|
an early preview because their entry direction is ambiguous. Generator changes
|
|
apply to newly generated tiles; existing downloaded tiles are not rewritten.
|
|
|
|
Use the sync command above with dependency `mapd_repo` for upstream updates.
|
|
It preserves committed local changes through a three-way merge and stops on
|
|
conflicts; a normal update does not require manually reapplying this feature.
|
|
Review the merged behavior and run the provider and host SLC/wire tests. Follow
|
|
`mapd_repo/INTEGRATION.md` if changed schemas require regenerating Go bindings.
|
|
|
|
After changing provider source or its upstream pin, run `./build --mapd`, then
|
|
`python3 tools/release/stage_mapd_provider.py --source . --require-tracked`.
|
|
Commit the source, bindings, tests, executable and manifest together. Existing
|
|
package checks reject a binary whose recorded source or upstream pin is stale.
|