pavelliavonau/cmakeconverter

Variable isn't applied properly.

jptrzy opened this issue · 3 comments

I haven't used python for a wail so I couldn't successfully debug this error, but for me, it looks like SolutionDir variable isn't applied.

/***/src/xrGame/xrGame.vcxproj file:

...
  <ItemGroup>
    <ProjectReference Include="$(SolutionDir)3rd party\crypto\crypto.vcxproj">
      <Project>{fa169092-ea3e-40c1-8e5a-a2b575700fe8}</Project>
      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
    </ProjectReference>
...

Logs:

...
5.787851 7> ERR  : /***/src/xrGame/xrGame.vcxproj(4196): /***/src/xrGame/$(SolutionDir)3rd party/crypto/crypto.vcxproj file not exists.
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 48, in mapstar
    return list(map(*args))
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/data_converter.py", line 285, in run_conversion
    converted = self.convert_project(
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/data_converter.py", line 252, in convert_project
    self.collect_data(context)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/data_converter.py", line 53, in collect_data
    context.parser.parse(context)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/visual_studio/vcxproj/parser.py", line 145, in parse
    self._parse_nodes(context, root)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/parser.py", line 101, in _parse_nodes
    node_handlers[child_node_tag](context, child_node)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/visual_studio/vcxproj/parser.py", line 154, in __parse_item_group
    self._parse_nodes(context, node)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/parser.py", line 92, in _parse_nodes
    self._parse_attributes(context, child_node)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/parser.py", line 117, in _parse_attributes
    attributes_handlers[node_key](context, node_key, node.get(attr), node)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/visual_studio/vcxproj/dependencies.py", line 59, in add_target_reference
    ref = self.get_dependency_target_name(
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/dependencies.py", line 110, in get_dependency_target_name
    project_name = get_global_project_name_from_vcxproj_file(vcxproj)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/utils.py", line 174, in get_global_project_name_from_vcxproj_file
    project_name_node = vcxproj['tree'].xpath('//ns:ProjectName', namespaces=vcxproj['ns'])
TypeError: 'NoneType' object is not subscriptable
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/jp3/Src/cmakeconverter/cmake_converter/main.py", line 148, in <module>
    main()
  File "/home/jp3/Src/cmakeconverter/cmake_converter/main.py", line 144, in main
    converter.convert_solution(project_context, os.path.abspath(args.solution))
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/visual_studio/solution.py", line 330, in convert_solution
    results = self.do_conversion(project_context, input_data_for_converter)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/data_converter.py", line 317, in do_conversion
    results = pool.map(self.run_conversion, input_converter_data_list)
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 367, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 774, in get
    raise self._value
TypeError: 'NoneType' object is not subscriptable

I walk around this file not exists error by replacing $(SolutionDir) with "specific" (working) path.

Unfortunately, still I got this error:

multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 48, in mapstar
    return list(map(*args))
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/data_converter.py", line 285, in run_conversion
    converted = self.convert_project(
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/data_converter.py", line 252, in convert_project
    self.collect_data(context)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/data_converter.py", line 53, in collect_data
    context.parser.parse(context)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/visual_studio/vcxproj/parser.py", line 145, in parse
    self._parse_nodes(context, root)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/parser.py", line 101, in _parse_nodes
    node_handlers[child_node_tag](context, child_node)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/visual_studio/vcxproj/parser.py", line 154, in __parse_item_group
    self._parse_nodes(context, node)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/parser.py", line 92, in _parse_nodes
    self._parse_attributes(context, child_node)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/parser.py", line 117, in _parse_attributes
    attributes_handlers[node_key](context, node_key, node.get(attr), node)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/visual_studio/vcxproj/dependencies.py", line 59, in add_target_reference
    ref = self.get_dependency_target_name(
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/dependencies.py", line 110, in get_dependency_target_name
    project_name = get_global_project_name_from_vcxproj_file(vcxproj)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/utils.py", line 174, in get_global_project_name_from_vcxproj_file
    project_name_node = vcxproj['tree'].xpath('//ns:ProjectName', namespaces=vcxproj['ns'])
TypeError: 'NoneType' object is not subscriptable
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/jp3/Src/cmakeconverter/cmake_converter/main.py", line 148, in <module>
    main()
  File "/home/jp3/Src/cmakeconverter/cmake_converter/main.py", line 144, in main
    converter.convert_solution(project_context, os.path.abspath(args.solution))
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/visual_studio/solution.py", line 330, in convert_solution
    results = self.do_conversion(project_context, input_data_for_converter)
  File "/home/jp3/.local/lib/python3.10/site-packages/cmake_converter/data_converter.py", line 317, in do_conversion
    results = pool.map(self.run_conversion, input_converter_data_list)
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 367, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 774, in get
    raise self._value
TypeError: 'NoneType' object is not subscriptable

@jptrzy,
project_name_node = vcxproj['tree'].xpath('//ns:ProjectName', namespaces=vcxproj['ns'])
TypeError: 'NoneType' object is not subscriptable

same error, did you solve it issue?

@jptrzy Have you tried this solution? #140