Data build fails on Windows after RBBI rules change, no error info.


Something is failing in the Windows data build of RBBI rules, but no error messages are making into the output.

Here is a snippet from the Visual Studio build log:

8>Done building project "i18n_uwp.vcxproj".
20>Done building project "intltest.vcxproj".
31>------ Build started: Project: makedata, Configuration: Debug x64 ------
31>Microsoft (R) Program Maintenance Utility Version 14.13.26129.0
31>Copyright (C) Microsoft Corporation. All rights reserved.
31>ICU data make path is C:\icu\icu4c\source\data\
31>ICU root path is C:\icu\icu4c
31>ICU tools path is C:\icu\icu4c\source\tools
31>ICU tools CFG subpath is x64\Debug
31>Creating data DLL version information from C:\icu\icu4c\source\data\misc\icudata.rc
31>Microsoft (R) Windows (R) Resource Compiler Version 6.3.9600.17336
31>Copyright (C) Microsoft Corporation. All rights reserved.
31> set PYTHONPATH=C:\icu\icu4c\source\python;%PYTHONPATH
31> py -3 -B -m icutools.databuilder --mode windows-exec --src_dir "C:\icu\icu4c\source\data" --tool_dir "C:\icu\icu4c\source\tools" --tool_cfg "x64\Debug" --out_dir "C:\icu\icu4c\source\data\out\build\icudt64l" --tmp_dir "C:\icu\icu4c\source\data\out\tmp" --filter_file ""
31>!!! ERROR executing above command line: exit code 4
31>NMAKE : fatal error U1077: 'C:\WINDOWS\py.EXE' : return code '0x1'

Deliberately introducing RBBI rule syntax errors has an identical effect.

The RBBI rule changes that introduced this problem are these two definitions:

Replacing the complicated definitions with simple literals allows the build to proceed.
Putting the original definitions back in place does not trigger a new build, so dependencies aren't being correctly tracked.

After cleaning the data build with 'rm -rf source/data/out', rebuilding the data works correctly.

Is there a dependency / build ordering problem that is causing the RBBI rule builder to try to use property data that isn't built yet?

The same build failure has shown up in the build bot testing for PR #679, on all of the Windows Visual Studio builds.


Shane Carr
June 17, 2019, 11:39 PM

We figured out that the problem was that the new rules depend on the ulayout data that was put into a new data file in ICU-20111, so changing brkitr_brk to depend on ulayout fixed the issue.

Shane Carr
June 16, 2019, 8:16 AM

If the break rules require new data that they didn't require before, you need to re-order execution in which you can do by cut and paste in the run function. Once you figure out the right dependency, you should also add it as an explicit dependency in that file via dep_targets. Search for other uses of dep_targets for examples.

Shane Carr
June 16, 2019, 8:07 AM

Looks like Python exits with code 4, which probably corresponds to error code 4 in utypes.h.

Fixed by Other Ticket
Your pinned fields
Click on the next to a field label to start pinning.


Andy Heninger


Andy Heninger




Fix versions