rubypython 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
data/History.markdown CHANGED
@@ -1,4 +1,8 @@
1
- ## 0.3.0 2010-09-xx
1
+ ## 0.3.1 2011-01-19
2
+ * Compatability Updates
3
+ * Cleanup of code which finds Python library thanks to Austin Ziegler.
4
+
5
+ ## 0.3.0 2010-09-06
2
6
  * Major Enhancements
3
7
  * Version 0.3.0 represents an almost complete rewrite of the RubyPython codebase.
4
8
  * A native C extension is no longer required. RubyPython uses the 'ffi' gem.
@@ -7,6 +11,10 @@
7
11
  * Version 0.3.0 was created with the goal of being compatible with as many Ruby versions as possible. It should at the very least run on MRI 1.8.6 - 1.9.1.
8
12
  * A legacy mode option has been added to provide partial compatibility with version 0.2.x.
9
13
 
14
+ ## 0.2.11 2010-07-12
15
+ * Bug Fixes
16
+ * Fixed some issues with building the extension under ruby 1.9. Sould now be truly 1.9 compatible.
17
+
10
18
  ## 0.2.10 2010-07-08
11
19
  * Bug Fixes
12
20
  * Made some changes to how the native extension is configured and build.
@@ -6,13 +6,64 @@ module RubyPython
6
6
  #gem. Documentation for these functions may be found [here](http://docs.python.org/c-api/). Likewise the FFI gem documentation may be found [here](http://rdoc.info/projects/ffi/ffi).
7
7
  module Python
8
8
  extend FFI::Library
9
- PYTHON_VERSION = Open3.popen3("python --version") { |i,o,e| e.read}.chomp.split[1].to_f
9
+
10
+ # This much we can assume works without anything special at all.
11
+ PYTHON_VERSION = Open3.popen3("python --version") { |i,o,e| e.read }.chomp.split[1].to_f
10
12
  PYTHON_NAME = "python#{PYTHON_VERSION}"
11
- LIB_NAME = "lib#{PYTHON_NAME}"
13
+ LIB_NAME = "#{FFI::Platform::LIBPREFIX}#{PYTHON_NAME}"
12
14
  LIB_EXT = FFI::Platform::LIBSUFFIX
13
- LIB = File.join(`python -c "import sys; print(sys.prefix)"`.chomp,
14
- "lib", "#{PYTHON_NAME}", "config", "#{LIB_NAME}.#{LIB_EXT}")
15
- @ffi_libs = [FFI::DynamicLibrary.open(LIB, FFI::DynamicLibrary::RTLD_LAZY|FFI::DynamicLibrary::RTLD_GLOBAL)]
15
+ PYTHON_SYS_PREFIX = %x{#{PYTHON_NAME} -c "import sys; print(sys.prefix)"}.chomp
16
+
17
+ # Here's where we run into problems, as not everything works quite the
18
+ # way we expect it to.
19
+ #
20
+ # The default libname will be something like libpython2.6.so (or .dylib)
21
+ # or maybe even python2.6.dll on Windows.
22
+ libname = "#{LIB_NAME}.#{LIB_EXT}"
23
+
24
+ # We may need to look in multiple locations for Python, so let's build
25
+ # this as an array.
26
+ locations = [ File.join(PYTHON_SYS_PREFIX, "lib", libname) ]
27
+
28
+ if FFI::Platform.mac?
29
+ # On the Mac, let's add a special case that has even a different
30
+ # libname. This may not be fully useful on future versions of OS X,
31
+ # but it should work on 10.5 and 10.6. Even if it doesn't, the next
32
+ # step will (/usr/lib/libpython<version>.dylib is a symlink to the
33
+ # correct location).
34
+ locations << File.join(PYTHON_SYS_PREFIX, "Python")
35
+ # Let's also look in the location that was originally set in this
36
+ # library:
37
+ File.join(PYTHON_SYS_PREFIX, "lib", "#{PYTHON_NAME}", "config",
38
+ libname)
39
+ end
40
+
41
+ if FFI::Platform.unix?
42
+ # On Unixes, let's look in alternative places, too. Just in case.
43
+ locations << File.join("/opt/local/lib", libname)
44
+ locations << File.join("/opt/lib", libname)
45
+ locations << File.join("/usr/local/lib", libname)
46
+ locations << File.join("/usr/lib", libname)
47
+ end
48
+
49
+ # Get rid of redundant locations.
50
+ locations.uniq!
51
+
52
+ dyld_flags = FFI::DynamicLibrary::RTLD_LAZY | FFI::DynamicLibrary::RTLD_GLOBAL
53
+ exceptions = []
54
+
55
+ locations.each do |location|
56
+ begin
57
+ @ffi_libs = [ FFI::DynamicLibrary.open(location, dyld_flags) ]
58
+ LIB = location
59
+ break
60
+ rescue LoadError => ex
61
+ @ffi_libs = nil
62
+ exceptions << ex
63
+ end
64
+ end
65
+
66
+ raise exceptions.first if @ffi_libs.nil?
16
67
 
17
68
  #The class is a little bit of a hack to extract the address of global
18
69
  #structs. If someone knows a better way please let me know.
@@ -3,8 +3,7 @@ module RubyPython
3
3
  module VERSION
4
4
  MAJOR = 0
5
5
  MINOR = 3
6
- TINY = 0
7
-
6
+ TINY = 1
8
7
  STRING = [MAJOR, MINOR, TINY].join('.')
9
8
  end
10
9
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubypython
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
4
+ hash: 17
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
9
+ - 1
10
+ version: 0.3.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Zach Raines
@@ -36,7 +36,7 @@ cert_chain:
36
36
  cguJMiQCSOlUPZxCWWMkjfZbXvtS5VdzJevSqQ==
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2010-09-23 00:00:00 -04:00
39
+ date: 2011-01-19 00:00:00 -05:00
40
40
  default_executable:
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
@@ -159,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  requirements:
160
160
  - Python, ~>2.4
161
161
  rubyforge_project: rubypython
162
- rubygems_version: 1.3.7
162
+ rubygems_version: 1.4.2
163
163
  signing_key:
164
164
  specification_version: 3
165
165
  summary: A bridge between ruby and python
metadata.gz.sig CHANGED
Binary file