mirror of https://github.com/containers/podman.git
				
				
				
			Properly handle OCI runtime being set to a path
This is done by the --runtime flag, and as such, by all our CI. Signed-off-by: Matthew Heon <matthew.heon@pm.me>
This commit is contained in:
		
							parent
							
								
									3d78085d52
								
							
						
					
					
						commit
						7377870641
					
				|  | @ -6,6 +6,7 @@ import ( | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" | 	"path/filepath" | ||||||
|  | 	"strings" | ||||||
| 	"sync" | 	"sync" | ||||||
| 	"syscall" | 	"syscall" | ||||||
| 
 | 
 | ||||||
|  | @ -837,14 +838,36 @@ func makeRuntime(ctx context.Context, runtime *Runtime) (err error) { | ||||||
| 		runtime.ociRuntimes[name] = ociRuntime | 		runtime.ociRuntimes[name] = ociRuntime | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Set default runtime
 | 	// Do we have a default OCI runtime?
 | ||||||
| 	if runtime.config.OCIRuntime != "" { | 	if runtime.config.OCIRuntime != "" { | ||||||
|  | 		// If the string starts with / it's a path to a runtime
 | ||||||
|  | 		// executable.
 | ||||||
|  | 		if strings.HasPrefix(runtime.config.OCIRuntime, "/") { | ||||||
|  | 			name := filepath.Base(runtime.config.OCIRuntime) | ||||||
|  | 
 | ||||||
|  | 			supportsJSON := false | ||||||
|  | 			for _, r := range runtime.config.RuntimeSupportsJSON { | ||||||
|  | 				if r == name { | ||||||
|  | 					supportsJSON = true | ||||||
|  | 					break | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			ociRuntime, err := newOCIRuntime(name, []string{runtime.config.OCIRuntime}, runtime.conmonPath, runtime.config, supportsJSON) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return err | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			runtime.ociRuntimes[name] = ociRuntime | ||||||
|  | 			runtime.defaultOCIRuntime = ociRuntime | ||||||
|  | 		} else { | ||||||
| 			ociRuntime, ok := runtime.ociRuntimes[runtime.config.OCIRuntime] | 			ociRuntime, ok := runtime.ociRuntimes[runtime.config.OCIRuntime] | ||||||
| 			if !ok { | 			if !ok { | ||||||
| 				return errors.Wrapf(ErrInvalidArg, "default OCI runtime %q not found", runtime.config.OCIRuntime) | 				return errors.Wrapf(ErrInvalidArg, "default OCI runtime %q not found", runtime.config.OCIRuntime) | ||||||
| 			} | 			} | ||||||
| 			runtime.defaultOCIRuntime = ociRuntime | 			runtime.defaultOCIRuntime = ociRuntime | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	// Do we have at least one valid OCI runtime?
 | 	// Do we have at least one valid OCI runtime?
 | ||||||
| 	if len(runtime.ociRuntimes) == 0 { | 	if len(runtime.ociRuntimes) == 0 { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue