1 KiB
Upstream requirements are expressed as objects derived from UpstreamRequirement.
They can either be:
- extracted from the build system
- extracted from errors in build logs
The details of UpstreamRequirements are specific to the kind of requirement, and otherwise opaque to ognibuild.
When building a package, we first make sure that all declared upstream requirements are met.
Then we attempt to build.
If any problems are found in the log, buildlog-consultant will report them.
ognibuild can then invoke "fixers" to address Problems.
Problems can be converted to UpstreamRequirements by UpstreamRequirementFixer
Other Fixer can do things like e.g. upgrade configure.ac to a newer version.
UpstreamRequirementFixer uses a UpstreamRequirementResolver object that can translate UpstreamRequirement objects into apt package names or e.g. cpan commands.
ognibuild keeps finding problems, resolving them and rebuilding until it finds a problem it can not resolve or that it thinks it has already resolved (i.e. seen before).