Source: fakeroot Version: 1.25.2-1 Severity: serious Tags: patch ftbfs Justification: fails to build from source (but built successfully in the past)
Hi, The latest upload of fakeroot got support for statx added, thanks for that. Unfortunately it doesn't work on mipsel, as spotted by the testsuite: | make[5]: Entering directory '/<<PKGBUILDDIR>>/obj-sysv/test' | FAIL: t.chmod_dev | PASS: t.cp-a | PASS: t.echoarg | PASS: t.falsereturn | FAIL: t.mknod | PASS: t.no_ld_preload | PASS: t.no_ld_preload_link | PASS: t.option | PASS: t.tar | PASS: t.touchinstall | PASS: t.truereturn | PASS: t.xattr | ============================================================================ | Testsuite summary for fakeroot 1.25.2 | ============================================================================ | # TOTAL: 12 | # PASS: 10 | # SKIP: 0 | # XFAIL: 0 | # FAIL: 2 | # XPASS: 0 | # ERROR: 0 | ============================================================================ | See test/test-suite.log | Please report to cl...@debian.org | ============================================================================ The full build log is available there: https://buildd.debian.org/status/fetch.php?pkg=fakeroot&arch=mipsel&ver=1.25.2-1&stamp=1601883875&raw=0 The issue is due to mixes between struct stat and INT_STRUCT_STAT as spotted by this warning: | ../libfakeroot.c: In function ‘statx’: | ../libfakeroot.c:2466:17: warning: passing argument 1 of ‘send_get_stat’ from incompatible pointer type [-Wincompatible-pointer-types] | 2466 | SEND_GET_STAT(&st,ver); | | ^~~ | | | | | struct stat64 * | ../libfakeroot.c:88:42: note: in definition of macro ‘SEND_GET_STAT’ | 88 | #define SEND_GET_STAT(a,b) send_get_stat(a) | | ^ | In file included from ../libfakeroot.c:60: | ../communicate.h:174:40: note: expected ‘struct stat *’ but argument is of type ‘struct stat64 *’ | 174 | extern void send_get_stat(struct stat *buf); | | ~~~~~~~~~~~~~^~~ The attached patch fixes the issue. With it the warning is gone, the testsuite passes and the package builds successfully on mipsel. Regards, Aurelien
--- fakeroot-1.25.2.orig/libfakeroot.c +++ fakeroot-1.25.2/libfakeroot.c @@ -102,6 +102,7 @@ #define INT_NEXT_FSTATAT(a,b,c,d) NEXT_FSTATAT64(_STAT_VER,a,b,c,d) #define INT_SEND_STAT(a,b) SEND_STAT64(a,b,_STAT_VER) #define INT_SEND_GET_XATTR(a,b) SEND_GET_XATTR64(a,b,_STAT_VER) +#define INT_SEND_GET_STAT(a,b) SEND_GET_STAT64(a,b) #else #define INT_STRUCT_STAT struct stat #define INT_NEXT_STAT(a,b) NEXT_STAT(_STAT_VER,a,b) @@ -110,6 +111,7 @@ #define INT_NEXT_FSTATAT(a,b,c,d) NEXT_FSTATAT(_STAT_VER,a,b,c,d) #define INT_SEND_STAT(a,b) SEND_STAT(a,b,_STAT_VER) #define INT_SEND_GET_XATTR(a,b) SEND_GET_XATTR(a,b,_STAT_VER) +#define INT_SEND_GET_STAT(a,b) SEND_GET_STAT(a,b) #endif #include <stdlib.h> @@ -2463,7 +2465,7 @@ int statx (int dirfd, const char *path, r=INT_NEXT_FSTATAT(dirfd, path, &st, flags); if(r) return -1; - SEND_GET_STAT(&st,ver); + INT_SEND_GET_STAT(&st,ver); r=next_statx(dirfd, path, flags, mask, buf); if(r)