-
Notifications
You must be signed in to change notification settings - Fork 734
Description
What would you like to be added:
Support tracking the full dependency graph for packages in the form of relationships, for the ecosystems that support extracting this information.
Why is this needed:
An SBOM is useful for at least listing what makes up a software artifact. However, it is more useful to know how a dependency is related to the artifact (is it a direct dependency? or a transitive dependency? is this dependency used by several other packages, or just one?).
Below is a list of each ecosystem that we could implement this for (really it's a list of all of the parsers for all catalogers). It doesn't mean that we should implement this entire list, there are some ecosystems that just don't raise up enough information to make adding relationships useful. This will have to be taken on a case-by-case basis.
- Apk Add support for dependency relationships for alpine (apk) #1063
- Dpkg Add support for dpkg dependency relationships #2040
- ALPM Add relationships for ALPM packages (arch linux) #2851
- Conan (conan.lock) Finalize Conan v2 support #2587
- Conan (conaninfo.txt) feat: add conaninfo.txt parser to detect conan packages in docker images #2234
- Conan (conanfile.txt)
- Dart (pubspec.lock)
- .NET (deps.json) Parse donet dependency trees #2143
- .NET (from binary)
- Elixir (mix.lock)
- Erlang (rebar.lock)
- Github actions workflows (workflows using actions)
- Golang (go.mod) Surface Rust dependency relationships #2353
- Golang (binary) Add relationships for go binary packages #2912
- Haskell (stack.yaml)
- Haskell (stack.yaml.lock)
- Haskell (cabal.project.freeze)
- Java (nested jars)
- Emit relationships for Java dependencies #3189
- Java (gradle.lockfile)
- Javascript (package.json) Syft Extract dependencies from Package.json in JavaScript Package Cataloger #3108
- Javascript (package-lock.json) Syft outputs devDependencies for package-lock.json files #2348 Is generating cyclonedx dependencies supported with the javascript-lock cataloger? #2305 Missing dependency relationships between direct dependencies and transient dependencies in NPM packages #3109
- Javascript (yarn.lock) Is generating cyclonedx dependencies supported with the javascript-lock cataloger? #2305
- Javascript (pnpm-lock.yaml) Is generating cyclonedx dependencies supported with the javascript-lock cataloger? #2305
- Kernel modules Add Linux Kernel cataloger #1694 <-- this PR adds kernel-to-module relationships, but we don't denote dependencies of components within those modules. Is that's what's needed here?
- Lua
- Nix Detect nix dependencies #3814
- OCaml opam
- PHP (installed.json)
- PHP (composer.lock)
- Portage (contents file)
- Python (poetry.lock) Add relationships for python poetry packages #2906
- Python (egg/wheel metadata) Add python wheel egg relationships #2903
- R (description file)
- RPM (db) Add support for RPM DB package relationships #2872
- Ruby (gemfile.lock)
- Ruby (specifications gemspec)
- Rust (cargo.lock) Surface Rust dependency relationships #2353
- Rust (binary) Add relationships for rust audit binary packages #3500
- SBOM
- Swift (package.resolved)
- Swift (Podfile.lock)
These are catalogers that have been deemed not possible / practical to implement raise up relationships for at this time:
- Python (setup.py): no relationship information
- Python (requirements.txt): no relationship information
- Python (Pipfile.lock): no relationship information to the package this is being installed for
- RPM (rpm file): there is relationship data, but not with potentially other installed packages
Notes:
This assumes that #556 is implemented, allowing for package catalogers to return relationships as first class evidence.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status