wsl build fixes/workarounds

This commit is contained in:
Eric 2024-05-19 19:06:50 -07:00
parent 7152c74f7f
commit f0b8845dbc
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
3 changed files with 41 additions and 16 deletions

32
.efrocachemap generated
View File

@ -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",

View File

@ -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

View File

@ -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