From 85622fdd499e48deaab5a37484aa4f6f83520d94 Mon Sep 17 00:00:00 2001 From: Bryan Hundven Date: Sat, 26 Jul 2014 18:04:53 -0700 Subject: [PATCH] Add main EXPERIMENTAL_PATCHES setting This change adds support for experimental patches to be introduced to crosstool-ng. The patches enabled by this option are to be located here: patches/experimental///XXXX-NAME.patch Where, XXXX is the patch number to be applied in order, like: 0001-some_patch_one.patch 0002-some_patch_two.patch 9999-some_patch_to_be_applied_last.patch In the first patch series, all patches in the EXPERIMENTAL_PATCHES option will be applied all at once, or none at all. In a later [RFC] patch, I plan on adding finer tuned patch enable/disable options based on the name of the patch and where it is located in the patches/experimental sub-tree. So the name of the patch should use underscores between words in the patch name. Signed-off-by: Bryan Hundven [yann.morin.1998@free.fr: slightly reword prompt] Signed-off-by: "Yann E. MORIN" --- config/global/ct-behave.in | 10 ++++++++++ scripts/functions | 16 ++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/config/global/ct-behave.in b/config/global/ct-behave.in index ba723cf6..685da6aa 100644 --- a/config/global/ct-behave.in +++ b/config/global/ct-behave.in @@ -29,6 +29,16 @@ config EXPERIMENTAL - non-existant, in which case you could also try hacking it in and send me the result +config EXPERIMENTAL_PATCHES + bool + depends on EXPERIMENTAL + prompt "Use patches marked as EXPERIMENTAL_PATCHES (READ HELP!)" + help + ***WARNING*** This is not supported by crosstool-ng! ***WARNING*** + + If you set this to Y, then you will be able to enable experimental + patches that are not supported by crosstool-ng. + config ALLOW_BUILD_AS_ROOT bool prompt "Allow building as root user (READ HELP!)" diff --git a/scripts/functions b/scripts/functions index b15601af..2e4d4fa6 100644 --- a/scripts/functions +++ b/scripts/functions @@ -1034,6 +1034,8 @@ CT_Patch() { local -a patch_dirs local bundled_patch_dir local local_patch_dir + local bundled_exp_patch_dir + local local_exp_patch_dir if [ "${nochdir}" = "nochdir" ]; then shift @@ -1072,11 +1074,17 @@ CT_Patch() { bundled_patch_dir="${CT_LIB_DIR}/patches/${pkgname}/${version}" local_patch_dir="${CT_LOCAL_PATCH_DIR}/${pkgname}/${version}" + # Check for experimental patches, if enabled. + if [ "${CT_EXPERIMENTAL_PATCHES}" = "y" ]; then + bundled_exp_patch_dir="${CT_LIB_DIR}/patches/experimental/${pkgname}/${version}" + local_exp_patch_dir="${CT_LOCAL_PATCH_DIR}/experimental/${pkgname}/${version}" + fi + case "${CT_PATCH_ORDER}" in - bundled) patch_dirs=("${bundled_patch_dir}");; - local) patch_dirs=("${local_patch_dir}");; - bundled,local) patch_dirs=("${bundled_patch_dir}" "${local_patch_dir}");; - local,bundled) patch_dirs=("${local_patch_dir}" "${bundled_patch_dir}");; + bundled) patch_dirs=("${bundled_patch_dir}" "${bundled_exp_patch_dir}");; + local) patch_dirs=("${local_patch_dir}" "${local_exp_patch_dir}");; + bundled,local) patch_dirs=("${bundled_patch_dir}" "${bundled_exp_patch_dir}" "${local_patch_dir}" "${local_exp_patch_dir}");; + local,bundled) patch_dirs=("${local_patch_dir}" "${local_exp_patch_dir}" "${bundled_patch_dir}" "${bundled_exp_patch_dir}");; none) patch_dirs=;; esac