rancher / dapper

Docker build wrapper
Apache License 2.0
365 stars 89 forks source link

`make generate` fails due to unset `$HOME` (with podman) #116

Closed intelfx closed 7 months ago

intelfx commented 7 months ago

Invoking make generate (or, equivalently, .dapper generate) fails at go generate:

Unmodified tree build log with podman ([make-generate.log](https://github.com/rancher/dapper/files/13756787/make-generate.log)) ``` $ make generate ./.dapper generate <...> COMMIT k3s:master --> c5d9ede7f540 Successfully tagged localhost/k3s:master c5d9ede7f5401ce8ec923b746df13e3510c573a975a9b650c367e1980a3ce6c5 Running: go generate go: downloading github.com/sirupsen/logrus v1.9.3 <...> go: downloading github.com/gofrs/uuid v4.4.0+incompatible build cache is required, but could not be located: GOCACHE is not defined and neither $XDG_CACHE_HOME nor $HOME are defined main.go:1: running "go": exit status 1 FATA[0074] exit status 1 make: *** [Makefile:13: generate] Error 1 ```

This presumably happens because Dockerfile.dapper sets HOME=${DAPPER_SOURCE} in the same statement as DAPPER_SOURCE=..., which is then not substituted correctly. The problem is not immediately visible on docker only because docker resets an unset $HOME to /root:

Build log with docker, with a patch to make the problem visible ([make-generate-docker.log](https://github.com/rancher/dapper/files/13756873/make-generate-docker.log)) ``` $ git diff diff --git a/Dockerfile.dapper b/Dockerfile.dapper index af99d3d35e..81b5af3184 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -56,7 +56,7 @@ ENV DAPPER_RUN_ARGS="--privileged -v k3s-cache:/go/src/github.com/k3s-io/k3s/.ca DAPPER_SOURCE="/go/src/github.com/k3s-io/k3s/" \ DAPPER_OUTPUT="./bin ./dist ./build/out ./build/static ./pkg/static ./pkg/deploy" \ DAPPER_DOCKER_SOCKET=true \ - HOME=${DAPPER_SOURCE} \ + HOME= \ CROSS=true \ STATIC_BUILD=true diff --git a/scripts/generate b/scripts/generate index ebdaf31cc5..142592f36f 100755 --- a/scripts/generate +++ b/scripts/generate @@ -8,4 +8,6 @@ mkdir -p build/data GO=${GO-go} echo Running: "${GO}" generate +env | grep HOME= +exit 1 "${GO}" generate $ make generate ./.dapper generate <...> Successfully tagged k3s:master Running: go generate HOME=/root FATA[0002] exit status 1 make: *** [Makefile:13: generate] Error 1 ```

Still, this causes the Go cache (mounted at /go/src/github.com/k3s-io/k3s/.cache) to be effectively broken and unused because $HOME doesn't point to it.

intelfx commented 7 months ago

Sorry, wrong repo :-)