60 lines
2.4 KiB
Bash
Executable File
60 lines
2.4 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:-2}"
|
|
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"
|