Skip to content

Commit ab3df8f

Browse files
authored
Add support for building OBI with Podman (#797)
* Make build work with podman * Make OCI_BIN the default for OTEL_EBPF_GENFILES_OCI_BIN
1 parent 55e7b1f commit ab3df8f

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

cmd/obi-genfiles/obi_genfiles.go

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ type config struct {
3636
ContainerPrefix string `env:"OTEL_EBPF_GENFILES_CONTAINER_PREFIX" envDefault:"/__w/"`
3737
HostPrefix string `env:"OTEL_EBPF_GENFILES_HOST_PREFIX" envDefault:"/home/runner/work/"`
3838
Package string `env:"OTEL_EBPF_GENFILES_PKG" envDefault:"go.opentelemetry.io/obi/pkg/obi"`
39-
OCIBin string `env:"OTEL_EBPF_GENFILES_OCI_BIN" envDefault:"docker"`
39+
GenFilesOCIBin string `env:"OTEL_EBPF_GENFILES_OCI_BIN"`
4040
GenImage string `env:"OTEL_EBPF_GENFILES_GEN_IMG"`
41+
OCIBin string `env:"OCI_BIN" envDefault:"docker"`
4142
}
4243

4344
var cfg config
@@ -448,16 +449,22 @@ func runInContainer(wd string) {
448449
fmt.Println("adjusted wd:", adjustedWD)
449450
}
450451

451-
currentUser, err := user.Current()
452-
if err != nil {
453-
bail(fmt.Errorf("error getting current user id: %w", err))
452+
args := make([]string, 0, 10)
453+
args = append(args, "run", "--rm")
454+
if strings.HasSuffix(cfg.GenFilesOCIBin, "podman") {
455+
args = append(args, "--userns=keep-id")
456+
} else {
457+
currentUser, err := user.Current()
458+
if err != nil {
459+
bail(fmt.Errorf("error getting current user id: %w", err))
460+
}
461+
args = append(args, "--user", currentUser.Uid+":"+currentUser.Gid)
454462
}
463+
args = append(args, "-v", adjustedWD+":/src:z")
464+
args = append(args, "-e", "OTEL_EBPF_GENFILES_MODIFIED_ONLY="+strconv.FormatBool(cfg.GenModifiedOnly))
465+
args = append(args, cfg.GenImage)
455466

456-
err = executeCommand(cfg.OCIBin, "run", "--rm",
457-
"--user", currentUser.Uid+":"+currentUser.Gid,
458-
"-v", adjustedWD+":/src",
459-
"-e", "OTEL_EBPF_GENFILES_MODIFIED_ONLY="+strconv.FormatBool(cfg.GenModifiedOnly),
460-
cfg.GenImage)
467+
err := executeCommand(cfg.GenFilesOCIBin, args...)
461468
if err != nil {
462469
bail(fmt.Errorf("error waiting for child process: %w", err))
463470
}
@@ -557,6 +564,9 @@ func main() {
557564
if err := env.Parse(&cfg); err != nil {
558565
bail(fmt.Errorf("error loading config: %w", err))
559566
}
567+
if len(cfg.GenFilesOCIBin) == 0 {
568+
cfg.GenFilesOCIBin = cfg.OCIBin
569+
}
560570

561571
wd, err := moduleRoot()
562572
if err != nil {

0 commit comments

Comments
 (0)