ognibuild/notes/architecture.md
2021-02-22 17:17:34 +00:00

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).