|
434 | 434 | dest='with_icu_source',
|
435 | 435 | help='Intl mode: optional local path to icu/ dir, or path/URL of '
|
436 | 436 | 'the icu4c source archive. '
|
437 |
| - 'v%d.x or later recommended.' % icu_versions["minimum_icu"]) |
| 437 | + 'v%d.x or later recommended.' % icu_versions['minimum_icu']) |
438 | 438 |
|
439 | 439 | parser.add_option('--with-ltcg',
|
440 | 440 | action='store_true',
|
@@ -622,17 +622,21 @@ def b(value):
|
622 | 622 |
|
623 | 623 |
|
624 | 624 | def pkg_config(pkg):
|
| 625 | + """Run pkg-config on the specified package |
| 626 | + Returns ("-l flags", "-I flags", "-L flags", "version") |
| 627 | + otherwise (None, None, None, None)""" |
625 | 628 | pkg_config = os.environ.get('PKG_CONFIG', 'pkg-config')
|
626 | 629 | retval = ()
|
627 |
| - for flag in ['--libs-only-l', '--cflags-only-I', '--libs-only-L']: |
| 630 | + for flag in ['--libs-only-l', '--cflags-only-I', |
| 631 | + '--libs-only-L', '--modversion']: |
628 | 632 | try:
|
629 | 633 | proc = subprocess.Popen(
|
630 | 634 | shlex.split(pkg_config) + ['--silence-errors', flag, pkg],
|
631 | 635 | stdout=subprocess.PIPE)
|
632 | 636 | val = proc.communicate()[0].strip()
|
633 | 637 | except OSError as e:
|
634 | 638 | if e.errno != errno.ENOENT: raise e # Unexpected error.
|
635 |
| - return (None, None, None) # No pkg-config/pkgconf installed. |
| 639 | + return (None, None, None, None) # No pkg-config/pkgconf installed. |
636 | 640 | retval += (val,)
|
637 | 641 | return retval
|
638 | 642 |
|
@@ -1119,7 +1123,7 @@ def configure_library(lib, output):
|
1119 | 1123 | output['variables']['node_' + shared_lib] = b(getattr(options, shared_lib))
|
1120 | 1124 |
|
1121 | 1125 | if getattr(options, shared_lib):
|
1122 |
| - (pkg_libs, pkg_cflags, pkg_libpath) = pkg_config(lib) |
| 1126 | + (pkg_libs, pkg_cflags, pkg_libpath, pkg_modversion) = pkg_config(lib) |
1123 | 1127 |
|
1124 | 1128 | if options.__dict__[shared_lib + '_includes']:
|
1125 | 1129 | output['include_dirs'] += [options.__dict__[shared_lib + '_includes']]
|
@@ -1354,7 +1358,12 @@ def write_config(data, name):
|
1354 | 1358 | if pkgicu[0] is None:
|
1355 | 1359 | error('''Could not load pkg-config data for "icu-i18n".
|
1356 | 1360 | See above errors or the README.md.''')
|
1357 |
| - (libs, cflags, libpath) = pkgicu |
| 1361 | + (libs, cflags, libpath, icuversion) = pkgicu |
| 1362 | + icu_ver_major = icuversion.split('.')[0] |
| 1363 | + o['variables']['icu_ver_major'] = icu_ver_major |
| 1364 | + if int(icu_ver_major) < icu_versions['minimum_icu']: |
| 1365 | + error('icu4c v%s is too old, v%d.x or later is required.' % |
| 1366 | + (icuversion, icu_versions['minimum_icu'])) |
1358 | 1367 | # libpath provides linker path which may contain spaces
|
1359 | 1368 | if libpath:
|
1360 | 1369 | o['libraries'] += [libpath]
|
@@ -1473,9 +1482,9 @@ def write_config(data, name):
|
1473 | 1482 | icu_ver_major = m.group(1)
|
1474 | 1483 | if not icu_ver_major:
|
1475 | 1484 | error('Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h)
|
1476 |
| - elif int(icu_ver_major) < icu_versions["minimum_icu"]: |
1477 |
| - error('icu4c v%d.x is too old, v%d.x or later is required.' % (int(icu_ver_major), |
1478 |
| - icu_versions["minimum_icu"])) |
| 1485 | + elif int(icu_ver_major) < icu_versions['minimum_icu']: |
| 1486 | + error('icu4c v%s.x is too old, v%d.x or later is required.' % |
| 1487 | + (icu_ver_major, icu_versions['minimum_icu'])) |
1479 | 1488 | icu_endianness = sys.byteorder[0];
|
1480 | 1489 | o['variables']['icu_ver_major'] = icu_ver_major
|
1481 | 1490 | o['variables']['icu_endianness'] = icu_endianness
|
|
0 commit comments