mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-27 01:13:13 +08:00
More work on prefab system
This commit is contained in:
parent
1a7c0ef728
commit
24cc7e9e99
@ -3948,8 +3948,8 @@
|
||||
"build/prefab/lib/linux_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/32/03/d4dd9c398eab7c7da62b2e7a4096",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/11/f5/cb2b3a42e4384d6ac4dfe7a98213",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/06/aa/fc55996ce9a1a3e898d1348873ff",
|
||||
"build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f7/16/01f6978b6262c3033aadfb4ad24f",
|
||||
"build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d8/21/d65fb091c26cc7b683768ea19705",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/13/0c/a2f421ae193496383524772a1e76",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c9/a7/f55ab74860ab4f6ef4983e144e76"
|
||||
"build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/41/6b/19bf8c7fa531a27076d1c0babaff",
|
||||
"build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fd/66/69bc3327543d711753013b9fc821",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/80/37/41e0842744af078a54e2477045e0",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/cf/f5/f2df776067491dbc09500c9c3966"
|
||||
}
|
||||
4
.idea/dictionaries/ericf.xml
generated
4
.idea/dictionaries/ericf.xml
generated
@ -541,6 +541,7 @@
|
||||
<w>dstattr</w>
|
||||
<w>dstbase</w>
|
||||
<w>dstdata</w>
|
||||
<w>dstdirname</w>
|
||||
<w>dstfile</w>
|
||||
<w>dstfin</w>
|
||||
<w>dstjson</w>
|
||||
@ -1098,6 +1099,7 @@
|
||||
<w>levelname</w>
|
||||
<w>lfull</w>
|
||||
<w>lfval</w>
|
||||
<w>libballisticacore</w>
|
||||
<w>libcrypto</w>
|
||||
<w>libdir</w>
|
||||
<w>libegl</w>
|
||||
@ -1262,6 +1264,7 @@
|
||||
<w>modders</w>
|
||||
<w>modename</w>
|
||||
<w>modestr</w>
|
||||
<w>modeval</w>
|
||||
<w>modpack</w>
|
||||
<w>modtimes</w>
|
||||
<w>moduledir</w>
|
||||
@ -1794,6 +1797,7 @@
|
||||
<w>servercfg</w>
|
||||
<w>servercmd</w>
|
||||
<w>serverdialog</w>
|
||||
<w>serverdst</w>
|
||||
<w>serverget</w>
|
||||
<w>servermanager</w>
|
||||
<w>servermode</w>
|
||||
|
||||
166
Makefile
166
Makefile
@ -235,32 +235,11 @@ prefab-mac-arm64-server-debug: prefab-mac-arm64-server-debug-build
|
||||
|
||||
prefab-mac-x86-64-server-debug-build: prereqs assets-cmake \
|
||||
build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless \
|
||||
build/prefab/full/mac_x86_64_server/debug/ballisticacore_server \
|
||||
build/prefab/full/mac_x86_64_server/debug/config_template.yaml \
|
||||
build/prefab/full/mac_x86_64_server/debug/README.txt
|
||||
@${STAGE_ASSETS} -cmakeserver build/prefab/full/mac_x86_64_server/debug/dist
|
||||
@${STAGE_ASSETS} -cmakeserver -debug build/prefab/full/mac_x86_64_server/debug
|
||||
|
||||
prefab-mac-arm64-server-debug-build: prereqs assets-cmake \
|
||||
build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless \
|
||||
build/prefab/full/mac_arm64_server/debug/ballisticacore_server \
|
||||
build/prefab/full/mac_arm64_server/debug/config_template.yaml \
|
||||
build/prefab/full/mac_arm64_server/debug/README.txt
|
||||
@${STAGE_ASSETS} -cmakeserver build/prefab/full/mac_arm64_server/debug/dist
|
||||
|
||||
build/prefab/full/mac_%_server/debug/ballisticacore_server: \
|
||||
assets/src/server/ballisticacore_server.py tools/batools/pcommand.py
|
||||
@tools/pcommand stage_server_file debug $< $@
|
||||
|
||||
build/prefab/full/mac_%_server/debug/config_template.yaml: \
|
||||
assets/src/server/config_template.yaml \
|
||||
tools/batools/build.py \
|
||||
tools/batools/pcommand.py \
|
||||
tools/bacommon/servermanager.py
|
||||
@tools/pcommand stage_server_file debug $< $@
|
||||
|
||||
build/prefab/full/mac_%_server/debug/README.txt: \
|
||||
assets/src/server/README.txt
|
||||
@cp $< $@
|
||||
@${STAGE_ASSETS} -cmakeserver -debug build/prefab/full/mac_arm64_server/debug
|
||||
|
||||
build/prefab/full/mac_%_server/debug/dist/ballisticacore_headless: .efrocachemap
|
||||
@tools/pcommand efrocache_get $@
|
||||
@ -286,32 +265,13 @@ prefab-mac-arm64-server-release: prefab-mac-arm64-server-release-build
|
||||
|
||||
prefab-mac-x86-64-server-release-build: prereqs assets-cmake \
|
||||
build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless \
|
||||
build/prefab/full/mac_x86_64_server/release/ballisticacore_server \
|
||||
build/prefab/full/mac_x86_64_server/release/config_template.yaml \
|
||||
build/prefab/full/mac_x86_64_server/release/README.txt
|
||||
@${STAGE_ASSETS} -cmakeserver build/prefab/full/mac_x86_64_server/release/dist
|
||||
@${STAGE_ASSETS} -cmakeserver -release \
|
||||
build/prefab/full/mac_x86_64_server/release
|
||||
|
||||
prefab-mac-arm64-server-release-build: prereqs assets-cmake \
|
||||
build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless \
|
||||
build/prefab/full/mac_arm64_server/release/ballisticacore_server \
|
||||
build/prefab/full/mac_arm64_server/release/config_template.yaml \
|
||||
build/prefab/full/mac_arm64_server/release/README.txt
|
||||
@${STAGE_ASSETS} -cmakeserver build/prefab/full/mac_arm64_server/release/dist
|
||||
|
||||
build/prefab/full/mac_%_server/release/ballisticacore_server: \
|
||||
assets/src/server/ballisticacore_server.py tools/batools/pcommand.py
|
||||
@tools/pcommand stage_server_file release $< $@
|
||||
|
||||
build/prefab/full/mac_%_server/release/config_template.yaml: \
|
||||
assets/src/server/config_template.yaml \
|
||||
tools/batools/build.py \
|
||||
tools/batools/pcommand.py \
|
||||
tools/bacommon/servermanager.py
|
||||
@tools/pcommand stage_server_file release $< $@
|
||||
|
||||
build/prefab/full/mac_%_server/release/README.txt: \
|
||||
assets/src/server/README.txt
|
||||
@cp $< $@
|
||||
@${STAGE_ASSETS} -cmakeserver -release \
|
||||
build/prefab/full/mac_arm64_server/release
|
||||
|
||||
build/prefab/full/mac_%_server/release/dist/ballisticacore_headless: .efrocachemap
|
||||
@tools/pcommand efrocache_get $@
|
||||
@ -397,32 +357,13 @@ prefab-linux-arm64-server-debug: prefab-linux-arm64-server-debug-build
|
||||
|
||||
prefab-linux-x86-64-server-debug-build: prereqs assets-cmake \
|
||||
build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless \
|
||||
build/prefab/full/linux_x86_64_server/debug/ballisticacore_server \
|
||||
build/prefab/full/linux_x86_64_server/debug/config_template.yaml \
|
||||
build/prefab/full/linux_x86_64_server/debug/README.txt
|
||||
@${STAGE_ASSETS} -cmakeserver build/prefab/full/linux_x86_64_server/debug/dist
|
||||
@${STAGE_ASSETS} -cmakeserver -debug \
|
||||
build/prefab/full/linux_x86_64_server/debug
|
||||
|
||||
prefab-linux-arm64-server-debug-build: prereqs assets-cmake \
|
||||
build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless \
|
||||
build/prefab/full/linux_arm64_server/debug/ballisticacore_server \
|
||||
build/prefab/full/linux_arm64_server/debug/config_template.yaml \
|
||||
build/prefab/full/linux_arm64_server/debug/README.txt
|
||||
@${STAGE_ASSETS} -cmakeserver build/prefab/full/linux_arm64_server/debug/dist
|
||||
|
||||
build/prefab/full/linux_%_server/debug/ballisticacore_server: \
|
||||
assets/src/server/ballisticacore_server.py tools/batools/pcommand.py
|
||||
@tools/pcommand stage_server_file debug $< $@
|
||||
|
||||
build/prefab/full/linux_%_server/debug/config_template.yaml: \
|
||||
assets/src/server/config_template.yaml \
|
||||
tools/batools/build.py \
|
||||
tools/batools/pcommand.py \
|
||||
tools/bacommon/servermanager.py
|
||||
@tools/pcommand stage_server_file debug $< $@
|
||||
|
||||
build/prefab/full/linux_%_server/debug/README.txt: \
|
||||
assets/src/server/README.txt
|
||||
@cp $< $@
|
||||
@${STAGE_ASSETS} -cmakeserver -debug \
|
||||
build/prefab/full/linux_arm64_server/debug
|
||||
|
||||
build/prefab/full/linux_%_server/debug/dist/ballisticacore_headless: .efrocachemap
|
||||
@tools/pcommand efrocache_get $@
|
||||
@ -442,28 +383,19 @@ prefab-linux-x86-64-server-release: prefab-linux-x86-64-server-release-build
|
||||
@tools/pcommand ensure_prefab_platform linux_x86_64
|
||||
@${RUN_PREFAB_LINUX_X86_64_SERVER_RELEASE}
|
||||
|
||||
prefab-linux-arm64-server-release: prefab-linux-arm64-server-release-build
|
||||
@tools/pcommand ensure_prefab_platform linux_arm64
|
||||
@${RUN_PREFAB_LINUX_ARM64_SERVER_RELEASE}
|
||||
|
||||
prefab-linux-x86-64-server-release-build: prereqs assets-cmake \
|
||||
build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless \
|
||||
build/prefab/full/linux_x86_64_server/release/ballisticacore_server \
|
||||
build/prefab/full/linux_x86_64_server/release/config_template.yaml \
|
||||
build/prefab/full/linux_x86_64_server/release/README.txt
|
||||
@${STAGE_ASSETS} \
|
||||
-cmakeserver build/prefab/full/linux_x86_64_server/release/dist
|
||||
@${STAGE_ASSETS} -cmakeserver -release \
|
||||
build/prefab/full/linux_x86_64_server/release
|
||||
|
||||
build/prefab/full/linux_%_server/release/ballisticacore_server: \
|
||||
assets/src/server/ballisticacore_server.py tools/batools/pcommand.py
|
||||
@tools/pcommand stage_server_file release $< $@
|
||||
|
||||
build/prefab/full/linux_%_server/release/config_template.yaml: \
|
||||
assets/src/server/config_template.yaml \
|
||||
tools/batools/build.py \
|
||||
tools/batools/pcommand.py \
|
||||
tools/bacommon/servermanager.py
|
||||
@tools/pcommand stage_server_file release $< $@
|
||||
|
||||
build/prefab/full/linux_%_server/release/README.txt: \
|
||||
assets/src/server/README.txt
|
||||
@cp $< $@
|
||||
prefab-linux-arm64-server-release-build: prereqs assets-cmake \
|
||||
build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless \
|
||||
@${STAGE_ASSETS} -cmakeserver -release \
|
||||
build/prefab/full/linux_arm64_server/release
|
||||
|
||||
build/prefab/full/linux_%_server/release/dist/ballisticacore_headless: .efrocachemap
|
||||
@tools/pcommand efrocache_get $@
|
||||
@ -519,35 +451,12 @@ prefab-windows-x86-server-debug: prefab-windows-x86-server-debug-build
|
||||
prefab-windows-x86-server-debug-build: prereqs \
|
||||
assets-windows-${WINPLAT_X86} \
|
||||
build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe \
|
||||
build/prefab/full/windows_x86_server/debug/launch_ballisticacore_server.bat \
|
||||
build/prefab/full/windows_x86_server/debug/ballisticacore_server.py \
|
||||
build/prefab/full/windows_x86_server/debug/config_template.yaml \
|
||||
build/prefab/full/windows_x86_server/debug/README.txt
|
||||
@${STAGE_ASSETS} -winserver-${WINPLAT_X86}-Debug \
|
||||
build/prefab/full/windows_x86_server/debug/dist
|
||||
build/prefab/full/windows_x86_server/debug
|
||||
|
||||
build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe: .efrocachemap
|
||||
@tools/pcommand efrocache_get $@
|
||||
|
||||
build/prefab/full/windows_%_server/debug/ballisticacore_server.py: \
|
||||
assets/src/server/ballisticacore_server.py tools/batools/pcommand.py
|
||||
@tools/pcommand stage_server_file debug $< $@
|
||||
|
||||
build/prefab/full/windows_%_server/debug/launch_ballisticacore_server.bat: \
|
||||
assets/src/server/launch_ballisticacore_server.bat tools/batools/pcommand.py
|
||||
@tools/pcommand stage_server_file debug $< $@
|
||||
|
||||
build/prefab/full/windows_%_server/debug/config_template.yaml: \
|
||||
assets/src/server/config_template.yaml \
|
||||
tools/batools/build.py \
|
||||
tools/batools/pcommand.py \
|
||||
tools/bacommon/servermanager.py
|
||||
@tools/pcommand stage_server_file debug $< $@
|
||||
|
||||
build/prefab/full/windows_%_server/debug/README.txt: \
|
||||
assets/src/server/README.txt
|
||||
@cp $< $@
|
||||
|
||||
# Windows server release:
|
||||
|
||||
RUN_PREFAB_WINDOWS_X86_SERVER_RELEASE = cd \
|
||||
@ -560,36 +469,13 @@ prefab-windows-x86-server-release: prefab-windows-x86-server-release-build
|
||||
|
||||
prefab-windows-x86-server-release-build: prereqs \
|
||||
assets-windows-${WINPLAT_X86} \
|
||||
build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe \
|
||||
build/prefab/full/windows_x86_server/release/launch_ballisticacore_server.bat \
|
||||
build/prefab/full/windows_x86_server/release/ballisticacore_server.py \
|
||||
build/prefab/full/windows_x86_server/release/config_template.yaml \
|
||||
build/prefab/full/windows_x86_server/release/README.txt
|
||||
build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe
|
||||
@${STAGE_ASSETS} -winserver-${WINPLAT_X86}-Release \
|
||||
build/prefab/full/windows_x86_server/release/dist
|
||||
build/prefab/full/windows_x86_server/release
|
||||
|
||||
build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe: .efrocachemap
|
||||
@tools/pcommand efrocache_get $@
|
||||
|
||||
build/prefab/full/windows_%_server/release/ballisticacore_server.py: \
|
||||
assets/src/server/ballisticacore_server.py tools/batools/pcommand.py
|
||||
@tools/pcommand stage_server_file release $< $@
|
||||
|
||||
build/prefab/full/windows_%_server/release/launch_ballisticacore_server.bat: \
|
||||
assets/src/server/launch_ballisticacore_server.bat tools/batools/pcommand.py
|
||||
@tools/pcommand stage_server_file release $< $@
|
||||
|
||||
build/prefab/full/windows_%_server/release/config_template.yaml: \
|
||||
assets/src/server/config_template.yaml \
|
||||
tools/batools/build.py \
|
||||
tools/batools/pcommand.py \
|
||||
tools/bacommon/servermanager.py
|
||||
@tools/pcommand stage_server_file release $< $@
|
||||
|
||||
build/prefab/full/windows_%_server/release/README.txt: \
|
||||
assets/src/server/README.txt
|
||||
@cp $< $@
|
||||
|
||||
# Tell make which of these targets don't represent files.
|
||||
.PHONY: prefab-debug prefab-release prefab-debug-build prefab-release-build \
|
||||
prefab-server-debug prefab-server-release prefab-server-debug-build \
|
||||
@ -608,7 +494,9 @@ build/prefab/full/windows_%_server/release/README.txt: \
|
||||
prefab-linux-x86-64-release-build prefab-linux-arm64-release-build \
|
||||
prefab-linux-x86-64-server-debug prefab-linux-arm64-server-debug \
|
||||
prefab-linux-x86-64-server-debug-build prefab-linux-arm64-server-debug-build \
|
||||
prefab-linux-x86-64-server-release prefab-linux-x86-64-server-release-build \
|
||||
prefab-linux-x86-64-server-release prefab-linux-arm64-server-release \
|
||||
prefab-linux-x86-64-server-release-build \
|
||||
prefab-linux-arm64-server-release-build \
|
||||
prefab-windows-x86-debug prefab-windows-x86-debug-build \
|
||||
prefab-windows-x86-release prefab-windows-x86-release-build \
|
||||
prefab-windows-x86-server-debug prefab-windows-x86-server-debug-build \
|
||||
@ -842,7 +730,7 @@ cmake-server: cmake-server-build
|
||||
|
||||
cmake-server-build: assets-cmake resources code
|
||||
@tools/pcommand cmake_prep_dir build/cmake/server-$(CM_BT_LC)
|
||||
@${STAGE_ASSETS} -cmakeserver build/cmake/server-$(CM_BT_LC)
|
||||
@${STAGE_ASSETS} -cmakeserver -${CM_BT_LC} build/cmake/server-$(CM_BT_LC)
|
||||
@cd build/cmake/server-$(CM_BT_LC) && test -f Makefile \
|
||||
|| cmake -DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) -DHEADLESS=true \
|
||||
../../../ballisticacore-cmake
|
||||
|
||||
@ -16,6 +16,7 @@ from efrotools import PYVER
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing import Optional, List
|
||||
from pathlib import Path
|
||||
|
||||
# Suffix for the pyc files we include in stagings.
|
||||
# We're using deterministic opt pyc files; see PEP 552.
|
||||
@ -33,6 +34,7 @@ class Config:
|
||||
# We always calc src relative to this script.
|
||||
self.src = self.projroot + '/assets/build'
|
||||
self.dst: Optional[str] = None
|
||||
self.serverdst: Optional[str] = None
|
||||
self.win_extras_src: Optional[str] = None
|
||||
self.win_platform: Optional[str] = None
|
||||
self.win_type: Optional[str] = None
|
||||
@ -104,12 +106,13 @@ class Config:
|
||||
self.win_platform = winplt
|
||||
self.win_type = wintype
|
||||
assert winempty == ''
|
||||
self.dst = args[1]
|
||||
self.tex_suffix = '.dds'
|
||||
|
||||
if wintype == 'win':
|
||||
pass
|
||||
self.dst = args[-1]
|
||||
elif wintype == 'winserver':
|
||||
self.dst = os.path.join(args[-1], 'dist')
|
||||
self.serverdst = args[-1]
|
||||
self.include_textures = False
|
||||
self.include_audio = False
|
||||
self.include_models = False
|
||||
@ -143,10 +146,20 @@ class Config:
|
||||
self.dst = args[1]
|
||||
self.tex_suffix = '.dds'
|
||||
elif '-cmakeserver' in args:
|
||||
self.dst = args[1]
|
||||
self.dst = os.path.join(args[-1], 'dist')
|
||||
self.serverdst = args[-1]
|
||||
self.include_textures = False
|
||||
self.include_audio = False
|
||||
self.include_models = False
|
||||
# Require either -debug or -release in args.
|
||||
if '-debug' in args:
|
||||
self.debug = True
|
||||
assert '-release' not in args
|
||||
elif '-release' in args:
|
||||
self.debug = False
|
||||
else:
|
||||
raise RuntimeError(
|
||||
"Expected either '-debug' or '-release' in args.")
|
||||
elif '-xcode-mac' in args:
|
||||
self.src = os.environ['SOURCE_ROOT'] + '/assets/build'
|
||||
self.dst = (os.environ['TARGET_BUILD_DIR'] + '/' +
|
||||
@ -314,35 +327,7 @@ def _sync_pylib(cfg: Config) -> None:
|
||||
_run(cmd)
|
||||
|
||||
|
||||
def main(projroot: str, args: Optional[List[str]] = None) -> None:
|
||||
"""Stage assets for a build."""
|
||||
|
||||
if args is None:
|
||||
args = sys.argv
|
||||
|
||||
cfg = Config(projroot)
|
||||
cfg.parse_args(args)
|
||||
|
||||
# Ok, now for every top level dir in src, come up with a nice single
|
||||
# command to sync the needed subset of it to dst.
|
||||
|
||||
# We can now use simple speedy timestamp based updates since
|
||||
# we no longer have to try to preserve timestamps to get .pyc files
|
||||
# to behave (hooray!)
|
||||
|
||||
# Do our stripped down pylib dir for platforms that use that.
|
||||
if cfg.include_pylib:
|
||||
_sync_pylib(cfg)
|
||||
else:
|
||||
if cfg.dst is not None and os.path.isdir(cfg.dst + '/pylib'):
|
||||
subprocess.run(['rm', '-rf', cfg.dst + '/pylib'], check=True)
|
||||
|
||||
# On windows we need to pull in some dlls and this and that
|
||||
# (we also include a non-stripped-down set of python libs).
|
||||
if cfg.win_extras_src is not None:
|
||||
_sync_windows_extras(cfg)
|
||||
|
||||
# Now standard common game data.
|
||||
def _sync_standard_game_data(cfg: Config) -> None:
|
||||
assert cfg.dst is not None
|
||||
_run('mkdir -p "' + cfg.dst + '/ba_data"')
|
||||
cmd = ('rsync --recursive --update --delete --delete-excluded'
|
||||
@ -374,15 +359,147 @@ def main(projroot: str, args: Optional[List[str]] = None) -> None:
|
||||
cfg.dst + '/ba_data/"')
|
||||
_run(cmd)
|
||||
|
||||
|
||||
def _sync_server_files(cfg: Config) -> None:
|
||||
assert cfg.serverdst is not None
|
||||
modeval = 'debug' if cfg.debug else 'release'
|
||||
stage_server_file(projroot=cfg.projroot,
|
||||
mode=modeval,
|
||||
infilename='assets/src/server/ballisticacore_server.py',
|
||||
outfilename=os.path.join(
|
||||
cfg.serverdst,
|
||||
'ballisticacore_server.py' if cfg.win_type
|
||||
is not None else 'ballisticacore_server'))
|
||||
stage_server_file(projroot=cfg.projroot,
|
||||
mode=modeval,
|
||||
infilename='assets/src/server/README.txt',
|
||||
outfilename=os.path.join(cfg.serverdst, 'README.txt'))
|
||||
stage_server_file(projroot=cfg.projroot,
|
||||
mode=modeval,
|
||||
infilename='assets/src/server/config_template.yaml',
|
||||
outfilename=os.path.join(cfg.serverdst,
|
||||
'config_template.yaml'))
|
||||
if cfg.win_type is not None:
|
||||
stage_server_file(
|
||||
projroot=cfg.projroot,
|
||||
mode=modeval,
|
||||
infilename='assets/src/server/launch_ballisticacore_server.bat',
|
||||
outfilename=os.path.join(cfg.serverdst,
|
||||
'launch_ballisticacore_server.bat'))
|
||||
|
||||
|
||||
def _write_if_changed(path: str,
|
||||
contents: str,
|
||||
make_executable: bool = False) -> None:
|
||||
changed: bool
|
||||
try:
|
||||
with open(path) as infile:
|
||||
existing = infile.read()
|
||||
changed = (contents != existing)
|
||||
except FileNotFoundError:
|
||||
changed = True
|
||||
if changed:
|
||||
with open(path, 'w') as outfile:
|
||||
outfile.write(contents)
|
||||
if make_executable:
|
||||
subprocess.run(['chmod', '+x', path], check=True)
|
||||
|
||||
|
||||
def stage_server_file(projroot: str, mode: str, infilename: str,
|
||||
outfilename: str) -> None:
|
||||
"""Stage files for the server environment with some filtering."""
|
||||
import batools.build
|
||||
from efrotools import replace_one
|
||||
if mode not in ('debug', 'release'):
|
||||
raise RuntimeError(f"Invalid server-file-staging mode '{mode}';"
|
||||
f" expected 'debug' or 'release'.")
|
||||
|
||||
print(f'Building server file: {os.path.basename(outfilename)}')
|
||||
|
||||
os.makedirs(os.path.dirname(outfilename), exist_ok=True)
|
||||
|
||||
basename = os.path.basename(infilename)
|
||||
if basename == 'config_template.yaml':
|
||||
# Inject all available config values into the config file.
|
||||
_write_if_changed(
|
||||
outfilename,
|
||||
batools.build.filter_server_config(str(projroot), infilename))
|
||||
|
||||
elif basename == 'ballisticacore_server.py':
|
||||
# Run Python in opt mode for release builds.
|
||||
with open(infilename) as infile:
|
||||
lines = infile.read().splitlines()
|
||||
if mode == 'release':
|
||||
lines[0] = replace_one(lines[0],
|
||||
f'#!/usr/bin/env python{PYVER}',
|
||||
f'#!/usr/bin/env -S python{PYVER} -O')
|
||||
_write_if_changed(outfilename,
|
||||
'\n'.join(lines) + '\n',
|
||||
make_executable=True)
|
||||
elif basename == 'README.txt':
|
||||
with open(infilename) as infile:
|
||||
readme = infile.read()
|
||||
_write_if_changed(outfilename, readme)
|
||||
elif basename == 'launch_ballisticacore_server.bat':
|
||||
# Run Python in opt mode for release builds.
|
||||
with open(infilename) as infile:
|
||||
lines = infile.read().splitlines()
|
||||
if mode == 'release':
|
||||
lines[1] = replace_one(
|
||||
lines[1], ':: Python interpreter.', ':: Python interpreter.'
|
||||
' (in opt mode so we use bundled .opt-1.pyc files)')
|
||||
lines[2] = replace_one(
|
||||
lines[2], 'dist\\\\python.exe ballisticacore_server.py',
|
||||
'dist\\\\python.exe -O ballisticacore_server.py')
|
||||
else:
|
||||
# In debug mode we use the bundled debug interpreter.
|
||||
lines[2] = replace_one(
|
||||
lines[2], 'dist\\\\python.exe ballisticacore_server.py',
|
||||
'dist\\\\python_d.exe ballisticacore_server.py')
|
||||
|
||||
with open(outfilename, 'w') as outfile:
|
||||
outfile.write('\n'.join(lines) + '\n')
|
||||
else:
|
||||
raise RuntimeError(f"Unknown server file for staging: '{basename}'.")
|
||||
|
||||
|
||||
def main(projroot: str, args: Optional[List[str]] = None) -> None:
|
||||
"""Stage assets for a build."""
|
||||
|
||||
if args is None:
|
||||
args = sys.argv
|
||||
|
||||
cfg = Config(projroot)
|
||||
cfg.parse_args(args)
|
||||
|
||||
# Ok, now for every top level dir in src, come up with a nice single
|
||||
# command to sync the needed subset of it to dst.
|
||||
|
||||
# We can now use simple speedy timestamp based updates since
|
||||
# we no longer have to try to preserve timestamps to get .pyc files
|
||||
# to behave (hooray!)
|
||||
|
||||
# Do our stripped down pylib dir for platforms that use that.
|
||||
if cfg.include_pylib:
|
||||
_sync_pylib(cfg)
|
||||
else:
|
||||
if cfg.dst is not None and os.path.isdir(cfg.dst + '/pylib'):
|
||||
subprocess.run(['rm', '-rf', cfg.dst + '/pylib'], check=True)
|
||||
|
||||
# Sync our server files if we're doing that.
|
||||
if cfg.serverdst is not None:
|
||||
_sync_server_files(cfg)
|
||||
|
||||
# On windows we need to pull in some dlls and this and that
|
||||
# (we also include a non-stripped-down set of python libs).
|
||||
if cfg.win_extras_src is not None:
|
||||
_sync_windows_extras(cfg)
|
||||
|
||||
# Standard stuff in ba_data
|
||||
_sync_standard_game_data(cfg)
|
||||
|
||||
# On Android we need to build a payload file so it knows
|
||||
# what to pull out of the apk.
|
||||
if cfg.include_payload_file:
|
||||
assert cfg.dst is not None
|
||||
_write_payload_file(cfg.dst, cfg.is_payload_full)
|
||||
|
||||
|
||||
# if __name__ == '__main__':
|
||||
# try:
|
||||
# main()
|
||||
# except CleanError as exc:
|
||||
# exc.pretty_print()
|
||||
# sys.exit(1)
|
||||
|
||||
@ -648,15 +648,12 @@ def _get_server_config_template_yaml(projroot: str) -> str:
|
||||
return '\n'.join(lines_out)
|
||||
|
||||
|
||||
def filter_server_config(projroot: str, infilepath: str,
|
||||
outfilepath: str) -> None:
|
||||
def filter_server_config(projroot: str, infilepath: str) -> str:
|
||||
"""Add commented-out config options to a server config."""
|
||||
with open(infilepath) as infile:
|
||||
cfg = infile.read()
|
||||
cfg = cfg.replace('#__CONFIG_TEMPLATE_VALUES__',
|
||||
_get_server_config_template_yaml(projroot))
|
||||
with open(outfilepath, 'w') as outfile:
|
||||
outfile.write(cfg)
|
||||
return cfg.replace('#__CONFIG_TEMPLATE_VALUES__',
|
||||
_get_server_config_template_yaml(projroot))
|
||||
|
||||
|
||||
def update_docs_md(check: bool) -> None:
|
||||
|
||||
@ -20,61 +20,14 @@ if TYPE_CHECKING:
|
||||
|
||||
def stage_server_file() -> None:
|
||||
"""Stage files for the server environment with some filtering."""
|
||||
import os
|
||||
import subprocess
|
||||
import batools.build
|
||||
from efro.error import CleanError
|
||||
from efrotools import replace_one
|
||||
from efrotools import PYVER
|
||||
import batools.assetstaging
|
||||
if len(sys.argv) != 5:
|
||||
raise CleanError('Expected 3 args (mode, infile, outfile).')
|
||||
mode, infilename, outfilename = sys.argv[2], sys.argv[3], sys.argv[4]
|
||||
if mode not in ('debug', 'release'):
|
||||
raise CleanError(f"Invalid mode '{mode}'; expected debug or release.")
|
||||
|
||||
print(f'Building server file: {os.path.basename(outfilename)}')
|
||||
|
||||
os.makedirs(os.path.dirname(outfilename), exist_ok=True)
|
||||
|
||||
basename = os.path.basename(infilename)
|
||||
if basename == 'config_template.yaml':
|
||||
# Inject all available config values into the config file.
|
||||
batools.build.filter_server_config(str(PROJROOT), infilename,
|
||||
batools.assetstaging.stage_server_file(str(PROJROOT), mode, infilename,
|
||||
outfilename)
|
||||
|
||||
elif basename == 'ballisticacore_server.py':
|
||||
# Run Python in opt mode for release builds.
|
||||
with open(infilename) as infile:
|
||||
lines = infile.read().splitlines()
|
||||
if mode == 'release':
|
||||
lines[0] = replace_one(lines[0],
|
||||
f'#!/usr/bin/env python{PYVER}',
|
||||
f'#!/usr/bin/env -S python{PYVER} -O')
|
||||
with open(outfilename, 'w') as outfile:
|
||||
outfile.write('\n'.join(lines) + '\n')
|
||||
subprocess.run(['chmod', '+x', outfilename], check=True)
|
||||
elif basename == 'launch_ballisticacore_server.bat':
|
||||
# Run Python in opt mode for release builds.
|
||||
with open(infilename) as infile:
|
||||
lines = infile.read().splitlines()
|
||||
if mode == 'release':
|
||||
lines[1] = replace_one(
|
||||
lines[1], ':: Python interpreter.', ':: Python interpreter.'
|
||||
' (in opt mode so we use bundled .opt-1.pyc files)')
|
||||
lines[2] = replace_one(
|
||||
lines[2], 'dist\\\\python.exe ballisticacore_server.py',
|
||||
'dist\\\\python.exe -O ballisticacore_server.py')
|
||||
else:
|
||||
# In debug mode we use the bundled debug interpreter.
|
||||
lines[2] = replace_one(
|
||||
lines[2], 'dist\\\\python.exe ballisticacore_server.py',
|
||||
'dist\\\\python_d.exe ballisticacore_server.py')
|
||||
|
||||
with open(outfilename, 'w') as outfile:
|
||||
outfile.write('\n'.join(lines) + '\n')
|
||||
else:
|
||||
raise CleanError(f"Unknown server file for staging: '{basename}'.")
|
||||
|
||||
|
||||
def py_examine() -> None:
|
||||
"""Run a python examination at a given point in a given file."""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user