Building release fails with Visual Studio - makedata - file not found

Description

Using icu4c-67_1-src.zip (but I think this problem is present in versions before this)
Using Visual Studio 2019 (UWP support not installed)
Minimal changes for building with 2019:

  • Building with toolset v142

  • WindowsTargetPlatformVersion set to 10.0 (VS/MSBuild is automatically picking the latest 10.0 when full version is not specified. In my case this is 10.0.18362.0)

Build output from failing makedata:
31>------ Build started: Project: makedata, Configuration: Release x64 ------
31>
31>Microsoft (R) Program Maintenance Utility Version 14.25.28614.0
31>Copyright (C) Microsoft Corporation. All rights reserved.
31>
31>ICU data make path is K:\icu\67.1\source\data\
31>ICU root path is K:\icu\67.1
31>ICU data DLL_OUTPUT path is K:\icu\67.1\bin64
31>ICU tools path is K:\icu\67.1\source\tools
31>ICU tools CFG subpath is x64\Release
31>ICU data source archive is K:\icu\67.1\source\data\in\icudt67l.dat
31>Creating data DLL version information from "K:\icu\67.1\source\data\misc\icudata.rc"
31>Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
31>
31>Copyright (C) Microsoft Corporation. All rights reserved.
31>
31>
31>Building icu data from K:\icu\67.1\source\data\in\icudt67l.dat
31> cd "K:\icu\67.1\source\data\out\build\icudt67l"
31> "K:\icu\67.1\bin64\icupkg" -x * --list "K:\icu\67.1\source\data\in\icudt67l.dat" > "K:\icu\67.1\source\data\out\tmp\icudata.lst"
31> "K:\icu\67.1\bin64\pkgdata" -f -e icudt67 -v -m dll -c -p icudt67l -T "K:\icu\67.1\source\data\out\tmp" -L icudt67 -d "K:\icu\67.1\source\data\out\build\icudt67l" -s . -a X64 "K:\icu\67.1\source\data\out\tmp\icudata.lst"
31> Creating library .\icudt.lib and object .\icudt.exp
31># pkgdata: Reading K:\icu\67.1\source\data\out\tmp\icudata.lst..
31># Writing package file K:\icu\67.1\source\data\out\tmp\icudt67l.dat ..
31># Writing object code to ..
31>genccode: using architecture cpu=0 bits=64 big-endian=0
31>pkgdata: link.exe /nologo /release /out:".\icudt67.dll" /MACHINE:X64 /NXCOMPAT /DYNAMICBASE /DLL /NOENTRY /MANIFEST:NO /implib:".\icudt.lib" "K:\icu\67.1\source\data\out\tmp\icudt67l_dat.obj" "K:\icu\67.1\source\data\out\tmp\icudata.res"
31> copy "icudt67.dll" "K:\icu\67.1\bin64"
31> 1 file(s) copied.
31> copy "K:\icu\67.1\source\data\out\tmp\icudt67l.dat" "K:\icu\67.1\source\data\out\icudt67l.dat"
31> 1 file(s) copied.
31> set PYTHONPATH=K:\icu\67.1\source\python;%PYTHONPATH
31> py -3 -B -m icutools.databuilder --mode windows-exec --src_dir "K:\icu\67.1\source\data" --tool_dir "K:\icu\67.1\source\tools" --tool_cfg "x64\Release" --out_dir "K:\icu\67.1\source\data\out\build\icudt67l" --tmp_dir "K:\icu\67.1\source\data\out\tmp" --filter_file ""
31>Traceback (most recent call last):
31> File "C:\Program Files\Python38\lib\runpy.py", line 193, in _run_module_as_main
31> return _run_code(code, main_globals, None,
31> File "C:\Program Files\Python38\lib\runpy.py", line 86, in _run_code
31> exec(code, run_globals)
31> File "K:\icu\67.1\source\python\icutools\databuilder_main_.py", line 360, in <module>
31> exit(main(sys.argv[1:]))
31> File "K:\icu\67.1\source\python\icutools\databuilder_main_.py", line 304, in main
31> requests = BUILDRULES.generate(config, io, common)
31> File "K:\icu\67.1\source\data\BUILDRULES.py", line 41, in generate
31> requests += generate_tree(config, io, common_vars,
31> File "K:\icu\67.1\source\data\BUILDRULES.py", line 549, in generate_tree
31> dependency_data = io.read_locale_deps(sub_dir)
31> File "K:\icu\67.1\source\python\icutools\databuilder_main_.py", line 257, in read_locale_deps
31> return self._read_json("%s/LOCALE_DEPS.json" % tree)
31> File "K:\icu\67.1\source\python\icutools\databuilder_main_.py", line 260, in _read_json
31> with pyio.open(os.path.join(self.src_dir, filename), "r", encoding="utf-8-sig") as f:
31>FileNotFoundError: [Errno 2] No such file or directory: 'K:\\icu\\67.1\\source\\data
locales/LOCALE_DEPS.json'
31>NMAKE : fatal error U1077: 'C:\WINDOWS\py.EXE' : return code '0x1'
31>Stop.
31>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(44,5): error MSB3073: The command "NMAKE /f makedata.mak ICUMAKE="K:\icu\67.1\source\data
" CFG=x64\Release" exited with code 2.
31>Done building project "makedata.vcxproj" – FAILED.

Is building data necessary when building from the release zip?
It builds without error if I add the content of icu4c-67_1-data.zip to the data directory

Activity

Show:
Jeff Genovy
May 7, 2020, 10:59 PM
Jeff Genovy
May 7, 2020, 9:12 PM

Thank you very kindly for testing it out and confirming that it worked!

Vemund Handeland
May 7, 2020, 3:18 PM

Applied the change in the PR to my copy of the release. Can confirm it now builds without errors.

Jeff Genovy
April 29, 2020, 2:41 AM

Jeff Genovy
April 29, 2020, 2:38 AM

It looks like the python data build script is getting invoked due to the dependency on $(COREDATA_TS) here:

However, I don’t think the testdata needs to be conditional on the building of the core data though.

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

Assignee

Jeff Genovy

Reporter

Vemund Handeland

Components

Priority

major

Fix versions