[pymunk] Fix for 64-bit.

Jon Ciesla limb at fedoraproject.org
Mon Mar 4 19:09:42 UTC 2013


commit dc55ae44f41fcafc650193519995f2a0d72a41ab
Author: Jon Ciesla <limburgher at gmail.com>
Date:   Mon Mar 4 13:06:36 2013 -0600

    Fix for 64-bit.

 pymunk-1.0.0-sharedlib64.patch |  110 ++++++++++++++++++++++++++++++++++++++++
 pymunk.spec                    |   10 +++-
 2 files changed, 119 insertions(+), 1 deletions(-)
---
diff --git a/pymunk-1.0.0-sharedlib64.patch b/pymunk-1.0.0-sharedlib64.patch
new file mode 100644
index 0000000..8995a81
--- /dev/null
+++ b/pymunk-1.0.0-sharedlib64.patch
@@ -0,0 +1,110 @@
+--- pymunk/libload.py~	2010-02-07 22:58:20.000000000 -0600
++++ pymunk/libload.py	2010-07-15 09:16:27.240569523 -0500
+@@ -21,77 +21,7 @@
+     
+  
+ def load_library(libname, print_path=True):
+-    # lib gets loaded from
+-    # 32bit python: pymunk/libchipmunk.so, libchipmunk.dylib or chipmunk.dll
+-    # 64 bit python pymunk/libchipmunk64.so, libchipmunk.dylib or chipmunk64.dll
+-    
+-    s = platform.system()
+-    arch = str(ctypes.sizeof(ctypes.c_voidp) * 8)
+-    
+-    path = os.path.dirname(os.path.abspath(__file__))
+-    
+-    try:
+-        if hasattr(sys, "frozen") or \
+-            hasattr(sys, "importers") or \
+-            hasattr(imp, "is_frozen") and imp.is_forzen("__main__"):
+-            if 'site-packages.zip' in __file__:
+-                path = os.path.join(os.path.dirname(os.getcwd()), 'Frameworks')
+-            else:
+-                path = os.path.dirname(os.path.abspath(sys.executable))
+-    except:
+-        pass
+-    
+-    if arch == "64":
+-        arch_param = "64"
+-    else:
+-        arch_param = ""
+-    
+-    if s in ('Linux', 'FreeBSD'):
+-        libfn = "lib%s%s.so" % (libname, arch_param)
+-        
+-    elif s in ('Windows', 'Microsoft'):
+-        libfn = "%s%s.dll" % (libname, arch_param)
+-        
+-    elif s == 'Darwin':
+-        libfn = "lib%s.dylib" % libname
+-        
+-    # we use *nix library naming as default
+-    else: 
+-        libfn = "lib%s.so" % libname
+-        
+-    libfn = os.path.join(path, libfn)
+-    
+-    
+-    if print_path:
+-        print ("Loading chipmunk for %s (%sbit) [%s]" % (s, arch, libfn))
+-    try:
+-        lib = platform_specific_functions()['library_loader'].LoadLibrary(libfn)
+-    except OSError: 
+-        print ("""
+-Failed to load pymunk library.
+-
+-This error usually means that you don't have a compiled version of chipmunk in 
+-the correct spot where pymunk can find it. pymunk does not include precompiled 
+-chipmunk library files for all platforms. 
+-
+-The good news is that it is usually enough (at least on *nix and OS X) to 
+-simply run the compile command first before installing and then retry again:
+-
+-You compile chipmunk with
+-> python setup.py build_chipmunk
+-and then continue as usual with 
+-> python setup.py install
+-> cd examples
+-> python basic_test.py
+-
+-(for complete instructions please see the readme file)
+-
+-If it still doesnt work, please report as a bug on the issue tracker at 
+-http://code.google.com/p/pymunk/issues
+-Remember to include information about your OS, which version of python you use 
+-and the version of pymunk you tried to run. A description of what you did to 
+-trigger the error is also good. Please include the exception traceback if any 
+-(usually found below this message).
+-""")
+-        raise
++    # Library is always in this location on Fedora
++    libfn = "/usr/lib/libchipmunk.so"
++    lib = platform_specific_functions()['library_loader'].LoadLibrary(libfn)
+     return lib
+--- setup.py~	2010-03-07 21:21:08.000000000 -0600
++++ setup.py	2010-07-15 08:59:15.231318426 -0500
+@@ -99,11 +99,6 @@
+     , description='A python wrapper for the 2d physics library Chipmunk'
+     , long_description=long_description
+     , packages=['pymunk'] #find_packages(exclude=['*.tests']),
+-    , package_data = {'pymunk': ['chipmunk.dll'
+-                                , 'chipmunk64.dll'
+-                                , 'libchipmunk.so'
+-                                , 'libchipmunk64.so'
+-                                , 'libchipmunk.dylib']}
+     , eager_resources = [os.path.join('pymunk','chipmunk.dll')
+                             , os.path.join('pymunk','chipmunk64.dll')
+                             , os.path.join('pymunk','libchipmunk.so')
+--- pymunk.egg-info/SOURCES.txt~	2010-03-07 22:20:40.000000000 -0600
++++ pymunk.egg-info/SOURCES.txt	2010-07-15 09:00:45.069319331 -0500
+@@ -121,10 +121,7 @@
+ examples/slide_and_pinjoint.py
+ pymunk/__init__.py
+ pymunk/_chipmunk.py
+-pymunk/chipmunk.dll
+ pymunk/constraint.py
+-pymunk/libchipmunk.so
+-pymunk/libchipmunk64.so
+ pymunk/libload.py
+ pymunk/util.py
+ pymunk/vec2d.py
diff --git a/pymunk.spec b/pymunk.spec
index f40890a..fc9f95f 100644
--- a/pymunk.spec
+++ b/pymunk.spec
@@ -2,7 +2,7 @@
 
 Name:		pymunk
 Version:	1.0.0
-Release:	5%{?dist}
+Release:	6%{?dist}
 Summary:	Python wrapper for the chipmunk 2D physics engine
 Group:		Development/Languages
 # pymunx is under GPL+
@@ -12,6 +12,7 @@ Source0:	http://pymunk.googlecode.com/files/pymunk-%{version}.zip
 # Use the shared library provided by the chipmunk package
 #Patch0:		pymunk-sharedlib.patch
 Patch1:		pymunk-1.0.0-sharedlib.patch
+Patch2:		pymunk-1.0.0-sharedlib64.patch
 BuildRoot:	%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 BuildRequires:	python-devel
 BuildRequires:	python-setuptools
@@ -28,7 +29,11 @@ engine.  It aims to be easy to use, "Pythonic", and non-intrusive.
 %prep
 %setup -q
 #%patch0 -p0
+%ifarch %{ix86}
 %patch1 -p0
+%else
+%patch2 -p0
+%endif
 # Fix newlines -- preserve timestamps
 for file in docs/api/*.{html,txt,css,js} examples/*.py *.txt PKG-INFO; do
   sed -e 's/\r//g' $file > $file.new &&
@@ -60,6 +65,9 @@ rm -rf $RPM_BUILD_ROOT
 %doc docs examples LICENSE.txt PKG-INFO THANKS.txt README.txt
 
 %changelog
+* Mon Mar 04 2013 Jon Ciesla <limb at jcomserv.net> - 1.0.0-6
+- Fix shared lib patch for 64-bit.
+
 * Thu Feb 14 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.0.0-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
 


More information about the scm-commits mailing list