func()

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
}