in packaging/linux/deb/pkg.go [75:123]
func SourcePackage(ctx context.Context, sOpt dalec.SourceOpts, worker llb.State, spec *dalec.Spec, targetKey, distroVersionID string, cfg SourcePkgConfig, opts ...llb.ConstraintsOpt) (llb.State, error) {
if err := validateSpec(spec); err != nil {
return llb.Scratch(), err
}
dr, err := Debroot(ctx, sOpt, spec, worker, llb.Scratch(), targetKey, "", distroVersionID, cfg, opts...)
if err != nil {
return llb.Scratch(), err
}
sources, err := dalec.Sources(spec, sOpt)
if err != nil {
return llb.Scratch(), err
}
gomodSt, err := spec.GomodDeps(sOpt, worker, opts...)
if err != nil {
return llb.Scratch(), errors.Wrap(err, "error preparing gomod deps")
}
cargohomeSt, err := spec.CargohomeDeps(sOpt, worker, opts...)
if err != nil {
return llb.Scratch(), errors.Wrap(err, "error preparing cargohome deps")
}
if gomodSt != nil {
sources[gomodsName] = *gomodSt
}
if cargohomeSt != nil {
sources[cargohomeName] = *cargohomeSt
}
patches := createPatches(spec, sources, worker, dr, opts...)
work := worker.Run(
dalec.ShArgs("set -e; ls -lh; dpkg-buildpackage -S -us -uc; mkdir -p /tmp/out; ls -lh; cp -r /work/"+spec.Name+"_"+spec.Version+"* /tmp/out; ls -lh /tmp/out"),
llb.Dir("/work/pkg"),
llb.AddMount("/work/pkg/debian", dr, llb.SourcePath("debian")), // This cannot be readonly because the debian directory gets modified by dpkg-buildpackage
llb.AddMount("/work/pkg/debian/patches", patches, llb.Readonly),
llb.AddEnv("DH_VERBOSE", "1"),
dalec.RunOptFunc(func(ei *llb.ExecInfo) {
debSources := TarDebSources(worker, spec, sources, "src.tar.gz", sOpt, opts...)
llb.AddMount("/work/"+spec.Name+"_"+spec.Version+".orig.tar.gz", debSources, llb.SourcePath("src.tar.gz")).SetRunOption(ei)
}),
dalec.WithConstraints(opts...),
)
return work.AddMount("/tmp/out", llb.Scratch()), nil
}