-
Notifications
You must be signed in to change notification settings - Fork 48
/
Makefile
112 lines (88 loc) · 3.36 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
ORG ?= quay.io/tinkerbell
ARCH := $(shell uname -m)
GIT_VERSION ?= $(shell git log -1 --format="%h")
ifneq ($(shell git status --porcelain),)
GIT_VERSION := $(GIT_VERSION)-dirty
endif
default: bootkitBuild tink-dockerBuild image
LINUXKIT_CONFIG ?= hook.yaml
dev: dev-bootkitBuild dev-tink-dockerBuild
ifeq ($(ARCH),x86_64)
dev: image-amd64
endif
ifeq ($(ARCH),aarch64)
dev: image-arm64
endif
# This option is for running docker manifest command
export DOCKER_CLI_EXPERIMENTAL := enabled
image-amd64:
mkdir -p out
linuxkit build -docker -disable-content-trust -pull -format kernel+initrd -name hook-x86_64 -dir out $(LINUXKIT_CONFIG)
image-arm64:
mkdir -p out
linuxkit build -docker -disable-content-trust -pull -arch arm64 -format kernel+initrd -name hook-aarch64 -dir out $(LINUXKIT_CONFIG)
image: image-amd64 image-arm64
debug-image-amd64:
mkdir -p out/amd64
linuxkit build --docker -format kernel+initrd -name debug-x86_64 -dir out hook_debug.yaml
debug-image-arm64:
mkdir -p out/arm64
linuxkit build --docker -arch arm64 -format kernel+initrd -name debug-aarch64 -dir out hook_debug.yaml
debug-image: debug-image-amd64 debug-image-arm64
run-amd64:
sudo ~/go/bin/linuxkit run qemu --mem 2048 out/hook-x86_64
run-arm64:
sudo ~/go/bin/linuxkit run qemu --mem 2048 out/hook-aarch64
run:
sudo ~/go/bin/linuxkit run qemu --mem 2048 out/hook-${ARCH}
dev-bootkitBuild:
cd bootkit; docker buildx build -load -t $(ORG)/hook-bootkit:0.0 .
bootkitBuild:
cd bootkit; docker buildx build --platform linux/amd64,linux/arm64 --push -t $(ORG)/hook-bootkit:0.0 .
dev-tink-dockerBuild:
cd tink-docker; docker buildx build -load -t $(ORG)/hook-docker:0.0 .
tink-dockerBuild:
cd tink-docker; docker buildx build --platform linux/amd64,linux/arm64 --push -t $(ORG)/hook-docker:0.0 .
dev-convert:
rm -rf ./convert
mkdir ./convert
cp out/hook-${ARCH}-initrd.img ./convert/initrd.gz
cd convert/; gunzip ./initrd.gz; cpio -idv < initrd; rm initrd; find . -print0 | cpio --null -ov --format=newc > ../initramfs-${ARCH}; gzip ../initramfs-${ARCH}
.PHONY: convert
convert:
for a in x86_64 aarch64; do \
rm -rf ./convert; \
mkdir ./convert; \
cp out/hook-$$a-initrd.img ./convert/initrd.gz; \
cd convert/; gunzip ./initrd.gz; cpio -idv < initrd; rm initrd; find . -print0 | cpio --null -ov --format=newc > ../initramfs-$$a; gzip ../initramfs-$$a; cd ../;\
done
dist: default convert
rm -rf ./dist ./convert
mkdir ./dist
for a in x86_64 aarch64; do \
mv ./initramfs-$$a.gz ./dist/initramfs-$$a; \
mv ./out/hook-$$a-kernel ./dist/vmlinuz-$$a; \
done
rm -rf out
cd ./dist && tar -czvf ../hook-${GIT_VERSION}.tar.gz ./*
dist-existing-images: image convert
rm -rf ./dist ./convert
mkdir ./dist
for a in x86_64 aarch64; do \
mv ./initramfs-$$a.gz ./dist/initramfs-$$a; \
mv ./out/hook-$$a-kernel ./dist/vmlinuz-$$a; \
done
rm -rf out
cd ./dist && tar -czvf ../hook-${GIT_VERSION}.tar.gz ./*
dev-dist: dev dev-convert
rm -rf ./dist ./convert
mkdir ./dist
mv ./initramfs-${ARCH}.gz ./dist/initramfs-${ARCH}
mv ./out/hook-${ARCH}-kernel ./dist/vmlinuz-${ARCH}
rm -rf out
cd ./dist && tar -czvf ../hook-${GIT_VERSION}.tar.gz ./*
deploy: dist
ifeq ($(shell git rev-parse --abbrev-ref HEAD),master)
s3cmd sync ./hook-${GIT_VERSION}.tar.gz s3://s.gianarb.it/hook/${GIT_VERSION}.tar.gz
s3cmd cp s3://s.gianarb.it/hook/hook-${GIT_VERSION}.tar.gz s3://s.gianarb.it/hook/hook-master.tar.gz
endif