mirror of
https://github.com/mudler/luet.git
synced 2025-09-06 17:50:34 +00:00
Add WIP Compiler steps for rootfs
This commit is contained in:
@@ -52,11 +52,43 @@ func (cs *LuetCompiler) Compile(p CompilationSpec) (Artifact, error) {
|
|||||||
// Treat last case (easier) first. The image is provided and we just compute a plain dockerfile with the images listed as above
|
// Treat last case (easier) first. The image is provided and we just compute a plain dockerfile with the images listed as above
|
||||||
|
|
||||||
if p.GetImage() != "" {
|
if p.GetImage() != "" {
|
||||||
p.SetSeedImage(p.GetImage())
|
p.SetSeedImage(p.GetImage()) // In this case, we ignore the build deps as we suppose that the image has them - otherwise we recompose the tree with a solver,
|
||||||
p.WriteBuildImageDefinition(p.Rel(p.GetPackage().GetFingerPrint() + ".dockerfile"))
|
// and we build all the images first.
|
||||||
//p.WriteBuildImageDefinition(path)
|
|
||||||
//backend.BuildImage(path)
|
// First we create the builder image
|
||||||
//backend.RunSteps(CompilationSpec)
|
p.WriteBuildImageDefinition(p.Rel(p.GetPackage().GetFingerPrint() + "-builder.dockerfile"))
|
||||||
|
builderOpts := CompilerBackendOptions{
|
||||||
|
ImageName: "luet/" + p.GetPackage().GetFingerPrint() + "-builder",
|
||||||
|
SourcePath: p.GetOutputPath(),
|
||||||
|
DockerFileName: p.Rel(p.GetPackage().GetFingerPrint() + "-builder.dockerfile"),
|
||||||
|
Destination: p.Rel(p.GetPackage().GetFingerPrint() + "-builder.rootfs.tar"),
|
||||||
|
}
|
||||||
|
err := cs.Backend.BuildImage(builderOpts)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Then we write the step image, which uses the builder one
|
||||||
|
p.WriteStepImageDefinition("luet/"+p.GetPackage().GetFingerPrint()+"-builder", p.Rel(p.GetPackage().GetFingerPrint()+".dockerfile"))
|
||||||
|
runnerOpts := CompilerBackendOptions{
|
||||||
|
ImageName: "luet/" + p.GetPackage().GetFingerPrint(),
|
||||||
|
SourcePath: p.GetOutputPath(),
|
||||||
|
DockerFileName: p.Rel(p.GetPackage().GetFingerPrint() + ".dockerfile"),
|
||||||
|
Destination: p.Rel(p.GetPackage().GetFingerPrint() + ".rootfs.tar"),
|
||||||
|
}
|
||||||
|
err = cs.Backend.ImageDefinitionToTar(runnerOpts)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Handle caching and optionally do not remove things
|
||||||
|
err = cs.Backend.RemoveImage(builderOpts)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Delta should be the artifact
|
||||||
|
return NewPackageArtifact(p.Rel(p.GetPackage().GetFingerPrint() + ".rootfs.tar")), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, errors.New("Not implemented yet")
|
return nil, errors.New("Not implemented yet")
|
||||||
|
@@ -18,7 +18,7 @@ package compiler
|
|||||||
import pkg "github.com/mudler/luet/pkg/package"
|
import pkg "github.com/mudler/luet/pkg/package"
|
||||||
|
|
||||||
type Compiler interface {
|
type Compiler interface {
|
||||||
Compile(CompilationSpec) (*Artifact, error)
|
Compile(CompilationSpec) (Artifact, error)
|
||||||
FromPackage(pkg.Package) (CompilationSpec, error)
|
FromPackage(pkg.Package) (CompilationSpec, error)
|
||||||
|
|
||||||
SetBackend(CompilerBackend)
|
SetBackend(CompilerBackend)
|
||||||
|
Reference in New Issue
Block a user