aboutsummaryrefslogtreecommitdiffstats
path: root/testing
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2020-01-02 08:06:46 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2020-01-02 11:23:29 +0000
commit8283ba556ffe47eaf56e968ae54e4883dc04143d (patch)
treeae820777f80b4db9e8f5b6e1e1987ced1ac666a6 /testing
parent13b4d2dddb44d7c8268a63912d97380543ed30ff (diff)
downloadaports-8283ba556ffe47eaf56e968ae54e4883dc04143d.tar.bz2
aports-8283ba556ffe47eaf56e968ae54e4883dc04143d.tar.xz
testing/blender: upgrade to 2.81a
Diffstat (limited to 'testing')
-rw-r--r--testing/blender/APKBUILD39
-rw-r--r--testing/blender/blender-2.78a-musl.patch67
-rw-r--r--testing/blender/ffmpeg4.0.patch113
-rw-r--r--testing/blender/gcc8.patch196
-rw-r--r--testing/blender/musl-fixes.patch78
-rw-r--r--testing/blender/openimageio-lib.patch13
-rw-r--r--testing/blender/python-3.8.patch49
7 files changed, 160 insertions, 395 deletions
diff --git a/testing/blender/APKBUILD b/testing/blender/APKBUILD
index f02359e87d..f41af20b9b 100644
--- a/testing/blender/APKBUILD
+++ b/testing/blender/APKBUILD
@@ -1,43 +1,43 @@
# Contributor: Mark Riedesel <mark@klowner.com>
# Maintainer: Mark Riedesel <mark@klowner.com>
pkgname=blender
-pkgver=2.79b
+pkgver=2.81a
_pkgver=${pkgver/[a-z]}
-pkgrel=7
+pkgrel=0
pkgdesc="3D Creation/Animation/Publishing System"
url="https://www.blender.org/"
arch="x86_64"
license="GPL-2.0-or-later"
depends="blender-shared=$pkgver-r$pkgrel"
-makedepends="cmake libx11-dev jpeg-dev zlib-dev libpng-dev freetype-dev python3-dev
+makedepends="cmake libx11-dev libjpeg-turbo-dev zlib-dev libpng-dev freetype-dev python3-dev
openimageio-dev opencolorio-dev glew-dev openal-soft-dev ffmpeg-dev
fftw-dev tiff-dev mesa-dev libxi-dev libsndfile-dev libxmu-dev boost-dev
- openexr-dev py3-numpy-dev opensubdiv-dev"
+ openexr-dev py3-numpy-dev opensubdiv-dev lzo-dev libxrender-dev openjpeg-dev"
subpackages="$pkgname-doc $pkgname-shared::noarch $pkgname-headless $pkgname-player py3-$pkgname:python"
-source="http://download.blender.org/source/${pkgname}-${pkgver}.tar.gz
- blender-2.78a-musl.patch
- gcc8.patch
- ffmpeg4.0.patch
+source="https://download.blender.org/source/blender-$_pkgver.tar.xz
+ musl-fixes.patch
+ python-3.8.patch
+ openimageio-lib.patch
"
-builddir="$srcdir"/$pkgname-$pkgver
+builddir="$srcdir"/$pkgname-$_pkgver
build() {
# Headless
cd "$builddir"
- mkdir "$builddir"/build-headless
+ mkdir -p "$builddir"/build-headless
cd "$builddir"/build-headless
_build -C../build_files/cmake/config/blender_headless.cmake
# Full
cd "$builddir"
- mkdir "$builddir"/build-full
+ mkdir -p "$builddir"/build-full
cd "$builddir"/build-full
_build -C../build_files/cmake/config/blender_full.cmake
# Python module
cd "$builddir"
- mkdir "$builddir"/build-py
+ mkdir -p "$builddir"/build-py
cd "$builddir"/build-py
_build -C../build_files/cmake/config/bpy_module.cmake
@@ -52,10 +52,11 @@ _build() {
-DWITH_PYTHON_INSTALL:BOOL=OFF \
-DWITH_INSTALL_PORTABLE:BOOL=OFF \
-DWITH_OPENCOLORIO:BOOL=ON \
+ -DWITH_IMAGE_OPENEXR=ON \
+ -DWITH_IMAGE_OPENJPEG=ON \
+ -DWITH_TBB:BOOL=OFF \
+ -DWITH_SYSTEM_LZO=ON \
-DPYTHON_VERSION=$PY_VERSION \
- -DPYTHON_LIBPATH=/usr/lib \
- -DPYTHON_LIBRARY=python${PY_VERSION}m \
- -DPYTHON_INCLUDE_DIRS=/usr/include/python${PY_VERSION}m \
-DNO_EXECINFO:BOOL=ON
make
}
@@ -111,7 +112,7 @@ python() {
ln -s /usr/share/blender/${_pkgver} "$subpkgdir"/usr/lib/python${PY_VERSION}/site-packages/${_pkgver}
}
-sha512sums="2db21ace446168dd683cdb5aad9dec001f8888ae4e9603a04ddb44fb78489ded827deb07e83712b0f1118a0e7bf66f2a5d935dc4ebb3a6703d72672ff414367f blender-2.79b.tar.gz
-47e8a6a017cea8c004d7e4205f201f167dd81ba95a4aadf9e55d01e81cc4a23e4d7f1d6aa7a6d1300fe3a5f5c98c664f584e7551fcde7fb1137147e2438f7ed5 blender-2.78a-musl.patch
-59cc54ddc772ed02db8e6ef94b18bad5c7ec8c1bb8cdc2231a6747063ac386f31a77e58322acf32ef4d5d9278ac0449bbf78e440134bfb612d1c86bb67f9df55 gcc8.patch
-446dd46557c7c976a68010c62e04693c61171980abea1cd0a900b00bcc3d525b83bb6ee200739623110e592e37e8f4783a18f234b40e9f85483830ea9785640d ffmpeg4.0.patch"
+sha512sums="b7eed47afc4bdb87e9e8a579565935ae8489459197fb9b5978285cfe255ea4fc4151a1178526857921f3b2d54cf63b68dda66586565340f7bfd4274b82e7e9ff blender-2.81.tar.xz
+f931712c27d5012f1fb01b97107eba9e3bc195c0aafb0a1e782030b5eedf8beb4d15153b46464492098974e17e0b0a1659a078e811423b5a27cdd350209d90c3 musl-fixes.patch
+d95456d26bcf0b28776d4b36a20a210235b11b2ee32b6f051c88d08199792484811573b55f1850f3c1cda816d491ef332de1fe81421b761a7b4be515df726b4e python-3.8.patch
+42ed74bfae38721b7e8301dfe00a97cba0b25886cb39017620d442f9403386b5ca68daa0907d003e210ae01321986772c9721ea3de512701e6565d60a19f0c8e openimageio-lib.patch"
diff --git a/testing/blender/blender-2.78a-musl.patch b/testing/blender/blender-2.78a-musl.patch
deleted file mode 100644
index 1ffd09cd57..0000000000
--- a/testing/blender/blender-2.78a-musl.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-diff -ru blender-2.78.orig/CMakeLists.txt blender-2.78a/CMakeLists.txt
---- blender-2.78.orig/CMakeLists.txt 2016-10-25 12:09:56.000000000 +0000
-+++ blender-2.78a/CMakeLists.txt 2017-02-07 14:50:03.967828817 +0000
-@@ -181,6 +181,18 @@
- set(_init_SDL OFF)
- set(_init_FFTW3 OFF)
- set(_init_OPENSUBDIV OFF)
-+ # musl-libc related checks (missing execinfo.h, and feenableexcept())
-+ include(CheckIncludeFiles)
-+ check_include_files(execinfo.h HAVE_EXECINFO_H)
-+ if (HAVE_EXECINFO_H)
-+ add_definitions(-DHAVE_EXECINFO_H)
-+ endif()
-+
-+ include(CheckLibraryExists)
-+ check_library_exists(m feenableexcept "fenv.h" HAVE_FEENABLEEXCEPT)
-+ if (HAVE_FEENABLEEXCEPT)
-+ add_definitions(-DHAVE_FEENABLEEXCEPT)
-+ endif()
- elseif(WIN32)
- set(_init_JACK OFF)
- elseif(APPLE)
-diff -ru blender-2.78.orig/intern/guardedalloc/intern/mallocn_intern.h blender-2.78a/intern/guardedalloc/intern/mallocn_intern.h
---- blender-2.78.orig/intern/guardedalloc/intern/mallocn_intern.h 2016-09-28 09:26:55.000000000 +0000
-+++ blender-2.78a/intern/guardedalloc/intern/mallocn_intern.h 2017-02-07 14:44:35.213040733 +0000
-@@ -52,7 +52,7 @@
- #undef HAVE_MALLOC_STATS
- #define USE_MALLOC_USABLE_SIZE /* internal, when we have malloc_usable_size() */
-
--#if defined(__linux__) || (defined(__FreeBSD_kernel__) && !defined(__FreeBSD__)) || defined(__GLIBC__)
-+#if (defined(__linux__) && defined(HAVE_EXECINFO_H)) || (defined(__FreeBSD_kernel__) && !defined(__FreeBSD__)) || defined(__GLIBC__)
- # include <malloc.h>
- # define HAVE_MALLOC_STATS
- #elif defined(__FreeBSD__)
-diff -ru blender-2.78.orig/source/blender/blenlib/intern/system.c blender-2.78a/source/blender/blenlib/intern/system.c
---- blender-2.78.orig/source/blender/blenlib/intern/system.c 2016-10-25 09:59:23.000000000 +0000
-+++ blender-2.78a/source/blender/blenlib/intern/system.c 2017-02-07 14:44:35.213040733 +0000
-@@ -31,7 +31,7 @@
- #include "MEM_guardedalloc.h"
-
- /* for backtrace */
--#if defined(__linux__) || defined(__APPLE__)
-+#if (defined(__linux__) && defined(HAVE_EXECINFO_H)) || defined(__APPLE__)
- # include <execinfo.h>
- #elif defined(WIN32)
- # include <windows.h>
-@@ -77,7 +77,7 @@
- {
- /* ------------- */
- /* Linux / Apple */
--#if defined(__linux__) || defined(__APPLE__)
-+#if (defined(__linux__) && defined(HAVE_EXECINFO_H)) || defined(__APPLE__)
-
- #define SIZE 100
- void *buffer[SIZE];
-diff -ru blender-2.78.orig/source/creator/creator_signals.c blender-2.78a/source/creator/creator_signals.c
---- blender-2.78.orig/source/creator/creator_signals.c 2016-10-24 14:13:56.000000000 +0000
-+++ blender-2.78a/source/creator/creator_signals.c 2017-02-07 14:47:01.888625973 +0000
-@@ -309,7 +309,7 @@
- * set breakpoints on sig_handle_fpe */
- signal(SIGFPE, sig_handle_fpe);
-
--# if defined(__linux__) && defined(__GNUC__)
-+# if defined(__linux__) && defined(__GNUC__) && defined(HAVE_FEENABLEEXCEPT)
- feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
- # endif /* defined(__linux__) && defined(__GNUC__) */
- # if defined(OSX_SSE_FPE)
diff --git a/testing/blender/ffmpeg4.0.patch b/testing/blender/ffmpeg4.0.patch
deleted file mode 100644
index 4fd7801bc3..0000000000
--- a/testing/blender/ffmpeg4.0.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-diff --git a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp b/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
-index e9eea195208..84aea330313 100644
---- a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
-+++ b/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
-@@ -264,9 +264,9 @@ AUD_FFMPEGReader::AUD_FFMPEGReader(boost::shared_ptr<AUD_Buffer> buffer) :
- m_membuffer(buffer),
- m_membufferpos(0)
- {
-- m_membuf = reinterpret_cast<data_t*>(av_malloc(FF_MIN_BUFFER_SIZE + FF_INPUT_BUFFER_PADDING_SIZE));
-+ m_membuf = reinterpret_cast<data_t*>(av_malloc(AV_INPUT_BUFFER_MIN_SIZE + AV_INPUT_BUFFER_PADDING_SIZE));
-
-- m_aviocontext = avio_alloc_context(m_membuf, FF_MIN_BUFFER_SIZE, 0, this,
-+ m_aviocontext = avio_alloc_context(m_membuf, AV_INPUT_BUFFER_MIN_SIZE, 0, this,
- read_packet, NULL, seek_packet);
-
- if(!m_aviocontext)
-diff --git a/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp b/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp
-index 3f95ac7a4da..2c2f0916406 100644
---- a/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp
-+++ b/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp
-@@ -163,7 +163,7 @@ AUD_FFMPEGWriter::AUD_FFMPEGWriter(std::string filename, AUD_DeviceSpecs specs,
- try
- {
- if(m_formatCtx->oformat->flags & AVFMT_GLOBALHEADER)
-- m_codecCtx->flags |= CODEC_FLAG_GLOBAL_HEADER;
-+ m_codecCtx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
-
- AVCodec* codec = avcodec_find_encoder(m_codecCtx->codec_id);
- if(!codec)
-@@ -185,11 +185,11 @@ AUD_FFMPEGWriter::AUD_FFMPEGWriter(std::string filename, AUD_DeviceSpecs specs,
- if(avcodec_open2(m_codecCtx, codec, NULL))
- AUD_THROW(AUD_ERROR_FFMPEG, codec_error);
-
-- m_output_buffer.resize(FF_MIN_BUFFER_SIZE);
-+ m_output_buffer.resize(AV_INPUT_BUFFER_MIN_SIZE);
- int samplesize = AUD_MAX(AUD_SAMPLE_SIZE(m_specs), AUD_DEVICE_SAMPLE_SIZE(m_specs));
-
- if(m_codecCtx->frame_size <= 1) {
-- m_input_size = FF_MIN_BUFFER_SIZE * 8 / m_codecCtx->bits_per_coded_sample / m_codecCtx->channels;
-+ m_input_size = AV_INPUT_BUFFER_MIN_SIZE * 8 / m_codecCtx->bits_per_coded_sample / m_codecCtx->channels;
- m_input_buffer.resize(m_input_size * samplesize);
- }
- else
-diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
-index d7fcd896e11..9e82df17dce 100644
---- a/source/blender/blenkernel/intern/writeffmpeg.c
-+++ b/source/blender/blenkernel/intern/writeffmpeg.c
-@@ -619,8 +619,6 @@ static AVStream *alloc_video_stream(FFMpegContext *context, RenderData *rd, int
- c->rc_buffer_aggressivity = 1.0;
- #endif
-
-- c->me_method = ME_EPZS;
--
- codec = avcodec_find_encoder(c->codec_id);
- if (!codec)
- return NULL;
-@@ -682,14 +680,14 @@ static AVStream *alloc_video_stream(FFMpegContext *context, RenderData *rd, int
- )
- {
- PRINT("Using global header\n");
-- c->flags |= CODEC_FLAG_GLOBAL_HEADER;
-+ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
- }
-
- /* Determine whether we are encoding interlaced material or not */
- if (rd->mode & R_FIELDS) {
- PRINT("Encoding interlaced video\n");
-- c->flags |= CODEC_FLAG_INTERLACED_DCT;
-- c->flags |= CODEC_FLAG_INTERLACED_ME;
-+ c->flags |= AV_CODEC_FLAG_INTERLACED_DCT;
-+ c->flags |= AV_CODEC_FLAG_INTERLACED_ME;
- }
-
- /* xasp & yasp got float lately... */
-@@ -779,7 +777,7 @@ static AVStream *alloc_audio_stream(FFMpegContext *context, RenderData *rd, int
- }
-
- if (of->oformat->flags & AVFMT_GLOBALHEADER) {
-- c->flags |= CODEC_FLAG_GLOBAL_HEADER;
-+ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
- }
-
- set_ffmpeg_properties(rd, c, "audio", &opts);
-@@ -798,14 +796,14 @@ static AVStream *alloc_audio_stream(FFMpegContext *context, RenderData *rd, int
- st->codec->time_base.den = st->codec->sample_rate;
-
- #ifndef FFMPEG_HAVE_ENCODE_AUDIO2
-- context->audio_outbuf_size = FF_MIN_BUFFER_SIZE;
-+ context->audio_outbuf_size = AV_INPUT_BUFFER_MIN_SIZE;
- #endif
-
- if (c->frame_size == 0)
- // used to be if ((c->codec_id >= CODEC_ID_PCM_S16LE) && (c->codec_id <= CODEC_ID_PCM_DVD))
- // not sure if that is needed anymore, so let's try out if there are any
- // complaints regarding some ffmpeg versions users might have
-- context->audio_input_samples = FF_MIN_BUFFER_SIZE * 8 / c->bits_per_coded_sample / c->channels;
-+ context->audio_input_samples = AV_INPUT_BUFFER_MIN_SIZE * 8 / c->bits_per_coded_sample / c->channels;
- else {
- context->audio_input_samples = c->frame_size;
- #ifndef FFMPEG_HAVE_ENCODE_AUDIO2
-diff --git a/source/blender/imbuf/intern/indexer.c b/source/blender/imbuf/intern/indexer.c
-index eaf4dfd84b4..9c2f42feb52 100644
---- a/source/blender/imbuf/intern/indexer.c
-+++ b/source/blender/imbuf/intern/indexer.c
-@@ -537,7 +537,7 @@ static struct proxy_output_ctx *alloc_proxy_output_ffmpeg(
- av_opt_set_int(rv->c, "qmax", ffmpeg_quality, 0);
-
- if (rv->of->flags & AVFMT_GLOBALHEADER) {
-- rv->c->flags |= CODEC_FLAG_GLOBAL_HEADER;
-+ rv->c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
- }
-
- if (avio_open(&rv->of->pb, fname, AVIO_FLAG_WRITE) < 0) {
diff --git a/testing/blender/gcc8.patch b/testing/blender/gcc8.patch
deleted file mode 100644
index c3aafd8593..0000000000
--- a/testing/blender/gcc8.patch
+++ /dev/null
@@ -1,196 +0,0 @@
-diff --git a/intern/itasc/kdl/tree.hpp b/intern/itasc/kdl/tree.hpp
-index c8a253fc901..bd35f82d185 100644
---- a/intern/itasc/kdl/tree.hpp
-+++ b/intern/itasc/kdl/tree.hpp
-@@ -1,177 +1,177 @@
- // Copyright (C) 2007 Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
-
- // Version: 1.0
- // Author: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
- // Maintainer: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
- // URL: http://www.orocos.org/kdl
-
- // This library is free software; you can redistribute it and/or
- // modify it under the terms of the GNU Lesser General Public
- // License as published by the Free Software Foundation; either
- // version 2.1 of the License, or (at your option) any later version.
-
- // This library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- // Lesser General Public License for more details.
-
- // You should have received a copy of the GNU Lesser General Public
- // License along with this library; if not, write to the Free Software
- // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
- #ifndef KDL_TREE_HPP
- #define KDL_TREE_HPP
-
- #include "segment.hpp"
- #include "chain.hpp"
-
- #include <string>
- #include <map>
- #include <Eigen/Core>
-
- namespace KDL
- {
- //Forward declaration
- class TreeElement;
- // Eigen allocator is needed for alignment of Eigen data types
-- typedef std::map<std::string,TreeElement, std::less<std::string>, Eigen::aligned_allocator<std::pair<std::string, TreeElement> > > SegmentMap;
-+ typedef std::map<std::string,TreeElement, std::less<std::string>, Eigen::aligned_allocator<std::pair<const std::string, TreeElement> > > SegmentMap;
-
- class TreeElement
- {
- public:
- TreeElement():q_nr(0),parent(0)
- {};
- public:
- Segment segment;
- unsigned int q_nr;
- SegmentMap::value_type const *parent;
- std::vector<SegmentMap::const_iterator > children;
- TreeElement(const Segment& segment_in,const SegmentMap::value_type& parent_in,unsigned int q_nr_in)
- {
- q_nr=q_nr_in;
- segment=segment_in;
- parent=&parent_in;
- };
- static TreeElement Root()
- {
- return TreeElement();
- };
- };
-
- /**
- * \brief This class encapsulates a <strong>tree</strong>
- * kinematic interconnection structure. It is build out of segments.
- *
- * @ingroup KinematicFamily
- */
- class Tree
- {
- private:
- SegmentMap segments;
- unsigned int nrOfJoints;
- unsigned int nrOfSegments;
-
- bool addTreeRecursive(SegmentMap::const_iterator root, const std::string& tree_name, const std::string& hook_name);
-
- public:
- /**
- * The constructor of a tree, a new tree is always empty
- */
- Tree();
- Tree(const Tree& in);
- Tree& operator= (const Tree& arg);
-
- /**
- * Adds a new segment to the end of the segment with
- * hook_name as segment_name
- *
- * @param segment new segment to add
- * @param segment_name name of the new segment
- * @param hook_name name of the segment to connect this
- * segment with.
- *
- * @return false if hook_name could not be found.
- */
- bool addSegment(const Segment& segment, const std::string& segment_name, const std::string& hook_name);
-
- /**
- * Adds a complete chain to the end of the segment with
- * hook_name as segment_name. Segment i of
- * the chain will get chain_name+".Segment"+i as segment_name.
- *
- * @param chain Chain to add
- * @param chain_name name of the chain
- * @param hook_name name of the segment to connect the chain with.
- *
- * @return false if hook_name could not be found.
- */
- bool addChain(const Chain& chain, const std::string& chain_name, const std::string& hook_name);
-
- /**
- * Adds a complete tree to the end of the segment with
- * hookname as segment_name. The segments of the tree will get
- * tree_name+segment_name as segment_name.
- *
- * @param tree Tree to add
- * @param tree_name name of the tree
- * @param hook_name name of the segment to connect the tree with
- *
- * @return false if hook_name could not be found
- */
- bool addTree(const Tree& tree, const std::string& tree_name,const std::string& hook_name);
-
- /**
- * Request the total number of joints in the tree.\n
- * <strong> Important:</strong> It is not the same as the
- * total number of segments since a segment does not need to have
- * a joint.
- *
- * @return total nr of joints
- */
- unsigned int getNrOfJoints()const
- {
- return nrOfJoints;
- };
-
- /**
- * Request the total number of segments in the tree.
- * @return total number of segments
- */
- unsigned int getNrOfSegments()const {return nrOfSegments;};
-
- /**
- * Request the segment of the tree with name segment_name.
- *
- * @param segment_name the name of the requested segment
- *
- * @return constant iterator pointing to the requested segment
- */
- SegmentMap::const_iterator getSegment(const std::string& segment_name)const
- {
- return segments.find(segment_name);
- };
-
- SegmentMap::value_type const* getSegmentPtr(const std::string& segment_name)const
- {
- SegmentMap::const_iterator it = segments.find(segment_name);
-
- if (it == segments.end())
- return 0;
-
- return &*it;
- };
-
- const SegmentMap& getSegments()const
- {
- return segments;
- }
-
- virtual ~Tree(){};
- };
- }
- #endif
-
-
-
-
-
-diff --git a/intern/cycles/util/util_sseb.h b/intern/cycles/util/util_sseb.h
-index 6e669701f3b..9ffe391666a 100644
---- a/intern/cycles/util/util_sseb.h
-+++ b/intern/cycles/util/util_sseb.h
-@@ -116,7 +116,7 @@ __forceinline const sseb unpacklo( const sseb& a, const sseb& b ) { return _mm_u
- __forceinline const sseb unpackhi( const sseb& a, const sseb& b ) { return _mm_unpackhi_ps(a, b); }
-
- template<size_t i0, size_t i1, size_t i2, size_t i3> __forceinline const sseb shuffle( const sseb& a ) {
-- return _mm_shuffle_epi32(a, _MM_SHUFFLE(i3, i2, i1, i0));
-+ return _mm_castsi128_ps(_mm_shuffle_epi32(a, _MM_SHUFFLE(i3, i2, i1, i0)));
- }
-
- template<> __forceinline const sseb shuffle<0, 1, 0, 1>( const sseb& a ) {
diff --git a/testing/blender/musl-fixes.patch b/testing/blender/musl-fixes.patch
new file mode 100644
index 0000000000..89ecee7087
--- /dev/null
+++ b/testing/blender/musl-fixes.patch
@@ -0,0 +1,78 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0c2e4f8..5b7b747 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -185,6 +185,18 @@ if(UNIX AND NOT APPLE)
+ set(_init_OPENSUBDIV OFF)
+ set(_init_OPENVDB OFF)
+ set(_init_OPENIMAGEDENOISE OFF)
++ # musl-libc related checks (missing execinfo.h, and feenableexcept())
++ include(CheckIncludeFiles)
++ check_include_files(execinfo.h HAVE_EXECINFO_H)
++ if (HAVE_EXECINFO_H)
++ add_definitions(-DHAVE_EXECINFO_H)
++ endif()
++
++ include(CheckLibraryExists)
++ check_library_exists(m feenableexcept "fenv.h" HAVE_FEENABLEEXCEPT)
++ if (HAVE_FEENABLEEXCEPT)
++ add_definitions(-DHAVE_FEENABLEEXCEPT)
++ endif()
+ elseif(WIN32)
+ set(_init_JACK OFF)
+ elseif(APPLE)
+diff --git a/intern/guardedalloc/intern/mallocn_intern.h b/intern/guardedalloc/intern/mallocn_intern.h
+index e6e0907..6868a88 100644
+--- a/intern/guardedalloc/intern/mallocn_intern.h
++++ b/intern/guardedalloc/intern/mallocn_intern.h
+@@ -40,7 +40,8 @@
+ #undef HAVE_MALLOC_STATS
+ #define USE_MALLOC_USABLE_SIZE /* internal, when we have malloc_usable_size() */
+
+-#if defined(__linux__) || (defined(__FreeBSD_kernel__) && !defined(__FreeBSD__)) || \
++#if (defined(__linux__) && defined(HAVE_EXECINFO_H)) \
++ || (defined(__FreeBSD_kernel__) && !defined(__FreeBSD__)) || \
+ defined(__GLIBC__)
+ # include <malloc.h>
+ # define HAVE_MALLOC_STATS
+diff --git a/source/blender/blenlib/intern/system.c b/source/blender/blenlib/intern/system.c
+index 941c2b6..2b710a4 100644
+--- a/source/blender/blenlib/intern/system.c
++++ b/source/blender/blenlib/intern/system.c
+@@ -38,7 +38,9 @@
+ # include <dbghelp.h>
+ # pragma warning(pop)
+ #else
+-# include <execinfo.h>
++# if defined(HAVE_EXECINFO_H)
++# include <execinfo.h>
++# endif
+ # include <unistd.h>
+ #endif
+
+diff --git a/source/creator/creator_signals.c b/source/creator/creator_signals.c
+index e8c6e92..5b54ea9 100644
+--- a/source/creator/creator_signals.c
++++ b/source/creator/creator_signals.c
+@@ -329,7 +329,7 @@ void main_signal_setup_fpe(void)
+ * set breakpoints on sig_handle_fpe */
+ signal(SIGFPE, sig_handle_fpe);
+
+-# if defined(__linux__) && defined(__GNUC__)
++# if defined(__linux__) && defined(__GNUC__) && defined(HAVE_FEENABLEEXCEPT)
+ feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
+ # endif /* defined(__linux__) && defined(__GNUC__) */
+ # if defined(OSX_SSE_FPE)
+diff --git a/source/blender/blenlib/intern/system.c b/source/blender/blenlib/intern/system.c
+index 2b710a4..0e2948c 100644
+--- a/source/blender/blenlib/intern/system.c
++++ b/source/blender/blenlib/intern/system.c
+@@ -83,7 +83,7 @@ void BLI_system_backtrace(FILE *fp)
+ {
+ /* ------------- */
+ /* Linux / Apple */
+-#if defined(__linux__) || defined(__APPLE__)
++#if (defined(__linux__) && defined(HAVE_EXECINFO_H)) || defined(__APPLE__)
+
+ # define SIZE 100
+ void *buffer[SIZE];
diff --git a/testing/blender/openimageio-lib.patch b/testing/blender/openimageio-lib.patch
new file mode 100644
index 0000000000..81d2a20936
--- /dev/null
+++ b/testing/blender/openimageio-lib.patch
@@ -0,0 +1,13 @@
+diff --git a/build_files/cmake/Modules/FindOpenImageIO.cmake b/build_files/cmake/Modules/FindOpenImageIO.cmake
+index 5652e16..9358cc7 100644
+--- a/build_files/cmake/Modules/FindOpenImageIO.cmake
++++ b/build_files/cmake/Modules/FindOpenImageIO.cmake
+@@ -71,7 +71,7 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenImageIO DEFAULT_MSG
+ OPENIMAGEIO_LIBRARY OPENIMAGEIO_INCLUDE_DIR)
+
+ IF(OPENIMAGEIO_FOUND)
+- SET(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARY})
++ SET(OPENIMAGEIO_LIBRARIES ${OPENEXR_ILMIMF_LIBRARY} ${OPENIMAGEIO_LIBRARY})
+ SET(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO_INCLUDE_DIR})
+ IF(EXISTS ${OPENIMAGEIO_INCLUDE_DIR}/OpenImageIO/pugixml.hpp)
+ SET(OPENIMAGEIO_PUGIXML_FOUND TRUE)
diff --git a/testing/blender/python-3.8.patch b/testing/blender/python-3.8.patch
new file mode 100644
index 0000000000..c26934e344
--- /dev/null
+++ b/testing/blender/python-3.8.patch
@@ -0,0 +1,49 @@
+Index: blender-2.80_patched/source/blender/python/generic/py_capi_utils.c
+===================================================================
+--- blender-2.80_patched/source/blender/python/generic/py_capi_utils.c
++++ blender-2.80_patched/source/blender/python/generic/py_capi_utils.c
+@@ -717,9 +717,11 @@
+ ****************************************************************************/
+ PyObject *PyC_DefaultNameSpace(const char *filename)
+ {
+- PyInterpreterState *interp = PyThreadState_GET()->interp;
++ PyObject *modules = PyImport_GetModuleDict();
++ PyObject *builtins = PyDict_GetItemString(modules, "builtins");
++
+ PyObject *mod_main = PyModule_New("__main__");
+- PyDict_SetItemString(interp->modules, "__main__", mod_main);
++ PyDict_SetItemString(modules, "__main__", mod_main);
+ Py_DECREF(mod_main); /* sys.modules owns now */
+ PyModule_AddStringConstant(mod_main, "__name__", "__main__");
+ if (filename) {
+@@ -727,8 +729,8 @@
+ * note: this wont map to a real file when executing text-blocks and buttons. */
+ PyModule_AddObject(mod_main, "__file__", PyC_UnicodeFromByte(filename));
+ }
+- PyModule_AddObject(mod_main, "__builtins__", interp->builtins);
+- Py_INCREF(interp->builtins); /* AddObject steals a reference */
++ PyModule_AddObject(mod_main, "__builtins__", builtins);
++ Py_INCREF(builtins); /* AddObject steals a reference */
+ return PyModule_GetDict(mod_main);
+ }
+
+@@ -755,15 +757,15 @@
+ /* restore MUST be called after this */
+ void PyC_MainModule_Backup(PyObject **main_mod)
+ {
+- PyInterpreterState *interp = PyThreadState_GET()->interp;
+- *main_mod = PyDict_GetItemString(interp->modules, "__main__");
++ PyObject *modules = PyImport_GetModuleDict();
++ *main_mod = PyDict_GetItemString(modules, "__main__");
+ Py_XINCREF(*main_mod); /* don't free */
+ }
+
+ void PyC_MainModule_Restore(PyObject *main_mod)
+ {
+- PyInterpreterState *interp = PyThreadState_GET()->interp;
+- PyDict_SetItemString(interp->modules, "__main__", main_mod);
++ PyObject *modules = PyImport_GetModuleDict();
++ PyDict_SetItemString(modules, "__main__", main_mod);
+ Py_XDECREF(main_mod);
+ }
+