gnu: blender: Restore version 2.79b for systems without OpenGL 3.
Fixes <https://bugs.gnu.org/33882>. * gnu/packages/graphics.scm (blender-2.79): New variable. (blender)[description]: Remove obsolete claim that the stable release no longer works in Guix. * gnu/packages/patches/blender-2.79-newer-ffmpeg.patch, gnu/packages/patches/blender-2.79-python-3.7-fix.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them.
This commit is contained in:
		
							parent
							
								
									933cc19684
								
							
						
					
					
						commit
						8b672b2c48
					
				
					 4 changed files with 216 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -672,6 +672,8 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/beignet-correct-file-names.patch		\
 | 
			
		||||
  %D%/packages/patches/biber-fix-encoding-write.patch		\
 | 
			
		||||
  %D%/packages/patches/binutils-loongson-workaround.patch	\
 | 
			
		||||
  %D%/packages/patches/blender-2.79-newer-ffmpeg.patch		\
 | 
			
		||||
  %D%/packages/patches/blender-2.79-python-3.7-fix.patch	\
 | 
			
		||||
  %D%/packages/patches/boost-fix-icu-build.patch		\
 | 
			
		||||
  %D%/packages/patches/byobu-writable-status.patch		\
 | 
			
		||||
  %D%/packages/patches/calibre-no-updates-dialog.patch		\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,7 @@
 | 
			
		|||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 | 
			
		||||
;;; Copyright © 2018 Alex Kost <alezost@gmail.com>
 | 
			
		||||
;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
 | 
			
		||||
;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -165,10 +166,98 @@ the 3D pipeline—modeling, 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.
 | 
			
		||||
 | 
			
		||||
WARNING: This package offers a beta build of Blender, because the stable release
 | 
			
		||||
no longer works in Guix. See @uref{https://issues.guix.info/issue/33882}.")
 | 
			
		||||
WARNING: This is a beta build of Blender.")
 | 
			
		||||
    (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-python-3.7-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 "m")
 | 
			
		||||
               (string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python")
 | 
			
		||||
                              "/lib")
 | 
			
		||||
               (string-append "-DPYTHON_INCLUDE_DIR=" (assoc-ref %build-inputs "python")
 | 
			
		||||
                              "/include/python" ,python-version "m")
 | 
			
		||||
               (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-1)
 | 
			
		||||
       ("libjpeg" ,libjpeg)
 | 
			
		||||
       ("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 pipeline—modeling, 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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										80
									
								
								gnu/packages/patches/blender-2.79-newer-ffmpeg.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								gnu/packages/patches/blender-2.79-newer-ffmpeg.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,80 @@
 | 
			
		|||
https://sources.debian.org/data/main/b/blender/2.79.b+dfsg0-4/debian/patches/0008-fix_building_with_latest_versions_of_FFmpeg.patch
 | 
			
		||||
 | 
			
		||||
From: Bastien Montagne <montagne29@wanadoo.fr>
 | 
			
		||||
Date: Tue, 8 May 2018 16:00:52 +0200
 | 
			
		||||
Subject: fix_building_with_latest_versions_of_FFmpeg
 | 
			
		||||
 | 
			
		||||
Some years-old deprecated stuff has now been removed.
 | 
			
		||||
 | 
			
		||||
Correct solution is probably to use valid defines etc. in own code, but
 | 
			
		||||
this is more FFMEPG maintainer task (since it also may change how old
 | 
			
		||||
FFMPEG we do support...).
 | 
			
		||||
---
 | 
			
		||||
 intern/ffmpeg/ffmpeg_compat.h                  | 39 ++++++++++++++++++++++++++
 | 
			
		||||
 source/blender/blenkernel/intern/writeffmpeg.c |  3 +-
 | 
			
		||||
 2 files changed, 41 insertions(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/intern/ffmpeg/ffmpeg_compat.h b/intern/ffmpeg/ffmpeg_compat.h
 | 
			
		||||
index 9c06c8a..f7f437c 100644
 | 
			
		||||
--- a/intern/ffmpeg/ffmpeg_compat.h
 | 
			
		||||
+++ b/intern/ffmpeg/ffmpeg_compat.h
 | 
			
		||||
@@ -109,6 +109,45 @@ int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt)
 | 
			
		||||
 
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
+/* XXX TODO Probably fix to correct modern flags in code? Not sure how old FFMPEG we want to support though,
 | 
			
		||||
+ * so for now this will do. */
 | 
			
		||||
+
 | 
			
		||||
+#ifndef FF_MIN_BUFFER_SIZE
 | 
			
		||||
+#  ifdef AV_INPUT_BUFFER_MIN_SIZE
 | 
			
		||||
+#    define FF_MIN_BUFFER_SIZE AV_INPUT_BUFFER_MIN_SIZE
 | 
			
		||||
+#  endif
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
+#ifndef FF_INPUT_BUFFER_PADDING_SIZE
 | 
			
		||||
+#  ifdef AV_INPUT_BUFFER_PADDING_SIZE
 | 
			
		||||
+#    define FF_INPUT_BUFFER_PADDING_SIZE AV_INPUT_BUFFER_PADDING_SIZE
 | 
			
		||||
+#  endif
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
+#ifndef CODEC_FLAG_GLOBAL_HEADER
 | 
			
		||||
+#  ifdef AV_CODEC_FLAG_GLOBAL_HEADER
 | 
			
		||||
+#    define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
 | 
			
		||||
+#  endif
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
+#ifndef CODEC_FLAG_GLOBAL_HEADER
 | 
			
		||||
+#  ifdef AV_CODEC_FLAG_GLOBAL_HEADER
 | 
			
		||||
+#    define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
 | 
			
		||||
+#  endif
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
+#ifndef CODEC_FLAG_INTERLACED_DCT
 | 
			
		||||
+#  ifdef AV_CODEC_FLAG_INTERLACED_DCT
 | 
			
		||||
+#    define CODEC_FLAG_INTERLACED_DCT AV_CODEC_FLAG_INTERLACED_DCT
 | 
			
		||||
+#  endif
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
+#ifndef CODEC_FLAG_INTERLACED_ME
 | 
			
		||||
+#  ifdef AV_CODEC_FLAG_INTERLACED_ME
 | 
			
		||||
+#    define CODEC_FLAG_INTERLACED_ME AV_CODEC_FLAG_INTERLACED_ME
 | 
			
		||||
+#  endif
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
 /* FFmpeg upstream 1.0 is the first who added AV_ prefix. */
 | 
			
		||||
 #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 59, 100)
 | 
			
		||||
 #  define AV_CODEC_ID_NONE CODEC_ID_NONE
 | 
			
		||||
diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
 | 
			
		||||
index a19e414..04d508a 100644
 | 
			
		||||
--- a/source/blender/blenkernel/intern/writeffmpeg.c
 | 
			
		||||
+++ b/source/blender/blenkernel/intern/writeffmpeg.c
 | 
			
		||||
@@ -605,7 +605,8 @@ static AVStream *alloc_video_stream(FFMpegContext *context, RenderData *rd, int
 | 
			
		||||
 	c->rc_buffer_aggressivity = 1.0;
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
-	c->me_method = ME_EPZS;
 | 
			
		||||
+	/* Deprecated and not doing anything since July 2015, deleted in recent ffmpeg */
 | 
			
		||||
+	//c->me_method = ME_EPZS;
 | 
			
		||||
 	
 | 
			
		||||
 	codec = avcodec_find_encoder(c->codec_id);
 | 
			
		||||
 	if (!codec)
 | 
			
		||||
							
								
								
									
										43
									
								
								gnu/packages/patches/blender-2.79-python-3.7-fix.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								gnu/packages/patches/blender-2.79-python-3.7-fix.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
Copied from https://git.blender.org/gitweb/gitweb.cgi/blender.git/patch/1db47a2ccd1e68994bf8140eba6cc2a26a2bc91f
 | 
			
		||||
Fixes <https://bugs.gnu.org/33608>.
 | 
			
		||||
 | 
			
		||||
From 1db47a2ccd1e68994bf8140eba6cc2a26a2bc91f Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Campbell Barton <ideasman42@gmail.com>
 | 
			
		||||
Date: Thu, 12 Jul 2018 08:28:06 +0200
 | 
			
		||||
Subject: [PATCH] Fix PyRNA class registration w/ Python 3.7
 | 
			
		||||
 | 
			
		||||
In Python3.7 this now raises an error.
 | 
			
		||||
---
 | 
			
		||||
 source/blender/python/intern/bpy_rna.c | 5 +++++
 | 
			
		||||
 1 file changed, 5 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
 | 
			
		||||
index 9052b6f580a..80b0aa7a51b 100644
 | 
			
		||||
--- a/source/blender/python/intern/bpy_rna.c
 | 
			
		||||
+++ b/source/blender/python/intern/bpy_rna.c
 | 
			
		||||
@@ -7577,10 +7577,12 @@ static int bpy_class_validate_recursive(PointerRNA *dummyptr, StructRNA *srna, v
 | 
			
		||||
 		if (!(flag & PROP_REGISTER))
 | 
			
		||||
 			continue;
 | 
			
		||||
 
 | 
			
		||||
+		/* TODO(campbell): Use Python3.7x _PyObject_LookupAttr(), also in the macro below. */
 | 
			
		||||
 		identifier = RNA_property_identifier(prop);
 | 
			
		||||
 		item = PyObject_GetAttrString(py_class, identifier);
 | 
			
		||||
 
 | 
			
		||||
 		if (item == NULL) {
 | 
			
		||||
+			PyErr_Clear();
 | 
			
		||||
 			/* Sneaky workaround to use the class name as the bl_idname */
 | 
			
		||||
 
 | 
			
		||||
 #define     BPY_REPLACEMENT_STRING(rna_attr, py_attr)                         \
 | 
			
		||||
@@ -7596,6 +7598,9 @@ static int bpy_class_validate_recursive(PointerRNA *dummyptr, StructRNA *srna, v
 | 
			
		||||
 					}                                                         \
 | 
			
		||||
 					Py_DECREF(item);                                          \
 | 
			
		||||
 				}                                                             \
 | 
			
		||||
+				else {                                                        \
 | 
			
		||||
+					PyErr_Clear();                                            \
 | 
			
		||||
+				}                                                             \
 | 
			
		||||
 			}  /* intentionally allow else here */
 | 
			
		||||
 
 | 
			
		||||
 			if (false) {}  /* needed for macro */
 | 
			
		||||
-- 
 | 
			
		||||
2.20.1
 | 
			
		||||
 | 
			
		||||
		Reference in a new issue