Build reduced size libicudata shared library in Linux?

Viewed 12

I need to build a reduced size libicu* shared library based on 67.1. I tried to follow their guides here and here. I ran ICU_DATA_FILTER_FILE=filters.hjson ./runConfigureICU Linux on Devuan Chimaera (Debian Bullseye) but got this error:

Note: Applying filters from filters.hjson.
/usr/src/icu4c-67_1/icu/source/python/icutools/databuilder/__main__.py:179: DeprecationWarning: Passing a schema to Validator.iter_errors is deprecated and will be removed in a future release. Call validator.evolve(schema=new_schema).iter_errors(...) instead.
  for error in validator.iter_errors(self.filters_json_data, schema):
WARNING: ICU data filter JSON file: OrderedDict([('filterType', 'locale'), ('includeChildren', False), ('includelist', ['en_US', 'de_DE', 'es_ES', 'fr_FR', 'ja_JP', 'ko_KR', 'nl_NL', 'pl_PL', 'pt_PT', 'zh_CN'])]) is not valid under any of the given schemas at .localeFilter
Traceback (most recent call last):
  File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/src/icu4c-67_1/icu/source/python/icutools/databuilder/__main__.py", line 360, in <module>
    exit(main(sys.argv[1:]))
  File "/usr/src/icu4c-67_1/icu/source/python/icutools/databuilder/__main__.py", line 314, in main
    requests = filtration.apply_filters(requests, config, io)
  File "/usr/src/icu4c-67_1/icu/source/python/icutools/databuilder/filtration.py", line 234, in apply_filters
    requests = _apply_file_filters(requests, config, io)
  File "/usr/src/icu4c-67_1/icu/source/python/icutools/databuilder/filtration.py", line 241, in _apply_file_filters
    filters = _preprocess_file_filters(old_requests, config, io)
  File "/usr/src/icu4c-67_1/icu/source/python/icutools/databuilder/filtration.py", line 275, in _preprocess_file_filters
    filters[category] = Filter.create_from_json(filter_json, io)
  File "/usr/src/icu4c-67_1/icu/source/python/icutools/databuilder/filtration.py", line 41, in create_from_json
    return LocaleFilter(json_data, io)
  File "/usr/src/icu4c-67_1/icu/source/python/icutools/databuilder/filtration.py", line 162, in __init__
    self.locales_requested = list(json_data["whitelist"])
KeyError: 'whitelist'
configure: error: Python failed to run; see above error.
./runConfigureICU: ./configure failed

The filter.hjson file contains:

localeFilter: {
  filterType: locale
  includeChildren: false
  includelist: [
    en_US
    de_DE
    es_ES
    fr_FR
    ja_JP
    ko_KR
    nl_NL
    pl_PL
    pt_PT
    zh_CN
  ]
}

This library is only used by the samba package binaries nmblookup, smbclient, smbtree so I doubt it needs much more than basic UTF16LSBF support in general. Not sure if I really need the alternate languages but would include them just in case.

What am I doing wrong? Is there a way to reduce the size of the library to only what Samba would need? As it is now, all the various libicu* files take up about 33MB of space and the Linux environment is basically a special tiny / embedded type to work in low memory machines.

0 Answers
Related