From 661d6963dfed41b291be3bcb98523d44ce7a872c Mon Sep 17 00:00:00 2001 From: John Crispin Date: Mon, 21 Sep 2026 21:18:36 +0200 Subject: [PATCH] lantiq: keep build paths out of the TAPI and VMMC modules configure.in of drv_tapi and drv_vmmc compiles the whole configure command line into the module. drv_tapi_linux.c prints it through a proc file. The command line holds the absolute paths of the build machine, among them --enable-kernelbuild, --with-ifxos-incl, --enable-tapiincl, CPPFLAGS and LDFLAGS, so the module depends on the directory it was built in. Measured in the published snapshot modules of lantiq/xway: drv_tapi.ko and drv_vmmc.ko both hold --enable-kernelbuild=/builder/shared-workdir/build/build_dir/... The existing 020-not-leak-cflags.patch covers the Kbuild CFLAGS, not this string. Drop every argument that holds a path and keep the feature flags. The loop repeats the idiom the file already uses for CONFIGURE_OPTIONS. Signed-off-by: John Crispin --- package/kernel/lantiq/ltq-tapi/Makefile | 2 +- ...ld-paths-out-of-the-configure-string.patch | 46 +++++++++++++++++++ package/kernel/lantiq/ltq-vmmc/Makefile | 2 +- ...ld-paths-out-of-the-configure-string.patch | 46 +++++++++++++++++++ 4 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 package/kernel/lantiq/ltq-tapi/patches/021-keep-build-paths-out-of-the-configure-string.patch create mode 100644 package/kernel/lantiq/ltq-vmmc/patches/022-keep-build-paths-out-of-the-configure-string.patch diff --git a/package/kernel/lantiq/ltq-tapi/Makefile b/package/kernel/lantiq/ltq-tapi/Makefile index 36fd067b105..3c47775ca29 100644 --- a/package/kernel/lantiq/ltq-tapi/Makefile +++ b/package/kernel/lantiq/ltq-tapi/Makefile @@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=drv_tapi PKG_VERSION:=3.13.0 -PKG_RELEASE:=6 +PKG_RELEASE:=7 PKG_SOURCE:=drv_tapi-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=@OPENWRT diff --git a/package/kernel/lantiq/ltq-tapi/patches/021-keep-build-paths-out-of-the-configure-string.patch b/package/kernel/lantiq/ltq-tapi/patches/021-keep-build-paths-out-of-the-configure-string.patch new file mode 100644 index 00000000000..70b119c77c0 --- /dev/null +++ b/package/kernel/lantiq/ltq-tapi/patches/021-keep-build-paths-out-of-the-configure-string.patch @@ -0,0 +1,46 @@ +From: John Crispin +Subject: [PATCH] keep build paths out of the configure string + +configure.in compiles the whole configure command line into the module as +DRV_TAPI_CONFIGURE_STR, and drv_tapi_linux.c prints it through a proc +file. The command line holds the absolute paths of the build machine, +among them --enable-kernelbuild, --with-ifxos-incl, CPPFLAGS and LDFLAGS. +The module therefore depends on the directory it was built in, and two +builds in different directories produce different modules. + +The published snapshot module of lantiq/xway holds, for example, +--enable-kernelbuild=/builder/shared-workdir/build/build_dir/... + +Drop every argument that holds a path. The feature flags, which are the +part a reader of the proc file wants, stay. The loop repeats the idiom +that the file already uses for CONFIGURE_OPTIONS. + +Signed-off-by: John Crispin +--- + configure.in | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +--- a/configure.in ++++ b/configure.in +@@ -86,7 +86,20 @@ AH_BOTTOM([ + #endif /* _DRV_CONFIG_H_ */ + ]) + +-AC_DEFINE_UNQUOTED([DRV_TAPI_CONFIGURE_STR], ["$ac_configure_args"], [configure options string]) ++# The string below is printed through a proc file. An absolute path of the ++# build machine has no meaning on the target, and it makes the module depend ++# on the directory it was built in. Keep the arguments that hold no path. ++CONFIGURE_STR='' ++for c_arg in $ac_configure_args; do ++ case $c_arg in ++ *"/"*) ++ ;; ++ *) ++ CONFIGURE_STR="$CONFIGURE_STR $c_arg" ++ ;; ++ esac ++done ++AC_DEFINE_UNQUOTED([DRV_TAPI_CONFIGURE_STR], ["$CONFIGURE_STR"], [configure options string]) + + dnl enable linux kernel 2.6.x support (Make sure AC_PROG_CC is defined before to set $CC!) + AM_CONDITIONAL(KERNEL_2_6, false) diff --git a/package/kernel/lantiq/ltq-vmmc/Makefile b/package/kernel/lantiq/ltq-vmmc/Makefile index d2204c2a96e..22e7a5a0a17 100644 --- a/package/kernel/lantiq/ltq-vmmc/Makefile +++ b/package/kernel/lantiq/ltq-vmmc/Makefile @@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=drv_vmmc PKG_VERSION:=1.9.0 -PKG_RELEASE:=5 +PKG_RELEASE:=6 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_HASH:=707f515eb727c032418c4da67d7e86884bb56cdc2a606e8f6ded6057d8767e57 diff --git a/package/kernel/lantiq/ltq-vmmc/patches/022-keep-build-paths-out-of-the-configure-string.patch b/package/kernel/lantiq/ltq-vmmc/patches/022-keep-build-paths-out-of-the-configure-string.patch new file mode 100644 index 00000000000..db53d02fc36 --- /dev/null +++ b/package/kernel/lantiq/ltq-vmmc/patches/022-keep-build-paths-out-of-the-configure-string.patch @@ -0,0 +1,46 @@ +From: John Crispin +Subject: [PATCH] keep build paths out of the configure string + +configure.in compiles the whole configure command line into the module as +VMMC_CONFIGURE_STR, and drv_vmmc_init.c keeps it in DRV_VMMC_WHICHCONFIG. +The command line holds the absolute paths of the build machine, among them +--enable-kernelbuild, --enable-tapiincl, CPPFLAGS and LDFLAGS. The module +therefore depends on the directory it was built in, and two builds in +different directories produce different modules. + +The published snapshot module of lantiq/xway holds, for example, +--enable-kernelbuild=/builder/shared-workdir/build/build_dir/... + +Drop every argument that holds a path. The feature flags, which are the +part a reader wants, stay. The loop repeats the idiom that the file +already uses for CONFIGURE_OPTIONS. + +Signed-off-by: John Crispin +--- + configure.in | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +--- a/configure.in ++++ b/configure.in +@@ -66,7 +66,20 @@ AH_BOTTOM([ + #endif /* _DRV_CONFIG_H_ */ + ]) + +-AC_DEFINE_UNQUOTED([VMMC_CONFIGURE_STR], ["$ac_configure_args"], [configure options string]) ++# The string below ends up in the module. An absolute path of the build ++# machine has no meaning on the target, and it makes the module depend on ++# the directory it was built in. Keep the arguments that hold no path. ++CONFIGURE_STR='' ++for c_arg in $ac_configure_args; do ++ case $c_arg in ++ *"/"*) ++ ;; ++ *) ++ CONFIGURE_STR="$CONFIGURE_STR $c_arg" ++ ;; ++ esac ++done ++AC_DEFINE_UNQUOTED([VMMC_CONFIGURE_STR], ["$CONFIGURE_STR"], [configure options string]) + + dnl enable linux kernel 2.6.x support (Make sure AC_PROG_CC is defined before to set $CC!) + AM_CONDITIONAL(KERNEL_2_6, false)