@@ -9,25 +9,36 @@ all: carton
9
9
10
10
.PHONY : image
11
11
image : .image.exists # # build docker image of packing environment
12
+ .DELETE_ON_ERROR : .image.exists
12
13
.image.exists : Dockerfile cpanfile cpanfile.snapshot build.pl
14
+ touch .image.exists
13
15
-docker rmi $(IMAGE_NAME )
14
16
docker build -t $(IMAGE_NAME ) .
15
- touch .image.exists
16
17
17
- .container.exists : .image.exists
18
- -docker rm $(IMAGE_NAME ) -tmp
19
- docker run --name $(IMAGE_NAME ) -tmp $(IMAGE_NAME ) perl build.pl
20
- touch .container.exists
21
-
22
- carton : .container.exists # # generate fat-packed carton
23
- docker cp $(IMAGE_NAME ) -tmp:/tmp/carton/carton carton
18
+ carton : .deps.exists build.pl # # generate fat-packed carton
19
+ cat build.pl | docker run --rm -i --volumes-from $(IMAGE_NAME ) -deps $(IMAGE_NAME ) perl -
20
+ docker cp $(IMAGE_NAME ) -deps:/tmp/carton/carton carton
21
+
22
+ .PHONY : deps
23
+ deps : .deps.exists # # install dependencies
24
+ .DELETE_ON_ERROR : .deps.exists
25
+ .deps.exists : .image.exists cpanfile.snapshot
26
+ touch .deps.exists
27
+ -docker rm $(IMAGE_NAME ) -deps
28
+ docker create -v /tmp/carton --name $(IMAGE_NAME ) -deps $(IMAGE_NAME ) /bin/true
29
+ docker cp cpanfile $(IMAGE_NAME ) -deps:/tmp/carton/cpanfile
30
+ docker cp cpanfile.snapshot $(IMAGE_NAME ) -deps:/tmp/carton/cpanfile.snapshot
31
+ docker run --rm --volumes-from $(IMAGE_NAME ) -deps $(IMAGE_NAME ) carton install --deployment
32
+ docker cp $(IMAGE_NAME ) -deps:/tmp/carton/local .
24
33
25
34
.PHONY : update
26
35
update : .image.exists # # download dependencies and update cpanfile.snapshot
27
36
-docker rm $(IMAGE_NAME ) -update
28
- docker run --name $(IMAGE_NAME ) -update $(IMAGE_NAME ) \
29
- sh -c " rm -f cpanfile.snapshot && rm -rf local && carton install"
37
+ docker create -v /tmp/carton --name $(IMAGE_NAME ) -update $(IMAGE_NAME ) /bin/true
38
+ docker cp cpanfile $(IMAGE_NAME ) -update:/tmp/carton/cpanfile
39
+ docker run --rm --volumes-from $(IMAGE_NAME ) -update $(IMAGE_NAME ) carton install
30
40
docker cp $(IMAGE_NAME ) -update:/tmp/carton/cpanfile.snapshot cpanfile.snapshot
41
+ -docker rm $(IMAGE_NAME ) -update
31
42
32
43
.PHONY : install
33
44
install : all # # installs into the bin directory of this repository
@@ -36,7 +47,7 @@ install: all ## installs into the bin directory of this repository
36
47
.PHONY : clean
37
48
clean :
38
49
rm -f carton carton.bat
39
- rm -f .image.exists .container .exists
50
+ rm -f .image.exists .deps .exists
40
51
-docker rm $(IMAGE_NAME ) -tmp
41
52
-docker rm $(IMAGE_NAME ) -update
42
53
-docker rmi $(IMAGE_NAME )
0 commit comments