improve kernel build makefile

- create an empty dummy file to indicate that docker image is built
- reuse same make rule to extract the different files from docker image
- make sure that we remove empty files on failure

This makes build more robust and improves parallelism.

Signed-off-by: Natanael Copa <natanael.copa@docker.com>
This commit is contained in:
Natanael Copa 2016-07-13 17:57:31 +02:00
parent 2590c9de9b
commit 907d1f8c0c
2 changed files with 16 additions and 13 deletions

View File

@ -4,3 +4,5 @@ aufs-utils.tar
kernel-patches.tar kernel-patches.tar
kernel-modules.tar kernel-modules.tar
kernel-source-info kernel-source-info
mobykernel-build
mobyarmkernel-build

View File

@ -1,24 +1,25 @@
all: vmlinuz64 all: vmlinuz64
vmlinuz64: kernel_config Dockerfile mobykernel-build: Dockerfile kernel_config
docker build -t mobykernel:build . docker build -t mobykernel:build .
docker run --rm mobykernel:build cat /linux/arch/x86_64/boot/bzImage > $@ touch $@
docker run --rm mobykernel:build cat /aufs-utils.tar > aufs-utils.tar
docker run --rm mobykernel:build cat /kernel-source-info > kernel-source-info mobyarmkernel-build: Dockerfile kernel_config.arm
docker run --rm mobykernel:build cat /kernel-patches.tar > kernel-patches.tar docker build --build-arg ARCH=arm -t mobyarmkernel:build .
docker run --rm mobykernel:build cat /kernel-modules.tar > kernel-modules.tar touch $@
aufs-utils.tar kernel-source-info kernel-patches.tar kernel-modules.tar: mobykernel-build
docker run --rm mobykernel:build cat /$@ > $@ || ! rm $@
vmlinuz64: aufs-utils.tar kernel-source-info kernel-patches.tar kernel-modules.tar mobykernel-build
docker run --rm mobykernel:build cat /linux/arch/x86_64/boot/bzImage > $@ || ! rm $@
arm: zImage arm: zImage
zImage: kernel_config.arm Dockerfile zImage: mobyarmkernel-build aufs-utils.tar kernel-source-info kernel-patches.tar kernel-modules.tar
docker build --build-arg ARCH=arm -t mobyarmkernel:build .
docker run --rm mobyarmkernel:build cat /linux/arch/arm/boot/zImage > $@ docker run --rm mobyarmkernel:build cat /linux/arch/arm/boot/zImage > $@
docker run --rm mobyarmkernel:build cat /aufs-utils.tar > aufs-utils.tar
docker run --rm mobyarmkernel:build cat /kernel-source-info > kernel-source-info
docker run --rm mobyarmkernel:build cat /kernel-patches.tar > kernel-patches.tar
docker run --rm mobyarmkernel:build cat /kernel-modules.tar > kernel-modules.tar
clean: clean:
rm -f zImage vmlinuz64 aufs-utils.tar kernel-source-info kernel-patches.tar rm -f zImage vmlinuz64 aufs-utils.tar kernel-source-info kernel-patches.tar mobykernel-build mobyarmkernel-build
docker images -q mobykernel:build | xargs docker rmi -f || true docker images -q mobykernel:build | xargs docker rmi -f || true
docker images -q mobyarmkernel:build | xargs docker rmi -f || true docker images -q mobyarmkernel:build | xargs docker rmi -f || true