MCPcopy Index your code
hub / github.com/linuxkit/linuxkit / Build

Method Build

src/cmd/linuxkit/pkglib/build_test.go:59–203  ·  view source on GitHub ↗
(ctx context.Context, tag, pkg, dockerContext, builderImage, builderConfigPath, platform string, builderRestart, preCacheImages bool, c spec.CacheProvider, r io.Reader, stdout io.Writer, sbomScan bool, sbomScannerImage, progress string, imageBuildOpts spec.ImageBuildOptions)

Source from the content-addressed store, hash-verified

57 return nil, fmt.Errorf("not implemented")
58}
59func (d *dockerMocker) Build(ctx context.Context, tag, pkg, dockerContext, builderImage, builderConfigPath, platform string, builderRestart, preCacheImages bool, c spec.CacheProvider, r io.Reader, stdout io.Writer, sbomScan bool, sbomScannerImage, progress string, imageBuildOpts spec.ImageBuildOptions) error {
60 if !d.enableBuild {
61 return errors.New("build disabled")
62 }
63 d.builds = append(d.builds, buildLog{tag, pkg, dockerContext, platform})
64 // must create a tar stream that looks somewhat normal to pass to stdout
65 // what we need:
66 // a config blob (random data)
67 // a layer blob (random data)
68 // a manifest blob (from the above)
69 // an index blob (points to the manifest)
70 // index.json (points to the index)
71 tw := tar.NewWriter(stdout)
72 defer func() {
73 _ = tw.Close()
74 }()
75 buf := make([]byte, 128)
76
77 var (
78 configHash, layerHash, manifestHash, indexHash v1.Hash
79 configSize, layerSize, manifestSize, indexSize int64
80 )
81 // config blob
82 if _, err := rand.Read(buf); err != nil {
83 return err
84 }
85 hash, _, err := v1.SHA256(bytes.NewReader(buf))
86 if err != nil {
87 return err
88 }
89 if err := tw.WriteHeader(&tar.Header{Name: fmt.Sprintf("blobs/sha256/%s", hash.Hex), Size: int64(len(buf))}); err != nil {
90 return err
91 }
92 if _, err := tw.Write(buf); err != nil {
93 return err
94 }
95 configHash = hash
96 configSize = int64(len(buf))
97
98 // layer blob
99 if _, err := rand.Read(buf); err != nil {
100 return err
101 }
102 hash, _, err = v1.SHA256(bytes.NewReader(buf))
103 if err != nil {
104 return err
105 }
106 if err := tw.WriteHeader(&tar.Header{Name: fmt.Sprintf("blobs/sha256/%s", hash.Hex), Size: int64(len(buf))}); err != nil {
107 return err
108 }
109 if _, err := tw.Write(buf); err != nil {
110 return err
111 }
112 layerHash = hash
113 layerSize = int64(len(buf))
114
115 // manifest
116 manifest := v1.Manifest{

Callers

nothing calls this directly

Calls 4

CloseMethod · 0.95
WriteHeaderMethod · 0.95
WriteMethod · 0.95
ReadMethod · 0.45

Tested by

no test coverage detected