summary refs log tree commit diff
path: root/pkgs/development/python-modules/shapely/library-paths.patch
blob: f75ad7a9486eb28535d302eb04f9a5bcdd199b0c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
diff --git a/shapely/geos.py b/shapely/geos.py
index 09bf1ab..837aa98 100644
--- a/shapely/geos.py
+++ b/shapely/geos.py
@@ -55,100 +55,10 @@ def load_dll(libname, fallbacks=None, mode=DEFAULT_MODE):
             "Could not find lib {0} or load any of its variants {1}.".format(
                 libname, fallbacks or []))
 
-_lgeos = None
-
-if sys.platform.startswith('linux'):
-    # Test to see if we have a wheel repaired by 'auditwheel' containing its
-    # own libgeos_c
-    geos_whl_so = glob.glob(os.path.abspath(os.path.join(os.path.dirname(
-        __file__), '.libs/libgeos_c-*.so.*')))
-    if len(geos_whl_so) == 1:
-        _lgeos = CDLL(geos_whl_so[0])
-        LOG.debug("Found GEOS DLL: %r, using it.", _lgeos)
-    else:
-        alt_paths = [
-            'libgeos_c.so.1',
-            'libgeos_c.so',
-            # anaconda
-            os.path.join(sys.prefix, "lib", "libgeos_c.so"),
-        ]
-        _lgeos = load_dll('geos_c', fallbacks=alt_paths)
-    free = load_dll('c').free
-    free.argtypes = [c_void_p]
-    free.restype = None
-
-elif sys.platform == 'darwin':
-    # Test to see if we have a delocated wheel with a GEOS dylib.
-    geos_whl_dylib = os.path.abspath(os.path.join(os.path.dirname(
-        __file__), '.dylibs/libgeos_c.1.dylib'))
-    if os.path.exists(geos_whl_dylib):
-        _lgeos = CDLL(geos_whl_dylib)
-        LOG.debug("Found GEOS DLL: %r, using it.", _lgeos)
-
-    else:
-        if hasattr(sys, 'frozen'):
-            try:
-                # .app file from py2app
-                alt_paths = [os.path.join(
-                    os.environ['RESOURCEPATH'], '..', 'Frameworks',
-                    'libgeos_c.dylib')]
-            except KeyError:
-                # binary from pyinstaller
-                alt_paths = [
-                    os.path.join(sys.executable, 'libgeos_c.dylib')]
-                if hasattr(sys, '_MEIPASS'):
-                    alt_paths.append(
-                        os.path.join(sys._MEIPASS, 'libgeos_c.1.dylib'))
-        else:
-            alt_paths = [
-                # anaconda
-                os.path.join(sys.prefix, "lib", "libgeos_c.dylib"),
-                # The Framework build from Kyng Chaos
-                "/Library/Frameworks/GEOS.framework/Versions/Current/GEOS",
-                # macports
-                '/opt/local/lib/libgeos_c.dylib',
-            ]
-        _lgeos = load_dll('geos_c', fallbacks=alt_paths)
-
-    free = load_dll('c').free
-    free.argtypes = [c_void_p]
-    free.restype = None
-
-elif sys.platform == 'win32':
-    try:
-        egg_dlls = os.path.abspath(
-            os.path.join(os.path.dirname(__file__), 'DLLs'))
-        if hasattr(sys, "frozen"):
-            wininst_dlls = os.path.normpath(
-                os.path.abspath(sys.executable + '../../DLLS'))
-        else:
-            wininst_dlls = os.path.abspath(os.__file__ + "../../../DLLs")
-        original_path = os.environ['PATH']
-        os.environ['PATH'] = "%s;%s;%s" % \
-            (egg_dlls, wininst_dlls, original_path)
-        _lgeos = load_dll("geos_c.dll", fallbacks=[
-            os.path.join(sys.prefix, "Library", "lib", "geos_c.dll"),
-        ])
-    except (ImportError, WindowsError, OSError):
-        raise
-
-    def free(m):
-        try:
-            cdll.msvcrt.free(m)
-        except WindowsError:
-            # XXX: See http://trac.gispython.org/projects/PCL/ticket/149
-            pass
-
-elif sys.platform == 'sunos5':
-    _lgeos = load_dll('geos_c', fallbacks=['libgeos_c.so.1', 'libgeos_c.so'])
-    free = CDLL('libc.so.1').free
-    free.argtypes = [c_void_p]
-    free.restype = None
-else:  # other *nix systems
-    _lgeos = load_dll('geos_c', fallbacks=['libgeos_c.so.1', 'libgeos_c.so'])
-    free = load_dll('c', fallbacks=['libc.so.6']).free
-    free.argtypes = [c_void_p]
-    free.restype = None
+_lgeos = CDLL('@libgeos_c@')
+free = CDLL('@libc@').free
+free.argtypes = [c_void_p]
+free.restype = None
 
 
 def _geos_version():
diff --git a/tests/test_dlls.py b/tests/test_dlls.py
index 35f9cc2..3dfcaac 100644
--- a/tests/test_dlls.py
+++ b/tests/test_dlls.py
@@ -12,12 +12,7 @@ class LoadingTestCase(unittest.TestCase):
     @unittest.skipIf(sys.platform == "win32", "FIXME: adapt test for win32")
     def test_fallbacks(self):
         load_dll('geos_c', fallbacks=[
-            os.path.join(sys.prefix, "lib", "libgeos_c.dylib"), # anaconda (Mac OS X)
-            '/opt/local/lib/libgeos_c.dylib',  # MacPorts
-            '/usr/local/lib/libgeos_c.dylib',  # homebrew (Mac OS X)
-            os.path.join(sys.prefix, "lib", "libgeos_c.so"), # anaconda (Linux)
-            'libgeos_c.so.1',
-            'libgeos_c.so'])
+            '@libgeos_c@'])
 
 
 def test_suite():