Restore blender@2.79b, the last version that does not require OpenGL 3,
and therefore the last version to work on many older computers.  Note
that this commit relies on blender-2.79-newer-ffmpeg.patch and
blender-2.79-python-3.7-fix.patch, which were left in the tree when
blender@2.79b was previously removed in commit
1f14453eedfede4626a78321c66a009c9997bee4.

* gnu/packages/patches/blender-2.79-gcc8.patch,
gnu/packages/patches/blender-2.79-gcc9.patch,
gnu/packages/patches/blender-2.79-oiio2.patch,
gnu/packages/patches/blender-2.79-python-3.8-fix.patch: New files.
* gnu/local.mk (dist_patch_DATA): Add them.
* gnu/packages/graphics.scm (blender-2.79): New variable.
This commit is contained in:
Mark H Weaver 2020-07-31 13:04:36 -04:00
parent d4c9e81c07
commit 96a655a77b
No known key found for this signature in database
GPG Key ID: 7CEF29847562C516
6 changed files with 677 additions and 0 deletions

@ -823,8 +823,12 @@ dist_patch_DATA = \
%D%/packages/patches/binutils-mingw-w64-timestamp.patch \
%D%/packages/patches/binutils-mingw-w64-deterministic.patch \
%D%/packages/patches/bitcoin-core-python-compat.patch \
%D%/packages/patches/blender-2.79-gcc8.patch \
%D%/packages/patches/blender-2.79-gcc9.patch \
%D%/packages/patches/blender-2.79-newer-ffmpeg.patch \
%D%/packages/patches/blender-2.79-oiio2.patch \
%D%/packages/patches/blender-2.79-python-3.7-fix.patch \
%D%/packages/patches/blender-2.79-python-3.8-fix.patch \
%D%/packages/patches/bpftrace-disable-bfd-disasm.patch \
%D%/packages/patches/busybox-1.31.1-fix-build-with-glibc-2.31.patch \
%D%/packages/patches/byobu-writable-status.patch \

@ -295,6 +295,102 @@ compositing and motion tracking, even video editing and game creation. The
application can be customized via its API for Python scripting.")
(license license:gpl2+)))
(define-public blender-2.79
(package
(name "blender")
(version "2.79b")
(source (origin
(method url-fetch)
(uri (string-append "https://download.blender.org/source/"
"blender-" version ".tar.gz"))
(sha256
(base32
"1g4kcdqmf67srzhi3hkdnr4z1ph4h9sza1pahz38mrj998q4r52c"))
(patches (search-patches "blender-2.79-newer-ffmpeg.patch"
"blender-2.79-oiio2.patch"
;; The following patches may be
;; needed when the default GCC is
;; updated:
;; "blender-2.79-gcc8.patch"
;; "blender-2.79-gcc9.patch"
"blender-2.79-python-3.7-fix.patch"
"blender-2.79-python-3.8-fix.patch"))))
(build-system cmake-build-system)
(arguments
(let ((python-version (version-major+minor (package-version python))))
`(;; Test files are very large and not included in the release tarball.
#:tests? #f
#:configure-flags
(list "-DWITH_CODEC_FFMPEG=ON"
"-DWITH_CODEC_SNDFILE=ON"
"-DWITH_CYCLES=ON"
"-DWITH_DOC_MANPAGE=ON"
"-DWITH_FFTW3=ON"
"-DWITH_GAMEENGINE=ON"
"-DWITH_IMAGE_OPENJPEG=ON"
"-DWITH_INPUT_NDOF=ON"
"-DWITH_INSTALL_PORTABLE=OFF"
"-DWITH_JACK=ON"
"-DWITH_MOD_OCEANSIM=ON"
"-DWITH_PLAYER=ON"
"-DWITH_PYTHON_INSTALL=OFF"
"-DWITH_PYTHON_INSTALL=OFF"
"-DWITH_SYSTEM_OPENJPEG=ON"
(string-append "-DPYTHON_LIBRARY=python" ,python-version)
(string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python")
"/lib")
(string-append "-DPYTHON_INCLUDE_DIR=" (assoc-ref %build-inputs "python")
"/include/python" ,python-version)
(string-append "-DPYTHON_VERSION=" ,python-version))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-broken-import
(lambda _
(substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
(("import encode_bin") "from . import encode_bin"))
#t))
(add-after 'set-paths 'add-ilmbase-include-path
(lambda* (#:key inputs #:allow-other-keys)
;; OpenEXR propagates ilmbase, but its include files do not appear
;; in the CPATH, so we need to add "$ilmbase/include/OpenEXR/" to
;; the CPATH to satisfy the dependency on "half.h".
(setenv "CPATH"
(string-append (assoc-ref inputs "ilmbase")
"/include/OpenEXR"
":" (or (getenv "CPATH") "")))
#t))))))
(inputs
`(("boost" ,boost)
("jemalloc" ,jemalloc)
("libx11" ,libx11)
("openimageio" ,openimageio)
("openexr" ,openexr)
("ilmbase" ,ilmbase)
("openjpeg" ,openjpeg)
("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
("libtiff" ,libtiff)
("ffmpeg" ,ffmpeg)
("fftw" ,fftw)
("jack" ,jack-1)
("libsndfile" ,libsndfile)
("freetype" ,freetype)
("glew" ,glew)
("openal" ,openal)
("python" ,python)
("zlib" ,zlib)))
(home-page "https://blender.org/")
(synopsis "3D graphics creation suite")
(description
"Blender is a 3D graphics creation suite. It supports the entirety of
the 3D pipelinemodeling, rigging, animation, simulation, rendering,
compositing and motion tracking, even video editing and game creation. The
application can be customized via its API for Python scripting.
NOTE: This older version of Blender is the last release that does not require
OpenGL 3. It is retained for use with older computers.")
(license license:gpl2+)))
(define-public assimp
(package
(name "assimp")

@ -0,0 +1,36 @@
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
@@ -34,7 +34,7 @@ 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
{
diff --git a/intern/cycles/util/util_sseb.h b/intern/cycles/util/util_sseb.h
index 6e669701f3b..977976c3fc0 100644
--- a/intern/cycles/util/util_sseb.h
+++ b/intern/cycles/util/util_sseb.h
@@ -22,6 +22,9 @@ CCL_NAMESPACE_BEGIN
#ifdef __KERNEL_SSE2__
+struct ssei;
+struct ssef;
+
/*! 4-wide SSE bool type. */
struct sseb
{
@@ -116,7 +119,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 ) {

@ -0,0 +1,53 @@
commit e6d803fd4a383cecf8c643095f093a31c944b785
Author: Robert-André Mauchin <zebob.m@gmail.com>
Date: Wed Apr 3 01:36:52 2019 +0200
Fix for GCC9 new OpenMP data sharing
GCC 9 started implementing the OpenMP 4.0 and later behavior. When not using
default clause or when using default(shared), this makes no difference, but
if using default(none), previously the choice was not specify the const
qualified variables on the construct at all, or specify in firstprivate
clause. In GCC 9 as well as for OpenMP 4.0 compliance, those variables need
to be specified on constructs in which they are used, either in shared or
in firstprivate clause. Specifying them in firstprivate clause is one way to
achieve compatibility with both older GCC versions and GCC 9,
another option is to drop the default(none) clause.
This patch thus drops the default(none) clause.
See https://gcc.gnu.org/gcc-9/porting_to.html#ompdatasharing
Signed-off-by: Robert-André Mauchin <zebob.m@gmail.com>
diff --git a/intern/elbeem/intern/solver_main.cpp b/intern/elbeem/intern/solver_main.cpp
index 68f7c04cd54..514087b6130 100644
--- a/intern/elbeem/intern/solver_main.cpp
+++ b/intern/elbeem/intern/solver_main.cpp
@@ -381,7 +381,7 @@ LbmFsgrSolver::mainLoop(const int lev)
GRID_REGION_INIT();
#if PARALLEL==1
const int gDebugLevel = ::gDebugLevel;
-#pragma omp parallel default(none) num_threads(mNumOMPThreads) \
+#pragma omp parallel num_threads(mNumOMPThreads) \
reduction(+: \
calcCurrentMass,calcCurrentVolume, \
calcCellsFilled,calcCellsEmptied, \
@@ -1126,7 +1126,7 @@ LbmFsgrSolver::preinitGrids()
GRID_REGION_INIT();
#if PARALLEL==1
const int gDebugLevel = ::gDebugLevel;
-#pragma omp parallel default(none) num_threads(mNumOMPThreads) \
+#pragma omp parallel num_threads(mNumOMPThreads) \
reduction(+: \
calcCurrentMass,calcCurrentVolume, \
calcCellsFilled,calcCellsEmptied, \
@@ -1164,7 +1164,7 @@ LbmFsgrSolver::standingFluidPreinit()
GRID_REGION_INIT();
#if PARALLEL==1
const int gDebugLevel = ::gDebugLevel;
-#pragma omp parallel default(none) num_threads(mNumOMPThreads) \
+#pragma omp parallel num_threads(mNumOMPThreads) \
reduction(+: \
calcCurrentMass,calcCurrentVolume, \
calcCellsFilled,calcCellsEmptied, \

@ -0,0 +1,284 @@
From: Sergey Sharybin <sergey@blender.org>
Date: Fri, 28 Dec 2018 11:25:35 +0100
Subject: adapt_build_against_OIIO2
---
intern/cycles/blender/blender_python.cpp | 2 +-
intern/cycles/graph/node_xml.cpp | 2 +-
intern/cycles/render/buffers.cpp | 4 ++--
intern/cycles/render/image.cpp | 15 ++++--------
intern/cycles/render/image.h | 3 ++-
intern/cycles/util/util_unique_ptr.h | 28 ++++++++++++++++++++++
.../blender/imbuf/intern/oiio/openimageio_api.cpp | 19 +++++++--------
7 files changed, 48 insertions(+), 25 deletions(-)
create mode 100644 intern/cycles/util/util_unique_ptr.h
diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp
index 54973fd..bee6dd1 100644
--- a/intern/cycles/blender/blender_python.cpp
+++ b/intern/cycles/blender/blender_python.cpp
@@ -493,7 +493,7 @@ static PyObject *osl_update_node_func(PyObject * /*self*/, PyObject *args)
socket_type = "NodeSocketString";
data_type = BL::NodeSocket::type_STRING;
if(param->validdefault)
- default_string = param->sdefault[0];
+ default_string = param->sdefault[0].string();
}
else
continue;
diff --git a/intern/cycles/graph/node_xml.cpp b/intern/cycles/graph/node_xml.cpp
index d26b3b2..2a24104 100644
--- a/intern/cycles/graph/node_xml.cpp
+++ b/intern/cycles/graph/node_xml.cpp
@@ -250,7 +250,7 @@ void xml_read_node(XMLReader& reader, Node *node, xml_node xml_node)
}
}
- if(node->name)
+ if(!node->name.empty())
reader.node_map[node->name] = node;
}
diff --git a/intern/cycles/render/buffers.cpp b/intern/cycles/render/buffers.cpp
index cf402c3..f84a37a 100644
--- a/intern/cycles/render/buffers.cpp
+++ b/intern/cycles/render/buffers.cpp
@@ -27,6 +27,7 @@
#include "util/util_opengl.h"
#include "util/util_time.h"
#include "util/util_types.h"
+#include "util/util_unique_ptr.h"
CCL_NAMESPACE_BEGIN
@@ -453,7 +454,7 @@ void DisplayBuffer::write(Device *device, const string& filename)
device->pixels_copy_from(rgba, 0, w, h);
/* write image */
- ImageOutput *out = ImageOutput::create(filename);
+ unique_ptr<ImageOutput> out = unique_ptr<ImageOutput>(ImageOutput::create(filename));
ImageSpec spec(w, h, 4, TypeDesc::UINT8);
int scanlinesize = w*4*sizeof(uchar);
@@ -468,7 +469,6 @@ void DisplayBuffer::write(Device *device, const string& filename)
out->close();
- delete out;
}
device_memory& DisplayBuffer::rgba_data()
diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index 595eb46..a143b02 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -23,6 +23,7 @@
#include "util/util_path.h"
#include "util/util_progress.h"
#include "util/util_texture.h"
+#include "util/util_unique_ptr.h"
#ifdef WITH_OSL
#include <OSL/oslexec.h>
@@ -148,7 +149,7 @@ ImageDataType ImageManager::get_image_metadata(const string& filename,
return IMAGE_DATA_TYPE_BYTE4;
}
- ImageInput *in = ImageInput::create(filename);
+ unique_ptr<ImageInput> in(ImageInput::create(filename));
if(in) {
ImageSpec spec;
@@ -194,7 +195,6 @@ ImageDataType ImageManager::get_image_metadata(const string& filename,
in->close();
}
- delete in;
}
if(is_half) {
@@ -449,7 +449,7 @@ void ImageManager::tag_reload_image(const string& filename,
}
bool ImageManager::file_load_image_generic(Image *img,
- ImageInput **in,
+ unique_ptr<ImageInput> *in,
int &width,
int &height,
int &depth,
@@ -465,7 +465,7 @@ bool ImageManager::file_load_image_generic(Image *img,
}
/* load image from file through OIIO */
- *in = ImageInput::create(img->filename);
+ *in = unique_ptr<ImageInput>(ImageInput::create(img->filename));
if(!*in)
return false;
@@ -477,8 +477,6 @@ bool ImageManager::file_load_image_generic(Image *img,
config.attribute("oiio:UnassociatedAlpha", 1);
if(!(*in)->open(img->filename, spec, config)) {
- delete *in;
- *in = NULL;
return false;
}
@@ -500,8 +498,6 @@ bool ImageManager::file_load_image_generic(Image *img,
if(!(components >= 1 && components <= 4)) {
if(*in) {
(*in)->close();
- delete *in;
- *in = NULL;
}
return false;
@@ -519,7 +515,7 @@ bool ImageManager::file_load_image(Image *img,
device_vector<DeviceType>& tex_img)
{
const StorageType alpha_one = (FileFormat == TypeDesc::UINT8)? 255 : 1;
- ImageInput *in = NULL;
+ unique_ptr<ImageInput> in = NULL;
int width, height, depth, components;
if(!file_load_image_generic(img, &in, width, height, depth, components)) {
return false;
@@ -575,7 +571,6 @@ bool ImageManager::file_load_image(Image *img,
}
cmyk = strcmp(in->format_name(), "jpeg") == 0 && components == 4;
in->close();
- delete in;
}
else {
if(FileFormat == TypeDesc::FLOAT) {
diff --git a/intern/cycles/render/image.h b/intern/cycles/render/image.h
index db7e28a..f4a14f4 100644
--- a/intern/cycles/render/image.h
+++ b/intern/cycles/render/image.h
@@ -23,6 +23,7 @@
#include "util/util_image.h"
#include "util/util_string.h"
#include "util/util_thread.h"
+#include "util/util_unique_ptr.h"
#include "util/util_vector.h"
CCL_NAMESPACE_BEGIN
@@ -133,7 +134,7 @@ private:
bool pack_images;
bool file_load_image_generic(Image *img,
- ImageInput **in,
+ unique_ptr<ImageInput> *in,
int &width,
int &height,
int &depth,
diff --git a/intern/cycles/util/util_unique_ptr.h b/intern/cycles/util/util_unique_ptr.h
new file mode 100644
index 0000000..1ceae73
--- /dev/null
+++ b/intern/cycles/util/util_unique_ptr.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2011-2013 Blender Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __UTIL_UNIQUE_PTR_H__
+#define __UTIL_UNIQUE_PTR_H__
+
+#include <memory>
+
+CCL_NAMESPACE_BEGIN
+
+using std::unique_ptr;
+
+CCL_NAMESPACE_END
+
+#endif /* __UTIL_UNIQUE_PTR_H__ */
diff --git a/source/blender/imbuf/intern/oiio/openimageio_api.cpp b/source/blender/imbuf/intern/oiio/openimageio_api.cpp
index b123d50..7f2fac9 100644
--- a/source/blender/imbuf/intern/oiio/openimageio_api.cpp
+++ b/source/blender/imbuf/intern/oiio/openimageio_api.cpp
@@ -35,6 +35,11 @@
#include "utfconv.h"
#endif
+// NOTE: Keep first, BLI_path_util conflicts with OIIO's format.
+#include <memory>
+#include <openimageio_api.h>
+#include <OpenImageIO/imageio.h>
+
extern "C"
{
#include "MEM_guardedalloc.h"
@@ -48,12 +53,10 @@ extern "C"
#include "IMB_colormanagement_intern.h"
}
-#include <openimageio_api.h>
-#include <OpenImageIO/imageio.h>
-
OIIO_NAMESPACE_USING
using std::string;
+using std::unique_ptr;
typedef unsigned char uchar;
@@ -197,7 +200,6 @@ int imb_save_photoshop(struct ImBuf *ibuf, const char * /*name*/, int flags)
struct ImBuf *imb_load_photoshop(const char *filename, int flags, char colorspace[IM_MAX_SPACE])
{
- ImageInput *in = NULL;
struct ImBuf *ibuf = NULL;
int width, height, components;
bool is_float, is_alpha;
@@ -210,7 +212,7 @@ struct ImBuf *imb_load_photoshop(const char *filename, int flags, char colorspac
colorspace_set_default_role(colorspace, IM_MAX_SPACE, COLOR_ROLE_DEFAULT_BYTE);
- in = ImageInput::create(filename);
+ unique_ptr<ImageInput> in(ImageInput::create(filename));
if (!in) {
std::cerr << __func__ << ": ImageInput::create() failed:" << std::endl
<< OIIO_NAMESPACE::geterror() << std::endl;
@@ -223,7 +225,6 @@ struct ImBuf *imb_load_photoshop(const char *filename, int flags, char colorspac
if (!in->open(filename, spec, config)) {
std::cerr << __func__ << ": ImageInput::open() failed:" << std::endl
<< in->geterror() << std::endl;
- delete in;
return NULL;
}
@@ -249,19 +250,17 @@ struct ImBuf *imb_load_photoshop(const char *filename, int flags, char colorspac
if (!(components >= 1 && components <= 4)) {
if (in) {
in->close();
- delete in;
}
return NULL;
}
if (is_float)
- ibuf = imb_oiio_load_image_float(in, width, height, components, flags, is_alpha);
+ ibuf = imb_oiio_load_image_float(in.get(), width, height, components, flags, is_alpha);
else
- ibuf = imb_oiio_load_image(in, width, height, components, flags, is_alpha);
+ ibuf = imb_oiio_load_image(in.get(), width, height, components, flags, is_alpha);
if (in) {
in->close();
- delete in;
}
if (!ibuf)

@ -0,0 +1,204 @@
From 4b663ecf264020b1d7003a137ce84b06d7ec4ce6 Mon Sep 17 00:00:00 2001
From: bartus <szczepaniak.bartek+github@gmail.com>
Date: Sat, 16 Nov 2019 20:29:30 +0100
Subject: [PATCH] Add python 3.8 support.
---
source/blender/python/generic/py_capi_utils.c | 27 +++++++++++++++----
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/source/blender/python/generic/py_capi_utils.c b/source/blender/python/generic/py_capi_utils.c
index 545e0506f84..a7eab70600b 100644
--- a/source/blender/python/generic/py_capi_utils.c
+++ b/source/blender/python/generic/py_capi_utils.c
@@ -696,9 +696,16 @@ PyObject *PyC_UnicodeFromByte(const char *str)
****************************************************************************/
PyObject *PyC_DefaultNameSpace(const char *filename)
{
+ #if PY_VERSION_HEX >= 0x03080000
+ PyObject *modules = PyImport_GetModuleDict();
+ PyObject *builtins = PyEval_GetBuiltins();
+ #else
PyInterpreterState *interp = PyThreadState_GET()->interp;
+ PyObject *modules = interp->modules;
+ PyObject *builtins = interp->builtins;
+ #endif
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) {
@@ -706,8 +713,8 @@ PyObject *PyC_DefaultNameSpace(const char *filename)
* 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);
}
@@ -734,15 +741,25 @@ bool PyC_NameSpace_ImportArray(PyObject *py_dict, const char *imports[])
/* restore MUST be called after this */
void PyC_MainModule_Backup(PyObject **main_mod)
{
+ #if PY_VERSION_HEX >= 0x03080000
+ PyObject *modules = PyImport_GetModuleDict();
+ #else
PyInterpreterState *interp = PyThreadState_GET()->interp;
- *main_mod = PyDict_GetItemString(interp->modules, "__main__");
+ PyObject *modules = interp->modules;
+ #endif
+ *main_mod = PyDict_GetItemString(modules, "__main__");
Py_XINCREF(*main_mod); /* don't free */
}
void PyC_MainModule_Restore(PyObject *main_mod)
{
+ #if PY_VERSION_HEX >= 0x03080000
+ PyObject *modules = PyImport_GetModuleDict();
+ #else
PyInterpreterState *interp = PyThreadState_GET()->interp;
- PyDict_SetItemString(interp->modules, "__main__", main_mod);
+ PyObject *modules = interp->modules;
+ #endif
+ PyDict_SetItemString(modules, "__main__", main_mod);
Py_XDECREF(main_mod);
}
--
2.24.0
From 44f719b63238503ef8f933f55383c6d4798995cc Mon Sep 17 00:00:00 2001
From: Campbell Barton <ideasman42@gmail.com>
Date: Thu, 13 Sep 2018 17:06:07 +1000
Subject: [PATCH] Cleanup: use PyImport_GetModuleDict
Replace direct access using PyThreadState_GET
---
source/blender/python/bmesh/bmesh_py_api.c | 2 +-
source/blender/python/generic/idprop_py_api.c | 2 +-
source/blender/python/intern/bpy_interface.c | 2 +-
source/blender/python/intern/gpu.c | 4 ++--
source/blender/python/mathutils/mathutils.c | 2 +-
source/blender/python/mathutils/mathutils_noise.c | 5 +++--
source/gameengine/Ketsji/KX_PythonInit.cpp | 2 +-
7 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/source/blender/python/bmesh/bmesh_py_api.c b/source/blender/python/bmesh/bmesh_py_api.c
index d5973baeadb..d7324eabb6c 100644
--- a/source/blender/python/bmesh/bmesh_py_api.c
+++ b/source/blender/python/bmesh/bmesh_py_api.c
@@ -196,7 +196,7 @@ PyObject *BPyInit_bmesh(void)
{
PyObject *mod;
PyObject *submodule;
- PyObject *sys_modules = PyThreadState_GET()->interp->modules;
+ PyObject *sys_modules = PyImport_GetModuleDict();
BPy_BM_init_types();
BPy_BM_init_types_select();
diff --git a/source/blender/python/generic/idprop_py_api.c b/source/blender/python/generic/idprop_py_api.c
index 4d4d5232800..8bed0f28cba 100644
--- a/source/blender/python/generic/idprop_py_api.c
+++ b/source/blender/python/generic/idprop_py_api.c
@@ -1795,7 +1795,7 @@ PyObject *BPyInit_idprop(void)
{
PyObject *mod;
PyObject *submodule;
- PyObject *sys_modules = PyThreadState_GET()->interp->modules;
+ PyObject *sys_modules = PyImport_GetModuleDict();
mod = PyModule_Create(&IDProp_module_def);
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index 7ca087e4993..123c938b921 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -537,7 +537,7 @@ static bool python_script_exec(
if (py_dict) {
#ifdef PYMODULE_CLEAR_WORKAROUND
- PyModuleObject *mmod = (PyModuleObject *)PyDict_GetItemString(PyThreadState_GET()->interp->modules, "__main__");
+ PyModuleObject *mmod = (PyModuleObject *)PyDict_GetItemString(PyImport_GetModuleDict(), "__main__");
PyObject *dict_back = mmod->md_dict;
/* freeing the module will clear the namespace,
* gives problems running classes defined in this namespace being used later. */
diff --git a/source/blender/python/intern/gpu.c b/source/blender/python/intern/gpu.c
index 43796dc9474..d902b6838f4 100644
--- a/source/blender/python/intern/gpu.c
+++ b/source/blender/python/intern/gpu.c
@@ -326,7 +326,7 @@ PyObject *GPU_initPython(void)
{
PyObject *module;
PyObject *submodule;
- PyObject *sys_modules = PyThreadState_GET()->interp->modules;
+ PyObject *sys_modules = PyImport_GetModuleDict();
module = PyInit_gpu();
@@ -337,6 +337,6 @@ PyObject *GPU_initPython(void)
PyDict_SetItem(sys_modules, PyModule_GetNameObject(submodule), submodule);
Py_INCREF(submodule);
- PyDict_SetItem(PyImport_GetModuleDict(), PyModule_GetNameObject(module), module);
+ PyDict_SetItem(sys_modules, PyModule_GetNameObject(module), module);
return module;
}
diff --git a/source/blender/python/mathutils/mathutils.c b/source/blender/python/mathutils/mathutils.c
index a3a4e7f313b..f021d456b3a 100644
--- a/source/blender/python/mathutils/mathutils.c
+++ b/source/blender/python/mathutils/mathutils.c
@@ -615,7 +615,7 @@ PyMODINIT_FUNC PyInit_mathutils(void)
{
PyObject *mod;
PyObject *submodule;
- PyObject *sys_modules = PyThreadState_GET()->interp->modules;
+ PyObject *sys_modules = PyImport_GetModuleDict();
if (PyType_Ready(&vector_Type) < 0)
return NULL;
diff --git a/source/blender/python/mathutils/mathutils_noise.c b/source/blender/python/mathutils/mathutils_noise.c
index 839d1ffc588..834322c0aed 100644
--- a/source/blender/python/mathutils/mathutils_noise.c
+++ b/source/blender/python/mathutils/mathutils_noise.c
@@ -845,6 +845,7 @@ static struct PyModuleDef M_Noise_module_def = {
/*----------------------------MODULE INIT-------------------------*/
PyMODINIT_FUNC PyInit_mathutils_noise(void)
{
+ PyObject *sys_modules = PyImport_GetModuleDict();
PyObject *submodule = PyModule_Create(&M_Noise_module_def);
PyObject *item_types, *item_metrics;
@@ -852,11 +853,11 @@ PyMODINIT_FUNC PyInit_mathutils_noise(void)
setRndSeed(0);
PyModule_AddObject(submodule, "types", (item_types = PyInit_mathutils_noise_types()));
- PyDict_SetItemString(PyThreadState_GET()->interp->modules, "noise.types", item_types);
+ PyDict_SetItemString(sys_modules, "noise.types", item_types);
Py_INCREF(item_types);
PyModule_AddObject(submodule, "distance_metrics", (item_metrics = PyInit_mathutils_noise_metrics()));
- PyDict_SetItemString(PyThreadState_GET()->interp->modules, "noise.distance_metrics", item_metrics);
+ PyDict_SetItemString(sys_modules, "noise.distance_metrics", item_metrics);
Py_INCREF(item_metrics);
return submodule;
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index 251273cf7a8..9611a4ea49b 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -2234,7 +2234,7 @@ PyMODINIT_FUNC initBGE(void)
{
PyObject *mod;
PyObject *submodule;
- PyObject *sys_modules = PyThreadState_GET()->interp->modules;
+ PyObject *sys_modules = PyImport_GetModuleDict();
const char *mod_full;
mod = PyModule_Create(&BGE_module_def);
--
2.25.0