#!/bin/hint/bash # Maintainer : bartus # Configuration. _ver=3.0 _fragment=${FRAGMENT:-#branch=blender-v${_ver}-release} # shellcheck disable=SC2206 [[ -v CUDA_ARCH ]] && _cuda_capability=(${CUDA_ARCH}) #some extra, unofficially supported stuff goes here: ((TRAVIS)) && _cuda_capability+=(sm_50 sm_52 sm_60 sm_61 sm_70 sm_75) # Travis memory limit is not enough to build for arch 3.x. ((DISABLE_USD)) && { _CMAKE_FLAGS+=( -DWITH_USD=OFF ) } || { _CMAKE_FLAGS+=( -DWITH_USD=ON -DUSD_ROOT=/usr ) depends+=( "usd=21.02" ) } ((DISABLE_NINJA)) || makedepends+=('ninja') #shellcheck disable=SC2015 ((DISABLE_CUDA)) && optdepends+=('cuda: CUDA support in Cycles') || { makedepends+=('cuda') ; ((DISABLE_OPTIX)) || makedepends+=('optix>=7.0'); } pkgname=blender-${_ver}-git pkgver=3.0.r109941.g348d7c35a9f pkgrel=1 pkgdesc="Maintenance version of Blender v${_ver} branch" changelog=blender.changelog arch=('i686' 'x86_64') url="https://blender.org/" depends+=('alembic' 'embree' 'libgl' 'python' 'python-numpy' 'openjpeg2' 'libharu' 'potrace' 'openxr' 'ffmpeg' 'fftw' 'openal' 'freetype2' 'libxi' 'openimageio' 'opencolorio' 'openvdb' 'opencollada' 'opensubdiv' 'openshadinglanguage' 'libtiff' 'libpng') depends+=('openimagedenoise') makedepends+=('git' 'cmake' 'clang' 'boost' 'mesa' 'llvm' wayland{,-protocols} 'libxkbcommon') provides=("blender=${pkgver%%.r*}") conflicts=("blender=${pkgver%%.r*}") license=('GPL') # 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://git.blender.org/blender.git${_fragment}" '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' SelectCudaComputeArch.patch usd_python.patch #add missing python headers when building against python enabled usd. embree.patch #add missing embree link. openexr3.patch #fix build against openexr:3 ) sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' '87c5ee85032bab83510db426ab28f7acfba893aefea2b523f2fd78f3b62c5348' '333b6fd864d55da2077bc85c55af1a27d4aee9764a1a839df26873a9f19b8703' '6249892f99ffd960e36f43fb893c14e2f8e4dd1d901b9581d25882e865f2603f' '5297dc61cc4edcc1d5bad3474ab882264b69d68036cebbd0f2600d9fe21d5a1b') pkgver() { blender_version=$(grep -Po "BLENDER_VERSION \K[0-9]{3}" "$srcdir"/blender/source/blender/blenkernel/BKE_blender_version.h) printf "%d.%d.r%s.g%s" \ $((blender_version/100)) \ $((blender_version%100)) \ "$(git -C "$srcdir/blender" rev-list --count HEAD)" \ "$(git -C "$srcdir/blender" rev-parse --short HEAD)" } prepare() { # update the submodules git -C "$srcdir/blender" submodule update --init --recursive --remote if [ ! -v _cuda_capability ] && grep -q nvidia <(lsmod); then git -C "$srcdir/blender" apply -v "${srcdir}"/SelectCudaComputeArch.patch fi ((DISABLE_USD)) || git -C "$srcdir/blender" apply -v "${srcdir}"/usd_python.patch git -C "$srcdir/blender" apply -v "${srcdir}"/{embree,openexr3}.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 precompile CUDA kernels _CUDA_PKG=$(pacman -Qq cuda 2>/dev/null) || true if [ "$_CUDA_PKG" != "" ] && ! ((DISABLE_CUDA)) ; then _CMAKE_FLAGS+=( -DWITH_CYCLES_CUDA_BINARIES=ON -DCUDA_TOOLKIT_ROOT_DIR=/opt/cuda ) ((DISABLE_OPTIX)) || _CMAKE_FLAGS+=( -DOPTIX_ROOT_DIR=/opt/optix ) if [[ -v _cuda_capability ]]; then _CMAKE_FLAGS+=( -DCYCLES_CUDA_BINARIES_ARCH="$(IFS=';'; echo "${_cuda_capability[*]}";)" ) fi [ -f "/usr/lib/ccache/bin/nvcc-ccache" ] && export CUDA_NVCC_EXECUTABLE=/usr/lib/ccache/bin/nvcc-ccache 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 fi ((DISABLE_NINJA)) && generator="Unix Makefiles" || generator="Ninja" cmake -G "$generator" -S "$srcdir/blender" -B "$srcdir/build" \ -C "${srcdir}/blender/build_files/cmake/config/blender_release.cmake" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DWITH_INSTALL_PORTABLE=OFF \ -DWITH_SYSTEM_GLEW=OFF \ -DWITH_PYTHON_INSTALL=OFF \ -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. if ((DISABLE_NINJA)); then make -C "$srcdir/build" ; else ninja -C "$srcdir/build" ${MAKEFLAGS:--j1}; fi } package() { _suffix=${pkgver%%.r*} export DESTDIR="$pkgdir" if ((DISABLE_NINJA)); then make -C "$srcdir/build" install; else ninja -C "$srcdir/build" install; fi msg "add -${_suffix} suffix to desktop shortcut" sed -i "s/=blender/=blender-${_suffix}/g" "${pkgdir}/usr/share/applications/blender.desktop" sed -i "s/=Blender/=Blender-${_suffix}/g" "${pkgdir}/usr/share/applications/blender.desktop" mv "${pkgdir}/usr/share/applications/blender.desktop" "${pkgdir}/usr/share/applications/blender-${_suffix}.desktop" msg "add -${_suffix} suffix to binaries" mv "${pkgdir}/usr/bin/blender" "${pkgdir}/usr/bin/blender-${_suffix}" mv "${pkgdir}/usr/bin/blender-thumbnailer" "${pkgdir}/usr/bin/blender-${_suffix}-thumbnailer" || bash msg "mv doc/blender to doc/blender-${_suffix}" mv "${pkgdir}/usr/share/doc/blender" "${pkgdir}/usr/share/doc/blender-${_suffix}" msg "add -${_suffix} suffix to man page" mv "${pkgdir}/usr/share/man/man1/blender.1" "${pkgdir}/usr/share/man/man1/blender-${_suffix}.1" msg "add -${_suffix} suffix to all icons" while read -r icon do # ${filename##/*.} extra extenssion from path # ${filename%.*} extract filename form path # look at bash "manipulatin string" mv "$icon" "${icon%.*}-${_suffix}.${icon##/*.}" done < <(find "${pkgdir}/usr/share/icons" -type f) if [[ -e "$pkgdir/usr/share/blender/${_suffix}/scripts/addons/cycles/lib/" ]] ; then # make sure the cuda kernels are not stripped chmod 444 "$pkgdir"/usr/share/blender/${_suffix}/scripts/addons/cycles/lib/* fi } # vim:set sw=2 ts=2 et: