macOS doesn't ship with the GNU version of `date`, which
causes the command to fail if the `--rfc-3339 ns` format option
is used.
Given that we don't need the build-time with nanosecond precision,
this patch changes the format used, so that the CLI binary can be
built on the host (outside of a container);
Before this change, `make binary` would fail:
DISABLE_WARN_OUTSIDE_CONTAINER=1 make binary
WARNING: binary creates a Linux executable. Use cross for macOS or Windows.
./scripts/build/binary
make: *** [binary] Error 1
With this change, the binary can be built on the host:
DISABLE_WARN_OUTSIDE_CONTAINER=1 make binary
WARNING: binary creates a Linux executable. Use cross for macOS or Windows.
./scripts/build/binary
Building statically linked build/docker-darwin-amd64
While the previous version formatted (and parsed) the date with nanoseconds precision,
that level of precision is not actually used;
```go
func reformatDate(buildTime string) string {
t, errTime := time.Parse(time.RFC3339Nano, buildTime)
if errTime == nil {
return t.Format(time.ANSIC)
}
return buildTime
}
```
Both the old, and new input will yield the same output:
```go
fmt.Println(reformatDate("2019-12-31T13:41:44.846741804+00:00"))
// Tue Dec 31 13:41:44 2019
fmt.Println(reformatDate("2019-12-31T13:41:44Z"))
// Tue Dec 31 13:41:44 2019
```
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
40 lines
1.0 KiB
Bash
Executable File
40 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eu
|
|
|
|
PLATFORM=${PLATFORM:-}
|
|
VERSION=${VERSION:-"unknown-version"}
|
|
GITCOMMIT=${GITCOMMIT:-$(git rev-parse --short HEAD 2> /dev/null || true)}
|
|
BUILDTIME=${BUILDTIME:-$(date -u +"%Y-%m-%dT%H:%M:%SZ")}
|
|
|
|
PLATFORM_LDFLAGS=
|
|
if test -n "${PLATFORM}"; then
|
|
PLATFORM_LDFLAGS="-X \"github.com/docker/cli/cli/version.PlatformName=${PLATFORM}\""
|
|
fi
|
|
|
|
export LDFLAGS="\
|
|
-w \
|
|
${PLATFORM_LDFLAGS} \
|
|
-X \"github.com/docker/cli/cli/version.GitCommit=${GITCOMMIT}\" \
|
|
-X \"github.com/docker/cli/cli/version.BuildTime=${BUILDTIME}\" \
|
|
-X \"github.com/docker/cli/cli/version.Version=${VERSION}\" \
|
|
${LDFLAGS:-} \
|
|
"
|
|
|
|
GOOS="${GOOS:-$(go env GOHOSTOS)}"
|
|
GOARCH="${GOARCH:-$(go env GOHOSTARCH)}"
|
|
if [ "${GOARCH}" = "arm" ]; then
|
|
GOARM="${GOARM:-$(go env GOHOSTARM)}"
|
|
fi
|
|
|
|
TARGET="build/docker-$GOOS-$GOARCH"
|
|
if [ "${GOARCH}" = "arm" ] && [ -n "${GOARM}" ]; then
|
|
TARGET="${TARGET}-v${GOARM}"
|
|
fi
|
|
|
|
if [ "${GOOS}" = "windows" ]; then
|
|
TARGET="${TARGET}.exe"
|
|
fi
|
|
export TARGET
|
|
|
|
export SOURCE="github.com/docker/cli/cmd/docker"
|