Subject: libdbi-drivers does not build

From: Tomas Volf <[email-masked]>
Date: Mon, 21 Jul 2025 13:56:12 +0200

Hello,

I pulled latest Guix and tried to reconfigure my home, but it failed due
to a build failure in libdbi-drivers:

--8<---------------cut here---------------start------------->8---
$ guix describe            
Generation 1	Jul 21 2025 11:48:06	(current)
  guix e942608
    repository URL: https://git.guix.gnu.org/guix.git
    branch: master
    commit: e94260852b67fcad6f7f32c1944718a8d08a494d
--8<---------------cut here---------------end--------------->8---

--8<---------------cut here---------------start------------->8---
$ guix build libdbi-drivers
[..]
gcc -DHAVE_CONFIG_H -I. -I../.. -Iinclude    -std=gnu99  -MT cdash_reporter.o -MD -MP -MF .deps/cdash_reporter.Tpo -c -o cdash_reporter.o `test -f 'src/cdash_reporter.c' || echo './'`src/cdash_reporter.c
src/constraint.c: In function ‘with_’:
src/constraint.c:104:22: error: assignment to ‘void (*)(Constraint *, const char *, intptr_t,  const char *, int,  TestReporter *)’ {aka ‘void (*)(struct Constraint_ *, const char *, long int,  const char *, int,  struct TestReporter_ *)’} from incompatible pointer type ‘void (*)(Constraint *, const char *, const char *, intptr_t,  const char *, int,  TestReporter *)’ {aka ‘void (*)(struct Constraint_ *, const char *, const char *, long int,  const char *, int,  struct TestReporter_ *)’} [-Wincompatible-pointer-types]
  104 |     constraint->test = &test_with_matcher;
      |                      ^
src/constraint.c: In function ‘compare_using_matcher’:
src/constraint.c:167:39: error: initialization of ‘int (*)(const void *)’ from ‘intptr_t’ {aka ‘long int’} makes pointer from integer without a cast [-Wint-conversion]
  167 |         int (*matches)(const void*) = constraint->expected;
      |                                       ^~~~~~~~~~
src/constraint.c:168:20: error: passing argument 1 of ‘matches’ makes pointer from integer without a cast [-Wint-conversion]
  168 |     return matches(actual);
      |                    ^~~~~~
      |                    |
      |                    intptr_t {aka long int}
src/constraint.c:168:20: note: expected ‘const void *’ but argument is of type ‘intptr_t’ {aka ‘long int’}
make[3]: *** [Makefile:454: constraint.o] Error 1
make[3]: *** Waiting for unfinished jobs....
src/unit.c: In function ‘wait_for_child_process’:
src/unit.c:229:5: error: implicit declaration of function ‘wait’; did you mean ‘want’? [-Wimplicit-function-declaration]
  229 |     wait(&status);
      |     ^~~~
      |     want
mv -f .deps/breadcrumb.Tpo .deps/breadcrumb.Po
make[3]: *** [Makefile:356: unit.o] Error 1
--8<---------------cut here---------------end--------------->8---

Have a nice day,
Tomas

-- 
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.