[DSE-Dev] Bug#1104987: libselinux FTBFS on musl: implicit declaration of lstat64
Helmut Grohne
helmut at subdivi.de
Fri May 9 12:57:51 BST 2025
Source: libselinux
Version: 3.8.1-1
Tags: patch ftbfs
User: helmutg at debian.org
Usertags: rebootstrap
libselinux fails to build from source for 64bit musl architectures.
aarch64-linux-musl-gcc -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/tmp/buildd/libselinux_1/libselinux-3.8.1=. -specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -mbranch-protection=standard -fno-semantic-interposition -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wextra -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I../include -D_GNU_SOURCE -DNO_ANDROID_BACKEND -DUSE_PCRE2 -DPCRE2_CODE_UNIT_WIDTH=8 -DHAVE_STRLCPY -DHAVE_REALLOCARRAY -c -o selinux_restorecon.o selinux_restorecon.c
selinux_restorecon.c: In function ‘filespec_add’:
selinux_restorecon.c:441:23: error: storage size of ‘sb’ isn’t known
441 | struct stat64 sb;
| ^~
selinux_restorecon.c:455:31: error: implicit declaration of function ‘lstat64’; did you mean ‘lstat’? [-Wimplicit-function-declaration]
455 | ret = lstat64(fl->file, &sb);
| ^~~~~~~
| lstat
selinux_restorecon.c:441:23: warning: unused variable ‘sb’ [-Wunused-variable]
441 | struct stat64 sb;
| ^~
In order to use lstat64, -D_LARGEFILE64_SOURCE must be defined.
debian/rules defines this for 32bit, but it really is always required.
On 64bit, it would be ok to use lstat directly, but the use of the
lstat64 name requires the macro to be set.
Attaching a patch for your convenience.
Helmut
-------------- next part --------------
diff --minimal -Nru libselinux-3.8.1/debian/changelog libselinux-3.8.1/debian/changelog
--- libselinux-3.8.1/debian/changelog 2025-03-16 08:02:09.000000000 +0100
+++ libselinux-3.8.1/debian/changelog 2025-05-09 13:54:17.000000000 +0200
@@ -1,3 +1,10 @@
+libselinux (3.8.1-1.1) UNRELEASED; urgency=medium
+
+ * Non-maintainer upload.
+ * Fix musl FTBFS: Always define -D_LARGEFILE64_SOURCE. (Closes: #-1)
+
+ -- Helmut Grohne <helmut at subdivi.de> Fri, 09 May 2025 13:54:17 +0200
+
libselinux (3.8.1-1) unstable; urgency=medium
* New upstream release, just change version number Closes: #1099888
diff --minimal -Nru libselinux-3.8.1/debian/rules libselinux-3.8.1/debian/rules
--- libselinux-3.8.1/debian/rules 2025-02-03 09:35:18.000000000 +0100
+++ libselinux-3.8.1/debian/rules 2025-05-09 13:54:15.000000000 +0200
@@ -28,10 +28,8 @@
BUILT_USING=$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W "libsepol-dev")
-ifeq ($(DEB_HOST_ARCH_BITS),32)
# Use of lstat64 requires this macro.
export DEB_CPPFLAGS_MAINT_APPEND += -D_LARGEFILE64_SOURCE
-endif
# Upstream recommends using this flag
export DEB_CFLAGS_MAINT_APPEND = -fno-semantic-interposition
More information about the SELinux-devel
mailing list