Commit graph

20 commits

Author SHA1 Message Date
Achilleas Koutsou
e8285fb2bf manifest: set selinux labels for cp and tar conditionally
Only label cp and tar if they're found in the list of packages for the
build root.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
9d4a351ca6 Rename osbuild2 package to osbuild 2022-07-14 16:54:00 +02:00
Tom Gundersen
d00b98c134 manifest: don't stutter
Replace `pipeline.OSPipeline` with `pipeline.OS`, etc.

Also rename `LiveImg` to `RawImage`.
2022-07-12 08:19:57 +01:00
Tom Gundersen
529bc803db runner: introduce runner abstraction
For now all it does is represent the name of the runner and what requirements
it has of the build pipeline.

Move some package definitions from the runner package set to where it belongs.
2022-07-12 08:19:57 +01:00
Tom Gundersen
fa7d2f2647 manifest/build: explicitly pull in glibc
This should have no practical effect, but ldconfig is used from
runners, so it is strictly speaking a requirement.

At the same time document the remaining TODO's in the build
pipeline.
2022-07-12 08:19:57 +01:00
Tom Gundersen
b405ce4d89 manifest/build: replace explicit dnf with implicit rpm
The pipelines don't use dnf, only rpm. Let the ones that need it pull it in.
2022-07-12 08:19:57 +01:00
Tom Gundersen
b714dcb780 manifest/build: pull in tar implicitly
The tar pipeline requires tar, let only that pull it in.
2022-07-12 08:19:57 +01:00
Tom Gundersen
fed620b861 disk/partition_table: expose GetBuildPackages() function
This describes the packages necessary to create the partition table.

Use this in the pipelines and drop the explicit mentions from the build
pipeline.
2022-07-12 08:19:57 +01:00
Tom Gundersen
0d3d35e154 manifest/build: pull in selinux packages implicitly
The build pipeline requires the selinux packages only if we are going to be
labelling the files in the target OS. Otherwise, skip it.

manifest/build: pull in selinux-targeted unconditionally

This is unconditionally used by the build pipeline itself, until we make that
conditional, it needs to be installed.
2022-07-12 08:19:57 +01:00
Tom Gundersen
8df99d2b31 manifest/build: we depend on /bin/cp, always pull in coreutils 2022-07-12 08:19:57 +01:00
Tom Gundersen
9160319152 manifest/build: move out qemu-img
Let each pipeline that requires it pull in qemu-img.
2022-07-12 08:19:57 +01:00
Tom Gundersen
168aa40b2d manifest/build: don't expose extra build packages
The build packages should always be computed from its
dependents and there should be no need to override it. Drop the
ability, and all the unused code in fedora/*.

NOTE: due to a bug in a previous patch in this PR the extra
package set was never set on the build pipelines.
2022-07-04 23:04:29 +01:00
Tom Gundersen
e51e4e458f manifest: build packages - move over distro-wide package set
Move `distroBuildPackages()` from the distro to the pipelines.
2022-07-04 23:04:29 +01:00
Tom Gundersen
4961a17ba8 manifest: implicitly track pipelines in manifest
Pipelines are now added to their manifest on creation, and we
ensure that dependants are associated with the same manifest.
2022-07-04 23:04:29 +01:00
Tom Gundersen
28b8a790b5 manifest: provide depsolved packages when serializing
Rather than providing packageSpecs when constructing the
Manifest, do so at Serialize() time.

This allows the overall flow to be:

```
m := Manifest.New()
m.AddPipeline()
...
c := m.GetPackageSetChains()
p := Depsolve(c)
m.Serialize(p)
```
2022-07-04 23:04:29 +01:00
Tom Gundersen
8f9b6eef8f manifest/pipelines: add ExtraPackages
Allow the packages returned by a pipeline to be extended by setting
the optional property ExtraPackages.

In the case of OSPipeline, a further UserPackages property is added.
This allows the caller to set the set of packages that should be
depsolevd in a second transaction, on top of the one for the base
packages.

This functionality is currently unused so this is a noop.
2022-07-04 23:04:29 +01:00
Tom Gundersen
fc08579c29 manifest/build: implement getPackageSetChain
A build pipeline now tracks all its dependents, and each pipeline
now implements a `getBuildPackages()` method. For now those
return the empty slice, but will be extended by each pipeline in the
future.

`getPackageSetChain() of the build pipeline simply collects all the
build package sets of its dependents.
2022-07-04 23:04:29 +01:00
Tom Gundersen
0743eb2f81 manifest: use call-by-reference in pipeline interface
This allows interface methods to modify the state of the pipeline
objects. We will use this in subsequent patches.
2022-07-04 23:04:29 +01:00
Tom Gundersen
ef952c90a8 manifest/pipelines: rename getPackages()
Name it `getPackageSpecs()` instead so we can introduce a new
function `getPackages()` that is about package names rather than
full specs, in a follow-up commit.
2022-07-04 23:04:29 +01:00
Tom Gundersen
f791bde0e4 pipeline: fully encapsulate manifest generation
Make it the responsibility of each pipeline to track its required
sources, and use this to generate a manifest from its pipelines.

This removes the dependency on osbuild2 from distro.go, and the
only other uses of osbuild2 are to specify parameters in
ImageConfig, which will eventually go away too.

As a consequence, this only attaches the required sources for a
given manifest, rather than all known packages in the package set
map.
2022-07-04 23:04:29 +01:00
Renamed from internal/pipeline/build.go (Browse further)