From f64226c09b996aec40a5b50f121afd46f16db14e Mon Sep 17 00:00:00 2001 From: Paulo Gomes Date: Fri, 29 Nov 2024 19:47:17 +0000 Subject: [PATCH 1/3] obs: Add rebuild_package step on push Signed-off-by: Paulo Gomes --- .obs/workflows.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.obs/workflows.yml b/.obs/workflows.yml index 7417f4f..ee0ca06 100644 --- a/.obs/workflows.yml +++ b/.obs/workflows.yml @@ -24,6 +24,9 @@ rebuild: - trigger_services: project: home:pjbgf:devel:languages:go:unstable package: qubesome + - rebuild_package: + project: home:pjbgf:devel:languages:go:unstable + package: qubesome filters: event: push branches: From 362a93106ca5961cc9787247b4ea623a50717025 Mon Sep 17 00:00:00 2001 From: Paulo Gomes Date: Fri, 29 Nov 2024 22:02:35 +0000 Subject: [PATCH 2/3] Move drive and env pkgs to internal/util Signed-off-by: Paulo Gomes --- go.mod | 1 - go.sum | 2 -- internal/profiles/profiles.go | 4 ++-- internal/qubesome/run.go | 4 ++-- internal/runners/docker/run.go | 2 +- internal/runners/podman/run.go | 2 +- internal/types/workload.go | 2 +- internal/{ => util}/drive/drive.go | 0 internal/{ => util}/drive/drive_test.go | 0 internal/{ => util}/env/env.go | 0 10 files changed, 7 insertions(+), 10 deletions(-) rename internal/{ => util}/drive/drive.go (100%) rename internal/{ => util}/drive/drive_test.go (100%) rename internal/{ => util}/env/env.go (100%) diff --git a/go.mod b/go.mod index 1eb57ac..2f0e8c0 100644 --- a/go.mod +++ b/go.mod @@ -35,6 +35,5 @@ require ( golang.org/x/net v0.31.0 // indirect golang.org/x/text v0.20.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc/security/advancedtls v1.0.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/go.sum b/go.sum index 24b7726..a93710f 100644 --- a/go.sum +++ b/go.sum @@ -100,8 +100,6 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= -google.golang.org/grpc/security/advancedtls v1.0.0 h1:/KQ7VP/1bs53/aopk9QhuPyFAp9Dm9Ejix3lzYkCrDA= -google.golang.org/grpc/security/advancedtls v1.0.0/go.mod h1:o+s4go+e1PJ2AjuQMY5hU82W7lDlefjJA6FqEHRVHWk= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/internal/profiles/profiles.go b/internal/profiles/profiles.go index d70fc86..31d7965 100644 --- a/internal/profiles/profiles.go +++ b/internal/profiles/profiles.go @@ -16,13 +16,13 @@ import ( "github.com/go-git/go-git/v5/plumbing/transport/ssh" "github.com/google/uuid" "github.com/qubesome/cli/internal/command" - "github.com/qubesome/cli/internal/drive" - "github.com/qubesome/cli/internal/env" "github.com/qubesome/cli/internal/files" "github.com/qubesome/cli/internal/images" "github.com/qubesome/cli/internal/runners/util/container" "github.com/qubesome/cli/internal/types" "github.com/qubesome/cli/internal/util/dbus" + "github.com/qubesome/cli/internal/util/drive" + "github.com/qubesome/cli/internal/util/env" "github.com/qubesome/cli/internal/util/gpu" "github.com/qubesome/cli/internal/util/mtls" "github.com/qubesome/cli/internal/util/resolution" diff --git a/internal/qubesome/run.go b/internal/qubesome/run.go index af1165e..471d4a9 100644 --- a/internal/qubesome/run.go +++ b/internal/qubesome/run.go @@ -12,8 +12,6 @@ import ( securejoin "github.com/cyphar/filepath-securejoin" "github.com/qubesome/cli/internal/command" - "github.com/qubesome/cli/internal/drive" - "github.com/qubesome/cli/internal/env" "github.com/qubesome/cli/internal/files" "github.com/qubesome/cli/internal/images" "github.com/qubesome/cli/internal/inception" @@ -22,6 +20,8 @@ import ( "github.com/qubesome/cli/internal/runners/podman" "github.com/qubesome/cli/internal/types" "github.com/qubesome/cli/internal/util/dbus" + "github.com/qubesome/cli/internal/util/drive" + "github.com/qubesome/cli/internal/util/env" "gopkg.in/yaml.v3" ) diff --git a/internal/runners/docker/run.go b/internal/runners/docker/run.go index 29e4e04..b120bc3 100644 --- a/internal/runners/docker/run.go +++ b/internal/runners/docker/run.go @@ -9,13 +9,13 @@ import ( "strconv" "strings" - "github.com/qubesome/cli/internal/env" "github.com/qubesome/cli/internal/files" "github.com/qubesome/cli/internal/runners/util/container" "github.com/qubesome/cli/internal/runners/util/mime" "github.com/qubesome/cli/internal/runners/util/usb" "github.com/qubesome/cli/internal/types" "github.com/qubesome/cli/internal/util/dbus" + "github.com/qubesome/cli/internal/util/env" "github.com/qubesome/cli/internal/util/gpu" "golang.org/x/sys/execabs" ) diff --git a/internal/runners/podman/run.go b/internal/runners/podman/run.go index 14b04ca..fa1ffbb 100644 --- a/internal/runners/podman/run.go +++ b/internal/runners/podman/run.go @@ -9,13 +9,13 @@ import ( "strconv" "strings" - "github.com/qubesome/cli/internal/env" "github.com/qubesome/cli/internal/files" "github.com/qubesome/cli/internal/runners/util/container" "github.com/qubesome/cli/internal/runners/util/mime" "github.com/qubesome/cli/internal/runners/util/usb" "github.com/qubesome/cli/internal/types" "github.com/qubesome/cli/internal/util/dbus" + "github.com/qubesome/cli/internal/util/env" "github.com/qubesome/cli/internal/util/gpu" "golang.org/x/sys/execabs" ) diff --git a/internal/types/workload.go b/internal/types/workload.go index 4159d69..671285c 100644 --- a/internal/types/workload.go +++ b/internal/types/workload.go @@ -6,7 +6,7 @@ import ( "slices" "strings" - "github.com/qubesome/cli/internal/env" + "github.com/qubesome/cli/internal/util/env" ) type Workload struct { diff --git a/internal/drive/drive.go b/internal/util/drive/drive.go similarity index 100% rename from internal/drive/drive.go rename to internal/util/drive/drive.go diff --git a/internal/drive/drive_test.go b/internal/util/drive/drive_test.go similarity index 100% rename from internal/drive/drive_test.go rename to internal/util/drive/drive_test.go diff --git a/internal/env/env.go b/internal/util/env/env.go similarity index 100% rename from internal/env/env.go rename to internal/util/env/env.go From 53e1f3a626a8ca1e5f630e1cf79cfaeaec6e665b Mon Sep 17 00:00:00 2001 From: Paulo Gomes Date: Fri, 29 Nov 2024 22:28:55 +0000 Subject: [PATCH 3/3] Add GPU support for podman Signed-off-by: Paulo Gomes --- internal/profiles/profiles.go | 15 +++++++++------ internal/runners/podman/run.go | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/profiles/profiles.go b/internal/profiles/profiles.go index 31d7965..8f6bbd6 100644 --- a/internal/profiles/profiles.go +++ b/internal/profiles/profiles.go @@ -168,10 +168,6 @@ func StartFromGit(runner, name, gitURL, path, local string) error { return fmt.Errorf("cannot file profile %q in config %q", name, cfgPath) } - if p.Runner != "" { - runner = p.Runner - } - // When sourcing from git, ensure profile path is relative to the git repository. pp, err := securejoin.SecureJoin(filepath.Dir(cfgPath), p.Path) if err != nil { @@ -198,6 +194,12 @@ func Start(runner string, profile *types.Profile, cfg *types.Config) (err error) return err } + // If runner is not being overwritten (via -runner), use the runner + // set at profile level in the config. + if runner == "" && profile.Runner != "" { + runner = profile.Runner + } + binary := files.ContainerRunnerBinary(runner) fi, err := os.Lstat(binary) if err != nil || !fi.Mode().IsRegular() { @@ -502,9 +504,10 @@ func createNewDisplay(bin string, ca, cert, key []byte, profile *types.Profile, } if profile.HostAccess.Gpus != "" { if strings.HasSuffix(bin, "podman") { - dockerArgs = append(dockerArgs, "--runtime=nvidia.com/gpu=all") + dockerArgs = append(dockerArgs, "--device=nvidia.com/gpu=all") + } else { + dockerArgs = append(dockerArgs, "--gpus", profile.HostAccess.Gpus) } - dockerArgs = append(dockerArgs, "--gpus", profile.HostAccess.Gpus) } if profile.DNS != "" { diff --git a/internal/runners/podman/run.go b/internal/runners/podman/run.go index fa1ffbb..5677a38 100644 --- a/internal/runners/podman/run.go +++ b/internal/runners/podman/run.go @@ -82,7 +82,7 @@ func Run(ew types.EffectiveWorkload) error { } if wl.HostAccess.Gpus != "" { - args = append(args, "--gpus", wl.HostAccess.Gpus) + args = append(args, "--device=nvidia.com/gpu=all") } for _, cap := range wl.HostAccess.CapsAdd {