diff --git a/.efrocachemap b/.efrocachemap index 444111aa..2a4c0cd3 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4038,26 +4038,26 @@ "build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1", "build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "1f69ddeb02931a14350dca8c9f57d7f1", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "4ef2017d98434d78fc6d16121220241e", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "9c131cc99b84ead5c6c4ca62167cff9b", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "d24cf6110773ef8b4814d666e8c0c435", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "831b1526ece045decbf1e0de5af24052", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "e20c0e2216583337f0f1b6529d0ba11f", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "75a8601f7e9f82af46d93ffc8a256a7b", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "b6dd5a6381c76da06d4e3f28b9ae26d7", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "3de8379bc9d925752559f395c85c1ebc", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "68a9183674846903f4dec83d94023498", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "f0a26bbd08a4ddd9fe331bba6f731dd0", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "f346ea68ff1614e64b5555c5fed60618", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "7ae36210f6167ae2cd88905c93800330", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "e1e54514c6322544a41f53c84e441967", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "60f081b960424b9a3dddc33824a5d866", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "6712b886792057c5cac6bfcbbf93fa6f", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "5bce4fd4303d03d5a4d3cba16aaf7dcb", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "3f72837a59d31d11e08edb0f395642d2", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "7400ee0e8a3c925af6e4859599fed64c", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "5b1db66f277c057d503aae53991adfc5", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "dc369671ed8cf359dc975fb374228e72", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "e68906c43196a9d1155a4123011100b0", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "c8d9ff095234fed4a7fd53c38b32d373", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "f74e32bce84c8adec701f73d95ab4aa0", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "3469fce4b1822fbaac3259e4f4093813", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "102e124c031cd2fbb0d8f07b011a6570", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "aa9c9d30698c6e4ffe6cf2ea6b8abccf", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "e851caab7095c8fb4e86371a07fe1ef3", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "5894d46820a3a6d90e145ab03f684966", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "c6f5942cd35a6f209d22a304475ecc94", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "46f23e51246a780aa6ad9d05d0bd9481", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "39d8555b9519033ff29619cd5753b1ae", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "ce1c0422ae252cf5573c21991ffb4651", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "ccc1fd541825bf5a0efadef750e915ee", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "025577c13d7c0e4a9a92112381a1cf7f", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "37f2931b93009be12f2d0d4b4009324c", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "7b710cbf315e400fd3ad9ebb9c272413", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "5b391d68bd2f543407570d8540db1b49", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "95adc840473943cc619cf8d2729bae14", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "6e210c9ee35e072be7115022b361016e", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "c471e06d03862e91a2a949806803efbd", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "4f7b8eed54eb4c7d2b6400aaa4dfa37c", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "c471e06d03862e91a2a949806803efbd", @@ -4074,14 +4074,14 @@ "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "cd5c91eecddb1da4e8204e3496466a07", "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "9adc2dc1c5c3cdc1ca6fc98fc76644c5", "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "cd5c91eecddb1da4e8204e3496466a07", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "dc57789d3ee490d8354b259da3d126e5", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "f6c205dec651096d4b79c33fbc6521d3", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "57eaa29add181299dfeca00638cec027", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "45a0e7f47f87ac16eea7ed3c8344e930", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "3e73473e692c1076ba35230db92718df", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "b4a041b108895d140d7bae117bb6d899", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "6140fbb0c041b1a7b8fa18bca1b61b42", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "6b6b016b72558a9138fccf7f5462f1de", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "a2d7b8adb88d0bdbdb67e143dccffbcb", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "277582a63d58b37e6ee5bb1a425a6e7a", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "606384dd100977c6e95c73808d47203b", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "31ff5e1e195f288a8b28e4c12ba7f2be", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "f6359d1398d5fdf39c50a700fbb7904b", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "ee1e78325a2b620d1ebd819d6774ff7e", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "d94367882e73c5da9f824b16a45914cf", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "02c33d337d252b3175cf129fc7b76bd1", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "5548f407d97e380069f6c596c4e36cd7", "src/ballistica/base/mgen/pyembed/binding_base.inc": "efa61468cf098f77cc6a234461d8b86d", diff --git a/.gitignore b/.gitignore index 5ef8653c..f32d18b6 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,7 @@ tools/bacloud config/localconfig.json config/.* .dir-locals.el +.rgignore .spinoffdata flycheck_* diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b5d5535..5b439435 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,6 @@ -### 1.7.35 (build 21888, api 8, 2024-06-16) +### 1.7.36 (build 21894, api 8, 2024-06-22) + +### 1.7.35 (build 21889, api 8, 2024-06-20) - Fixed an issue where the engine would block at exit on some version of Linux until Ctrl-D was pressed in the calling terminal. - V2 accounts have been around for a while now, so the old V1 device login diff --git a/Makefile b/Makefile index 72d480db..b8e009a4 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ endif # Env targets that should be safe to run anytime; even if project-files # are out of date. ENV_REQS_SAFE = .cache/checkenv $(PCOMMANDBATCHBIN) .dir-locals.el .mypy.ini \ - .pyrightconfig.json .pylintrc .clang-format \ + .pyrightconfig.json .pylintrc .clang-format .rgignore \ ballisticakit-cmake/.clang-format .editorconfig tools/cloudshell \ tools/bacloud tools/pcommand @@ -711,7 +711,7 @@ spinoff-upgrade: env @$(PCOMMAND) spinoff_check_submodule_parent $(MAKE) update @$(PCOMMANDBATCH) echo BLU Pulling latest parent project... - cd submodules/ballistica && git checkout master && git pull + cd submodules/ballistica && git checkout main && git pull @$(PCOMMANDBATCH) echo BLU Syncing parent into current project... tools/spinoff update @$(MAKE) update-check # Make sure spinoff didn't break anything. @@ -1289,6 +1289,9 @@ tools/bacloud: tools/efrotools/genwrapper.py .venv/.efro_venv_complete @PYTHONPATH=tools python3 -m \ efrotools.genwrapper bacloud batools.bacloud tools/bacloud +.rgignore: config/toolconfigsrc/rgignore $(TOOL_CFG_SRC) + @$(TOOL_CFG_INST) $< $@ + .clang-format: config/toolconfigsrc/clang-format $(TOOL_CFG_SRC) @$(TOOL_CFG_INST) $< $@ diff --git a/config/requirements.txt b/config/requirements.txt index 1da2bc66..6b32c2b5 100644 --- a/config/requirements.txt +++ b/config/requirements.txt @@ -1,6 +1,6 @@ cpplint==1.6.1 dmgbuild==1.6.1 -filelock==3.15.1 +filelock==3.15.4 furo==2024.5.6 mypy==1.10.0 pbxproj==4.1.0 @@ -17,5 +17,5 @@ Sphinx==7.3.7 tomlkit==0.12.5 types-certifi==2021.10.8.3 types-filelock==3.2.7 -types-requests==2.32.0.20240602 +types-requests==2.32.0.20240622 typing_extensions==4.12.2 diff --git a/config/toolconfigsrc/rgignore b/config/toolconfigsrc/rgignore new file mode 100644 index 00000000..a8866822 --- /dev/null +++ b/config/toolconfigsrc/rgignore @@ -0,0 +1,8 @@ +# Stuff we want ripgrep to ignore. +docs +submodules +src/external +src/assets/ba_data/python-site-packages +src/assets/pylib-android +src/assets/pylib-apple +src/assets/windows \ No newline at end of file diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 689f8732..9dd9a141 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -52,8 +52,8 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 21888 -TARGET_BALLISTICA_VERSION = '1.7.35' +TARGET_BALLISTICA_BUILD = 21894 +TARGET_BALLISTICA_VERSION = '1.7.36' @dataclass diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index becc91fe..89153814 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -39,8 +39,8 @@ auto main(int argc, char** argv) -> int { namespace ballistica { // These are set automatically via script; don't modify them here. -const int kEngineBuildNumber = 21888; -const char* kEngineVersion = "1.7.35"; +const int kEngineBuildNumber = 21894; +const char* kEngineVersion = "1.7.36"; const int kEngineApiVersion = 8; #if BA_MONOLITHIC_BUILD diff --git a/tools/batools/build.py b/tools/batools/build.py index bb0bf65c..2dac969e 100644 --- a/tools/batools/build.py +++ b/tools/batools/build.py @@ -8,6 +8,7 @@ import os import sys import subprocess from enum import Enum +from pathlib import Path from dataclasses import dataclass from typing import TYPE_CHECKING, assert_never @@ -603,6 +604,13 @@ def cmake_prep_dir(dirname: str, verbose: bool = False) -> None: ) entries.append(Entry('mac_xcode_sdks', mac_xcode_sdks)) + # ...or if homebrew SDL.h resolved path changes (happens for updates) + sdl_h_path = Path('/opt/homebrew/include/SDL2/SDL.h') + homebrew_sdl_h_resolved: str = ( + str(sdl_h_path.resolve()) if sdl_h_path.is_symlink() else '' + ) + entries.append(Entry('homebrew_sdl_h_resolved', homebrew_sdl_h_resolved)) + # Ok; do the thing. verfilename = os.path.join(dirname, '.ba_cmake_env') title = 'cmake_prep_dir' diff --git a/tools/efro/util.py b/tools/efro/util.py index 5034b1ba..14b3d625 100644 --- a/tools/efro/util.py +++ b/tools/efro/util.py @@ -536,6 +536,21 @@ def make_hash(obj: Any) -> int: return hash(tuple(frozenset(sorted(new_obj.items())))) +def float_hash_from_string(s: str) -> float: + """Given a string value, returns a float between 0 and 1. + + If consistent across processes. Can be useful for assigning db ids + shard values for efficient parallel processing. + """ + import hashlib + + hash_bytes = hashlib.md5(s.encode()).digest() + + # Generate a random 64 bit int from hash digest bytes. + ival = int.from_bytes(hash_bytes[:8]) + return ival / ((1 << 64) - 1) + + def asserttype(obj: Any, typ: type[T]) -> T: """Return an object typed as a given type. diff --git a/tools/efrotools/toolconfig.py b/tools/efrotools/toolconfig.py index 01c13d07..a6ff4143 100644 --- a/tools/efrotools/toolconfig.py +++ b/tools/efrotools/toolconfig.py @@ -52,6 +52,7 @@ def install_tool_config(projroot: Path, src: Path, dst: Path) -> None: '.style.yapf', '.clang-format', '.editorconfig', + '.rgignore', ]: comment = '#' if comment is not None: