From e0d1accdeef5866226c90032fbdf0197b5d9bb43 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Tue, 28 Jan 2025 22:54:06 +0000 Subject: [PATCH] pkgsi686Linux.libredirect: do no fail on 64-bit inodes Without the change `pkgsi686Linux.libredirect` tests fail on `btrfs` where inodes are outside 32-bit range: $ nix build --no-link -f. -L pkgsi686Linux.libredirect ... libredirect> test: test.c:95: main: Assertion `stat(TESTPATH, &testsb) != -1' failed. As libredirect` intends to test 32-bit syscall interface let's just skip the overflows. --- pkgs/by-name/li/libredirect/test.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/li/libredirect/test.c b/pkgs/by-name/li/libredirect/test.c index e5685fcb31b7..59a47d8a02ae 100644 --- a/pkgs/by-name/li/libredirect/test.c +++ b/pkgs/by-name/li/libredirect/test.c @@ -92,11 +92,15 @@ int main(int argc, char *argv[]) assert(access(TESTPATH, X_OK) == 0); - assert(stat(TESTPATH, &testsb) != -1); + // On EOVERFLOW checks below: when TESTPATH lands on a filesystem + // that requires 64-bit inode values (like btrfs used for a while) + // it will fail on 32-bit systems. + + assert(stat(TESTPATH, &testsb) != -1 || errno == EOVERFLOW); #ifdef __GLIBC__ assert(stat64(TESTPATH, &testsb64) != -1); #endif - assert(fstatat(123, TESTPATH, &testsb, 0) != -1); + assert(fstatat(123, TESTPATH, &testsb, 0) != -1 || errno == EOVERFLOW); #ifdef __GLIBC__ assert(fstatat64(123, TESTPATH, &testsb64, 0) != -1); #endif