aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Cho2023-05-09 13:27:25 +0900
committerXavier Cho2023-05-09 13:27:25 +0900
commite9573e2d4727e39207ad668b883699138cf34bb7 (patch)
tree6ec1683ed7ecd7e216d0f47bca436725d7f0cec1
parentbb983567c12849a0d604ab748f204146c87e43a8 (diff)
downloadaur-e9573e2d4727e39207ad668b883699138cf34bb7.tar.gz
Fix Embree patch and compatibility with Python 3.11
* Replaced ninja with makepkg-cg. * Compatibility with Python 3.11 and GCC 12. * Support for MaterialX and Intel OpenCL FPGA kernels. (Most of those are from stativ's blender-git AUR package: https://aur.archlinux.org/packages/blender-git)
-rw-r--r--.SRCINFO16
-rw-r--r--.gitignore1
-rw-r--r--PKGBUILD112
-rw-r--r--embree.patch17
-rw-r--r--python11.patch32
5 files changed, 138 insertions, 40 deletions
diff --git a/.SRCINFO b/.SRCINFO
index f3b0dd79197e..a17e1547d5c0 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = upbge-git
pkgdesc = Uchronia Project Blender Game Engine fork of Blender Game Engine
- pkgver = 128141.37504273e18
+ pkgver = 129501.11ca6b54643
pkgrel = 1
url = https://upbge.org/
install = upbge.install
@@ -9,11 +9,9 @@ pkgbase = upbge-git
license = GPL
makedepends = git
makedepends = subversion
- makedepends = make
makedepends = cmake
makedepends = clang
makedepends = boost
- makedepends = ninja
makedepends = mesa
makedepends = llvm
makedepends = wayland
@@ -46,6 +44,14 @@ pkgbase = upbge-git
optdepends = cuda: CUDA support in Cycles
optdepends = optix>=7.1.0: OptiX support in Cycles
optdepends = openpgl: Path guiding support in Cycles
+ optdepends = materialx: MaterialX materials
+ optdepends = level-zero-headers: Intel OpenCL FPGA kernels (all four needed)
+ optdepends = intel-compute-runtime: Intel OpenCL FPGA kernels (all four needed)
+ optdepends = intel-graphics-compiler: Intel OpenCL FPGA kernels (all four needed)
+ optdepends = intel-oneapi-basekit: Intel OpenCL FPGA kernels (all four needed)
+ optdepends = gcc12: Compile CUDA support in Cycles
+ optdepends = gcc12-libs: Compile CUDA support in Cycles
+ optdepends = makepkg-cg: Control resources during compilation
optdepends = usd: USD export Scene
provides = blender
conflicts = blender
@@ -55,6 +61,7 @@ pkgbase = upbge-git
source = blender-translations.git::git+https://projects.blender.org/blender/blender-translations.git
source = blender-dev-tools.git::git+https://projects.blender.org/blender/blender-dev-tools.git
source = upbge.desktop
+ source = python11.patch
source = usd_python.patch
source = SelectCudaComputeArch.patch
source = embree.patch
@@ -64,8 +71,9 @@ pkgbase = upbge-git
sha256sums = SKIP
sha256sums = SKIP
sha256sums = b5c9bf4fa265389db4b3f23e96d74cc86c51d908b8943eb80967614d8af1ea1a
+ sha256sums = ae81c77dd41736bbcf65e31fa77477979b214004be3423e10eddef7af3f12dff
sha256sums = 5b98624ec2ce39fdb33836527343d026edbb63c948850b20c1c20c019d24f434
sha256sums = 155c04f971d3f45618a89fa73d91e21ba493ae24029475e18192c49c3fcd8cb4
- sha256sums = 6e7392cfb159165dfd63e0cc7858e1ffdabc2aae4126288aca6a15082d3c7efc
+ sha256sums = e34fa6034ca065cdddc380ef7fb1ab094349203dc6d63b2526cdf4740b1eaf02
pkgname = upbge-git
diff --git a/.gitignore b/.gitignore
index 8eb7df3001c4..f499e2929632 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,5 +6,6 @@
!embree.patch
!SelectCudaComputeArch.patch
!usd_python.patch
+!python11.patch
!.SRCINFO
!.gitignore
diff --git a/PKGBUILD b/PKGBUILD
index ceb769b97755..483583f0040d 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,7 +3,7 @@
#shellcheck disable=SC2015
pkgname=upbge-git
-pkgver=128141.37504273e18
+pkgver=129501.11ca6b54643
pkgrel=1
pkgdesc="Uchronia Project Blender Game Engine fork of Blender Game Engine"
arch=("i686" "x86_64")
@@ -14,8 +14,16 @@ depends=("alembic" "embree" "libgl" "python" "python-numpy" "openjpeg2" "libharu
optdepends=("cuda: CUDA support in Cycles"
"optix>=7.1.0: OptiX support in Cycles"
"openpgl: Path guiding support in Cycles"
+ "materialx: MaterialX materials"
+ "level-zero-headers: Intel OpenCL FPGA kernels (all four needed)"
+ "intel-compute-runtime: Intel OpenCL FPGA kernels (all four needed)"
+ "intel-graphics-compiler: Intel OpenCL FPGA kernels (all four needed)"
+ "intel-oneapi-basekit: Intel OpenCL FPGA kernels (all four needed)"
+ "gcc12: Compile CUDA support in Cycles"
+ "gcc12-libs: Compile CUDA support in Cycles"
+ "makepkg-cg: Control resources during compilation"
"usd: USD export Scene")
-makedepends=("git" "subversion" "make" "cmake" "clang" "boost" "ninja" "mesa" "llvm" wayland{,-protocols}
+makedepends=("git" "subversion" "cmake" "clang" "boost" "mesa" "llvm" wayland{,-protocols}
"libxkbcommon")
provides=("blender")
conflicts=("blender")
@@ -34,6 +42,7 @@ source=(
"blender-translations.git::git+https://projects.blender.org/blender/blender-translations.git"
"blender-dev-tools.git::git+https://projects.blender.org/blender/blender-dev-tools.git"
upbge.desktop
+ python11.patch
usd_python.patch
SelectCudaComputeArch.patch
embree.patch)
@@ -44,9 +53,10 @@ sha256sums=(
"SKIP"
"SKIP"
"b5c9bf4fa265389db4b3f23e96d74cc86c51d908b8943eb80967614d8af1ea1a"
+ "ae81c77dd41736bbcf65e31fa77477979b214004be3423e10eddef7af3f12dff"
"5b98624ec2ce39fdb33836527343d026edbb63c948850b20c1c20c019d24f434"
"155c04f971d3f45618a89fa73d91e21ba493ae24029475e18192c49c3fcd8cb4"
- "6e7392cfb159165dfd63e0cc7858e1ffdabc2aae4126288aca6a15082d3c7efc")
+ "e34fa6034ca065cdddc380ef7fb1ab094349203dc6d63b2526cdf4740b1eaf02")
pkgver() {
cd "$srcdir/upbge"
@@ -61,22 +71,53 @@ prepare() {
fi
((DISABLE_USD)) || git -C "$srcdir/upbge" apply -v "${srcdir}"/usd_python.patch
git -C "$srcdir/upbge" apply -v "${srcdir}"/embree.patch
+ git -C "$srcdir/upbge" apply -v "${srcdir}"/python11.patch
}
build() {
_pyver=$(python -c "from sys import version_info; print(\"%d.%d\" % (version_info[0],version_info[1]))")
msg "Python version detected: ${_pyver}"
+ # determine whether we can install python modules
+ if [[ -n "$_pyver" ]]; then
+ _CMAKE_FLAGS+=( -DWITH_PYTHON=$_pyver \
+ -DWITH_PYTHON_MODULE=OFF \
+ -DWITH_PYTHON_INSTALL=ON \
+ -DWITH_PYTHON_SAFETY=ON )
+ fi
+
+ export CC=`which gcc-12`
+ export CXX=`which g++-12`
+ export CUDAHOSTCXX="$CC"
+
+ _CMAKE_FLAGS+=( -DWITH_CLANG=ON \
+ -DWITH_CYCLES=ON )
+
+ # check for oneapi
+ export _ONEAPI_CLANG=/opt/intel/oneapi/compiler/latest/linux/bin-llvm/clang
+ export _ONEAPI_CLANGXX=/opt/intel/oneapi/compiler/latest/linux/bin-llvm/clang++
+ [[ -f "$_ONEAPI_CLANG" ]] && (
+ _CMAKE_FLAGS+=( -DWITH_CYCLES_DEVICE_ONEAPI=ON \
+ -DWITH_CYCLES_ONEAPI_BINARIES=ON \
+ -DWITH_CLANG=ON )
+ )
+ [[ -f /opt/bin/clang ]] && _CMAKE_FLAGS+=( -DLLVM_ROOT_DIR=/opt/lib )
+
# determine whether we can precompile CUDA kernels
_CUDA_PKG=$(pacman -Qq cuda 2>/dev/null) || true
if [ "$_CUDA_PKG" != "" ]; then
- _CMAKE_FLAGS+=( -DWITH_CYCLES_CUDA_BINARIES=ON
- -DCUDA_TOOLKIT_ROOT_DIR=/opt/cuda )
- [ -f "/usr/lib/ccache/bin/nvcc-ccache" ] && export CUDA_NVCC_EXECUTABLE=/usr/lib/ccache/bin/nvcc-ccache
+ CUDAHOSTCXX=`which gcc-12`
+ # https://wiki.blender.org/wiki/Building_Blender/GPU_Binaries
+ _CMAKE_FLAGS+=( -DWITH_CYCLES_CUDA_BINARIES=ON \
+ -DWITH_COMPILER_ASAN=OFF \
+ -DCMAKE_CUDA_HOST_COMPILER=`which gcc-12` )
+ fi
- if _cuda_gcc=$(basename "$(readlink /opt/cuda/bin/gcc)") ; then
- [ -L "/usr/lib/ccache/bin/$_cuda_gcc" ] && export CUDAHOSTCXX=/usr/lib/ccache/bin/"$_cuda_gcc"
- fi
+ # check for materialx
+ _MX_PKG=$(pacman -Qq materialx 2>/dev/null) || true
+ if [ "$_MX_PKG" != "" ]; then
+ _CMAKE_FLAGS+=( -DWITH_MATERIALX=ON )
+ PATH="/usr/materialx:$PATH"
fi
# check for optix
@@ -93,30 +134,45 @@ build() {
-DUSD_ROOT=/usr )
fi
- cmake -G "Ninja" -S "$srcdir/upbge" -B "$srcdir/build" \
- -C "$srcdir/upbge/build_files/cmake/config/blender_release.cmake" \
- -DWITH_GAMEENGINE=ON \
- -DWITH_PLAYER=ON \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_BUILD_TYPE=Release \
- -DWITH_INSTALL_PORTABLE=OFF \
- -DWITH_SYSTEM_GLEW=ON \
- -DWITH_PYTHON_INSTALL=OFF \
- -DWITH_FFTW3=ON \
- -DWITH_CODEC_FFMPEG=ON \
- -DWITH_MOD_OCEANSIM=ON \
- -DXR_OPENXR_SDK_ROOT_DIR=/usr \
- -DPYTHON_VERSION="${_pyver}" \
- "${_CMAKE_FLAGS[@]}"
- export NINJA_STATUS="[%p | %f<%r<%u | %cbps ] "
-# shellcheck disable=SC2086 # allow MAKEFLAGS to split when multiple flags provided.
- ninja -C "$srcdir/build" ${MAKEFLAGS:--j$(nproc)}
+ (2>&1 CUDAHOSTCXX="$CUDAHOSTCXX" cmake -S "$srcdir/upbge" -B build --fresh \
+ -C "${srcdir}/upbge/build_files/cmake/config/blender_release.cmake" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DWITH_STATIC_LIBS=OFF \
+ -DWITH_INSTALL_PORTABLE=OFF \
+ -DWITH_LIBS_PRECOMPILED=OFF \
+ -DWITH_GAMEENGINE=ON \
+ -DWITH_PLAYER=ON \
+ -DWITH_PYTHON_INSTALL=OFF \
+ -DWITH_FFTW3=ON \
+ -DWITH_CODEC_FFMPEG=ON \
+ -DWITH_MOD_OCEANSIM=ON \
+ -DXR_OPENXR_SDK_ROOT_DIR=/usr \
+ -DPYTHON_VERSION="${_pyver}" \
+ ${_CMAKE_FLAGS[@]}) #> "$srcdir/../cmake_out"
+ #--trace-expand \
+
+ cd build
+
+ MAKE_CMD="make ${MAKEFLAGS:--j1}"
+
+ USING_MAKEPKG_CG="$(systemctl --user -t slice | grep -o makepkg-cg-`id -u`-'[[:digit:]]\+'.slice'[[:space:]]\+'loaded'[[:space:]]\+'active)" || true
+ MAKEPKG_CG_WARNING=$(
+ cat << 'EOF'
+If you use systemd, consider trying `makepkg-cg`.
+This build is otherwise very likely to use more RAM than
+the system has, especially with a high `-j`!
+EOF
+ )
+ [[ -z "$USING_MAKEPKG_CG" ]] && warning "$MAKEPKG_CG_WARNING"
+
+ $MAKE_CMD
}
package() {
export DESTDIR="$pkgdir"
- ninja -C "$srcdir/build" install
+ make -C "$srcdir/build" install
#undo rpath clean in cmake_install ( faster than patching CMakeLists.txt)
cp "$srcdir/build/bin/blender" "$pkgdir/usr/bin/blender"
diff --git a/embree.patch b/embree.patch
index 6aaad01275cb..5afa3bf3cfb0 100644
--- a/embree.patch
+++ b/embree.patch
@@ -1,23 +1,24 @@
diff --git a/build_files/cmake/Modules/FindEmbree.cmake b/build_files/cmake/Modules/FindEmbree.cmake
-index 90cf23d3e13..f625efaa542 100644
+index c7f9bc5b220..4e3bcdca897 100644
--- a/build_files/cmake/Modules/FindEmbree.cmake
+++ b/build_files/cmake/Modules/FindEmbree.cmake
-@@ -10,5 +10,8 @@
+@@ -10,6 +10,9 @@
# EMBREE_ROOT_DIR, The base directory to search for Embree.
# This can also be an environment variable.
# EMBREEFOUND, If false, do not try to use Embree.
+#
+# also defined, but not for general use are
+# EMBREE_LIBRARY, where to find the Embree library.
-
+
# If EMBREE_ROOT_DIR was defined in the environment, use it.
-@@ -63,14 +66,23 @@ FOREACH(COMPONENT ${_embree_FIND_COMPONENTS})
+ IF(NOT EMBREE_ROOT_DIR AND NOT $ENV{EMBREE_ROOT_DIR} STREQUAL "")
+@@ -103,14 +106,23 @@ FOREACH(COMPONENT ${_embree_FIND_COMPONENTS})
+ LIST(APPEND _embree_LIBRARIES "${EMBREE_${UPPERCOMPONENT}_LIBRARY}")
ENDFOREACH()
-
+FIND_LIBRARY(EMBREE_LIBRARY
+ NAMES
-+ embree3
++ embree4
+ HINTS
+ ${_embree_SEARCH_DIRS}
+ PATH_SUFFIXES
@@ -38,10 +39,10 @@ index 90cf23d3e13..f625efaa542 100644
ENDIF()
diff --git a/intern/cycles/blender/CMakeLists.txt b/intern/cycles/blender/CMakeLists.txt
-index 2316800e21e..591841152e2 100644
+index ceb024ba5e7..d3320545c1f 100644
--- a/intern/cycles/blender/CMakeLists.txt
+++ b/intern/cycles/blender/CMakeLists.txt
-@@ -67,6 +67,12 @@ if(WITH_CYCLES_LOGGING)
+@@ -80,6 +80,12 @@ if(WITH_CYCLES_LOGGING)
)
endif()
diff --git a/python11.patch b/python11.patch
new file mode 100644
index 000000000000..f617f1d2a227
--- /dev/null
+++ b/python11.patch
@@ -0,0 +1,32 @@
+diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp
+index c66bcc722d4..a2c0eee4efc 100644
+--- a/source/gameengine/GameLogic/SCA_PythonController.cpp
++++ b/source/gameengine/GameLogic/SCA_PythonController.cpp
+@@ -36,7 +36,6 @@
+
+ #ifdef WITH_PYTHON
+ # include "compile.h"
+-# include "eval.h"
+ # include "py_capi_utils.h"
+ #endif // WITH_PYTHON
+
+diff --git a/source/gameengine/VideoTexture/Texture.cpp b/source/gameengine/VideoTexture/Texture.cpp
+index bbf4fbb2965..34a58799880 100644
+--- a/source/gameengine/VideoTexture/Texture.cpp
++++ b/source/gameengine/VideoTexture/Texture.cpp
+@@ -445,11 +445,11 @@ EXP_PYMETHODDEF_DOC(Texture, refresh, "Refresh texture from source")
+ * "refresh" method), because the depsgraph has not been warned yet. */
+ bool needs_notifier = m_source && (
+ #ifdef WITH_FFMPEG
+- _Py_IS_TYPE(&m_source->ob_base, &VideoFFmpegType) ||
+- _Py_IS_TYPE(&m_source->ob_base, &ImageFFmpegType) ||
++ Py_IS_TYPE(&m_source->ob_base, &VideoFFmpegType) ||
++ Py_IS_TYPE(&m_source->ob_base, &ImageFFmpegType) ||
+ #endif // WITH_FFMPEG
+- _Py_IS_TYPE(&m_source->ob_base, &ImageMixType) ||
+- _Py_IS_TYPE(&m_source->ob_base, &ImageViewportType));
++ Py_IS_TYPE(&m_source->ob_base, &ImageMixType) ||
++ Py_IS_TYPE(&m_source->ob_base, &ImageViewportType));
+ if (needs_notifier) {
+ /* This update notifier will be flushed next time
+ * BKE_scene_graph_update_tagged will be called */