File tree Expand file tree Collapse file tree 5 files changed +442
-0
lines changed Expand file tree Collapse file tree 5 files changed +442
-0
lines changed Original file line number Diff line number Diff line change
1
+ //go:build nvidia
2
+ // +build nvidia
3
+
4
+ package main
5
+
6
+ import (
7
+ _ "github.com/moby/buildkit/contrib/cdisetup/nvidia"
8
+ )
Original file line number Diff line number Diff line change
1
+ package nvidia
2
+
3
+ import (
4
+ "bufio"
5
+ "bytes"
6
+ "os/exec"
7
+ "strings"
8
+
9
+ "github.com/pkg/errors"
10
+ )
11
+
12
+ type PackageInfo struct {
13
+ Package string `json:"Package"`
14
+ Description string `json:"Description"`
15
+ }
16
+
17
+ func searchAptCache (query string ) ([]PackageInfo , error ) {
18
+ cmd := exec .Command ("apt-cache" , "search" , query )
19
+ var out bytes.Buffer
20
+ cmd .Stdout = & out
21
+
22
+ if err := cmd .Run (); err != nil {
23
+ return nil , errors .Wrapf (err , "failed to run apt-cache search" )
24
+ }
25
+
26
+ var packages []PackageInfo
27
+ scanner := bufio .NewScanner (& out )
28
+ for scanner .Scan () {
29
+ line := scanner .Text ()
30
+ parts := strings .SplitN (line , " - " , 2 )
31
+ if len (parts ) == 2 {
32
+ pkg := PackageInfo {
33
+ Package : strings .TrimSpace (parts [0 ]),
34
+ Description : strings .TrimSpace (parts [1 ]),
35
+ }
36
+ packages = append (packages , pkg )
37
+ }
38
+ }
39
+
40
+ if err := scanner .Err (); err != nil {
41
+ return nil , errors .Wrapf (err , "failed to read apt-cache search output" )
42
+ }
43
+
44
+ return packages , nil
45
+ }
Original file line number Diff line number Diff line change
1
+ package nvidia
2
+
3
+ import (
4
+ "log"
5
+
6
+ "github.com/moby/buildkit/client"
7
+ "github.com/moby/buildkit/identity"
8
+ "github.com/moby/buildkit/util/progress"
9
+ digest "github.com/opencontainers/go-digest"
10
+ )
11
+
12
+ func newStream (pw progress.Writer , stream int , dgst digest.Digest ) * streamWriter {
13
+ return & streamWriter {
14
+ pw : pw ,
15
+ stream : stream ,
16
+ dgst : dgst ,
17
+ }
18
+ }
19
+
20
+ type streamWriter struct {
21
+ pw progress.Writer
22
+ stream int
23
+ dgst digest.Digest
24
+ }
25
+
26
+ func (sw * streamWriter ) Write (dt []byte ) (int , error ) {
27
+ err := sw .pw .Write (identity .NewID (), client.VertexLog {
28
+ Vertex : sw .dgst ,
29
+ Stream : sw .stream ,
30
+ Data : dt ,
31
+ })
32
+ if err != nil {
33
+ return 0 , err
34
+ }
35
+ log .Printf ("%d %s" , sw .stream , dt )
36
+ return len (dt ), nil
37
+ }
You can’t perform that action at this time.
0 commit comments