cleaning up dummymodule generation

This commit is contained in:
Eric 2023-06-06 10:39:43 -07:00
parent a5cac1aa19
commit 503b802faf
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
14 changed files with 117 additions and 134 deletions

View File

@ -4080,18 +4080,18 @@
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/7b/c1/2dfb7c5fc6a31dd4ac4be9ef69bb",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/af/9b/8de9876d0e3db5ccc49ce80c8e2a",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/16/63/7bedf858ae0dc1e91acf76c1cbd6",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/76/d8/e2d3ae9228e1dd7b8fdbfcb676e0",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/b9/94/14e96f6497e7d79148194ee6a7cb",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/cc/d0/f0c1c32c948f5349e91071107d9a",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/51/2c/23125061df4f8d2c62bac5787979",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/4c/2e/475331e7531640a05e43b4a08120",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/fc/34/1623d3a8d0ff13a71f819300c091",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/dd/8d/c73ee71bfd88d0af120ff17d551b",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/fb/bd/4395fa6dc06f077fe0cc5c5b4be1",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/84/38/e6f2c8c7607161c76e7c2d65ffd1",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/7b/ea/d4b485f9f702619046631f74fcc2",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/18/4a/3df0a4f45e6aeb92341194b3405c",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/08/dd/98f18c4d39850dafbf3efdfbc305",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/bb/dc/546b55bf1e7cfa297dbc74f3b335",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/83/8a/bb8485797aae51bca7edcf62dc96",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/d1/2d/9850c8bc21b31c627386fa44c96a",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/b4/fb/efce666ea6a479f1310d9aa27300",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/14/b1/12cff0cf6314c5476e6c7f6920a5",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/75/c7/48d7c37f280b875e398cb340f533",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/07/ea/fc994e8da3d8eb2d397a84e0c375",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/0f/08/4c5d8367112ee73bc9d239e2b05a",
"build/prefab/lib/linux_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/98/32/43c61f1e11520f764158cf0e76d2",
"build/prefab/lib/linux_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/ca/65/cba463f21a8f76c5bbfe27cae124",
"build/prefab/lib/linux_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/73/20/119211f1700bb5a410cedf4e76f2",
@ -4108,14 +4108,14 @@
"build/prefab/lib/mac_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/90/9b/94f733c3a48691e02240e04dc792",
"build/prefab/lib/mac_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/2e/c7/873af48627997b6fab4b2c4ba6bc",
"build/prefab/lib/mac_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/3a/94/4780fada10f0fc3f43a54f29c86f",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/e5/c9/1fafb53497e7d4ff19ecddc31d09",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/98/26/04e281a4cfa6a334abcb7e79dcbe",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/46/8b/eaee1191df159ad37a437429bbd9",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/82/fc/bbd1be0784b9d4ad46aa7da5dc24",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/c7/e7/a74ee82202fb7ae828f5066d1c79",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/f5/c3/eac894e0bfaacf4ec4740d54869d",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/d1/9f/f5e35440c800af9f002c795a2814",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/ff/fc/b6ff2a5bf8c73e1a5fa987944548",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/4f/69/a8254d42f8347e4951fc479a1d39",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/49/1a/d361e1f0f1d0d8f68fb2b3f8e2f5",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/33/34/524165a684cc56828dc7cb1be254",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/45/9c/def4dc35037b5da3b43a85473cda",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/6e/8b/60bbd66f58dd133af1904420905d",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/e8/dd/0ed0c7ef302308d47c2e898f46f9",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/5c/13/53ebf825ed88053908d7952359f0",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/c1/e4/c1a3657c0e255d5e348436b374c7",
"src/assets/ba_data/python/babase/_mgen/__init__.py": "https://files.ballistica.net/cache/ba1/52/c6/c11130af7b10d6c0321add5518fa",
"src/assets/ba_data/python/babase/_mgen/enums.py": "https://files.ballistica.net/cache/ba1/38/c3/1dedd5e74f2508efc5974c8815a1",
"src/ballistica/base/mgen/pyembed/binding_base.inc": "https://files.ballistica.net/cache/ba1/4e/07/87dd93e7ef29b8b78d0b4791d6f8",

View File

@ -113,6 +113,7 @@
<w>appengine</w>
<w>appiconset</w>
<w>appid</w>
<w>appintent</w>
<w>appintentsmetadataprocessor</w>
<w>appinvite</w>
<w>appkit</w>
@ -121,12 +122,14 @@
<w>appletvos</w>
<w>appletvsimulator</w>
<w>appmode</w>
<w>appmodeselector</w>
<w>appname</w>
<w>appnameupper</w>
<w>appnow</w>
<w>appspot</w>
<w>appstate</w>
<w>appstore</w>
<w>appsubsystem</w>
<w>apptime</w>
<w>apptimer</w>
<w>apptimers</w>
@ -1546,6 +1549,7 @@
<w>libxm</w>
<w>libxmu</w>
<w>libxz</w>
<w>lifecyclelog</w>
<w>linbeast</w>
<w>lindex</w>
<w>lindexorig</w>
@ -1740,6 +1744,7 @@
<w>modders</w>
<w>modename</w>
<w>modestr</w>
<w>modetype</w>
<w>modeval</w>
<w>modpack</w>
<w>modstr</w>

112
Makefile
View File

@ -150,8 +150,10 @@ clean-list:
# Build/update dummy python modules.
# IMPORTANT - building this target can kick off full builds/cleans and so
# it should not be built in parallel with other targets.
# See py_check_prepass target for more info.
dummymodules: build/dummymodules/.dummy_modules_state
# See py_check_prereqs target for more info.
dummymodules: prereqs meta
@tools/pcommand lazybuild dummymodules_src $(LAZYBUILDDIR)/$@ \
rm -rf build/dummymodules \&\& ./tools/pcommand gen_dummy_modules
dummymodules-clean:
rm -rf build/dummymodules
@ -698,7 +700,7 @@ format-makefile: prereqs
################################################################################
# Run all project checks. (static analysis)
check: py_check_prepass
check: py_check_prereqs
# TEMP - disabling some checks during 1.7.20 refactor.
@$(DMAKE) -j$(CPUS) update-check cpplint mypy
@tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
@ -706,7 +708,7 @@ check: py_check_prepass
# @tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
# Same as check but no caching (all files are checked).
check-full: py_check_prepass
check-full: py_check_prereqs
# TEMP - disabling some checks during 1.7.20 refactor.
@$(DMAKE) -j$(CPUS) update-check cpplint-full mypy-full
@tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
@ -714,7 +716,7 @@ check-full: py_check_prepass
# @tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
# Same as 'check' plus optional/slow extra checks.
check2: py_check_prepass
check2: py_check_prereqs
# TEMP - disabling some during 1.7.20 refactor.
@$(DMAKE) -j$(CPUS) update-check cpplint mypy
@tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
@ -723,7 +725,7 @@ check2: py_check_prepass
# Same as check2 but no caching (all files are checked).
# TEMP - disabling some checks during 1.7.20 refactor.
check2-full: py_check_prepass
check2-full: py_check_prereqs
@$(DMAKE) -j$(CPUS) update-check cpplint-full mypy-full
@tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
# @$(DMAKE) -j$(CPUS) update-check cpplint-full pylint-full mypy-full \
@ -739,45 +741,42 @@ cpplint-full: prereqs meta
@tools/pcommand cpplint -full
# Run Pylint checks on all Python Code.
pylint: py_check_prepass
pylint: py_check_prereqs
@tools/pcommand pylint
# Run Pylint checks without caching (all files are checked).
pylint-full: py_check_prepass
pylint-full: py_check_prereqs
@tools/pcommand pylint -full
# Run Mypy checks on all Python code.
mypy: py_check_prepass
mypy: py_check_prereqs
@tools/pcommand mypy
# Run Mypy checks without caching (all files are checked).
mypy-full: py_check_prepass
mypy-full: py_check_prereqs
@tools/pcommand mypy -full
# Run Mypy checks on all Python code using daemon mode.
dmypy: py_check_prepass
dmypy: py_check_prereqs
@tools/pcommand dmypy
# Stop the mypy daemon
dmypy-stop: py_check_prepass
dmypy-stop: py_check_prereqs
@tools/pcommand dmypy -stop
# Run PyCharm checks on all Python code.
pycharm: py_check_prepass
pycharm: py_check_prereqs
@tools/pcommand pycharm
# Run PyCharm checks without caching (all files are checked).
pycharm-full: py_check_prepass
pycharm-full: py_check_prereqs
@tools/pcommand pycharm -full
# Run extra mypy checks with various dependency permutations.
# ensures packages don't depend on thing they're not supposed to.
depchecks: py_check_prepass
depchecks: py_check_prereqs
@tools/pcommand depchecks
featuresettest: py_check_prepass
echo WOULD DO FS
# Build prerequisites needed for python checks.
#
# IMPORTANT - this target may kick off new meta/asset/binary builds/cleans as
@ -790,63 +789,12 @@ featuresettest: py_check_prepass
# others (such as by the 'check-full' target) the parent target should
# explicitly built this beforehand to ensure it does not happen during the
# parallel part.
# Note to self: Originally prereqs and meta were listed as deps of
# .dummy_modules_state, but because prereqs has no output dependencies
# it always fires which meant dummy modules would get rebuilt every run.
# This config should do the right thing without violating the above rules.
py_check_prepass: prereqs meta
@$(MAKE) dummymodules
# The following section is auto-generated; do not edit by hand.
# __AUTOGENERATED_DUMMY_MODULES_BEGIN__
# Update dummy Python modules when source files contributing to them change.
build/dummymodules/.dummy_modules_state: \
src/ballistica/base/python/class/python_class_app_timer.cc \
src/ballistica/base/python/class/python_class_context_call.cc \
src/ballistica/base/python/class/python_class_context_ref.cc \
src/ballistica/base/python/class/python_class_display_timer.cc \
src/ballistica/base/python/class/python_class_feature_set_data.cc \
src/ballistica/base/python/class/python_class_simple_sound.cc \
src/ballistica/base/python/class/python_class_vec3.cc \
src/ballistica/base/python/methods/python_methods_app.cc \
src/ballistica/base/python/methods/python_methods_graphics.cc \
src/ballistica/base/python/methods/python_methods_misc.cc \
src/ballistica/classic/python/methods/python_methods_classic.cc \
src/ballistica/scene_v1/python/class/python_class_activity_data.cc \
src/ballistica/scene_v1/python/class/python_class_base_timer.cc \
src/ballistica/scene_v1/python/class/python_class_input_device.cc \
src/ballistica/scene_v1/python/class/python_class_material.cc \
src/ballistica/scene_v1/python/class/python_class_node.cc \
src/ballistica/scene_v1/python/class/python_class_scene_collision_mesh.cc \
src/ballistica/scene_v1/python/class/python_class_scene_data_asset.cc \
src/ballistica/scene_v1/python/class/python_class_scene_mesh.cc \
src/ballistica/scene_v1/python/class/python_class_scene_sound.cc \
src/ballistica/scene_v1/python/class/python_class_scene_texture.cc \
src/ballistica/scene_v1/python/class/python_class_scene_timer.cc \
src/ballistica/scene_v1/python/class/python_class_session_data.cc \
src/ballistica/scene_v1/python/class/python_class_session_player.cc \
src/ballistica/scene_v1/python/methods/python_methods_assets.cc \
src/ballistica/scene_v1/python/methods/python_methods_input.cc \
src/ballistica/scene_v1/python/methods/python_methods_networking.cc \
src/ballistica/scene_v1/python/methods/python_methods_scene.cc \
src/ballistica/template_fs/python/class/python_class_hello.cc \
src/ballistica/template_fs/python/methods/python_methods_template_fs.cc \
src/ballistica/ui_v1/python/class/python_class_ui_mesh.cc \
src/ballistica/ui_v1/python/class/python_class_ui_sound.cc \
src/ballistica/ui_v1/python/class/python_class_ui_texture.cc \
src/ballistica/ui_v1/python/class/python_class_widget.cc \
src/ballistica/ui_v1/python/methods/python_methods_ui_v1.cc
@tools/pcommand with_build_lock gen_dummy_modules_lock \
rm -rf build/dummymodules \&\& mkdir -p build/dummymodules \
\&\& ./tools/pcommand gen_dummy_modules \
\&\& touch build/dummymodules/.dummy_modules_state
# __AUTOGENERATED_DUMMY_MODULES_END__
py_check_prereqs: dummymodules
# Tell make which of these targets don't represent files.
.PHONY: check check-full check2 check2-full \
cpplint cpplint-full pylint pylint-full mypy \
mypy-full dmypy dmypy-stop pycharm pycharm-full py_check_prepass
mypy-full dmypy dmypy-stop pycharm pycharm-full py_check_prereqs
################################################################################
@ -864,39 +812,35 @@ build/dummymodules/.dummy_modules_state: \
TEST_TARGET ?= tests
# Run all tests. (live execution verification)
test: py_check_prepass
test: py_check_prereqs
@tools/pcommand echo BLU Running all tests...
@tools/pcommand pytest -v $(TEST_TARGET)
test-verbose: py_check_prepass
test-verbose: py_check_prereqs
@tools/pcommand echo BLU Running all tests...
@tools/pcommand pytest -o log_cli=true -o log_cli_level=debug -s -vv $(TEST_TARGET)
@tools/pcommand pytest -o log_cli=true -o log_cli_level=debug \
-s -vv $(TEST_TARGET)
# Run tests with any caching disabled.
test-full: test
# Individual test with extra output enabled.
test-assetmanager:
@tools/pcommand pytest -o log_cli=true -o log_cli_level=debug -s -vv \
tests/test_babase/test_assetmanager.py::test_assetmanager
# Individual test with extra output enabled.
# Shortcut to test efro.message only.
test-message:
@tools/pcommand pytest -o log_cli=true -o log_cli_level=debug -s -vv \
tests/test_efro/test_message.py
# Individual test with extra output enabled.
# Shortcut to test efro.dataclassio only.
test-dataclassio:
@tools/pcommand pytest -o log_cli=true -o log_cli_level=debug -s -vv \
@tools/pcommand pytest -o log_cli=true -o log_cli_level=debug -s -vv \
tests/test_efro/test_dataclassio.py
# Individual test with extra output enabled.
# Shortcut to test efro.rpc only.
test-rpc:
@tools/pcommand pytest -o log_cli=true -o log_cli_level=debug -s -vv \
tests/test_efro/test_rpc.py
# Tell make which of these targets don't represent files.
.PHONY: test test-full test-assetmanager
.PHONY: test test-verbose test-full test-message test-dataclassio test-rpc
################################################################################

View File

@ -75,15 +75,18 @@
<w>apost</w>
<w>appcomponent</w>
<w>appconfig</w>
<w>appintent</w>
<w>appintentsmetadataprocessor</w>
<w>appletvos</w>
<w>appletvsimulator</w>
<w>appmode</w>
<w>appmodeselector</w>
<w>appname</w>
<w>appnameupper</w>
<w>appnow</w>
<w>appspot</w>
<w>appstate</w>
<w>appsubsystem</w>
<w>apptime</w>
<w>apptimer</w>
<w>apptimers</w>
@ -886,6 +889,7 @@
<w>libbzip</w>
<w>libutf</w>
<w>libuuid</w>
<w>lifecyclelog</w>
<w>lightshad</w>
<w>linearsize</w>
<w>linearstep</w>
@ -994,6 +998,7 @@
<w>modder</w>
<w>modders</w>
<w>modelview</w>
<w>modetype</w>
<w>modstr</w>
<w>modtime</w>
<w>moduletype</w>

View File

@ -25,7 +25,6 @@ if TYPE_CHECKING:
from typing import Any, Callable
from concurrent.futures import Future
from efro.log import LogHandler
import babase
from babase import AppIntent, AppMode, AppSubsystem
from babase._apputils import AppHealthMonitor

View File

@ -8,7 +8,7 @@ from typing import TYPE_CHECKING
import _babase
if TYPE_CHECKING:
from babase._app import App
pass
class AppSubsystem:

View File

@ -31,7 +31,6 @@ def setup_asyncio() -> asyncio.AbstractEventLoop:
import _babase
import babase
from babase._mgen.enums import TimeType
assert _babase.in_logic_thread()

View File

@ -20,9 +20,7 @@ from typing import TYPE_CHECKING
import _babase
if TYPE_CHECKING:
from typing import Sequence, Any
import babase
pass
def on_app_bootstrapping_complete() -> None:

View File

@ -8,7 +8,6 @@ import threading
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from typing import Any, Callable
import socket
# Timeout for standard functions talking to the master-server/etc.

View File

@ -103,12 +103,13 @@ class LazyBuildCategory(Enum):
META = 'meta_src'
CMAKE = 'cmake_src'
WIN = 'win_src'
DUMMYMODULES = 'dummymodules_src'
def lazybuild(target: str, category: LazyBuildCategory, command: str) -> None:
"""Run some lazybuild presets."""
# Everything possibly affecting meta builds.
# Meta builds.
if category is LazyBuildCategory.META:
LazyBuildContext(
target=target,
@ -135,14 +136,14 @@ def lazybuild(target: str, category: LazyBuildCategory, command: str) -> None:
'tools/batoolsinternal',
'config/featuresets',
],
# Also enable an option to maintain a hash of all file paths
# in the above sets and do a full-clean whenever that changes.
# Takes care of orphaned files if remove a featureset/etc.
manifest_file='.cache/lazybuild/meta_manifest',
# Maintain a hash of all srcpaths and do a full-clean
# whenever that changes. Takes care of orphaned files if a
# featureset is removed/etc.
manifest_file=f'.cache/lazybuild/manifest_{category.value}',
command_fullclean='make meta-clean',
).run()
# Everything possibly affecting CMake builds.
# CMake builds.
elif category is LazyBuildCategory.CMAKE:
LazyBuildContext(
target=target,
@ -165,7 +166,7 @@ def lazybuild(target: str, category: LazyBuildCategory, command: str) -> None:
command=command,
).run()
# Everything possibly affecting Windows binary builds.
# Windows binary builds.
elif category is LazyBuildCategory.WIN:
def _win_dirfilter(root: str, dirname: str) -> bool:
@ -192,7 +193,7 @@ def lazybuild(target: str, category: LazyBuildCategory, command: str) -> None:
command=command,
).run()
# Everything possibly affecting resource builds.
# Resource builds.
elif category is LazyBuildCategory.RESOURCES:
LazyBuildContext(
target=target,
@ -208,7 +209,7 @@ def lazybuild(target: str, category: LazyBuildCategory, command: str) -> None:
command=command,
).run()
# Everything possibly affecting asset builds.
# Asset builds.
elif category is LazyBuildCategory.ASSETS:
def _filefilter(root: str, filename: str) -> bool:
@ -234,6 +235,37 @@ def lazybuild(target: str, category: LazyBuildCategory, command: str) -> None:
filefilter=_filefilter,
).run()
# Dummymodule builds.
elif category is LazyBuildCategory.DUMMYMODULES:
def _filefilter(root: str, filename: str) -> bool:
# In our C++ sources, only look at stuff with 'python' in the
# name.
if root.startswith('ballistica'):
return 'python' in filename
# In other srcpaths use everything.
return True
LazyBuildContext(
target=target,
# This category builds binaries and other crazy stuff
# so we definitely want to restrict to one at a time.
buildlockname=category.value,
srcpaths=[
'config/featuresets',
'tools/batools/dummymodule.py',
'src/ballistica',
],
command=command,
filefilter=_filefilter,
# Maintain a hash of all srcpaths and do a full-clean
# whenever that changes. Takes care of orphaned files if a
# featureset is removed/etc.
manifest_file=f'.cache/lazybuild/manifest_{category.value}',
command_fullclean='make dummymodules-clean',
).run()
else:
assert_never(category)

View File

@ -886,7 +886,7 @@ class Generator:
outfile.write(out)
def generate(projroot: str) -> None:
def generate_dummy_modules(projroot: str) -> None:
"""Generate all dummy-modules."""
from batools.featureset import FeatureSet
@ -970,6 +970,8 @@ def generate(projroot: str) -> None:
featuresets = [f for f in featuresets if f.has_native_python_module]
mnames: list[str] = [fs.name_python_binary_module for fs in featuresets]
os.makedirs('build/dummymodules', exist_ok=True)
gencount = 0
for mname in mnames:
gencount += 1

View File

@ -979,12 +979,12 @@ def gen_python_init_module() -> None:
def gen_dummy_modules() -> None:
"""Generate all dummy modules."""
from efro.error import CleanError
from batools.dummymodule import generate
from batools.dummymodule import generate_dummy_modules
if len(sys.argv) != 2:
raise CleanError(f'Expected no args; got {len(sys.argv)-2}.')
generate(projroot=str(PROJROOT))
generate_dummy_modules(projroot=str(PROJROOT))
def version() -> None:

View File

@ -21,17 +21,24 @@ def generate_top_level_makefile(projroot: str, existing_data: str) -> str:
assert isinstance(public, bool)
original = existing_data
lines = original.splitlines()
auto_start = lines.index('# __AUTOGENERATED_DUMMY_MODULES_BEGIN__')
auto_end = lines.index('# __AUTOGENERATED_DUMMY_MODULES_END__')
# NOTE: no longer doing this; our dummy module generation stuff is
# now a nice static lazybuild target. Can remove this whole file
# soon if no other uses for it come up.
if bool(False):
lines = original.splitlines()
our_lines = [
_get_dummy_module_target(projroot),
]
auto_start = lines.index('# __AUTOGENERATED_DUMMY_MODULES_BEGIN__')
auto_end = lines.index('# __AUTOGENERATED_DUMMY_MODULES_END__')
filtered = lines[: auto_start + 1] + our_lines + lines[auto_end:]
out = '\n'.join(filtered) + '\n'
our_lines = [
_get_dummy_module_target(projroot),
]
filtered = lines[: auto_start + 1] + our_lines + lines[auto_end:]
out = '\n'.join(filtered) + '\n'
else:
out = original
return out

View File

@ -86,13 +86,6 @@ class LazyBuildContext:
# as dependency relationships in a Makefile.
self.srcpaths_fullclean = srcpaths_fullclean
self.command_fullclean = command_fullclean
if (self.srcpaths_fullclean is None) != (
self.command_fullclean is None
):
raise RuntimeError(
'Must provide both srcpaths_fullclean and'
' command_fullclean together'
)
# We also support a 'manifest' file which is a hash of all filenames
# processed as part of srcpaths OR srcpaths_fullclean. If defined,