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.