Skip to content

Commit

Permalink
gen_data.py: even more sorting
Browse files Browse the repository at this point in the history
glob.glob() is not sorted, despite using shell-style wildcards, and the
documentation does not mention this: https://bugs.python.org/issue21748

Recently, it does start mentioning "Whether or not the results are
sorted depends on the file system." which does not really get to the
heart of the matter...

This is causing fuzz too.
  • Loading branch information
eli-schwartz authored and jpakkane committed Jan 13, 2021
1 parent adfcf77 commit ccb15bc
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 97 deletions.
192 changes: 96 additions & 96 deletions mesonbuild/mesondata.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,92 @@
# BEGIN Data section #
######################

file_0_data_CMakeLists_txt = '''\
file_0_data_preload_cmake = '''\
if(MESON_PS_LOADED)
return()
endif()
set(MESON_PS_LOADED ON)
cmake_policy(PUSH)
cmake_policy(SET CMP0054 NEW) # https://cmake.org/cmake/help/latest/policy/CMP0054.html
# Dummy macros that have a special meaning in the meson code
macro(meson_ps_execute_delayed_calls)
endmacro()
macro(meson_ps_reload_vars)
endmacro()
macro(meson_ps_disabled_function)
message(WARNING "The function '${ARGV0}' is disabled in the context of CMake subporjects.\n"
"This should not be an issue but may lead to compilaton errors.")
endmacro()
# Helper macro to inspect the current CMake state
macro(meson_ps_inspect_vars)
set(MESON_PS_CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(MESON_PS_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
meson_ps_execute_delayed_calls()
endmacro()
# Override some system functions with custom code and forward the args
# to the original function
macro(add_custom_command)
meson_ps_inspect_vars()
_add_custom_command(${ARGV})
endmacro()
macro(add_custom_target)
meson_ps_inspect_vars()
_add_custom_target(${ARGV})
endmacro()
macro(set_property)
meson_ps_inspect_vars()
_set_property(${ARGV})
endmacro()
function(set_source_files_properties)
set(FILES)
set(I 0)
set(PROPERTIES OFF)
while(I LESS ARGC)
if(NOT PROPERTIES)
if("${ARGV${I}}" STREQUAL "PROPERTIES")
set(PROPERTIES ON)
else()
list(APPEND FILES "${ARGV${I}}")
endif()
math(EXPR I "${I} + 1")
else()
set(ID_IDX ${I})
math(EXPR PROP_IDX "${ID_IDX} + 1")
set(ID "${ARGV${ID_IDX}}")
set(PROP "${ARGV${PROP_IDX}}")
set_property(SOURCE ${FILES} PROPERTY "${ID}" "${PROP}")
math(EXPR I "${I} + 2")
endif()
endwhile()
endfunction()
# Disable some functions that would mess up the CMake meson integration
macro(target_precompile_headers)
meson_ps_disabled_function(target_precompile_headers)
endmacro()
set(MESON_PS_DELAYED_CALLS add_custom_command;add_custom_target;set_property)
meson_ps_reload_vars()
cmake_policy(POP)
'''

file_1_data_CMakeLists_txt = '''\
# fail noisily if attempt to use this file without setting:
# cmake_minimum_required(VERSION ${CMAKE_VERSION})
# project(... LANGUAGES ...)
Expand Down Expand Up @@ -131,7 +216,7 @@
endif()
'''

file_1_data_CMakeListsLLVM_txt = '''\
file_2_data_CMakeListsLLVM_txt = '''\
cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} )
set(PACKAGE_FOUND FALSE)
Expand Down Expand Up @@ -229,7 +314,7 @@
endif()
'''

file_2_data_CMakePathInfo_txt = '''\
file_3_data_CMakePathInfo_txt = '''\
cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION})
set(TMP_PATHS_LIST)
Expand Down Expand Up @@ -263,91 +348,6 @@
message(STATUS ${TMP_PATHS_LIST})
'''

file_3_data_preload_cmake = '''\
if(MESON_PS_LOADED)
return()
endif()
set(MESON_PS_LOADED ON)
cmake_policy(PUSH)
cmake_policy(SET CMP0054 NEW) # https://cmake.org/cmake/help/latest/policy/CMP0054.html
# Dummy macros that have a special meaning in the meson code
macro(meson_ps_execute_delayed_calls)
endmacro()
macro(meson_ps_reload_vars)
endmacro()
macro(meson_ps_disabled_function)
message(WARNING "The function '${ARGV0}' is disabled in the context of CMake subporjects.\n"
"This should not be an issue but may lead to compilaton errors.")
endmacro()
# Helper macro to inspect the current CMake state
macro(meson_ps_inspect_vars)
set(MESON_PS_CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(MESON_PS_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
meson_ps_execute_delayed_calls()
endmacro()
# Override some system functions with custom code and forward the args
# to the original function
macro(add_custom_command)
meson_ps_inspect_vars()
_add_custom_command(${ARGV})
endmacro()
macro(add_custom_target)
meson_ps_inspect_vars()
_add_custom_target(${ARGV})
endmacro()
macro(set_property)
meson_ps_inspect_vars()
_set_property(${ARGV})
endmacro()
function(set_source_files_properties)
set(FILES)
set(I 0)
set(PROPERTIES OFF)
while(I LESS ARGC)
if(NOT PROPERTIES)
if("${ARGV${I}}" STREQUAL "PROPERTIES")
set(PROPERTIES ON)
else()
list(APPEND FILES "${ARGV${I}}")
endif()
math(EXPR I "${I} + 1")
else()
set(ID_IDX ${I})
math(EXPR PROP_IDX "${ID_IDX} + 1")
set(ID "${ARGV${ID_IDX}}")
set(PROP "${ARGV${PROP_IDX}}")
set_property(SOURCE ${FILES} PROPERTY "${ID}" "${PROP}")
math(EXPR I "${I} + 2")
endif()
endwhile()
endfunction()
# Disable some functions that would mess up the CMake meson integration
macro(target_precompile_headers)
meson_ps_disabled_function(target_precompile_headers)
endmacro()
set(MESON_PS_DELAYED_CALLS add_custom_command;add_custom_target;set_property)
meson_ps_reload_vars()
cmake_policy(POP)
'''


####################
# END Data section #
Expand All @@ -371,24 +371,24 @@ def write_to_private(self, env: 'Environment') -> Path:


mesondata = {
'cmake/data/preload.cmake': DataFile(
Path('cmake/data/preload.cmake'),
'2b4e632aeb74acb2b441880cf85c0b6fcab03e75b182d3077715a97e739a7918',
file_0_data_preload_cmake,
),
'dependencies/data/CMakeLists.txt': DataFile(
Path('dependencies/data/CMakeLists.txt'),
'4dca24afa13e9311f0598a6ac29690490819bd7d82cfdaa0a2fe5eea3c0fa0d5',
file_0_data_CMakeLists_txt,
file_1_data_CMakeLists_txt,
),
'dependencies/data/CMakeListsLLVM.txt': DataFile(
Path('dependencies/data/CMakeListsLLVM.txt'),
'412cec3315597041a978d018cdaca282dcd47693793540da88ae2f80d0cbd7cd',
file_1_data_CMakeListsLLVM_txt,
file_2_data_CMakeListsLLVM_txt,
),
'dependencies/data/CMakePathInfo.txt': DataFile(
Path('dependencies/data/CMakePathInfo.txt'),
'90da8b443982d9c87139b7dc84228eb58cab4315764949637208f25e2bda7db2',
file_2_data_CMakePathInfo_txt,
),
'cmake/data/preload.cmake': DataFile(
Path('cmake/data/preload.cmake'),
'2b4e632aeb74acb2b441880cf85c0b6fcab03e75b182d3077715a97e739a7918',
file_3_data_preload_cmake,
file_3_data_CMakePathInfo_txt,
),
}
2 changes: 1 addition & 1 deletion tools/gen_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def main() -> int:
mesonbuild_dir = root_dir / 'mesonbuild'
out_file = mesonbuild_dir / 'mesondata.py'

data_dirs = mesonbuild_dir.glob('**/data')
data_dirs = sorted(mesonbuild_dir.glob('**/data'))

data_files: T.List[DataFile] = []

Expand Down

0 comments on commit ccb15bc

Please sign in to comment.