From db113a24e004f59c3343478ebdfc6d19e585811e Mon Sep 17 00:00:00 2001 From: "Steven R. Loomis" Date: Fri, 8 Jun 2018 13:57:32 -0700 Subject: [PATCH] doc: document and warn if the ICU version is too old Fixes: https://github.com/nodejs/node/issues/19657 PR-URL: https://github.com/nodejs/node/pull/23766 Reviewed-By: Richard Lau Reviewed-By: James M Snell Reviewed-By: Anna Henningsen Reviewed-By: Refael Ackermann Reviewed-By: Ujjwal Sharma --- BUILDING.md | 4 ++++ configure.py | 9 ++++++++- tools/icu/icu_versions.json | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 tools/icu/icu_versions.json diff --git a/BUILDING.md b/BUILDING.md index 382355d25f5d01..81157a91a615fd 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -470,6 +470,10 @@ You can find other ICU releases at Download the file named something like `icu4c-**##.#**-src.tgz` (or `.zip`). +To check the minimum recommended ICU, run `./configure --help` and see +the help for the `--with-icu-source` option. A warning will be printed +during configuration if the ICU version is too old. + ##### Unix/macOS From an already-unpacked ICU: diff --git a/configure.py b/configure.py index 538ae0445a5b47..37f6058c6e92ae 100755 --- a/configure.py +++ b/configure.py @@ -51,6 +51,8 @@ valid_mips_fpu = ('fp32', 'fp64', 'fpxx') valid_mips_float_abi = ('soft', 'hard') valid_intl_modes = ('none', 'small-icu', 'full-icu', 'system-icu') +with open ('tools/icu/icu_versions.json') as f: + icu_versions = json.load(f) # create option groups shared_optgroup = optparse.OptionGroup(parser, "Shared libraries", @@ -425,7 +427,9 @@ intl_optgroup.add_option('--with-icu-source', action='store', dest='with_icu_source', - help='Intl mode: optional local path to icu/ dir, or path/URL of icu source archive.') + help='Intl mode: optional local path to icu/ dir, or path/URL of ' + 'the icu4c source archive. ' + 'v%d.x or later recommended.' % icu_versions["minimum_icu"]) parser.add_option('--with-ltcg', action='store_true', @@ -1452,6 +1456,9 @@ def write_config(data, name): icu_ver_major = m.group(1) if not icu_ver_major: error('Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h) + elif int(icu_ver_major) < icu_versions["minimum_icu"]: + error('icu4c v%d.x is too old, v%d.x or later is required.' % (int(icu_ver_major), + icu_versions["minimum_icu"])) icu_endianness = sys.byteorder[0]; o['variables']['icu_ver_major'] = icu_ver_major o['variables']['icu_endianness'] = icu_endianness diff --git a/tools/icu/icu_versions.json b/tools/icu/icu_versions.json new file mode 100644 index 00000000000000..e17ee8beee6a5c --- /dev/null +++ b/tools/icu/icu_versions.json @@ -0,0 +1,3 @@ +{ + "minimum_icu": 57 +} \ No newline at end of file