Is anyone able to build archlinux-minimal?

qubes-builder fails during the build process of vmm-xen with:
(./setup with 4.2 set)

==> ERROR: PKGBUILD does not exist.
Container chroot-vm-archlinux failed with error code 12.
make[2]: *** [/home/user/qubes-builder/qubes-src/builder-archlinux/Makefile.archlinux:109: dist-package] Error 12
make[1]: *** [Makefile.generic:197: packages] Error 1
make: *** [Makefile:265: vmm-xen-vm] Error 1

qubes-builderv2 fails with qubes executor in my setup so I used the local one but it fails with:
(archlinux.yml from example-configs with local executor instead)

output: --> Verifying tags...
output: ERROR: CalledProcessError(1, ['git', '-c', 'gpg.program=/usr/bin/gpg-sq', '-c', 'gpg.minTrustLevel=fully', 'verify-tag', '--raw', '--', 'dcccd469b7c11172145b0e764d2236cb9f34dd50']); stderr: [GNUPG:] NEWSIG
output: [GNUPG:] ERRSIG 063938BA42CFA724 1 8 00 1714103212 9 0064428F455451B3EBE78A7F063938BA42CFA724
output: [GNUPG:] NO_PUBKEY 063938BA42CFA724

I have imported all the keys and set the trust level to ultimate.

3 Likes

Precisely my same issue. Welp.

[user@builder qubes-builder]$ make remount
+ sudo mount /home -o dev,suid,remount
[user@builder qubes-builder]$ make vmm-xen-vm
Currently installed dependencies:
createrepo_c-1.0.4-1.fc39.x86_64
createrepo_c-1.0.4-1.fc39.x86_64
debootstrap-1.0.134-1.fc39.noarch
dialog-1.3-46.20220526.fc39.x86_64
dnf-plugins-core-4.6.0-1.fc39.noarch
dpkg-dev-1.22.6-1.fc39.noarch
git-2.45.0-1.fc39.x86_64
perl-Digest-MD5-2.58-500.fc39.x86_64
perl-Digest-SHA-6.04-501.fc39.x86_64
python3-sh-2.0.6-1.fc39.noarch
rpm-build-4.19.1.1-1.fc39.x86_64
rpmdevtools-9.6-4.fc39.noarch
systemd-container-254.10-1.fc39.x86_64
--> Archlinux dist-prepare-chroot (makefile):
-> Building vmm-xen (archlinux) for archlinux vm (logfile: build-logs/vmm-xen-vm-archlinux.log)
--> build failed!
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
reinstalling archlinux-keyring...
gpg: Warning: using insecure memory!
==> Appending keys from archlinux.gpg...
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
gpg: Warning: using insecure memory!
==> Updating trust database...
gpg: Warning: using insecure memory!
gpg: next trustdb check due at 2024-06-29
:: Running post-transaction hooks...
(1/2) Reloading system manager configuration...
  Skipped: Current root is not booted.
(2/2) Arming ConditionNeedsUpdate...
Container chroot-vm-archlinux exited successfully.

Spawning container chroot-vm-archlinux on /home/user/qubes-builder/chroot-vm-archlinux.
Press Ctrl-] three times within 1s to kill container.
:: Synchronizing package databases...
 core downloading...
 extra downloading...
 multilib downloading...
 qubes downloading...
:: Starting full system upgrade...
 there is nothing to do
Container chroot-vm-archlinux exited successfully.

--> Archlinux dist-package (makefile)
  --> Building package in /home/user/qubes-src/vmm-xen
sudo systemd-nspawn --directory="/home/user/qubes-builder/chroot-vm-archlinux" \
	--bind="/home/user/qubes-builder/cache/archlinux/pacman_cache":"/var/cache/pacman" \
	--bind="/home/user/qubes-builder/qubes-packages-mirror-repo/vm-archlinux":"/tmp/qubes-packages-mirror-repo" \
	--keep-unit \
	--register=no \
	--user=user \
	--setenv=BACKEND_VMM=xen  \
	--setenv=SOURCE_DATE_EPOCH="1714103211" \
	--setenv=http_proxy="" \
	--chdir="/home/user/qubes-src/vmm-xen" \
	sh -c 'if ! [ -e archlinux/PKGBUILD.in ]; then cp archlinux/PKGBUILD* ./; fi && makepkg --syncdeps --noconfirm --skipinteg'
Spawning container chroot-vm-archlinux on /home/user/qubes-builder/chroot-vm-archlinux.
Press Ctrl-] three times within 1s to kill container.
==> ERROR: PKGBUILD does not exist.
Container chroot-vm-archlinux failed with error code 12.
make[2]: *** [/home/user/qubes-builder/qubes-src/builder-archlinux/Makefile.archlinux:109: dist-package] Error 12
make[1]: *** [Makefile.generic:197: packages] Error 1
make: *** [Makefile:265: vmm-xen-vm] Error 1
1 Like

Seems like a problem with PKGBUILD.in, probably broken by Rework Archlinux packaging by fepitre · Pull Request #162 · QubesOS/qubes-vmm-xen · GitHub
I was able to build vmm-xen by assembling PKGBUILD (no “.in”) and replacing @REL@, but there are more errors with @VERSION@ down the line (qubes-libvchan-xen fails).

Workaround for qubes-builder-archlinux/Makefile.archlinux at main · QubesOS/qubes-builder-archlinux · GitHub

sudo systemd-nspawn --directory="/home/user/qubes-builder/chroot-vm-archlinux" \
	--bind="/home/user/qubes-builder/cache/archlinux/pacman_cache":"/var/cache/pacman" \
	--bind="/home/user/qubes-builder/qubes-packages-mirror-repo/vm-archlinux":"/tmp/qubes-packages-mirror-repo" \
	--keep-unit \
	--register=no \
	--user=user \
	--setenv=BACKEND_VMM=xen  \
	--setenv=SOURCE_DATE_EPOCH="1742326641" \
	--setenv=http_proxy="" \
	--chdir="/home/user/qubes-src/core-vchan-xen" \
	sh -c 'if ! [ -e archlinux/PKGBUILD.in ]; then cp archlinux/PKGBUILD* ./; fi && cp archlinux/PKGBUILD.in PKGBUILD && sed -i '' 's/@REL@/12/g' PKGBUILD &&  makepkg --syncdeps --noconfirm --skipinteg'

What’s the deal with placeholders like @REL@ and @VERSION@? Which command should replace them? It used to be $(cat rel) and $(cat version) respectively and no “.in” extension.

Scanning the qubes repositories looks like there are various mini-scripts that do @REL@ and @VERSION@ substitution but this looks like one that is for PKGBUILD.in → PKGBUILD for Archlinux:

1 Like

OK, so there are two building systems:
(old) GitHub - QubesOS/qubes-builder: Qubes Builder
(new) GitHub - QubesOS/qubes-builderv2: Next generation of Qubes OS builder

Official doc on templates leads to this thread with the old builder forum.qubes-os. org/t/archlinux-minimal-template/19052

My guess is all the dependencies like vmm-xen have PKGBUILDs designed for the new builder.
I’ve tried using the new one but it fails. Any tips?

[user@qubes-build qubes-builderv2]$ ./qb package fetch
13:18:37 [qb] Running stages: fetch
13:18:37 [qb] sign_archlinux:vm-archlinux-rolling.x86_64: No signing key found.
13:18:37 [qb] publish_archlinux:vm-archlinux-rolling.x86_64: No signing key found.
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmp75sb4h24/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmp75sb4h24/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmp75sb4h24/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /home/user/qubes-builderv2/qubesbuilder/plugins/fetch 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpvqo3cj9n/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpvqo3cj9n/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpvqo3cj9n/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpvqo3cj9n/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins/fetch
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpvqo3cj9n/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins/fetch/keys
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /home/user/qubes-builderv2/arch-keys/0064428F455451B3EBE78A7F063938BA42CFA724.asc 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins/fetch/keys
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpl4lrmd76/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpl4lrmd76/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpl4lrmd76/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpl4lrmd76/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins/fetch
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /tmp/tmpl4lrmd76/. 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins/fetch/keys
13:18:38 [qb.fetch.builder-archlinux.fetch] copy-in (cmd): docker cp /home/user/qubes-builderv2/arch-keys/063938BA42CFA724.asc 75199a115f25f2452df3413a81388381d2bd94c93973b1e22776d483d1a13a1c:/builder/plugins/fetch/keys
13:18:38 [qb.fetch.builder-archlinux.fetch] Using executor docker:75199a115f25 to run 'sudo mkdir -p -- /builder /builder/build /builder/plugins /builder/distfiles&&sudo chown -R -- user:user /builder&&cd /builder&&/builder/plugins/fetch/scripts/get-and-verify-source.py https://github.com/qubesos/qubes-builder-archlinux.git /builder/builder-archlinux /builder/keyring /builder/plugins/fetch/keys --git-branch main --minimum-distinct-maintainers 1'.
13:18:39 [qb.fetch.builder-archlinux.fetch] --> Verifying tags...
13:18:39 [qb.fetch.builder-archlinux.fetch] ERROR: CalledProcessError(1, ['git', '-c', 'gpg.program=/usr/bin/gpg', '-c', 'gpg.minTrustLevel=fully', 'verify-tag', '--raw', '--', 'd4f3868505a56766127a4a7eab0051dea2114678']); stderr: [GNUPG:] NEWSIG
13:18:39 [qb.fetch.builder-archlinux.fetch] [GNUPG:] ERRSIG 063938BA42CFA724 1 8 00 1748804624 9 0064428F455451B3EBE78A7F063938BA42CFA724
13:18:39 [qb.fetch.builder-archlinux.fetch] [GNUPG:] NO_PUBKEY 063938BA42CFA724
13:18:39 [qb.fetch.builder-archlinux.fetch] [GNUPG:] FAILURE gpg-exit 33554433
13:18:39 [qb.fetch.builder-archlinux.fetch] 
13:18:39 [qb.fetch.builder-archlinux.fetch] ---> Invalid tag d4f3868505a56766127a4a7eab0051dea2114678.
13:18:39 [qb.fetch.builder-archlinux.fetch] Not enough distinct tag signatures. Found 0, mandatory minimum is 1.
13:18:39 [qb] An error occurred: Failed to run 'sudo mkdir -p -- /builder /builder/build /builder/plugins /builder/distfiles&&sudo chown -R -- user:user /builder&&cd /builder&&/builder/plugins/fetch/scripts/get-and-verify-source.py https://github.com/qubesos/qubes-builder-archlinux.git /builder/builder-archlinux /builder/keyring /builder/plugins/fetch/keys --git-branch main --minimum-distinct-maintainers 1' (status=1).

Here is official doc on builderv2
doc.qubes-os .org/en/latest/developer/building/qubes-builder-v2.html
Here is what I did:

git clone https://github.com/QubesOS/qubes-builderv2
cd qubes-builderv2/
sudo dnf install $(cat dependencies-fedora.txt)
sudo usermod -aG docker user
sudo systemctl enable docker
sudo poweroff
# boot again
cd qubes-builderv2/
tools/generate-container-image.sh docker
cp qubesbuilder/plugins/fetch/keys/0064428F455451B3EBE78A7F063938BA42CFA724.asc arch-keys/
nano builder.yml
./qb package fetch

Here is builder.yml contents:

# include configuration relevant for the current release
include:
- example-configs/archlinux.yml

key-dirs:
- arch-keys

# which repository to use to fetch sources
use-qubes-repo:
  version: 4.2
  testing: true

# each package built will have local build number appended to package release
# number. It makes it easier to update in testing environment
increment-devel-versions: true

# reduce output
debug: false

# this can be set to true if you do not want sources to be automatically
# fetched from git
skip-git-fetch: false

# executor configuration
executor:
  type: docker
  options:
    image: "qubes-builder-fedora:latest"

OK, so there are two building systems: builder and builderv2.

I was using the first one since it’s the one used in this post 'archlinux-minimal' template Also official docs lead to this post.
Looks like vmm-xen and other dependencies have been changed to support builderv2 while breaking v1 support.

Now I try to build the template using builderv2, but there’s an error. Help is much appreciated.

Here’s what I did in a standalone VM:

git clone https://github.com/QubesOS/qubes-builderv2
cd qubes-builderv2/
sudo dnf install $(cat dependencies-fedora.txt)
sudo usermod -aG docker user
sudo systemctl enable docker
sudo poweroff
# boot again
cd qubes-builderv2/
tools/generate-container-image.sh docker
nano builder.yml # content's below

#########
# fixes #
#########
# disabling git tag checks (insecure!)
nano qubesbuilder/plugins/fetch/__init__.py
# change line 132 to
# "0",

# fixing missing packages during template prep stage
nano artifacts/sources/builder-archlinux/template_archlinux/packages.list
# remove missing package names

#########
# build #
#########
./qb package fetch prep build
./qb template fetch prep build

builder.yml

# include configuration relevant for the current release
include:
- example-configs/archlinux.yml

# which repository to use to fetch sources
use-qubes-repo:
  version: 4.2
  testing: true

# each package built will have local build number appended to package release
# number. It makes it easier to update in testing environment
increment-devel-versions: true

# reduce output
debug: false

# this can be set to true if you do not want sources to be automatically
# fetched from git
skip-git-fetch: false

# executor configuration
executor:
  type: docker
  options:
    image: "qubes-builder-fedora:latest"

Cannot figure out what causes error for “template prep” stage, log:

[user@qubes-build qubes-builderv2]$ ./qb template prep
<...>
01:25:44 [qb.template.archlinux.prep] checking keyring...
01:25:44 [qb.template.archlinux.prep] error: restricting filesystem access failed because landlock is not supported by the kernel!
01:25:44 [qb.template.archlinux.prep] checking package integrity...
01:25:45 [qb.template.archlinux.prep] loading package files...
01:25:45 [qb.template.archlinux.prep] checking for file conflicts...
01:25:45 [qb.template.archlinux.prep] checking available disk space...
01:25:45 [qb.template.archlinux.prep] :: Processing package changes...
01:25:45 [qb.template.archlinux.prep] installing qubes-gpg-split...
01:25:45 [qb.template.archlinux.prep] installing libnautilus-extension...
01:25:45 [qb.template.archlinux.prep] installing gnome-autoar...
01:25:45 [qb.template.archlinux.prep] installing libinih...
01:25:45 [qb.template.archlinux.prep] installing exiv2...
01:25:45 [qb.template.archlinux.prep] installing libgexiv2...
01:25:45 [qb.template.archlinux.prep] installing libportal...
01:25:45 [qb.template.archlinux.prep] Optional dependencies for libportal
01:25:45 [qb.template.archlinux.prep]     libportal-docs: API documentation
01:25:45 [qb.template.archlinux.prep]     libportal-gtk3: GTK 3 backend
01:25:45 [qb.template.archlinux.prep]     libportal-gtk4: GTK 4 backend [pending]
01:25:45 [qb.template.archlinux.prep]     libportal-qt5: Qt 5 backend
01:25:45 [qb.template.archlinux.prep]     libportal-qt6: Qt 6 backend
01:25:45 [qb.template.archlinux.prep]     xdg-desktop-portal: Portal service
01:25:45 [qb.template.archlinux.prep] installing libportal-gtk4...
01:25:45 [qb.template.archlinux.prep] installing gexiv2...
01:25:45 [qb.template.archlinux.prep] installing gupnp-dlna...
01:25:45 [qb.template.archlinux.prep] installing libcue...
01:25:45 [qb.template.archlinux.prep] installing libgsf...
01:25:45 [qb.template.archlinux.prep] installing libiptcdata...
01:25:45 [qb.template.archlinux.prep] Optional dependencies for libiptcdata
01:25:45 [qb.template.archlinux.prep]     python: Python bindings [installed]
01:25:45 [qb.template.archlinux.prep] installing osinfo-db...
01:25:45 [qb.template.archlinux.prep] installing libosinfo...
01:25:45 [qb.template.archlinux.prep] installing uchardet...
01:25:45 [qb.template.archlinux.prep] installing totem-pl-parser...
01:25:45 [qb.template.archlinux.prep] installing localsearch...
01:25:45 [qb.template.archlinux.prep] installing xdg-user-dirs...
01:25:45 [qb.template.archlinux.prep] Created symlink '/etc/systemd/user/graphical-session-pre.target.wants/xdg-user-dirs.service' -> '/usr/lib/systemd/user/xdg-user-dirs.service'.
01:25:45 [qb.template.archlinux.prep] installing xdg-user-dirs-gtk...
01:25:45 [qb.template.archlinux.prep] installing nautilus...
01:25:45 [qb.template.archlinux.prep] installing nautilus-python...
01:25:45 [qb.template.archlinux.prep] installing python-click...
01:25:45 [qb.template.archlinux.prep] installing python-tqdm...
01:25:45 [qb.template.archlinux.prep] Optional dependencies for python-tqdm
01:25:45 [qb.template.archlinux.prep]     python-requests: telegram
01:25:45 [qb.template.archlinux.prep] installing python-magic...
01:25:45 [qb.template.archlinux.prep] installing qubes-pdf-converter...
01:25:45 [qb.template.archlinux.prep] installing usbutils...
01:25:45 [qb.template.archlinux.prep] Optional dependencies for usbutils
01:25:45 [qb.template.archlinux.prep]     coreutils: for lsusb.py usage [installed]
01:25:45 [qb.template.archlinux.prep]     python: for lsusb.py usage [installed]
01:25:45 [qb.template.archlinux.prep]     sh: for usb-devices [installed]
01:25:45 [qb.template.archlinux.prep] installing qubes-usb-proxy...
01:25:45 [qb.template.archlinux.prep] installing libnetfilter_cttimeout...
01:25:45 [qb.template.archlinux.prep] installing libnetfilter_cthelper...
01:25:45 [qb.template.archlinux.prep] installing libnetfilter_queue...
01:25:45 [qb.template.archlinux.prep] installing conntrack-tools...
01:25:45 [qb.template.archlinux.prep] installing libndp...
01:25:45 [qb.template.archlinux.prep] installing pcre...
01:25:45 [qb.template.archlinux.prep] installing slang...
01:25:45 [qb.template.archlinux.prep] installing libnewt...
01:25:45 [qb.template.archlinux.prep] Optional dependencies for libnewt
01:25:45 [qb.template.archlinux.prep]     python: libnewt support with the _snack module [installed]
01:25:45 [qb.template.archlinux.prep]     tcl: whiptcl support
01:25:45 [qb.template.archlinux.prep] installing libteam...
01:25:45 [qb.template.archlinux.prep] installing mobile-broadband-provider-info...
01:25:45 [qb.template.archlinux.prep] installing pcsclite...
01:25:45 [qb.template.archlinux.prep] Optional dependencies for pcsclite
01:25:45 [qb.template.archlinux.prep]     python: API call trace logging with the pcsc-spy [installed]
01:25:45 [qb.template.archlinux.prep]     ccid: USB Chip/Smart Card Interface Devices driver
01:25:45 [qb.template.archlinux.prep] installing wpa_supplicant...
01:25:45 [qb.template.archlinux.prep] installing networkmanager...
01:25:45 [qb.template.archlinux.prep] Optional dependencies for networkmanager
01:25:45 [qb.template.archlinux.prep]     bluez: Bluetooth support
01:25:45 [qb.template.archlinux.prep]     dhcpcd: alternative DHCP client
01:25:45 [qb.template.archlinux.prep]     dnsmasq: connection sharing
01:25:45 [qb.template.archlinux.prep]     firewalld: firewall support
01:25:45 [qb.template.archlinux.prep]     iptables: connection sharing [installed]
01:25:45 [qb.template.archlinux.prep]     iwd: wpa_supplicant alternative
01:25:45 [qb.template.archlinux.prep]     modemmanager: cellular network support
01:25:45 [qb.template.archlinux.prep]     nftables: connection sharing [pending]
01:25:45 [qb.template.archlinux.prep]     openresolv: alternative resolv.conf manager
01:25:45 [qb.template.archlinux.prep]     pacrunner: PAC proxy support
01:25:45 [qb.template.archlinux.prep]     polkit: let non-root users control networking [installed]
01:25:45 [qb.template.archlinux.prep]     ppp: dialup connection support
01:25:45 [qb.template.archlinux.prep] installing libdbusmenu-glib...
01:25:45 [qb.template.archlinux.prep] installing libdbusmenu-gtk3...
01:25:45 [qb.template.archlinux.prep] installing libappindicator...
01:25:45 [qb.template.archlinux.prep] installing libnma-common...
01:25:45 [qb.template.archlinux.prep] installing libnma...
01:25:45 [qb.template.archlinux.prep] installing nm-connection-editor...
01:25:45 [qb.template.archlinux.prep] installing network-manager-applet...
01:25:45 [qb.template.archlinux.prep] installing nftables...
01:25:45 [qb.template.archlinux.prep] Optional dependencies for nftables
01:25:45 [qb.template.archlinux.prep]     python: Python bindings [installed]
01:25:45 [qb.template.archlinux.prep] installing tinyproxy...
01:25:45 [qb.template.archlinux.prep] installing qubes-vm-networking...
01:25:45 [qb.template.archlinux.prep] Created symlink '/etc/systemd/system/multi-user.target.wants/qubes-firewall.service' -> '/usr/lib/systemd/system/qubes-firewall.service'.
01:25:45 [qb.template.archlinux.prep] Created symlink '/etc/systemd/system/network-pre.target.requires/qubes-iptables.service' -> '/usr/lib/systemd/system/qubes-iptables.service'.
01:25:45 [qb.template.archlinux.prep] Created symlink '/etc/systemd/system/multi-user.target.wants/qubes-updates-proxy.service' -> '/usr/lib/systemd/system/qubes-updates-proxy.service'.
01:25:45 [qb.template.archlinux.prep] installing qubes-vm-passwordless-root...
01:25:45 [qb.template.archlinux.prep] installing qubes-vm-recommended...
01:25:45 [qb.template.archlinux.prep] Optional dependencies for qubes-vm-recommended
01:25:45 [qb.template.archlinux.prep]     pipewire-qubes
01:25:46 [qb.template.archlinux.prep] :: Running post-transaction hooks...
01:25:46 [qb.template.archlinux.prep] ( 1/12) Creating system user accounts...
01:25:46 [qb.template.archlinux.prep] Creating group 'pcscd' with GID 966.
01:25:46 [qb.template.archlinux.prep] Creating user 'pcscd' (PC/SC Smart Card Daemon) with UID 966 and GID 966.
01:25:46 [qb.template.archlinux.prep] Creating group 'tinyproxy' with GID 186.
01:25:46 [qb.template.archlinux.prep] Creating user 'tinyproxy' (HTTP proxy daemon) with UID 186 and GID 186.
01:25:46 [qb.template.archlinux.prep] ( 2/12) Reloading system manager configuration...
01:25:46 [qb.template.archlinux.prep]   Skipped: Running in chroot.
01:25:46 [qb.template.archlinux.prep] ( 3/12) Reloading user manager configuration...
01:25:46 [qb.template.archlinux.prep]   Skipped: Running in chroot.
01:25:46 [qb.template.archlinux.prep] ( 4/12) Creating temporary files...
01:25:46 [qb.template.archlinux.prep] ( 5/12) Reloading device manager configuration...
01:25:46 [qb.template.archlinux.prep]   Skipped: Running in chroot.
01:25:46 [qb.template.archlinux.prep] ( 6/12) Arming ConditionNeedsUpdate...
01:25:46 [qb.template.archlinux.prep] ( 7/12) Refreshing PackageKit...
01:25:46 [qb.template.archlinux.prep] Error connecting: Could not connect: No such file or directory
01:25:46 [qb.template.archlinux.prep] ( 8/12) Reloading system bus configuration...
01:25:46 [qb.template.archlinux.prep] error: command failed to execute correctly
01:25:46 [qb.template.archlinux.prep]   Skipped: Running in chroot.
01:25:46 [qb.template.archlinux.prep] ( 9/12) Compiling GSettings XML schema files...
01:25:46 [qb.template.archlinux.prep] (10/12) Updating icon theme caches...
01:25:47 [qb.template.archlinux.prep] (11/12) Updating the Qubes desktop file App Icons and features...
01:25:47 [qb.template.archlinux.prep] Failed connect to local daemon
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Failed connect to local daemon
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:47 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:48 [qb.template.archlinux.prep] Running in chroot, ignoring request
01:25:49 [qb.template.archlinux.prep] (12/12) Updating the desktop file MIME type cache...
01:25:49 [qb.template.archlinux.prep]   --> Installing repository qubes package...
01:25:49 [qb.template.archlinux.prep] resolving dependencies...
01:25:49 [qb.template.archlinux.prep] looking for conflicting packages...
01:25:49 [qb.template.archlinux.prep] 
01:25:49 [qb.template.archlinux.prep] Packages (1) qubes-vm-repo-4.3.4-1.1
01:25:49 [qb.template.archlinux.prep] 
01:25:49 [qb.template.archlinux.prep] Total Download Size:   0.00 MiB
01:25:49 [qb.template.archlinux.prep] Total Installed Size:  0.00 MiB
01:25:49 [qb.template.archlinux.prep] 
01:25:49 [qb.template.archlinux.prep] :: Proceed with installation? [Y/n]
01:25:49 [qb.template.archlinux.prep] :: Retrieving packages...
01:25:49 [qb.template.archlinux.prep] error: restricting filesystem access failed because landlock is not supported by the kernel!
01:25:49 [qb.template.archlinux.prep]  qubes-vm-repo-4.3.4-1.1-x86_64 downloading...
01:25:49 [qb.template.archlinux.prep] checking keyring...
01:25:49 [qb.template.archlinux.prep] checking package integrity...
01:25:49 [qb.template.archlinux.prep] loading package files...
01:25:49 [qb.template.archlinux.prep] checking for file conflicts...
01:25:49 [qb.template.archlinux.prep] checking available disk space...
01:25:49 [qb.template.archlinux.prep] :: Processing package changes...
01:25:49 [qb.template.archlinux.prep] installing qubes-vm-repo...
01:25:49 [qb.template.archlinux.prep] ==> Appending keys from qubesos-vm.gpg...
01:25:49 [qb.template.archlinux.prep] gpg: error reading key: No public key
01:25:49 [qb.template.archlinux.prep] ==> Locally signing trusted keys in keyring...
01:25:49 [qb.template.archlinux.prep]   -> Locally signed 1 key.
01:25:49 [qb.template.archlinux.prep] ==> Importing owner trust values...
01:25:49 [qb.template.archlinux.prep] gpg: inserting ownertrust of 4
01:25:49 [qb.template.archlinux.prep] ==> Disabling revoked keys in keyring...
01:25:49 [qb.template.archlinux.prep]   -> Disabled 2 keys.
01:25:49 [qb.template.archlinux.prep] ==> Updating trust database...
01:25:49 [qb.template.archlinux.prep] gpg: Note: third-party key signatures using the SHA1 algorithm are rejected
01:25:49 [qb.template.archlinux.prep] gpg: (use option "--allow-weak-key-signatures" to override)
01:25:49 [qb.template.archlinux.prep] gpg: marginals needed: 3  completes needed: 1  trust model: pgp
01:25:49 [qb.template.archlinux.prep] gpg: depth: 0  valid:   1  signed:   7  trust: 0-, 0q, 0n, 0m, 0f, 1u
01:25:49 [qb.template.archlinux.prep] gpg: depth: 1  valid:   7  signed: 103  trust: 1-, 0q, 0n, 6m, 0f, 0u
01:25:49 [qb.template.archlinux.prep] gpg: depth: 2  valid:  76  signed:  19  trust: 76-, 0q, 0n, 0m, 0f, 0u
01:25:49 [qb.template.archlinux.prep] gpg: next trustdb check due at 2026-01-30
01:25:49 [qb.template.archlinux.prep] :: Running post-transaction hooks...
01:25:49 [qb.template.archlinux.prep] (1/2) Arming ConditionNeedsUpdate...
01:25:49 [qb.template.archlinux.prep] (2/2) Refreshing PackageKit...
01:25:49 [qb.template.archlinux.prep] Error connecting: Could not connect: No such file or directory
01:25:49 [qb.template.archlinux.prep] error: command failed to execute correctly
01:25:49 [qb.template.archlinux.prep]   --> Configuring system to our preferences...
01:25:50 [qb.template.archlinux.prep] Generating locales...
01:25:50 [qb.template.archlinux.prep]   en_US.UTF-8... done
01:25:51 [qb.template.archlinux.prep]   en_US.ISO-8859-1... done
01:25:51 [qb.template.archlinux.prep] Generation complete.
01:25:51 [qb.template.archlinux.prep] --> Choosing appmenus whitelists...
01:25:51 [qb.template.archlinux.prep] --> Creating template config file...
01:25:51 [qb.template.archlinux.prep] --> Linking /home to /rw/home...
01:25:51 [qb.template.archlinux.prep] --> Linking /usr/local to /rw/usrlocal...
01:25:51 [qb.template.archlinux.prep] Reducing image size (calling cleanup_image)...
01:25:51 [qb.template.archlinux.prep] 4552524 -rw-r--r--. 1 root root 21474836480 Dec  5 06:25 /builder/build/qubeized_images/archlinux/root.img
01:25:51 [qb.template.archlinux.prep] --> Cleaning up image file...
01:25:51 [qb.template.archlinux.prep] --> Archlinux 09_cleanup.sh
01:25:51 [qb.template.archlinux.prep] warning: database file for 'qubes-r4.3-current' does not exist (use '-Sy' to download)
01:25:51 [qb.template.archlinux.prep]   --> NB: No packages to clean up
01:25:51 [qb.template.archlinux.prep]   --> Cleaning up pacman state...
01:25:51 [qb.template.archlinux.prep] umount: /builder/mnt/var/cache/pacman: not mounted.
01:25:51 [qb.template.archlinux.prep] warning: database file for 'qubes-r4.3-current' does not exist (use '-Sy' to download)
01:25:51 [qb.template.archlinux.prep] 
01:25:51 [qb.template.archlinux.prep] Cache directory: /var/cache/pacman/pkg/
01:25:51 [qb.template.archlinux.prep] :: Do you want to remove ALL files from cache? [y/N]
01:25:51 [qb.template.archlinux.prep] 
01:25:51 [qb.template.archlinux.prep] Database directory: /var/lib/pacman/
01:25:51 [qb.template.archlinux.prep] :: Do you want to remove unused repositories? [Y/n]
01:25:51 [qb.template.archlinux.prep] removing unused sync repositories...
01:25:51 [qb.template.archlinux.prep]  --> Cleaning /etc/resolv.conf
01:25:51 [qb.template.archlinux.prep] --> Compacting image file...
01:25:51 [qb.template.archlinux.prep] /builder/mnt: 15.1 GiB (16249430016 bytes) trimmed
01:25:51 [qb.template.archlinux.prep] 4547328 -rw-r--r--. 1 root root 21474836480 Dec  5 06:25 /builder/build/qubeized_images/archlinux/root.img
01:25:51 [qb.template.archlinux.prep] --> Unmounting /builder/build/qubeized_images/archlinux/root.img
01:25:51 [qb.template.archlinux.prep] INFO: Attempting to kill any processes still running in '/builder/mnt' before un-mounting
01:25:51 [qb.template.archlinux.prep] INFO: umount /builder/mnt
01:25:51 [qb.template.archlinux.prep] Qubeized image stored at: /builder/build/qubeized_images/archlinux/root.img
01:25:51 [qb.template.archlinux.prep] make: Leaving directory '/builder/plugins/template'
01:25:52 [qb.template.archlinux.prep] copy-out (cmd): docker cp b9203ac68185e73300f789ef0a6762fd0d9f3b3114afa470292fa668ad025de4:/builder/build/template.conf /home/user/qubes-builderv2/artifacts/templates/archlinux
01:25:52 [qb.template.archlinux.prep] copy-out (cmd): docker cp b9203ac68185e73300f789ef0a6762fd0d9f3b3114afa470292fa668ad025de4:/builder/build/appmenus /home/user/qubes-builderv2/artifacts/templates/archlinux
01:25:52 [qb.template.archlinux.prep] copy-out (cmd): docker cp b9203ac68185e73300f789ef0a6762fd0d9f3b3114afa470292fa668ad025de4:/builder/build/qubeized_images/archlinux/root.img /home/user/qubes-builderv2/artifacts/templates/qubeized_images/archlinux
01:26:36 [qb] An error occurred: archlinux: Failed to prepare template.

OK, so there are two building systems: qubes-builder and qubes-builderv2.
I was using the first one 'cause it’s the one from the manual referenced by official docs 'archlinux-minimal' template

There were couple hiccups with builderv2, but eventually the build has succeeded.

git clone https://github.com/QubesOS/qubes-builderv2
cd qubes-builderv2/
sudo dnf install $(cat dependencies-fedora.txt)
sudo usermod -aG docker user
sudo systemctl enable docker
sudo poweroff
# boot again
cd qubes-builderv2/
tools/generate-container-image.sh docker
nano builder.yml
####################
#builder.yml conent#
####################
# include configuration relevant for the current release
include:
- example-configs/archlinux.yml

# which repository to use to fetch sources
use-qubes-repo:
  version: 4.2
  testing: true

# each package built will have local build number appended to package release
# number. It makes it easier to update in testing environment
increment-devel-versions: true

# reduce output
debug: false

# this can be set to true if you do not want sources to be automatically
# fetched from git
skip-git-fetch: false

# executor configuration
executor:
  type: docker
  options:
    image: "qubes-builder-fedora:latest"

#######
# END #
#######

# disabling git tag checks (insecure!)
nano qubesbuilder/plugins/fetch/__init__.py
# change line 132 to
# "0",

# fixing missing packages during template prep stage
nano artifacts/sources/builder-archlinux/template_archlinux/packages.list
# remove missing package names

./qb package fetch prep build
./qb template fetch prep build
sudo mv ./artifacts/templates/rpm/qubes-template-archlinux-4.2.0-202512050643.noarch.rpm /archlinux.rpm

# dom0
qvm-run --pass-io qubes-build 'cat /archlinux.rpm' > ~/archlinux.rpm
qvm-template install archlinux.rpm --nogpgcheck

P.S. Fuck akismet

1 Like

I followed this guide with builderv2, but the built template has issues with qubes-qrexec-agent service. I am getting error 125 when trying to run any commands with qvm-run from dom0

hi,
this does not work anymore. The qubes-builderv2 repo has been updated since this post.
For example this line is now somewhere else:

# disabling git tag checks (insecure!)
nano qubesbuilder/plugins/fetch/__init__.py
# change line 132 to
# "0",

what did you change there? Does is still need to be changed?
And I also do not have a sources directory in the artifacts folder

If I run ./qb package fetch prep build it says

14:25:12 [qb] Running stages: fetch
14:25:12 [qb] An error occurred: Cannot find 'docker' on the system.

despite docker being installed.
Could you help me out?

Oh also should the qubes repo version be changed to 4.3 if running on 4.3?

Please write a current working guide for install-build archlinux template :pray: