From 984630953202552a998f9478f1bf671dbddae0635c5f7f877720cd76f0ebf9c5 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Mon, 17 Apr 2023 07:36:54 +0000 Subject: [PATCH] - Refresh 0001-Remove-LCMS-mutex.patch OBS-URL: https://build.opensuse.org/package/show/graphics/libjxl?expand=0&rev=19 --- 0001-Remove-LCMS-mutex.patch | 120 ++++++++++++++++------------------- libjxl.changes | 5 ++ libjxl.spec | 6 +- 3 files changed, 66 insertions(+), 65 deletions(-) diff --git a/0001-Remove-LCMS-mutex.patch b/0001-Remove-LCMS-mutex.patch index b987c7f..3657b96 100644 --- a/0001-Remove-LCMS-mutex.patch +++ b/0001-Remove-LCMS-mutex.patch @@ -13,113 +13,105 @@ Requires mm2/Little-CMS@68ee2ff, which is released in LCMS v2.13. LCMS submodule was updated to version 2.13.1 instead. --- - lib/jxl/enc_color_management.cc | 15 --------------- - third_party/CMakeLists.txt | 2 +- - third_party/lcms | 2 +- - third_party/lcms2.cmake | 14 ++++++++++++++ - 4 files changed, 16 insertions(+), 17 deletions(-) + lib/jxl/enc_color_management.cc | 15 +++++++++++++++ + third_party/CMakeLists.txt | 2 +- + third_party/lcms2.cmake | 14 -------------- + 3 files changed, 16 insertions(+), 15 deletions(-) -diff --git a/lib/jxl/enc_color_management.cc b/lib/jxl/enc_color_management.cc -index 419a2b6b68..0a7e21f3ba 100644 ---- a/lib/jxl/enc_color_management.cc -+++ b/lib/jxl/enc_color_management.cc -@@ -18,7 +18,6 @@ +Index: libjxl-0.8.1/lib/jxl/enc_color_management.cc +=================================================================== +--- libjxl-0.8.1.orig/lib/jxl/enc_color_management.cc ++++ libjxl-0.8.1/lib/jxl/enc_color_management.cc +@@ -18,6 +18,7 @@ #include #include #include --#include ++#include #include #include -@@ -307,14 +306,6 @@ int DoColorSpaceTransform(void* t, size_t thread, const float* buf_src, +@@ -308,6 +309,14 @@ int DoColorSpaceTransform(void* t, size_ // Define to 1 on OS X as a workaround for older LCMS lacking MD5. #define JXL_CMS_OLD_VERSION 0 --// cms functions (even *THR) are not thread-safe, except cmsDoTransform. --// To ensure all functions are covered without frequent lock-taking nor risk of --// recursive lock, we lock in the top-level APIs. --static std::mutex& LcmsMutex() { -- static std::mutex m; -- return m; --} -- ++// cms functions (even *THR) are not thread-safe, except cmsDoTransform. ++// To ensure all functions are covered without frequent lock-taking nor risk of ++// recursive lock, we lock in the top-level APIs. ++static std::mutex& LcmsMutex() { ++ static std::mutex m; ++ return m; ++} ++ #if JPEGXL_ENABLE_SKCMS JXL_MUST_USE_RESULT CIExy CIExyFromXYZ(const float XYZ[3]) { -@@ -816,9 +807,6 @@ Status ApplyHlgOotf(JxlCms* t, float* JXL_RESTRICT buf, size_t xsize, +@@ -871,6 +880,9 @@ bool ApplyCICP(const uint8_t color_prima } // namespace --// All functions that call lcms directly (except ColorSpaceTransform::Run) must --// lock LcmsMutex(). -- ++// All functions that call lcms directly (except ColorSpaceTransform::Run) must ++// lock LcmsMutex(). ++ Status ColorEncoding::SetFieldsFromICC() { // In case parsing fails, mark the ColorEncoding as invalid. SetColorSpace(ColorSpace::kUnknown); -@@ -858,7 +846,6 @@ Status ColorEncoding::SetFieldsFromICC() { - rendering_intent = static_cast(rendering_intent32); +@@ -917,6 +929,7 @@ Status ColorEncoding::SetFieldsFromICC() + DetectTransferFunction(profile, this); #else // JPEGXL_ENABLE_SKCMS -- std::lock_guard guard(LcmsMutex()); ++ std::lock_guard guard(LcmsMutex()); const cmsContext context = GetContext(); Profile profile; -@@ -920,7 +907,6 @@ void JxlCmsDestroy(void* cms_data) { +@@ -984,6 +997,7 @@ void JxlCmsDestroy(void* cms_data) { if (cms_data == nullptr) return; JxlCms* t = reinterpret_cast(cms_data); #if !JPEGXL_ENABLE_SKCMS -- std::lock_guard guard(LcmsMutex()); ++ std::lock_guard guard(LcmsMutex()); TransformDeleter()(t->lcms_transform); #endif delete t; -@@ -957,7 +943,6 @@ void* JxlCmsInit(void* init_data, size_t num_threads, size_t xsize, +@@ -1020,6 +1034,7 @@ void* JxlCmsInit(void* init_data, size_t return nullptr; } #else // JPEGXL_ENABLE_SKCMS -- std::lock_guard guard(LcmsMutex()); ++ std::lock_guard guard(LcmsMutex()); const cmsContext context = GetContext(); Profile profile_src, profile_dst; if (!DecodeProfile(context, c_src.ICC(), &profile_src)) { -diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt -index afefbaa80b..095d5a5430 100644 ---- a/third_party/CMakeLists.txt -+++ b/third_party/CMakeLists.txt -@@ -146,7 +146,7 @@ if (JPEGXL_ENABLE_SKCMS OR JPEGXL_ENABLE_PLUGINS) +Index: libjxl-0.8.1/third_party/CMakeLists.txt +=================================================================== +--- libjxl-0.8.1.orig/third_party/CMakeLists.txt ++++ libjxl-0.8.1/third_party/CMakeLists.txt +@@ -111,7 +111,7 @@ if (JPEGXL_ENABLE_SKCMS OR JPEGXL_ENABLE endif () if (JPEGXL_ENABLE_VIEWERS OR NOT JPEGXL_ENABLE_SKCMS) if( NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lcms/.git" OR JPEGXL_FORCE_SYSTEM_LCMS2 ) -- find_package(LCMS2 2.10) -+ find_package(LCMS2 2.13) +- find_package(LCMS2 2.13) ++ find_package(LCMS2 2.10) if ( NOT LCMS2_FOUND ) message(FATAL_ERROR "Please install lcms2 or run git submodule update --init") endif () -#diff --git a/third_party/lcms b/third_party/lcms -#index 65c63bf549..233004ae26 160000 -#--- a/third_party/lcms -#+++ b/third_party/lcms -#@@ -1 +1 @@ -#-Subproject commit 65c63bf549d78253c14b30b3d62cb668bbbe612c -#+Subproject commit 233004ae26b238b2831ff60eea9e753b99d97906 -diff --git a/third_party/lcms2.cmake b/third_party/lcms2.cmake -index 906e777305..c33f877659 100644 ---- a/third_party/lcms2.cmake -+++ b/third_party/lcms2.cmake -@@ -60,4 +60,18 @@ target_compile_definitions(lcms2 +Index: libjxl-0.8.1/third_party/lcms2.cmake +=================================================================== +--- libjxl-0.8.1.orig/third_party/lcms2.cmake ++++ libjxl-0.8.1/third_party/lcms2.cmake +@@ -60,18 +60,4 @@ target_compile_definitions(lcms2 target_compile_definitions(lcms2 PUBLIC "-DCMS_NO_REGISTER_KEYWORD=1") -+# Ensure that a thread safe alternative of gmtime is used in LCMS -+include(CheckSymbolExists) -+check_symbol_exists(gmtime_r "time.h" HAVE_GMTIME_R) -+if (HAVE_GMTIME_R) -+ target_compile_definitions(lcms2 -+ PUBLIC "-DHAVE_GMTIME_R=1") -+else() -+ check_symbol_exists(gmtime_s "time.h" HAVE_GMTIME_S) -+ if (HAVE_GMTIME_S) -+ target_compile_definitions(lcms2 -+ PUBLIC "-DHAVE_GMTIME_S=1") -+ endif() -+endif() -+ +-# Ensure that a thread safe alternative of gmtime is used in LCMS +-include(CheckSymbolExists) +-check_symbol_exists(gmtime_r "time.h" HAVE_GMTIME_R) +-if (HAVE_GMTIME_R) +- target_compile_definitions(lcms2 +- PUBLIC "-DHAVE_GMTIME_R=1") +-else() +- check_symbol_exists(gmtime_s "time.h" HAVE_GMTIME_S) +- if (HAVE_GMTIME_S) +- target_compile_definitions(lcms2 +- PUBLIC "-DHAVE_GMTIME_S=1") +- endif() +-endif() +- set_property(TARGET lcms2 PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/libjxl.changes b/libjxl.changes index ffce068..b098872 100644 --- a/libjxl.changes +++ b/libjxl.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Apr 17 07:36:23 UTC 2023 - Jan Engelhardt + +- Refresh 0001-Remove-LCMS-mutex.patch + ------------------------------------------------------------------- Fri Feb 10 08:14:35 UTC 2023 - Dirk Müller diff --git a/libjxl.spec b/libjxl.spec index 08e2dbb..c3c2fe3 100644 --- a/libjxl.spec +++ b/libjxl.spec @@ -71,10 +71,14 @@ Command-line utilities to convert from/to JPEG XL. %prep %setup -q +%if %{pkg_vcmp liblcms2-2 < 2.13} # libjxl 0.7.0 requires lcms2 >= 2.13, so if we have an older version # (as in SLE15/Leap) just reverse the patch that adds that dependency -%if %{pkg_vcmp liblcms2-2 < 2.13} %patch0 -p1 -R +%else +# Make sure patch at least applies +%patch0 -p1 -R +%patch0 -p1 %endif %build