Google Summer of Code/2022/Ideas/Portage constructed build environments and circular dependency solver

From Gentoo Wiki
Jump to:navigation Jump to:search

Portage constructed build environments and circular dependency solver

Improving on the new binpkgs code, we could construct consistent and clean build environments for packages. By generating binpkgs as SquashFS, portage could construct build environments in a mount namespace, with constricted available packages, to detect build system bugs like automatic dependency detection, hard-coded paths, direct calls to gcc/clang, missing (or even extraneous) dependencies. This decoupling of the build and host environment also allows us to break apart build and install steps in the build graph, so that circular dependencies could be solved by building temporary packages with cycle-breaking flags (for instance, harfbuzz[-truetype], freetype[harfbuzz], harfbuzz[truetype], install both).

Contacts Required Skills
  • Understanding of Linux namespaces, particularly mount namespaces
  • Ability to write Python
Expected Project Size Expected Outcomes

175 hours

  • Improved QA (finding missing dependencies)
  • Prevent confusion by circular dependencies (this would solve a long-standing bug: bug #175808)
Project Difficulty

Hard, mainly because handling Portage codebase