public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: media-gfx/blender/files/, media-gfx/blender/
Date: Thu,  1 Sep 2022 02:06:30 +0000 (UTC)	[thread overview]
Message-ID: <1661997714.07f1954e0dd0fb941be3396f15257793f791b23a.sam@gentoo> (raw)

commit:     07f1954e0dd0fb941be3396f15257793f791b23a
Author:     brahmajit das <listout <AT> protonmail <DOT> com>
AuthorDate: Tue Aug 23 15:39:17 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Sep  1 02:01:54 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=07f1954e

media-gfx/blender: Upstream musl libc fixes backport

These are some of the patch that I submitted upstream and have been
accepted. They will be a part of next blender release. However, this PR
is a backport of those fixes for blender 3.2.2.

Please refer:
https://github.com/blender/blender/commit/f197b1a1f1bbc0334310fb1c911327246767a1a3, and
https://github.com/blender/blender/commit/7be7280c5710f7831789cdde140d010722be9068

Closes: https://bugs.gentoo.org/739474

Signed-off-by: brahmajit das <listout <AT> protonmail.com>
Closes: https://github.com/gentoo/gentoo/pull/26860
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-gfx/blender/blender-3.2.2.ebuild             |   5 +
 .../files/blender-3.2.2-musl-glibc-prereq.patch    |  27 ++++
 ...der-3.2.2-support-building-with-musl-libc.patch | 177 +++++++++++++++++++++
 3 files changed, 209 insertions(+)

diff --git a/media-gfx/blender/blender-3.2.2.ebuild b/media-gfx/blender/blender-3.2.2.ebuild
index 8c82138b1e5a..70024e231bf6 100644
--- a/media-gfx/blender/blender-3.2.2.ebuild
+++ b/media-gfx/blender/blender-3.2.2.ebuild
@@ -123,6 +123,11 @@ BDEPEND="
 	nls? ( sys-devel/gettext )
 "
 
+PATCHES=(
+	"${FILESDIR}"/${PN}-3.2.2-support-building-with-musl-libc.patch
+	"${FILESDIR}"/${PN}-3.2.2-musl-glibc-prereq.patch
+)
+
 blender_check_requirements() {
 	[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
 

diff --git a/media-gfx/blender/files/blender-3.2.2-musl-glibc-prereq.patch b/media-gfx/blender/files/blender-3.2.2-musl-glibc-prereq.patch
new file mode 100644
index 000000000000..a572f25788de
--- /dev/null
+++ b/media-gfx/blender/files/blender-3.2.2-musl-glibc-prereq.patch
@@ -0,0 +1,27 @@
+Fix build error in libc_compat when using musl libc
+
+Checking for the existence of and using __GLIBC_PREREQ can't be done in the
+same conditional.
+
+Please refer: https://github.com/blender/blender/commit/7be7280c5710f7831789cdde140d010722be9068
+--- a/intern/libc_compat/libc_compat.c
++++ b/intern/libc_compat/libc_compat.c
+@@ -13,7 +13,8 @@
+ #  include <features.h>
+ #  include <math.h>
+
+-#  if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 31)
++#  if defined(__GLIBC_PREREQ)
++#    if __GLIBC_PREREQ(2, 31)
+
+ double __exp_finite(double x);
+ double __exp2_finite(double x);
+@@ -112,5 +113,6 @@ float __powf_finite(float x, float y)
+   return powf(x, y);
+ }
+
+-#  endif /* __GLIBC_PREREQ */
+-#endif   /* __linux__ */
++#    endif /* __GLIBC_PREREQ(2, 31) */
++#  endif   /* __GLIBC_PREREQ */
++#endif     /* __linux__ */

diff --git a/media-gfx/blender/files/blender-3.2.2-support-building-with-musl-libc.patch b/media-gfx/blender/files/blender-3.2.2-support-building-with-musl-libc.patch
new file mode 100644
index 000000000000..fb3f2584f0fe
--- /dev/null
+++ b/media-gfx/blender/files/blender-3.2.2-support-building-with-musl-libc.patch
@@ -0,0 +1,177 @@
+CMake: support building with musl libc
+
+Instead of using macros like GLIBC we can use the CMake build
+systems internal functions to check if some header or functions are
+present on the running system's libc.
+
+Add ./build_files/cmake/have_features.cmake to add checks for
+platform features which can be used to set defines for source
+files that require them.
+
+Please refer: https://github.com/blender/blender/commit/f197b1a1f1bbc0334310fb1c911327246767a1a3
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -112,6 +112,11 @@ blender_project_hack_post()
+
+ enable_testing()
+
++#-----------------------------------------------------------------------------
++# Test compiler/library features.
++
++include(build_files/cmake/have_features.cmake)
++
+ #-----------------------------------------------------------------------------
+ # Redirect output files
+
+--- /dev/null
++++ b/build_files/cmake/have_features.cmake
+@@ -0,0 +1,33 @@
++# SPDX-License-Identifier: GPL-2.0-or-later
++# Copyright 2022 Blender Foundation. All rights reserved.
++
++# This file is used to test the system for headers & symbols.
++# Variables should use the `HAVE_` prefix.
++# Defines should use the same name as the CMAKE variable.
++
++include(CheckSymbolExists)
++
++# Used for: `intern/guardedalloc/intern/mallocn_intern.h`.
++# Function `malloc_stats` is only available on GLIBC,
++# so check that before defining `HAVE_MALLOC_STATS`.
++check_symbol_exists(malloc_stats "malloc.h" HAVE_MALLOC_STATS_H)
++
++# Used for: `source/creator/creator_signals.c`.
++# The function `feenableexcept` is not present non-GLIBC systems,
++# hence we need to check if it's available in the `fenv.h` file.
++set(HAVE_FEENABLEEXCEPT OFF)
++if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
++  check_symbol_exists(feenableexcept "fenv.h" HAVE_FEENABLEEXCEPT)
++endif()
++
++# Used for: `source/blender/blenlib/intern/system.c`.
++# `execinfo` is not available on non-GLIBC systems (at least not on MUSL-LIBC),
++# so check the presence of the header before including it and  using the it for back-trace.
++set(HAVE_EXECINFO_H OFF)
++if(NOT MSVC)
++  include(CheckIncludeFiles)
++  check_include_files("execinfo.h" HAVE_EXECINFO_H)
++  if(HAVE_EXECINFO_H)
++    add_definitions(-DHAVE_EXECINFO_H)
++  endif()
++endif()
+--- a/intern/guardedalloc/CMakeLists.txt
++++ b/intern/guardedalloc/CMakeLists.txt
+@@ -1,6 +1,10 @@
+ # SPDX-License-Identifier: GPL-2.0-or-later
+ # Copyright 2006 Blender Foundation. All rights reserved.
+
++if(HAVE_MALLOC_STATS_H)
++  add_definitions(-DHAVE_MALLOC_STATS_H)
++endif()
++
+ set(INC
+   .
+   ../atomic
+--- a/intern/guardedalloc/intern/mallocn_intern.h
++++ b/intern/guardedalloc/intern/mallocn_intern.h
+@@ -17,8 +17,7 @@
+ #undef HAVE_MALLOC_STATS
+ #define USE_MALLOC_USABLE_SIZE /* internal, when we have malloc_usable_size() */
+
+-#if defined(__linux__) || (defined(__FreeBSD_kernel__) && !defined(__FreeBSD__)) || \
+-    defined(__GLIBC__)
++#if defined(HAVE_MALLOC_STATS_H)
+ #  include <malloc.h>
+ #  define HAVE_MALLOC_STATS
+ #elif defined(__FreeBSD__)
+--- a/source/blender/blenlib/CMakeLists.txt
++++ b/source/blender/blenlib/CMakeLists.txt
+@@ -1,6 +1,10 @@
+ # SPDX-License-Identifier: GPL-2.0-or-later
+ # Copyright 2006 Blender Foundation. All rights reserved.
+
++if(HAVE_EXECINFO_H)
++  add_definitions(-DHAVE_EXECINFO_H)
++endif()
++
+ set(INC
+   .
+   # ../blenkernel  # don't add this back!
+--- a/source/blender/blenlib/intern/system.c
++++ b/source/blender/blenlib/intern/system.c
+@@ -21,7 +21,9 @@
+
+ #  include "BLI_winstuff.h"
+ #else
+-#  include <execinfo.h>
++#  if defined(HAVE_EXECINFO_H)
++#    include <execinfo.h>
++#  endif
+ #  include <unistd.h>
+ #endif
+
+@@ -61,9 +63,9 @@ int BLI_cpu_support_sse2(void)
+ #if !defined(_MSC_VER)
+ void BLI_system_backtrace(FILE *fp)
+ {
+-  /* ------------- */
+-  /* Linux / Apple */
+-#  if defined(__linux__) || defined(__APPLE__)
++  /* ----------------------- */
++  /* If system as execinfo.h */
++#  if defined(HAVE_EXECINFO_H)
+
+ #    define SIZE 100
+   void *buffer[SIZE];
+--- a/source/blender/makesdna/intern/CMakeLists.txt
++++ b/source/blender/makesdna/intern/CMakeLists.txt
+@@ -5,6 +5,11 @@
+
+ add_definitions(-DWITH_DNA_GHASH)
+
++# Needed for `mallocn.c`.
++if(HAVE_MALLOC_STATS_H)
++  add_definitions(-DHAVE_MALLOC_STATS_H)
++endif()
++
+ blender_include_dirs(
+   ../../../../intern/atomic
+   ../../../../intern/guardedalloc
+--- a/source/blender/makesrna/intern/CMakeLists.txt
++++ b/source/blender/makesrna/intern/CMakeLists.txt
+@@ -6,6 +6,11 @@ if(CMAKE_COMPILER_IS_GNUCC)
+   string(APPEND CMAKE_C_FLAGS " -Werror=implicit-function-declaration")
+ endif()
+
++# Needed for `mallocn.c`.
++if(HAVE_MALLOC_STATS_H)
++  add_definitions(-DHAVE_MALLOC_STATS_H)
++endif()
++
+ # files rna_access.c rna_define.c makesrna.c intentionally excluded.
+ set(DEFSRC
+   rna_ID.c
+--- a/source/creator/CMakeLists.txt
++++ b/source/creator/CMakeLists.txt
+@@ -22,6 +22,10 @@ set(LIB
+   bf_windowmanager
+ )
+
++if(HAVE_FEENABLEEXCEPT)
++  add_definitions(-DHAVE_FEENABLEEXCEPT)
++endif()
++
+ if(WITH_TBB)
+   # Force TBB libraries to be in front of MKL (part of OpenImageDenoise), so
+   # that it is initialized before MKL and static library initialization order
+--- a/source/creator/creator_signals.c
++++ b/source/creator/creator_signals.c
+@@ -258,7 +258,7 @@ void main_signal_setup_fpe(void)
+    * set breakpoints on sig_handle_fpe */
+   signal(SIGFPE, sig_handle_fpe);
+
+-#    if defined(__linux__) && defined(__GNUC__)
++#    if defined(__linux__) && defined(__GNUC__) && defined(HAVE_FEENABLEEXCEPT)
+   feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
+ #    endif /* defined(__linux__) && defined(__GNUC__) */
+ #    if defined(OSX_SSE_FPE)


             reply	other threads:[~2022-09-01  2:06 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-01  2:06 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-05-08  6:29 [gentoo-commits] repo/gentoo:master commit in: media-gfx/blender/files/, media-gfx/blender/ Sam James
2025-04-22  0:41 Sam James
2025-04-22  0:41 Sam James
2024-12-01  8:34 Sam James
2023-10-27  2:59 Sam James
2023-05-01 15:15 Sam James
2023-02-17  5:29 Sam James
2022-12-20 10:53 Sam James
2022-02-12  3:55 Sam James
2021-06-10  0:51 Sam James
2020-11-08 10:42 Sam James
2020-08-24 13:42 Sam James
2020-08-24 13:42 Sam James
2019-06-06 21:22 Andreas Sturmlechner
2019-03-21 18:12 Michał Górny
2018-08-16 14:15 Jonathan Scruggs
2016-10-22 23:26 David Seifert
2016-09-29 15:12 Michael Palimaka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1661997714.07f1954e0dd0fb941be3396f15257793f791b23a.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox