## START: Set by rpmautospec ## (rpmautospec version 0.2.6) %define autorelease(e:s:pb:) %{?-p:0.}%{lua: release_number = 7; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{?dist} ## END: Set by rpmautospec %global blender_api 3.2 %global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) #/usr/bin/ld.gold: error: /builddir/build/BUILD/blender-3.0.0/.package_note-blender-3.0.0-3.fc36.x86_64.ld:42:8: syntax error, unexpected STRING #/usr/bin/ld.gold: fatal error: unable to parse script file /builddir/build/BUILD/blender-3.0.0/.package_note-blender-3.0.0-3.fc36.x86_64.ld #collect2: error: ld returned 1 exit status %undefine _package_note_flags %bcond_with clang %bcond_without ffmpeg # Needed to enable osl support for cycles rendering %bcond_without llvm %bcond_without openshading %bcond_with sdl %bcond_without system_eigen3 %bcond_with wayland %ifarch x86_64 || aarch64 || ppc64le %global cyclesflag ON # Only available on x86_64 and aarch64 %ifarch x86_64 || aarch64 %bcond_without embree %bcond_without hidapi %ifarch x86_64 %bcond_without oidn %endif %bcond_without usd %else %bcond_with embree %bcond_with hidapi %bcond_with oidn %bcond_with usd %endif %else %global cyclesflag OFF %endif Name: blender Epoch: 1 Version: 3.2.0 Release: %autorelease Summary: 3D modeling, animation, rendering and post-production License: GPLv2 URL: http://www.blender.org Source0: http://download.%{name}.org/source/%{name}-%{version}.tar.xz Source1: macros.%{name} # Include missing pyconfig header for 3.10 Patch: %{name}-usd-pythonlibs-fix.diff # Python: remove invalid Py_TPFLAGS_HAVE_GC usage # # Blender wouldn't start with Python 3.11 because of an error in # Py_TPFLAGS_HAVE_GC usage for bpy.app.handlers.persistent. # Remove this flag as it's not necessary. # # Part of fix for T99277. # # https://developer.blender.org/rB7537369498bf61f872554b0ce2efc439008165a4 # # See also: # Fails to compile on Python 3.11b3 due to opaque PyFrameObject # https://developer.blender.org/T99277 # # Rebased on branch blender-v3.2-release. Patch: 0001-Python-remove-invalid-Py_TPFLAGS_HAVE_GC-usage.patch # Python: add opcodes for safe py-drivers # # New opcodes added since 3.7 meant some actions such as len() were disabled in # safe py-driver execution. # # The following opcodes have been added, see [0] for details: # # • ROT_FOUR: similar to existing ROT_* opcodes, added v3.8. # • ROT_N: similar to existing ROT_* opcodes, added v3.10. # • GET_LEN: Push len(TOS) onto the stack, added v3.10. # • IS_OP: for ternary operator, added v3.9. # • BUILD_SLICE: access slice built-in, doesn't expose new functionality # beyond existing __getitem__ access. # # [0]: https://docs.python.org/3.10/library/dis.html # # https://developer.blender.org/rBdfa52017638abdf59791e5588c439d3a558a191d # # This is not part of the fix for T99277 but belongs to the same series of # three commits and is a useful enhancement/fix for recent Python versions. # # Rebased on branch blender-v3.2-release. Patch: 0002-Python-add-opcodes-for-safe-py-drivers.patch # Python: support v3.11 (beta) with changes to PyFrameObject & opcodes # # • Use API calls to access frame-data as PyFrameObject is now opaque. # • Update opcodes allowed for safe driver evaluation. # # Details # # Some opcodes have been added for safe-driver evaluation. Python 3.11 removes # many opcodes - the number of accepted opcodes in Blender's listing dropped # from 65 to 43) however some new opcodes also needed to be added. As this # relates to security details about newly added opcodes have been noted below # (see [0] for full documentation). # # Newly added opcodes: # # • CACHE: Used to control caching instructions. # • RESUME: A no-op. Performs internal checks. # • BINARY_OP: Implements the binary and in-place operators, replacing # specific binary operations. # • CALL, PRECALL, KW_NAMES: Used for calling functions, replacing some # existing opcodes. # • POP_JUMP_{FORWARD/BACKWARD}_IF_{TRUE/FALSE/NONE/NOT_NONE}. Manipulate the # byte-code counter. # • SWAP, PUSH_NULL. Stack manipulation. # # Resolves T99277. # # [0]: https://docs.python.org/3.11/library/dis.html # # See also: # Fails to compile on Python 3.11b3 due to opaque PyFrameObject # https://developer.blender.org/T99277 # # Rebased on branch blender-v3.2-release. Patch: 0003-Python-support-v3.11-beta-with-changes-to-PyFrameObj.patch # Fix Py-driver byte code access with Python 3.11 # # Error in [0] which assumed the struct member was renamed however byte-code # access from PyCodeObject now requires an API call. # # Thanks to @music for pointing this out. # [0]: 780c0ea097444c3be60314dffd203c099720badb Patch: 0004-Fix-Py-driver-byte-code-access-with-Python-3.11.patch # Development stuff BuildRequires: boost-devel %if %{with clang} BuildRequires: clang %endif %if %{with llvm} BuildRequires: llvm-devel %endif BuildRequires: cmake BuildRequires: desktop-file-utils BuildRequires: gcc-c++ BuildRequires: gettext BuildRequires: git-core BuildRequires: libharu-devel BuildRequires: libtool BuildRequires: pkgconfig(blosc) %if %{with system_eigen3} BuildRequires: pkgconfig(eigen3) %endif BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(gmp) %if %{with hidapi} BuildRequires: pkgconfig(hidapi-hidraw) %endif BuildRequires: pkgconfig(jemalloc) BuildRequires: pkgconfig(libpcre) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(pugixml) BuildRequires: pkgconfig(python3) >= 3.7 %if %{with wayland} BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(xkbcommon) %endif BuildRequires: pkgconfig(xxf86vm) BuildRequires: python3dist(idna) BuildRequires: python3dist(numpy) BuildRequires: python3dist(requests) BuildRequires: python3dist(setuptools) BuildRequires: subversion-devel # Compression stuff BuildRequires: pkgconfig(liblzma) BuildRequires: pkgconfig(lzo2) BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(libzstd) # 3D modeling stuff BuildRequires: cmake(ceres) %if %{with embree} BuildRequires: cmake(embree) %endif BuildRequires: opensubdiv-devel %if %{with openshading} # Use oslc compiler BuildRequires: openshadinglanguage-common-headers BuildRequires: pkgconfig(oslcomp) %endif %if %{with oidn} BuildRequires: cmake(OpenImageDenoise) %endif BuildRequires: openCOLLADA-devel >= svn825 BuildRequires: pkgconfig(fftw3) BuildRequires: pkgconfig(ftgl) BuildRequires: pkgconfig(glew) %if 0%{?fedora} > 31 BuildRequires: pkgconfig(glut) %else BuildRequires: pkgconfig(freeglut) %endif BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glu) BuildRequires: openxr-libs BuildRequires: pkgconfig(openxr) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(ode) BuildRequires: pkgconfig(sdl2) %if %{with usd} BuildRequires: usd-devel %endif BuildRequires: pkgconfig(xproto) # Picture/Video stuff BuildRequires: cmake(Alembic) %if %{with ffmpeg} BuildRequires: ffmpeg-free-devel BuildRequires: libavdevice-free-devel BuildRequires: libavformat-free-devel %endif BuildRequires: lame-devel BuildRequires: libspnav-devel BuildRequires: openvdb-devel BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(theora) BuildRequires: pkgconfig(libtiff-4) BuildRequires: pkgconfig(vpx) BuildRequires: pkgconfig(libwebp) # OpenColorIO 2 and up required BuildRequires: pkgconfig(OpenColorIO) > 1 %if 0%{?fedora} > 34 BuildRequires: cmake(Imath) BuildRequires: cmake(OpenEXR) %else BuildRequires: pkgconfig(OpenEXR) %endif BuildRequires: pkgconfig(OpenImageIO) BuildRequires: pkgconfig(libopenjp2) BuildRequires: pkgconfig(tbb) BuildRequires: potrace-devel # Audio stuff BuildRequires: pkgconfig(ao) BuildRequires: pkgconfig(flac) BuildRequires: pkgconfig(freealut) BuildRequires: pkgconfig(jack) BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(ogg) BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(samplerate) BuildRequires: pkgconfig(sndfile) BuildRequires: pkgconfig(vorbis) # Typography stuff BuildRequires: fontpackages-devel BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(tinyxml) # Appstream stuff BuildRequires: libappstream-glib Requires: google-droid-sans-fonts Requires: hicolor-icon-theme Requires: python3dist(requests) Requires: python3dist(numpy) Requires: shared-mime-info Provides: blender(ABI) = %{blender_api} # Obsolete the standalone Blender player retired by upstream Obsoletes: blenderplayer < 1:2.80-1 Provides: blenderplayer = 1:2.80-1 # Obsoletes separate Blender Fonts - rhbz#1889049 Obsoletes: blender-fonts < 1:2.91.0-5 # Starting from 2.90, Blender support only 64-bits architectures ExclusiveArch: x86_64 aarch64 ppc64le s390x %description Blender is the essential software solution you need for 3D, from modeling, animation, rendering and post-production to interactive creation and playback. Professionals and novices can easily and inexpensively publish stand-alone, secure, multi-platform content to the web, CD-ROMs, and other media. %package rpm-macros Summary: RPM macros to build third-party blender addons packages BuildArch: noarch %description rpm-macros This package provides rpm macros to support the creation of third-party addon packages to extend Blender. %prep %autosetup -p1 # Delete the bundled FindOpenJPEG to make find_package use the system version # instead (the local version hardcodes the openjpeg version so it is not update # proof) rm -f build_files/cmake/Modules/FindOpenJPEG.cmake # Fix all Python shebangs recursively in . %py3_shebang_fix . # Workaround for eigen3 trying to enforce power10 when fedora only supports power8. # https://bugzilla.redhat.com/show_bug.cgi?id=1996330 %ifarch ppc64 ppc64le %global optflags_orig %optflags %global optflags %optflags_orig -DEIGEN_ALTIVEC_DISABLE_MMA %endif # Work around CMake boost module needing the python version to find the library sed -i "s/date_time/date_time python%{python3_version_nodots}/" \ build_files/cmake/platform/platform_unix.cmake %build %cmake \ %if %{with ffmpeg} -DWITH_CODEC_FFMPEG=ON \ -D_ffmpeg_INCLUDE_DIR=%{_includedir}/ffmpeg \ %else -DWITH_CODEC_FFMPEG=OFF \ %endif %if %{with openshading} -D_osl_LIBRARIES=%{_libdir} \ -DOSL_INCLUDE_DIR=%{_includedir} \ -DOSL_COMPILER=%{_bindir}/oslc \ %endif -DBOOST_ROOT=%{_prefix} \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="%{optflags} -Wl,--as-needed" \ -DCMAKE_CXX_FLAGS="%{optflags} -Wl,--as-needed" \ -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_SKIP_RPATH=ON \ -DOpenGL_GL_PREFERENCE=GLVND \ -DPYTHON_VERSION=%{python3_version} \ -DWITH_CYCLES=%{cyclesflag} \ %ifnarch x86_64 -DWITH_CYCLES_EMBREE=OFF \ %endif -DWITH_DOC_MANPAGE=ON \ %if %{with wayland} -DWITH_GHOST_WAYLAND=ON \ -DWITH_GL_EGL=ON \ %endif -DWITH_INSTALL_PORTABLE=OFF \ -DWITH_PYTHON_INSTALL=OFF \ -DWITH_PYTHON_INSTALL_REQUESTS=OFF \ %if %{with sdl} -DWITH_GHOST_SDL=ON \ %endif %if %{with system_eigen3} -DWITH_SYSTEM_EIGEN3=ON \ %endif -DWITH_SYSTEM_GLEW=ON \ %if %{with usd} -DWITH_USD=ON \ -DUSD_LIBRARY=%{_libdir}/libusd_usd_ms.so \ %else -DWITH_USD=OFF \ %endif -DXR_OPENXR_SDK_LOADER_LIBRARY=%{_libdir}/libopenxr_loader.so.1 %cmake_build %install %cmake_install # Deal with docs in the files section rm -rf %{buildroot}%{_docdir}/%{name}/* # rpm macros mkdir -p %{buildroot}%{macrosdir} sed -e 's/@VERSION@/%{blender_api}/g' %{SOURCE1} > %{buildroot}%{macrosdir}/macros.%{name} # AppData install -p -m 644 -D release/freedesktop/org.%{name}.Blender.appdata.xml \ %{buildroot}%{_metainfodir}/%{name}.appdata.xml # Localization %find_lang %{name} # rpmlint fixes find %{buildroot}%{_datadir}/%{name}/%{blender_api}/scripts -name "*.py" -exec chmod 755 {} \; %check desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdata.xml %files -f %{name}.lang %license COPYING %license doc/license/*-license.txt %license release/text/copyright.txt %doc release/text/readme.html %{_bindir}/%{name} %{_bindir}/%{name}-thumbnailer %{_datadir}/applications/%{name}.desktop %exclude %{_datadir}/%{name}/%{blender_api}/datafiles/locale/ %{_datadir}/%{name}/ %{_datadir}/icons/hicolor/*/apps/%{name}*.* %{_mandir}/man1/%{name}.* %{_metainfodir}/%{name}.appdata.xml %files rpm-macros %{macrosdir}/macros.%{name} %changelog * Thu Jul 07 2022 Benjamin A. Beasley 1:3.2.0-7 - Replace a downstream patch with an upstream one - Backport upstream commit 378f65f7d9843ea789a66623019163f935af141e as 0004-Fix-Py-driver-byte-code-access-with-Python-3.11.patch, replacing downstream patch 0001-Support-Python-3.11b3.patch * Wed Jul 06 2022 Benjamin A. Beasley 1:3.2.0-6 - Remove trailing whitespace in the spec file * Wed Jul 06 2022 Benjamin A. Beasley 1:3.2.0-5 - Backport Python 3.11 support (close RHBZ#2098675) - Backport the fix for upstream bug T99277 “Fails to compile on Python 3.11b3 due to opaque PyFrameObject”, along with a related commit improving support for Python releases newer than 3.7. - Add an additional patch required for Python 3.11b3 but not for later Python 3.11 pre-releases. This is downstream-only for now, but the concept was suggested upstream as a potential general improvement. * Tue Jun 28 2022 Python Maint 1:3.2.0-4 - Rebuilt for Python 3.11 * Fri Jun 10 2022 Luya Tshimbalanga 1:3.2.0-3 - Enable ffpmeg support * Thu Jun 09 2022 Luya Tshimbalanga 1:3.2.0-2 - Revert deleted pythonlibs-fix * Thu Jun 09 2022 Luya Tshimbalanga 1:3.2.0-1 - Update to 3.2.0 (#2094907) * Wed Jun 01 2022 Benjamin A. Beasley 1:3.1.2-6 - Rebuild for usd-22.05a * Fri May 20 2022 Sandro Mani 1:3.1.2-5 - Rebuild for gdal-3.5.0 and/or openjpeg-2.5.0 * Wed May 04 2022 Thomas Rodgers 1:3.1.2-4 - Rebuilt for Boost 1.78 * Sun Apr 10 2022 Benjamin A. Beasley 1:3.1.2-3 - BR usd-devel instead of cmake(pxr) * Fri Apr 01 2022 Fedora Release Monitoring 1:3.1.2-1 - Update to 3.1.2 (#2070344) * Fri Apr 01 2022 Fedora Release Monitoring 1:3.1.1-1 - Update to 3.1.1 (#2070344) * Sun Mar 13 2022 Luya Tshimbalanga 1:3.1.0-7 - Rebuild to sync with Fedora 35 version * Sun Mar 13 2022 Luya Tshimbalanga 1:3.1.0-6 - Rebuild * Sat Mar 12 2022 Luya Tshimbalanga 1:3.1.0-5 - Empty commit * Sat Mar 12 2022 Luya Tshimbalanga 1:3.1.0-4 - Bump release to sync with f35 version * Sat Mar 12 2022 Luya Tshimbalanga 1:3.1.0-3 - oidn support only for x86_64 arch * Sat Mar 12 2022 Luya Tshimbalanga 1:3.1.0-2 - Reenable USD support * Thu Mar 10 2022 Luya Tshimbalanga 1:3.1.0-1 - Update to blender 3.1.0 Dropped some no longer needed patches * Mon Feb 28 2022 Luya Tshimbalanga 1:3.0.1-2 - Bump release * Tue Feb 22 2022 Luya Tshimbalanga 1:3.0.1-1 - Update to blender 3.0.1 (#2046570) * Sun Feb 20 2022 Mamoru TASAKA 1:3.0.0-4 - Kill package_note for now because of unknown linkage error * Wed Jan 19 2022 Fedora Release Engineering 1:3.0.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Fri Dec 10 2021 Luya Tshimbalanga 1:3.0.0-2 - Update Blender to 3.0.0 and remove unused patch * Thu Dec 09 2021 Luya Tshimbalanga 1:3.0.0-1 - local build * Sat Nov 27 2021 Luya Tshimbalanga 1:2.93.6-1 - Update to 2.93.6 with enabled NanoVDB support * Sat Nov 27 2021 Mamoru TASAKA 1:2.93.5-2 - Fix s390x LTO issue on makesrna: force alignment on DNAstr definition in makesdna.c (upstream T93425) (bug 1874398) * Thu Oct 07 2021 Luya Tshimbalanga 1:2.93.5-1 - Update to 2.93.5 (#2011379) * Wed Oct 06 2021 Richard Shaw 1:2.93.4-5 - Add patch for OIIO 2.3+. * Tue Oct 05 2021 Richard Shaw 1:2.93.4-4 - Rebuild for OpenImageIO 2.3.8.0. * Wed Sep 29 2021 Zbigniew Jędrzejewski-Szmek 1:2.93.4-3 - Rebuild again for alembic 1.8.3 * Sun Sep 12 2021 Luya Tshimbalanga 1:2.93.4-2 - Rebuild for alembic 1.8.3 * Fri Sep 03 2021 Luya Tshimbalanga 1:2.93.4-1 - Update to 2.93.4 (#2000369) Disable osl due to segmentation fault Remove unused patches and macros Resolves rhbz##2000369 * Wed Sep 01 2021 Richard Shaw 1:2.93.3-9 - Rebuild for OpenColorIO 2.1. * Thu Aug 26 2021 Miro Hrončok 1:2.93.3-8 - Fix a typo in shared-mime-info, fixes rhbz#1997840 * Tue Aug 24 2021 Richard Shaw 1:2.93.3-7 - Spec file tweaks * Tue Aug 24 2021 Richard Shaw 1:2.93.3-6 - Forgot git commit -a... * Tue Aug 24 2021 Richard Shaw 1:2.93.3-5 - Multiple build problem fixes: * Tue Aug 24 2021 Richard Shaw 1:2.93.3-4 - Try workaround for Eigen3 power10 vs Fedora power8 issue. * Tue Aug 24 2021 Richard Shaw 1:2.93.3-3 - Rebuild for OpenColorIO 2. * Sun Aug 22 2021 Luya Tshimbalanga 1:2.93.3-2 - Various fixes Fix USD support Enable OSL support for x64 architecture * Thu Aug 19 2021 Nicolas Chauvet 1:2.93.3-1 - Update to 2.93.3 * Tue Aug 17 2021 Richard Shaw 1:2.93.1-2 - Add minimal patch for OpenEXR/Imath 3 compatibility.