Cleaned up prefab builds

This commit is contained in:
Eric Froemling 2020-04-22 00:45:13 -07:00
parent fc2ece3b29
commit 62e8549286
4 changed files with 131 additions and 57 deletions

116
Makefile
View File

@ -114,12 +114,12 @@ clean-list:
# Prebuilt binaries for various platforms. # Prebuilt binaries for various platforms.
# Assemble/run a debug build for this platform. # Assemble/run a debug build for this platform.
prefab-debug: prefab-debug: prefab-debug-build
@tools/snippets make_prefab debug ${${shell tools/snippets prefab_run_var debug}}
# Assemble/run a release build for this platform. # Assemble/run a release build for this platform.
prefab-release: prefab-release: prefab-release-build
@tools/snippets make_prefab release ${${shell tools/snippets prefab_run_var release}}
# Assemble a debug build for this platform. # Assemble a debug build for this platform.
prefab-debug-build: prefab-debug-build:
@ -130,8 +130,8 @@ prefab-release-build:
@tools/snippets make_prefab release-build @tools/snippets make_prefab release-build
# Assemble/run a server debug build for this platform. # Assemble/run a server debug build for this platform.
prefab-server-debug: prefab-server-debug: prefab-server-debug-build
@tools/snippets make_prefab server-debug ${${shell tools/snippets prefab_run_var server-debug}}
# Assemble/run a server release build for this platform. # Assemble/run a server release build for this platform.
prefab-server-release: prefab-server-release:
@ -147,8 +147,11 @@ prefab-server-release-build:
# Specific platform prefab targets: # Specific platform prefab targets:
RUN_PREFAB_MAC_DEBUG = cd build/prefab/mac/debug && ./ballisticacore
prefab-mac-debug: prefab-mac-debug-build prefab-mac-debug: prefab-mac-debug-build
@cd build/prefab/mac/debug && ./ballisticacore @tools/snippets ensure_prefab_platform mac
@${RUN_PREFAB_MAC_DEBUG}
prefab-mac-debug-build: prereqs assets-cmake \ prefab-mac-debug-build: prereqs assets-cmake \
build/prefab/mac/debug/ballisticacore build/prefab/mac/debug/ballisticacore
@ -157,8 +160,11 @@ prefab-mac-debug-build: prereqs assets-cmake \
build/prefab/mac/debug/ballisticacore: .efrocachemap build/prefab/mac/debug/ballisticacore: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
RUN_PREFAB_MAC_RELEASE = cd build/prefab/mac/release && ./ballisticacore
prefab-mac-release: prefab-mac-release-build prefab-mac-release: prefab-mac-release-build
@cd build/prefab/mac/release && ./ballisticacore @tools/snippets ensure_prefab_platform mac
@${RUN_PREFAB_MAC_RELEASE}
prefab-mac-release-build: prereqs assets-cmake \ prefab-mac-release-build: prereqs assets-cmake \
build/prefab/mac/release/ballisticacore build/prefab/mac/release/ballisticacore
@ -167,8 +173,12 @@ prefab-mac-release-build: prereqs assets-cmake \
build/prefab/mac/release/ballisticacore: .efrocachemap build/prefab/mac/release/ballisticacore: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
RUN_PREFAB_MAC_SERVER_DEBUG = cd build/prefab/mac-server/debug \
&& ./ballisticacore_server
prefab-mac-server-debug: prefab-mac-server-debug-build prefab-mac-server-debug: prefab-mac-server-debug-build
@cd build/prefab/mac-server/debug && ./ballisticacore_server @tools/snippets ensure_prefab_platform mac
@${RUN_PREFAB_MAC_SERVER_DEBUG}
prefab-mac-server-debug-build: prereqs assets-cmake \ prefab-mac-server-debug-build: prereqs assets-cmake \
build/prefab/mac-server/debug/dist/ballisticacore_headless \ build/prefab/mac-server/debug/dist/ballisticacore_headless \
@ -178,17 +188,21 @@ prefab-mac-server-debug-build: prereqs assets-cmake \
build/prefab/mac-server/debug/ballisticacore_server: \ build/prefab/mac-server/debug/ballisticacore_server: \
assets/src/server/server.py assets/src/server/server.py
cp $< $@ @cp $< $@
build/prefab/mac-server/debug/config_template.yaml: \ build/prefab/mac-server/debug/config_template.yaml: \
assets/src/server/config.yaml assets/src/server/config.yaml
cp $< $@ @cp $< $@
build/prefab/mac-server/debug/dist/ballisticacore_headless: .efrocachemap build/prefab/mac-server/debug/dist/ballisticacore_headless: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
RUN_PREFAB_MAC_SERVER_RELEASE = cd build/prefab/mac-server/release \
&& ./ballisticacore_server
prefab-mac-server-release: prefab-mac-server-release-build prefab-mac-server-release: prefab-mac-server-release-build
@cd build/prefab/mac-server/release && ./ballisticacore_server @tools/snippets ensure_prefab_platform mac
@${RUN_PREFAB_MAC_SERVER_RELEASE}
prefab-mac-server-release-build: prereqs assets-cmake \ prefab-mac-server-release-build: prereqs assets-cmake \
build/prefab/mac-server/release/dist/ballisticacore_headless \ build/prefab/mac-server/release/dist/ballisticacore_headless \
@ -198,17 +212,20 @@ prefab-mac-server-release-build: prereqs assets-cmake \
build/prefab/mac-server/release/ballisticacore_server: \ build/prefab/mac-server/release/ballisticacore_server: \
assets/src/server/server.py assets/src/server/server.py
cp $< $@ @cp $< $@
build/prefab/mac-server/release/config_template.yaml: \ build/prefab/mac-server/release/config_template.yaml: \
assets/src/server/config.yaml assets/src/server/config.yaml
cp $< $@ @cp $< $@
build/prefab/mac-server/release/dist/ballisticacore_headless: .efrocachemap build/prefab/mac-server/release/dist/ballisticacore_headless: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
RUN_PREFAB_LINUX_DEBUG = cd build/prefab/linux/debug && ./ballisticacore
prefab-linux-debug: prefab-linux-debug-build prefab-linux-debug: prefab-linux-debug-build
@cd build/prefab/linux/debug && ./ballisticacore @tools/snippets ensure_prefab_platform linux
@${RUN_PREFAB_LINUX_DEBUG}
prefab-linux-debug-build: prereqs assets-cmake \ prefab-linux-debug-build: prereqs assets-cmake \
build/prefab/linux/debug/ballisticacore build/prefab/linux/debug/ballisticacore
@ -217,8 +234,11 @@ prefab-linux-debug-build: prereqs assets-cmake \
build/prefab/linux/debug/ballisticacore: .efrocachemap build/prefab/linux/debug/ballisticacore: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
RUN_PREFAB_LINUX_RELEASE = cd build/prefab/linux/release && ./ballisticacore
prefab-linux-release: prefab-linux-release-build prefab-linux-release: prefab-linux-release-build
@cd build/prefab/linux/release && ./ballisticacore @tools/snippets ensure_prefab_platform linux
@${RUN_PREFAB_LINUX_RELEASE}
prefab-linux-release-build: prereqs assets-cmake \ prefab-linux-release-build: prereqs assets-cmake \
build/prefab/linux/release/ballisticacore build/prefab/linux/release/ballisticacore
@ -227,8 +247,12 @@ prefab-linux-release-build: prereqs assets-cmake \
build/prefab/linux/release/ballisticacore: .efrocachemap build/prefab/linux/release/ballisticacore: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
RUN_PREFAB_LINUX_SERVER_DEBUG = cd build/prefab/linux-server/debug \
&& ./ballisticacore_server
prefab-linux-server-debug: prefab-linux-server-debug-build prefab-linux-server-debug: prefab-linux-server-debug-build
@cd build/prefab/linux-server/debug && ./ballisticacore_server @tools/snippets ensure_prefab_platform linux
@${RUN_PREFAB_LINUX_SERVER_DEBUG}
prefab-linux-server-debug-build: prereqs assets-cmake \ prefab-linux-server-debug-build: prereqs assets-cmake \
build/prefab/linux-server/debug/dist/ballisticacore_headless \ build/prefab/linux-server/debug/dist/ballisticacore_headless \
@ -238,17 +262,21 @@ prefab-linux-server-debug-build: prereqs assets-cmake \
build/prefab/linux-server/debug/ballisticacore_server: \ build/prefab/linux-server/debug/ballisticacore_server: \
assets/src/server/server.py assets/src/server/server.py
cp $< $@ @cp $< $@
build/prefab/linux-server/debug/config_template.yaml: \ build/prefab/linux-server/debug/config_template.yaml: \
assets/src/server/config.yaml assets/src/server/config.yaml
cp $< $@ @cp $< $@
build/prefab/linux-server/debug/dist/ballisticacore_headless: .efrocachemap build/prefab/linux-server/debug/dist/ballisticacore_headless: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
RUN_PREFAB_LINUX_SERVER_RELEASE = cd build/prefab/linux-server/release \
&& ./ballisticacore_server
prefab-linux-server-release: prefab-linux-server-release-build prefab-linux-server-release: prefab-linux-server-release-build
@cd build/prefab/linux-server/release && ./ballisticacore_server @tools/snippets ensure_prefab_platform linux
@${RUN_PREFAB_LINUX_SERVER_RELEASE}
prefab-linux-server-release-build: prereqs assets-cmake \ prefab-linux-server-release-build: prereqs assets-cmake \
build/prefab/linux-server/release/dist/ballisticacore_headless \ build/prefab/linux-server/release/dist/ballisticacore_headless \
@ -258,19 +286,22 @@ prefab-linux-server-release-build: prereqs assets-cmake \
build/prefab/linux-server/release/ballisticacore_server: \ build/prefab/linux-server/release/ballisticacore_server: \
assets/src/server/server.py assets/src/server/server.py
cp $< $@ @cp $< $@
build/prefab/linux-server/release/config_template.yaml: \ build/prefab/linux-server/release/config_template.yaml: \
assets/src/server/config.yaml assets/src/server/config.yaml
cp $< $@ @cp $< $@
build/prefab/linux-server/release/dist/ballisticacore_headless: .efrocachemap build/prefab/linux-server/release/dist/ballisticacore_headless: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
PREFAB_WINDOWS_PLATFORM = x64 PREFAB_WINDOWS_PLATFORM = x64
RUN_PREFAB_WINDOWS_DEBUG = cd build/prefab/windows/debug && ./BallisticaCore.exe
prefab-windows-debug: prefab-windows-debug-build prefab-windows-debug: prefab-windows-debug-build
build/prefab/windows/debug/BallisticaCore.exe @tools/snippets ensure_prefab_platform windows
@{RUN_PREFAB_WINDOWS_DEBUG}
prefab-windows-debug-build: prereqs assets-windows-${PREFAB_WINDOWS_PLATFORM} \ prefab-windows-debug-build: prereqs assets-windows-${PREFAB_WINDOWS_PLATFORM} \
build/prefab/windows/debug/BallisticaCore.exe build/prefab/windows/debug/BallisticaCore.exe
@ -279,8 +310,12 @@ prefab-windows-debug-build: prereqs assets-windows-${PREFAB_WINDOWS_PLATFORM} \
build/prefab/windows/debug/BallisticaCore.exe: .efrocachemap build/prefab/windows/debug/BallisticaCore.exe: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
RUN_PREFAB_WINDOWS_RELEASE = cd build/prefab/windows/release \
&& ./BallisticaCore.exe
prefab-windows-release: prefab-windows-release-build prefab-windows-release: prefab-windows-release-build
build/prefab/windows/release/BallisticaCore.exe @tools/snippets ensure_prefab_platform windows
@{RUN_PREFAB_WINDOWS_RELEASE}
prefab-windows-release-build: prereqs \ prefab-windows-release-build: prereqs \
assets-windows-${PREFAB_WINDOWS_PLATFORM} \ assets-windows-${PREFAB_WINDOWS_PLATFORM} \
@ -290,10 +325,13 @@ prefab-windows-release-build: prereqs \
build/prefab/windows/release/BallisticaCore.exe: .efrocachemap build/prefab/windows/release/BallisticaCore.exe: .efrocachemap
@tools/snippets efrocache_get $@ @tools/snippets efrocache_get $@
prefab-windows-server-debug: prefab-windows-server-debug-build RUN_PREFAB_WINDOWS_SERVER_DEBUG = cd build/prefab/windows-server/debug \
cd build/prefab/windows-server/debug \
&& dist/python.exe ballisticacore_server.py && dist/python.exe ballisticacore_server.py
prefab-windows-server-debug: prefab-windows-server-debug-build
@tools/snippets ensure_prefab_platform windows
@{RUN_PREFAB_WINDOWS_SERVER_DEBUG}
prefab-windows-server-debug-build: prereqs \ prefab-windows-server-debug-build: prereqs \
assets-windows-${PREFAB_WINDOWS_PLATFORM} \ assets-windows-${PREFAB_WINDOWS_PLATFORM} \
build/prefab/windows-server/debug/dist/ballisticacore_headless.exe \ build/prefab/windows-server/debug/dist/ballisticacore_headless.exe \
@ -308,19 +346,22 @@ build/prefab/windows-server/debug/dist/ballisticacore_headless.exe: .efrocachema
build/prefab/windows-server/debug/ballisticacore_server.py: \ build/prefab/windows-server/debug/ballisticacore_server.py: \
assets/src/server/server.py assets/src/server/server.py
cp $< $@ @cp $< $@
build/prefab/windows-server/debug/launch_ballisticacore_server.bat: \ build/prefab/windows-server/debug/launch_ballisticacore_server.bat: \
assets/src/server/server.bat assets/src/server/server.bat
cp $< $@ @cp $< $@
build/prefab/windows-server/debug/config_template.yaml: \ build/prefab/windows-server/debug/config_template.yaml: \
assets/src/server/config.yaml assets/src/server/config.yaml
cp $< $@ @cp $< $@
RUN_PREFAB_WINDOWS_SERVER_RELEASE = cd build/prefab/windows-server/release \
&& dist/python.exe ballisticacore_server.py
prefab-windows-server-release: prefab-windows-server-release-build prefab-windows-server-release: prefab-windows-server-release-build
cd build/prefab/windows-server/release \ @tools/snippets ensure_prefab_platform windows
&& dist/python.exe ballisticacore_server.py @{RUN_PREFAB_WINDOWS_SERVER_RELEASE}
prefab-windows-server-release-build: prereqs \ prefab-windows-server-release-build: prereqs \
assets-windows-${PREFAB_WINDOWS_PLATFORM} \ assets-windows-${PREFAB_WINDOWS_PLATFORM} \
@ -336,15 +377,18 @@ build/prefab/windows-server/release/dist/ballisticacore_headless.exe: .efrocache
build/prefab/windows-server/release/ballisticacore_server.py: \ build/prefab/windows-server/release/ballisticacore_server.py: \
assets/src/server/server.py assets/src/server/server.py
cp $< $@ @cp $< $@
build/prefab/windows-server/release/launch_ballisticacore_server.bat: \ build/prefab/windows-server/release/launch_ballisticacore_server.bat: \
assets/src/server/server.bat assets/src/server/server.bat
cp $< $@ @cp $< $@
build/prefab/windows-server/release/config_template.yaml: \ build/prefab/windows-server/release/config_template.yaml: \
assets/src/server/config.yaml assets/src/server/config.yaml
cp $< $@ @cp $< $@
prefab-clean:
rm -rf build/prefab
# Tell make which of these targets don't represent files. # Tell make which of these targets don't represent files.
.PHONY: prefab-debug prefab-debug-build prefab-release prefab-release-build \ .PHONY: prefab-debug prefab-debug-build prefab-release prefab-release-build \
@ -359,7 +403,7 @@ build/prefab/windows-server/release/config_template.yaml: \
prefab-windows-debug-build prefab-windows-release \ prefab-windows-debug-build prefab-windows-release \
prefab-windows-release-build prefab-windows-server-debug \ prefab-windows-release-build prefab-windows-server-debug \
prefab-windows-server-debug-build prefab-windows-server-release \ prefab-windows-server-debug-build prefab-windows-server-release \
prefab-windows-server-release-build prefab-windows-server-release-build prefab-clean
################################################################################ ################################################################################
@ -505,7 +549,7 @@ test: prereqs
# Run tests with any caching disabled. # Run tests with any caching disabled.
test-full: test test-full: test
# Iterating on individual tests with extra debug output enabled. # Iterate on individual tests with extra debug output enabled.
test-assetmanager: test-assetmanager:
@tools/snippets pytest -o log_cli=true -o log_cli_level=debug -s -v \ @tools/snippets pytest -o log_cli=true -o log_cli_level=debug -s -v \
tests/test_ba/test_assetmanager.py::test_assetmanager tests/test_ba/test_assetmanager.py::test_assetmanager

View File

@ -321,4 +321,4 @@ if __name__ == '__main__':
try: try:
main() main()
except KeyboardInterrupt: except KeyboardInterrupt:
sys.exit(-1) pass

View File

@ -432,36 +432,38 @@ def gen_fulltest_buildfile_linux() -> None:
outfile.write('\n'.join(lines)) outfile.write('\n'.join(lines))
def make_prefab(target: PrefabTarget) -> None: def get_current_prefab_platform() -> str:
"""Run prefab builds for the current platform.""" """Get the name of the running platform.
from efrotools import run
import platform
Throws a RuntimeError on unsupported platforms.
"""
import platform
system = platform.system() system = platform.system()
machine = platform.machine() machine = platform.machine()
if system == 'Darwin': if system == 'Darwin':
# Currently there's just x86_64 on mac; will need to revisit when arm # Currently there's just x86_64 on mac; will need to revisit when arm
# cpus happen. # cpus happen.
base = 'mac' return 'mac'
elif system == 'Linux': if system == 'Linux':
# If it looks like we're in Windows Subsystem for Linux, # If it looks like we're in Windows Subsystem for Linux,
# go with the Windows version. # go with the Windows version.
if 'microsoft' in platform.uname()[3].lower(): if 'microsoft' in platform.uname()[3].lower():
base = 'windows' return 'windows'
else:
# We currently only support x86_64 linux.
if machine == 'x86_64':
base = 'linux'
else:
raise RuntimeError(
f'make_prefab: unsupported linux machine type:'
f' {machine}.')
else:
raise RuntimeError(f'make_prefab: unrecognized platform:'
f' {platform.system()}.')
run(f'make prefab-{base}-{target.value}') # We currently only support x86_64 linux.
if machine == 'x86_64':
return 'linux'
raise RuntimeError(f'make_prefab: unsupported linux machine type:'
f' {machine}.')
raise RuntimeError(f'make_prefab: unrecognized platform:'
f' {platform.system()}.')
def make_prefab(target: PrefabTarget) -> None:
"""Make a prefab build for the current platform."""
from efrotools import run
platform = get_current_prefab_platform()
run(f'make prefab-{platform}-{target.value}')
def _vstr(nums: Sequence[int]) -> str: def _vstr(nums: Sequence[int]) -> str:

View File

@ -528,6 +528,34 @@ def checkenv() -> None:
raise CleanError(exc) raise CleanError(exc)
def ensure_prefab_platform() -> None:
"""Ensure we are running on a particular prefab platform."""
import batools.build
if len(sys.argv) != 3:
raise CleanError('Expected 1 platform name arg.')
needed = sys.argv[2]
current = batools.build.get_current_prefab_platform()
if current != needed:
raise CleanError(
f'Incorrect platform: we are {current}, this requires {needed}.')
def prefab_run_var() -> None:
"""Print a variable for running a prefab run for the current platform.
We use this mechanism instead of just having a command recursively run
a make target so that ctrl-c can be handled cleanly and directly by the
command getting run instead of generating extra errors in the recursive
processes.
"""
import batools.build
if len(sys.argv) != 3:
raise RuntimeError('Expected 1 arg.')
base = sys.argv[2].replace('-', '_').upper()
platform = batools.build.get_current_prefab_platform().upper()
print(f'RUN_PREFAB_{platform}_{base}', end='')
def make_prefab() -> None: def make_prefab() -> None:
"""Run prefab builds for the current platform.""" """Run prefab builds for the current platform."""
import batools.build import batools.build