Add doc on concepts.

This commit is contained in:
Jelmer Vernooij 2021-03-02 01:16:24 +00:00
parent f8d269b6e5
commit 10edeef330
No known key found for this signature in database
GPG key ID: 579C160D4C9E23E8

49
notes/concepts.md Normal file
View file

@ -0,0 +1,49 @@
Requirement
===========
Some sort of constraint about the environment that can be specified and satisfied.
Examples:
* a dependency on version 1.3 of the python package "foo"
* a dependency on the apt package "blah"
Requirements can be discovered from build system metadata files and from build logs.
Different kinds of requirements are subclassed from the main Requirement class.
Output
======
A build artifact that can be produced by a build system, e.g. an
executable file or a Perl module.
Problem
=======
An issue found in a build log by buildlog-consultant.
BuildFixer
==========
Takes a build problem and tries to resolve it in some way.
This can mean changing the project that's being built
(by modifying the source tree), or changing the environment
(e.g. by install packages from apt).
Common fixers:
+ InstallFixer([(resolver, repository)])
+ DebianDependencyFixer(tree, resolver)
Repository
==========
Some sort of provider of external requirements. Can satisfy environment
requirements.
Resolver
========
Can take one kind of upstream requirement and turn it into another. E.g.
converting missing Python modules to apt or pypi packages.