mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-26 00:47:10 +08:00
added cmake-modular-server builds
This commit is contained in:
parent
6fce0eb734
commit
7ed0abb708
56
.efrocachemap
generated
56
.efrocachemap
generated
@ -4068,26 +4068,26 @@
|
||||
"build/assets/windows/Win32/ucrtbased.dll": "https://files.ballistica.net/cache/ba1/2d/ef/5335207d41b21b9823f6805997f1",
|
||||
"build/assets/windows/Win32/vc_redist.x86.exe": "https://files.ballistica.net/cache/ba1/b0/8a/55e2e77623fe657bea24f223a3ae",
|
||||
"build/assets/windows/Win32/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/86/5b/2af4d1e26a1a8073c89acb06e599",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/52/15/ab02c6459f5439f526e93d2b7f54",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/97/f4/5069754f3c14bc147cbf5a720a7a",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/d6/59/b2b8c3fd93cee8c42e8f0ad52b4e",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/92/fd/cdfb069952a518a5bf2e7cf3392b",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/35/74/92cc2e753dcec2a1b5686e356354",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/7d/87/ab64cdae54b714a12ccba26edd04",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/60/00/041955bb284b8ed8adfeda2dd58f",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/03/55/4003a3204340b5982ee2ccc9e4a1",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/fe/74/c853281985a80ff7697064aecc0e",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/32/24/52c5ebf4d681eceba318b9da7b9c",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/0a/cc/4742fe6cf5e8fd5164896e65b967",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/52/0a/fa2d0611dc0c009679fdb46bed31",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/2f/b6/f4e880dbd1d5d8fc65431f9faaf4",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/25/72/e88b3f07c7dc1e33abeb20504ecc",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/86/ec/36d71d58ab16db28a370f1756464",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/92/5f/d3aedaebca5fd7b6bf1733ece902",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/f6/4b/34f50badf8c0145555b3fb793921",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/c3/7a/27057ee8be4d3ce1be25e364ebcb",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/d5/8f/8b90bda67603753391a2c72cd539",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/db/1a/2516790f8fe7c5a794e5e552a0f3",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/6b/a1/5f560a97ab8641091343c6ee688b",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/50/dd/86cbb96aca3a339318b00574b2db",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/6b/b4/65070558df0a917c9a1aac8bb280",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/93/04/19410cb96b5c12fc2cd20dd9c099",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/36/69/25b4f3e931ff0add15a975383491",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/16/68/6011835e4db7927b26761847950b",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/11/bf/aa9df1fd5ae51e9b076a324d8e7a",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/8a/76/54da9b7ff4d79164d3f4dea2782b",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/4a/08/bf75de3244efe6fc342139a6da32",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/33/c7/d3534c1d605b5bcc4a541457cde9",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/0e/58/c7da77e4c0d031073e4db047e4f3",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/f5/be/f80777972954ebe6fd91b52a6533",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/e4/20/0f1e3a2e343e48dbe3c3ae8c6ab7",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/23/46/72f453ea380bd5f04957886c2b57",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/f8/e3/b7bf2bdd4fe4879e8f95bc56073c",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/b5/e6/451f3cc73b5b79d21b19c2416d61",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/b2/0e/778420dfd1a6f81ed457a94f8f1d",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/00/76/0f4dd3bbf7a98f00221307535b4f",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/4d/fe/1d4e9c927e74f900766cb3d3c55f",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/82/99/e0a873f37e95674f2151ea99bf3d",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "https://files.ballistica.net/cache/ba1/b3/a2/5da0c4dc65f469e4a476e0395eb5",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "https://files.ballistica.net/cache/ba1/a9/9a/adb83188f9c7d7b51dafd0f8b8a8",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "https://files.ballistica.net/cache/ba1/b3/a2/5da0c4dc65f469e4a476e0395eb5",
|
||||
@ -4104,14 +4104,14 @@
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "https://files.ballistica.net/cache/ba1/59/fe/a3e369f2db87a305641e74ae70ab",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "https://files.ballistica.net/cache/ba1/be/df/60063a6845e8654958f1a3e37867",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "https://files.ballistica.net/cache/ba1/59/fe/a3e369f2db87a305641e74ae70ab",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/d1/50/ee04ab770e6128a557e49c82615d",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/37/af/364afe42b7d12c55bff5cff70e92",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/20/45/857c24d456719039f97dc0926ff0",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/07/69/58c0df6421c215ed6a4087c9ff08",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/e0/03/38c940328f966108e8309c301f5c",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/e5/59/28ef0b5b254fa22891d8e2020447",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/3e/31/5640d04cea61f78e430415c6ab1e",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/13/80/e30666a9b6abeb6fdafe78d3b7d8",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/91/2f/362a643d543963de549d830fe604",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/2e/d4/67d6c0f9b372eb5cd92c9def6fc8",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/68/8b/d6049425f1069d256abdaf90004c",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/3e/82/f70e75696765ac05875cb5dd778c",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/38/ee/56658557aa2ecabd0d30eb01b68e",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/6b/4c/568766d02bbca174752488850737",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/3e/5b/1aa2252706188de69075eb7b3656",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/ab/a7/21bc5acc8a823bd7c7ec940e97bc",
|
||||
"src/assets/ba_data/python/babase/_mgen/__init__.py": "https://files.ballistica.net/cache/ba1/f8/85/fed7f2ed98ff2ba271f9dbe3391c",
|
||||
"src/assets/ba_data/python/babase/_mgen/enums.py": "https://files.ballistica.net/cache/ba1/f8/cd/3af311ac63147882590123b78318",
|
||||
"src/ballistica/base/mgen/pyembed/binding_base.inc": "https://files.ballistica.net/cache/ba1/ee/dd/ad968b176000e31c65be6206a2bc",
|
||||
|
||||
1
.idea/dictionaries/ericf.xml
generated
1
.idea/dictionaries/ericf.xml
generated
@ -527,6 +527,7 @@
|
||||
<w>cmakelist</w>
|
||||
<w>cmakelists</w>
|
||||
<w>cmakemodular</w>
|
||||
<w>cmakemodularserver</w>
|
||||
<w>cmakeserver</w>
|
||||
<w>cmath</w>
|
||||
<w>cmathmodule</w>
|
||||
|
||||
36
CHANGELOG.md
36
CHANGELOG.md
@ -5,26 +5,27 @@
|
||||
by a standard Python interpreter. This new build style is referred to as
|
||||
'modular'. The traditional form of the app, where we bootstrap Python
|
||||
ourselves inside a standalone binary, is called 'monolithic'. To build and run
|
||||
Ballistica in modular form, you can do `make cmake-modular`. This should make
|
||||
it easier to use certain things like Python debuggers with Ballistica. While I
|
||||
expect most builds of the game to remain monolithic, this may become the
|
||||
default for certain situations such as server builds or possibly Linux builds
|
||||
if it seems beneficial. We'll see. Modular mode should work on Linux and Mac
|
||||
currently; other platforms remain monolithic-only for now.
|
||||
Ballistica in modular form, you can do `make cmake-modular` or `make
|
||||
cmake-modular-server`. This should make it easier to use certain things like
|
||||
Python debuggers with Ballistica. While I expect most builds of the game to
|
||||
remain monolithic, this may become the default for certain situations such as
|
||||
server builds or possibly Linux builds if it seems beneficial. We'll see.
|
||||
Modular mode should work on Linux and Mac currently; other platforms remain
|
||||
monolithic-only for now.
|
||||
- Changed builds such as `cmake` and `cmake-server` to be more like the new
|
||||
`cmake-monolithic` setup; there is now a `staged` dir that built binaries are
|
||||
symlinked into instead of just dumping a `ba_data` into the cmake build dir.
|
||||
This keeps things a bit cleaner with fewer build-related files interspersed
|
||||
with the stuff that Ballistica expects to be there at runtime. This also
|
||||
allows an elegant `-dist` flag to be used with the staging command to copy
|
||||
files instead of symlinking them.
|
||||
`cmake-monolithic-*` builds; there is now a `staged` dir that built binaries
|
||||
are symlinked into instead of just dumping a `ba_data` into the cmake build
|
||||
dir. This keeps things a bit cleaner with fewer build-related files
|
||||
interspersed with the stuff that Ballistica expects to be there at runtime.
|
||||
This also allows an elegant `-dist` flag to be used with the staging command
|
||||
to copy files instead of symlinking them.
|
||||
- Changed path wrangling a bit in baenv.py. All ballistica Python paths
|
||||
(including python-site-packages) are now placed before any other existing
|
||||
(including python-site-packages) are now placed *before* any other existing
|
||||
Python paths. This should provide a more consistent environment and means
|
||||
Ballistica will always use its own version of things like yaml or certifi or
|
||||
typing_extensions instead of one the user has installed via pip. Holler if you
|
||||
run into any problems because of this and we can make an option to use the old
|
||||
behavior where Ballistica's app and site paths get placed at the end.
|
||||
typing_extensions instead of ones the user has installed via pip. Holler if
|
||||
you run into any problems because of this and we can make an option to use the
|
||||
old behavior where Ballistica's app and site paths get placed at the end.
|
||||
- It is now possible to manually run the app loop even on monolithic builds;
|
||||
just do `PYTHONPATH=ba_data/python ./ballisticacore -c "import baenv;
|
||||
baenv.configure(); import babase; babase.app.run()"`. This is basically the
|
||||
@ -43,7 +44,8 @@
|
||||
than simply asset files so this is a more accurate name.
|
||||
- Added `babase.fatal_error()`. Mod code should generally never use this, but it
|
||||
can be useful for core engine code to directly and clearly point out problems
|
||||
that cannot be recovered from.
|
||||
that cannot be recovered from (Exceptions in such cases can tend to be
|
||||
'handled' which leads to a broken or crashing app).
|
||||
|
||||
### 1.7.23 (build 21178, api 8, 2023-07-19)
|
||||
|
||||
|
||||
29
Makefile
29
Makefile
@ -1088,14 +1088,39 @@ cmake-modular-binary: meta
|
||||
cmake-modular-clean:
|
||||
rm -rf build/cmake/modular-$(CM_BT_LC)
|
||||
|
||||
cmake-modular-server: cmake-modular-server-build
|
||||
@cd build/cmake/modular-server-$(CM_BT_LC)/staged && ./ballisticakit_server
|
||||
|
||||
cmake-modular-server-build: assets-server meta cmake-modular-server-binary
|
||||
@$(STAGE_BUILD) -cmakemodularserver -$(CM_BT_LC) \
|
||||
-builddir build/cmake/modular-server-$(CM_BT_LC) \
|
||||
build/cmake/modular-server-$(CM_BT_LC)/staged
|
||||
@tools/pcommand echo BLD \
|
||||
Server build complete: BLU build/cmake/modular-server-$(CM_BT_LC)/staged
|
||||
|
||||
cmake-modular-server-binary: meta
|
||||
@tools/pcommand cmake_prep_dir build/cmake/modular-server-$(CM_BT_LC)
|
||||
@cd build/cmake/modular-server-$(CM_BT_LC) && test -f Makefile \
|
||||
|| cmake -DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) -DHEADLESS=true \
|
||||
$(shell pwd)/ballisticakit-cmake
|
||||
@tools/pcommand update_cmake_prefab_lib server $(CM_BT_LC) \
|
||||
build/cmake/modular-server-$(CM_BT_LC)
|
||||
@cd build/cmake/modular-server-$(CM_BT_LC) && $(MAKE) \
|
||||
-j$(CPUS) ballisticakitso
|
||||
|
||||
cmake-modular-server-clean:
|
||||
rm -rf build/cmake/modular-server-$(CM_BT_LC)
|
||||
|
||||
# Stage assets for building/running within CLion.
|
||||
clion-staging: assets-cmake resources meta
|
||||
$(STAGE_BUILD) -cmake -debug build/clion_debug
|
||||
$(STAGE_BUILD) -cmake -release build/clion_release
|
||||
|
||||
# Tell make which of these targets don't represent files.
|
||||
.PHONY: cmake cmake-build cmake-clean cmake-server cmake-server-build \
|
||||
cmake-server-clean
|
||||
.PHONY: cmake cmake-build cmake-clean cmake-server cmake-server-build \
|
||||
cmake-server-clean cmake-modular-build cmake-modular cmake-modular-binary \
|
||||
cmake-modular-clean cmake-modular-server cmake-modular-server-build \
|
||||
cmake-modular-server-binary cmake-modular-server-clean clion-staging
|
||||
|
||||
|
||||
################################################################################
|
||||
|
||||
1
ballisticakit-cmake/.idea/dictionaries/ericf.xml
generated
1
ballisticakit-cmake/.idea/dictionaries/ericf.xml
generated
@ -329,6 +329,7 @@
|
||||
<w>cloudtoba</w>
|
||||
<w>cmakelist</w>
|
||||
<w>cmakemodular</w>
|
||||
<w>cmakemodularserver</w>
|
||||
<w>cmath</w>
|
||||
<w>cmds</w>
|
||||
<w>cmdspath</w>
|
||||
|
||||
@ -693,9 +693,10 @@ def cmake_prep_dir(dirname: str, verbose: bool = False) -> None:
|
||||
current_value: str
|
||||
|
||||
# Start with an entry we can explicitly increment if we want to blow
|
||||
# away all cmake builds everywhere (for if we change something in
|
||||
# the CMakeList that cmake doesn't properly handle itself, etc.).
|
||||
entries: list[Entry] = [Entry('explicit cmake rebuild', '1')]
|
||||
# away all cmake builds everywhere (to keep things clean if we
|
||||
# rename or move something in the build dir or if we change
|
||||
# something cmake doesn't properly handle without a fresh start).
|
||||
entries: list[Entry] = [Entry('explicit cmake rebuild', '2')]
|
||||
|
||||
# Start fresh if cmake version changes.
|
||||
cmake_ver_output = subprocess.run(
|
||||
|
||||
@ -894,6 +894,14 @@ class SpinoffContext:
|
||||
'',
|
||||
label=src_path,
|
||||
)
|
||||
text = replace_exact(
|
||||
text,
|
||||
'\t@tools/pcommand update_cmake_prefab_lib server'
|
||||
' $(CM_BT_LC) \\\n'
|
||||
' build/cmake/modular-server-$(CM_BT_LC)\n',
|
||||
'',
|
||||
label=src_path,
|
||||
)
|
||||
|
||||
return self.default_filter_text(text)
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ class AssetStager:
|
||||
self.win_platform: str | None = None
|
||||
self.win_type: str | None = None
|
||||
self.include_python_dylib = False
|
||||
self.include_shell_launcher = False
|
||||
self.include_shell_executable = False
|
||||
self.include_audio = True
|
||||
self.include_meshes = True
|
||||
self.include_collision_meshes = True
|
||||
@ -57,8 +57,8 @@ class AssetStager:
|
||||
self.include_fonts = True
|
||||
self.include_json = True
|
||||
self.include_pylib = False
|
||||
self.include_monolithic_binary = False
|
||||
self.monolithic_binary_name: str | None = None
|
||||
self.include_binary_executable = False
|
||||
self.executable_name: str | None = None
|
||||
self.pylib_src_name: str | None = None
|
||||
self.include_payload_file = False
|
||||
self.tex_suffix: str | None = None
|
||||
@ -105,6 +105,9 @@ class AssetStager:
|
||||
|
||||
def _parse_args(self, args: list[str]) -> None:
|
||||
"""Parse args and apply to ourself."""
|
||||
# pylint: disable=too-many-branches
|
||||
# pylint: disable=too-many-statements
|
||||
|
||||
if len(args) < 1:
|
||||
raise RuntimeError('Expected at least one argument.')
|
||||
platform_arg = args[0]
|
||||
@ -144,13 +147,14 @@ class AssetStager:
|
||||
self.dst = args[-1]
|
||||
self.tex_suffix = '.dds'
|
||||
# Link/copy in a binary *if* builddir is provided.
|
||||
self.include_monolithic_binary = self.builddir is not None
|
||||
self.monolithic_binary_name = 'ballisticakit'
|
||||
self.include_binary_executable = self.builddir is not None
|
||||
self.executable_name = 'ballisticakit'
|
||||
elif platform_arg == '-cmakemodular':
|
||||
self.dst = args[-1]
|
||||
self.tex_suffix = '.dds'
|
||||
self.include_python_dylib = True
|
||||
self.include_shell_launcher = True
|
||||
self.include_shell_executable = True
|
||||
self.executable_name = 'ballisticakit'
|
||||
elif platform_arg == '-cmakeserver':
|
||||
self.dst = os.path.join(args[-1], 'dist')
|
||||
self.serverdst = args[-1]
|
||||
@ -158,8 +162,17 @@ class AssetStager:
|
||||
self.include_audio = False
|
||||
self.include_meshes = False
|
||||
# Link/copy in a binary *if* builddir is provided.
|
||||
self.include_monolithic_binary = self.builddir is not None
|
||||
self.monolithic_binary_name = 'ballisticakit_headless'
|
||||
self.include_binary_executable = self.builddir is not None
|
||||
self.executable_name = 'ballisticakit_headless'
|
||||
elif platform_arg == '-cmakemodularserver':
|
||||
self.dst = os.path.join(args[-1], 'dist')
|
||||
self.serverdst = args[-1]
|
||||
self.include_textures = False
|
||||
self.include_audio = False
|
||||
self.include_meshes = False
|
||||
self.include_python_dylib = True
|
||||
self.include_shell_executable = True
|
||||
self.executable_name = 'ballisticakit_headless'
|
||||
|
||||
elif platform_arg == '-xcode-mac':
|
||||
self.src = os.environ['SOURCE_ROOT'] + '/build/assets'
|
||||
@ -398,6 +411,7 @@ class AssetStager:
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
def _sync_ba_data(self) -> None:
|
||||
# pylint: disable=too-many-branches
|
||||
assert self.dst is not None
|
||||
os.makedirs(f'{self.dst}/ba_data', exist_ok=True)
|
||||
cmd: list[str] = [
|
||||
@ -417,14 +431,17 @@ class AssetStager:
|
||||
cmd.append('--delete-excluded')
|
||||
else:
|
||||
# Shouldn't be trying to do sparse stuff.
|
||||
assert (
|
||||
self.include_textures
|
||||
and self.include_audio
|
||||
and self.include_fonts
|
||||
and self.include_json
|
||||
and self.include_meshes
|
||||
and self.include_collision_meshes
|
||||
)
|
||||
if self.serverdst is not None:
|
||||
assert self.include_json and self.include_collision_meshes
|
||||
else:
|
||||
assert (
|
||||
self.include_textures
|
||||
and self.include_audio
|
||||
and self.include_fonts
|
||||
and self.include_json
|
||||
and self.include_meshes
|
||||
and self.include_collision_meshes
|
||||
)
|
||||
# Keep rsync from trying to prune this as an 'empty' dir.
|
||||
cmd += ['--exclude', '/python-dylib']
|
||||
|
||||
@ -468,17 +485,20 @@ class AssetStager:
|
||||
]
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
if self.include_monolithic_binary:
|
||||
self._sync_monolithic_binary()
|
||||
if self.include_binary_executable:
|
||||
self._sync_binary_executable()
|
||||
|
||||
if self.include_python_dylib:
|
||||
self._sync_python_dylib()
|
||||
|
||||
if self.include_shell_launcher:
|
||||
self._sync_shell_launcher()
|
||||
if self.include_shell_executable:
|
||||
self._sync_shell_executable()
|
||||
|
||||
def _sync_shell_launcher(self) -> None:
|
||||
path = f'{self.dst}/ballisticakit'
|
||||
def _sync_shell_executable(self) -> None:
|
||||
if self.executable_name is None:
|
||||
raise RuntimeError('Executable name must be set for this staging.')
|
||||
|
||||
path = f'{self.dst}/{self.executable_name}'
|
||||
|
||||
# For now this is so simple we just do an ad-hoc write each time;
|
||||
# not worth setting up files and syncs.
|
||||
@ -503,10 +523,10 @@ class AssetStager:
|
||||
f'{optstuff}'
|
||||
'\n'
|
||||
'# Run the app, forwarding along all arguments.\n'
|
||||
'# Basically this does:\n'
|
||||
'# Basically this will do:\n'
|
||||
'# import baenv; baenv.configure();'
|
||||
' import babase; babase.app.run().\n'
|
||||
'python3.11 ba_data/python/baenv.py $@\n'
|
||||
'exec python3.11 ba_data/python/baenv.py $@\n'
|
||||
)
|
||||
subprocess.run(['chmod', '+x', path], check=True)
|
||||
|
||||
@ -524,13 +544,13 @@ class AssetStager:
|
||||
relpath = os.path.relpath(srcpath, os.path.dirname(dstpath))
|
||||
subprocess.run(['ln', '-sf', relpath, dstpath], check=True)
|
||||
|
||||
def _sync_monolithic_binary(self) -> None:
|
||||
def _sync_binary_executable(self) -> None:
|
||||
if self.builddir is None:
|
||||
raise RuntimeError("This staging type requires '-builddir' arg.")
|
||||
if self.monolithic_binary_name is None:
|
||||
if self.executable_name is None:
|
||||
raise RuntimeError('monolithic-binary-name is not set.')
|
||||
|
||||
mbname = self.monolithic_binary_name
|
||||
mbname = self.executable_name
|
||||
self._copy_or_symlink_file(
|
||||
f'{self.builddir}/{mbname}', f'{self.dst}/{mbname}'
|
||||
)
|
||||
@ -544,8 +564,11 @@ class AssetStager:
|
||||
|
||||
dylib_staging_dir = f'{self.dst}/ba_data/python-dylib'
|
||||
|
||||
if self.executable_name is None:
|
||||
raise RuntimeError('executable_name is not set.')
|
||||
|
||||
# Name of our single shared library containing all our stuff.
|
||||
soname = 'ballisticakit.so'
|
||||
soname = f'{self.executable_name}.so'
|
||||
|
||||
# All featuresets in the project with binary modules.
|
||||
bmodfeaturesets = {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user