@@ -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
4344var 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