From 3acee29cf404e50540584e3d7b5a15f72ea44839 Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 12 Sep 2023 18:23:18 +0200 Subject: [PATCH] pkg/specgen: do not depend on libimage for remote This is the last place were the remote client pulls in libimage, with this the podman-remote binary size decreases from 44788 KB to 39424 KB (not stripped). This change simply fixes that by gating it behind the remote build tag. Of course it would be a bit cleaner to never leak libimage into pkg/specgen and only have it in pkg/specgen/generate. But this would be much more involved with big chnages so I went with the easy and quick way instead. [NO NEW TESTS NEEDED] Signed-off-by: Paul Holzinger --- pkg/specgen/specgen.go | 16 +--------------- pkg/specgen/specgen_local.go | 23 +++++++++++++++++++++++ pkg/specgen/specgen_remote.go | 8 ++++++++ 3 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 pkg/specgen/specgen_local.go create mode 100644 pkg/specgen/specgen_remote.go diff --git a/pkg/specgen/specgen.go b/pkg/specgen/specgen.go index 52ddf3d396..12b9e06854 100644 --- a/pkg/specgen/specgen.go +++ b/pkg/specgen/specgen.go @@ -6,7 +6,6 @@ import ( "strings" "syscall" - "github.com/containers/common/libimage" nettypes "github.com/containers/common/libnetwork/types" "github.com/containers/image/v5/manifest" "github.com/containers/podman/v4/libpod/define" @@ -570,20 +569,7 @@ type SpecGenerator struct { ContainerResourceConfig ContainerHealthCheckConfig - image *libimage.Image `json:"-"` - resolvedImageName string `json:"-"` -} - -// SetImage sets the associated for the generator. -func (s *SpecGenerator) SetImage(image *libimage.Image, resolvedImageName string) { - s.image = image - s.resolvedImageName = resolvedImageName -} - -// Image returns the associated image for the generator. -// May be nil if no image has been set yet. -func (s *SpecGenerator) GetImage() (*libimage.Image, string) { - return s.image, s.resolvedImageName + cacheLibImage } func (s *SpecGenerator) IsInitContainer() bool { diff --git a/pkg/specgen/specgen_local.go b/pkg/specgen/specgen_local.go new file mode 100644 index 0000000000..9e84249c43 --- /dev/null +++ b/pkg/specgen/specgen_local.go @@ -0,0 +1,23 @@ +//go:build !remote +// +build !remote + +package specgen + +import "github.com/containers/common/libimage" + +type cacheLibImage struct { + image *libimage.Image `json:"-"` + resolvedImageName string `json:"-"` +} + +// SetImage sets the associated for the generator. +func (s *SpecGenerator) SetImage(image *libimage.Image, resolvedImageName string) { + s.image = image + s.resolvedImageName = resolvedImageName +} + +// Image returns the associated image for the generator. +// May be nil if no image has been set yet. +func (s *SpecGenerator) GetImage() (*libimage.Image, string) { + return s.image, s.resolvedImageName +} diff --git a/pkg/specgen/specgen_remote.go b/pkg/specgen/specgen_remote.go new file mode 100644 index 0000000000..d6c6102846 --- /dev/null +++ b/pkg/specgen/specgen_remote.go @@ -0,0 +1,8 @@ +//go:build remote +// +build remote + +package specgen + +// Empty stub we do not use any libimage on the remote client, +// this drastically decreases binary size for the remote client. +type cacheLibImage struct{}