merge.conflictstyle being set to zdiff3, and add information about how to uninstall for users of guix-install.sh
merge.conflictstyle being set to zdiff3, and add information about how to uninstall for users of guix-install.sh
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/32442.
See the guideline for information on the review process.
| Type | Reviewers |
|---|---|
| ACK | hebasto |
If your review is incorrectly listed, please copy-paste <!–meta-tag:bot-skip–> into the comment that the bot should ignore.
Possible typos and grammar issues:
->sudo apt purge guix` [closing backtick appears without an opening; the package-remove command should be enclosed in backticks for clarity]2025-12-12
832@@ -784,7 +833,9 @@ an irreversible way, you may want to completely purge Guix from your system and
833 start over.
834
835 1. Uninstall Guix itself according to the way you installed it (e.g. `sudo apt
836- purge guix` for Ubuntu packaging, `sudo make uninstall` for a build from source).
837+ purge guix` for Ubuntu packaging, `sudo make uninstall` for a build from
838+ source), or running the GUIX [install script][install-script] with the
839+ `--unininstall` [flag](https://guix.gnu.org/manual/devel/en/guix.html#index-uninstalling-Guix).
0 `--uninstall` [flag](https://guix.gnu.org/manual/devel/en/guix.html#index-uninstalling-Guix).
795@@ -763,6 +796,22 @@ Please see the following links for more details:
796 - A commit to skip this test in Guix has been merged into the core-updates branch:
797 [savannah/guix@6ba1058](https://git.savannah.gnu.org/cgit/guix.git/commit/?id=6ba1058df0c4ce5611c2367531ae5c3cdc729ab4)
798
799+## zdiff3
800+
801+[Currently](https://issues.guix.gnu.org/72942) `guix` builds may fail if the
Would it be possible to work around this in the build script somehow?
i guess not, i mean except by changing a global git setting there, which would be awful behavior…
Are there steps to reproduce on a fresh install? I tried Ubuntu 24.04, but it seems to pass:
0 1 export DEBIAN_FRONTEND=noninteractive && apt update && apt install git vim htop guix bash curl make -y && groupadd --system guixbuild && for i in `seq -w 1 10`; do useradd -g guixbuild -G guixbuild -d /var/empty -s `which nologin` -c "Guix build user $i" --system guixbuilder$i; done
1 2 git config --global merge.conflictstyle zdiff3
2 3 guix-daemon --build-users-group=guixbuild &
3 4 guix time-machine --url=https://git.savannah.gnu.org/git/guix.git --commit=53396a22afc04536ddf75d8f82ad2eafa5082725 -- install hello
You can reproduce this issue as follows with podman:
0# The reason a Dockerfile is needed is to get systemd installed and running in
1# the container.
2mkdir -p /tmp/ubuntu-systemd-container && cd /tmp/ubuntu-systemd-container
3cat > ./Dockerfile << 'EOF'
4FROM ubuntu:24.04
5ENV DEBIAN_FRONTEND=noninteractive
6
7RUN apt-get update
8RUN apt-get install -y curl git gpg systemd make uidmap wget xz-utils
9CMD ["/lib/systemd/systemd"]
10EOF
11
12# I haven't confirmed, but I don't think getting systemd running is as easy
13# with docker
14podman build -t ubuntu-systemd .
15podman run -d --replace --name ubuntu-systemd --systemd=always ubuntu-systemd
16podman exec -it ubuntu-systemd /bin/bash
0git config --global merge.conflictstyle zdiff3
1
2# https://guix.gnu.org/manual/en/html_node/Binary-Installation.html#Binary-Installation-1
3cd /tmp
4wget -O guix-install.sh https://guix.gnu.org/install.sh
5chmod +x guix-install.sh
6yes '' | ./guix-install.sh
7
8git clone https://github.com/bitcoin/bitcoin.git --depth 1 && cd bitcoin
9HOSTS=x86_64-linux-gnu ./contrib/guix/guix-build
Running the same commands as above once inside the container:
0mkdir -p /tmp/fedora-systemd-container && cd /tmp/fedora-systemd-container
1cat > ./Dockerfile << 'EOF'
2FROM registry.fedoraproject.org/fedora:43
3RUN dnf update -y
4RUN dnf -y install git make systemd wget
5CMD ["/lib/systemd/systemd"]
6EOF
7
8# I haven't confirmed, but I don't think getting systemd running is as easy
9# with docker
10podman build -t fedora-systemd .
11podman run -d --replace --name fedora-systemd --systemd=always fedora-systemd
12podman exec -it fedora-systemd /bin/bash
630+easiest solution is to set `SELinux` to permissive for guix-daemon:
631+
632+```bash
633+# as root
634+semanage permissive -a guix_daemon.guix_daemon_t
635+```
I believe this is no longer necessary.
On my Fedora 43 installation with the working Guix:
0$ sestatus
1SELinux status: enabled
2SELinuxfs mount: /sys/fs/selinux
3SELinux root directory: /etc/selinux
4Loaded policy name: targeted
5Current mode: enforcing
6Mode from config file: enforcing
7Policy MLS status: enabled
8Policy deny_unknown status: allowed
9Memory protection checking: actual (secure)
10Max kernel policy version: 35
11$ guix describe
12Generation 27 Dec 05 2025 14:13:44 (current)
13 guix bd2edc9
14 repository URL: https://git.guix.gnu.org/guix.git
15 branch: master
16 commit: bd2edc9e435402b48fd201b56ab486151512717a
769+
770+[Currently](https://issues.guix.gnu.org/72942) `guix` builds may fail if the
771+global git config has `merge.conflictstyle` set to `zdiff3` as follows:
772+
773+```
774+Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
The default URL of the repository has been updated recently:
0Updating channel 'guix' from Git repository at 'https://git.guix.gnu.org/guix.git'...
I’m not sure which is the “canonical” one, but git.guix.gnu.org redirects to codeberg and that is what I actually see in the error message:
0Updating channel 'guix' from Git repository at 'https://codeberg.org/guix/guix.git'...
1guix time-machine: error: Git error: unknown style 'zdiff3' given for 'merge.conflictstyle'
guix time-machine --url in /contrib/guix/libexec/prelude.bash
798@@ -782,7 +799,9 @@ an irreversible way, you may want to completely purge Guix from your system and
799 start over.
800
801 1. Uninstall Guix itself according to the way you installed it (e.g. `sudo apt
802- purge guix` for Ubuntu packaging, `sudo make uninstall` for a build from source).
803+ purge guix` for Ubuntu packaging, `sudo make uninstall` for a build from
804+ source), or running the GUIX [install script][install-script] with the
running -> run [The sentence starts with an imperative ("Uninstall Guix itself...") and needs a parallel imperative verb; "or running" is a fragment — "or run" makes the coordination grammatical.]
The mistake I made was that or running... should be inside of the parentheses. The items in the parentheses don’t “need” to be parallel with “Uninstall” even if you respect the parallel structure device as a rule (which it isn’t.)
I moved the guix install script instructions inside the parentheses.
759@@ -758,13 +760,28 @@ Please see the following links for more details:
760
761 - An upstream coreutils bug has been filed: [debbugs#47940](https://debbugs.gnu.org/cgi/bugreport.cgi?bug=47940)
762 - A Guix bug detailing the underlying problem has been filed: [guix-issues#47935](https://issues.guix.gnu.org/47935), [guix-issues#49985](https://issues.guix.gnu.org/49985#5)
763-- A commit to skip this test is included since Guix 1.4.0:
764-[codeberg/guix@6ba1058](https://codeberg.org/guix/guix/commit/6ba1058df0c4ce5611c2367531ae5c3cdc729ab4)
765+- A commit to skip this test in Guix has been merged into the core-updates branch:
766+[savannah/guix@6ba1058](https://git.savannah.gnu.org/cgit/guix.git/commit/?id=6ba1058df0c4ce5611c2367531ae5c3cdc729ab4)
767
768+## zdiff3
0### zdiff3
798@@ -782,7 +799,9 @@ an irreversible way, you may want to completely purge Guix from your system and
799 start over.
800
801 1. Uninstall Guix itself according to the way you installed it (e.g. `sudo apt
802- purge guix` for Ubuntu packaging, `sudo make uninstall` for a build from source).
803+ purge guix` for Ubuntu packaging, `sudo make uninstall` for a build from
804+ source, or running the GUIX [install script][install-script] with the
0 source, or running the Guix [install script][install-script] with the