DescriptionHistorically someone (jshin) has generated all data that people could
possibly need and checked it into the repository. This has made it
easy to use the data as long as it contained what you needed but as
soon as you needed something different it was suddenly quite tricky.
By generating it during build time it can be better tuned for each
product and it will be possible to experiment and work on it without
being the icu specialist.
It will also be possible to merge different branches with different
changes to the data file composition, the git repositories will stop
growing so rapidly (only master in icu.git is 0.5 GB already and
that is steadily increasing).
Downside of this is that we will have to maintain more gyp/gn files
and it will cost some compilation time when building from scratch.
Added compilation time right now is about 15s for tools, 15s for data
in Linux. 40s for tools, 35s for data in Windows. Since this
is 10-20% of the total binary, it is still compiled much faster than
most of the project so I think it's a reasonable (but unwanted)
cost.
* filter_data_for_size.py conditionally removes parts of the icu data to
make the generated data smaller than the default 10 MB.
* icu_tools.gyp builds (via ninja) the various tools that build
the icu data files.
* icu_tools.gypi lists the files involved.
* icu_data.gyp builds (via ninja) the data files (about 500) and
packages them.
* icu_data.gypi lists most of the data files (some one-off files
are mentioned just in icu_data.gyp)
* build_icu_data.py was a proof of concept and reverse engineering
of the Makefile system (not to be included).
* write_icudata_lst.py creates the package instructions by being fed
file lists from gyp/ninja.
* write_res_index.py creates res_index.txt files that contain language
lists for each resource category.
* run_without_cygwin.py is a helper script to make icu tools work
in Windows v8 standalone which has a cygwin at the start of the path.
* gn_data_build_system/BUILD.gn is the gn script to build the icu data.
* gn_data_build_system/run.py is the necessary wrapper so that gn can
execute native tools.
* gn_tool_build_system/BUILD.gn is the gn script to build the icu tools.
BUG=424192
Patch Set 1 #Patch Set 2 : Working in gyp Windows too. #Patch Set 3 : Dependency problems fixed. #Patch Set 4 : Updated to icu 5.4 and got rid of branch changes. #Patch Set 5 : Now with gn #Patch Set 6 : Dumping gn WIP #Patch Set 7 : Now with working gn #Patch Set 8 : Hooked into the real build system. #Patch Set 9 : Filtering of data to make the Android icu data smaller. #Patch Set 10 : Stripping in python instead of sh+sed #Patch Set 11 : Filtering data #Patch Set 12 : Android Android Android #Patch Set 13 : Fixing pool.res dependencies and adding documentation. #Patch Set 14 : Making icu work in v8-standalone. Not all the way there. #Patch Set 15 : Including missing file #Patch Set 16 : Now working in v8 standalone for Windows. #Patch Set 17 : Removing and moving thinsg. #Patch Set 18 : And (skeleton) unittest. #Patch Set 19 : Making BUILD.gn simpler (smaller) #Patch Set 20 : Polishing and making BUILD.gn smaller #
Total comments: 1
Patch Set 21 : Fixed warnings in cross compiling #
Messages
Total messages: 6 (4 generated)
|