From f0b8845dbc0981b1e545e23cd435e8bab50ae3a4 Mon Sep 17 00:00:00 2001 From: Eric Date: Sun, 19 May 2024 19:06:50 -0700 Subject: [PATCH] wsl build fixes/workarounds --- .efrocachemap | 32 ++++++++++++++++---------------- CHANGELOG.md | 4 ++++ tools/batools/staging.py | 21 +++++++++++++++++++++ 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index fd4f8f74..6e45250e 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4046,18 +4046,18 @@ "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "c6e86f716993e4db6d40b387c1887bf9", "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "fdb8c01b631d5475740f0101b301ff03", "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "8c58b1dff5c711bf8dfe6bcc0c033e02", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "8d5e1c27b1040feedce50b4b4fd8497f", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "474a2b87d36dfb930b8dc7dd49d47cb7", "build/prefab/full/mac_arm64_gui/release/ballisticakit": "4bd338604cf6288636422ef3b62e5d44", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "7a129df9937117ace9e0e2473c2d73bd", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "bb54dbc392300ee78f33bc2800aee546", "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "316e826a593499760060c1c2c09fe278", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "a8d1b5a90491dc49396a053d6e797f0f", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "1ef496d1816996878652807805722069", "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "606f7ed5a63fad5acbdba62b8f2e953f", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "719a16d807335829265808821aedb732", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "89513725bac32ca45365113f0a52e6fe", "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "f98f149307ee2096aa5c82fb666d96b2", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "addf57ff7e742a1d411601897441fa8f", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "cd2fee63bc2017caa866e52b57412484", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "5ff2d6b4ef8a60a5805debcde460b835", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "407f642cfebc38c14eae5526c2a27c68", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "4d4255c3a6ff19e95a3e2a6d5811b3a7", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "0dfe7d534e684d0d36b7d87b1f017be9", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "e4ebfac891518fc9e4dfc806be42d49d", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "8daea1d15329b662419b1c5606318377", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "9162b53189b80d4e5938cd142acd2a1a", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "2226d0e2d34051d962320c86464f3a2d", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "9162b53189b80d4e5938cd142acd2a1a", @@ -4074,14 +4074,14 @@ "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "299b6c4b83966040618b27563b700c2a", "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "08c2f91d086e6f3fa73ebc299112358a", "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "299b6c4b83966040618b27563b700c2a", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "434a62eab6f545afd9afae607a8acb25", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "51b4809a050b412f4d9354c76587775a", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "4012fbee0d10dca77a0ef61488cc4ca8", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "252ede4ca17f27db81ceb0d077091fb4", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "b064c926d89d5259cb58d4456be96fbc", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "27812420b5c838755c13a70eb46a42a5", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "866ed9a4d45775fc2f94a440e4bc68d6", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "dfc573dcb937e27276f7cd4b7a52bb8c", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "71f34c5440a6a9163ecd89b7011c111d", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "7f01c7b5a30449344d3d75e984fa1dda", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "9c2ce406b476d6eb1035222e9a814e42", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "c130539910a8d495df3f4869723154a9", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "ce70a22b90984b649ea6710591208099", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "7cde4323d9f150942c0234b785d92d1b", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "6013f50d91d6188e02e25c45176e22ee", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "d644f9fc77040378625e7bdc0cba172b", "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/CHANGELOG.md b/CHANGELOG.md index 7069bc7e..cb304eb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,10 @@ - The `windows-debug` and `windows-release` Makefile targets should properly run the game again (these build the Windows version of the game from a WSL environment). +- Added a workaround for WSL builds giving permission errors when staging asset + files that already exist. Please holler if you are building with WSL and still + running into any sort of errors, as I would love to make that path as reliable + as possible. ### 1.7.34 (build 21823, api 8, 2024-04-26) - Bumped Python version from 3.11 to 3.12 for all builds and project tools. One diff --git a/tools/batools/staging.py b/tools/batools/staging.py index 911e5794..72da8d75 100755 --- a/tools/batools/staging.py +++ b/tools/batools/staging.py @@ -69,6 +69,7 @@ class AssetStager: self.debug: bool | None = None self.builddir: str | None = None self.dist_mode: bool = False + self.wsl_chmod_workaround = False def run(self, args: list[str]) -> None: """Do the thing.""" @@ -80,6 +81,16 @@ class AssetStager: f'{Clr.RST}{Clr.BLU}...{Clr.RST}' ) + # Do our janky wsl permissions workaround if need be. + if self.wsl_chmod_workaround and self.dst is not None: + cmd = ['chmod', '-R', 'u+w', self.dst] + print( + f'{Clr.CYN}' + f'Running WSL permissions workaround: {cmd}' + f'{Clr.RST}...' + ) + subprocess.run(cmd, check=True) + # Ok, now for every top level dir in src, come up with a nice single # command to sync the needed subset of it to dst. @@ -214,6 +225,16 @@ class AssetStager: else: raise RuntimeError('No valid platform arg provided.') + # Special case: running rsync to a windows drive via WSL fails + # to overwrite non-writable files. + # + # See: https://github.com/microsoft/WSL/issues/5087 + # + # As a janky workaround, make everything in our dst dir writable + # by us before we do our work. + if self.projroot.startswith('/mnt/c/'): + self.wsl_chmod_workaround = True + def _parse_android_args(self, args: list[str]) -> None: # On Android we get nitpicky with exactly what we want to copy # in since we can speed up iterations by installing stripped