Files
workinf_Blender_Wasm/tools/web/build-blender-native.sh
mes123456 6090995999
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
perf(web): reuse incremental build and status caches
2026-09-06 10:27:26 +08:00

60 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
"${repo_root}/tools/web/configure-blender-native.sh" "$@"
source "${repo_root}/tools/web/native-build-env.sh"
build_target="${BLENDER_BUILD_TARGET:-blender}"
jobs="${BLENDER_BUILD_JOBS:-$(WEB_BUILD_MEMORY_GIB_PER_JOB=6 WEB_BUILD_JOBS_CAP=12 bash "${repo_root}/tools/web/compute-build-jobs.sh")}"
cmake --build "${BLENDER_BUILD_DIR}" --target "${build_target}" --parallel "${jobs}"
test -x "${BLENDER_BUILD_DIR}/bin/blender"
# Blender's bundled asset-library add-on imports cattrs, while upstream's
# install rules only copy NumPy, requests, and zstandard. Copy the small
# pure-Python dependency set into the portable bundle after installation.
if [[ "${build_target}" == "install" ]]; then
bundle_site="${BLENDER_BUILD_DIR}/bin/5.2/python/lib/python3.13/site-packages"
source_site="${BLENDER_PYTHON_ROOT}/lib/python3.13/site-packages"
mkdir -p "${bundle_site}"
for package in cattrs attrs attr cattr; do
if [[ -d "${source_site}/${package}" ]]; then
rm -rf "${bundle_site:?}/${package}"
cp -a "${source_site}/${package}" "${bundle_site}/"
fi
done
if [[ -d "${source_site}/numpy.libs" ]]; then
rm -rf "${bundle_site:?}/numpy.libs"
cp -a "${source_site}/numpy.libs" "${bundle_site}/"
fi
for module in typing_extensions.py; do
if [[ -f "${source_site}/${module}" ]]; then
cp -a "${source_site}/${module}" "${bundle_site}/"
fi
done
for metadata in "${source_site}"/{cattrs,attrs,typing_extensions}-*.dist-info; do
if [[ -d "${metadata}" ]]; then
cp -a "${metadata}" "${bundle_site}/"
fi
done
fi
# Keep historical task cards runnable while the clean native build lives in a
# separate directory. Preserve a copied-host binary before replacing it.
legacy_binary="${repo_root}/build_blender_5.2.0/bin/blender"
if [[ "${legacy_binary}" != "${BLENDER_BUILD_DIR}/bin/blender" ]]; then
mkdir -p "$(dirname "${legacy_binary}")"
if [[ -e "${legacy_binary}" && ! -L "${legacy_binary}" ]]; then
legacy_backup="${legacy_binary}.copied-host"
if [[ ! -e "${legacy_backup}" ]]; then
mv "${legacy_binary}" "${legacy_backup}"
else
echo "legacy Blender backup already exists: ${legacy_backup}" >&2
exit 3
fi
fi
ln -sfn "../../build_blender_native/bin/blender" "${legacy_binary}"
fi
"${BLENDER_BUILD_DIR}/bin/blender" --version | head -3
printf 'native-build-ok binary=%s\n' "${BLENDER_BUILD_DIR}/bin/blender"