diff options
author | Chris Packham <judge.packham@gmail.com> | 2023-12-10 11:55:22 +1300 |
---|---|---|
committer | Chris Packham <judge.packham@gmail.com> | 2023-12-18 16:28:14 +1300 |
commit | 4442dc87dd5a7c237e465fd873dc40928749610a (patch) | |
tree | 2387066b230ab1f216b90ab4e883eecc09faac43 /config | |
parent | 6d1b6e41e900dfaf7f4fb5ecb3f8a86837acce08 (diff) | |
download | crosstool-ng-4442dc87dd5a7c237e465fd873dc40928749610a.tar.gz crosstool-ng-4442dc87dd5a7c237e465fd873dc40928749610a.tar.bz2 crosstool-ng-4442dc87dd5a7c237e465fd873dc40928749610a.zip |
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 <judge.packham@gmail.com>
Diffstat (limited to 'config')
-rw-r--r-- | config/config.in | 1 | ||||
-rw-r--r-- | config/config_utils.in | 7 | ||||
-rw-r--r-- | config/kernel/linux.in | 7 |
3 files changed, 13 insertions, 2 deletions
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,<command>,<then>,<else>) +# Return <then> if <command> exits with 0, <else> otherwise. +if-success = $(shell,{ $(1); } >/dev/null 2>&1 && echo "$(2)" || echo "$(3)") + +# $(success,<command>) +# Return y if <command> 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 |