<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/6658b025f0533237cc7a8dc0b029d8b65731c9e6">https://github.com/macports/macports-ports/commit/6658b025f0533237cc7a8dc0b029d8b65731c9e6</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 6658b025f05 dcmtk: fix for PowerPC
</span>6658b025f05 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 6658b025f0533237cc7a8dc0b029d8b65731c9e6
</span>Author: barracuda156 <vital.had@gmail.com>
AuthorDate: Sun Apr 28 05:25:26 2024 +0800

<span style='display:block; white-space:pre;color:#404040;'>    dcmtk: fix for PowerPC
</span>---
 graphics/dcmtk/Portfile                            |  33 +++-
 .../0001-Revert-Fixed-OFSemaphore-for-macOS.patch  | 214 +++++++++++++++++++++
 graphics/dcmtk/files/patch-fix-powerpc.diff        |  29 +++
 3 files changed, 274 insertions(+), 2 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/dcmtk/Portfile b/graphics/dcmtk/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 4ea61891b87..39d0c97bde8 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/dcmtk/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/dcmtk/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -38,12 +38,12 @@ checksums \
</span> compiler.cxx_standard   2011
 
 patchfiles              install_path_fix.patch \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        install_path_fix_part2.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        install_path_fix_part2.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-fix-powerpc.diff
</span> 
 # avoid self-conflict
 configure.cppflags-replace -I${prefix}/include -isystem${prefix}/include
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> depends_lib             path:include/turbojpeg.h:libjpeg-turbo \
                         port:libiconv \
                         port:libxml2 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -135,8 +135,37 @@ variant ssl description "Enable openssl support" {
</span>     configure.args-append   -DOPENSSL_ROOT_DIR=${prefix}/libexec/openssl3
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# This variant makes sense only on macOS < 10.7.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# While 10.6 x86 is fine with its native libdispatch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# libdispatch-legacy will work there. Eventually this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# is supposed to become the default for all powerpc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# as well as < 10.6 x86. For now, it is optional.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant legacy_dispatch description "Enable dispatch via libdispatch-legacy port" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libdispatch-legacy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cppflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        -I${prefix}/libexec/dispatch/usr/include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.ldflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        ${prefix}/libexec/dispatch/usr/lib/libdispatch.a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    && (${os.major} < 10 || ${configure.build_arch} eq "ppc") \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    && ![variant_isset legacy_dispatch]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # We do not really want this, but at the moment libdispatch-legacy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # builds and works only on 10.6 for ppc builds. Make sure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # this patch cannot be applied elsewhere, and also not used
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # if legacy_dispatch is chosen.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append   0001-Revert-Fixed-OFSemaphore-for-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> default_variants        +ssl
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# FIXME: on PowerPC quite a number of libiconv-related tests fail.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Everything else passes: 91% tests passed, 30 tests failed out of 341.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# There is something wrong with how oficonv is built now.
</span> test.run                yes
 test.cmd                env DYLD_LIBRARY_PATH=${cmake.build_dir}/lib make
 test.target             -j 1 test
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/dcmtk/files/0001-Revert-Fixed-OFSemaphore-for-macOS.patch b/graphics/dcmtk/files/0001-Revert-Fixed-OFSemaphore-for-macOS.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..56770e659db
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/dcmtk/files/0001-Revert-Fixed-OFSemaphore-for-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,214 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 0729bc2cd5a1ad90a2a224a47c15ecd8a4751886 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 28 Apr 2024 04:03:47 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Revert "Fixed OFSemaphore for macOS."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This reverts commit 9ce775bba51fe65f47b59d66165e548cb9ff95db.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ofstd/include/dcmtk/ofstd/ofthread.h | 11 ++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ofstd/libsrc/ofthread.cc             | 55 ++++++----------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ofstd/tests/tthread.cc               |  9 +++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 32 insertions(+), 43 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git ofstd/include/dcmtk/ofstd/ofthread.h ofstd/include/dcmtk/ofstd/ofthread.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c839db623..00c055215 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ofstd/include/dcmtk/ofstd/ofthread.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ofstd/include/dcmtk/ofstd/ofthread.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -248,6 +248,14 @@ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   OFThreadSpecificData& operator=(const OFThreadSpecificData& arg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Mac OS X only permits named Semaphores. The code below compiles on Mac OS X
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   but does not work. This will be corrected in the next snapshot. For now, the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   semaphore code is completely disabled for that OS (it is not used in other
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   parts of the toolkit so far.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef _DARWIN_C_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /** provides an operating system independent abstraction for semaphores.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *  A semaphore is a non-negative integer counter that is used
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *  to coordinate access to resources. The initial and maximum value of the counter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -317,6 +325,9 @@ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   OFSemaphore& operator=(const OFSemaphore& arg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif // _DARWIN_C_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /** provides an operating system independent abstraction for mutexes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *  (mutual exclusion locks).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *  Mutexes prevent multiple threads from simultaneously executing critical
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git ofstd/libsrc/ofthread.cc ofstd/libsrc/ofthread.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6b590c84c..777b0681a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ofstd/libsrc/ofthread.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ofstd/libsrc/ofthread.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -30,13 +30,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "dcmtk/ofstd/ofstd.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef _DARWIN_C_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define DARWIN_INTERFACE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-extern "C" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <dispatch/dispatch.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif /* _DARWIN_C_SOURCE */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_WINDOWS_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define WINDOWS_INTERFACE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define WIN32_LEAN_AND_MEAN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -399,10 +392,15 @@ void OFThreadSpecificData::errorstr(OFString& description, int /* code */ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* ------------------------------------------------------------------------- */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Mac OS X only permits named Semaphores. The code below compiles on Mac OS X
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   but does not work. This will be corrected in the next snapshot. For now, the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   semaphore code is completely disabled for that OS (it is not used in other
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   parts of the toolkit so far.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef _DARWIN_C_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef WINDOWS_INTERFACE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const int OFSemaphore::busy = -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(DARWIN_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  const int OFSemaphore::busy = EAGAIN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(POSIX_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const int OFSemaphore::busy = EAGAIN;  // Posix returns EAGAIN instead of EBUSY in trywait.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(SOLARIS_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -412,7 +410,7 @@ void OFThreadSpecificData::errorstr(OFString& description, int /* code */ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(WINDOWS_INTERFACE) || defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE) || defined(DARWIN_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(WINDOWS_INTERFACE) || defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OFSemaphore::OFSemaphore(unsigned int numResources)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OFSemaphore::OFSemaphore(unsigned int /* numResources */ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -421,14 +419,6 @@ OFSemaphore::OFSemaphore(unsigned int /* numResources */ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef WINDOWS_INTERFACE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   theSemaphore = OFstatic_cast(void *, CreateSemaphore(NULL, numResources, numResources, NULL));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(DARWIN_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  dispatch_semaphore_t *sem = new dispatch_semaphore_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (sem)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    *sem = dispatch_semaphore_create(numResources);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (*sem == NULL) delete sem;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    else theSemaphore = sem;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(POSIX_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   sem_t *sem = new sem_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (sem)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -451,8 +441,6 @@ OFSemaphore::~OFSemaphore()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef WINDOWS_INTERFACE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   CloseHandle(OFthread_cast(HANDLE, theSemaphore));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(DARWIN_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  delete OFthread_cast(dispatch_semaphore_t *, theSemaphore);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(POSIX_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (theSemaphore) sem_destroy(OFthread_cast(sem_t *, theSemaphore));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   delete OFthread_cast(sem_t *, theSemaphore);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -478,12 +466,6 @@ int OFSemaphore::wait()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef WINDOWS_INTERFACE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (WaitForSingleObject(OFthread_cast(HANDLE, theSemaphore), INFINITE) == WAIT_OBJECT_0) return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else return OFstatic_cast(int, GetLastError());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(DARWIN_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (theSemaphore)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    // Always succeeds (returns zero) if the timeout is DISPATCH_TIME_FOREVER.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return dispatch_semaphore_wait(*OFthread_cast(dispatch_semaphore_t *, theSemaphore), DISPATCH_TIME_FOREVER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  } else return EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(POSIX_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (theSemaphore)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -503,14 +485,6 @@ int OFSemaphore::trywait()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (result == WAIT_OBJECT_0) return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else if (result == WAIT_TIMEOUT) return OFSemaphore::busy;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else return OFstatic_cast(int, GetLastError());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(DARWIN_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (theSemaphore)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (dispatch_semaphore_wait(*OFthread_cast(dispatch_semaphore_t *, theSemaphore), DISPATCH_TIME_NOW) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      return EAGAIN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  } else return EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(POSIX_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (theSemaphore)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -527,13 +501,6 @@ int OFSemaphore::post()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef WINDOWS_INTERFACE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (ReleaseSemaphore(OFthread_cast(HANDLE, theSemaphore), 1, NULL)) return 0; else return OFstatic_cast(int, GetLastError());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(DARWIN_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (theSemaphore)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    // Always succeeds.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    dispatch_semaphore_signal(*OFthread_cast(dispatch_semaphore_t *, theSemaphore));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  } else return EINVAL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(POSIX_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (theSemaphore)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -546,7 +513,7 @@ int OFSemaphore::post()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(WINDOWS_INTERFACE) || defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE) || defined(DARWIN_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(WINDOWS_INTERFACE) || defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void OFSemaphore::errorstr(OFString& description, int code)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void OFSemaphore::errorstr(OFString& description, int /* code */ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -563,7 +530,7 @@ void OFSemaphore::errorstr(OFString& description, int /* code */ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (buf) description = OFreinterpret_cast(const char *, buf);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     LocalFree(buf);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE) || defined(DARWIN_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(POSIX_INTERFACE) || defined(SOLARIS_INTERFACE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   char buf[256];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const char *str = OFStandard::strerror(code, buf, sizeof(buf));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (str) description = str; else description.clear();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -573,6 +540,8 @@ void OFSemaphore::errorstr(OFString& description, int /* code */ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif // _DARWIN_C_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* ------------------------------------------------------------------------- */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git ofstd/tests/tthread.cc ofstd/tests/tthread.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 587c27316..1cfc2f3e9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ofstd/tests/tthread.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ofstd/tests/tthread.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -137,6 +137,11 @@ static void mutex_test()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   delete mutex;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Currently OFSemaphore is not working and disabled on Mac OS X. Thus,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * it is not tested on Mac OS X.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef _DARWIN_C_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static OFSemaphore *semaphore=NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static volatile int sem_cond1=0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static volatile int sem_cond2=0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -246,6 +251,8 @@ static void semaphore_test()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   delete semaphore;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif //_DARWIN_C_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static OFReadWriteLock *rwlock=NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static OFMutex *mutex2=NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static volatile int rw_cond1=0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -656,7 +663,9 @@ OFTEST(ofstd_thread)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // This makes sure tests are executed in the expected order
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   mutex_test();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef _DARWIN_C_SOURCE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   semaphore_test(); // may assume that mutexes work correctly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   rwlock_test();    // may assume that mutexes and semaphores work correctly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   rwlocker_test();  // may assume that mutexes, semaphores and read/write locks work correctly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   tsdata_test();
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/dcmtk/files/patch-fix-powerpc.diff b/graphics/dcmtk/files/patch-fix-powerpc.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9d3cb656605
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/dcmtk/files/patch-fix-powerpc.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,29 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- config/tests/arith.cc  2023-12-19 18:12:57.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ config/tests/arith.cc  2024-04-28 02:30:36.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -36,7 +36,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <ieeefp.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__APPLE__) && !defined(__aarch64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && !defined(__aarch64__) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // For controlling floating point exceptions on OS X.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <xmmintrin.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -336,7 +336,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_WINDOWS_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _clearfp();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _controlfp( _controlfp(0,0) & ~_EM_INVALID, _MCW_EM );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(__APPLE__) && !defined(__aarch64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__APPLE__) && !defined(__aarch64__) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _MM_SET_EXCEPTION_MASK( _MM_GET_EXCEPTION_MASK() & ~_MM_MASK_INVALID );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(HAVE_FENV_H) && defined(HAVE_PROTOTYPE_FEENABLEEXCEPT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     feenableexcept( FE_INVALID );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -382,7 +382,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _controlfp( _controlfp(0,0) | _EM_INVALID, _MCW_EM );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(HAVE_FENV_H)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     feclearexcept( FE_INVALID );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__APPLE__) && !defined(__aarch64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && !defined(__aarch64__) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _MM_SET_EXCEPTION_MASK( _MM_GET_EXCEPTION_MASK() | _MM_MASK_INVALID );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(HAVE_FENV_H) && defined(HAVE_PROTOTYPE_FEENABLEEXCEPT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     fedisableexcept( FE_INVALID );
</span></pre><pre style='margin:0'>

</pre>