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:
Petr Vorel
2025-07-20 16:30:47 +02:00
committed by Julien Olivain
parent c430f54f36
commit 0ccd9300cd
3 changed files with 106 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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)