diff --git a/utils/scripts/vcxproj_dependencies.py b/utils/scripts/vcxproj_dependencies.py index 6c0453f4a..fd018991b 100644 --- a/utils/scripts/vcxproj_dependencies.py +++ b/utils/scripts/vcxproj_dependencies.py @@ -340,18 +340,18 @@ def check_for_version_discrepancies(): 'include': [ '', # 'NOT FOUND' '', # 'install' - '/dependencies/zlib_x##/include', # 'dependencies' + '/server/dependencies/zlib_x##/include', # 'dependencies' # not sure if this should be '/libs/zlibng' or '/build/libs/zlibng' based on cmake behavior - '/build/libs/zlibng', # 'libs' - '/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' - '/build/libs/zlibng', # 'static' + '/server/libs/zlibng', # 'libs' + '/server/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' + '/server/build/libs/zlibng', # 'static' '' # 'submodule' ], 'source': [ '', # 'NOT FOUND' '', # 'install' '', # 'dependencies' - '/libs/zlibng', # 'libs' + '/server/libs/zlibng', # 'libs' '', # 'vcpkg' '', # 'static' '' # 'submodule' @@ -359,10 +359,10 @@ def check_for_version_discrepancies(): 'library': [ '', # 'NOT FOUND' '', # 'install' - 'dependencies/zlib_x##/lib/zdll.lib', # 'dependencies' + '/server/dependencies/zlib_x##/lib/zdll.lib', # 'dependencies' '', # 'libs' - '/vcpkg/vcpkg-export-##/installed/x##-windows/&&lib/zlib.lib^debug/lib/zlibd.lib', # 'vcpkg' - '/build/libs/zlibng/##&&zlibstatic.lib^zlibstaticd.lib', # 'static' + '/server/vcpkg/vcpkg-export-##/installed/x##-windows/&&lib/zlib.lib^debug/lib/zlibd.lib', # 'vcpkg' + '/server/build/libs/zlibng/##&&zlibstatic.lib^zlibstaticd.lib', # 'static' '' # 'submodule' ] }, @@ -399,16 +399,16 @@ def check_for_version_discrepancies(): 'include': [ '', # 'NOT FOUND' '', # 'install' - '/dependencies/luaj_x##/src', # 'dependencies' + '/server/dependencies/luaj_x##/src', # 'dependencies' '', # 'libs' - '/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' + '/server/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' '', # 'static' '' # 'submodule' ], 'source': [ '', # 'NOT FOUND' '', # 'install' - '/dependencies/luaj_x##/src', # 'dependencies' + '/server/dependencies/luaj_x##/src', # 'dependencies' '', # 'libs' '', # 'vcpkg' '', # 'static' @@ -417,10 +417,10 @@ def check_for_version_discrepancies(): 'library': [ '', # 'NOT FOUND' '', # 'install' - '/dependencies/luaj_x##/bin/lua51.lib', # 'dependencies' + '/server/dependencies/luaj_x##/bin/lua51.lib', # 'dependencies' '', # 'libs' # debug lua package likely incorrect..should be 'lua51d.lib' - or whatever debug version is - '/vcpkg/vcpkg-export-##/installed/x##-windows/&&lib/lua51.lib^debug/lib/lua51.lib', # 'vcpkg' + '/server/vcpkg/vcpkg-export-##/installed/x##-windows/&&lib/lua51.lib^debug/lib/lua51.lib', # 'vcpkg' '', # 'static' '' # 'submodule' ] @@ -429,9 +429,9 @@ def check_for_version_discrepancies(): 'include': [ '', # 'NOT FOUND' '', # 'install' - '/dependencies/boost', # 'dependencies' + '/server/dependencies/boost', # 'dependencies' '', # 'libs' - '/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' + '/server/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' '', # 'static' '' # 'submodule' ], @@ -447,9 +447,9 @@ def check_for_version_discrepancies(): 'library': [ '', # 'NOT FOUND' '', # 'install' - '/dependencies/boost', # 'dependencies' + '/server/dependencies/boost', # 'dependencies' '', # 'libs' - '/vcpkg/vcpkg-export', # 'vcpkg' + '/server/vcpkg/vcpkg-export', # 'vcpkg' '', # 'static' '' # 'submodule' ] @@ -458,9 +458,9 @@ def check_for_version_discrepancies(): 'include': [ '', # 'NOT FOUND' '', # 'install' - '/dependencies/libsodium/include', # 'dependencies' + '/server/dependencies/libsodium/include', # 'dependencies' '', # 'libs' - '/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' + '/server/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' '', # 'static' '' # 'submodule' ], @@ -476,10 +476,11 @@ def check_for_version_discrepancies(): 'library': [ '', # 'NOT FOUND' '', # 'install' - 'dependencies/libsodium/##/dynamic/libsodium.lib', # 'dependencies' + '/server/dependencies/libsodium/##/dynamic/libsodium.lib', # 'dependencies' '', # 'libs' # debug libsodium package likely incorrect..should be 'libsodiumd.lib' - or whatever debug version is - '/vcpkg/vcpkg-export-##/installed/x##-windows/&&lib/libsodium.lib^debug/lib/libsodium.lib', # 'vcpkg' + '/server/vcpkg/vcpkg-export-##/installed/x##-windows/&&lib/libsodium.lib^' + 'debug/lib/libsodium.lib', # 'vcpkg' '', # 'static' '' # 'submodule' ] @@ -488,9 +489,9 @@ def check_for_version_discrepancies(): 'include': [ '', # 'NOT FOUND' '', # 'install' - '/dependencies/openssl_x##/include', # 'dependencies' + '/server/dependencies/openssl_x##/include', # 'dependencies' '', # 'libs' - '/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' + '/server/vcpkg/vcpkg-export-##/installed/x##-windows/include', # 'vcpkg' '', # 'static' '' # 'submodule' ], @@ -506,12 +507,12 @@ def check_for_version_discrepancies(): 'library': [ '', # 'NOT FOUND' '', # 'install' - '/dependencies/openssl_x##/lib/VC/&&libeay32MD.lib^libeay32MDd.lib^' + '/server/dependencies/openssl_x##/lib/VC/&&libeay32MD.lib^libeay32MDd.lib^' 'ssleay32MD.lib^ssleay32MDd.lib', # 'dependencies' '', # 'libs' # debug openssl package likely incorrect..should be # 'libeay32d.lib' and 'ssleay32d.lib' - or whatever debug versions are - '/vcpkg/vcpkg-export-##/installed/x##-windows/&&lib/libeay32.lib^' + '/server/vcpkg/vcpkg-export-##/installed/x##-windows/&&lib/libeay32.lib^' 'lib/ssleay32.lib^debug/lib/libeay32.lib^debug/lib/ssleay32.lib', # 'vcpkg' '', # 'static' '' # 'submodule' @@ -521,51 +522,61 @@ def check_for_version_discrepancies(): # {[project]:{[build]:{[resource]:{[library]:{[reference]:priority}}}}} context_tree = {} # {[library]:priority} - global_priorities = { - 'mysql': 0, - 'zlib': 0, - 'perl': 0, - 'lua': 0, - 'boost': 0, - 'sodium': 0, - 'openssl': 0 - } + global_priorities = {} + # {[build]:{[library]:priority}} + build_priorities = {} # loop for discovering first occurence dependency sources (assumes same search precedence as compiler includes) - for key1 in project_dependencies: - if key1 not in context_tree.keys(): - context_tree[key1] = {} - for key2 in project_dependencies[key1]: - if key2 not in context_tree[key1].keys(): - context_tree[key1][key2] = {} - for key3 in project_dependencies[key1][key2]: - if key3 not in context_tree[key1][key2].keys(): - context_tree[key1][key2][key3] = {} - for key4 in project_dependencies[key1][key2][key3]: - for path in project_dependencies[key1][key2][key3][key4]: + for project in project_dependencies: + if project not in context_tree.keys(): + context_tree[project] = {} + for build in project_dependencies[project]: + if build not in context_tree[project].keys(): + context_tree[project][build] = {} + if build not in build_priorities.keys(): + build_priorities[build] = {} + for resource in project_dependencies[project][build]: + if resource not in context_tree[project][build].keys(): + context_tree[project][build][resource] = {} + for reference_project in project_dependencies[project][build][resource]: + for path in project_dependencies[project][build][resource][reference_project]: for library in libraries: - if library not in context_tree[key1][key2][key3].keys(): - context_tree[key1][key2][key3][library] = {} + if library not in context_tree[project][build][resource].keys(): + context_tree[project][build][resource][library] = {} + if library not in build_priorities[build].keys(): + build_priorities[build][library] = 0 + if library not in global_priorities.keys(): + global_priorities[library] = 0 for reference in references: - if reference not in context_tree[key1][key2][key3][library].keys(): - context_tree[key1][key2][key3][library][reference] = 0 - elif not context_tree[key1][key2][key3][library][reference] == 0: + if reference not in context_tree[project][build][resource][library].keys(): + context_tree[project][build][resource][library][reference] = 0 + elif not context_tree[project][build][resource][library][reference] == 0: continue for priority in priorities: if hints[library][reference][priority] == '': continue for hint in hints[library][reference][priority].split('|'): if is_hint_in_path(hint, path): - context_tree[key1][key2][key3][library][reference] = priority - if context_tree[key1][key2][key3][library][reference] >\ + context_tree[project][build][resource][library][reference] = priority + if context_tree[project][build][resource][library][reference] >\ + build_priorities[build][library]: + build_priorities[build][library] =\ + context_tree[project][build][resource][library][reference] + if context_tree[project][build][resource][library][reference] >\ global_priorities[library]: global_priorities[library] =\ - context_tree[key1][key2][key3][library][reference] + context_tree[project][build][resource][library][reference] twrite('{0}'.format(col1)) for library in libraries: twrite('{0}{2}'.format(col2, library, global_priorities[library])) twrite('{0}'.format(col1)) twrite('') - # loop for dumping 'ConflictTree' + for build in build_priorities.keys(): + twrite('{0}'.format(col1, build)) + for library in libraries: + twrite('{0}{2}'.format(col2, library, build_priorities[build][library])) + twrite('{0}'.format(col1)) + twrite('') + # loop for dumping 'ContextTree' for project in context_tree: twrite('{0}'.format(col1, project)) for build in context_tree[project]: @@ -612,11 +623,21 @@ def check_for_version_discrepancies(): ) ) continue - r_flag = False + if build_priorities[build][library] == 0: + if QUIET_REPORT is False: + rwrite( + '> No Build Library \'{0}\' .. skipping Project:Build:Resource' + ' "{1}":"{2}":"{3}"'.format( + library, + project, + build, + resource + ) + ) + continue for reference in context_tree[project][build][resource][library]: if context_tree[project][build][resource][library][reference] == 0: continue - r_flag = True if not global_priorities[library] == context_tree[project][build][resource][library][reference]: rwrite( '> Global-Project Library \'{0}\' mis-match \'{1}!={2}\'' @@ -631,6 +652,7 @@ def check_for_version_discrepancies(): resource ) ) + # 'builds' are allowed to have different dependencies..so, we'll start crossing at 'resource' for cross_resource in context_tree[project][build]: for cross_reference in context_tree[project][build][cross_resource][library]: if cross_resource == resource and cross_reference == reference: @@ -657,14 +679,6 @@ def check_for_version_discrepancies(): build ) ) - if r_flag is False and QUIET_REPORT is False: - rwrite( - '> No References found for Library \'{0}\' in Project "{1}":"{2}"'.format( - library, - project, - resource - ) - ) return @@ -716,7 +730,7 @@ def is_hint_in_path(hint, path): if path[start_index:].find(alt_hint) == 0: return True - return False + return False else: return False