From efe5e98d06330548a8c9c1f653f0c6060b85e2be Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 17 Oct 2023 15:00:46 +0200 Subject: [PATCH] use FindInitBinary() for init binary Use the new FindInitBinary() function to lookup the init binary, this allows the use of helper_binaries_dir in contianers.conf[1] [NO NEW TESTS NEEDED] [1] https://github.com/containers/common/issues/1110 Signed-off-by: Paul Holzinger --- pkg/specgen/generate/container_create.go | 2 +- pkg/specgen/generate/oci.go | 11 ++--------- pkg/specgen/generate/pause_image.go | 2 +- pkg/specgen/generate/storage.go | 7 +++++-- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/pkg/specgen/generate/container_create.go b/pkg/specgen/generate/container_create.go index febf7276b6..bb96a32a7e 100644 --- a/pkg/specgen/generate/container_create.go +++ b/pkg/specgen/generate/container_create.go @@ -227,7 +227,7 @@ func MakeContainer(ctx context.Context, rt *libpod.Runtime, s *specgen.SpecGener options = append(options, libpod.WithHostUsers(s.HostUsers)) } - command, err := makeCommand(s, imageData, rtc) + command, err := makeCommand(s, imageData) if err != nil { return nil, nil, nil, err } diff --git a/pkg/specgen/generate/oci.go b/pkg/specgen/generate/oci.go index eb899a716a..fdeebe333e 100644 --- a/pkg/specgen/generate/oci.go +++ b/pkg/specgen/generate/oci.go @@ -8,7 +8,6 @@ import ( "strings" "github.com/containers/common/libimage" - "github.com/containers/common/pkg/config" "github.com/containers/podman/v4/libpod/define" "github.com/containers/podman/v4/pkg/specgen" "github.com/opencontainers/runtime-tools/generate" @@ -24,7 +23,7 @@ func addRlimits(s *specgen.SpecGenerator, g *generate.Generator) { } // Produce the final command for the container. -func makeCommand(s *specgen.SpecGenerator, imageData *libimage.ImageData, rtc *config.Config) ([]string, error) { +func makeCommand(s *specgen.SpecGenerator, imageData *libimage.ImageData) ([]string, error) { finalCommand := []string{} entrypoint := s.Entrypoint @@ -51,13 +50,7 @@ func makeCommand(s *specgen.SpecGenerator, imageData *libimage.ImageData, rtc *c } if s.Init { - initPath := s.InitPath - if initPath == "" && rtc != nil { - initPath = rtc.Engine.InitPath - } - if initPath == "" { - return nil, fmt.Errorf("no path to init binary found but container requested an init") - } + // bind mount for this binary is added in addContainerInitBinary() finalCommand = append([]string{define.ContainerInitPath, "--"}, finalCommand...) } diff --git a/pkg/specgen/generate/pause_image.go b/pkg/specgen/generate/pause_image.go index 6df46882f3..9e131625b0 100644 --- a/pkg/specgen/generate/pause_image.go +++ b/pkg/specgen/generate/pause_image.go @@ -55,7 +55,7 @@ func buildPauseImage(rt *libpod.Runtime, rtConfig *config.Config) (string, error // Also look into the path as some distributions install catatonit in // /usr/bin. - catatonitPath, err := rtConfig.FindHelperBinary("catatonit", true) + catatonitPath, err := rtConfig.FindInitBinary() if err != nil { return "", fmt.Errorf("finding pause binary: %w", err) } diff --git a/pkg/specgen/generate/storage.go b/pkg/specgen/generate/storage.go index 0c81821c62..4a7c776364 100644 --- a/pkg/specgen/generate/storage.go +++ b/pkg/specgen/generate/storage.go @@ -131,8 +131,11 @@ func finalizeMounts(ctx context.Context, s *specgen.SpecGenerator, rt *libpod.Ru // If requested, add container init binary if s.Init { initPath := s.InitPath - if initPath == "" && rtc != nil { - initPath = rtc.Engine.InitPath + if initPath == "" { + initPath, err = rtc.FindInitBinary() + if err != nil { + return nil, nil, nil, fmt.Errorf("lookup init binary: %w", err) + } } initMount, err := addContainerInitBinary(s, initPath) if err != nil {