bug#79595: guile-3.0.10 fails to build on armv7 and i386 FreeBSD
"Robert Kirkman" via "Bug reports for GUILE, GNU's Ubiquitous Extension Language" <[email protected]> Sat, 25 Oct 2025 19:53:14 +0000
| Newsgroups | gmane.lisp.guile.bugs |
|---|---|
| Message-ID | <[email protected]> |
Hello, I have been troubleshooting this error for a while now, and I have=
collected some further information.
Here is a summary of some of the information I have collected:
- I have determined that this error does not require FreeBSD to reproduce=
, and is actually also reproducible under certain controlled conditions o=
n multiple operating systems that are not FreeBSD, including but not limi=
ted to GNU/Linux
- Indeed, in certain real-world situations, it's possible to encounter th=
is error without using FreeBSD at any point, indicating that this error i=
s affecting more environments generally than just FreeBSD alone (I first =
experienced this error in a non-FreeBSD environment, and since I found th=
is report of the same error on FreeBSD when looking for my issue in the G=
uile mailing list, I am commenting on the same issue rather than opening =
a separate issue, since I believe that the issue affects multiple operati=
ng systems and I believe I am experiencing the same issue on a different =
operating system)
- However, just compiling Guile 3.0.10 on any normal 32-bit GNU/Linux ins=
tallation is not sufficient to consistently reproduce the error
- To reproduce the error consistently on GNU/Linux, it is necessary to pe=
rform a contrived and obscure series of setup steps and build settings th=
at could be described as "cross-compiling Guile 3.0.10 from 64-bit x86 GN=
U/Linux to 32-bit x86 GNU/Linux"
- Due to the inherent difficulty, danger and unreliability of modifying o=
ne's preexisting GNU/Linux installation to be capable of consistently rep=
roducing the error, I have carefully written a Dockerfile for 64-bit x86 =
Linux PCs that have Docker installed, which can consistently reproduce th=
e same exact error described in this issue if it is placed in an empty fo=
lder and the command 'docker build .' is used in that folder on any 64-bi=
t x86 Linux PC that has Docker installed.
- In the process of troubleshooting this issue, I have also confirmed tha=
t, as implied by the original report, Guile 3.0.9 was not affected by the=
issue, and I have bisected the exact commit which introduced the error t=
o this commit which was created in between the release of Guile 3.0.9 and=
the release of Guile 3.0.10: https://cgit.git.savannah.gnu.org/cgit/guil=
e.git/commit/?id=3Dd579848cb5d65440af5afd9c8968628665554c22
- I have also confirmed that using the source code of Guile 3.0.10, but l=
ocally reverting that commit in it via the command 'patch -p1 -R < d57984=
8c.patch' or an equivalent way of reverting individual commits does work =
to work around the error and prevent it from occurring successfully in al=
l of the situations where I know the issue to be reproducible, including =
within the Dockerfile I am providing below, and because of that, even tho=
ugh I don't personally use FreeBSD, I assume that users of 32-bit FreeBSD=
wanting to build Guile 3.0.10 would be able to as well, if desired, by l=
ocally reverting that commit.
- However, despite it being possible to reproduce the error on GNU/Linux =
under certain conditions, I have already tested every single relevant pat=
ch for Guile 3.0.10 that I found in Debian sid's current guile 3.0.10 pac=
kage, here, https://sources.debian.org/src/guile-3.0/3.0.10%2Breally3.0.1=
0-6/debian/patches , and I have determined that none of the currently-ava=
ilable Debian patches for Guile located there are capable of preventing t=
his error from occurring under its reproduction conditions. The only patc=
h I have personally been able to find or create so far that is capable of=
completely preventing the error is reverting Guile upstream commit d5798=
48cb5d65440af5afd9c8968628665554c22.
Here is the Dockerfile I have created to help to document and provide a c=
onsistent reproduction environment for this issue to users of 64-bit x86 =
GNU/Linux who have Docker installed, but who might not have 32-bit FreeBS=
D or other affected alternative operating systems conveniently available =
to them:
```
FROM --platform=3Dlinux/amd64 debian:trixie
ADD https://mirrors.kernel.org/gnu/guile/guile-3.0.10.tar.gz /tmp/guile.t=
ar.gz
ADD https://cgit.git.savannah.gnu.org/cgit/guile.git/patch/?id=3Dd579848c=
b5d65440af5afd9c8968628665554c22 /tmp/d579848c.patch
WORKDIR /root
ENV CFLAGS=3D-m32
ENV PKG_CONFIG_PATH=3D/usr/lib/i386-linux-gnu/pkgconfig
RUN dpkg --add-architecture i386
RUN apt update
RUN apt install -y build-essential \
gcc-multilib \
pkg-config \
libffi-dev:i386 \
libgc-dev:i386 \
libgmp-dev:i386 \
libreadline-dev:i386 \
libncurses-dev:i386 \
libunistring-dev:i386
RUN tar xf /tmp/guile.tar.gz --strip-components=3D1
# before d579848c, this worked, and it still works if that commit is reve=
rted
RUN patch -p1 -R < /tmp/d579848c.patch
RUN ./configure --host=3Di386-linux-gnu
# successful
RUN make
RUN make distclean
# if d579848c is reapplied and another build performed, it will fail!
RUN patch -p1 < /tmp/d579848c.patch
RUN ./configure --host=3Di386-linux-gnu
# build will fail here!
RUN make
```