From 084f556504056aa1cc8c781009db6e66750492da Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 16 Sep 2022 16:33:52 -0700 Subject: [PATCH] bug fixes and polishing for 1.7.7 release --- .efrocachemap | 88 ++++++++++---------- CHANGELOG.md | 4 +- assets/src/ba_data/python/._ba_sources_hash | 2 +- assets/src/ba_data/python/ba/_bootstrap.py | 15 +++- src/ballistica/ballistica.cc | 2 +- src/ballistica/python/python_context_call.cc | 2 +- tools/efro/log.py | 8 +- 7 files changed, 71 insertions(+), 50 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index dbedae2f..24d7877a 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -3995,50 +3995,50 @@ "assets/src/ba_data/python/ba/_generated/__init__.py": "https://files.ballistica.net/cache/ba1/ee/e8/cad05aa531c7faf7ff7b96db7f6e", "assets/src/ba_data/python/ba/_generated/enums.py": "https://files.ballistica.net/cache/ba1/b2/e5/0ee0561e16257a32830645239f34", "ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a", - "build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/be/84/d4a9f2698852d47204eaf7f989f9", - "build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/9d/07/10910a8e3de0506be787ef3ecc48", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/8d/f7/74d2f4c962b7797e05e15241deac", - "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ea/34/0929f2c03752ac2a4a08a09941ce", - "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ea/28/a19ef25c15ee6befb9ed2bac5ebc", - "build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/38/ad/c3b76ff4f8ca715c394b3a96a68e", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f6/8a/98649959fb2bed45dcdc31e841f1", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/44/97/9d70590ffcde8df0f2f45f0d649a", - "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/e2/38/12cf8e7010aa0f4217b0da33786a", - "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/c0/a4/c4d1a04cd841065bf2c7a6e8328a", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/22/f3/613572189769a6d22e00f28125ae", - "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ae/e1/c81f46c7b2933a4caa4e028de174", - "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/90/f7/c2f34b478a63e4d6a48804fec09e", - "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/7d/e5/df47bf427dcb312a85359e4aa15a", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/49/7d/1a911685c12684b0bb44d85d91b5", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/49/12/cb7f8ab099507df99d36447bb091", - "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/72/de/79b34ded132e59aa48f2c1badd3f", - "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/3e/91/085afe517b6e54087a746e980cab", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/f8/1b/996fb6d29251b1dd4f72da7d3cdf", - "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/ea/f6/b68573135f10e1c22b60b4b924b7", - "build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f2/f2/5d17e1c169a07365442920c41d5b", - "build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b4/c3/d87cbbb96ae6b8d04c2e47575493", - "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9c/b1/63bb857c299b7df59bf8c7a839b3", - "build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e5/55/152d7f63e1c7fa017fdbaf6cd01b", - "build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7c/42/25dd5f85ac0766821786b56356dd", - "build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4b/3d/cbeddd984dd7bbf651489eaf73d4", - "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/90/6a/93e4582a5fccca73245a6339c876", - "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/38/91/32d4dd319c6de2e1202160be1cdb", - "build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/93/65/8de22b09531bbd52f3c248dcf479", - "build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c0/c7/18c3deef4709d9e6dc7c02b8e957", - "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/dd/75/443cea54dd7011aded225197675e", - "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c2/ed/8683ec69a8b55c056808474388d4", - "build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0d/ad/107f9828c8b195ab08a0a777d1b9", - "build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/49/c3/4dd10b0ac3c1ce9cd3c565e62e4f", - "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2f/e6/cf0b3c061fe0428f11f19ab71cd3", - "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c5/63/af3ae0a72c0802afaa3fd20bc72d", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/43/bb/33be7bb757f0419a626c72a2aca5", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/35/28/94b54429a9f282007dcba702684b", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/cf/89/8d35a30a72386d6753dd5a9568cb", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/d9/1f/0924eea724878da3d60fda65a73f", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/1f/e4/2dd5f92598580490a86b1dd36443", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/ba/12/35d07a2bda668aec5d99813e1f67", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/a5/b0/f014e1bc0a352fe9402d4c879a04", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/63/ed/9565716b18e47dbb13752e68e068", + "build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/0f/46/404261469afa2d2c793ce8c91c07", + "build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/36/56/01550015ad71fb43d8ad18c7a1ed", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/90/21/227767f185f7a849ec064c1e93a1", + "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/48/e7/29c1cc0dd7f44dd5bd2a7535b3a2", + "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/de/c8/d84e6ba0cc5ecc441352f2627aa8", + "build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/45/76/cf0e74eda12e456841ac472c836f", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c2/e9/8f46af9203b1692280ba441827dd", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/83/9f/71e9ce104918da5c56c5aa1ebb0c", + "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/d2/86/de0d4dd11111d75cbef782c4680b", + "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ed/67/3bdbac5890bc41dbe110b876f00f", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/43/42/1e77182654f2081320857e5653e7", + "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/cb/02/7fadad054ea58a95f182e0608353", + "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/75/8f/ea9f42c7127af2f7b0192c79a372", + "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/7a/59/ed3c6d51707dd10856c085757e1a", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/83/15/1d66ebddd7533da8e7b50aa137cb", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/31/0b/309f28c9e69bc91b3e3f2050b949", + "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/f6/c1/b34d2e10c98ca5e6ba943527de68", + "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/5a/5c/5cf517225027e93c20101bf6ddff", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/bb/cf/ed6937bcb856e08e5967ec0ab6a8", + "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/83/da/520e55cb58ec63d9ca5eac2e5fa8", + "build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d5/99/d4beffbba698d85837a6de0c4dd7", + "build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/5e/03/d50c1aa5b11ab558a86d3639fe82", + "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/bd/58/bcdb79ff2d6c21f9c5fbf085baba", + "build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2b/da/9a4ad8188598ad05c366eebb50fc", + "build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/cb/5b/f027e5b0ac824979928bdb17c6a2", + "build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/59/0b/3c0025f11fac60fbcf734f7045cf", + "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/64/39/670c59a3afc880d1f26726e751e9", + "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e9/65/94442cb39682a081eaf18a3585c1", + "build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/58/4c/f15514b22709cf1f8f79121de421", + "build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/50/ea/33039f73bf0d2ac7225fd3d8edc9", + "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/14/f8/feee9a4a31c77cd3b80c084f5158", + "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/57/21/323a6394e2f4e8ab9a3538a0dd6c", + "build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ac/8a/7a968caf6d386b4f36ce19bc0e50", + "build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ce/47/4e656fddf9afa3f97e62df8b49d8", + "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4b/bd/86f9fd7f0af07fb908c3669e9703", + "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9a/fe/d77798bed240d6a6899f7d185746", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/bf/f7/dbec060fcceaa6d15001e9c5571a", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/a5/4f/799559891d9dc51aeff3378b7b60", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/24/8d/6cd60c1561b712c5b564bad308ec", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/7b/ec/513f36aa663dfd36ff78c23222ed", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/19/e9/28bea15e82430abdf2164305f319", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/2e/90/2dca6237def60fea03965a9b1fa5", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/34/de/f5de63981018ff50fccf71d472b9", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/8d/c5/aa0267943a6c51b3f1b4fb184b25", "src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/c0/32/b7907e3859a5c5013a3d97b6b523", "src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/2d/4f/f4fe67827f36cd59cd5193333a02", "src/ballistica/generated/python_embedded/bootstrap_monolithic.inc": "https://files.ballistica.net/cache/ba1/ef/c1/aa5f1aa10af89f5c0b1e616355fd" diff --git a/CHANGELOG.md b/CHANGELOG.md index e5c5f5a7..428fbd1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.7 (build 20858, api 7, 2022-09-15) +### 1.7.7 (build 20860, api 7, 2022-09-16) - Added `ba.app.meta.load_exported_classes()` for loading classes discovered by the meta subsystem cleanly in a background thread. - Improved logging of missing playlist game types. - Some ba.Lstr functionality can now be used in background threads. @@ -37,6 +37,8 @@ - Note: Previously in the C++ layer some code would mix Python print calls (such as PyErr_PrintEx()) with ballistica::Log() calls. Previously these all wound up going to the same place (Python's sys.stderr) so it worked, but now they no longer do and so this sort of mixing should be avoided. So if you see a weird combination of colored log output lines with non-colored lines that seem to go together, please holler as it means something needs to be fixed. - Builds for Apple devices now explicitly set a thread stack size of 1MB. The default there is 512k and I was seeing some stack overflows for heavy physics sims or very recursive Python stuff. - If you want to grab recent logs, you can now use `ba.app.log_handler.get_cached()`. This will give you everything that has gone through Python logging, Python stdout/stderr, and the C++ Log() call (up to the max cache size that is). +- LogHandler output now ALWAYS goes to stderr. Previously it only would if an interactive terminal was detected. This should make the binary easier to debug if run from scripts/etc. We can add a `--quiet` option if needed or whatnot. +- (build 20859) Fixed an error setting up asyncio loops under Windows related to the fact that Python is now inited in the main thread. ### 1.7.6 (build 20687, api 7, 2022-08-11) diff --git a/assets/src/ba_data/python/._ba_sources_hash b/assets/src/ba_data/python/._ba_sources_hash index ac8e879b..9d8ff3a2 100644 --- a/assets/src/ba_data/python/._ba_sources_hash +++ b/assets/src/ba_data/python/._ba_sources_hash @@ -1 +1 @@ -202727985408399627040353071391998113840 \ No newline at end of file +84155513838284412598729205538639495871 \ No newline at end of file diff --git a/assets/src/ba_data/python/ba/_bootstrap.py b/assets/src/ba_data/python/ba/_bootstrap.py index 0b044b41..79daf0c4 100644 --- a/assets/src/ba_data/python/ba/_bootstrap.py +++ b/assets/src/ba_data/python/ba/_bootstrap.py @@ -44,7 +44,7 @@ def bootstrap() -> None: # Give a soft warning if we're being used with a different binary # version than we expect. - expected_build = 20858 + expected_build = 20860 running_build: int = env['build_number'] if running_build != expected_build: print( @@ -92,6 +92,19 @@ def bootstrap() -> None: os.environ['SSL_CERT_FILE'] = os.environ['REQUESTS_CA_BUNDLE'] = ( certifi.where()) + # On Windows I'm seeing the following error creating asyncio loops in + # background threads with the default proactor setup: + # ValueError: set_wakeup_fd only works in main thread of the main + # interpreter + # So let's explicitly request selector loops. + # Interestingly this error only started showing up once I moved + # Python init to the main thread; previously the various asyncio + # bg thread loops were working fine (maybe something caused them + # to default to selector in that case?.. + if sys.platform == 'win32': + import asyncio + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + # Clear out the standard quit/exit messages since they don't work for us. # pylint: disable=c-extension-no-member if not TYPE_CHECKING: diff --git a/src/ballistica/ballistica.cc b/src/ballistica/ballistica.cc index d35e6928..2b7e9b99 100644 --- a/src/ballistica/ballistica.cc +++ b/src/ballistica/ballistica.cc @@ -32,7 +32,7 @@ namespace ballistica { // These are set automatically via script; don't modify them here. -const int kAppBuildNumber = 20858; +const int kAppBuildNumber = 20860; const char* kAppVersion = "1.7.7"; // Our standalone globals. diff --git a/src/ballistica/python/python_context_call.cc b/src/ballistica/python/python_context_call.cc index 3ce54a87..15fa1327 100644 --- a/src/ballistica/python/python_context_call.cc +++ b/src/ballistica/python/python_context_call.cc @@ -130,7 +130,7 @@ void PythonContextCall::PrintContext() { std::string s = std::string(" root call: ") + object().Str(); s += ("\n root call origin: " + file_loc()); s += g_python->GetContextBaseString(); - Log(LogLevel::kError, s); + PySys_WriteStderr("%s\n", s.c_str()); } } // namespace ballistica diff --git a/tools/efro/log.py b/tools/efro/log.py index 2ae4a5f6..116d0de5 100644 --- a/tools/efro/log.py +++ b/tools/efro/log.py @@ -360,13 +360,19 @@ def setup_logging(log_path: str | Path | None, # Wire logger output to go to a structured log file. # Also echo it to stderr IF we're running in a terminal. + # UPDATE: Actually gonna always go to stderr. Is there a + # reason we shouldn't? This makes debugging possible if all + # we have is access to a non-interactive terminal or file dump. + # We could add a '--quiet' arg or whatnot to change this behavior. + # Note: by passing in the *original* stderr here before we # (potentially) replace it, we ensure that our log echos # won't themselves be intercepted and sent to the logger # which would create an infinite loop. loghandler = LogHandler( log_path, - echofile=sys.stderr if sys.stderr.isatty() else None, + # echofile=sys.stderr if sys.stderr.isatty() else None, + echofile=sys.stderr, suppress_non_root_debug=suppress_non_root_debug, cache_size_limit=cache_size_limit)