aboutsummarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD280
1 files changed, 221 insertions, 59 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 887f010390dc..2099e39b8515 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,79 +1,241 @@
+#!/bin/bash
+# Maintainer: Xavier Cho <mysticfallband@gmail.com>
+# Adapted from blender-git AUR package.
+
+#Configuration:
+#Use: makepkg VAR1=0 VAR2=1 to enable(1) disable(0) a feature
+#Use: {yay,paru} --mflags=VAR1=0,VAR2=1
+#Use: aurutils --margs=VAR1=0,VAR2=1
+#Use: VAR1=0 VAR2=1 pamac
+
+# Use FRAGMENT=#{commit,tag,brach}=xxx for bisect build
+_fragment="${FRAGMENT:-#branch=master}"
+
pkgname=upbge-git
-pkgver=72419.51e8bf4798
+pkgver=142060.aa50f945acc
pkgrel=1
pkgdesc="Uchronia Project Blender Game Engine fork of Blender Game Engine"
arch=('i686' 'x86_64')
url="https://upbge.org/"
-depends=('libgl' 'python' 'desktop-file-utils' 'hicolor-icon-theme'
- 'ffmpeg' 'fftw' 'openal' 'freetype2' 'libxi' 'openimageio' 'opencolorio'
- 'openshadinglanguage' 'libtiff' 'libpng')
-optdepends=('cuda: CUDA support in Cycles')
-makedepends=('git' 'cmake' 'boost' 'mesa')
+depends+=('alembic' 'embree' 'libgl' 'python' 'python-numpy' 'openjpeg2' 'libharu' 'potrace' 'openxr'
+ 'ffmpeg' 'fftw' 'openal' 'freetype2' 'libxi' 'openimageio' 'opencolorio' 'sdl2'
+ 'openvdb' 'opencollada' 'opensubdiv' 'openshadinglanguage' 'libtiff' 'libpng'
+ 'python' 'python-zstandard' 'ccache')
+depends+=('libdecor' 'libepoxy')
+optdepends=('cuda: CUDA support in Cycles'
+ 'optix>=7.4.0: OptiX support in Cycles'
+ 'usd=21.05: USD export Scene'
+ 'openpgl: Intel Path Guiding library in Cycles'
+ 'openimagedenoise: Intel Open Image Denoise support in compositing'
+ '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'
+ 'makepkg-cg: Control resources during compilation')
+makedepends+=('git' 'cmake' 'boost' 'mesa' 'llvm' 'clang' 'subversion')
+makedepends+=('wayland-protocols')
+makedepends+=('cython')
provides=('blender')
-conflicts=('blender')
+conflicts=('blender' 'blender-4.1-bin')
license=('GPL')
-install=upbge.install
-# NOTE: the source array has to be kept in sync with .gitmodules
-# the submodules has to be stored in path ending with git to match
-# the path in .gitmodules.
-# More info:
-# http://wiki.blender.org/index.php/Dev:Doc/Tools/Git
-source=('git://github.com/UPBGE/blender.git' \
- 'blender-addons.git::git://git.blender.org/blender-addons.git' \
- 'blender-addons-contrib.git::git://git.blender.org/blender-addons-contrib.git' \
- 'blender-translations.git::git://git.blender.org/blender-translations.git' \
- 'blender-dev-tools.git::git://git.blender.org/blender-dev-tools.git' \
- upbge.desktop)
-md5sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP')
-
-# determine whether we can precompile CUDA kernels
-_CUDA_PKG=`pacman -Qq cuda 2>/dev/null` || true
-if [ "$_CUDA_PKG" != "" ]; then
- _EXTRAOPTS="-DWITH_CYCLES_CUDA_BINARIES=ON \
- -DCUDA_TOOLKIT_ROOT_DIR=/opt/cuda"
-fi
+source=("upbge::git+https://github.com/UPBGE/upbge${_fragment}"
+ "blender-addons::git+https://github.com/UPBGE/blender-addons"
+ 'blender-addons-contrib::git+https://github.com/blender/blender-addons-contrib'
+ 'blender/translations::git+https://github.com/blender/blender-translations'
+ 'blender/dev_tools::git+https://github.com/blender/blender-dev-tools'
+ 'blender/assets::svn+https://svn.blender.org/svnroot/bf-blender/trunk/lib/assets'
+ # Patches...
+ '0001-use-github.com-for-make-update-git.patch'
+ '0004-fix-opencollada-pcre.patch' #fix broken search for opencollada pcre
+ )
+sha256sums=('SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ '0bb8ac4cba0ac00999790087c51e601d185b78a96081f08a7c7afb8c0f4b0d7c'
+ '6beedc541e33288a282f57cd2bd09860f333154027b6175e9f61cce49b8db5df')
pkgver() {
- cd "$srcdir/blender"
+ cd "$srcdir/upbge"
printf "%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
prepare() {
- cd "$srcdir/blender"
- # update the submodules
- git submodule update --init --recursive
- git submodule foreach git checkout master
- git submodule foreach git pull --rebase origin master
+ cd "$srcdir"
+ mkdir -p upbge/scripts/addons
+ rm -rf upbge/scripts/addons{,/contrib}
+ mv blender-addons upbge/scripts/addons
+ mv blender-addons-contrib upbge/scripts/addons/contrib
+ cd "upbge"
+ # update the submodules
+ git -c protocol.file.allow=always submodule update --init --recursive --remote
+ git apply -v "${srcdir}"/*.patch
}
build() {
- mkdir -p "$srcdir/blender-build"
- cd "$srcdir/blender-build"
-
- cmake "$srcdir/blender" \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DWITH_INSTALL_PORTABLE=OFF \
- -DWITH_GAMEENGINE=ON \
- -DWITH_PLAYER=ON \
- -DWITH_OPENCOLORIO=ON \
- -DWITH_FFTW3=ON \
- -DWITH_SYSTEM_GLEW=ON \
- -DWITH_CODEC_FFMPEG=ON \
- -DWITH_PYTHON_INSTALL=OFF \
- -DPYTHON_VERSION=3.7m \
- -DWITH_MOD_OCEANSIM=ON \
- $_EXTRAOPTS
- make
+ export PATH="/opt/lib:/opt/bin:$PATH"
+ _pyver=$(python -c "from sys import version_info; print(\"%d.%d\" % (version_info[0],version_info[1]))")
+ msg "python version detected: ${_pyver}"
+
+ declare -a -g _CMAKE_FLAGS
+ # determine whether we can install python modules
+ if [[ -n "$_pyver" ]]; then
+ export PYTHON_LIBRARY=/usr/lib/libpython${_pyver}.so
+ export PYTHON_VERSION=${_pyver}
+ _CMAKE_FLAGS+=( -DPYTHON_VERSION=$_pyver \
+ -DPYTHON_LIBRARY=/usr/lib/libpython${_pyver}.so \
+ -DWITH_PYTHON_INSTALL=OFF \
+ -DWITH_PYTHON_SAFETY=OFF )
+ fi
+
+ export CUDAHOSTCXX="$CC"
+
+ _CMAKE_FLAGS+=( -DWITH_CLANG=ON \
+ -DWITH_CYCLES=ON \
+ -DCMAKE_LINKER_TYPE=BFD )
+
+ # Use CUDA_ARCH to build for specific GPU architecture
+ # Supports: single arch (sm_52) and list of archs (sm_52;sm_60)
+ [[ -v CUDA_ARCH ]] && _CMAKE_FLAGS+=(-DCYCLES_CUDA_BINARIES_ARCH="${CUDA_ARCH}")
+
+
+ # 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
+ CUDAHOSTCXX=`which gcc-12`
+ PATH="/usr/lib/gcc/x86_64-pc-linux-gnu/12.3.0/:$PATH"
+ # 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
+
+ # 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
+
+ _USD_PKG=$(pacman -Qq usd 2>/dev/null) || true
+ if [ "$_USD_PKG" != "" ]; then
+ _CMAKE_FLAGS+=( -DWITH_USD=ON )
+ PATH="/usr/share/usd:$PATH"
+ fi
+
+ # check for optix
+ _OPTIX_PKG=$(pacman -Qq optix 2>/dev/null) || true
+ if [ "$_OPTIX_PKG" != "" ]; then
+ _CMAKE_FLAGS+=( -DWITH_CYCLES_DEVICE_OPTIX=ON \
+ -DOPTIX_ROOT_DIR=/opt/optix )
+ fi
+
+ # check for open image denoise
+ _OIDN_PKG=$(pacman -Qq openimagedenoise 2>/dev/null) || true
+ if [ "$_OIDN_PKG" != "" ]; then
+ _CMAKE_FLAGS+=( -DWITH_OPENIMAGEDENOISE=ON )
+ fi
+
+ if [ -d /opt/rocm/bin ]; then
+ _CMAKE_FLAGS+=( -DWITH_CYCLES_HIP_BINARIES=ON
+ -DWITH_CYCLES_HYDRA_RENDER_DELEGATE:BOOL=FALSE
+ )
+ fi
+
+ if [[ -f "$srcdir/upbge/CMakeCache.txt" && -z "$KEEP_CMAKE_CACHE" ]]; then
+ rm "$srcdir/upbge/CMakeCache.txt"
+ fi
+
+ NUMPY_PY_INCLUDE=/usr/lib/python3.11/site-packages/numpy/core/include/
+ [[ -d "$NUMPY_PY_INCLUDE" ]] && (
+ _CMAKE_FLAGS+=( -DNUMPY_INCLUDE_DIR="$NUMPY_PY_INCLUDE" );
+ __CFLAGS="$CFLAGS -I$NUMPY_PY_INCLUDE"
+ __CXXFLAGS="$CXXFLAGS -I$NUMPY_PY_INCLUDE"
+ export CFLAGS="$__CFLAGS"
+ export CXXFLAGS="$__CXXFLAGS"
+ )
+
+ export CFLAGS="$CFLAGS -fno-lto"
+ export CXXFLAGS="$CXXFLAGS -fno-lto"
+ # Who even knows why this is needed
+ export CFLAGS="$CFLAGS -lSPIRV -lSPIRV-Tools -lSPIRV-Tools-opt -lSPIRV-Tools-link -lSPIRV-Tools-reduce -lSPIRV-Tools-shared -lglslang"
+ export CXXFLAGS="$CXXFLAGS -lSPIRV -lSPIRV-Tools -lSPIRV-Tools-opt -lSPIRV-Tools-link -lSPIRV-Tools-reduce -lSPIRV-Tools-shared -lglslang"
+ _CMAKE_FLAGS+=( -DCMAKE_C_FLAGS="$CFLAGS" );
+ _CMAKE_FLAGS+=( -DCMAKE_CXX_FLAGS="$CXXFLAGS" );
+
+ CMAKE_CMD=(CUDAHOSTCXX="$CUDAHOSTCXX" cmake -B "$srcdir/build" --fresh
+ -C "${srcdir}/upbge/build_files/cmake/config/blender_release.cmake"
+ -GUnix\ Makefiles
+ -DCMAKE_INSTALL_PREFIX=/usr
+ -DCMAKE_INSTALL_PREFIX_WITH_CONFIG="${pkgdir}/usr"
+ -DCMAKE_SKIP_INSTALL_RPATH=ON
+ -DCMAKE_SKIP_BUILD_RPATH=ON
+ -DCMAKE_BUILD_TYPE=Release
+ -DWITH_GAMEENGINE=ON
+ -DWITH_PLAYER=ON
+ -DWITH_SDL=ON
+ -DWITH_SDL_DYNLOAD=OFF
+ -DWITH_CODEC_FFMPEG=ON
+ -DWITH_MOD_OCEANSIM=ON
+ -DWITH_INSTALL_PORTABLE=OFF
+ -DWITH_LIBS_PRECOMPILED=OFF
+ -DWITH_STATIC_LIBS=OFF
+ -DXR_OPENXR_SDK_ROOT_DIR=/usr
+ -DSDL2_ROOT_DIR=/usr
+ -DPYTHON_VERSION="${_pyver}"
+ "${_CMAKE_FLAGS[@]}"
+ ) #> "$srcdir/../cmake_out"
+ #--trace-expand \
+
+ MAKE_CMD="make ${MAKEFLAGS:--j1} blender"
+
+ 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"
+
+ cd upbge
+ env "${CMAKE_CMD[@]}"
+ cd ../build
+ env CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" $MAKE_CMD
}
package() {
- cd "$srcdir/blender-build"
- make DESTDIR="$pkgdir" install
- install -D -m644 "$srcdir"/upbge.desktop \
- "$pkgdir"/usr/share/applications/upbge.desktop
-
- if [ -e "$pkgdir"/usr/share/blender/*/scripts/addons/cycles/lib/ ] ; then
- # make sure the cuda kernels are not stripped
- chmod 444 "$pkgdir"/usr/share/blender/*/scripts/addons/cycles/lib/*
- fi
+ _suffix=${pkgver%%.r*}
+ cd "$srcdir/build"
+ sed -ie 's/\(file(INSTALL\)\(.*blender\.1"\))/#\1\2)/' source/creator/cmake_install.cmake
+ BLENDER_SYSTEM_RESOURCES="${pkgdir}/usr/share/upbge/${_suffix}" make DESTDIR="$pkgdir" install
+ #find . -name 'cmake_install.cmake' -exec sed -i -e 's|/usr/lib64/|'"$pkgdir"'/usr/lib/|g' {} \;
+ #cmake --install . --prefix "$pkgdir/usr"
+
+ if [[ -e "$pkgdir/usr/share/upbge/${_suffix}/scripts/addons/cycles/lib/" ]] ; then
+ # make sure the cuda kernels are not stripped
+ chmod 444 "$pkgdir"/usr/share/upbge/${_suffix}/scripts/addons/cycles/lib/*
+ fi
+
+ install -D -m755 "$srcdir"/build/bin/blenderplayer "$pkgdir"/usr/bin/blenderplayer
+ install -D -m644 "$srcdir"/upbge/release/freedesktop/org.upbge.UPBGE.desktop "$pkgdir"/usr/share/applications/org.upbge.UPBGE.desktop
+ install -D -m644 "$srcdir"/upbge/release/freedesktop/icons/scalable/apps/org.upbge.UPBGE.svg \
+ "$pkgdir"/usr/share/icons/hicolor/scalable/apps/org.upbge.UPBGE.svg
}
+
+# vim: syntax=bash:et:ts=2:sw=2