Makefile: Automatically use fakemachine if not uid 0

fakemachine launches a virtual machine reusing the host system's /usr,
and runs commands as root on that virtual machine. It's used by debos,
but can also be used to wrap arbitrary commands, in particular vmdb2;
it's enough to run the parts of vmdb2 that need to mount filesystems
and run apt.

This won't work if fakemachine isn't available (in particular on non-x86),
but that seems better than just failing altogether.

Signed-off-by: Simon McVittie <smcv@debian.org>
This commit is contained in:
Simon McVittie
2021-04-24 23:07:01 +01:00
committed by Diederik de Haas
parent 5aadb0116a
commit 821aff4e19
2 changed files with 13 additions and 3 deletions

View File

@@ -12,6 +12,12 @@ xzimages: $(addsuffix .img.xz,$(platforms))
images: $(addsuffix .img,$(platforms))
yaml: $(addsuffix .yaml,$(platforms))
ifeq ($(shell id -u),0)
as_root =
else
as_root = fakemachine -v $(CURDIR) -- env --chdir $(CURDIR)
endif
target_platforms:
@echo $(platforms)
@@ -122,7 +128,7 @@ raspi_4_bullseye.yaml: raspi_base_bullseye.yaml
%.img: %.yaml
touch $(@:.img=.log)
time nice vmdb2 --verbose --rootfs-tarball=$(subst .img,.tar.gz,$@) --output=$@ $(subst .img,.yaml,$@) --log $(subst .img,.log,$@)
time nice $(as_root) vmdb2 --verbose --rootfs-tarball=$(subst .img,.tar.gz,$@) --output=$@ $(subst .img,.yaml,$@) --log $(subst .img,.log,$@)
chmod 0644 $@ $(@,.img=.log)
_ck_root: