Hi!

After update to 1.8.0, meld does not work, because our python does not support
multiprocessing.Pool:

>>> import multiprocessing
>>> multiprocessing.Pool()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/multiprocessing/__init__.py", line 232, in Pool
    return Pool(processes, initializer, initargs, maxtasksperchild)
  File "/usr/local/lib/python2.7/multiprocessing/pool.py", line 138, in __init__
    self._setup_queues()
  File "/usr/local/lib/python2.7/multiprocessing/pool.py", line 232, in 
_setup_queues
    from .queues import SimpleQueue
  File "/usr/local/lib/python2.7/multiprocessing/queues.py", line 48, in 
<module>
    from multiprocessing.synchronize import Lock, BoundedSemaphore, Semaphore, 
Condition
  File "/usr/local/lib/python2.7/multiprocessing/synchronize.py", line 59, in 
<module>
    " function, see issue 3770.")
ImportError: This platform lacks a functioning sem_open implementation, 
therefore, the required synchronization primitives needed will not function, 
see issue 3770.

This patch switch meld on ThreadPool. This fixes the problem.
I do not know how much it is right, but it works :-)

Comments ? OK ?

-- 
Alexandr Shadchin

Index: Makefile
===================================================================
RCS file: /cvs/ports/textproc/meld/Makefile,v
retrieving revision 1.28
diff -u -p -r1.28 Makefile
--- Makefile    22 Sep 2013 19:55:11 -0000      1.28
+++ Makefile    7 Oct 2013 15:42:42 -0000
@@ -4,6 +4,7 @@ COMMENT=        graphical diff and merge tool
 
 GNOME_VERSION= 1.8.1
 GNOME_PROJECT= meld
+REVISION=      0
 
 CATEGORIES=    textproc x11
 
Index: patches/patch-meld_filediff_py
===================================================================
RCS file: patches/patch-meld_filediff_py
diff -N patches/patch-meld_filediff_py
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-meld_filediff_py      7 Oct 2013 15:42:42 -0000
@@ -0,0 +1,20 @@
+$OpenBSD$
+--- meld/filediff.py.orig      Mon Oct  7 21:26:49 2013
++++ meld/filediff.py   Mon Oct  7 21:27:32 2013
+@@ -22,6 +22,7 @@ import io
+ import os
+ from gettext import gettext as _
+ import time
++import platform
+ 
+ from multiprocessing import Pool
+ from multiprocessing.pool import ThreadPool
+@@ -63,7 +64,7 @@ class CachedSequenceMatcher(object):
+ 
+     def __init__(self):
+         if self.process_pool is None:
+-            if os.name == "nt":
++            if os.name == "nt" or platform.system() == "OpenBSD":
+                 CachedSequenceMatcher.process_pool = ThreadPool(None)
+             else:
+                 # maxtasksperchild is new in Python 2.7; this is for 2.6 
compat

Reply via email to