in targets/linux/deb/distro/pkg.go [23:71]
func (d *Config) BuildPkg(ctx context.Context, client gwclient.Client, worker llb.State, sOpt dalec.SourceOpts, spec *dalec.Spec, targetKey string, opts ...llb.ConstraintsOpt) (llb.State, error) {
opts = append(opts, dalec.ProgressGroup("Build deb package"))
versionID := d.VersionID
if versionID == "" {
var err error
versionID, err = deb.ReadDistroVersionID(ctx, client, worker)
if err != nil {
return worker, err
}
}
worker = worker.With(d.InstallBuildDeps(sOpt, spec, targetKey))
var cfg deb.SourcePkgConfig
extraPaths, err := prepareGo(ctx, client, &cfg, worker, spec, targetKey, opts...)
if err != nil {
return worker, err
}
srcPkg, err := deb.SourcePackage(ctx, sOpt, worker.With(extraPaths), spec, targetKey, versionID, cfg, opts...)
if err != nil {
return worker, err
}
builder := worker.With(dalec.SetBuildNetworkMode(spec))
st, err := deb.BuildDeb(builder, spec, srcPkg, versionID, opts...)
if err != nil {
return llb.Scratch(), err
}
// Filter out everything except the .deb files
filtered := llb.Scratch().File(
llb.Copy(st, "/", "/",
dalec.WithIncludes([]string{"**/*.deb"}),
),
)
signed, err := frontend.MaybeSign(ctx, client, filtered, spec, targetKey, sOpt)
if err != nil {
return llb.Scratch(), err
}
// Merge the signed state with the original state
// The signed files should overwrite the unsigned ones.
st = st.File(llb.Copy(signed, "/", "/"))
return st, nil
}