-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
122 lines (107 loc) · 3.28 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
113
114
115
116
117
118
119
120
121
122
.PHONY: build isclean rsync cleanall clean clean.apks clean.release
IMAGE ?= fruitos.img
TEMPLATE ?= template.img.gz
MACHINE ?= rpi
KEYFILE ?= $(shell pwd)/apks/fruit-apk-key.rsa
VERSION ?= $(shell grep '^pkgver=' apks/packages/fruit-baselayout/APKBUILD | cut -d= -f2)
SHORTVERSION := $(shell echo $(VERSION) | cut -d. -f1-2)
SUDO ?= sudo
ifeq ($(MACHINE),raspberrypi)
MACHINE := rpi
else ifeq ($(MACHINE),raspberrypi2)
MACHINE := rpi2
endif
PACKAGES = \
fruit-$(MACHINE)-linux \
rpi-firmware \
rpi-devicetree \
fruit-rpi-bootloader \
fruit-u-boot \
alpine-conf \
alpine-keys \
apk-repositories \
apk-tools \
avahi \
avahi-tools \
bind-tools \
btrfs-progs \
busybox \
busybox-initscripts \
busybox-suid \
curl \
dbus \
dnsmasq \
docker \
fruit-agent \
fruit-baselayout \
fruit-keys \
kbd-bkeymaps \
libc-utils \
openrc \
openssh \
openssh-server \
openvpn \
parted \
python3 \
tlsdate \
tzdata \
uboot-tools \
wireless-tools \
wpa_supplicant \
SERVICES = devfs.sysinit dmesg.sysinit mdev.sysinit hwdrivers.sysinit \
hwclock.boot modules.boot sysctl.boot hostname.boot bootmisc.boot syslog.boot networking.boot tlsdate.boot \
sshd.default ntpd.default crond.default tlsdated.default local.default \
dbus.default avahi-daemon.default \
mount-ro.shutdown killprocs.shutdown savecache.shutdown \
build: isclean .apks $(IMAGE).gz.sha512
isclean:
@if [ "$$(git diff --shortstat 2> /dev/null | tail -n1)" != "" ]; then \
echo "This repository is not clean!"; \
false; \
else \
true; \
fi
$(IMAGE).gz.sha512:
$(SUDO) \
TEMPLATE="$(TEMPLATE)" \
IMAGE="$(IMAGE)" \
MACHINE="$(MACHINE)" \
VERSION="$(VERSION)" \
PACKAGES="$(PACKAGES)" \
SERVICES="$(SERVICES)" \
DOCKER_ARCH="$(DOCKER_ARCH)" \
./pack-image.sh
release:
mkdir -p release/images
mkdir -p release/v$(SHORTVERSION)/armhf
mkdir -p release/v$(SHORTVERSION)/aarch64
$(MAKE) clean.apks
DOCKER_ARCH=armhf $(MAKE) IMAGE=release/images/fruitos-$(VERSION)-raspberrypi1.img MACHINE=rpi
DOCKER_ARCH=armhf $(MAKE) IMAGE=release/images/fruitos-$(VERSION)-raspberrypi2.img MACHINE=rpi2
rsync -avH apks/target/packages/armhf/. release/v$(SHORTVERSION)/armhf/.
$(MAKE) clean.apks
DOCKER_ARCH=aarch64 $(MAKE) IMAGE=release/images/fruitos-$(VERSION)-raspberrypi3-aarch64.img MACHINE=rpi
rsync -avH apks/target/packages/aarch64/. release/v$(SHORTVERSION)/aarch64/.
cd release/images && rm -f *.img
cd release/images && sudo ln fruitos-$(VERSION)-raspberrypi1.img.gz fruitos-$(VERSION)-raspberrypi0.img.gz
cd release/images && sudo ln fruitos-$(VERSION)-raspberrypi2.img.gz fruitos-$(VERSION)-raspberrypi3.img.gz
cd release/images && sha512sum fruitos-$(VERSION)-raspberrypi0.img.gz > fruitos-$(VERSION)-raspberrypi0.img.gz.sha512
cd release/images && sha512sum fruitos-$(VERSION)-raspberrypi3.img.gz > fruitos-$(VERSION)-raspberrypi3.img.gz.sha512
rsync: release
rsync -avz --progress \
-e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \
release/ "[email protected]:fruitos/images/"
.apks:
./apks/build-via-docker.sh KEYFILE=$(KEYFILE)
touch .apks
cleanall: clean clean.apks
clean:
rm -f $(IMAGE)
rm -f $(IMAGE).sha512
rm -f $(IMAGE).gz
rm -f $(IMAGE).gz.sha512
clean.apks:
./apks/build-via-docker.sh clean.packages cleantarget cleancache cleanapks
rm -f .apks
clean.release:
rm -rf release