From 10edeef330eaa90e8705d722b32b8da8ede2a59f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Tue, 2 Mar 2021 01:16:24 +0000 Subject: [PATCH] Add doc on concepts. --- notes/concepts.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 notes/concepts.md diff --git a/notes/concepts.md b/notes/concepts.md new file mode 100644 index 0000000..b0c97d8 --- /dev/null +++ b/notes/concepts.md @@ -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.