package/ltp-testsuite: backport musl build fixes
When building LTP with a musl toolchain with kernel headers >= 6.14,
compilation fails with error:
In file included from listmount02.c:22:
listmount.h: In function ‘listmount’:
listmount.h:18:16: error: variable ‘req’ has initializer but incomplete type
18 | struct mnt_id_req req = {
| ^~~~~~~~~~
The issue can be reproduced with commands:
cat >.config <<EOF
BR2_aarch64=y
BR2_TOOLCHAIN_BUILDROOT_MUSL=y
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_LATEST_VERSION=y
BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
BR2_PACKAGE_LTP_TESTSUITE=y
EOF
make olddefconfig
make ltp-testsuite
Backport 2 commits from upstream which fixes LTP on musl on
kernel >= 6.14.
Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
[Julien:
- add commands to reproduce the issue in commit log
- move _AUTORECONF up to be nearer _VERSION
]
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
committed by
Julien Olivain
parent
c430f54f36
commit
0ccd9300cd
@@ -0,0 +1,51 @@
|
||||
From 3ef4bac1dd253628dfdb8a823b51ae0d24fa0616 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Vorel <pvorel@suse.cz>
|
||||
Date: Mon, 2 Jun 2025 19:08:30 +0200
|
||||
Subject: [PATCH] configure: Fix build on kernel 6.14 headers
|
||||
|
||||
We decided in a2300dc0f5 to remove <linux/mount.h> in lapi/mount.h and
|
||||
use only <sys/mount.h>. But later in 5c5411ea8e we add autotools checks
|
||||
in configure.ac which use <linux/mount.h> for detection, but kept using
|
||||
lapi/mount.h. This worked until now, because no toolchain used new
|
||||
header enough. Recent Alpine update broke that.
|
||||
|
||||
This fixes CI build on Alpine v3.22 (the default Alpine version in
|
||||
GitHub action), which uses 6.14.2 kernel headers, which already define
|
||||
struct mnt_id_req (configure.ac detect it but lapi/mount.h was not using
|
||||
a correct header):
|
||||
|
||||
listmount.h: In function 'listmount':
|
||||
listmount.h:18:16: error: variable 'req' has initializer but incomplete type
|
||||
18 | struct mnt_id_req req = {
|
||||
| ^~~~~~~~~~
|
||||
|
||||
Link: https://lore.kernel.org/ltp/20250602170831.404641-1-pvorel@suse.cz/
|
||||
Fixes: 5c5411ea8e ("Add listmount/statmount fallback declarations")
|
||||
Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
|
||||
Acked-by: Jan Stancek <jstancek@redhat.com>
|
||||
Signed-off-by: Petr Vorel <pvorel@suse.cz>
|
||||
Upstream: https://github.com/linux-test-project/ltp/commit/3ef4bac1dd253628dfdb8a823b51ae0d24fa0616
|
||||
---
|
||||
configure.ac | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 9ff098b273..69c5be7362 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -254,8 +254,10 @@ AC_CHECK_TYPES([struct mount_attr],,,[
|
||||
|
||||
AC_CHECK_TYPES([struct cachestat_range],,,[#include <sys/mman.h>])
|
||||
AC_CHECK_TYPES([struct cachestat],,,[#include <sys/mman.h>])
|
||||
-AC_CHECK_TYPES([struct mnt_id_req],,,[#include <linux/mount.h>])
|
||||
-AC_CHECK_TYPES([struct statmount],,,[#include <linux/mount.h>])
|
||||
+
|
||||
+# Defined in <linux/mount.h>, but include/lapi/mount.h includes <sys/mount.h> */
|
||||
+AC_CHECK_TYPES([struct mnt_id_req],,,[#include <sys/mount.h>])
|
||||
+AC_CHECK_TYPES([struct statmount],,,[#include <sys/mount.h>])
|
||||
|
||||
# Tools knobs
|
||||
|
||||
--
|
||||
2.50.0
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
From fe8c0dac5ab4aa49c4f977d14f8a8d24cefa6435 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Vorel <pvorel@suse.cz>
|
||||
Date: Wed, 4 Jun 2025 16:13:18 +0200
|
||||
Subject: [PATCH] statmount02: Remove <linux/btrfs.h>
|
||||
|
||||
statmount02.c does not need <linux/btrfs.h> because it's skipped.
|
||||
|
||||
Avoid using it fixes the problem due the old problem of indirect include
|
||||
<linux/mount.h> by <linux/fs.h> on Alpine v3.22 (the default Alpine
|
||||
version in GitHub action), which uses 6.14.2 kernel headers:
|
||||
|
||||
In file included from /usr/include/linux/fs.h:19,
|
||||
from /usr/include/linux/btrfs.h:29,
|
||||
from statmount02.c:23:
|
||||
/usr/include/linux/mount.h:155:8: error: redefinition of 'struct statmount'
|
||||
155 | struct statmount {
|
||||
| ^~~~~~~~~
|
||||
In file included from statmount.h:12,
|
||||
from statmount02.c:20:
|
||||
../../../../include/lapi/mount.h:58:8: note: originally defined here
|
||||
58 | struct statmount {
|
||||
| ^~~~~~~~~
|
||||
/usr/include/linux/mount.h:193:8: error: redefinition of 'struct mnt_id_req'
|
||||
193 | struct mnt_id_req {
|
||||
| ^~~~~~~~~~
|
||||
../../../../include/lapi/mount.h:49:8: note: originally defined here
|
||||
49 | struct mnt_id_req {
|
||||
| ^~~~~~~~~~
|
||||
|
||||
Fixes: 5f9942dffe ("Add statmount02 test")
|
||||
Suggested-by: Jan Stancek <jstancek@redhat.com>
|
||||
Signed-off-by: Petr Vorel <pvorel@suse.cz>
|
||||
Upstream: https://github.com/linux-test-project/ltp/commit/fe8c0dac5ab4aa49c4f977d14f8a8d24cefa6435
|
||||
---
|
||||
testcases/kernel/syscalls/statmount/statmount02.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/testcases/kernel/syscalls/statmount/statmount02.c b/testcases/kernel/syscalls/statmount/statmount02.c
|
||||
index 504c558a11..07f877e040 100644
|
||||
--- a/testcases/kernel/syscalls/statmount/statmount02.c
|
||||
+++ b/testcases/kernel/syscalls/statmount/statmount02.c
|
||||
@@ -20,7 +20,6 @@
|
||||
#include "statmount.h"
|
||||
#include "lapi/stat.h"
|
||||
#include "lapi/sched.h"
|
||||
-#include <linux/btrfs.h>
|
||||
|
||||
#define MNTPOINT "mntpoint"
|
||||
|
||||
--
|
||||
2.50.0
|
||||
|
||||
@@ -11,6 +11,9 @@ LTP_TESTSUITE_SITE = https://github.com/linux-test-project/ltp/releases/download
|
||||
LTP_TESTSUITE_LICENSE = GPL-2.0, GPL-2.0+
|
||||
LTP_TESTSUITE_LICENSE_FILES = COPYING
|
||||
|
||||
# 0001-configure-Fix-build-on-kernel-6.14-headers.patch
|
||||
LTP_TESTSUITE_AUTORECONF = YES
|
||||
|
||||
LTP_TESTSUITE_CONF_OPTS += --disable-metadata
|
||||
|
||||
ifeq ($(BR2_PACKAGE_LTP_TESTSUITE_OPEN_POSIX),y)
|
||||
|
||||
Reference in New Issue
Block a user