bfr: fix broken build because of stricter GCC default checks

GCC now complains if `main` has no explicitly declared return type.
Because `bfr`s `configure` script uses a very minimal C application
to check whether GCC works _at all_ (literally: `main(){return(0);}`),
this caused configure failures.

Another issue with the `configure` script is that it logs the compiler
errors for its checks to `configure.log` (and not to stdout or stderr),
which means that the root cause wasn't logged during the failed nix
build.

I added a patch that rewires the compiler error file descriptor so
that it will simply log to stderr and another patch that fixes the
missing return type in the C example.

Unfortunately, it looks like the server isn't serving the source
files anymore (and finding an official upstream repo which I could
send a PR to seems... non-trivial).
This commit is contained in:
Manuel Frischknecht 2025-05-25 17:45:28 +02:00
parent f1c69b60ad
commit 58e77c03a3
3 changed files with 29 additions and 0 deletions

View file

@ -0,0 +1,13 @@
diff --git a/configure b/configure
index 53e90a7..4afeb58 100755
--- a/configure
+++ b/configure
@@ -411,7 +411,7 @@ if test "$silent" = yes; then
else
exec 6>&1
fi
-exec 5>./config.log
+exec 5>&2
echo "\
This file contains any messages produced by compilers while

View file

@ -0,0 +1,13 @@
diff --git a/configure b/configure
index 53e90a7..cc80615 100755
--- a/configure
+++ b/configure
@@ -908,7 +908,7 @@ cat > conftest.$ac_ext << EOF
#line 909 "configure"
#include "confdefs.h"
-main(){return(0);}
+int main(){return(0);}
EOF
if { (eval echo configure:914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes

View file

@ -15,6 +15,9 @@ stdenv.mkDerivation rec {
};
patches = [
./configure-log-compiler-errors-to-stderr.patch
./fix-gcc-complaining-about-invalid-configure-example-code.patch
(fetchurl {
url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/app-misc/bfr/files/bfr-1.6-perl.patch?id=dec60bb6900d6ebdaaa6aa1dcb845b30b739f9b5";
sha256 = "1pk9jm3c1qzs727lh0bw61w3qbykaqg4jblywf9pvq5bypk88qfj";