mirror of
https://git.quad4.io/RNS-Things/MeshChatX.git
synced 2026-05-11 18:14:51 +00:00
feat(build): add checks for miniaudio library compatibility in macOS universal build script
This commit is contained in:
@@ -31,6 +31,15 @@ else
|
||||
echo "Reusing prebuilt frontend assets in meshchatx/public/."
|
||||
fi
|
||||
cross-env ARCH=arm64 pnpm run build-backend
|
||||
_arm_miniaudio="build/exe/darwin-arm64/lib/_miniaudio.abi3.so"
|
||||
if [[ -f "$_arm_miniaudio" ]]; then
|
||||
_ft=$(file --brief --no-pad "$_arm_miniaudio" 2>/dev/null || true)
|
||||
if [[ "$_ft" == *x86_64* && "$_ft" != *arm64* ]]; then
|
||||
echo "darwin-arm64 cx_Freeze output has x86_64-only _miniaudio.abi3.so; universal lipo will fail." >&2
|
||||
echo "Rebuild miniaudio in the Poetry env (see scripts/ci/github-install-deps.sh) or fix compiler flags." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [[ -n "${PYTHON_CMD_X64:-}" ]]; then
|
||||
cross-env ARCH=x64 PYTHON_CMD="$PYTHON_CMD_X64" pnpm run build-backend
|
||||
else
|
||||
|
||||
@@ -32,5 +32,36 @@ python -m poetry check --lock
|
||||
python -m poetry install --no-interaction --no-ansi
|
||||
python -m poetry run python scripts/patch_lxst_pyogg_ogg_ctypes.py
|
||||
|
||||
# Python 3.14 may install miniaudio from sdist; a mis-linked x86_64-only
|
||||
# _miniaudio.abi3.so in the arm64 cx_Freeze tree differs from the x64 slice and
|
||||
# breaks @electron/universal (lipo cannot merge two x86_64-only Mach-O files).
|
||||
if [[ "$(uname -s)" == "Darwin" && "$(uname -m)" == "arm64" ]]; then
|
||||
if ! poetry run python -c "
|
||||
import importlib.util
|
||||
import pathlib
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
spec = importlib.util.find_spec('miniaudio')
|
||||
if not spec or not spec.origin:
|
||||
sys.exit(0)
|
||||
so = pathlib.Path(spec.origin).resolve().parent / '_miniaudio.abi3.so'
|
||||
if not so.is_file():
|
||||
sys.exit(0)
|
||||
out = subprocess.check_output(['file', str(so)], text=True)
|
||||
if 'x86_64' in out and 'arm64' not in out:
|
||||
sys.exit(1)
|
||||
sys.exit(0)
|
||||
"; then
|
||||
echo "Rebuilding miniaudio for arm64 (was x86_64-only)." >&2
|
||||
(
|
||||
export ARCHFLAGS="-arch arm64"
|
||||
export CFLAGS="-arch arm64 ${CFLAGS:-}"
|
||||
export CXXFLAGS="-arch arm64 ${CXXFLAGS:-}"
|
||||
poetry run python -m pip install --force-reinstall --no-cache-dir --no-binary miniaudio "miniaudio>=1.70,<2"
|
||||
)
|
||||
fi
|
||||
fi
|
||||
|
||||
pnpm config set verify-store-integrity true
|
||||
pnpm install --frozen-lockfile
|
||||
|
||||
Reference in New Issue
Block a user