[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