Skip to content

Root layer caching #68

@GZGavinZhao

Description

@GZGavinZhao

This is the design for caching our container root between subsequent builds on the same package. The container root will be reused as long as system.base, system.devel, and the package's dependencies remain the same. This will eliminate most if not all the time needed for fetching and installing dependencies.

To do this, we will need to have three overlays that are mounted and unmounted one after another. Relative paths are relative to /var/cache/solbuild/<profile>/<package>/.

  1. Overlay 1: for ensuring system.base, system.devel, and other packages needed by solbuild to function are at their latest version.
    • lower: img
    • upper: base
    • merged: unionb
    • other mounts:
      • eopkg package cache: /var/cache/eopkg/packages
    • <hash-of-dependencies> is generated inside this overlay after everything is up-to-date.
  2. Overlay 2: for installing the dependencies of the package to build. This overlay is only mounted if the layer doesn't exist already.
    • lower: img:base
    • upper: /var/cache/solbuild/<layers>/<hash-of-dependencies>. This is the layer that will be cached and reused.
    • merged: uniond
    • other mounts:
      • eopkg package cache: /var/cache/eopkg/packages
  3. Overlay 3: for actually building the package
    • lower: img:base:/var/cache/solbuild/<layers>/<hash-of-dependencies>
    • upper: tmp
    • merged: union
    • other mounts:
      • everything that we currently mount

<hash-of-dependencies> is generated by ypkg-install-deps --dry-run --json (getsolus/ypkg#57).

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

Status

Todo

Relationships

None yet

Development

No branches or pull requests

Issue actions