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