libusb 0.3.2-x86-mingw32 → 0.3.3-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/History.md +5 -0
  3. data/Rakefile +106 -85
  4. data/lib/libusb/version_gem.rb +1 -1
  5. metadata +13 -21
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d2c894dae24af0c81cbd13674b7d617eade2b4ea
4
+ data.tar.gz: 866da61a097f24465d196786f7fffe7bc333e1f8
5
+ SHA512:
6
+ metadata.gz: 766589c249ee17b352fa7d5488f08c4f6551ee95c80efdfa326771e51dac53b683c1bfb1d55cbe9e7ba6d1e447a861ba35bd21f6978f25d385c12c805bfdfcb4
7
+ data.tar.gz: 4251831f5ed597ed1ac458dd3b041d037cb2bd61b27cb44c3e7ae19b78eebb4d2de002e062c1fec3b3589f8d01bd44283e57e9047d681a46ed799eba37383374
data/History.md CHANGED
@@ -1,3 +1,8 @@
1
+ 0.3.3 / 2013-04-05
2
+ ------------------
3
+ * Build and package binary x64 version of libusb for Windows in addition to x86.
4
+ * Fix build on Windows from source gem (although may take almost an hour).
5
+
1
6
  0.3.2 / 2013-02-16
2
7
  ------------------
3
8
  * Don't enforces DevKit installation on Windows.
data/Rakefile CHANGED
@@ -2,10 +2,11 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'bundler/gem_tasks'
5
+ require 'rubygems/package_task'
5
6
  require 'pathname'
6
7
  require 'uri'
7
- require 'rake/extensiontask'
8
- require 'rake/extensioncompiler'
8
+ require 'ostruct'
9
+ require 'rake/clean'
9
10
 
10
11
  task :gem => :build
11
12
  task :compile do
@@ -20,17 +21,8 @@ task :travis=>:compile do
20
21
  end
21
22
  task :default => :test
22
23
 
23
- # Cross-compilation constants
24
24
  COMPILE_HOME = Pathname( "./tmp" ).expand_path
25
25
  STATIC_SOURCESDIR = COMPILE_HOME + 'sources'
26
- STATIC_BUILDDIR = COMPILE_HOME + 'builds'
27
- RUBY_BUILD = RbConfig::CONFIG["host"]
28
- CROSS_PREFIX = begin
29
- Rake::ExtensionCompiler.mingw_host
30
- rescue => err
31
- $stderr.puts "Cross-compilation disabled -- %s" % [ err.message ]
32
- 'unknown'
33
- end
34
26
 
35
27
  # Fetch tarball from sourceforge
36
28
  # LIBUSB_VERSION = ENV['LIBUSB_VERSION'] || '1.0.9'
@@ -52,26 +44,11 @@ LIBUSB_TARBALL = STATIC_SOURCESDIR + File.basename( LIBUSB_SOURCE_URI
52
44
  # LIBUSB_SOURCE_URI = URI( "http://git.libusb.org/?p=libusb-pbatard.git;a=snapshot;h=#{LIBUSB_VERSION};sf=tbz2" )
53
45
  # LIBUSB_TARBALL = STATIC_SOURCESDIR + "libusb-pbatard-#{LIBUSB_VERSION}.tar.bz2"
54
46
 
55
- # Static libusb build vars
56
- STATIC_LIBUSB_BUILDDIR = STATIC_BUILDDIR + LIBUSB_TARBALL.basename(".tar.bz2")
57
- LIBUSB_CONFIGURE = STATIC_LIBUSB_BUILDDIR + 'configure'
58
- LIBUSB_MAKEFILE = STATIC_LIBUSB_BUILDDIR + 'Makefile'
59
- LIBUSB_DLL = STATIC_LIBUSB_BUILDDIR + 'libusb/.libs/libusb-1.0.dll'
60
-
61
47
  EXT_BUILDDIR = Pathname( "./ext" ).expand_path
62
48
  EXT_LIBUSB_BUILDDIR = EXT_BUILDDIR + LIBUSB_TARBALL.basename(".tar.bz2")
63
49
 
64
- #####################################################################
65
- ### C R O S S - C O M P I L A T I O N - T A S K S
66
- #####################################################################
67
-
68
50
  directory STATIC_SOURCESDIR.to_s
69
51
 
70
- #
71
- # Static libusb build tasks
72
- #
73
- directory STATIC_LIBUSB_BUILDDIR.to_s
74
-
75
52
  # libusb source file should be stored there
76
53
  file LIBUSB_TARBALL => STATIC_SOURCESDIR do |t|
77
54
  # download the source file using wget or curl
@@ -81,74 +58,118 @@ file LIBUSB_TARBALL => STATIC_SOURCESDIR do |t|
81
58
  end
82
59
  end
83
60
 
84
- # Extract the libusb builds
85
- file STATIC_LIBUSB_BUILDDIR => LIBUSB_TARBALL do |t|
86
- sh 'tar', '-xjf', LIBUSB_TARBALL.to_s, '-C', STATIC_LIBUSB_BUILDDIR.parent.to_s
87
- LIBUSB_MAKEFILE.unlink if LIBUSB_MAKEFILE.exist?
88
- end
89
61
 
90
- file LIBUSB_CONFIGURE => STATIC_LIBUSB_BUILDDIR do |t|
91
- Dir.chdir( STATIC_LIBUSB_BUILDDIR ) do
92
- sh "sh autogen.sh && make distclean"
93
- end
94
- end
62
+ class CrossLibrary < OpenStruct
63
+ include Rake::DSL
95
64
 
96
- LIBUSB_ENV = [
97
- "CFLAGS='-fno-omit-frame-pointer'",
98
- ]
99
-
100
- # generate the makefile in a clean build location
101
- file LIBUSB_MAKEFILE => LIBUSB_CONFIGURE do |t|
102
- Dir.chdir( STATIC_LIBUSB_BUILDDIR ) do
103
- options = [
104
- "--target=#{CROSS_PREFIX}",
105
- "--host=#{CROSS_PREFIX}",
106
- "--build=#{RUBY_BUILD}",
107
- ]
65
+ def initialize(ruby_platform, host_platform)
66
+ super()
108
67
 
109
- configure_path = STATIC_LIBUSB_BUILDDIR + 'configure'
110
- sh "env #{[LIBUSB_ENV, configure_path.to_s, *options].join(" ")}"
111
- end
112
- end
68
+ self.ruby_platform = ruby_platform
69
+ self.host_platform = host_platform
113
70
 
114
- # make libusb-1.0.a
115
- task LIBUSB_DLL => [ LIBUSB_MAKEFILE ] do |t|
116
- Dir.chdir( STATIC_LIBUSB_BUILDDIR ) do
117
- sh 'make'
118
- end
119
- end
71
+ self.static_builddir = COMPILE_HOME + 'builds' + ruby_platform
72
+ self.ruby_build = RbConfig::CONFIG["host"]
120
73
 
121
- # copy binary from temporary location to final lib
122
- task "copy:libusb_dll" => ['lib', LIBUSB_DLL] do
123
- install LIBUSB_DLL, "lib/#{File.basename(LIBUSB_DLL)}"
124
- end
74
+ # Static libusb build vars
75
+ self.static_libusb_builddir = static_builddir + LIBUSB_TARBALL.basename(".tar.bz2")
76
+ self.libusb_configure = static_libusb_builddir + 'configure'
77
+ self.libusb_makefile = static_libusb_builddir + 'Makefile'
78
+ self.libusb_dll = static_libusb_builddir + 'libusb/.libs/libusb-1.0.dll'
79
+
80
+ #
81
+ # Static libusb build tasks
82
+ #
83
+ CLEAN.include static_libusb_builddir.to_s
84
+
85
+ directory static_libusb_builddir.to_s
125
86
 
126
- desc "compile static libusb libraries"
127
- task :libusb_dll => [ "copy:libusb_dll" ]
128
-
129
- desc 'Cross compile libusb for win32'
130
- task :cross => [ :mingw32, :libusb_dll ] do |t|
131
- spec = Gem::Specification::load("libusb.gemspec")
132
- spec.instance_variable_set(:"@cache_file", nil) if spec.respond_to?(:cache_file)
133
- spec.platform = Gem::Platform.new('i386-mingw32')
134
- spec.files << "lib/#{File.basename(LIBUSB_DLL)}"
135
- spec.files -= `git ls-files ext`.split("\n")
136
- spec.extensions = []
137
-
138
- # Generate a package for this gem
139
- Gem::PackageTask.new(spec) do |pkg|
140
- pkg.need_zip = false
141
- pkg.need_tar = false
87
+ # Extract the libusb builds
88
+ file static_libusb_builddir => LIBUSB_TARBALL do |t|
89
+ sh 'tar', '-xjf', LIBUSB_TARBALL.to_s, '-C', static_libusb_builddir.parent.to_s
90
+ libusb_makefile.unlink if libusb_makefile.exist?
91
+ end
92
+
93
+ file libusb_configure => static_libusb_builddir do |t|
94
+ Dir.chdir( static_libusb_builddir ) do
95
+ sh "sh autogen.sh && make distclean"
96
+ end
97
+ end
98
+
99
+ libusb_env = [
100
+ "CFLAGS='-fno-omit-frame-pointer'",
101
+ ]
102
+
103
+ # generate the makefile in a clean build location
104
+ file libusb_makefile => libusb_configure do |t|
105
+ Dir.chdir( static_libusb_builddir ) do
106
+ options = [
107
+ "--target=#{host_platform}",
108
+ "--host=#{host_platform}",
109
+ "--build=#{ruby_build}",
110
+ ]
111
+
112
+ configure_path = static_libusb_builddir + 'configure'
113
+ sh "env #{[libusb_env, configure_path.to_s, *options].join(" ")}"
114
+ end
115
+ end
116
+
117
+ # make libusb-1.0.dll
118
+ task libusb_dll => [ libusb_makefile ] do |t|
119
+ Dir.chdir( static_libusb_builddir ) do
120
+ sh 'make'
121
+ end
122
+ end
123
+
124
+ task "libusb_dll:#{ruby_platform}" => libusb_dll
125
+
126
+ desc "compile static libusb libraries"
127
+ task :libusb_dll => "libusb_dll:#{ruby_platform}"
128
+
129
+ desc 'Cross compile libusb for win32'
130
+ task :cross => [ "libusb_dll:#{ruby_platform}" ] do |t|
131
+ spec = Gem::Specification::load("libusb.gemspec")
132
+ spec.instance_variable_set(:"@cache_file", nil) if spec.respond_to?(:cache_file)
133
+ spec.platform = Gem::Platform.new(ruby_platform)
134
+ spec.files << "lib/#{File.basename(libusb_dll)}"
135
+ spec.files -= `git ls-files ext`.split("\n")
136
+ spec.extensions = []
137
+
138
+ # Generate a package for this gem
139
+ pkg = Gem::PackageTask.new(spec) do |pkg|
140
+ pkg.need_zip = false
141
+ pkg.need_tar = false
142
+ # Do not copy any files per PackageTask, because
143
+ # we need the files from the platform specific directory
144
+ pkg.package_files.clear
145
+ end
146
+
147
+ # copy files of the gem to pkg directory
148
+ file pkg.package_dir_path => spec.files do
149
+ spec.files.each do |fn|
150
+ next if fn == "lib/#{File.basename(libusb_dll)}"
151
+ f = File.join(pkg.package_dir_path, fn)
152
+ fdir = File.dirname(f)
153
+ mkdir_p(fdir) if !File.exist?(fdir)
154
+ rm_f f
155
+ safe_ln(fn, f)
156
+ end
157
+ end
158
+ # copy libusb.dll to pkg directory
159
+ file pkg.package_dir_path => [libusb_dll] do
160
+ f = "#{pkg.package_dir_path}/lib/#{File.basename(libusb_dll)}"
161
+ rm_f f
162
+ safe_ln libusb_dll, f
163
+ end
164
+ end
142
165
  end
143
166
  end
144
167
 
145
- task :mingw32 do
146
- # Use Rake::ExtensionCompiler helpers to find the proper host
147
- unless Rake::ExtensionCompiler.mingw_host then
148
- warn "You need to install mingw32 cross compile functionality to be able to continue."
149
- warn "Please refer to your distribution/package manager documentation about installation."
150
- fail
151
- end
168
+ CrossLibraries = [
169
+ ['i386-mingw32', 'i686-w64-mingw32'],
170
+ ['x64-mingw32', 'x86_64-w64-mingw32'],
171
+ ].map do |ruby_platform, host_platform|
172
+ CrossLibrary.new ruby_platform, host_platform
152
173
  end
153
174
 
154
175
  desc "Download and update bundled libusb(x)"
@@ -15,5 +15,5 @@
15
15
 
16
16
  module LIBUSB
17
17
  # Library version of libusb for Ruby
18
- VERSION = "0.3.2"
18
+ VERSION = "0.3.3"
19
19
  end
metadata CHANGED
@@ -1,62 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libusb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
5
- prerelease:
4
+ version: 0.3.3
6
5
  platform: x86-mingw32
7
6
  authors:
8
7
  - Lars Kanis
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-16 00:00:00.000000000 Z
11
+ date: 2013-04-05 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: ffi
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake-compiler
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0.6'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0.6'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: bundler
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  description: LIBUSB is a Ruby binding that gives Ruby programmers access to arbitrary
@@ -106,6 +99,7 @@ files:
106
99
  - lib/libusb-1.0.dll
107
100
  homepage: http://github.com/larskanis/libusb
108
101
  licenses: []
102
+ metadata: {}
109
103
  post_install_message:
110
104
  rdoc_options:
111
105
  - --main
@@ -114,21 +108,19 @@ rdoc_options:
114
108
  require_paths:
115
109
  - lib
116
110
  required_ruby_version: !ruby/object:Gem::Requirement
117
- none: false
118
111
  requirements:
119
- - - ! '>='
112
+ - - '>='
120
113
  - !ruby/object:Gem::Version
121
114
  version: '0'
122
115
  required_rubygems_version: !ruby/object:Gem::Requirement
123
- none: false
124
116
  requirements:
125
- - - ! '>='
117
+ - - '>='
126
118
  - !ruby/object:Gem::Version
127
119
  version: '0'
128
120
  requirements: []
129
121
  rubyforge_project: libusb
130
- rubygems_version: 1.8.24
122
+ rubygems_version: 2.0.0.rc.2
131
123
  signing_key:
132
- specification_version: 3
124
+ specification_version: 4
133
125
  summary: Access USB devices from Ruby via libusb-1.0
134
126
  test_files: []