From bb844f131109efed28554bae55664df03d0d7cac Mon Sep 17 00:00:00 2001 From: Relintai Date: Fri, 13 Jan 2023 10:46:36 +0100 Subject: [PATCH] Bring in my tooling. --- .gitignore | 34 ++++++++- HEADS | 1 + SConstruct | 173 +++++++++++++++++++++++++++++++++++++++++++ build.config.example | 46 ++++++++++++ editor.sh | 6 ++ ged.sh | 6 ++ module_config.py | 94 +++++++++++++++++++++++ 7 files changed, 359 insertions(+), 1 deletion(-) create mode 100644 HEADS create mode 100644 SConstruct create mode 100644 build.config.example create mode 100755 editor.sh create mode 100755 ged.sh create mode 100644 module_config.py diff --git a/.gitignore b/.gitignore index 56594a2..e13caee 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,33 @@ -.import/ \ No newline at end of file +.import/ +engine +pandemonium_engine +modules/* +logs/* + +*.d +*.o +*.meta +game/.import/** +game/.prop_tool_temp/** +.sconsign.dblite +.DS_Store + +export/** +release/** + +.vs/* +.kdev4/* +.vscode/* + +TestRWTextures + +_build/* +_binaries/* +game/android/build/* + +*.blend1 +.dir-locals.el + +build.config + +__pycache__/* \ No newline at end of file diff --git a/HEADS b/HEADS new file mode 100644 index 0000000..f304c1b --- /dev/null +++ b/HEADS @@ -0,0 +1 @@ +{"engine": {"3.2": "94a0fc47f7b4e90f8973f9adbfd3312579ed2825", "master": "8c73e813134001e575b6f59e3b0100471c007410", "3.x": "c4864a0e5f73a375259503ea1485794a6aad6df7"}, "world_generator": {"master": "260c430f11b0b591eaf4714516419aa327d2842c"}, "entity_spell_system": {"master": "3536f01bacf5f54cefb32b768cd020a1f94d0ade"}, "ui_extensions": {"master": "80a3b96fc56991a0f88a1d441ed1e3cebaf3307a"}, "voxelman": {"master": "65485930a20f65844d496b4ba47dec5b6ed70b91"}, "texture_packer": {"master": "ae4d222fbaade063ed6f0bc9f3aaa53df68a7fed"}, "fastnoise": {"master": "46bb1f610bfb7171613b5c708d312bcf94e89356"}, "mesh_data_resource": {"master": "a062d871d49d954c5466b9de54b4075cb61cbef4"}, "procedural_animations": {"master": "f8aae42bf06b3936cc6bd24cb18e1c3ec9f78f4f"}, "ess_data": {"master": "3bd637fdd3304b64a18287a49a6b7387acf2f5de"}, "props": {"master": "983090d21a08ebed30a5ce06681269819ab12e48"}, "mesh_utils": {"master": "b52a261c31f04fad624e5cfbcdcc4a45d61136da"}, "broken_seals_module": {"master": "52c5a81350db1c29d375c63d95010260911ec034"}, "thread_pool": {"master": "0917511d04bb1aa308385b63ec88d3c182990628"}, "terraman": {"master": "c72d8fc03295588fc18c5168ce351bd0c321ec5f"}, "pandemonium_engine": {"master": "4b09cb47ab00a2fa63dbab46bc932e3c19309e53"}} \ No newline at end of file diff --git a/SConstruct b/SConstruct new file mode 100644 index 0000000..e8fe36c --- /dev/null +++ b/SConstruct @@ -0,0 +1,173 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright (c) 2019-2021 Péter Magyar +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import os +import subprocess +import json +import sys + +import module_config + +repository_index = 0 +clone_command = 'git clone {0} {1}' +target_commits = {} + +def setup_repository(data, clone_path, branch = 'master'): + cwd = os.getcwd() + + full_path = cwd + clone_path + data[1] + '/' + + if not os.path.isdir(full_path): + os.chdir(cwd + clone_path) + + subprocess.call(clone_command.format(data[0][repository_index], data[1]), shell=True) + + os.chdir(full_path) + + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + subprocess.call('git clean -f -d', shell=True) + subprocess.call('git checkout -B ' + branch + ' origin/' + branch, shell=True) + subprocess.call('git pull origin ' + branch, shell=True) + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + + target = "" + + if data[1] in target_commits: + target = target_commits[data[1]][branch] + + subprocess.call('git checkout -B ' + branch + ' ' + target, shell=True) + subprocess.call('git clean -f -d', shell=True) + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + + os.chdir(cwd) + + +def update_repository(data, clone_path, branch = 'master'): + cwd = os.getcwd() + + full_path = cwd + clone_path + data[1] + '/' + + if not os.path.isdir(full_path): + os.chdir(cwd + clone_path) + + subprocess.call(clone_command.format(data[0][repository_index], data[1]), shell=True) + + os.chdir(full_path) + + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + subprocess.call('git clean -f -d', shell=True) + subprocess.call('git checkout -B ' + branch + ' origin/' + branch, shell=True) + subprocess.call('git reset', shell=True) + subprocess.call('git reset --hard', shell=True) + subprocess.call('git clean -f -d', shell=True) + subprocess.call('git pull origin ' + branch, shell=True) + + process = subprocess.Popen('git rev-parse HEAD', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + output = process.communicate()[0].decode().strip() + + if data[1] not in target_commits: + target_commits[data[1]] = {} + + target_commits[data[1]][branch] = output + + os.chdir(cwd) + +def validate_repository_origin(data, clone_path, branch = 'master'): + full_path = os.path.abspath(clone_path) + + if not os.path.isdir(full_path): + return + + cwd = os.getcwd() + os.chdir(full_path) + + res = subprocess.run('git remote -v', shell=True, capture_output=True) + + resstr = res.stdout.decode('ascii') + resarr = resstr.split("\n") + res_orig = [] + + for l in resarr: + if "origin" in l: + res_orig.append(l) + + if len(res_orig) == 0: + print("The repository " + clone_path + " does not seem to have an origin remote. Adding it.") + + subprocess.call('git remote add origin ' + data[0][repository_index], shell=True) + + os.chdir(cwd) + + return + + for l in data[0]: + for ll in res_orig: + if l in ll: + os.chdir(cwd) + + return + + rind = 0 + + if 'git@' in res_orig[0]: + rind = 1 + + subprocess.call('git remote remove origin', shell=True) + subprocess.call('git remote add origin ' + data[0][rind], shell=True) + subprocess.call('git pull origin', shell=True) + subprocess.call('git checkout origin/' + branch, shell=True) + + print('Updated git remote origin in ' + clone_path) + + os.chdir(cwd) + +def update_engine(): + validate_repository_origin(module_config.engine_repository, './pandemonium_engine/', module_config.pandemonium_branch) + update_repository(module_config.engine_repository, '/', module_config.pandemonium_branch) + +engine_abspath = os.path.abspath(module_config.engine_repository[1]) + +if not os.path.isdir(engine_abspath): + if not os.path.isfile('./HEADS'): + print("Error! HEADS file doesn't exists! Exiting.") + exit() + + with open('./HEADS', 'r') as infile: + target_commits = json.load(infile) + + if 'repository_type=ssh' in sys.argv: + repository_index = 1 + + setup_repository(module_config.engine_repository, '/', module_config.pandemonium_branch) +else: + if not os.path.isfile('pandemonium_engine/misc/scripts_app/SConstruct'): + update_engine() + + +SConscript("pandemonium_engine/misc/scripts_app/SConstruct") + + diff --git a/build.config.example b/build.config.example new file mode 100644 index 0000000..f971841 --- /dev/null +++ b/build.config.example @@ -0,0 +1,46 @@ +# Copyright (c) 2019-2021 Péter Magyar +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# Rename this file to build.config to use it + +# Lines starting with # are comments. (Only works at the start of the line!) + +# Note: +# ~ will be converted to %userprofile% on windows +# / will be converted to \ on windows +# so you don't have to worry about it + +# Visual studio related setup: +visual_studio_call_vcvarsall True +visual_studio_vcvarsall_path C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build/vcvarsall.bat +visual_studio_arch amd64 + +# You can export variables with the export keyword +# You can run commands with the run keywords +# +# available export/run targets: global, linux, windows, android, javascript + +export global SCONS_CACHE=~/.scons_cache +export global SCONS_CACHE_LIMIT=5000 + +export android ANDROID_HOME=~/SDKs/Android/SDK +export android ANDROID_SDK_ROOT=~/SDKs/Android/SDK + +run javascript source ~/SDKs/emsdk/emsdk_env.sh diff --git a/editor.sh b/editor.sh new file mode 100755 index 0000000..1aec724 --- /dev/null +++ b/editor.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cp -u ./pandemonium_engine/bin/pandemonium.x11.opt.tools.64 ./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64 + +export LD_LIBRARY_PATH=`pwd`/pandemonium_engine/bin/ +./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64 -v diff --git a/ged.sh b/ged.sh new file mode 100755 index 0000000..51ef2eb --- /dev/null +++ b/ged.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cp -u ./pandemonium_engine/bin/pandemonium.x11.opt.tools.64 ./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64 + +export LD_LIBRARY_PATH=`pwd`/pandemonium_engine/bin/ +./pandemonium_engine/bin/run.pandemonium.x11.opt.tools.64 -e --path ./game/ diff --git a/module_config.py b/module_config.py new file mode 100644 index 0000000..a322f1b --- /dev/null +++ b/module_config.py @@ -0,0 +1,94 @@ + +pandemonium_branch = 'master' + +engine_repository = [ ['https://github.com/Relintai/pandemonium_engine.git', 'git@github.com:Relintai/pandemonium_engine.git'], 'pandemonium_engine', '' ] + +# Relative to this script's directory +module_install_folder = './custom_modules/' + +module_repositories = [ + #[ ['https://github.com/Relintai/entity_spell_system.git', 'git@github.com:Relintai/entity_spell_system.git'], 'entity_spell_system', '' ], + #[ ['https://github.com/Relintai/ui_extensions.git', 'git@github.com:Relintai/ui_extensions.git'], 'ui_extensions', '' ], + #[ ['https://github.com/Relintai/texture_packer.git', 'git@github.com:Relintai/texture_packer.git'], 'texture_packer', '' ], + #[ ['https://github.com/Relintai/godot_fastnoise.git', 'git@github.com:Relintai/godot_fastnoise.git'], 'fastnoise', '' ], + #[ ['https://github.com/Relintai/mesh_data_resource.git', 'git@github.com:Relintai/mesh_data_resource.git'], 'mesh_data_resource', '' ], + #[ ['https://github.com/Relintai/props.git', 'git@github.com:Relintai/props.git'], 'props', '' ], + #[ ['https://github.com/Relintai/mesh_utils.git', 'git@github.com:Relintai/mesh_utils.git'], 'mesh_utils', '' ], + #[ ['https://github.com/Relintai/broken_seals_module.git', 'git@github.com:Relintai/broken_seals_module.git'], 'broken_seals_module', '' ], + #[ ['https://github.com/Relintai/thread_pool.git', 'git@github.com:Relintai/thread_pool.git'], 'thread_pool', '' ], + #[ ['https://github.com/Relintai/terraman.git', 'git@github.com:Relintai/terraman.git'], 'terraman', '' ], +] + +removed_modules = [ + #[ ['https://github.com/Relintai/voxelman.git', 'git@github.com:Relintai/voxelman.git'], 'voxelman', '' ], + #[ ['https://github.com/Relintai/procedural_animations.git', 'git@github.com:Relintai/procedural_animations.git'], 'procedural_animations', '' ], + #[ ['https://github.com/Relintai/world_generator.git', 'git@github.com:Relintai/world_generator.git'], 'world_generator', '' ], +] + +addon_repositories = [ +] + +third_party_addon_repositories = [ +] + +# Relative to the engine directory +custom_module_folders = '' + +slim_args = '' +#slim_args += 'module_bmp_enabled=no ' +#slim_args += 'module_broken_seals_module_enabled=no ' +slim_args += 'module_cscript_enabled=no ' +#slim_args += 'module_cvtt_enabled=no ' +slim_args += 'module_database_enabled=no ' +slim_args += 'module_database_sqlite_enabled=no ' +#slim_args += 'module_dds_enabled=no ' +#slim_args += 'module_enet_enabled=no ' +#slim_args += 'module_entity_spell_system_enabled=no ' +#slim_args += 'module_fastnoise_enabled=no ' +#slim_args += 'module_freetype_enabled=no ' +#slim_args += 'module_gdscript_enabled=no ' +slim_args += 'module_gridmap_enabled=no ' +#slim_args += 'module_hdr_enabled=no ' +slim_args += 'module_http_server_simple_enabled=no ' +#slim_args += 'module_jpg_enabled=no ' +#slim_args += 'module_material_maker_enabled=no ' +#slim_args += 'module_mbedtls_enabled=no ' +#slim_args += 'module_mesh_data_resource_enabled=no ' +#slim_args += 'module_mesh_utils_enabled=no ' +#slim_args += 'module_minimp3_enabled=no ' +#slim_args += 'module_navigation_enabled=no ' +slim_args += 'module_network_synchronizer_enabled=no ' +#slim_args += 'module_ogg_enabled=no ' +#slim_args += 'module_opensimplex_enabled=no ' +#slim_args += 'module_opus_enabled=no ' +#slim_args += 'module_paint_enabled=no ' +#slim_args += 'module_props_enabled=no ' +slim_args += 'module_props_2d_enabled=no ' +#slim_args += 'module_pvr_enabled=no ' +#slim_args += 'module_regex_enabled=no ' +slim_args += 'module_skeleton_2d_enabled=no ' +#slim_args += 'module_skeleton_3d_enabled=no ' +#slim_args += 'module_squish_enabled=no ' +#slim_args += 'module_stb_vorbis_enabled=no ' +#slim_args += 'module_svg_enabled=no ' +#slim_args += 'module_terraman_enabled=no ' +slim_args += 'module_terraman_2d_enabled=no ' +#slim_args += 'module_texture_packer_enabled=no ' +#slim_args += 'module_tga_enabled=no ' +#slim_args += 'module_theora_enabled=no ' +slim_args += 'module_tile_map_enabled=no ' +#slim_args += 'module_ui_extensions_enabled=no ' +#slim_args += 'module_upnp_enabled=no ' +slim_args += 'module_users_enabled=no ' +#slim_args += 'module_vhacd_enabled=no ' +#slim_args += 'module_vorbis_enabled=no ' +slim_args += 'module_voxelman_enabled=no ' +slim_args += 'module_web_enabled=no ' +#slim_args += 'module_websocket_enabled=no ' +slim_args += 'module_wfc_enabled=no ' +#slim_args += 'module_etc_enabled=no ' +#slim_args += 'module_gltf_enabled=no ' +#slim_args += 'module_plugin_refresher_enabled=no ' +#slim_args += 'module_text_editor_enabled=no ' +#slim_args += 'module_tinyexr_enabled=no ' +