ocra 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,16 @@
1
+ === 1.3.1
2
+
3
+ * Now includes $LOADED_FEATURES even when script is not run to check
4
+ dependencies. This fixes compatability with Ruby 1.9.3 where
5
+ rubygems is always loaded.
6
+
7
+ * Fixed compatability with Ruby 2.0.0: Temp-path alias in binary
8
+ changed to be valid UTF-8 character.
9
+
10
+ * README.txt updated related to --no-dep-run (karhatsu).
11
+
12
+ * Fixes for Bundler handling (DavidMikeSimon).
13
+
1
14
  === 1.3.0
2
15
 
3
16
  * Fixed some additional corner cases with absolute and relative
@@ -1,6 +1,6 @@
1
1
  = ocra
2
2
 
3
- * Homepage: http://ocra.rubyforge.org
3
+ * http://ocra.rubyforge.org
4
4
  * RubyForge project page: http://rubyforge.org/projects/ocra
5
5
  * GitHub: http://github.com/larsch/ocra
6
6
  * Issue tracker: http://github.com/larsch/ocra/issues
@@ -236,8 +236,12 @@ use other means to specify what needs to be packaged with your app.
236
236
 
237
237
  To disable automatic dependency resolution, use the --no-dep-run
238
238
  option; with it, Ocra will skip executing your program during the
239
- build process. You will also probably need to use the --add-all-core
240
- option to include the Ruby core libraries.
239
+ build process. This on the other hand requires using --gem-full option
240
+ (see more below); otherwise Ocra will not include all the necessary
241
+ files for the gems.
242
+
243
+ You will also probably need to use the --add-all-core option to
244
+ include the Ruby core libraries.
241
245
 
242
246
  If your app uses gems, then you can specify them in a
243
247
  Bundler (http://gembundler.com) Gemfile, then use the --gemfile
@@ -254,7 +258,7 @@ actually running the app during the build, you could use the
254
258
  following command:
255
259
 
256
260
  ocra someapp/script/rails someapp --output someapp.exe --add-all-core \
257
- --gemfile someapp/Gemfile --no-dep-run --chdir-first -- server
261
+ --gemfile someapp/Gemfile --no-dep-run --gem-full --chdir-first -- server
258
262
 
259
263
  Note the space between "--" and "server"! It's important; "server" is an argument to be passed to rails when the script is ran.
260
264
 
@@ -315,7 +319,7 @@ app into an installer. Save the following as "<tt>someapp.iss</tt>":
315
319
  Then, run Ocra with this command:
316
320
 
317
321
  ocra someapp/script/rails someapp --output someapp.exe --add-all-core \
318
- --gemfile someapp/Gemfile --no-dep-run --chdir-first --no-lzma \
322
+ --gemfile someapp/Gemfile --no-dep-run --gem-full --chdir-first --no-lzma \
319
323
  --innosetup someapp.iss -- server
320
324
 
321
325
  If all goes well, a file named "SomeAppInstaller.exe" will be placed
data/Rakefile CHANGED
@@ -3,13 +3,13 @@
3
3
  require 'rubygems'
4
4
  require 'hoe'
5
5
 
6
- Hoe.spec 'ocra' do |spec|
6
+ spec = Hoe.spec 'ocra' do |spec|
7
7
  spec.author = "Lars Christensen"
8
8
  spec.email = "larsch@belunktum.dk"
9
- spec.url = "http://ocra.rubyforge.org/"
10
9
  spec.readme_file = 'README.rdoc'
11
10
  spec.extra_rdoc_files = ['README.rdoc']
12
11
  end
12
+ spec.urls.each { |url| url.chomp! }
13
13
 
14
14
  task :build_stub do
15
15
  sh "mingw32-make -C src"
@@ -19,6 +19,8 @@ task :build_stub do
19
19
  end
20
20
 
21
21
  file 'share/ocra/stub.exe' => :build_stub
22
+ file 'share/ocra/stubw.exe' => :build_stub
23
+ file 'share/ocra/edicon.exe' => :build_stub
22
24
 
23
25
  task :test => :build_stub
24
26
 
@@ -41,7 +43,7 @@ file 'bin/ocrasa.rb' => [ 'bin/ocra', 'share/ocra/stub.exe', 'share/ocra/stubw.e
41
43
  cp 'bin/ocra', 'bin/ocrasa.rb'
42
44
  File.open("bin/ocrasa.rb", "a") do |f|
43
45
  f.puts "__END__"
44
-
46
+
45
47
  stub = File.open("share/ocra/stub.exe", "rb") {|g| g.read}
46
48
  stub64 = [stub].pack("m")
47
49
  f.puts stub64.size
@@ -51,7 +53,7 @@ file 'bin/ocrasa.rb' => [ 'bin/ocra', 'share/ocra/stub.exe', 'share/ocra/stubw.e
51
53
  stub64 = [stub].pack("m")
52
54
  f.puts stub64.size
53
55
  f.puts stub64
54
-
56
+
55
57
  lzma = File.open("share/ocra/lzma.exe", "rb") {|g| g.read}
56
58
  lzma64 = [lzma].pack("m")
57
59
  f.puts lzma64.size
data/bin/ocra CHANGED
@@ -17,15 +17,15 @@ module Ocra
17
17
  attr_reader :path
18
18
  SEPARATOR_PAT = /[#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}]/ # }
19
19
  ABSOLUTE_PAT = /\A([A-Z]:)?#{SEPARATOR_PAT}/i
20
-
20
+
21
21
  def initialize(path)
22
22
  @path = path
23
23
  end
24
-
24
+
25
25
  def to_native
26
26
  @path.tr File::SEPARATOR, File::ALT_SEPARATOR
27
27
  end
28
-
28
+
29
29
  def to_posix
30
30
  @path.tr File::ALT_SEPARATOR, File::SEPARATOR
31
31
  end
@@ -65,7 +65,7 @@ module Ocra
65
65
  Ocra.Pathname(@path + '/' + other.path)
66
66
  end
67
67
  end
68
-
68
+
69
69
  def append_to_filename!(s)
70
70
  @path.sub!(/(\.[^.]*?|)$/) { s.to_s + $1 }
71
71
  end
@@ -138,7 +138,7 @@ module Ocra
138
138
  raise ArgumentError, obj
139
139
  end
140
140
  end
141
-
141
+
142
142
  # Variables describing the host's build environment.
143
143
  module Host
144
144
  class << self
@@ -161,7 +161,7 @@ module Ocra
161
161
  @rubyw_exe ||= (RbConfig::CONFIG['rubyw_install_name'] || "rubyw") + exeext
162
162
  end
163
163
  def ruby_exe
164
- @ruby_exe ||= (RbConfig::CONFIG['ruby_install_name'] || "ruby") + exeext
164
+ @ruby_exe ||= (RbConfig::CONFIG['ruby_install_name'] || "ruby") + exeext
165
165
  end
166
166
  def tempdir
167
167
  @tempdir ||= Ocra.Pathname(ENV['TEMP'])
@@ -174,8 +174,8 @@ module Ocra
174
174
  def self.sort_uniq(a)
175
175
  a.sort.inject([]) { |r, e| r.last == e ? r : r << e }
176
176
  end
177
-
178
- VERSION = "1.3.0"
177
+
178
+ VERSION = "1.3.1"
179
179
 
180
180
  IGNORE_MODULES = /^enumerator.so$/
181
181
 
@@ -192,11 +192,11 @@ module Ocra
192
192
  # Unlikely extensions
193
193
  \.(rdoc|c|cpp|c\+\+|cxx|h|hxx|hpp|obj|o|a)$/
194
194
  )}xi
195
-
195
+
196
196
  GEM_NON_FILE_RE = /(#{GEM_EXTRA_RE}|#{GEM_SCRIPT_RE})/
197
197
 
198
198
  # Alias for the temporary directory where files are extracted.
199
- TEMPDIR_ROOT = Pathname.new("\xFF")
199
+ TEMPDIR_ROOT = Pathname.new("|")
200
200
  # Directory for source files in temporary directory.
201
201
  SRCDIR = Pathname.new('src')
202
202
  # Directory for Ruby binaries in temporary directory.
@@ -409,7 +409,11 @@ EOF
409
409
  puts usage
410
410
  exit 0
411
411
  else
412
- @options[:files] << arg
412
+ if __FILE__.respond_to?(:encoding)
413
+ @options[:files] << arg.dup.force_encoding(__FILE__.encoding)
414
+ else
415
+ @options[:files] << arg
416
+ end
413
417
  end
414
418
  end
415
419
 
@@ -462,6 +466,9 @@ EOF
462
466
  modules_to_check.each do |mod|
463
467
  modules_checked[mod] = true
464
468
  mod.constants.each do |const|
469
+ # Module::Config causes warning on Ruby 1.9.3 - prevent autoloading
470
+ next if Module === mod && const == :Config
471
+
465
472
  if mod.autoload?(const)
466
473
  begin
467
474
  mod.const_get(const)
@@ -497,7 +504,7 @@ EOF
497
504
  candidates.sort_by { |loadpath| loadpath.path.size }.last
498
505
  end
499
506
  end
500
-
507
+
501
508
  # Find the root of all files specified on the command line and use
502
509
  # it as the "src" of the output.
503
510
  def Ocra.find_src_root(files)
@@ -554,7 +561,16 @@ EOF
554
561
 
555
562
  ENV['BUNDLE_GEMFILE'] = Ocra.gemfile
556
563
  Bundler.load.specs.each do |spec|
557
- gems << [Pathname(spec.installation_path), spec.full_name]
564
+ Ocra.verbose_msg "From Gemfile, adding gem #{spec.full_name}"
565
+ gems << [Pathname(spec.base_dir), spec.full_name]
566
+ end
567
+
568
+ unless gems.any?{|dir, name| name =~ /^bundler-[.0-9]+/}
569
+ # Bundler itself wasn't added for some reason, let's put it in directly
570
+ Ocra.verbose_msg "From Gemfile, forcing inclusion of bundler gem itself"
571
+ bundler_spec = Gem.loaded_specs["bundler"]
572
+ bundler_spec or Ocra.fatal_error "Unable to locate bundler gem"
573
+ gems << [Pathname(bundler_spec.base_dir), bundler_spec.full_name]
558
574
  end
559
575
  end
560
576
 
@@ -664,26 +680,25 @@ EOF
664
680
  features_from_gems -= gem_files
665
681
  return gem_files, features_from_gems
666
682
  end
667
-
683
+
668
684
  def Ocra.build_exe
669
685
  all_load_paths = $LOAD_PATH.map { |loadpath| Pathname(loadpath).expand }
670
686
  @added_load_paths = ($LOAD_PATH - @load_path_before).map { |loadpath| Pathname(loadpath).expand }
671
687
  working_directory = Pathname.pwd.expand
672
688
 
673
689
  restore_environment
674
-
675
- features = []
676
- # If the script was ran, then detect the features it used
690
+
691
+ # If the script was ran, then detect the features it used
677
692
  if Ocra.run_script
678
693
  # Attempt to autoload libraries before doing anything else.
679
694
  attempt_load_autoload if Ocra.load_autoload
680
-
681
- # Store the currently loaded files (before we require rbconfig for
682
- # our own use).
683
- features = $LOADED_FEATURES.map { |feature| Pathname(feature) }
684
- features.delete_if { |feature| feature =~ IGNORE_MODULES }
685
695
  end
686
696
 
697
+ # Store the currently loaded files (before we require rbconfig for
698
+ # our own use).
699
+ features = $LOADED_FEATURES.map { |feature| Pathname(feature) }
700
+ features.delete_if { |feature| feature =~ IGNORE_MODULES }
701
+
687
702
  # Find gemspecs to include
688
703
  if defined?(Gem)
689
704
  @gemspecs = Gem.loaded_specs.map { |name,info| Pathname(info.loaded_from) }
@@ -733,7 +748,7 @@ EOF
733
748
  feature = feature.relative_path_from(path.expand)
734
749
  end
735
750
  fullpath = feature.expand(path)
736
-
751
+
737
752
  if fullpath.subpath?(Host.exec_prefix)
738
753
  # Features found in the Ruby installation are put in the
739
754
  # temporary Ruby installation.
@@ -863,13 +878,13 @@ EOF
863
878
  end
864
879
  sb.createfile(dll, target)
865
880
  end
866
-
881
+
867
882
  # Add extra DLLs specified on the command line
868
883
  Ocra.extra_dlls.each do |dll|
869
884
  Ocra.msg "Adding supplied DLL #{dll}"
870
885
  sb.createfile(Host.bindir / dll, BINDIR / dll)
871
886
  end
872
-
887
+
873
888
  # Add gemspec files
874
889
  @gemspecs = sort_uniq(@gemspecs)
875
890
  @gemspecs.each do |gemspec|
@@ -926,7 +941,7 @@ EOF
926
941
  bytes_needed = bytes_needed_buffer.unpack("I")[0]
927
942
  break if bytes_needed <= module_handle_buffer.size
928
943
  end
929
-
944
+
930
945
  handles = module_handle_buffer.unpack("I*")
931
946
  handles.select { |handle| handle > 0 }.map do |handle|
932
947
  str = "\x00" * 256
@@ -1047,10 +1062,10 @@ EOF
1047
1062
  result = system(*iscc_cmd)
1048
1063
  if not result
1049
1064
  case $?
1050
- when 0 then raise RuntimeError.new("ISCC reported success, but system reported error?")
1051
- when 1 then raise RuntimeError.new("ISCC reports invalid command line parameters")
1052
- when 2 then raise RuntimeError.new("ISCC reports that compilation failed")
1053
- else raise RuntimeError.new("ISCC failed to run. Is the InnoSetup directory in your PATH?")
1065
+ when 0 then raise RuntimeError.new("ISCC reported success, but system reported error?")
1066
+ when 1 then raise RuntimeError.new("ISCC reports invalid command line parameters")
1067
+ when 2 then raise RuntimeError.new("ISCC reports that compilation failed")
1068
+ else raise RuntimeError.new("ISCC failed to run. Is the InnoSetup directory in your PATH?")
1054
1069
  end
1055
1070
  end
1056
1071
  rescue Exception => e
@@ -1120,9 +1135,9 @@ EOF
1120
1135
  def showtempdir(x)
1121
1136
  x.to_s.gsub(TEMPDIR_ROOT, "<tempdir>")
1122
1137
  end
1123
-
1138
+
1124
1139
  end # class OcraBuilder
1125
-
1140
+
1126
1141
  end # module Ocra
1127
1142
 
1128
1143
  if File.basename(__FILE__) == File.basename($0)
@@ -1132,7 +1147,7 @@ if File.basename(__FILE__) == File.basename($0)
1132
1147
  if not Ocra.files.first.exist?
1133
1148
  Ocra.fatal_error "#{Ocra.files[0]} was not found!"
1134
1149
  end
1135
-
1150
+
1136
1151
  at_exit do
1137
1152
  if $!.nil? or $!.kind_of?(SystemExit)
1138
1153
  Ocra.build_exe
@@ -1,3 +1,3 @@
1
1
  class Ocra
2
- VERSION = '1.3.0'
2
+ VERSION = '1.3.1'
3
3
  end
Binary file
Binary file
Binary file
@@ -9,7 +9,7 @@ begin
9
9
  gem 'win32-api', '>=1.2.0'
10
10
  require "win32/api"
11
11
  $have_win32_api = true
12
- rescue LoadError => e
12
+ rescue LoadError
13
13
  $have_win32_api = false
14
14
  end
15
15
 
@@ -18,7 +18,7 @@ include FileUtils
18
18
  class TestOcra < Test::Unit::TestCase
19
19
 
20
20
  # Default arguments for invoking OCRA when running tests.
21
- DefaultArgs = [ '--no-lzma' ]
21
+ DefaultArgs = [ '--no-lzma', '--verbose' ]
22
22
  DefaultArgs << "--quiet" unless ENV["OCRA_VERBOSE_TEST"]
23
23
  DefaultArgs.push '--no-autodll' if not $have_win32_api
24
24
 
@@ -42,6 +42,11 @@ class TestOcra < Test::Unit::TestCase
42
42
  end
43
43
  end
44
44
 
45
+ def system(*args)
46
+ puts args.join(" ") if ENV["OCRA_VERBOSE_TEST"]
47
+ Kernel.system(*args)
48
+ end
49
+
45
50
  attr_reader :ocra
46
51
 
47
52
  def initialize(*args)
@@ -140,7 +145,7 @@ class TestOcra < Test::Unit::TestCase
140
145
  end
141
146
  end
142
147
  end
143
-
148
+
144
149
  # Test that executables can writing a file to the current working
145
150
  # directory.
146
151
  def test_writefile
@@ -188,7 +193,7 @@ class TestOcra < Test::Unit::TestCase
188
193
  # be automatically included and usable in packaged app
189
194
  def test_gemfile
190
195
  with_fixture 'bundlerusage' do
191
- assert system("ruby", ocra, "bundlerusage.rb", "Gemfile", *(DefaultArgs + ["--no-dep-run", "--add-all-core", "--gemfile", "Gemfile"]))
196
+ assert system("ruby", ocra, "bundlerusage.rb", "Gemfile", *(DefaultArgs + ["--no-dep-run", "--add-all-core", "--gemfile", "Gemfile", "--gem-all"]))
192
197
  pristine_env "bundlerusage.exe" do
193
198
  assert system("bundlerusage.exe")
194
199
  end
@@ -288,7 +293,7 @@ class TestOcra < Test::Unit::TestCase
288
293
  end
289
294
  end
290
295
  end
291
-
296
+
292
297
  # Test that the standard output from a script can be redirected to a
293
298
  # file.
294
299
  def test_stdout_redir
@@ -327,7 +332,7 @@ class TestOcra < Test::Unit::TestCase
327
332
  return if gdbmdll.nil?
328
333
  args.push '--dll', File.basename(gdbmdll)
329
334
  end
330
-
335
+
331
336
  with_fixture 'gdbmdll' do
332
337
  assert system("ruby", ocra, "gdbmdll.rb", *args)
333
338
  with_env 'PATH' => '.' do
@@ -449,7 +454,7 @@ class TestOcra < Test::Unit::TestCase
449
454
  end
450
455
  end
451
456
  end
452
-
457
+
453
458
  # Should pick up file when script modifies $LOAD_PATH by adding
454
459
  # dirname of script.
455
460
  def test_loadpath_mangling_dirname
@@ -506,7 +511,7 @@ class TestOcra < Test::Unit::TestCase
506
511
  end
507
512
  end
508
513
  end
509
-
514
+
510
515
  # Test that ocra.rb accepts --version and outputs the version number.
511
516
  def test_version
512
517
  assert_match(/^Ocra \d+(\.\d)+(.[a-z]+\d+)?$/, `ruby \"#{ocra}\" --version`)
@@ -685,14 +690,14 @@ class TestOcra < Test::Unit::TestCase
685
690
  # Test that the --chdir-first option changes directory before exe starts script
686
691
  def test_chdir_first
687
692
  with_fixture 'writefile' do
688
- # Control test; make sure the writefile script works as expected under default options
693
+ # Control test; make sure the writefile script works as expected under default options
689
694
  assert system("ruby", ocra, "writefile.rb", *(DefaultArgs))
690
695
  pristine_env "writefile.exe" do
691
696
  assert !File.exist?("output.txt")
692
697
  assert system("writefile.exe")
693
698
  assert File.exist?("output.txt")
694
699
  end
695
-
700
+
696
701
  assert system("ruby", ocra, "writefile.rb", *(DefaultArgs + ["--chdir-first"]))
697
702
  pristine_env "writefile.exe" do
698
703
  assert !File.exist?("output.txt")
@@ -717,6 +722,7 @@ class TestOcra < Test::Unit::TestCase
717
722
  end
718
723
 
719
724
  def test_explicit_in_exec_prefix
725
+ return unless File.directory?(RbConfig::CONFIG["exec_prefix"] + "/include")
720
726
  path = File.join(RbConfig::CONFIG["exec_prefix"], "include", "**", "*.h")
721
727
  number_of_files = Dir[path].size
722
728
  assert number_of_files > 3
@@ -728,5 +734,20 @@ class TestOcra < Test::Unit::TestCase
728
734
  end
729
735
  end
730
736
  end
731
-
737
+
738
+ # Hello world test. Test that we can build and run executables.
739
+ def test_nonexistent_temp
740
+ with_fixture 'helloworld' do
741
+ assert system("ruby", ocra, "helloworld.rb", *DefaultArgs)
742
+ assert File.exist?("helloworld.exe")
743
+ pristine_env "helloworld.exe" do
744
+ with_env "TEMP" => "c:\\thispathdoesnotexist12345", "TMP" => "c:\\thispathdoesnotexist12345" do
745
+ assert File.exist?("helloworld.exe")
746
+ system("helloworld.exe 2>NUL")
747
+ assert File.exist?("helloworld.exe")
748
+ end
749
+ end
750
+ end
751
+ end
752
+
732
753
  end
metadata CHANGED
@@ -1,40 +1,67 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ocra
3
- version: !ruby/object:Gem::Version
4
- version: 1.3.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
5
  prerelease:
6
+ segments:
7
+ - 1
8
+ - 3
9
+ - 1
10
+ version: 1.3.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Lars Christensen
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-06-19 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: hoe
16
- requirement: &7397928 !ruby/object:Gem::Requirement
17
+
18
+ date: 2013-03-29 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rdoc
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: 2.9.4
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 19
29
+ segments:
30
+ - 3
31
+ - 10
32
+ version: "3.10"
22
33
  type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: hoe
23
37
  prerelease: false
24
- version_requirements: *7397928
25
- description: ! "OCRA (One-Click Ruby Application) builds Windows executables from
26
- Ruby\r\nsource code. The executable is a self-extracting, self-running\r\nexecutable
27
- that contains the Ruby interpreter, your source code and\r\nany additionally needed
28
- ruby libraries or DLL."
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 13
44
+ segments:
45
+ - 3
46
+ - 5
47
+ version: "3.5"
48
+ type: :development
49
+ version_requirements: *id002
50
+ description: |-
51
+ OCRA (One-Click Ruby Application) builds Windows executables from Ruby
52
+ source code. The executable is a self-extracting, self-running
53
+ executable that contains the Ruby interpreter, your source code and
54
+ any additionally needed ruby libraries or DLL.
29
55
  email: larsch@belunktum.dk
30
- executables:
56
+ executables:
31
57
  - ocra
32
58
  extensions: []
33
- extra_rdoc_files:
59
+
60
+ extra_rdoc_files:
34
61
  - History.txt
35
62
  - Manifest.txt
36
63
  - README.rdoc
37
- files:
64
+ files:
38
65
  - History.txt
39
66
  - Manifest.txt
40
67
  - README.rdoc
@@ -47,32 +74,39 @@ files:
47
74
  - test/test_ocra.rb
48
75
  - lib/ocra.rb
49
76
  - .gemtest
50
- homepage: http://ocra.rubyforge.org/
77
+ homepage: http://ocra.rubyforge.org
51
78
  licenses: []
79
+
52
80
  post_install_message:
53
- rdoc_options:
81
+ rdoc_options:
54
82
  - --main
55
83
  - README.rdoc
56
- require_paths:
84
+ require_paths:
57
85
  - lib
58
- required_ruby_version: !ruby/object:Gem::Requirement
86
+ required_ruby_version: !ruby/object:Gem::Requirement
59
87
  none: false
60
- requirements:
61
- - - ! '>='
62
- - !ruby/object:Gem::Version
63
- version: '0'
64
- required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ hash: 3
92
+ segments:
93
+ - 0
94
+ version: "0"
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
96
  none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
70
104
  requirements: []
105
+
71
106
  rubyforge_project: ocra
72
- rubygems_version: 1.8.4
107
+ rubygems_version: 1.8.24
73
108
  signing_key:
74
109
  specification_version: 3
75
- summary: ! "OCRA (One-Click Ruby Application) builds Windows executables from Ruby\r
76
- source code"
77
- test_files:
110
+ summary: OCRA (One-Click Ruby Application) builds Windows executables from Ruby
78
111
  source code
112
+ test_files:
79
113
  - test/test_ocra.rb