Makefile (1932B)
1 SHELL = bash -euET -o pipefail -c 2 tmp_image := $(shell echo $$$$) 3 4 all: hello.tar hello.sizes vm-image to-be-run-in-vm.sh Makefile 5 qemu-img create -f qcow2 -o backing_file=vm-image vm-image-tmp-${tmp_image} 6 # TODO: qcow2: make a derived image. 7 qemu-system-x86_64 -enable-kvm -m 4096 -nographic \ 8 vm-image-tmp-${tmp_image} \ 9 -drive format=raw,file=hello.sizes,if=ide,index=1,media=disk \ 10 -drive format=raw,file=to-be-run-in-vm.sh,if=ide,index=2,media=disk \ 11 -drive format=raw,file=hello.tar,if=ide,index=3,media=disk 12 rm vm-image-tmp-${tmp_image} 13 14 %.sizes: %.tar signing-key.pub to-be-run-in-vm.sh Makefile 15 printf "%020d\\n%020d\\n%$$((512-((20+1)*2)-1))s\\n" \ 16 "$$(wc -c "to-be-run-in-vm.sh" | sed -e 's/^[[:space:]]*\([0-9][0-9]*\)[[:space:]].*$$/\1/')" \ 17 "$$(wc -c "$*.tar" | sed -e 's/^[[:space:]]*\([0-9][0-9]*\)[[:space:]].*$$/\1/')" \ 18 "" \ 19 > '$@' 20 21 %.nar: Makefile 22 guix archive --export --recursive '$*' $$(guix build --source --sources=transitive '$*' $$(for i in \ 23 binutils-2.23.2.tar.xz \ 24 bison-3.0.4.tar.xz \ 25 gc-7.6.4.tar.gz \ 26 gcc-4.8.2.tar.xz \ 27 glibc-2.18.tar.xz \ 28 guile-2.0.9.tar.xz \ 29 gcc-4.9.4.tar.xz \ 30 gettext-0.19.8.1.tar.gz \ 31 gmp-6.1.2.tar.xz \ 32 guile-2.2.3.tar.xz \ 33 libatomic_ops-7.6.4.tar.gz \ 34 libffi-3.2.1.tar.gz \ 35 libtool-2.4.6.tar.xz \ 36 libunistring-0.9.9.tar.xz \ 37 m4-1.4.18.tar.xz \ 38 perl-5.26.1.tar.gz \ 39 pkg-config-0.29.2.tar.gz \ 40 static-binaries.tar.xz \ 41 texinfo-6.5.tar.xz \ 42 zlib-1.2.11.tar.gz; do \ 43 echo /gnu/store/*-$$i.drv; \ 44 done) | sort -u) > '$@' 45 46 %.tar: %.nar signing-key.pub Makefile 47 tar -cf '$@' '$*.nar' signing-key.pub 48 49 signing-key.pub: /etc/guix/signing-key.pub Makefile 50 cp '$<' '$@' 51 chmod +w '$@' 52 53 vm-image: config.scm Makefile 54 rm -f '$@' 55 ln -sf "$$(guix system vm-image --image-size=8G config.scm)" '$@' 56 57 clean: 58 rm -f vm-image vm-image-tmp-* signing-key.pub \ 59 hello.nar hello.tar hello.sizes