Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] blender: update to 4.0.2.
@ 2024-01-10  3:22 sgn
  2024-04-01 19:37 ` biopsin
  2024-04-02  1:01 ` [PR PATCH] [Closed]: " sgn
  0 siblings, 2 replies; 3+ messages in thread
From: sgn @ 2024-01-10  3:22 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1236 bytes --]

There is a new pull request by sgn against master on the void-packages repository

https://github.com/sgn/void-packages blender-update
https://github.com/void-linux/void-packages/pull/48150

blender: update to 4.0.2.
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **YES**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/48150.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-blender-update-48150.patch --]
[-- Type: text/x-diff, Size: 58742 bytes --]

From 506155159cbf6fc7e38eb645926c2fd58858d0db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Mon, 8 Jan 2024 21:29:11 +0700
Subject: [PATCH] blender: update to 4.0.2.

---
 srcpkgs/blender/patches/0001-musl-fixes.patch |   10 +-
 srcpkgs/blender/patches/altivec-all.patch     |    6 +-
 srcpkgs/blender/patches/boost-1.81.patch      |   12 -
 .../blender/patches/python-3.12-regex.patch   |   36 +
 .../blender/patches/python3.12-opcode.patch   |   89 --
 .../patches/python3.12-pyarg-parser.patch     | 1161 -----------------
 .../patches/python3.12-pylongobject.patch     |   26 +-
 srcpkgs/blender/template                      |   11 +-
 8 files changed, 61 insertions(+), 1290 deletions(-)
 delete mode 100644 srcpkgs/blender/patches/boost-1.81.patch
 create mode 100644 srcpkgs/blender/patches/python-3.12-regex.patch
 delete mode 100644 srcpkgs/blender/patches/python3.12-opcode.patch
 delete mode 100644 srcpkgs/blender/patches/python3.12-pyarg-parser.patch

diff --git a/srcpkgs/blender/patches/0001-musl-fixes.patch b/srcpkgs/blender/patches/0001-musl-fixes.patch
index b48056d01327c..a32821172cba3 100644
--- a/srcpkgs/blender/patches/0001-musl-fixes.patch
+++ b/srcpkgs/blender/patches/0001-musl-fixes.patch
@@ -10,17 +10,15 @@ Subject: [PATCH 1/2] musl fixes
  extern/glog/src/config_linux.h | 1 -
  1 file changed, 1 deletion(-)
 
-diff --git a/extern/glog/src/config_linux.h b/extern/glog/src/config_linux.h
-index b3a3325..946095a 100644
 --- a/extern/glog/src/config_linux.h
 +++ b/extern/glog/src/config_linux.h
-@@ -14,7 +14,6 @@
+@@ -14,7 +14,9 @@
  #define HAVE_DLFCN_H
  
  /* Define to 1 if you have the <execinfo.h> header file. */
--#define HAVE_EXECINFO_H
++#ifdef __GLIBC__
+ #define HAVE_EXECINFO_H
++#endif
  
  /* Define if you have the `fcntl' function */
  #define HAVE_FCNTL
--- 
-2.38.1
diff --git a/srcpkgs/blender/patches/altivec-all.patch b/srcpkgs/blender/patches/altivec-all.patch
index a504207d2bcc0..115e1ea6fd033 100644
--- a/srcpkgs/blender/patches/altivec-all.patch
+++ b/srcpkgs/blender/patches/altivec-all.patch
@@ -1,10 +1,8 @@
 This applies a better workaround for C++ type conflicts
 in AltiVec/C++, allowing it to build on BE ppc(64).
 
-Index: blender-3.3.0/extern/clew/include/clew.h
-===================================================================
---- blender-3.3.0.orig/extern/clew/include/clew.h
-+++ blender-3.3.0/extern/clew/include/clew.h
+--- a/extern/clew/include/clew.h
++++ b/extern/clew/include/clew.h
 @@ -370,15 +370,18 @@ typedef unsigned int cl_GLenum;
  
  /* Define basic vector types */
diff --git a/srcpkgs/blender/patches/boost-1.81.patch b/srcpkgs/blender/patches/boost-1.81.patch
deleted file mode 100644
index f04342a10187c..0000000000000
--- a/srcpkgs/blender/patches/boost-1.81.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: blender-3.3.0/intern/locale/boost_locale_wrapper.cpp
-===================================================================
---- blender-3.3.0.orig/intern/locale/boost_locale_wrapper.cpp
-+++ blender-3.3.0/intern/locale/boost_locale_wrapper.cpp
-@@ -7,6 +7,7 @@
- 
- #include <boost/locale.hpp>
- #include <stdio.h>
-+#include <iostream>
- 
- #include "boost_locale_wrapper.h"
- 
diff --git a/srcpkgs/blender/patches/python-3.12-regex.patch b/srcpkgs/blender/patches/python-3.12-regex.patch
new file mode 100644
index 0000000000000..daba4a859fd15
--- /dev/null
+++ b/srcpkgs/blender/patches/python-3.12-regex.patch
@@ -0,0 +1,36 @@
+--- a/scripts/addons/io_import_dxf/dxfgrabber/dxfentities.py
++++ b/scripts/addons/io_import_dxf/dxfgrabber/dxfentities.py
+@@ -852,7 +852,7 @@ class MText(DXFEntity):
+         self.set_default_extrusion()
+ 
+     def lines(self):
+-        return self.raw_text.split('\P')
++        return self.raw_text.split(r'\P')
+ 
+     def plain_text(self, split=False):
+         chars = []
+--- a/scripts/addons/io_scene_gltf2/io/exp/gltf2_io_image_data.py
++++ b/scripts/addons/io_scene_gltf2/io/exp/gltf2_io_image_data.py
+@@ -22,9 +22,9 @@ class ImageData:
+         return hash(self._data)
+ 
+     def adjusted_name(self):
+-        regex_dot = re.compile("\.")
++        regex_dot = re.compile(r"\.")
+         adjusted_name = re.sub(regex_dot, "_", self.name)
+-        new_name = "".join([char for char in adjusted_name if char not in "!#$&'()*+,/:;<>?@[\]^`{|}~"])
++        new_name = "".join([char for char in adjusted_name if char not in r"!#$&'()*+,/:;<>?@[\]^`{|}~"])
+         return new_name
+ 
+     @property
+--- a/scripts/modules/bl_i18n_utils/settings.py
++++ b/scripts/modules/bl_i18n_utils/settings.py
+@@ -302,7 +302,7 @@ PYGETTEXT_KEYWORDS = (() +
+     # becomes extremely slow to process some (unrelated) source files.
+     ((r"\{(?:(?:\s*\"[^\",]+\"\s*,)|(?:\s*\"\\\"\",)|(?:\s*nullptr\s*,)){4}\s*" +
+       _msg_re + r"\s*,(?:(?:\s*\"[^\"',]+\"\s*,)|(?:\s*nullptr\s*,))(?:[^,]+,){2}"
+-      + "(?:\|?\s*B_UNIT_DEF_[_A-Z]+\s*)+\}"),) +
++      + r"(?:\|?\s*B_UNIT_DEF_[_A-Z]+\s*)+\}"),) +
+ 
+     tuple((r"{}\(\s*" + _msg_re + r"\s*,\s*(?:" +
+            r"\s*,\s*)?(?:".join(_ctxt_re_gen(i) for i in range(PYGETTEXT_MAX_MULTI_CTXT)) + r")?\s*\)").format(it)
diff --git a/srcpkgs/blender/patches/python3.12-opcode.patch b/srcpkgs/blender/patches/python3.12-opcode.patch
deleted file mode 100644
index fabe6de67879b..0000000000000
--- a/srcpkgs/blender/patches/python3.12-opcode.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-https://src.fedoraproject.org/rpms/blender/raw/7045717eb5477c40905f6d29dfd3dbf5ed674e4d/f/blender-3.6.1-py312-opcode.patch
-
---- blender-3.6.1/source/blender/python/intern/bpy_driver.c.pyop	2023-05-18 08:04:45.000000000 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_driver.c	2023-08-01 17:11:06.356802916 +0900
-@@ -313,14 +313,27 @@ static const bool secure_opcodes[255] =
-     OK_OP(CACHE),
-     OK_OP(POP_TOP),
-     OK_OP(PUSH_NULL),
-+#if PY_VERSION_HEX >= 0x030c0000 /* Python 3.12 and newer */
-+    OK_OP(INTERPRETER_EXIT),
-+    OK_OP(END_FOR),
-+    OK_OP(END_SEND),
-+#endif
-     OK_OP(NOP),
-+#if PY_VERSION_HEX < 0x030c0000 /* older than Python 3.12 */
-     OK_OP(UNARY_POSITIVE),
-+#endif
-     OK_OP(UNARY_NEGATIVE),
-     OK_OP(UNARY_NOT),
-     OK_OP(UNARY_INVERT),
-     OK_OP(BINARY_SUBSCR),
-+#if PY_VERSION_HEX >= 0x030c0000 /* Python 3.12 and newer */
-+    OK_OP(BINARY_SLICE),
-+    OK_OP(STORE_SLICE),
-+#endif
-     OK_OP(GET_LEN),
-+#if PY_VERSION_HEX < 0x030c0000 /* older than Python 3.12 */
-     OK_OP(LIST_TO_TUPLE),
-+#endif
-     OK_OP(RETURN_VALUE),
-     OK_OP(SWAP),
-     OK_OP(BUILD_TUPLE),
-@@ -329,10 +342,15 @@ static const bool secure_opcodes[255] =
-     OK_OP(BUILD_MAP),
-     OK_OP(COMPARE_OP),
-     OK_OP(JUMP_FORWARD),
-+#if PY_VERSION_HEX >= 0x030c0000 /* Python 3.12 and newer */
-+    OK_OP(POP_JUMP_IF_FALSE),
-+    OK_OP(POP_JUMP_IF_TRUE),
-+#else
-     OK_OP(JUMP_IF_FALSE_OR_POP),
-     OK_OP(JUMP_IF_TRUE_OR_POP),
-     OK_OP(POP_JUMP_FORWARD_IF_FALSE),
-     OK_OP(POP_JUMP_FORWARD_IF_TRUE),
-+#endif
-     OK_OP(LOAD_GLOBAL),
-     OK_OP(IS_OP),
-     OK_OP(CONTAINS_OP),
-@@ -340,8 +358,13 @@ static const bool secure_opcodes[255] =
-     OK_OP(LOAD_FAST),
-     OK_OP(STORE_FAST),
-     OK_OP(DELETE_FAST),
-+#if PY_VERSION_HEX >= 0x030c0000 /* Python 3.12 and newer */
-+    OK_OP(POP_JUMP_IF_NOT_NONE),
-+    OK_OP(POP_JUMP_IF_NONE),
-+#else
-     OK_OP(POP_JUMP_FORWARD_IF_NOT_NONE),
-     OK_OP(POP_JUMP_FORWARD_IF_NONE),
-+#endif
-     OK_OP(BUILD_SLICE),
-     OK_OP(LOAD_DEREF),
-     OK_OP(STORE_DEREF),
-@@ -354,17 +377,26 @@ static const bool secure_opcodes[255] =
-     OK_OP(DICT_MERGE),
-     OK_OP(DICT_UPDATE),
- #    endif
-+#if PY_VERSION_HEX >= 0x030c0000 /* Python 3.12 and newer */
-+    OK_OP(INSTRUMENTED_POP_JUMP_IF_NONE),
-+    OK_OP(INSTRUMENTED_POP_JUMP_IF_NOT_NONE),
-+    OK_OP(INSTRUMENTED_POP_JUMP_IF_FALSE),
-+    OK_OP(INSTRUMENTED_POP_JUMP_IF_TRUE),
-+#else
-     OK_OP(POP_JUMP_BACKWARD_IF_NOT_NONE),
-     OK_OP(POP_JUMP_BACKWARD_IF_NONE),
-     OK_OP(POP_JUMP_BACKWARD_IF_FALSE),
-     OK_OP(POP_JUMP_BACKWARD_IF_TRUE),
-+#endif
- 
-     /* Special cases. */
-     OK_OP(LOAD_CONST), /* Ok because constants are accepted. */
-     OK_OP(LOAD_NAME),  /* Ok, because `PyCodeObject.names` is checked. */
-     OK_OP(CALL),       /* Ok, because we check its "name" before calling. */
-     OK_OP(KW_NAMES),   /* Ok, because it's used for calling functions with keyword arguments. */
-+#if PY_VERSION_HEX < 0x030c0000 /* older than Python 3.12 */
-     OK_OP(PRECALL),    /* Ok, because it's used for calling. */
-+#endif
- 
- #  else /* Python 3.10 and older. */
- 
diff --git a/srcpkgs/blender/patches/python3.12-pyarg-parser.patch b/srcpkgs/blender/patches/python3.12-pyarg-parser.patch
deleted file mode 100644
index 9728122c1e5dd..0000000000000
--- a/srcpkgs/blender/patches/python3.12-pyarg-parser.patch
+++ /dev/null
@@ -1,1161 +0,0 @@
-https://src.fedoraproject.org/rpms/blender/raw/7045717eb5477c40905f6d29dfd3dbf5ed674e4d/f/blender-3.6.1-py312-pyarg-parser-def.patch
-
---- blender-3.6.1/source/blender/python/generic/imbuf_py_api.c.py312	2023-07-31 22:34:10.598661316 +0900
-+++ blender-3.6.1/source/blender/python/generic/imbuf_py_api.c	2023-07-31 22:42:31.327330268 +0900
-@@ -93,12 +93,11 @@ static PyObject *py_imbuf_resize(Py_ImBu
- 
-   static const char *_keywords[] = {"size", "method", NULL};
-   static _PyArg_Parser _parser = {
--      "(ii)" /* `size` */
-+      .format = "(ii)" /* `size` */
-       "|$"   /* Optional keyword only arguments. */
-       "O&"   /* `method` */
-       ":resize",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kw, &_parser, &size[0], &size[1], PyC_ParseStringEnum, &method))
-@@ -139,11 +138,10 @@ static PyObject *py_imbuf_crop(Py_ImBuf
- 
-   static const char *_keywords[] = {"min", "max", NULL};
-   static _PyArg_Parser _parser = {
--      "(II)" /* `min` */
-+      .format = "(II)" /* `min` */
-       "(II)" /* `max` */
-       ":crop",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kw, &_parser, &crop.xmin, &crop.ymin, &crop.xmax, &crop.ymax))
-@@ -431,10 +429,9 @@ static PyObject *M_imbuf_new(PyObject *U
-   int size[2];
-   static const char *_keywords[] = {"size", NULL};
-   static _PyArg_Parser _parser = {
--      "(ii)" /* `size` */
-+      .format = "(ii)" /* `size` */
-       ":new",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, &size[0], &size[1])) {
-     return NULL;
-@@ -471,10 +468,9 @@ static PyObject *M_imbuf_load(PyObject *
- 
-   static const char *_keywords[] = {"filepath", NULL};
-   static _PyArg_Parser _parser = {
--      "s" /* `filepath` */
-+      .format = "s" /* `filepath` */
-       ":load",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, &filepath)) {
-     return NULL;
-@@ -518,12 +514,11 @@ static PyObject *M_imbuf_write(PyObject
- 
-   static const char *_keywords[] = {"image", "filepath", NULL};
-   static _PyArg_Parser _parser = {
--      "O!" /* `image` */
-+      .format = "O!" /* `image` */
-       "|$" /* Optional keyword only arguments. */
-       "s"  /* `filepath` */
-       ":write",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, &Py_ImBuf_Type, &py_imb, &filepath)) {
-     return NULL;
---- blender-3.6.1/source/blender/python/gpu/gpu_py_batch.c.py312	2023-07-31 22:34:10.601661314 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_batch.c	2023-07-31 22:44:12.219263571 +0900
-@@ -55,13 +55,12 @@ static PyObject *pygpu_batch__tp_new(PyT
- 
-   static const char *_keywords[] = {"type", "buf", "elem", NULL};
-   static _PyArg_Parser _parser = {
--      "|$" /* Optional keyword only arguments. */
-+      .format = "|$" /* Optional keyword only arguments. */
-       "O&" /* `type` */
-       "O!" /* `buf` */
-       "O!" /* `elem` */
-       ":GPUBatch.__new__",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
-@@ -256,13 +255,12 @@ static PyObject *pygpu_batch_draw_instan
- 
-   static const char *_keywords[] = {"program", "instance_start", "instance_count", NULL};
-   static _PyArg_Parser _parser = {
--      "O!" /* `program` */
-+      .format = "O!" /* `program` */
-       "|$" /* Optional keyword only arguments. */
-       "i"  /* `instance_start` */
-       "i"  /* `instance_count' */
-       ":GPUBatch.draw_instanced",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kw, &_parser, &BPyGPUShader_Type, &py_program, &instance_start, &instance_count))
-@@ -298,13 +296,12 @@ static PyObject *pygpu_batch_draw_range(
- 
-   static const char *_keywords[] = {"program", "elem_start", "elem_count", NULL};
-   static _PyArg_Parser _parser = {
--      "O!" /* `program` */
-+      .format = "O!" /* `program` */
-       "|$" /* Optional keyword only arguments. */
-       "i"  /* `elem_start' */
-       "i"  /* `elem_count' */
-       ":GPUBatch.draw_range",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kw, &_parser, &BPyGPUShader_Type, &py_program, &elem_start, &elem_count))
---- blender-3.6.1/source/blender/python/gpu/gpu_py_element.c.py312	2023-07-31 22:34:10.601661314 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_element.c	2023-07-31 22:44:28.707252670 +0900
-@@ -38,11 +38,10 @@ static PyObject *pygpu_IndexBuf__tp_new(
- 
-   static const char *_keywords[] = {"type", "seq", NULL};
-   static _PyArg_Parser _parser = {
--      "$O" /* `type` */
-+      .format = "$O" /* `type` */
-       "&O" /* `seq` */
-       ":IndexBuf.__new__",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, PyC_ParseStringEnum, &prim_type, &seq)) {
---- blender-3.6.1/source/blender/python/gpu/gpu_py_framebuffer.c.py312	2023-07-31 22:34:10.603661313 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_framebuffer.c	2023-07-31 22:45:05.470228366 +0900
-@@ -276,12 +276,11 @@ static PyObject *pygpu_framebuffer__tp_n
-   PyObject *color_attachements = NULL;
-   static const char *_keywords[] = {"depth_slot", "color_slots", NULL};
-   static _PyArg_Parser _parser = {
--      "|$" /* Optional keyword only arguments. */
-+      .format = "|$" /* Optional keyword only arguments. */
-       "O"  /* `depth_slot` */
-       "O"  /* `color_slots` */
-       ":GPUFrameBuffer.__new__",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, &depth_attachment, &color_attachements))
-@@ -371,13 +370,12 @@ static PyObject *pygpu_framebuffer_clear
- 
-   static const char *_keywords[] = {"color", "depth", "stencil", NULL};
-   static _PyArg_Parser _parser = {
--      "|$" /* Optional keyword only arguments. */
-+      .format = "|$" /* Optional keyword only arguments. */
-       "O"  /* `color` */
-       "O"  /* `depth` */
-       "O"  /* `stencil` */
-       ":clear",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kwds, &_parser, &py_col, &py_depth, &py_stencil)) {
-     return NULL;
-@@ -490,7 +488,7 @@ static PyObject *pygpu_framebuffer_read_
-   static const char *_keywords[] = {
-       "x", "y", "xsize", "ysize", "channels", "slot", "format", "data", NULL};
-   static _PyArg_Parser _parser = {
--      "i"  /* `x` */
-+      .format = "i"  /* `x` */
-       "i"  /* `y` */
-       "i"  /* `xsize` */
-       "i"  /* `ysize` */
-@@ -500,8 +498,7 @@ static PyObject *pygpu_framebuffer_read_
-       "|$" /* Optional keyword only arguments. */
-       "O!" /* `data` */
-       ":read_color",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
-@@ -589,15 +586,14 @@ static PyObject *pygpu_framebuffer_read_
- 
-   static const char *_keywords[] = {"x", "y", "xsize", "ysize", "data", NULL};
-   static _PyArg_Parser _parser = {
--      "i"  /* `x` */
-+      .format = "i"  /* `x` */
-       "i"  /* `y` */
-       "i"  /* `xsize` */
-       "i"  /* `ysize` */
-       "|$" /* Optional keyword only arguments. */
-       "O!" /* `data` */
-       ":read_depth",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, &x, &y, &w, &h, &BPyGPU_BufferType, &py_buffer))
---- blender-3.6.1/source/blender/python/gpu/gpu_py_offscreen.c.py312	2023-07-31 22:34:10.604661312 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_offscreen.c	2023-07-31 22:45:39.391205939 +0900
-@@ -186,11 +186,10 @@ static PyObject *pygpu_offscreen_unbind(
- 
-   static const char *_keywords[] = {"restore", NULL};
-   static _PyArg_Parser _parser = {
--      "|$" /* Optional keyword only arguments. */
-+      .format = "|$" /* Optional keyword only arguments. */
-       "O&" /* `restore` */
-       ":unbind",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kwds, &_parser, PyC_ParseBool, &restore)) {
-     return NULL;
-@@ -218,13 +217,12 @@ static PyObject *pygpu_offscreen__tp_new
- 
-   static const char *_keywords[] = {"width", "height", "format", NULL};
-   static _PyArg_Parser _parser = {
--      "i"  /* `width` */
-+      .format = "i"  /* `width` */
-       "i"  /* `height` */
-       "|$" /* Optional keyword only arguments. */
-       "O&" /* `format` */
-       ":GPUOffScreen.__new__",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, &width, &height, PyC_ParseStringEnum, &pygpu_textureformat))
-@@ -339,7 +337,7 @@ static PyObject *pygpu_offscreen_draw_vi
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O"  /* `scene` */
-+      .format = "O"  /* `scene` */
-       "O"  /* `view_layer` */
-       "O"  /* `view3d` */
-       "O"  /* `region` */
-@@ -349,8 +347,7 @@ static PyObject *pygpu_offscreen_draw_vi
-       "O&" /* `do_color_management` */
-       "O&" /* `draw_background` */
-       ":draw_view3d",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
---- blender-3.6.1/source/blender/python/gpu/gpu_py_shader.c.py312	2023-07-31 22:34:10.605661312 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_shader.c	2023-07-31 22:46:04.128189584 +0900
-@@ -107,7 +107,7 @@ static PyObject *pygpu_shader__tp_new(Py
-   static const char *_keywords[] = {
-       "vertexcode", "fragcode", "geocode", "libcode", "defines", "name", NULL};
-   static _PyArg_Parser _parser = {
--      "s"  /* `vertexcode` */
-+      .format = "s"  /* `vertexcode` */
-       "s"  /* `fragcode` */
-       "|$" /* Optional keyword only arguments. */
-       "s"  /* `geocode` */
-@@ -115,8 +115,7 @@ static PyObject *pygpu_shader__tp_new(Py
-       "s"  /* `defines` */
-       "s"  /* `name` */
-       ":GPUShader.__new__",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
-@@ -841,12 +840,11 @@ static PyObject *pygpu_shader_from_built
- 
-   static const char *_keywords[] = {"shader_name", "config", NULL};
-   static _PyArg_Parser _parser = {
--      "O&" /* `shader_name` */
-+      .format = "O&" /* `shader_name` */
-       "|$" /* Optional keyword only arguments. */
-       "O&" /* `config` */
-       ":from_builtin",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
---- blender-3.6.1/source/blender/python/gpu/gpu_py_shader_create_info.cc.py312	2023-07-31 22:34:10.607661310 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_shader_create_info.cc	2023-07-31 22:46:53.192157144 +0900
-@@ -482,14 +482,13 @@ static PyObject *pygpu_shader_info_fragm
- 
-   static const char *_keywords[] = {"slot", "type", "name", "blend", nullptr};
-   static _PyArg_Parser _parser = {
--      "i"  /* `slot` */
-+      .format = "i"  /* `slot` */
-       "O&" /* `type` */
-       "s"  /* `name` */
-       "|$" /* Optional keyword only arguments. */
-       "O&" /* `blend` */
-       ":fragment_out",
--      _keywords,
--      nullptr,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
-@@ -586,15 +585,14 @@ static PyObject *pygpu_shader_info_image
- 
-   static const char *_keywords[] = {"slot", "format", "type", "name", "qualifiers", nullptr};
-   static _PyArg_Parser _parser = {
--      "i"  /* `slot` */
-+      .format = "i"  /* `slot` */
-       "O&" /* `format` */
-       "O&" /* `type` */
-       "s"  /* `name` */
-       "|$" /* Optional keyword only arguments. */
-       "O"  /* `qualifiers` */
-       ":image",
--      _keywords,
--      nullptr,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
-@@ -769,13 +767,12 @@ static PyObject *pygpu_shader_info_push_
- 
-   static const char *_keywords[] = {"type", "name", "size", nullptr};
-   static _PyArg_Parser _parser = {
--      "O&" /* `type` */
-+      .format = "O&" /* `type` */
-       "s"  /* `name` */
-       "|"  /* Optional arguments. */
-       "I"  /* `size` */
-       ":push_constant",
--      _keywords,
--      nullptr,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, PyC_ParseStringEnum, &pygpu_type, &name, &array_size))
---- blender-3.6.1/source/blender/python/gpu/gpu_py_texture.c.py312	2023-07-31 22:34:10.607661310 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_texture.c	2023-07-31 22:55:30.710104087 +0900
-@@ -121,15 +121,14 @@ static PyObject *pygpu_texture__tp_new(P
- 
-   static const char *_keywords[] = {"size", "layers", "is_cubemap", "format", "data", NULL};
-   static _PyArg_Parser _parser = {
--      "O"  /* `size` */
-+      .format = "O"  /* `size` */
-       "|$" /* Optional keyword only arguments. */
-       "i"  /* `layers` */
-       "p"  /* `is_cubemap` */
-       "O&" /* `format` */
-       "O!" /* `data` */
-       ":GPUTexture.__new__",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
-@@ -294,12 +293,11 @@ static PyObject *pygpu_texture_clear(BPy
- 
-   static const char *_keywords[] = {"format", "value", NULL};
-   static _PyArg_Parser _parser = {
--      "$"  /* Keyword only arguments. */
-+      .format = "$"  /* Keyword only arguments. */
-       "O&" /* `format` */
-       "O"  /* `value` */
-       ":clear",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, PyC_ParseStringEnum, &pygpu_dataformat, &py_values))
---- blender-3.6.1/source/blender/python/gpu/gpu_py_uniformbuffer.c.py312	2023-07-31 22:34:10.608661310 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_uniformbuffer.c	2023-07-31 22:58:19.589656161 +0900
-@@ -65,10 +65,9 @@ static PyObject *pygpu_uniformbuffer__tp
- 
-   static const char *_keywords[] = {"data", NULL};
-   static _PyArg_Parser _parser = {
--      "O" /* `data` */
-+      .format = "O" /* `data` */
-       ":GPUUniformBuf.__new__",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kwds, &_parser, &pybuffer_obj)) {
-     return NULL;
---- blender-3.6.1/source/blender/python/gpu/gpu_py_vertex_buffer.c.py312	2023-07-31 22:34:10.609661309 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_vertex_buffer.c	2023-07-31 22:58:39.983722822 +0900
-@@ -237,11 +237,10 @@ static PyObject *pygpu_vertbuf__tp_new(P
- 
-   static const char *_keywords[] = {"format", "len", NULL};
-   static _PyArg_Parser _parser = {
--      "O!" /* `format` */
-+      .format = "O!" /* `format` */
-       "I"  /* `len` */
-       ":GPUVertBuf.__new__",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, &BPyGPUVertFormat_Type, &params.py_fmt, &params.len))
-@@ -273,11 +272,10 @@ static PyObject *pygpu_vertbuf_attr_fill
- 
-   static const char *_keywords[] = {"id", "data", NULL};
-   static _PyArg_Parser _parser = {
--      "O" /* `id` */
-+      .format = "O" /* `id` */
-       "O" /* `data` */
-       ":attr_fill",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kwds, &_parser, &identifier, &data)) {
-     return NULL;
---- blender-3.6.1/source/blender/python/gpu/gpu_py_vertex_format.c.py312	2023-07-31 22:34:10.610661308 +0900
-+++ blender-3.6.1/source/blender/python/gpu/gpu_py_vertex_format.c	2023-07-31 22:58:53.309766384 +0900
-@@ -91,14 +91,13 @@ static PyObject *pygpu_vertformat_attr_a
- 
-   static const char *_keywords[] = {"id", "comp_type", "len", "fetch_mode", NULL};
-   static _PyArg_Parser _parser = {
--      "$"  /* Keyword only arguments. */
-+      .format = "$"  /* Keyword only arguments. */
-       "s"  /* `id` */
-       "O&" /* `comp_type` */
-       "I"  /* `len` */
-       "O&" /* `fetch_mode` */
-       ":attr_add",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
---- blender-3.6.1/source/blender/python/intern/bpy.c.py312	2023-05-18 08:04:45.000000000 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy.c	2023-07-31 22:42:10.505344032 +0900
-@@ -118,13 +118,12 @@ static PyObject *bpy_blend_paths(PyObjec
- 
-   static const char *_keywords[] = {"absolute", "packed", "local", NULL};
-   static _PyArg_Parser _parser = {
--      "|$" /* Optional keyword only arguments. */
-+      .format = "|$" /* Optional keyword only arguments. */
-       "O&" /* `absolute` */
-       "O&" /* `packed` */
-       "O&" /* `local` */
-       ":blend_paths",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -181,12 +180,11 @@ static PyObject *bpy_flip_name(PyObject
- 
-   static const char *_keywords[] = {"", "strip_digits", NULL};
-   static _PyArg_Parser _parser = {
--      "s#" /* `name` */
-+      .format = "s#" /* `name` */
-       "|$" /* Optional, keyword only arguments. */
-       "O&" /* `strip_digits` */
-       ":flip_name",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kw, &_parser, &name_src, &name_src_len, PyC_ParseBool, &strip_digits))
-@@ -225,12 +223,11 @@ static PyObject *bpy_user_resource(PyObj
- 
-   static const char *_keywords[] = {"type", "path", NULL};
-   static _PyArg_Parser _parser = {
--      "O&" /* `type` */
-+      .format = "O&" /* `type` */
-       "|$" /* Optional keyword only arguments. */
-       "s"  /* `path` */
-       ":user_resource",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, PyC_ParseStringEnum, &type, &subdir)) {
-     return NULL;
-@@ -268,12 +265,11 @@ static PyObject *bpy_system_resource(PyO
- 
-   static const char *_keywords[] = {"type", "path", NULL};
-   static _PyArg_Parser _parser = {
--      "O&" /* `type` */
-+      .format = "O&" /* `type` */
-       "|$" /* Optional keyword only arguments. */
-       "s"  /* `path` */
-       ":system_resource",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, PyC_ParseStringEnum, &type, &subdir)) {
-     return NULL;
-@@ -313,13 +309,12 @@ static PyObject *bpy_resource_path(PyObj
- 
-   static const char *_keywords[] = {"type", "major", "minor", NULL};
-   static _PyArg_Parser _parser = {
--      "O&" /* `type` */
-+      .format = "O&" /* `type` */
-       "|$" /* Optional keyword only arguments. */
-       "i"  /* `major` */
-       "i"  /* `minor` */
-       ":resource_path",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kw, &_parser, PyC_ParseStringEnum, &type, &major, &minor))
-@@ -353,13 +348,12 @@ static PyObject *bpy_driver_secure_code_
-   const bool verbose = false;
-   static const char *_keywords[] = {"code", "namespace", "verbose", NULL};
-   static _PyArg_Parser _parser = {
--      "O!" /* `expression` */
-+      .format = "O!" /* `expression` */
-       "|$" /* Optional keyword only arguments. */
-       "O!" /* `namespace` */
-       "O&" /* `verbose` */
-       ":driver_secure_code_test",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
---- blender-3.6.1/source/blender/python/intern/bpy_app.c.py312	2023-05-18 08:04:45.000000000 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_app.c	2023-07-31 22:42:10.506344031 +0900
-@@ -502,10 +502,9 @@ static PyObject *bpy_app_is_job_running(
-   };
-   static const char *_keywords[] = {"job_type", NULL};
-   static _PyArg_Parser _parser = {
--      "O&" /* `job_type` */
-+      .format = "O&" /* `job_type` */
-       ":is_job_running",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, pyrna_enum_value_parse_string, &job_type_enum))
---- blender-3.6.1/source/blender/python/intern/bpy_app_icons.c.py312	2023-05-18 08:04:45.000000000 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_app_icons.c	2023-07-31 22:42:10.508344030 +0900
-@@ -41,12 +41,11 @@ static PyObject *bpy_app_icons_new_trian
- 
-   static const char *_keywords[] = {"range", "coords", "colors", NULL};
-   static _PyArg_Parser _parser = {
--      "(BB)" /* `range` */
-+      .format = "(BB)" /* `range` */
-       "S"    /* `coords` */
-       "S"    /* `colors` */
-       ":new_triangles",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kw, &_parser, &coords_range[0], &coords_range[1], &py_coords, &py_colors))
-@@ -102,10 +101,9 @@ static PyObject *bpy_app_icons_new_trian
- 
-   static const char *_keywords[] = {"filename", NULL};
-   static _PyArg_Parser _parser = {
--      "s" /* `filename` */
-+      .format = "s" /* `filename` */
-       ":new_triangles_from_file",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, &filename)) {
-     return NULL;
-@@ -129,10 +127,9 @@ static PyObject *bpy_app_icons_release(P
-   int icon_id;
-   static const char *_keywords[] = {"icon_id", NULL};
-   static _PyArg_Parser _parser = {
--      "i" /* `icon_id` */
-+      .format = "i" /* `icon_id` */
-       ":release",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, &icon_id)) {
-     return NULL;
---- blender-3.6.1/source/blender/python/intern/bpy_app_timers.c.py312	2023-07-31 22:34:10.616661304 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_app_timers.c	2023-07-31 22:59:24.192867336 +0900
-@@ -94,13 +94,12 @@ static PyObject *bpy_app_timers_register
- 
-   static const char *_keywords[] = {"function", "first_interval", "persistent", NULL};
-   static _PyArg_Parser _parser = {
--      "O"  /* `function` */
-+      .format = "O"  /* `function` */
-       "|$" /* Optional keyword only arguments. */
-       "d"  /* `first_interval` */
-       "p"  /* `persistent` */
-       ":register",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kw, &_parser, &function, &first_interval, &persistent)) {
---- blender-3.6.1/source/blender/python/intern/bpy_gizmo_wrap.c.py312	2023-07-31 22:34:10.617661304 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_gizmo_wrap.c	2023-07-31 22:59:34.377900630 +0900
-@@ -52,13 +52,12 @@ static bool bpy_gizmotype_target_propert
- 
-   static const char *const _keywords[] = {"id", "type", "array_length", NULL};
-   static _PyArg_Parser _parser = {
--      "|$" /* Optional keyword only arguments. */
-+      .format = "|$" /* Optional keyword only arguments. */
-       "s"  /* `id` */
-       "O&" /* `type` */
-       "i"  /* `array_length` */
-       ":register_class",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(empty_tuple,
-                                         item,
---- blender-3.6.1/source/blender/python/intern/bpy_library_load.c.py312	2023-07-31 22:34:10.617661304 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_library_load.c	2023-07-31 23:01:07.290204352 +0900
-@@ -191,7 +191,7 @@ static PyObject *bpy_lib_load(BPy_Proper
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "s" /* `filepath` */
-+      .format = "s" /* `filepath` */
-       /* Optional keyword only arguments. */
-       "|$"
-       "O&" /* `link` */
-@@ -201,8 +201,7 @@ static PyObject *bpy_lib_load(BPy_Proper
-       "O&" /* `reuse_liboverrides` */
-       "O&" /* `create_liboverrides_runtime` */
-       ":load",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
---- blender-3.6.1/source/blender/python/intern/bpy_library_write.c.py312	2023-07-31 22:34:10.620661302 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_library_write.c	2023-07-31 23:01:17.683238325 +0900
-@@ -84,15 +84,14 @@ static PyObject *bpy_lib_write(BPy_Prope
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "s"  /* `filepath` */
-+      .format = "s"  /* `filepath` */
-       "O!" /* `datablocks` */
-       "|$" /* Optional keyword only arguments. */
-       "O&" /* `path_remap` */
-       "O&" /* `fake_user` */
-       "O&" /* `compress` */
-       ":write",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
---- blender-3.6.1/source/blender/python/intern/bpy_msgbus.c.py312	2023-07-31 22:34:10.620661302 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_msgbus.c	2023-07-31 23:03:48.453731192 +0900
-@@ -241,15 +241,14 @@ static PyObject *bpy_msgbus_subscribe_rn
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O"  /* `key` */
-+      .format = "O"  /* `key` */
-       "O"  /* `owner` */
-       "O!" /* `args` */
-       "O"  /* `notify` */
-       "|$" /* Optional keyword only arguments. */
-       "O!" /* `options` */
-       ":subscribe_rna",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -342,10 +341,9 @@ static PyObject *bpy_msgbus_publish_rna(
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O" /* `key` */
-+      .format = "O" /* `key` */
-       ":publish_rna",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, &py_sub)) {
-     return NULL;
---- blender-3.6.1/source/blender/python/intern/bpy_props.c.py312	2023-07-31 22:34:10.622661300 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_props.c	2023-07-31 23:05:40.195096474 +0900
-@@ -1579,11 +1579,10 @@ static bool bpy_prop_string_visit_fn_cal
-         NULL,
-     };
-     static _PyArg_Parser _parser = {
--        "s" /* `text` */
-+        .format = "s" /* `text` */
-         "s" /* `info` */
-         ":search",
--        _keywords,
--        0,
-+        .keywords = _keywords,
-     };
-     if (!_PyArg_ParseTupleAndKeywordsFast(item, NULL, &_parser, &text, &info)) {
-       PyC_Err_PrintWithFunc(py_func);
-@@ -2819,7 +2818,7 @@ static PyObject *BPy_BoolProperty(PyObje
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-       "s"  /* `description` */
-@@ -2833,8 +2832,7 @@ static PyObject *BPy_BoolProperty(PyObje
-       "O"  /* `get` */
-       "O"  /* `set` */
-       ":BoolProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -2976,7 +2974,7 @@ static PyObject *BPy_BoolVectorProperty(
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-       "s"  /* `description` */
-@@ -2991,8 +2989,7 @@ static PyObject *BPy_BoolVectorProperty(
-       "O"  /* `get` */
-       "O"  /* `set` */
-       ":BoolVectorProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -3166,7 +3163,7 @@ static PyObject *BPy_IntProperty(PyObjec
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-       "s"  /* `description` */
-@@ -3185,8 +3182,7 @@ static PyObject *BPy_IntProperty(PyObjec
-       "O"  /* `get` */
-       "O"  /* `set` */
-       ":IntProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -3335,7 +3331,7 @@ static PyObject *BPy_IntVectorProperty(P
-       "get",      "set",     NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-       "s"  /* `description` */
-@@ -3355,8 +3351,7 @@ static PyObject *BPy_IntVectorProperty(P
-       "O"  /* `get` */
-       "O"  /* `set` */
-       ":IntVectorProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -3533,7 +3528,7 @@ static PyObject *BPy_FloatProperty(PyObj
-       "update",   "get",  "set",         NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-       "s"  /* `description` */
-@@ -3554,8 +3549,7 @@ static PyObject *BPy_FloatProperty(PyObj
-       "O"  /* `get` */
-       "O"  /* `set` */
-       ":FloatProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -3717,7 +3711,7 @@ static PyObject *BPy_FloatVectorProperty
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-       "s"  /* `description` */
-@@ -3739,8 +3733,7 @@ static PyObject *BPy_FloatVectorProperty
-       "O"  /* `get` */
-       "O"  /* `set` */
-       ":FloatVectorProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -3928,7 +3921,7 @@ static PyObject *BPy_StringProperty(PyOb
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-       "s"  /* `description` */
-@@ -3945,8 +3938,7 @@ static PyObject *BPy_StringProperty(PyOb
-       "O"  /* `search` */
-       "O&" /* `search_options` */
-       ":StringProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -4132,7 +4124,7 @@ static PyObject *BPy_EnumProperty(PyObje
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "O"  /* `items` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-@@ -4146,8 +4138,7 @@ static PyObject *BPy_EnumProperty(PyObje
-       "O"  /* `get` */
-       "O"  /* `set` */
-       ":EnumProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -4360,7 +4351,7 @@ PyObject *BPy_PointerProperty(PyObject *
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "O"  /* `type` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-@@ -4372,8 +4363,7 @@ PyObject *BPy_PointerProperty(PyObject *
-       "O"  /* `poll` */
-       "O"  /* `update` */
-       ":PointerProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -4503,7 +4493,7 @@ PyObject *BPy_CollectionProperty(PyObjec
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "O&" /* `attr` */
-+      .format = "O&" /* `attr` */
-       "O"  /* `type` */
-       "|$" /* Optional, keyword only arguments. */
-       "s"  /* `name` */
-@@ -4513,8 +4503,7 @@ PyObject *BPy_CollectionProperty(PyObjec
-       "O&" /* `override` */
-       "O&" /* `tags` */
-       ":CollectionProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -4621,10 +4610,9 @@ static PyObject *BPy_RemoveProperty(PyOb
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "s" /* `attr` */
-+      .format = "s" /* `attr` */
-       ":RemoveProperty",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, &id)) {
-     return NULL;
---- blender-3.6.1/source/blender/python/intern/bpy_rna.c.py312	2023-07-31 22:34:10.624661299 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_rna.c	2023-07-31 23:06:05.478179124 +0900
-@@ -3622,12 +3622,11 @@ static PyObject *pyrna_struct_is_propert
- 
-   static const char *_keywords[] = {"", "ghost", NULL};
-   static _PyArg_Parser _parser = {
--      "s"  /* `name` (positional). */
-+      .format = "s"  /* `name` (positional). */
-       "|$" /* Optional keyword only arguments. */
-       "O&" /* `ghost` */
-       ":is_property_set",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, &name, PyC_ParseBool, &use_ghost)) {
-     return NULL;
---- blender-3.6.1/source/blender/python/intern/bpy_rna_context.c.py312	2023-07-31 22:34:10.624661299 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_rna_context.c	2023-07-31 23:06:16.302214508 +0900
-@@ -239,13 +239,12 @@ static PyObject *bpy_context_temp_overri
- 
-   static const char *const _keywords[] = {"window", "area", "region", NULL};
-   static _PyArg_Parser _parser = {
--      "|$" /* Optional, keyword only arguments. */
-+      .format = "|$" /* Optional, keyword only arguments. */
-       "O&" /* `window` */
-       "O&" /* `area` */
-       "O&" /* `region` */
-       ":temp_override",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   /* Parse known keywords, the remaining keywords are set using #CTX_py_state_push. */
-   kwds = kwds ? PyDict_Copy(kwds) : PyDict_New();
---- blender-3.6.1/source/blender/python/intern/bpy_rna_data.c.py312	2023-07-31 22:34:10.625661298 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_rna_data.c	2023-07-31 23:06:26.121246611 +0900
-@@ -130,11 +130,10 @@ static PyObject *bpy_rna_data_temp_data(
-   const char *filepath = NULL;
-   static const char *_keywords[] = {"filepath", NULL};
-   static _PyArg_Parser _parser = {
--      "|$" /* Optional keyword only arguments. */
-+      .format = "|$" /* Optional keyword only arguments. */
-       "z"  /* `filepath` */
-       ":temp_data",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kw, &_parser, &filepath)) {
-     return NULL;
---- blender-3.6.1/source/blender/python/intern/bpy_rna_gizmo.c.py312	2023-07-31 22:34:10.626661298 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_rna_gizmo.c	2023-07-31 23:07:04.923373455 +0900
-@@ -340,15 +340,14 @@ static PyObject *bpy_gizmo_target_set_ha
-    * (see: rna_wm_gizmo_api.c). conventions should match. */
-   static const char *const _keywords[] = {"self", "target", "get", "set", "range", NULL};
-   static _PyArg_Parser _parser = {
--      "O&" /* `self` */
-+      .format = "O&" /* `self` */
-       "O&" /* `target` */
-       "|$" /* Optional keyword only arguments. */
-       "O"  /* `get` */
-       "O"  /* `set` */
-       "O"  /* `range` */
-       ":target_set_handler",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -438,11 +437,10 @@ static PyObject *bpy_gizmo_target_get_va
- 
-   static const char *const _keywords[] = {"self", "target", NULL};
-   static _PyArg_Parser _parser = {
--      "O&" /* `self` */
-+      .format = "O&" /* `self` */
-       "O&" /* `target` */
-       ":target_get_value",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -503,12 +501,11 @@ static PyObject *bpy_gizmo_target_set_va
- 
-   static const char *const _keywords[] = {"self", "target", "value", NULL};
-   static _PyArg_Parser _parser = {
--      "O&" /* `self` */
-+      .format = "O&" /* `self` */
-       "O&" /* `target` */
-       "O"  /* `value` */
-       ":target_set_value",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
-@@ -581,11 +578,10 @@ static PyObject *bpy_gizmo_target_get_ra
- 
-   static const char *const _keywords[] = {"self", "target", NULL};
-   static _PyArg_Parser _parser = {
--      "O&" /* `self` */
-+      .format = "O&" /* `self` */
-       "O&" /* `target` */
-       ":target_get_range",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
---- blender-3.6.1/source/blender/python/intern/bpy_rna_id_collection.c.py312	2023-07-31 22:34:10.627661297 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_rna_id_collection.c	2023-07-31 23:07:35.212455793 +0900
-@@ -159,13 +159,12 @@ static PyObject *bpy_user_map(PyObject *
- 
-   static const char *_keywords[] = {"subset", "key_types", "value_types", NULL};
-   static _PyArg_Parser _parser = {
--      "|$" /* Optional keyword only arguments. */
-+      .format = "|$" /* Optional keyword only arguments. */
-       "O"  /* `subset` */
-       "O!" /* `key_types` */
-       "O!" /* `value_types` */
-       ":user_map",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, &subset, &PySet_Type, &key_types, &PySet_Type, &val_types))
-@@ -302,10 +301,9 @@ static PyObject *bpy_batch_remove(PyObje
- 
-   static const char *_keywords[] = {"ids", NULL};
-   static _PyArg_Parser _parser = {
--      "O" /* `ids` */
-+      .format = "O" /* `ids` */
-       ":batch_remove",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args, kwds, &_parser, &ids)) {
-     return ret;
-@@ -380,13 +378,12 @@ static PyObject *bpy_orphans_purge(PyObj
- 
-   static const char *_keywords[] = {"do_local_ids", "do_linked_ids", "do_recursive", NULL};
-   static _PyArg_Parser _parser = {
--      "|"  /* Optional arguments. */
-+      .format = "|"  /* Optional arguments. */
-       "O&" /* `do_local_ids` */
-       "O&" /* `do_linked_ids` */
-       "O&" /* `do_recursive` */
-       ":orphans_purge",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
---- blender-3.6.1/source/blender/python/intern/bpy_rna_text.c.py312	2023-07-31 22:34:10.630661295 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_rna_text.c	2023-07-31 23:07:58.243491337 +0900
-@@ -64,11 +64,10 @@ static PyObject *bpy_rna_region_as_strin
- 
-   static const char *_keywords[] = {"range", NULL};
-   static _PyArg_Parser _parser = {
--      "|$"         /* Optional keyword only arguments. */
-+      .format = "|$"         /* Optional keyword only arguments. */
-       "((ii)(ii))" /* `range` */
-       ":region_as_string",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kwds, &_parser, &region.curl, &region.curc, &region.sell, &region.selc))
-@@ -122,12 +121,11 @@ static PyObject *bpy_rna_region_from_str
- 
-   static const char *_keywords[] = {"", "range", NULL};
-   static _PyArg_Parser _parser = {
--      "s#"         /* `buf` (positional). */
-+      .format = "s#"         /* `buf` (positional). */
-       "|$"         /* Optional keyword only arguments. */
-       "((ii)(ii))" /* `range` */
-       ":region_from_string",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kwds,
---- blender-3.6.1/source/blender/python/intern/bpy_utils_units.c.py312	2023-07-31 22:34:10.631661294 +0900
-+++ blender-3.6.1/source/blender/python/intern/bpy_utils_units.c	2023-07-31 23:08:18.178522102 +0900
-@@ -176,14 +176,13 @@ static PyObject *bpyunits_to_value(PyObj
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "s"  /* `unit_system` */
-+      .format = "s"  /* `unit_system` */
-       "s"  /* `unit_category` */
-       "s#" /* `str_input` */
-       "|$" /* Optional keyword only arguments. */
-       "z"  /* `str_ref_unit` */
-       ":to_value",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(
-           args, kw, &_parser, &usys_str, &ucat_str, &inpt, &str_len, &uref))
-@@ -263,7 +262,7 @@ static PyObject *bpyunits_to_string(PyOb
-       NULL,
-   };
-   static _PyArg_Parser _parser = {
--      "s"  /* `unit_system` */
-+      .format = "s"  /* `unit_system` */
-       "s"  /* `unit_category` */
-       "d"  /* `value` */
-       "|$" /* Optional keyword only arguments. */
-@@ -271,8 +270,7 @@ static PyObject *bpyunits_to_string(PyOb
-       "O&" /* `split_unit` */
-       "O&" /* `compatible_unit` */
-       ":to_string",
--      _keywords,
--      0,
-+      .keywords = _keywords,
-   };
-   if (!_PyArg_ParseTupleAndKeywordsFast(args,
-                                         kw,
diff --git a/srcpkgs/blender/patches/python3.12-pylongobject.patch b/srcpkgs/blender/patches/python3.12-pylongobject.patch
index 460a1ccfbce1c..80b326809cc95 100644
--- a/srcpkgs/blender/patches/python3.12-pylongobject.patch
+++ b/srcpkgs/blender/patches/python3.12-pylongobject.patch
@@ -1,8 +1,8 @@
 https://src.fedoraproject.org/rpms/blender/raw/7045717eb5477c40905f6d29dfd3dbf5ed674e4d/f/blender-3.6.1-py312-pylongobject.patch
 
---- blender-3.6.1/source/blender/freestyle/intern/python/BPy_IntegrationType.cpp.pyorig	2023-05-18 08:04:44.000000000 +0900
-+++ blender-3.6.1/source/blender/freestyle/intern/python/BPy_IntegrationType.cpp	2023-08-01 16:30:13.609640614 +0900
-@@ -186,6 +186,7 @@ PyTypeObject IntegrationType_Type = {
+--- a/source/blender/freestyle/intern/python/BPy_IntegrationType.cpp
++++ b/source/blender/freestyle/intern/python/BPy_IntegrationType.cpp
+@@ -188,6 +188,7 @@ PyTypeObject IntegrationType_Type = {
  
  /*-----------------------BPy_IntegrationType instance definitions -------------------------*/
  
@@ -10,7 +10,7 @@ https://src.fedoraproject.org/rpms/blender/raw/7045717eb5477c40905f6d29dfd3dbf5e
  static PyLongObject _IntegrationType_MEAN = {
      PyVarObject_HEAD_INIT(&IntegrationType_Type, 1){MEAN}};
  static PyLongObject _IntegrationType_MIN = {PyVarObject_HEAD_INIT(&IntegrationType_Type, 1){MIN}};
-@@ -194,6 +195,26 @@ static PyLongObject _IntegrationType_FIR
+@@ -196,6 +197,26 @@ static PyLongObject _IntegrationType_FIR
      PyVarObject_HEAD_INIT(&IntegrationType_Type, 1){FIRST}};
  static PyLongObject _IntegrationType_LAST = {
      PyVarObject_HEAD_INIT(&IntegrationType_Type, 1){LAST}};
@@ -37,9 +37,9 @@ https://src.fedoraproject.org/rpms/blender/raw/7045717eb5477c40905f6d29dfd3dbf5e
  
  #define BPy_IntegrationType_MEAN ((PyObject *)&_IntegrationType_MEAN)
  #define BPy_IntegrationType_MIN ((PyObject *)&_IntegrationType_MIN)
---- blender-3.6.1/source/blender/freestyle/intern/python/BPy_MediumType.cpp.pyorig	2023-05-18 08:04:44.000000000 +0900
-+++ blender-3.6.1/source/blender/freestyle/intern/python/BPy_MediumType.cpp	2023-08-01 16:30:18.875628797 +0900
-@@ -71,6 +71,7 @@ PyTypeObject MediumType_Type = {
+--- a/source/blender/freestyle/intern/python/BPy_MediumType.cpp
++++ b/source/blender/freestyle/intern/python/BPy_MediumType.cpp
+@@ -73,6 +73,7 @@ PyTypeObject MediumType_Type = {
  
  /*-----------------------BPy_IntegrationType instance definitions -------------------------*/
  
@@ -47,7 +47,7 @@ https://src.fedoraproject.org/rpms/blender/raw/7045717eb5477c40905f6d29dfd3dbf5e
  PyLongObject _BPy_MediumType_DRY_MEDIUM = {
      PyVarObject_HEAD_INIT(&MediumType_Type, 1){Stroke::DRY_MEDIUM},
  };
-@@ -80,6 +81,24 @@ PyLongObject _BPy_MediumType_HUMID_MEDIU
+@@ -82,6 +83,24 @@ PyLongObject _BPy_MediumType_HUMID_MEDIU
  PyLongObject _BPy_MediumType_OPAQUE_MEDIUM = {
      PyVarObject_HEAD_INIT(&MediumType_Type, 1){Stroke::OPAQUE_MEDIUM},
  };
@@ -72,9 +72,9 @@ https://src.fedoraproject.org/rpms/blender/raw/7045717eb5477c40905f6d29dfd3dbf5e
  
  //-------------------MODULE INITIALIZATION--------------------------------
  
---- blender-3.6.1/source/blender/freestyle/intern/python/BPy_Nature.cpp.pyorig	2023-05-18 08:04:44.000000000 +0900
-+++ blender-3.6.1/source/blender/freestyle/intern/python/BPy_Nature.cpp	2023-08-01 16:49:31.446042329 +0900
-@@ -135,6 +135,7 @@ PyTypeObject Nature_Type = {
+--- a/source/blender/freestyle/intern/python/BPy_Nature.cpp
++++ b/source/blender/freestyle/intern/python/BPy_Nature.cpp
+@@ -137,6 +137,7 @@ PyTypeObject Nature_Type = {
  
  /*-----------------------BPy_Nature instance definitions ----------------------------------*/
  
@@ -82,7 +82,7 @@ https://src.fedoraproject.org/rpms/blender/raw/7045717eb5477c40905f6d29dfd3dbf5e
  static PyLongObject _Nature_POINT = {PyVarObject_HEAD_INIT(&Nature_Type, 0){Nature::POINT}};
  static PyLongObject _Nature_S_VERTEX = {PyVarObject_HEAD_INIT(&Nature_Type, 1){Nature::S_VERTEX}};
  static PyLongObject _Nature_VIEW_VERTEX = {
-@@ -157,6 +158,36 @@ static PyLongObject _Nature_MATERIAL_BOU
+@@ -159,6 +160,36 @@ static PyLongObject _Nature_MATERIAL_BOU
      PyVarObject_HEAD_INIT(&Nature_Type, 1){Nature::MATERIAL_BOUNDARY}};
  static PyLongObject _Nature_EDGE_MARK = {
      PyVarObject_HEAD_INIT(&Nature_Type, 1){Nature::EDGE_MARK}};
@@ -119,7 +119,7 @@ https://src.fedoraproject.org/rpms/blender/raw/7045717eb5477c40905f6d29dfd3dbf5e
  
  #define BPy_Nature_POINT ((PyObject *)&_Nature_POINT)
  #define BPy_Nature_S_VERTEX ((PyObject *)&_Nature_S_VERTEX)
-@@ -247,7 +278,12 @@ static PyObject *BPy_Nature_bitwise(PyOb
+@@ -249,7 +280,12 @@ static PyObject *BPy_Nature_bitwise(PyOb
    else {
      result = PyObject_NewVar(BPy_Nature, &Nature_Type, 1);
      if (result) {
diff --git a/srcpkgs/blender/template b/srcpkgs/blender/template
index 05fdbf8f747e2..cf3ecbfee0dcb 100644
--- a/srcpkgs/blender/template
+++ b/srcpkgs/blender/template
@@ -1,10 +1,10 @@
 # Template file for 'blender'
 pkgname=blender
-version=3.6.5
-revision=2
+version=4.0.2
+revision=1
 archs="x86_64* ppc64*"
 build_style="cmake"
-pycompile_dirs="/usr/share/blender/${version%.*}/scripts"
+pycompile_dirs="usr/share/blender/${version%.*}/scripts"
 configure_args="-DWITH_INSTALL_PORTABLE=OFF -DWITH_PYTHON_INSTALL=OFF
  -DWITH_JACK=ON -DWITH_CODEC_FFMPEG=ON -DWITH_CODEC_SNDFILE=ON -DWITH_OPENMP=ON
  -DWITH_FFTW3=ON -DWITH_MOD_OCEANSIM=ON -DWITH_CYCLES_EMBREE=OFF -DWITH_OPENCOLORIO=ON
@@ -23,14 +23,15 @@ makedepends="libgomp-devel libpng-devel tiff-devel python3-devel glu-devel
  OpenSubdiv-devel tbb-devel libxml2-devel openvdb-devel alembic-devel
  pugixml-devel libXxf86vm-devel libepoxy-devel gmp-devel gmpxx-devel
  wayland-protocols wayland-devel libxkbcommon-devel libdecor-devel
- eigen lzo-devel"
+ libspnav-devel libwebp-devel potrace-devel Haru-devel openpgl-devel
+ pulseaudio-devel eigen lzo-devel"
 depends="desktop-file-utils hicolor-icon-theme"
 short_desc="3D graphics creation suite"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later"
 homepage="https://www.blender.org"
 distfiles="https://download.blender.org/source/blender-${version}.tar.xz"
-checksum=4001c0fe99f6d872ec7c7e955f84a9eebdb9ada17100f4b519eae08decf7f243
+checksum=aaa0e729da7591cfbf45772af76345977daaa7b11a0af35d98f9313e246077a3
 python_version=3
 LDFLAGS="-Wl,-z,stack-size=2097152"
 # Blender tests are executed against a system installation of blender. This

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: blender: update to 4.0.2.
  2024-01-10  3:22 [PR PATCH] blender: update to 4.0.2 sgn
@ 2024-04-01 19:37 ` biopsin
  2024-04-02  1:01 ` [PR PATCH] [Closed]: " sgn
  1 sibling, 0 replies; 3+ messages in thread
From: biopsin @ 2024-04-01 19:37 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 261 bytes --]

New comment by biopsin on void-packages repository

https://github.com/void-linux/void-packages/pull/48150#issuecomment-2030426479

Comment:
Commited at https://github.com/void-linux/void-packages/commit/ed3c4fce5e8f8647a81b42afe133248c7bfd45cb

Please close

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PR PATCH] [Closed]: blender: update to 4.0.2.
  2024-01-10  3:22 [PR PATCH] blender: update to 4.0.2 sgn
  2024-04-01 19:37 ` biopsin
@ 2024-04-02  1:01 ` sgn
  1 sibling, 0 replies; 3+ messages in thread
From: sgn @ 2024-04-02  1:01 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1086 bytes --]

There's a closed pull request on the void-packages repository

blender: update to 4.0.2.
https://github.com/void-linux/void-packages/pull/48150

Description:
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **YES**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-04-02  1:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-10  3:22 [PR PATCH] blender: update to 4.0.2 sgn
2024-04-01 19:37 ` biopsin
2024-04-02  1:01 ` [PR PATCH] [Closed]: " sgn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).