Use posix paths in pro2cmake and configurejson2cmake even on Windows

Makes the conversions script usable on Windows.

Change-Id: Icb37f3ee8ae1c942556f524984ce3aed0d21cee0
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Alexandru Croitor 2019-09-11 10:13:06 +02:00
parent 9d893641b9
commit 8489fe4ba4
2 changed files with 13 additions and 12 deletions

View File

@ -28,7 +28,7 @@
#############################################################################
import json_parser
import os.path
import posixpath
import re
import sys
from typing import Set, Union, List, Dict
@ -151,10 +151,10 @@ def cm(ctx, *output):
def readJsonFromDir(dir):
path = os.path.join(dir, 'configure.json')
path = posixpath.join(dir, 'configure.json')
print('Reading {}...'.format(path))
assert os.path.exists(path)
assert posixpath.exists(path)
parser = json_parser.QMakeSpecificJSONParser()
return parser.parse(path)
@ -943,7 +943,7 @@ def processSubconfigs(dir, ctx, data):
assert ctx is not None
if 'subconfigs' in data:
for subconf in data['subconfigs']:
subconfDir = os.path.join(dir, subconf)
subconfDir = posixpath.join(dir, subconf)
subconfData = readJsonFromDir(subconfDir)
subconfCtx = ctx
processJson(subconfDir, subconfCtx, subconfData)
@ -954,7 +954,7 @@ def processJson(dir, ctx, data):
ctx = processFiles(ctx, data)
with open(os.path.join(dir, "configure.cmake"), 'w') as cm_fh:
with open(posixpath.join(dir, "configure.cmake"), 'w') as cm_fh:
cm_fh.write("\n\n#### Inputs\n\n")
processInputs(ctx, data, cm_fh)

View File

@ -36,6 +36,7 @@ import copy
import xml.etree.ElementTree as ET
from itertools import chain
import os.path
import posixpath
import re
import io
import typing
@ -155,7 +156,7 @@ def find_qmake_conf(project_file_path: str = '') -> typing.Optional[str]:
file_name = '.qmake.conf'
while os.path.isdir(cwd):
maybe_file = os.path.join(cwd, file_name)
maybe_file = posixpath.join(cwd, file_name)
if os.path.isfile(maybe_file):
return maybe_file
else:
@ -184,7 +185,7 @@ def process_qrc_file(target: str, filepath: str, base_dir: str = '', project_fil
resource_name = os.path.splitext(os.path.basename(filepath))[0]
dir_name = os.path.dirname(filepath)
base_dir = os.path.join('' if base_dir == '.' else base_dir, dir_name)
base_dir = posixpath.join('' if base_dir == '.' else base_dir, dir_name)
# Small not very thorough check to see if this a shared qrc resource
# pattern is mostly used by the tests.
@ -239,7 +240,7 @@ def write_add_qt_resource_call(target: str, resource_name: str, prefix: typing.O
for source in sorted_files:
alias = files[source]
if alias:
full_source = os.path.join(base_dir, source)
full_source = posixpath.join(base_dir, source)
output += 'set_source_files_properties("{}"\n' \
' PROPERTIES QT_RESOURCE_ALIAS "{}"\n)\n'.format(full_source, alias)
@ -320,7 +321,7 @@ def map_to_file(f: str, scope: Scope, *, is_include: bool = False) -> str:
return f
base_dir = scope.currentdir if is_include else scope.basedir
f = os.path.join(base_dir, f)
f = posixpath.join(base_dir, f)
return trim_leading_dot(f)
@ -345,9 +346,9 @@ def handle_vpath(source: str, base_dir: str, vpath: typing.List[str]) -> str:
return source
for v in vpath:
fullpath = os.path.join(v, source)
fullpath = posixpath.join(v, source)
if os.path.exists(fullpath):
return trim_leading_dot(os.path.relpath(fullpath, base_dir))
return trim_leading_dot(posixpath.relpath(fullpath, base_dir))
print(' XXXX: Source {}: Not found.'.format(source))
return '{}-NOTFOUND'.format(source)
@ -1319,7 +1320,7 @@ def sort_sources(sources: typing.List[str]) -> typing.List[str]:
base = os.path.splitext(os.path.basename(s))[0]
if base.endswith('_p'):
base = base[:-2]
sort_name = os.path.join(dir, base)
sort_name = posixpath.join(dir, base)
array = to_sort.get(sort_name, [])
array.append(s)