rake-compiler 1.1.0 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,8 +35,8 @@ module Rake
35
35
  @source_pattern = '**/*.java'
36
36
  @classpath = nil
37
37
  @debug = false
38
- @source_version = '1.6'
39
- @target_version = '1.6'
38
+ @source_version = '1.7'
39
+ @target_version = '1.7'
40
40
  @encoding = nil
41
41
  @java_compiling = nil
42
42
  @lint_option = nil
@@ -237,7 +237,7 @@ execute the Rake compilation task using the JRuby interpreter.
237
237
  cpath = Java::java.lang.System.getProperty('java.class.path').split(File::PATH_SEPARATOR)
238
238
  cpath += Java::java.lang.System.getProperty('sun.boot.class.path').split(File::PATH_SEPARATOR)
239
239
  jruby_cpath = cpath.compact.join(File::PATH_SEPARATOR)
240
- rescue => e
240
+ rescue
241
241
  end
242
242
  end
243
243
 
@@ -41,135 +41,104 @@ end
41
41
  require 'rake/extensioncompiler'
42
42
 
43
43
  MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system("#{c} -v > /dev/null 2>&1") }
44
- USER_HOME = File.expand_path("~/.rake-compiler")
45
- RUBY_CC_VERSION = "ruby-" << ENV.fetch("VERSION", "1.8.7-p371")
44
+ USER_HOME = File.realpath(File.expand_path("~/.rake-compiler"))
46
45
  RUBY_SOURCE = ENV['SOURCE']
47
46
  RUBY_BUILD = RbConfig::CONFIG["host"]
48
47
 
49
- # grab the major "1.8" or "1.9" part of the version number
50
- MAJOR = RUBY_CC_VERSION.match(/.*-(\d.\d).\d/)[1]
51
-
52
- # Use Rake::ExtensionCompiler helpers to find the proper host
53
- MINGW_HOST = ENV['HOST'] || Rake::ExtensionCompiler.mingw_host
54
- MINGW_TARGET = MINGW_HOST.gsub('msvc', '')
55
-
56
48
  # Unset any possible variable that might affect compilation
57
- ["CC", "CXX", "CPPFLAGS", "LDFLAGS", "RUBYOPT"].each do |var|
49
+ ["RUBYOPT"].each do |var|
58
50
  ENV.delete(var)
59
51
  end
60
52
 
61
- source_dir = "#{USER_HOME}/sources/#{RUBY_CC_VERSION}"
62
- build_dir = "#{USER_HOME}/builds/#{MINGW_HOST}/#{RUBY_CC_VERSION}"
63
-
64
- # define a location where sources will be stored
65
- directory source_dir
66
- directory build_dir
67
-
68
- # clean intermediate files and folders
69
- CLEAN.include(source_dir)
70
- CLEAN.include(build_dir)
71
-
72
- # remove the final products and sources
73
- CLOBBER.include("#{USER_HOME}/sources")
74
- CLOBBER.include("#{USER_HOME}/builds")
75
- CLOBBER.include("#{USER_HOME}/ruby/#{MINGW_HOST}/#{RUBY_CC_VERSION}")
76
- CLOBBER.include("#{USER_HOME}/config.yml")
53
+ RUBY_CC_VERSIONS = ENV.fetch("VERSION", "1.8.7-p371")
54
+ RUBY_CC_VERSIONS.split(":").each do |ruby_cc_version|
55
+ ruby_cc_version = "ruby-" + ruby_cc_version
56
+ # grab the major "1.8" or "1.9" part of the version number
57
+ major = ruby_cc_version.match(/.*-(\d.\d).\d/)[1]
58
+
59
+ # define a location where sources will be stored
60
+ source_dir = "#{USER_HOME}/sources/#{ruby_cc_version}"
61
+ directory source_dir
62
+ # clean intermediate files and folders
63
+ CLEAN.include(source_dir)
64
+
65
+ # remove the final products and sources
66
+ CLOBBER.include("#{USER_HOME}/sources")
67
+ CLOBBER.include("#{USER_HOME}/builds")
68
+ CLOBBER.include("#{USER_HOME}/config.yml")
69
+
70
+ # Extract the sources
71
+ source_file = RUBY_SOURCE ? RUBY_SOURCE.split('/').last : "#{ruby_cc_version}.tar.gz"
72
+ file source_dir => ["#{USER_HOME}/sources/#{source_file}"] do |t|
73
+ t.prerequisites.each { |f| sh "tar xf #{File.basename(f)}", chdir: File.dirname(t.name) }
74
+ end
77
75
 
78
- # ruby source file should be stored there
79
- file "#{USER_HOME}/sources/#{RUBY_CC_VERSION}.tar.bz2" => ["#{USER_HOME}/sources"] do |t|
80
- # download the source file using wget or curl
81
- chdir File.dirname(t.name) do
76
+ # ruby source file should be stored there
77
+ file "#{USER_HOME}/sources/#{ruby_cc_version}.tar.gz" => ["#{USER_HOME}/sources"] do |t|
78
+ # download the source file using wget or curl
82
79
  if RUBY_SOURCE
83
80
  url = RUBY_SOURCE
84
81
  else
85
- url = "http://cache.ruby-lang.org/pub/ruby/#{MAJOR}/#{File.basename(t.name)}"
82
+ url = "http://cache.ruby-lang.org/pub/ruby/#{major}/#{File.basename(t.name)}"
86
83
  end
87
- sh "wget #{url} || curl -O #{url}"
84
+ sh "wget #{url} || curl -O #{url}", chdir: File.dirname(t.name)
88
85
  end
89
- end
90
-
91
- # Extract the sources
92
- source_file = RUBY_SOURCE ? RUBY_SOURCE.split('/').last : "#{RUBY_CC_VERSION}.tar.bz2"
93
- file source_dir => ["#{USER_HOME}/sources/#{source_file}"] do |t|
94
- chdir File.dirname(t.name) do
95
- t.prerequisites.each { |f| sh "tar xf #{File.basename(f)}" }
96
- end
97
- end
98
-
99
- # backup makefile.in
100
- if RUBY_CC_VERSION >= "ruby-2.7.0"
101
- makefile_in = "#{source_dir}/template/Makefile.in"
102
- else
103
- makefile_in = "#{source_dir}/Makefile.in"
104
- end
105
- makefile_in_bak = "#{makefile_in}.bak"
106
- file makefile_in_bak => [source_dir] do |t|
107
- cp makefile_in, makefile_in_bak
108
- end
109
-
110
- # correct the makefiles
111
- file makefile_in => [makefile_in_bak] do |t|
112
- content = File.open(makefile_in_bak, 'rb') { |f| f.read }
113
-
114
- out = ""
115
86
 
116
- content.each_line do |line|
117
- if line =~ /^\s*ALT_SEPARATOR =/
118
- out << "\t\t ALT_SEPARATOR = \"\\\\\\\\\"; \\\n"
119
- else
120
- out << line
87
+ # Create tasks for each host out of the ":" separated hosts list in the HOST variable.
88
+ # These tasks are processed in parallel as dependencies to the "install" task.
89
+ mingw_hosts = ENV['HOST'] || Rake::ExtensionCompiler.mingw_host
90
+ mingw_hosts.split(":").each do |mingw_host|
91
+
92
+ # Use Rake::ExtensionCompiler helpers to find the proper host
93
+ mingw_target = mingw_host.gsub('msvc', '')
94
+
95
+ # define a location where built files for each host will be stored
96
+ build_dir = "#{USER_HOME}/builds/#{mingw_host}/#{ruby_cc_version}"
97
+ directory build_dir
98
+ install_dir = "#{USER_HOME}/ruby/#{mingw_host}/#{ruby_cc_version}"
99
+
100
+ # clean intermediate files and folders
101
+ CLEAN.include(build_dir)
102
+ CLOBBER.include(install_dir)
103
+
104
+ task :mingw32 do
105
+ unless mingw_host then
106
+ warn "You need to install mingw32 cross compile functionality to be able to continue."
107
+ warn "Please refer to your distribution/package manager documentation about installation."
108
+ fail
109
+ end
121
110
  end
122
- end
123
-
124
- when_writing("Patching Makefile.in") {
125
- File.open(makefile_in, 'wb') { |f| f.write(out) }
126
- }
127
- end
128
-
129
- task :mingw32 do
130
- unless MINGW_HOST then
131
- warn "You need to install mingw32 cross compile functionality to be able to continue."
132
- warn "Please refer to your distribution/package manager documentation about installation."
133
- fail
134
- end
135
- end
136
111
 
137
- # generate the makefile in a clean build location
138
- file "#{build_dir}/Makefile" => [build_dir, makefile_in] do |t|
139
-
140
- options = [
141
- "--host=#{MINGW_HOST}",
142
- "--target=#{MINGW_TARGET}",
143
- "--build=#{RUBY_BUILD}",
144
- '--enable-shared',
145
- '--disable-install-doc',
146
- '--with-ext='
147
- ]
148
-
149
- # Force Winsock2 for Ruby 1.8, 1.9 defaults to it
150
- options << "--with-winsock2" if MAJOR == "1.8"
151
-
152
- chdir File.dirname(t.name) do
153
- prefix = File.expand_path("../../../ruby/#{MINGW_HOST}/#{RUBY_CC_VERSION}")
154
- options << "--prefix=#{prefix}"
155
- sh File.expand_path("../../../sources/#{RUBY_CC_VERSION}/configure"), *options
156
- end
157
- end
112
+ # generate the makefile in a clean build location
113
+ file "#{build_dir}/Makefile" => [build_dir, source_dir] do |t|
114
+
115
+ options = [
116
+ "--host=#{mingw_host}",
117
+ "--target=#{mingw_target}",
118
+ "--build=#{RUBY_BUILD}",
119
+ '--enable-shared',
120
+ '--disable-install-doc',
121
+ '--with-ext=',
122
+ ]
123
+
124
+ # Force Winsock2 for Ruby 1.8, 1.9 defaults to it
125
+ options << "--with-winsock2" if major == "1.8"
126
+ options << "--prefix=#{install_dir}"
127
+ sh File.expand_path("#{USER_HOME}/sources/#{ruby_cc_version}/configure"), *options, chdir: File.dirname(t.name)
128
+ end
158
129
 
159
- # make
160
- file "#{build_dir}/ruby.exe" => ["#{build_dir}/Makefile"] do |t|
161
- chdir File.dirname(t.prerequisites.first) do
162
- sh MAKE
163
- end
164
- end
130
+ # make
131
+ file "#{build_dir}/ruby.exe" => ["#{build_dir}/Makefile"] do |t|
132
+ sh MAKE, chdir: File.dirname(t.prerequisites.first)
133
+ end
165
134
 
166
- # make install
167
- file "#{USER_HOME}/ruby/#{MINGW_HOST}/#{RUBY_CC_VERSION}/bin/ruby.exe" => ["#{build_dir}/ruby.exe"] do |t|
168
- chdir File.dirname(t.prerequisites.first) do
169
- sh "#{MAKE} install"
135
+ # make install
136
+ file "#{USER_HOME}/ruby/#{mingw_host}/#{ruby_cc_version}/bin/ruby.exe" => ["#{build_dir}/ruby.exe"] do |t|
137
+ sh "#{MAKE} install", chdir: File.dirname(t.prerequisites.first)
138
+ end
139
+ multitask :install => ["#{USER_HOME}/ruby/#{mingw_host}/#{ruby_cc_version}/bin/ruby.exe"]
170
140
  end
171
141
  end
172
- task :install => ["#{USER_HOME}/ruby/#{MINGW_HOST}/#{RUBY_CC_VERSION}/bin/ruby.exe"]
173
142
 
174
143
  desc "Update rake-compiler list of installed Ruby versions"
175
144
  task 'update-config' do
@@ -216,5 +185,5 @@ task :default do
216
185
  Rake.application.display_tasks_and_comments
217
186
  end
218
187
 
219
- desc "Build #{RUBY_CC_VERSION} suitable for cross-platform development."
188
+ desc "Build rubies suitable for cross-platform development."
220
189
  task 'cross-ruby' => [:mingw32, :install, 'update-config']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-compiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-12-24 00:00:00.000000000 Z
12
+ date: 2021-12-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -79,10 +79,10 @@ extensions: []
79
79
  extra_rdoc_files:
80
80
  - README.md
81
81
  - LICENSE.txt
82
- - History.txt
82
+ - History.md
83
83
  files:
84
84
  - Gemfile
85
- - History.txt
85
+ - History.md
86
86
  - LICENSE.txt
87
87
  - README.md
88
88
  - Rakefile
@@ -145,8 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  - !ruby/object:Gem::Version
146
146
  version: 1.8.23
147
147
  requirements: []
148
- rubyforge_project:
149
- rubygems_version: 2.7.6.2
148
+ rubygems_version: 3.3.0.dev
150
149
  signing_key:
151
150
  specification_version: 4
152
151
  summary: Rake-based Ruby Extension (C, Java) task generator.