Building heads (x230)

Hi, I’m stuck trying to upgrade to 4.1 on my x230. It looks like it’s due to the issue discussed here Nitropad X230 USB Installation Error which is that the version of heads installed on my x230 doesn’t support cryptsetup2. I could try an in place upgrade if need be, but it’d be nice to be able to reinstall from scratch in a pinch, so I’d like to update heads if possible.

I’m having trouble building heads and thought I’d ask here first because, despite not being about Qubes itself, it seems relevant to a lot of Qubes users right now.

When I try to build heads (in a fresh Fedora 34 VM), I follow this documentation General Building - Heads - Wiki

sudo dnf install @development-tools gcc-c++ gcc-gnat zlib-devel perl-Digest-MD5 perl-Digest-SHA uuid-devel pcsc-tools ncurses-devel lbzip2 libuuid-devel lzma elfutils-libelf-devel bc bzip2 bison flex git gnupg iasl m4 nasm patch python wget libusb-devel cmake automake pv bsdiff autoconf libtool cpio texinfo
git clone https://github.com/osresearch/heads
cd heads
make BOARD=x230

And it seems like it just isn’t following the steps in the Makefile. It writes 2022-04-03 15:09:23+02:00 Wrong OS deployed make detected: 4.3. Building and using 4.2.1... so it should perform these steps to wget, extract, and build make 4.2.1:

$(packages)/$(make_tar):
	$(WGET) -O "$@.tmp" "$(make_url)"
	if ! echo "$(make_hash)  $@.tmp" | sha256sum --check -; then \
		exit 1 ; \
	fi
	mv "$@.tmp" "$@"

$(build)/$(make_dir)/.extract: $(packages)/$(make_tar)
	tar xf "$<" -C "$(build)"
	touch "$@"

$(build)/$(make_dir)/.patch: $(build)/$(make_dir)/.extract
	( cd "$(dir $@)" ; patch -p1 ) < "patches/make-$(make_version).patch"
	touch "$@"

$(build)/$(make_dir)/.configured: $(build)/$(make_dir)/.patch
	cd "$(dir $@)" ; \
	./configure 2>&1 \
	| tee "$(log_dir)/make.configure.log" \
	$(VERBOSE_REDIRECT)
	touch "$@"

$(HEADS_MAKE): $(build)/$(make_dir)/.configured
	make -C "$(dir $@)" $(MAKE_JOBS) \
		2>&1 \
		| tee "$(log_dir)/make.log" \
		$(VERBOSE_REDIRECT)

And it simply doesn’t do any of this. The tar file is not there in packages/, it is not extracted to build/make-4.2.1, and so on. The eventual error where make halts is

/home/user/heads/build/make-4.2.1/make -C "/home/user/heads/build/gawk-4.2.1/" -j2 ....
/home/user/heads/build/make-4.2.1/make: No such file or directory.

Any ideas why make isn’t behaving?

2 Likes