Skip to content

Commit

Permalink
Add BuiltFor field to podman info
Browse files Browse the repository at this point in the history
BuiltFor is a field that can be set at build time by packagers. This helps us trace how and where the binary was built and installed from, allowing us to see if the issue is due to a specfic installation or a general podman bug. This field shows up in podman version and in podman info when populated.

Automatically set the BuiltFor field when building the macOS pkginstaller to pkginstaller.

Usage: make podman-remote BUILT_FOR="mypackaging"

Signed-off-by: Ashley Cui <acui@redhat.com>
  • Loading branch information
ashley-cui committed Dec 6, 2024
1 parent 02a9d9c commit 0845480
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 1 deletion.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ GOFLAGS ?= -trimpath
LDFLAGS_PODMAN ?= \
$(if $(GIT_COMMIT),-X $(LIBPOD)/define.gitCommit=$(GIT_COMMIT),) \
$(if $(BUILD_INFO),-X $(LIBPOD)/define.buildInfo=$(BUILD_INFO),) \
$(if $(BUILT_FOR),-X $(LIBPOD)/define.builtFor=$(BUILT_FOR),) \
-X $(LIBPOD)/config._installPrefix=$(PREFIX) \
-X $(LIBPOD)/config._etcDir=$(ETCDIR) \
-X $(PROJECT)/v5/pkg/systemd/quadlet._binDir=$(BINDIR) \
Expand Down
2 changes: 2 additions & 0 deletions cmd/podman/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ type clientInfo struct {
OSArch string `json:"OS"`
Provider string `json:"provider"`
Version string `json:"version"`
BuiltFor string `json:"builtFor,omitempty" yaml:",omitempty"`
}

func getClientInfo() (*clientInfo, error) {
Expand All @@ -21,5 +22,6 @@ func getClientInfo() (*clientInfo, error) {
OSArch: vinfo.OsArch,
Provider: p,
Version: vinfo.Version,
BuiltFor: vinfo.BuiltFor,
}, nil
}
2 changes: 2 additions & 0 deletions cmd/podman/system/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ API Version:\t{{.APIVersion}}
Go Version:\t{{.GoVersion}}
{{if .GitCommit -}}Git Commit:\t{{.GitCommit}}\n{{end -}}
Built:\t{{.BuiltTime}}
{{if .BuiltFor -}}Built For:\t{{.BuiltFor}}\n{{end -}}
OS/Arch:\t{{.OsArch}}
{{- end}}
Expand All @@ -108,6 +109,7 @@ API Version:\t{{.APIVersion}}
Go Version:\t{{.GoVersion}}
{{if .GitCommit -}}Git Commit:\t{{.GitCommit}}\n{{end -}}
Built:\t{{.BuiltTime}}
{{if .BuiltFor -}}Built For:\t{{.BuiltFor}}\n{{end -}}
OS/Arch:\t{{.OsArch}}
{{- end}}{{- end}}
`
3 changes: 2 additions & 1 deletion contrib/pkginstaller/package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ PRODUCTSIGN_IDENTITY=${PRODUCTSIGN_IDENTITY:-mock}
NO_CODESIGN=${NO_CODESIGN:-0}
HELPER_BINARIES_DIR="/opt/podman/bin"
MACHINE_POLICY_JSON_DIR="/opt/podman/config"
BUILT_FOR="pkginstaller"

tmpBin="contrib/pkginstaller/tmp-bin"

Expand Down Expand Up @@ -42,7 +43,7 @@ function build_podman() {
}

function build_podman_arch(){
make -B GOARCH="$1" podman-remote HELPER_BINARIES_DIR="${HELPER_BINARIES_DIR}"
make -B GOARCH="$1" podman-remote HELPER_BINARIES_DIR="${HELPER_BINARIES_DIR}" BUILT_FOR="${BUILT_FOR}"
make -B GOARCH="$1" podman-mac-helper
mkdir -p "${tmpBin}"
cp bin/darwin/podman "${tmpBin}/podman-$1"
Expand Down
5 changes: 5 additions & 0 deletions libpod/define/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ var (
// BuildInfo is the time at which the binary was built
// It will be populated by the Makefile.
buildInfo string
// BuiltFor is the packager of the binary.
// It will be populated at build-time.
builtFor string
)

// Version is an output struct for API
Expand All @@ -26,6 +29,7 @@ type Version struct {
GitCommit string
BuiltTime string
Built int64
BuiltFor string `json:",omitempty" yaml:",omitempty"`
OsArch string
Os string
}
Expand All @@ -49,6 +53,7 @@ func GetVersion() (Version, error) {
GitCommit: gitCommit,
BuiltTime: time.Unix(buildTime, 0).Format(time.ANSIC),
Built: buildTime,
BuiltFor: builtFor,
OsArch: runtime.GOOS + "/" + runtime.GOARCH,
Os: runtime.GOOS,
}, nil
Expand Down

0 comments on commit 0845480

Please sign in to comment.