]> git.proxmox.com Git - pve-installer.git/blame - Makefile
proxinstall: expose `arc_max` ZFS option for PVE installations
[pve-installer.git] / Makefile
CommitLineData
aee9344c 1include /usr/share/dpkg/default.mk
6db9b06a 2
9cdfeefc 3PACKAGE = proxmox-installer
59597871
TL
4BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM)
5
aee9344c 6DEB=$(PACKAGE)_$(DEB_VERSION)_$(DEB_HOST_ARCH).deb
0190a299 7DSC=$(PACKAGE)_$(DEB_VERSION).dsc
e70f1b2f 8
9cdfeefc 9CARGO ?= cargo
e70f1b2f
CH
10ifeq ($(BUILD_MODE), release)
11CARGO_BUILD_ARGS += --release
12CARGO_COMPILEDIR := target/release
13else
14CARGO_COMPILEDIR := target/debug
15endif
16
f3521633 17INSTALLER_SOURCES=$(shell git ls-files) country.dat
89a12446 18
aee9344c
TL
19PREFIX = /usr
20BINDIR = $(PREFIX)/bin
21USR_BIN := proxmox-tui-installer
22
23COMPILED_BINS := \
24 $(addprefix $(CARGO_COMPILEDIR)/,$(USR_BIN))
25
f3521633 26all:
f0583fd4 27
59597871
TL
28$(BUILDDIR):
29 rm -rf $@ $@.tmp; mkdir $@.tmp
30 cp -a \
0a48c149 31 .cargo \
59597871
TL
32 Cargo.toml \
33 Makefile \
34 Proxmox/ \
35 Xdefaults \
36 banner/ \
37 checktime \
38 country.pl \
39 fake-start-stop-daemon \
40 html/ \
41 interfaces \
42 policy-disable-rc.d \
43 proxinstall \
44 proxmox-low-level-installer \
45 proxmox-tui-installer/ \
2f65a616 46 proxmox-installer-common/ \
59597871
TL
47 spice-vdagent.sh \
48 unconfigured.sh \
49 xinitrc \
50 $@.tmp
51 cp -a debian $@.tmp/
52 mv $@.tmp $@
53
f0583fd4 54country.dat: country.pl
fc2c6d3e
TL
55 ./country.pl > country.dat.tmp
56 mv country.dat.tmp country.dat
780479c5 57
99f0b523 58deb: $(DEB)
59597871
TL
59$(DEB): $(BUILDDIR)
60 cd $(BUILDDIR); dpkg-buildpackage -b -us -uc
99f0b523 61 lintian $(DEB)
c2f72dd6 62
6ec8d163 63test-$(DEB): $(INSTALLER_SOURCES)
63ce0b1a 64 rsync --exclude='test*.img' --exclude='*.deb' --exclude='build' -a * build
6ec8d163
TL
65 cd build; dpkg-buildpackage -b -us -uc -nc
66 mv $(DEB) test-$(DEB)
67
0190a299
TL
68dsc: $(DSC)
69 $(MAKE) clean
70 $(MAKE) $(DSC)
71 lintian $(DSC)
72
73$(DSC): $(BUILDDIR)
74 cd $(BUILDDIR); dpkg-buildpackage -S -us -uc -d
75
76sbuild: $(DSC)
77 sbuild $(DSC)
78
a199276f
CH
79test:
80 $(CARGO) test --workspace $(CARGO_BUILD_ARGS)
81
c2f72dd6
TL
82DESTDIR=
83VARLIBDIR=$(DESTDIR)/var/lib/proxmox-installer
84HTMLDIR=$(VARLIBDIR)/html/common
89a12446 85
c2f72dd6 86.PHONY: install
99f0b523 87install: $(INSTALLER_SOURCES) $(CARGO_COMPILEDIR)/proxmox-tui-installer
c2f72dd6 88 $(MAKE) -C banner install
ab97da2c 89 $(MAKE) -C Proxmox install
99f0b523
TL
90 install -D -m 644 interfaces $(DESTDIR)/etc/network/interfaces
91 install -D -m 755 fake-start-stop-daemon $(VARLIBDIR)/fake-start-stop-daemon
c2f72dd6
TL
92 install -D -m 755 policy-disable-rc.d $(VARLIBDIR)/policy-disable-rc.d
93 install -D -m 644 country.dat $(VARLIBDIR)/country.dat
99f0b523
TL
94 install -D -m 755 unconfigured.sh $(DESTDIR)/sbin/unconfigured.sh
95 install -D -m 755 proxinstall $(DESTDIR)/usr/bin/proxinstall
aee9344c
TL
96 install -D -m 755 proxmox-low-level-installer $(DESTDIR)/$(BINDIR)/proxmox-low-level-installer
97 $(foreach i,$(USR_BIN), install -m755 $(CARGO_COMPILEDIR)/$(i) $(DESTDIR)$(BINDIR)/)
99f0b523
TL
98 install -D -m 755 checktime $(DESTDIR)/usr/bin/checktime
99 install -D -m 644 xinitrc $(DESTDIR)/.xinitrc
100 install -D -m 755 spice-vdagent.sh $(DESTDIR)/.spice-vdagent.sh
101 install -D -m 644 Xdefaults $(DESTDIR)/.Xdefaults
89a12446 102
0889f35d
TL
103$(COMPILED_BINS): cargo-build
104.PHONY: cargo-build
105cargo-build:
aee9344c
TL
106 $(CARGO) build --package proxmox-tui-installer --bin proxmox-tui-installer $(CARGO_BUILD_ARGS)
107
c2f72dd6 108%-banner.png: %-banner.svg
9b9ddfce 109 rsvg-convert -o $@ $<
782b4acd 110
c2f72dd6 111.PHONY: upload
e23aeee4
TL
112upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
113upload: $(DEB)
99f0b523 114 tar cf - $(DEB) | ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST)
89a12446 115
76960140
TL
116%.img:
117 truncate -s 2G $@
89a12446 118
4a96f472
TL
119%.big.img:
120 truncate -s 8G $@
121
c2f72dd6 122.PHONY: prepare-check-env
6ec8d163 123prepare-check-env: test-$(DEB)
92cbd446 124 rm -rf testdir
6ec8d163 125 dpkg -X test-$(DEB) testdir
2630cca4 126 mkdir -p testdir/run/proxmox-installer/
c2f72dd6 127
29f32406
TL
128cd-info.test: PRODUCT ?= pve
129cd-info.test:
413ca90b
TL
130 printf '%s\n' "PRODUCT='$(or $(PRODUCT), pve)'" >$@.tmp
131 printf '%s\n' "PRODUCTLONG='$(or $(PRODUCTLONG), Proxmox VE)'" >>$@.tmp
132 printf '%s\n' "RELEASE='$(or $(RELEASE), 42.1)'" >>$@.tmp
133 printf '%s\n' "ISORELEASE='$(or $(ISORELEASE), 1)'" >>$@.tmp
134 printf '%s\n' "ISONAME='$(or $(ISONAME), proxmox-ve)'" >>$@.tmp
29f32406
TL
135 mv $@.tmp $@
136
c2f72dd6 137check-pve: prepare-check-env test.img
413ca90b 138 rm -f cd-info.test; $(MAKE) cd-info.test
63fb95ea 139 ./proxmox-low-level-installer dump-env -t
92cbd446 140 G_SLICE=always-malloc perl -I testdir/usr/share/perl5 testdir/usr/bin/proxinstall -t test.img
89a12446 141
4a96f472 142check-pve-multidisks: prepare-check-env test.img test2.img test3.img test4.img test5.big.img
413ca90b 143 rm -f cd-info.test; $(MAKE) cd-info.test
63fb95ea 144 ./proxmox-low-level-installer dump-env -t
4a96f472 145 G_SLICE=always-malloc perl -I testdir/usr/share/perl5 testdir/usr/bin/proxinstall -t test.img,test2.img,test3.img,test4.img,test5.big.img
76960140 146
0cf4be7d
TL
147check-pve-tui: prepare-check-env test.img
148 rm -f cd-info.test; $(MAKE) cd-info.test
149 ./proxmox-low-level-installer dump-env -t
9ed18269 150 testdir/usr/bin/proxmox-tui-installer -t test.img 2>testdir/run/stderr
0cf4be7d 151
7e569bd6 152prepare-check-pmg: prepare-check-env test.img
413ca90b
TL
153 rm -f cd-info.test; $(MAKE) \
154 PRODUCT=pmg \
155 PRODUCTLONG="Proxmox Mail Gateway" \
156 ISONAME='proxmox-mail-gateway' \
157 cd-info.test
63fb95ea 158 ./proxmox-low-level-installer dump-env -t
7e569bd6
TL
159
160check-pmg: prepare-check-pmg
a8213c0e
DM
161 G_SLICE=always-malloc perl -I testdir/usr/share/perl5 testdir/usr/bin/proxinstall -t test.img
162
7e569bd6 163check-pmg-tui: prepare-check-pmg
9ed18269 164 testdir/usr/bin/proxmox-tui-installer -t test.img 2>testdir/run/stderr
7e569bd6 165
ce76d4c0 166prepare-check-pbs: prepare-check-env test.img
413ca90b
TL
167 rm -f cd-info.test; $(MAKE) \
168 PRODUCT='pbs' \
169 PRODUCTLONG='Proxmox Backup Server' \
170 ISONAME='proxmox-backup-server' \
171 cd-info.test
63fb95ea 172 ./proxmox-low-level-installer dump-env -t
ce76d4c0
TL
173
174check-pbs: prepare-check-pbs
53748662
OB
175 G_SLICE=always-malloc perl -I testdir/usr/share/perl5 testdir/usr/bin/proxinstall -t test.img
176
ce76d4c0 177check-pbs-tui: prepare-check-pbs
9ed18269 178 testdir/usr/bin/proxmox-tui-installer -t test.img 2>testdir/run/stderr
53748662 179
89a12446
DM
180.phony: clean
181clean:
5a947984 182 rm -rf target build $(PACKAGE)-[0-9]* testdir
2d5382e8 183 rm -f $(PACKAGE)*.tar* *.deb packages packages.tmp *.build *.dsc *.buildinfo *.changes
5a947984 184 rm -f test*.img pve-final.pkglist country.dat final.pkglist cd-info.test
b1e23923 185 find . -name '*~' -exec rm {} ';'