ruboto 1.0.2 → 1.0.3
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/RELEASE_CANDICATE_DOC.md +7 -4
- data/RELEASE_DOC.md +25 -19
- data/assets/rakelib/ruboto.rake +61 -15
- data/assets/rakelib/stdlib.rake +266 -0
- data/assets/rakelib/stdlib.yml +5618 -0
- data/assets/rakelib/stdlib_dependencies.rb +136 -0
- data/assets/ruboto.yml +62 -0
- data/assets/src/org/ruboto/JRubyAdapter.java +10 -3
- data/assets/src/org/ruboto/SplashActivity.java +11 -10
- data/assets/src/ruboto/activity/reload.rb +4 -4
- data/assets/src/ruboto/widget.rb +4 -1
- data/lib/ruboto/commands/base.rb +15 -1
- data/lib/ruboto/sdk_versions.rb +10 -7
- data/lib/ruboto/util/emulator.rb +24 -27
- data/lib/ruboto/util/setup.rb +5 -0
- data/lib/ruboto/util/update.rb +9 -125
- data/lib/ruboto/util/verify.rb +1 -1
- data/lib/ruboto/version.rb +1 -1
- data/test/activity/dir_and_file_activity.rb +1 -1
- data/test/minimal_app_test.rb +7 -2
- data/test/rake_test.rb +12 -6
- data/test/ruboto_gen_test.rb +8 -2
- data/test/test_helper.rb +8 -7
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa80ecb3d9c8d5a37b94142f2a1fe730daad9563
|
4
|
+
data.tar.gz: bca65a11d086368713f67496b1ce279e17c56480
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2b7f8bd447f38c527684f6b4caaa193f5ea7e88388a98888ace26ab6e85228d0f122d9ce6e1ef0c9c20c33bd50b69cda678fb4ce8e6cacd0382ea8596c8c10f
|
7
|
+
data.tar.gz: 7c929fcee3c3f860dd33930618d46dfc0350c21a745872db259435c8b2993ce674fe9afdd2698dcda94ef0a02410aa423a4a2792d37d79cee92dee9da700e640
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruboto (1.0.
|
4
|
+
ruboto (1.0.3)
|
5
5
|
main (~> 5.2.0)
|
6
6
|
rake (~> 10.0)
|
7
7
|
rubyzip (~> 1.0)
|
@@ -9,17 +9,17 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: http://rubygems.org/
|
11
11
|
specs:
|
12
|
-
arrayfields (4.9.
|
12
|
+
arrayfields (4.9.2)
|
13
13
|
chronic (0.10.2)
|
14
|
-
fattr (2.2.
|
14
|
+
fattr (2.2.2)
|
15
15
|
main (5.2.0)
|
16
16
|
arrayfields (>= 4.7.4)
|
17
17
|
chronic (>= 0.6.2)
|
18
18
|
fattr (>= 2.2.0)
|
19
19
|
map (>= 5.1.0)
|
20
|
-
map (6.5.
|
21
|
-
rake (10.
|
22
|
-
rubyzip (1.1.
|
20
|
+
map (6.5.3)
|
21
|
+
rake (10.3.0)
|
22
|
+
rubyzip (1.1.3)
|
23
23
|
|
24
24
|
PLATFORMS
|
25
25
|
java
|
data/RELEASE_CANDICATE_DOC.md
CHANGED
@@ -1,11 +1,14 @@
|
|
1
|
-
Subject: [ANN] Ruboto 1.0.
|
1
|
+
Subject: [ANN] Ruboto 1.0.3 release candidate
|
2
2
|
|
3
3
|
Hi all!
|
4
4
|
|
5
|
-
The Ruboto 1.0.
|
5
|
+
The Ruboto 1.0.3 release candidate is now available.
|
6
6
|
|
7
|
-
This
|
8
|
-
|
7
|
+
This release focuses on stability and introduces a new mechanism for
|
8
|
+
reducing the footprint of your app using the ruboto.yml config file. You
|
9
|
+
can now specify the Ruby compatibility level of your app (1.8/1.9/2.0) and
|
10
|
+
which parts of the Ruby Standard Library you want to use. Ruboto will now
|
11
|
+
strip the parts you don't need, making your app a bit smaller.
|
9
12
|
|
10
13
|
As always we need your help and feedback to ensure the quality of the release. Please install the release candidate using
|
11
14
|
|
data/RELEASE_DOC.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
Subject: [ANN] Ruboto 1.0.
|
1
|
+
Subject: [ANN] Ruboto 1.0.3 released!
|
2
2
|
|
3
|
-
The Ruboto team is pleased to announce the release of Ruboto 1.0.
|
3
|
+
The Ruboto team is pleased to announce the release of Ruboto 1.0.3.
|
4
4
|
|
5
5
|
Ruboto (JRuby on Android) is a platform for developing full stand-alone
|
6
6
|
apps for Android using the Ruby language and libraries. It includes
|
@@ -8,37 +8,43 @@ support libraries and generators for creating projects, classes, tests,
|
|
8
8
|
and more. The complete APIs of Android, Java, and Ruby are available to
|
9
9
|
you using the Ruby language.
|
10
10
|
|
11
|
-
New in version 1.0.
|
11
|
+
New in version 1.0.3:
|
12
12
|
|
13
|
-
This
|
14
|
-
|
13
|
+
This release focuses on stability and introduces a new mechanism for
|
14
|
+
reducing the footprint of your app using the ruboto.yml config file. You
|
15
|
+
can now specify the Ruby compatibility level of your app (1.8/1.9/2.0) and
|
16
|
+
which parts of the Ruby Standard Library you want to use. Ruboto will now
|
17
|
+
strip the parts you don't need, making your app a bit smaller.
|
15
18
|
|
16
19
|
Features:
|
17
20
|
|
18
|
-
* Issue #
|
19
|
-
* Issue #
|
21
|
+
* Issue #418 Dynamic Ruboto runtime sizing and inclusion
|
22
|
+
* Issue #576 Make Android 4.0 the default target.
|
23
|
+
* Issue #592 Update to JRuby 1.7.12
|
20
24
|
|
21
25
|
Bugfixes:
|
22
26
|
|
23
|
-
* Issue #
|
24
|
-
* Issue #
|
25
|
-
* Issue #
|
26
|
-
|
27
|
+
* Issue #529 rake install start fails on windows
|
28
|
+
* Issue #566 ruboto emulator -t android-19 failed
|
29
|
+
* Issue #580 Ruboto setup fails if the path configuration script doesn't
|
30
|
+
exist
|
31
|
+
* Issue #582 JRuby 9000 tests fail
|
32
|
+
* Issue #583 'ruboto setup' crashes when config file does not exist.
|
33
|
+
* Issue #585 rake install start does not power up app in Android 4.4
|
34
|
+
Kitkat emulator and sleeps at build successful
|
35
|
+
* Issue #587 warning breaks is_installed?
|
27
36
|
|
28
|
-
|
37
|
+
Support:
|
29
38
|
|
30
|
-
* Issue #
|
39
|
+
* Issue #579 Android platform SDK for android-10 not found (v1.0.2)
|
31
40
|
|
32
|
-
|
41
|
+
Internal:
|
33
42
|
|
34
|
-
* Issue #
|
35
|
-
* Issue #562 How can I help? (lucasallan)
|
36
|
-
* Issue #563 How can I help? (pedroandrade)
|
37
|
-
* Issue #572 How can I help? (iamrahulroy)
|
43
|
+
* Issue #577 Domain expired
|
38
44
|
|
39
45
|
You can find a complete list of issues here:
|
40
46
|
|
41
|
-
* https://github.com/ruboto/ruboto/issues?state=closed&milestone=
|
47
|
+
* https://github.com/ruboto/ruboto/issues?state=closed&milestone=28
|
42
48
|
|
43
49
|
|
44
50
|
Installation:
|
data/assets/rakelib/ruboto.rake
CHANGED
@@ -77,7 +77,7 @@ end
|
|
77
77
|
PROJECT_DIR = File.expand_path('..', File.dirname(__FILE__))
|
78
78
|
UPDATE_MARKER_FILE = File.join(PROJECT_DIR, 'bin', 'LAST_UPDATE')
|
79
79
|
BUNDLE_JAR = File.expand_path 'libs/bundle.jar'
|
80
|
-
BUNDLE_PATH = File.
|
80
|
+
BUNDLE_PATH = File.join(PROJECT_DIR, 'bin', 'bundle')
|
81
81
|
MANIFEST_FILE = File.expand_path 'AndroidManifest.xml'
|
82
82
|
PROJECT_PROPS_FILE = File.expand_path 'project.properties'
|
83
83
|
RUBOTO_CONFIG_FILE = File.expand_path 'ruboto.yml'
|
@@ -239,10 +239,18 @@ file RUBOTO_CONFIG_FILE
|
|
239
239
|
task :jruby_adapter => JRUBY_ADAPTER_FILE
|
240
240
|
file JRUBY_ADAPTER_FILE => RUBOTO_CONFIG_FILE do
|
241
241
|
require 'yaml'
|
242
|
+
|
243
|
+
ruboto_yml = (YAML.load(File.read(RUBOTO_CONFIG_FILE)) || {})
|
244
|
+
source = File.read(JRUBY_ADAPTER_FILE)
|
245
|
+
|
246
|
+
#
|
247
|
+
# HeapAlloc
|
248
|
+
#
|
249
|
+
comment = ''
|
242
250
|
marker_topic ='Ruboto HeapAlloc'
|
243
251
|
begin_marker = "// BEGIN #{marker_topic}"
|
244
252
|
end_marker = "// END #{marker_topic}"
|
245
|
-
unless (heap_alloc =
|
253
|
+
unless (heap_alloc = ruboto_yml['heap_alloc'])
|
246
254
|
heap_alloc = 13
|
247
255
|
comment = '// '
|
248
256
|
end
|
@@ -253,9 +261,31 @@ file JRUBY_ADAPTER_FILE => RUBOTO_CONFIG_FILE do
|
|
253
261
|
#{comment}arrayForHeapAllocation = null;
|
254
262
|
#{end_marker}
|
255
263
|
EOF
|
256
|
-
|
257
|
-
|
258
|
-
|
264
|
+
pattern = %r{^\s*#{begin_marker}\n.*^\s*#{end_marker}\n}m
|
265
|
+
source = source.sub(pattern, config)
|
266
|
+
|
267
|
+
#
|
268
|
+
# RubyVersion
|
269
|
+
#
|
270
|
+
comment = ''
|
271
|
+
marker_topic ='Ruboto RubyVersion'
|
272
|
+
begin_marker = "// BEGIN #{marker_topic}"
|
273
|
+
end_marker = "// END #{marker_topic}"
|
274
|
+
unless (ruby_version = ruboto_yml['ruby_version'])
|
275
|
+
ruby_version = 2.0
|
276
|
+
comment = '// '
|
277
|
+
end
|
278
|
+
ruby_version = ruby_version.to_s
|
279
|
+
ruby_version['.'] = '_'
|
280
|
+
config = <<EOF
|
281
|
+
#{begin_marker}
|
282
|
+
#{comment}System.setProperty("jruby.compat.version", "RUBY#{ruby_version}"); // RUBY1_9 is the default in JRuby 1.7
|
283
|
+
#{end_marker}
|
284
|
+
EOF
|
285
|
+
pattern = %r{^\s*#{begin_marker}\n.*^\s*#{end_marker}\n}m
|
286
|
+
source = source.sub(pattern, config)
|
287
|
+
|
288
|
+
File.open(JRUBY_ADAPTER_FILE, 'w') { |f| f << source }
|
259
289
|
end
|
260
290
|
|
261
291
|
file APK_FILE => APK_DEPENDENCIES do |t|
|
@@ -365,25 +395,27 @@ file BUNDLE_JAR => [GEM_FILE, GEM_LOCK_FILE] do
|
|
365
395
|
puts "Generating #{BUNDLE_JAR}"
|
366
396
|
require 'bundler'
|
367
397
|
# FIXME(uwe): Issue #547 https://github.com/ruboto/ruboto/issues/547
|
368
|
-
if true || Gem::Version.new(Bundler::VERSION) <= Gem::Version.new('1.
|
398
|
+
if true || Gem::Version.new(Bundler::VERSION) <= Gem::Version.new('1.6.3')
|
369
399
|
require 'bundler/vendored_thor'
|
370
400
|
|
371
401
|
# Store original RubyGems/Bundler environment
|
372
402
|
platforms = Gem.platforms
|
373
403
|
ruby_engine = defined?(RUBY_ENGINE) && RUBY_ENGINE
|
374
|
-
|
404
|
+
env_home = ENV['GEM_HOME']
|
405
|
+
env_path = ENV['GEM_PATH']
|
375
406
|
|
376
407
|
# Override RUBY_ENGINE (we can bundle from MRI for JRuby)
|
377
408
|
Gem.platforms = [Gem::Platform::RUBY, Gem::Platform.new("universal-dalvik-#{sdk_level}"), Gem::Platform.new('universal-java')]
|
378
|
-
|
409
|
+
ENV['GEM_HOME'] = BUNDLE_PATH
|
410
|
+
ENV['GEM_PATH'] = BUNDLE_PATH
|
379
411
|
old_verbose, $VERBOSE = $VERBOSE, nil
|
380
412
|
begin
|
381
413
|
Object.const_set('RUBY_ENGINE', 'jruby')
|
382
414
|
ensure
|
383
415
|
$VERBOSE = old_verbose
|
384
416
|
end
|
385
|
-
|
386
417
|
ENV['BUNDLE_GEMFILE'] = GEM_FILE
|
418
|
+
|
387
419
|
Bundler.ui = Bundler::UI::Shell.new
|
388
420
|
Bundler.bundle_path = Pathname.new BUNDLE_PATH
|
389
421
|
definition = Bundler.definition
|
@@ -402,7 +434,8 @@ file BUNDLE_JAR => [GEM_FILE, GEM_LOCK_FILE] do
|
|
402
434
|
$VERBOSE = old_verbose
|
403
435
|
end
|
404
436
|
Gem.platforms = platforms
|
405
|
-
|
437
|
+
ENV['GEM_HOME'] = env_home
|
438
|
+
ENV['GEM_PATH'] = env_path
|
406
439
|
else
|
407
440
|
# Bundler.settings[:platform] = Gem::Platform::DALVIK
|
408
441
|
sh "bundle install --gemfile #{GEM_FILE} --path=#{BUNDLE_PATH} --platform=dalvik#{sdk_level}"
|
@@ -619,8 +652,10 @@ def package_installed?(test = false)
|
|
619
652
|
package_name = "#{package}#{'.tests' if test}"
|
620
653
|
loop do
|
621
654
|
path_line = `adb shell pm path #{package_name}`.chomp
|
655
|
+
path_line.gsub! /^WARNING:.*$/, ''
|
622
656
|
return nil if $? == 0 && path_line.empty?
|
623
657
|
break if $? == 0 && path_line =~ /^package:(.*)$/
|
658
|
+
puts path_line
|
624
659
|
sleep 0.5
|
625
660
|
end
|
626
661
|
path = $1
|
@@ -651,8 +686,8 @@ end
|
|
651
686
|
def build_apk(t, release)
|
652
687
|
apk_file = release ? RELEASE_APK_FILE : APK_FILE
|
653
688
|
if File.exist?(apk_file)
|
654
|
-
changed_prereqs = t.prerequisites.select do |
|
655
|
-
File.file?(
|
689
|
+
changed_prereqs = t.prerequisites.select do |pr|
|
690
|
+
File.file?(pr) && !Dir[pr].empty? && Dir[pr].map { |f| File.mtime(f) }.max >= File.mtime(apk_file)
|
656
691
|
end
|
657
692
|
return false if changed_prereqs.empty?
|
658
693
|
changed_prereqs.each { |f| puts "#{f} changed." }
|
@@ -666,7 +701,17 @@ def build_apk(t, release)
|
|
666
701
|
true
|
667
702
|
end
|
668
703
|
|
704
|
+
def wait_for_valid_device
|
705
|
+
while `adb shell echo "ping"`.strip != 'ping'
|
706
|
+
`adb kill-server`
|
707
|
+
`adb devices`
|
708
|
+
sleep 5
|
709
|
+
end
|
710
|
+
end
|
711
|
+
|
669
712
|
def install_apk
|
713
|
+
wait_for_valid_device
|
714
|
+
|
670
715
|
failure_pattern = /^Failure \[(.*)\]/
|
671
716
|
success_pattern = /^Success/
|
672
717
|
case package_installed?
|
@@ -741,7 +786,8 @@ def uninstall_apk
|
|
741
786
|
end
|
742
787
|
|
743
788
|
def update_scripts
|
744
|
-
`adb shell mkdir -p #{scripts_path}`
|
789
|
+
puts(`adb shell mkdir -p #{scripts_path}`) unless device_path_exists?(scripts_path)
|
790
|
+
raise "Unable to create device scripts dir: #{scripts_path}" unless device_path_exists?(scripts_path)
|
745
791
|
last_update = File.exists?(UPDATE_MARKER_FILE) ? Time.parse(File.read(UPDATE_MARKER_FILE)) : Time.parse('1970-01-01T00:00:00')
|
746
792
|
Dir.chdir('src') do
|
747
793
|
source_files = Dir['**/*.rb']
|
@@ -769,8 +815,8 @@ end
|
|
769
815
|
|
770
816
|
# Triggers reload of updated scripts and restart of the current activity
|
771
817
|
def reload_scripts(scripts)
|
772
|
-
s = scripts.map{|s| s.gsub(/[&;]/){|m| "&#{m[0]}"}}.join('
|
773
|
-
cmd = %Q{adb shell am broadcast -a android.intent.action.VIEW -e reload
|
818
|
+
s = scripts.map{|s| s.gsub(/[&;]/){|m| "&#{m[0]}"}}.join('\;')
|
819
|
+
cmd = %Q{adb shell am broadcast -a android.intent.action.VIEW -e reload '#{s}'}
|
774
820
|
puts cmd
|
775
821
|
system cmd
|
776
822
|
end
|
@@ -0,0 +1,266 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'rexml/document'
|
4
|
+
|
5
|
+
namespace :libs do
|
6
|
+
desc 'take a fresh copy of the stdlib and rebuild it for use with this project'
|
7
|
+
task :reconfigure_stdlib do
|
8
|
+
require_relative 'stdlib_dependencies'
|
9
|
+
reconfigure_jruby_stdlib
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'check the stdlib dependencies and store them in auto_dependencies.yml'
|
13
|
+
task :check_dependencies do
|
14
|
+
require_relative 'stdlib_dependencies'
|
15
|
+
|
16
|
+
if File.exists? 'auto_dependencies.yml'
|
17
|
+
old_dep = (YAML::load_file('auto_dependencies.yml') || {})
|
18
|
+
end
|
19
|
+
|
20
|
+
new_dep = find_dependencies
|
21
|
+
if new_dep == old_dep
|
22
|
+
puts "Dependencies haven't changed: #{new_dep.join(', ')}"
|
23
|
+
else
|
24
|
+
puts "New dependencies: #{new_dep.join(', ')}"
|
25
|
+
File.open( "auto_dependencies.yml", 'w' ) do |out|
|
26
|
+
YAML.dump( new_dep, out )
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def log_action(initial_text, final_text="Done.", &block)
|
33
|
+
$stdout.sync = true
|
34
|
+
|
35
|
+
print initial_text, "..."
|
36
|
+
result = yield
|
37
|
+
puts final_text
|
38
|
+
|
39
|
+
result
|
40
|
+
end
|
41
|
+
|
42
|
+
############################################################################
|
43
|
+
#
|
44
|
+
# Support for reconfigure_jruby_stdlib
|
45
|
+
#
|
46
|
+
|
47
|
+
# - Moves ruby stdlib to the root of the jruby-stdlib jar
|
48
|
+
def reconfigure_jruby_stdlib
|
49
|
+
abort "cannot find jruby library in libs" if Dir["libs/jruby*"].empty?
|
50
|
+
|
51
|
+
require 'jruby-jars'
|
52
|
+
|
53
|
+
log_action("Copying #{JRubyJars::stdlib_jar_path} to libs") { FileUtils.cp JRubyJars::stdlib_jar_path, "libs/jruby-stdlib-#{JRubyJars::VERSION}.jar" }
|
54
|
+
StdlibDependencies.load('rakelib/stdlib.yml')
|
55
|
+
|
56
|
+
Dir.chdir 'libs' do
|
57
|
+
jruby_stdlib = Dir['jruby-stdlib-*.jar'][-1]
|
58
|
+
log_action("Reformatting #{jruby_stdlib}") do
|
59
|
+
FileUtils.mkdir_p 'tmp'
|
60
|
+
Dir.chdir 'tmp' do
|
61
|
+
FileUtils.mkdir_p 'old'
|
62
|
+
FileUtils.mkdir_p 'new/jruby.home'
|
63
|
+
Dir.chdir 'old' do
|
64
|
+
`jar -xf ../../#{jruby_stdlib}`
|
65
|
+
raise "Unpacking jruby-stdlib jar failed: #$?" unless $? == 0
|
66
|
+
end
|
67
|
+
FileUtils.move 'old/META-INF/jruby.home/lib', 'new/jruby.home/lib'
|
68
|
+
FileUtils.rm_rf 'new/jruby.home/lib/ruby/gems'
|
69
|
+
|
70
|
+
remove_unneeded_parts_of_stdlib
|
71
|
+
cleanup_jars
|
72
|
+
|
73
|
+
Dir.chdir 'new' do
|
74
|
+
`jar -cf ../../#{jruby_stdlib} .`
|
75
|
+
raise "Creating repackaged jruby-stdlib jar failed: #$?" unless $? == 0
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
FileUtils.remove_dir 'tmp', true
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def remove_unneeded_parts_of_stdlib
|
85
|
+
if File.exists? '../../ruboto.yml'
|
86
|
+
ruboto_config = (YAML::load_file('../../ruboto.yml') || {})
|
87
|
+
else
|
88
|
+
ruboto_config = {}
|
89
|
+
end
|
90
|
+
|
91
|
+
ruby_version = ruboto_config['ruby_version']
|
92
|
+
included_stdlibs = ruboto_config['included_stdlibs']
|
93
|
+
excluded_stdlibs = [*ruboto_config['excluded_stdlibs']].compact
|
94
|
+
|
95
|
+
if included_stdlibs and included_stdlibs == "auto"
|
96
|
+
if File.exists? '../../auto_dependencies.yml'
|
97
|
+
included_stdlibs = YAML::load_file('../../auto_dependencies.yml')
|
98
|
+
else
|
99
|
+
puts "No auto_dependencies.yml file found. Use 'rake libs:check_dependencies' to create one."
|
100
|
+
included_stdlibs = nil
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
Dir.chdir 'new/jruby.home/lib/ruby' do
|
105
|
+
#
|
106
|
+
# Add ruby_version (e.g., 1.8, 1.9, 2.0) to ruboto.yml
|
107
|
+
# to trim unused versions from stdlib
|
108
|
+
#
|
109
|
+
if ruby_version
|
110
|
+
ruby_stdlib_versions = Dir['*'] - %w(gems shared)
|
111
|
+
print "ruby version = #{ruby_version}..."
|
112
|
+
ruby_stdlib_versions.each do |ld|
|
113
|
+
unless ld == ruby_version.to_s
|
114
|
+
print "removing #{ld}..."
|
115
|
+
FileUtils.rm_rf ld
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
if included_stdlibs
|
121
|
+
ruby_version ||= 1.9
|
122
|
+
ruby_version = ruby_version.to_s
|
123
|
+
|
124
|
+
# Require jruby and java
|
125
|
+
included_stdlibs = (included_stdlibs + %w(java jruby)).uniq
|
126
|
+
|
127
|
+
ruby_stdlib_versions = Dir['*'] - %w(gems)
|
128
|
+
print 'excluded...'
|
129
|
+
ruby_stdlib_versions.each do |ld|
|
130
|
+
Dir.chdir ld do
|
131
|
+
libs = Dir['*'].map { |d| d.sub /\.(rb|jar)$/, '' }.uniq
|
132
|
+
libs.each do |d|
|
133
|
+
next if included_stdlibs.include? d
|
134
|
+
FileUtils.rm_rf d if File.exists? d
|
135
|
+
file = "#{d}.rb"
|
136
|
+
FileUtils.rm_rf file if File.exists? file
|
137
|
+
jarfile = "#{d}.jar"
|
138
|
+
FileUtils.rm_rf jarfile if File.exists? jarfile
|
139
|
+
print "#{d} "
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
if included_stdlibs.nil? and excluded_stdlibs.any?
|
146
|
+
# Don't allow jruby and java to be removed
|
147
|
+
excluded_stdlibs = excluded_stdlibs - %w(jruby java)
|
148
|
+
|
149
|
+
ruby_stdlib_versions = Dir['*'] - %w(gems)
|
150
|
+
ruby_stdlib_versions.each do |ld|
|
151
|
+
excluded_stdlibs.each do |d|
|
152
|
+
dir = "#{ld}/#{d}"
|
153
|
+
FileUtils.rm_rf dir if File.exists? dir
|
154
|
+
file = "#{dir}.rb"
|
155
|
+
FileUtils.rm_rf file if File.exists? file
|
156
|
+
end
|
157
|
+
end
|
158
|
+
print "excluded #{excluded_stdlibs.join(' ')}..."
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
def cleanup_jars
|
164
|
+
Dir.chdir 'new' do
|
165
|
+
Dir['**/*.jar'].each do |j|
|
166
|
+
|
167
|
+
# FIXME(uwe): Installing bcmail-jdk15-146.jar + bcprov-jdk15-146.jar fails due to
|
168
|
+
# http://code.google.com/p/android/issues/detail?id=40409
|
169
|
+
# This breaks ssl and https. Remove when we stop supporting JRuby <= 1.7.2
|
170
|
+
if j =~ /bcmail|bcprov-jdk15-146/
|
171
|
+
FileUtils.rm j
|
172
|
+
next
|
173
|
+
end
|
174
|
+
# EMXIF
|
175
|
+
|
176
|
+
# FIXME(uwe): Adding the jars triggers the "LinearAlloc exceeded capacity"
|
177
|
+
# bug in Android 2.3. Remove when we stop supporting android-10 and older
|
178
|
+
abort "cannot find your AndroidManifest.xml to extract info from it" unless File.exists? '../../../AndroidManifest.xml'
|
179
|
+
manifest = REXML::Document.new(File.read('../../../AndroidManifest.xml')).root
|
180
|
+
min_sdk_version = manifest.elements['uses-sdk'].attributes['android:minSdkVersion'].to_i
|
181
|
+
if min_sdk_version <= 10
|
182
|
+
FileUtils.rm j
|
183
|
+
next
|
184
|
+
end
|
185
|
+
# EMXIF
|
186
|
+
|
187
|
+
# FIXME(uwe): These should be included but break the 64K method count limit
|
188
|
+
if j =~ /bcpkix-jdk15on-1\.?47|bcprov-jdk15on-1\.?47|jopenssl|kryptcore|kryptproviderjdk/
|
189
|
+
FileUtils.rm j
|
190
|
+
next
|
191
|
+
end
|
192
|
+
# EMXIF
|
193
|
+
|
194
|
+
print "#{File.basename(j).chomp('.jar')}..."
|
195
|
+
system "jar xf #{j}"
|
196
|
+
FileUtils.rm j
|
197
|
+
if ENV['STRIP_INVOKERS']
|
198
|
+
invokers = Dir['**/*$INVOKER$*.class']
|
199
|
+
if invokers.size > 0
|
200
|
+
print "Removing invokers(#{invokers.size})..."
|
201
|
+
FileUtils.rm invokers
|
202
|
+
end
|
203
|
+
populators = Dir['**/*$POPULATOR.class']
|
204
|
+
if populators.size > 0
|
205
|
+
print "Removing populators(#{populators.size})..."
|
206
|
+
FileUtils.rm populators
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
if j =~ %r{json/ext/generator.jar$}
|
211
|
+
jar_load_code = <<-END_CODE
|
212
|
+
require 'jruby'
|
213
|
+
puts 'Starting JSON Generator Service'
|
214
|
+
public
|
215
|
+
Java::json.ext.GeneratorService.new.basicLoad(JRuby.runtime)
|
216
|
+
END_CODE
|
217
|
+
elsif j =~ %r{json/ext/parser.jar$}
|
218
|
+
jar_load_code = <<-END_CODE
|
219
|
+
require 'jruby'
|
220
|
+
puts 'Starting JSON Parser Service'
|
221
|
+
public
|
222
|
+
Java::json.ext.ParserService.new.basicLoad(JRuby.runtime)
|
223
|
+
END_CODE
|
224
|
+
else
|
225
|
+
jar_load_code = ''
|
226
|
+
end
|
227
|
+
|
228
|
+
File.open("#{j}.rb", 'w') { |f| f << jar_load_code }
|
229
|
+
File.open("#{j}.jar.rb", 'w') { |f| f << jar_load_code }
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
############################################################################
|
235
|
+
#
|
236
|
+
# Support for check_dependencies
|
237
|
+
#
|
238
|
+
|
239
|
+
def find_dependencies
|
240
|
+
if File.exists? 'rakefile/ruboto.yml'
|
241
|
+
ruboto_config = (YAML::load_file('rakefile/ruboto.yml') || {})
|
242
|
+
else
|
243
|
+
ruboto_config = {}
|
244
|
+
end
|
245
|
+
ruby_version = ruboto_config['ruby_version'] || "1.9"
|
246
|
+
|
247
|
+
local = StdlibDependencies.collect("src").dependencies
|
248
|
+
stdlib = StdlibDependencies.load('rakelib/stdlib.yml')[ruby_version]
|
249
|
+
|
250
|
+
dependencies = local.values.flatten
|
251
|
+
new_values = []
|
252
|
+
check_values = local.values.flatten
|
253
|
+
|
254
|
+
while check_values.any?
|
255
|
+
check_values.each do |j|
|
256
|
+
new_values += stdlib[j] if stdlib[j]
|
257
|
+
end
|
258
|
+
|
259
|
+
check_values = new_values - dependencies
|
260
|
+
dependencies = dependencies + new_values
|
261
|
+
new_values = []
|
262
|
+
end
|
263
|
+
|
264
|
+
dependencies.map{|d| d.split("/")[0]}.uniq.sort
|
265
|
+
end
|
266
|
+
|