]> git.proxmox.com Git - proxmox-backup-restore-image.git/blob - src/Makefile
8b2aec0f5a9e320217cfb8ad4ee2134a8900a486
[proxmox-backup-restore-image.git] / src / Makefile
1 PACKAGE=proxmox-restore-vm-data
2
3 BUILDDIR=build
4 INITRAMFS_BUILDDIR=build/initramfs
5
6 ZFSONLINUX_SUBMODULE=submodules/zfsonlinux
7 KERNEL_SUBMODULE=submodules/ubuntu-jammy
8 SHIM_DIR=init-shim-rs
9
10 KERNEL_IMG=${BUILDDIR}/bzImage
11 INITRAMFS_IMG=${INITRAMFS_BUILDDIR}/initramfs.img
12 INITRAMFS_IMG_DBG=${INITRAMFS_BUILDDIR}/initramfs-debug.img
13
14 ZFS_TOOLS=${BUILDDIR}/zfstools
15
16 CONFIG=config-base
17
18 RUST_SRC=$(wildcard ${SHIM_DIR}/**/*.rs) ${SHIM_DIR}/Cargo.toml
19
20 all: ${KERNEL_IMG} ${INITRAMFS_IMG_DBG}
21
22 ${BUILDDIR}.prepared: ${CONFIG}
23 rm -rf ${BUILDDIR}
24 mkdir -p ${BUILDDIR}
25 cp -a submodules patches ${BUILDDIR}/
26 cp ${CONFIG} ${BUILDDIR}/${KERNEL_SUBMODULE}
27 cd ${BUILDDIR}/${KERNEL_SUBMODULE}; \
28 for p in ../../patches/kernel/*.patch; do \
29 patch -Np1 < $$p; \
30 done
31 touch $@
32
33 kernel.prepared: ${BUILDDIR}.prepared
34 cd ${BUILDDIR}/${KERNEL_SUBMODULE}; \
35 KCONFIG_ALLCONFIG=${CONFIG} make allnoconfig && \
36 $(MAKE) prepare scripts
37 touch $@
38
39 zfs.prepared: kernel.prepared
40 cd ${BUILDDIR}/${ZFSONLINUX_SUBMODULE}; \
41 for p in ../../patches/zfs/*.patch; do \
42 patch -Np1 < $$p; \
43 done
44 cd ${BUILDDIR}/${ZFSONLINUX_SUBMODULE}; \
45 sh autogen.sh && \
46 ./configure \
47 --enable-linux-builtin \
48 --with-linux=../../${KERNEL_SUBMODULE} \
49 --with-linux-obj=../../${KERNEL_SUBMODULE} && \
50 ./copy-builtin ../../${KERNEL_SUBMODULE}
51 # only now can we enable CONFIG_ZFS
52 cd ${BUILDDIR}/${KERNEL_SUBMODULE}; \
53 ./scripts/config -e CONFIG_ZFS
54 touch $@
55
56 ${KERNEL_IMG}: zfs.prepared
57 cd ${BUILDDIR}/${KERNEL_SUBMODULE}; $(MAKE)
58 mv ${BUILDDIR}/${KERNEL_SUBMODULE}/arch/x86/boot/bzImage ${KERNEL_IMG}
59
60 ${ZFS_TOOLS}: zfs.prepared
61 cd ${BUILDDIR}/${ZFSONLINUX_SUBMODULE}; \
62 ./configure \
63 --bindir=/usr/bin \
64 --sbindir=/sbin \
65 --libdir=/lib/"$(DEB_HOST_MULTIARCH)" \
66 --with-zfsexecdir=/usr/lib/zfs-linux \
67 --disable-systemd \
68 --disable-pyzfs \
69 --with-config=user
70 # absolute path required for 'make install'
71 $(MAKE) -C ${BUILDDIR}/${ZFSONLINUX_SUBMODULE} install DESTDIR=${PWD}/${ZFS_TOOLS}
72
73 ${INITRAMFS_IMG}: ${BUILDDIR}.prepared ${RUST_SRC} build_initramfs.sh ${ZFS_TOOLS}
74 cd ${SHIM_DIR}; cargo build --release
75 sh build_initramfs.sh
76
77 ${INITRAMFS_IMG_DBG}: ${INITRAMFS_IMG}
78
79 .PHONY: test-run
80 test-run: ${KERNEL_IMG} ${INITRAMFS_IMG}
81 # note: this will always fail since /proxmox-restore-daemon is not
82 # included in the initramfs, but it can be used to test the
83 # kernel/init-shim-rs builds
84 qemu-system-x86_64 -serial stdio -vnc none -enable-kvm \
85 -kernel ${KERNEL_IMG} \
86 -initrd ${INITRAMFS_IMG}
87
88 .PHONY: clean
89 clean:
90 rm -rf *~ ${BUILDDIR} ${INITRAMFS_BUILDDIR} *.prepared