Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Miner build fails because builder cannot remove non-empty .gradle directory #1

Open
t-nelis opened this issue Apr 28, 2018 · 1 comment

Comments

@t-nelis
Copy link

t-nelis commented Apr 28, 2018

Background info:

$ git rev-parse HEAD
86eb731ee76446328769fbc018d3553d4788a154
$ date --utc
Sat Apr 28 13:33:33 UTC 2018
$ sudo docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: <unknown>
 Go version:      go1.8.4
 Git commit:      584d391/1.13.1
 Built:           Thu Nov 23 21:40:58 2017
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: <unknown>
 Go version:      go1.8.4
 Git commit:      584d391/1.13.1
 Built:           Thu Nov 23 21:40:58 2017
 OS/Arch:         linux/amd64
 Experimental:    false

docker-compose build --pull miner fails with:

...
------------------------------------------------------------
Root project
------------------------------------------------------------
...
BUILD SUCCESSFUL in 1m 48s
8 actionable tasks: 7 executed, 1 up-to-date
rm: can't remove './.gradle': Directory not empty
ERROR: Service 'miner' failed to build: The command '/bin/sh -c apk add --update git                                     &&   git clone --depth 1 -b research/casper https://github.com/ethereum/ethereumj &&   git clone --depth 1 -b research/casper https://github.com/ether-camp/ethereum-harmony &&   (cd ./ethereumj && ./gradlew clean install -x test && cd ..)         &&   (cd ./ethereum-harmony && ./gradlew clean dependencyManagement distTar -x test -PuseMavenLocal && cd ..) &&   tar -xf ./ethereum-harmony/build/distributions/harmony.ether.camp.tar -C ./ &&   rm -rf ethereumj ethereum-harmony &&   rm -rf ./.gradle ./.m2 &&   apk del git' returned a non-zero code: 1

The offending files:

$ sudo docker container run --rm --entrypoint=find $(sudo docker container commit 1a2b8091e7f2) .gradle
.gradle
.gradle/daemon
.gradle/daemon/4.6
.gradle/daemon/4.6/registry.bin.lock
.gradle/daemon/4.6/registry.bin

It doesn't look like the failing rm process is the one run in the Dockerfile; the same command (with -r) succeeds, as expected:

$ sudo docker container run --rm --interactive --tty --entrypoint=bash 697a4659cb57
bash-4.4# rm -rf .gradle
bash-4.4# echo $?
0

Can't find other relevant invocations in this repository however.

$ grep --recursive --fixed-string .gradle
./validator/Dockerfile:  rm -rf ./.gradle ./.m2 && \
./miner/Dockerfile:  rm -rf ./.gradle ./.m2 && \
./node/Dockerfile:  rm -rf ./.gradle ./.m2 && \

On a hunch I decided to naively remove the invocation in the Dockerfile in order to confirm.

$ git diff
diff --git a/casper/miner/Dockerfile b/casper/miner/Dockerfile
index 1722e32..949718b 100644
--- a/casper/miner/Dockerfile
+++ b/casper/miner/Dockerfile
@@ -16,7 +16,6 @@ RUN \
   (cd ./ethereum-harmony && ./gradlew clean dependencyManagement distTar -x test -PuseMavenLocal && cd ..) && \
   tar -xf ./ethereum-harmony/build/distributions/harmony.ether.camp.tar -C ./ && \
   rm -rf ethereumj ethereum-harmony && \
-  rm -rf ./.gradle ./.m2 && \
   apk del git
 
 # Inject config and startup script

The build succeeded.

Successfully built b7e546667e99

I'm a tad perplexed by this. Can anybody reproduce? (If not feel free to close this -- this doesn't look right.)

Thanks.

@mkalinin
Copy link
Owner

mkalinin commented May 1, 2018

I can reproduce it with just docker-compose build. Will dig in that problem later a bit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants