From 4442dc87dd5a7c237e465fd873dc40928749610a Mon Sep 17 00:00:00 2001 From: Chris Packham Date: Sun, 10 Dec 2023 11:55:22 +1300 Subject: [PATCH] config: Detect rsync presence at config time Linux kernel versions newer than 5.3 require rsync in order to export the UAPI headers. Commit f441a6bf ("linux: Add dependency on rsync for Linux >= 5.3") attempted to address this with a check that runs when crosstool-ng is built. That had the downside that if crosstool-ng was built and packaged on a machine that had rsync then run on a machine that didn't then the build would fail due to the missing rsync. Conversely if the first machine didn't have rsync installed when crosstool-ng was built then we would not offer newer kernel versions. We can address this by checking for rsync when the toolchain configuration is updated using some functionality in the newer Kconfig that we've updated to previously. Fixes #1940 Signed-off-by: Chris Packham --- config/config.in | 1 + config/config_utils.in | 7 +++++++ config/kernel/linux.in | 7 +++++-- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 config/config_utils.in diff --git a/config/config.in b/config/config.in index cc349aa0..bbde6a66 100644 --- a/config/config.in +++ b/config/config.in @@ -1,4 +1,5 @@ mainmenu "crosstool-NG $(CT_VERSION) Configuration" +source "config/config_utils.in" source "config/configure.in" source "config/global.in" source "config/target.in" diff --git a/config/config_utils.in b/config/config_utils.in new file mode 100644 index 00000000..cc52ca1d --- /dev/null +++ b/config/config_utils.in @@ -0,0 +1,7 @@ +# $(if-success,,,) +# Return if exits with 0, otherwise. +if-success = $(shell,{ $(1); } >/dev/null 2>&1 && echo "$(2)" || echo "$(3)") + +# $(success,) +# Return y if exits with 0, n otherwise +success = $(if-success,$(1),y,n) diff --git a/config/kernel/linux.in b/config/kernel/linux.in index 6d872c42..0f85ff89 100644 --- a/config/kernel/linux.in +++ b/config/kernel/linux.in @@ -12,12 +12,15 @@ # (including versions in between) until the EOL dates indicated below. # Such pinned versions are indicated in version.desc files with a comment. +config KERNEL_has_rsync + def_bool $(success,which rsync) + config KERNEL_DEP_RSYNC def_bool y - select LINUX_REQUIRE_older_than_5_3 if !CONFIGURE_has_rsync + select LINUX_REQUIRE_older_than_5_3 if !KERNEL_has_rsync comment "Linux >=5.3 requires rsync" - depends on !CONFIGURE_has_rsync + depends on !KERNEL_has_rsync choice bool