Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
BEAM projects regularly depend on OTP applications that are themselves
missing from any package manager:
Teams pin a newer runtime built with kerl or asdf, or bundle it in
their release artefact.
application too, yet it is rarely delivered by system package managers.
be a
hexpurl; nor can it be a distro purl such asdeb,rpm,alpm.Today we have to fall back to a generic or VCS purl, which loses precision
(versioned app vs. tag/commit, selective patching, etc.).
The
otppurl type fills this gap.Decision flow
When a tool can emit only one purl per package (e.g. GitHub Dependency
Graph), follow this flowchart:
flowchart TD PM{"From Package Manager? rebar3 / mix"} OSPM{"From OS Package Manager?"} SCM{"Source (SCM)?"} GH["pkg:github/{owner}/{repo}"] BB["pkg:bitbucket/{owner}/{repo}"] Specific["pkg:{type}..."] PossiblyOtp{"OTP App?"} OTP["pkg:otp/{name}@{version}?vcs_url=git+https://{git}"] Generic["pkg:generic/...?vcs_url=git+https://{git}"] Hex["pkg:hex/{name}@{version}"] Git["Git"] OS["pkg:{alpm|deb|rpm}/..."] PM -- Yes --> SCM PM -- No --> OSPM OSPM -- No --> OTP OSPM -- Yes --> OS SCM -- Hex.SCM --> Hex SCM -- Mix.SCM.Git --> Git Git -- GitHub --> GH Git -- Bitbucket --> BB Git -- Other Specific --> Specific Git -- None --> PossiblyOtp SCM -- Mix.SCM.Path --> PossiblyOtp PossiblyOtp -- No --> Generic PossiblyOtp -- Yes --> OTPWhen multiple purls can be recorded (e.g. SPDX, CycloneDX) you may attach
both the
otppurl and an additional purl (Git, GitHub, checksum, …) formaximum traceability.
Summary of the new type
otp.app), lower‑casedvsn)platform,arch, plus generic qualifiers (repository_url, …)Concrete examples