Merge pull request #7461 from mensinda/noMoreSetuptools
Remove the setuptools dependency with mesondata.pypull/6905/merge
commit
18aff92d7a
7 changed files with 549 additions and 16 deletions
@ -0,0 +1,374 @@ |
|||||||
|
# Copyright 2020 The Meson development team |
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
|
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
|
||||||
|
|
||||||
|
#### |
||||||
|
#### WARNING: This is an automatically generated file! Do not edit! |
||||||
|
#### Generated by tools/gen_data.py |
||||||
|
#### |
||||||
|
|
||||||
|
|
||||||
|
from pathlib import Path |
||||||
|
import typing as T |
||||||
|
|
||||||
|
if T.TYPE_CHECKING: |
||||||
|
from .environment import Environment |
||||||
|
|
||||||
|
###################### |
||||||
|
# BEGIN Data section # |
||||||
|
###################### |
||||||
|
|
||||||
|
file_0_data_CMakeListsLLVM_txt = '''\ |
||||||
|
cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} ) |
||||||
|
|
||||||
|
set(PACKAGE_FOUND FALSE) |
||||||
|
|
||||||
|
while(TRUE) |
||||||
|
find_package(LLVM REQUIRED CONFIG QUIET) |
||||||
|
|
||||||
|
# ARCHS has to be set via the CMD interface |
||||||
|
if(LLVM_FOUND OR "${ARCHS}" STREQUAL "") |
||||||
|
break() |
||||||
|
endif() |
||||||
|
|
||||||
|
list(GET ARCHS 0 CMAKE_LIBRARY_ARCHITECTURE) |
||||||
|
list(REMOVE_AT ARCHS 0) |
||||||
|
endwhile() |
||||||
|
|
||||||
|
if(LLVM_FOUND) |
||||||
|
set(PACKAGE_FOUND TRUE) |
||||||
|
|
||||||
|
foreach(mod IN LISTS LLVM_MESON_MODULES) |
||||||
|
# Reset variables |
||||||
|
set(out_mods) |
||||||
|
set(real_mods) |
||||||
|
|
||||||
|
# Generate a lower and upper case version |
||||||
|
string(TOLOWER "${mod}" mod_L) |
||||||
|
string(TOUPPER "${mod}" mod_U) |
||||||
|
|
||||||
|
# Get the mapped components |
||||||
|
llvm_map_components_to_libnames(out_mods ${mod} ${mod_L} ${mod_U}) |
||||||
|
list(SORT out_mods) |
||||||
|
list(REMOVE_DUPLICATES out_mods) |
||||||
|
|
||||||
|
# Make sure that the modules exist |
||||||
|
foreach(i IN LISTS out_mods) |
||||||
|
if(TARGET ${i}) |
||||||
|
list(APPEND real_mods ${i}) |
||||||
|
endif() |
||||||
|
endforeach() |
||||||
|
|
||||||
|
# Set the output variables |
||||||
|
set(MESON_LLVM_TARGETS_${mod} ${real_mods}) |
||||||
|
foreach(i IN LISTS real_mods) |
||||||
|
set(MESON_TARGET_TO_LLVM_${i} ${mod}) |
||||||
|
endforeach() |
||||||
|
endforeach() |
||||||
|
|
||||||
|
# Check the following variables: |
||||||
|
# LLVM_PACKAGE_VERSION |
||||||
|
# LLVM_VERSION |
||||||
|
# LLVM_VERSION_STRING |
||||||
|
if(NOT DEFINED PACKAGE_VERSION) |
||||||
|
if(DEFINED LLVM_PACKAGE_VERSION) |
||||||
|
set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}") |
||||||
|
elseif(DEFINED LLVM_VERSION) |
||||||
|
set(PACKAGE_VERSION "${LLVM_VERSION}") |
||||||
|
elseif(DEFINED LLVM_VERSION_STRING) |
||||||
|
set(PACKAGE_VERSION "${LLVM_VERSION_STRING}") |
||||||
|
endif() |
||||||
|
endif() |
||||||
|
|
||||||
|
# Check the following variables: |
||||||
|
# LLVM_LIBRARIES |
||||||
|
# LLVM_LIBS |
||||||
|
set(libs) |
||||||
|
if(DEFINED LLVM_LIBRARIES) |
||||||
|
set(libs LLVM_LIBRARIES) |
||||||
|
elseif(DEFINED LLVM_LIBS) |
||||||
|
set(libs LLVM_LIBS) |
||||||
|
endif() |
||||||
|
|
||||||
|
# Check the following variables: |
||||||
|
# LLVM_INCLUDE_DIRS |
||||||
|
# LLVM_INCLUDES |
||||||
|
# LLVM_INCLUDE_DIR |
||||||
|
set(includes) |
||||||
|
if(DEFINED LLVM_INCLUDE_DIRS) |
||||||
|
set(includes LLVM_INCLUDE_DIRS) |
||||||
|
elseif(DEFINED LLVM_INCLUDES) |
||||||
|
set(includes LLVM_INCLUDES) |
||||||
|
elseif(DEFINED LLVM_INCLUDE_DIR) |
||||||
|
set(includes LLVM_INCLUDE_DIR) |
||||||
|
endif() |
||||||
|
|
||||||
|
# Check the following variables: |
||||||
|
# LLVM_DEFINITIONS |
||||||
|
set(definitions) |
||||||
|
if(DEFINED LLVM_DEFINITIONS) |
||||||
|
set(definitions LLVM_DEFINITIONS) |
||||||
|
endif() |
||||||
|
|
||||||
|
set(PACKAGE_INCLUDE_DIRS "${${includes}}") |
||||||
|
set(PACKAGE_DEFINITIONS "${${definitions}}") |
||||||
|
set(PACKAGE_LIBRARIES "${${libs}}") |
||||||
|
endif() |
||||||
|
''' |
||||||
|
|
||||||
|
file_1_data_CMakePathInfo_txt = '''\ |
||||||
|
cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}) |
||||||
|
|
||||||
|
set(TMP_PATHS_LIST) |
||||||
|
list(APPEND TMP_PATHS_LIST ${CMAKE_PREFIX_PATH}) |
||||||
|
list(APPEND TMP_PATHS_LIST ${CMAKE_FRAMEWORK_PATH}) |
||||||
|
list(APPEND TMP_PATHS_LIST ${CMAKE_APPBUNDLE_PATH}) |
||||||
|
list(APPEND TMP_PATHS_LIST $ENV{CMAKE_PREFIX_PATH}) |
||||||
|
list(APPEND TMP_PATHS_LIST $ENV{CMAKE_FRAMEWORK_PATH}) |
||||||
|
list(APPEND TMP_PATHS_LIST $ENV{CMAKE_APPBUNDLE_PATH}) |
||||||
|
list(APPEND TMP_PATHS_LIST ${CMAKE_SYSTEM_PREFIX_PATH}) |
||||||
|
list(APPEND TMP_PATHS_LIST ${CMAKE_SYSTEM_FRAMEWORK_PATH}) |
||||||
|
list(APPEND TMP_PATHS_LIST ${CMAKE_SYSTEM_APPBUNDLE_PATH}) |
||||||
|
|
||||||
|
set(LIB_ARCH_LIST) |
||||||
|
if(CMAKE_LIBRARY_ARCHITECTURE_REGEX) |
||||||
|
file(GLOB implicit_dirs RELATIVE /lib /lib/*-linux-gnu* ) |
||||||
|
foreach(dir ${implicit_dirs}) |
||||||
|
if("${dir}" MATCHES "${CMAKE_LIBRARY_ARCHITECTURE_REGEX}") |
||||||
|
list(APPEND LIB_ARCH_LIST "${dir}") |
||||||
|
endif() |
||||||
|
endforeach() |
||||||
|
endif() |
||||||
|
|
||||||
|
# "Export" these variables: |
||||||
|
set(MESON_ARCH_LIST ${LIB_ARCH_LIST}) |
||||||
|
set(MESON_PATHS_LIST ${TMP_PATHS_LIST}) |
||||||
|
set(MESON_CMAKE_ROOT ${CMAKE_ROOT}) |
||||||
|
set(MESON_CMAKE_SYSROOT ${CMAKE_SYSROOT}) |
||||||
|
set(MESON_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH}) |
||||||
|
|
||||||
|
message(STATUS ${TMP_PATHS_LIST}) |
||||||
|
''' |
||||||
|
|
||||||
|
file_2_data_CMakeLists_txt = '''\ |
||||||
|
# fail noisily if attempt to use this file without setting: |
||||||
|
# cmake_minimum_required(VERSION ${CMAKE_VERSION}) |
||||||
|
# project(... LANGUAGES ...) |
||||||
|
|
||||||
|
cmake_policy(SET CMP0000 NEW) |
||||||
|
|
||||||
|
set(PACKAGE_FOUND FALSE) |
||||||
|
set(_packageName "${NAME}") |
||||||
|
string(TOUPPER "${_packageName}" PACKAGE_NAME) |
||||||
|
|
||||||
|
while(TRUE) |
||||||
|
find_package("${NAME}" QUIET COMPONENTS ${COMPS}) |
||||||
|
|
||||||
|
# ARCHS has to be set via the CMD interface |
||||||
|
if(${_packageName}_FOUND OR ${PACKAGE_NAME}_FOUND OR "${ARCHS}" STREQUAL "") |
||||||
|
break() |
||||||
|
endif() |
||||||
|
|
||||||
|
list(GET ARCHS 0 CMAKE_LIBRARY_ARCHITECTURE) |
||||||
|
list(REMOVE_AT ARCHS 0) |
||||||
|
endwhile() |
||||||
|
|
||||||
|
if(${_packageName}_FOUND OR ${PACKAGE_NAME}_FOUND) |
||||||
|
set(PACKAGE_FOUND TRUE) |
||||||
|
|
||||||
|
# Check the following variables: |
||||||
|
# FOO_VERSION |
||||||
|
# Foo_VERSION |
||||||
|
# FOO_VERSION_STRING |
||||||
|
# Foo_VERSION_STRING |
||||||
|
if(NOT DEFINED PACKAGE_VERSION) |
||||||
|
if(DEFINED ${_packageName}_VERSION) |
||||||
|
set(PACKAGE_VERSION "${${_packageName}_VERSION}") |
||||||
|
elseif(DEFINED ${PACKAGE_NAME}_VERSION) |
||||||
|
set(PACKAGE_VERSION "${${PACKAGE_NAME}_VERSION}") |
||||||
|
elseif(DEFINED ${_packageName}_VERSION_STRING) |
||||||
|
set(PACKAGE_VERSION "${${_packageName}_VERSION_STRING}") |
||||||
|
elseif(DEFINED ${PACKAGE_NAME}_VERSION_STRING) |
||||||
|
set(PACKAGE_VERSION "${${PACKAGE_NAME}_VERSION_STRING}") |
||||||
|
endif() |
||||||
|
endif() |
||||||
|
|
||||||
|
# Check the following variables: |
||||||
|
# FOO_LIBRARIES |
||||||
|
# Foo_LIBRARIES |
||||||
|
# FOO_LIBS |
||||||
|
# Foo_LIBS |
||||||
|
set(libs) |
||||||
|
if(DEFINED ${_packageName}_LIBRARIES) |
||||||
|
set(libs ${_packageName}_LIBRARIES) |
||||||
|
elseif(DEFINED ${PACKAGE_NAME}_LIBRARIES) |
||||||
|
set(libs ${PACKAGE_NAME}_LIBRARIES) |
||||||
|
elseif(DEFINED ${_packageName}_LIBS) |
||||||
|
set(libs ${_packageName}_LIBS) |
||||||
|
elseif(DEFINED ${PACKAGE_NAME}_LIBS) |
||||||
|
set(libs ${PACKAGE_NAME}_LIBS) |
||||||
|
endif() |
||||||
|
|
||||||
|
# Check the following variables: |
||||||
|
# FOO_INCLUDE_DIRS |
||||||
|
# Foo_INCLUDE_DIRS |
||||||
|
# FOO_INCLUDES |
||||||
|
# Foo_INCLUDES |
||||||
|
# FOO_INCLUDE_DIR |
||||||
|
# Foo_INCLUDE_DIR |
||||||
|
set(includes) |
||||||
|
if(DEFINED ${_packageName}_INCLUDE_DIRS) |
||||||
|
set(includes ${_packageName}_INCLUDE_DIRS) |
||||||
|
elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIRS) |
||||||
|
set(includes ${PACKAGE_NAME}_INCLUDE_DIRS) |
||||||
|
elseif(DEFINED ${_packageName}_INCLUDES) |
||||||
|
set(includes ${_packageName}_INCLUDES) |
||||||
|
elseif(DEFINED ${PACKAGE_NAME}_INCLUDES) |
||||||
|
set(includes ${PACKAGE_NAME}_INCLUDES) |
||||||
|
elseif(DEFINED ${_packageName}_INCLUDE_DIR) |
||||||
|
set(includes ${_packageName}_INCLUDE_DIR) |
||||||
|
elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIR) |
||||||
|
set(includes ${PACKAGE_NAME}_INCLUDE_DIR) |
||||||
|
endif() |
||||||
|
|
||||||
|
# Check the following variables: |
||||||
|
# FOO_DEFINITIONS |
||||||
|
# Foo_DEFINITIONS |
||||||
|
set(definitions) |
||||||
|
if(DEFINED ${_packageName}_DEFINITIONS) |
||||||
|
set(definitions ${_packageName}_DEFINITIONS) |
||||||
|
elseif(DEFINED ${PACKAGE_NAME}_DEFINITIONS) |
||||||
|
set(definitions ${PACKAGE_NAME}_DEFINITIONS) |
||||||
|
endif() |
||||||
|
|
||||||
|
set(PACKAGE_INCLUDE_DIRS "${${includes}}") |
||||||
|
set(PACKAGE_DEFINITIONS "${${definitions}}") |
||||||
|
set(PACKAGE_LIBRARIES "${${libs}}") |
||||||
|
endif() |
||||||
|
''' |
||||||
|
|
||||||
|
file_3_data_preload_cmake = '''\ |
||||||
|
if(MESON_PS_LOADED) |
||||||
|
return() |
||||||
|
endif() |
||||||
|
|
||||||
|
set(MESON_PS_LOADED ON) |
||||||
|
|
||||||
|
# Dummy macros that have a special meaning in the meson code |
||||||
|
macro(meson_ps_execute_delayed_calls) |
||||||
|
endmacro() |
||||||
|
|
||||||
|
macro(meson_ps_reload_vars) |
||||||
|
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() |
||||||
|
|
||||||
|
set(MESON_PS_DELAYED_CALLS add_custom_command;add_custom_target;set_property) |
||||||
|
meson_ps_reload_vars() |
||||||
|
''' |
||||||
|
|
||||||
|
|
||||||
|
#################### |
||||||
|
# END Data section # |
||||||
|
#################### |
||||||
|
|
||||||
|
class DataFile: |
||||||
|
def __init__(self, path: Path, sha256sum: str, data: str) -> None: |
||||||
|
self.path = path |
||||||
|
self.sha256sum = sha256sum |
||||||
|
self.data = data |
||||||
|
|
||||||
|
def write_once(self, path: Path) -> None: |
||||||
|
if not path.exists(): |
||||||
|
path.write_text(self.data) |
||||||
|
|
||||||
|
def write_to_private(self, env: 'Environment') -> Path: |
||||||
|
out_file = Path(env.scratch_dir) / 'data' / self.path.name |
||||||
|
out_file.parent.mkdir(exist_ok=True) |
||||||
|
self.write_once(out_file) |
||||||
|
return out_file |
||||||
|
|
||||||
|
|
||||||
|
mesondata = { |
||||||
|
'dependencies/data/CMakeListsLLVM.txt': DataFile( |
||||||
|
Path('dependencies/data/CMakeListsLLVM.txt'), |
||||||
|
'412cec3315597041a978d018cdaca282dcd47693793540da88ae2f80d0cbd7cd', |
||||||
|
file_0_data_CMakeListsLLVM_txt, |
||||||
|
), |
||||||
|
'dependencies/data/CMakePathInfo.txt': DataFile( |
||||||
|
Path('dependencies/data/CMakePathInfo.txt'), |
||||||
|
'90da8b443982d9c87139b7dc84228eb58cab4315764949637208f25e2bda7db2', |
||||||
|
file_1_data_CMakePathInfo_txt, |
||||||
|
), |
||||||
|
'dependencies/data/CMakeLists.txt': DataFile( |
||||||
|
Path('dependencies/data/CMakeLists.txt'), |
||||||
|
'71a2d58381f912bbfb1c8709884d34d721f682edf2fca001e1f582f0bffd0da7', |
||||||
|
file_2_data_CMakeLists_txt, |
||||||
|
), |
||||||
|
'cmake/data/preload.cmake': DataFile( |
||||||
|
Path('cmake/data/preload.cmake'), |
||||||
|
'064d047b18a5c919ad016b838bed50c5d40aebe9e53da0e70eff9d52a2c1ca1f', |
||||||
|
file_3_data_preload_cmake, |
||||||
|
), |
||||||
|
} |
@ -0,0 +1,139 @@ |
|||||||
|
#!/usr/bin/env python3 |
||||||
|
|
||||||
|
# Copyright 2020 Daniel Mensinger |
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
|
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
|
||||||
|
import sys |
||||||
|
import hashlib |
||||||
|
import textwrap |
||||||
|
import re |
||||||
|
from pathlib import Path |
||||||
|
from datetime import datetime |
||||||
|
import typing as T |
||||||
|
|
||||||
|
class DataFile: |
||||||
|
file_counter = 0 |
||||||
|
|
||||||
|
def __init__(self, path: Path, root: Path): |
||||||
|
self.path = path |
||||||
|
self.id = self.path.relative_to(root) |
||||||
|
self.data_str = f'file_{DataFile.file_counter}_data_' + re.sub('[^a-zA-Z0-9]', '_', self.path.name) |
||||||
|
DataFile.file_counter += 1 |
||||||
|
|
||||||
|
b = self.path.read_bytes() |
||||||
|
self.data = b.decode() |
||||||
|
self.sha256sum = hashlib.sha256(b).hexdigest() |
||||||
|
|
||||||
|
def __repr__(self) -> str: |
||||||
|
return f'<{type(self).__name__}: [{self.sha256sum}] {self.id}>' |
||||||
|
|
||||||
|
def main() -> int: |
||||||
|
root_dir = Path(__file__).resolve().parents[1] |
||||||
|
mesonbuild_dir = root_dir / 'mesonbuild' |
||||||
|
out_file = mesonbuild_dir / 'mesondata.py' |
||||||
|
|
||||||
|
data_dirs = mesonbuild_dir.glob('**/data') |
||||||
|
|
||||||
|
data_files: T.List[DataFile] = [] |
||||||
|
|
||||||
|
for d in data_dirs: |
||||||
|
for p in d.iterdir(): |
||||||
|
data_files += [DataFile(p, mesonbuild_dir)] |
||||||
|
|
||||||
|
print(f'Found {len(data_files)} data files') |
||||||
|
|
||||||
|
# Generate the data script |
||||||
|
data = '' |
||||||
|
|
||||||
|
data += textwrap.dedent(f'''\ |
||||||
|
# Copyright {datetime.today().year} The Meson development team |
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
|
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
|
||||||
|
|
||||||
|
#### |
||||||
|
#### WARNING: This is an automatically generated file! Do not edit! |
||||||
|
#### Generated by {Path(__file__).resolve().relative_to(root_dir)} |
||||||
|
#### |
||||||
|
|
||||||
|
|
||||||
|
from pathlib import Path |
||||||
|
import typing as T |
||||||
|
|
||||||
|
if T.TYPE_CHECKING: |
||||||
|
from .environment import Environment |
||||||
|
|
||||||
|
###################### |
||||||
|
# BEGIN Data section # |
||||||
|
###################### |
||||||
|
|
||||||
|
''') |
||||||
|
|
||||||
|
for i in data_files: |
||||||
|
data += f"{i.data_str} = '''\\\n{i.data}'''\n\n" |
||||||
|
|
||||||
|
data += textwrap.dedent(f''' |
||||||
|
#################### |
||||||
|
# END Data section # |
||||||
|
#################### |
||||||
|
|
||||||
|
class DataFile: |
||||||
|
def __init__(self, path: Path, sha256sum: str, data: str) -> None: |
||||||
|
self.path = path |
||||||
|
self.sha256sum = sha256sum |
||||||
|
self.data = data |
||||||
|
|
||||||
|
def write_once(self, path: Path) -> None: |
||||||
|
if not path.exists(): |
||||||
|
path.write_text(self.data) |
||||||
|
|
||||||
|
def write_to_private(self, env: 'Environment') -> Path: |
||||||
|
out_file = Path(env.scratch_dir) / 'data' / self.path.name |
||||||
|
out_file.parent.mkdir(exist_ok=True) |
||||||
|
self.write_once(out_file) |
||||||
|
return out_file |
||||||
|
|
||||||
|
|
||||||
|
mesondata = {{ |
||||||
|
''') |
||||||
|
|
||||||
|
for i in data_files: |
||||||
|
data += textwrap.indent(textwrap.dedent(f"""\ |
||||||
|
'{i.id}': DataFile( |
||||||
|
Path('{i.id}'), |
||||||
|
'{i.sha256sum}', |
||||||
|
{i.data_str}, |
||||||
|
), |
||||||
|
"""), ' ') |
||||||
|
|
||||||
|
data += textwrap.dedent('''\ |
||||||
|
} |
||||||
|
''') |
||||||
|
|
||||||
|
print(f'Updating {out_file}') |
||||||
|
out_file.write_text(data) |
||||||
|
return 0 |
||||||
|
|
||||||
|
if __name__ == '__main__': |
||||||
|
sys.exit(main()) |
Loading…
Reference in new issue