Fails to build with recent Fedora 44 on x86
0.8.4.20 and 0.8.4.21 are failing to build on Fedora 44 on x86 archs:
- https://koji.fedoraproject.org/koji/taskinfo?taskID=139081358
- https://koji.fedoraproject.org/koji/taskinfo?taskID=139081062
As you can see other Archs aren't failing.
Older Fedora Releases build fine:
Maybe even older tor releases are failing to build with the recent release, but this haven't been tested.
Buildlog of 0.8.4.21: https://kojipkgs.fedoraproject.org//work/tasks/1403/139081403/build.log
Tor Version: Tor 0.4.8.21
Build Features
Compiler: gcc
Host OS: linux-gnu
License Option: GPL
Warnings are fatal (--enable-fatal-warnings): no
Android support (--enable-android): no
Static Build
tor (--enable-static-tor): no
libevent (--enable-static-libevent): no
libssl (--enable-static-openssl): no
zlib1g (--enable-static-zlib): no
Optional Libraries
libnss (--enable-nss): no
libseccomp (--disable-seccomp): yes
libscrypt (--disable-libscrypt): yes
Systemd support (--enable-systemd): no
liblzma (--enable-lzma): yes
libzstd (--enable-zstd): yes
Hardening
Compiler Hardening (--disable-gcc-hardening): yes
Linker Hardening (--disable-linker-hardening): yes
Fragile Hardening (--enable-fragile-hardening, dev only): no
Modules
relay (--disable-module-relay): yes
dirauth (--disable-module-dirauth): yes
dircache: yes
pow (--disable-module-pow): yes
Documentation
AsciiDoc (--disable-asciidoc): yes
Man Pages (--disable-manpage): yes
HTML Manual (--disable-html-manual): yes
Tests
Unit tests (--disable-unittests): yes
assert()s enabled (--enable-asserts-in-tests, dev only): no
Code Coverage (--enable-coverage): no
libFuzzer support (--enable-libfuzzer): no
OSS-Fuzz support (--enable-oss-fuzz): no
Tracing (--enable-tracing-instrumentation-<type>)
Tracepoints to log_debug() (log-debug): no
USDT Instrumentation (usdt): no
LTTng Instrumentation (lttng): no
Install Directories
Binaries: /usr/bin
Configuration: /etc/tor
Man Pages: /usr/share/man
[...]
gcc -DHAVE_CONFIG_H -I. -I./src -I./src/ext -I./src/ext/trunnel -I./src/trunnel -I./src/ext/ -I./src/ext/equix/hashx/include/ -DSHARE_DATADIR="\"/usr/share\"" -DLOCALSTATEDIR="\"/var\"" -DBINDIR="\"/usr/bin\"" -DTOR_UNIT_TESTS -DHAVE_MODULE_RELAY=1 -DHAVE_MODULE_DIRAUTH=1 -DHAVE_MODULE_DIRCACHE=1 -DHAVE_MODULE_POW=1 -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m32 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all -Wstack-protector --param ssp-buffer-size=1 -fPIE -fasynchronous-unwind-tables -fcf-protection=full -Wall -fno-strict-aliasing @warning_flags -c -o src/lib/sandbox/libtor_sandbox_testing_a-sandbox.o `test -f 'src/lib/sandbox/sandbox.c' || echo './'`src/lib/sandbox/sandbox.c
make[1]: Leaving directory '/builddir/build/BUILD/tor-0.4.8.21-build/tor-0.4.8.21'
In file included from src/lib/sandbox/sandbox.c:36:
./src/lib/sandbox/sandbox.h:24:21: error: expected identifier before numeric constant
24 | #define SYS_SECCOMP 1
| ^
In file included from /usr/include/signal.h:58,
from src/lib/sandbox/sandbox.c:67:
src/lib/sandbox/sandbox.c: In function ‘sigsys_debugging’:
src/lib/sandbox/sandbox.c:1996:24: error: ‘SYS_SECCOMP’ undeclared (first use in this function)
1996 | if (info->si_code != SYS_SECCOMP)
| ^~~~~~~~~~~
src/lib/sandbox/sandbox.c:1996:24: note: each undeclared identifier is reported only once for each function it appears in
make[1]: *** [Makefile:18822: src/lib/sandbox/libtor_sandbox_testing_a-sandbox.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Entering directory '/builddir/build/BUILD/tor-0.4.8.21-build/tor-0.4.8.21'
Reproducing locally (on x86): podman run -it fedora:44
In the container
- dnf install rpm-build
- curl -o ./tor-0.4.8.21-1.fc44.src.rpm https://kojipkgs.fedoraproject.org//work/tasks/1366/139081366/tor-0.4.8.21-1.fc44.src.rpm
- rpm -i tor-0.4.8.21-1.fc44.src.rpm
- cd /root/rpmbuild/SPECS
- dnf builddep tor.spec
- rpmbuild -ba tor.spec
=> failure
Tor packages in Fedora have been building with libseccomp for the last 10 years: https://src.fedoraproject.org/rpms/tor/c/258f9f5d341905520017de1ac8e7a5aa58c4b6ba
Removing libseccomp-devel from the build dependencies (commenting the BuildRequires out in the tor.spec and removing it from the container dnf remove libseccomp-devel)
This let's the build pass (obviously)
libseccomp has the same version on F44 and non F43 where on the latter the build passes.