buildr4osgi 0.9.3 → 0.9.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.
- data/buildr4osgi.gemspec +1 -1
- data/lib/buildr4osgi/compile/external.rb +7 -5
- data/lib/buildr4osgi/eclipse/feature.rb +28 -14
- data/lib/buildr4osgi/eclipse/p2.rb +34 -67
- data/lib/buildr4osgi/osgi/packaging.rb +141 -15
- data/lib/buildr4osgi/osgi/project_extension.rb +27 -7
- data/lib/buildr4osgi/osgi/registry.rb +14 -1
- data/lib/buildr4osgi/osgi/resolving_strategies.rb +2 -2
- data/rakelib/all-in-one.rake +9 -2
- data/rakelib/checks.rake +1 -1
- data/rakelib/doc.rake +7 -0
- data/rakelib/package.rake +1 -1
- data/rakelib/release.rake +6 -6
- data/rakelib/rspec.rake +6 -3
- data/rakelib/setup.rake +14 -2
- data/rakelib/stage.rake +11 -5
- data/spec/compile/external_spec.rb +1 -1
- data/spec/eclipse/feature_spec.rb +64 -6
- data/spec/osgi/packaging_spec.rb +75 -1
- data/spec/tmp/remote/eclipse/org.eclipse.debug.ui/3.4.1.v20080811_r341/org.eclipse.debug.ui-3.4.1.v20080811_r341.jar +0 -0
- data/spec/tmp/remote/eclipse/org.eclipse.debug.ui/3.4.1.v20080811_r341/org.eclipse.debug.ui-3.4.1.v20080811_r341.pom +82 -0
- data/spec/tmp/remote/log4j/log4j/1.2.15/log4j-1.2.15.jar +0 -0
- data/spec/tmp/remote/log4j/log4j/1.2.15/log4j-1.2.15.pom +478 -0
- data/spec/tmp/remote/org/slf4j/jcl104-over-slf4j/1.5.8/jcl104-over-slf4j-1.5.8-sources.jar +0 -0
- data/spec/tmp/remote/org/slf4j/jcl104-over-slf4j/1.5.8/jcl104-over-slf4j-1.5.8.jar +0 -0
- data/spec/tmp/remote/org/slf4j/jcl104-over-slf4j/1.5.8/jcl104-over-slf4j-1.5.8.pom +30 -0
- data/spec/tmp/remote/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8-sources.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.pom +101 -0
- data/spec/tmp/remote/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8-sources.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8.pom +56 -0
- metadata +15 -2
@@ -118,6 +118,23 @@ module OSGi
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
end
|
121
|
+
|
122
|
+
class InstallBundlesTask < Rake::Task #:nodoc:
|
123
|
+
attr_accessor :project
|
124
|
+
def initialize(*args) #:nodoc:
|
125
|
+
super
|
126
|
+
enhance do |task|
|
127
|
+
puts "Deploy directory: #{OSGi.registry.release_to}/plugins"
|
128
|
+
mkpath "#{OSGi.registry.release_to}/plugins"
|
129
|
+
project.projects.each do |subp|
|
130
|
+
subp.packages.select {|package| package.is_a?(::OSGi::BundlePackaging)}.each do |package|
|
131
|
+
puts "Deploying #{subp.artifact(package)} to #{OSGi.registry.release_to}"
|
132
|
+
cp(subp.artifact(package).to_s, "#{OSGi.registry.release_to}/plugins")
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
121
138
|
|
122
139
|
class InstallTask < Rake::Task #:nodoc:
|
123
140
|
include BundleCollector
|
@@ -168,6 +185,7 @@ module OSGi
|
|
168
185
|
if local
|
169
186
|
artifact = Buildr::artifact(bundle.to_s)
|
170
187
|
installed = Buildr.repositories.locate(artifact)
|
188
|
+
rm_r installed
|
171
189
|
mkpath File.dirname(installed)
|
172
190
|
Buildr::artifact(bundle.to_s).from(bundle.file).install
|
173
191
|
info "Installed #{installed}"
|
@@ -197,6 +215,8 @@ module OSGi
|
|
197
215
|
Project.local_task('osgi:upload:dependencies') { |name| "Upload dependencies for #{name}" }
|
198
216
|
desc 'Cleans the dependencies.yml file'
|
199
217
|
Project.local_task('osgi:clean:dependencies') {|name| "Clean dependencies for #{name}"}
|
218
|
+
desc 'Installs the bundle projects into an OSGi repository'
|
219
|
+
Project.local_task('osgi:install:bundles') {|name| "Install bundles for #{name}"}
|
200
220
|
end
|
201
221
|
|
202
222
|
before_define do |project|
|
@@ -211,9 +231,11 @@ module OSGi
|
|
211
231
|
|
212
232
|
clean = Rake::Task.define_task('osgi:clean:dependencies').enhance do
|
213
233
|
Buildr::write File.join(project.base_dir, "dependencies.yml"),
|
214
|
-
project.projects.inject({}) {|hash, p| hash.merge({p.name =>
|
234
|
+
project.projects.inject({}) {|hash, p| hash.merge({p.name => {}})}.merge({project.name => {}}).to_yaml
|
215
235
|
end
|
216
|
-
|
236
|
+
|
237
|
+
install_bundles = InstallBundlesTask.define_task('osgi:install:bundles')
|
238
|
+
install_bundles.project = project
|
217
239
|
end
|
218
240
|
|
219
241
|
#
|
@@ -239,10 +261,8 @@ module OSGi
|
|
239
261
|
# Code copied straight from Bundle.fromProject
|
240
262
|
packaging = project.packages.select {|package| package.is_a?(BundlePackaging)}
|
241
263
|
raise "More than one bundle packaging is defined over the project #{project.id}, see BOSGI-16." if packaging.size > 1
|
242
|
-
|
243
|
-
m
|
244
|
-
m.main.merge!(manifest)
|
245
|
-
m.main.merge!(packaging.first.manifest)
|
264
|
+
m = ::Buildr::Packaging::Java::Manifest.new(File.exists?(project.path_to("META-INF/MANIFEST.MF")) ? File.read(project.path_to("META-INF/MANIFEST.MF")) : nil)
|
265
|
+
m.main.merge!(packaging.first.manifest) unless packaging.empty?
|
246
266
|
(Manifest.read(m.to_s).first["Bundle-RequiredExecutionEnvironment"] || {}).keys.compact.flatten.collect {|ee| OSGi.options.available_ee[ee]}
|
247
267
|
end
|
248
268
|
|
@@ -254,4 +274,4 @@ module Buildr #:nodoc:
|
|
254
274
|
class Project #:nodoc:
|
255
275
|
include OSGi::ProjectExtension
|
256
276
|
end
|
257
|
-
end
|
277
|
+
end
|
@@ -45,6 +45,19 @@ module OSGi
|
|
45
45
|
#
|
46
46
|
class Registry
|
47
47
|
|
48
|
+
def release_to
|
49
|
+
unless @release_to
|
50
|
+
prefs = Buildr.settings.build
|
51
|
+
@release_to = prefs['osgi']['release_to'].strip unless prefs['osgi'].nil? || prefs['osgi']['release_to'].nil?
|
52
|
+
@release_to ||= "#{ENV['HOME']}/.m2/osgi"
|
53
|
+
end
|
54
|
+
@release_to
|
55
|
+
end
|
56
|
+
|
57
|
+
def release_to=(release_to)
|
58
|
+
@release_to = release_to
|
59
|
+
end
|
60
|
+
|
48
61
|
#
|
49
62
|
# Sets the containers of the registry
|
50
63
|
# Raises an exception if containers have been resolved already.
|
@@ -122,4 +135,4 @@ module OSGi
|
|
122
135
|
@registry ||= ::OSGi::Registry.new
|
123
136
|
end
|
124
137
|
|
125
|
-
end
|
138
|
+
end
|
@@ -32,7 +32,7 @@ module OSGi #:nodoc:
|
|
32
32
|
puts "This package #{package} is exported by all the bundles present.\n" +
|
33
33
|
"Choose a bundle amongst those presented or press A to select them all:\n" + bundles.sort! {|a, b| a.version <=> b.version }.
|
34
34
|
collect {|b| "\t#{bundles.index(b) +1}. #{b.name} #{b.version}"}.join("\n")
|
35
|
-
number = gets.chomp
|
35
|
+
number = $stdin.gets.chomp
|
36
36
|
begin
|
37
37
|
return bundles if (number == 'A')
|
38
38
|
number = number.to_i
|
@@ -104,4 +104,4 @@ module OSGi #:nodoc:
|
|
104
104
|
|
105
105
|
module_function :latest, :oldest, :prompt
|
106
106
|
end
|
107
|
-
end
|
107
|
+
end
|
data/rakelib/all-in-one.rake
CHANGED
@@ -55,7 +55,7 @@ task "all-in-one" => :gem do
|
|
55
55
|
# Install Buildr gem and dependencies
|
56
56
|
lambda do
|
57
57
|
puts "Install Buildr gem ..."
|
58
|
-
sh "bin/jruby", '-S', 'gem', 'install', FileList['../../pkg/*-java.gem'].first,
|
58
|
+
sh "bin/jruby", '-S', 'gem', 'install', FileList['../../pkg/*-java.gem'].first,
|
59
59
|
'--no-rdoc', '--no-ri'
|
60
60
|
puts "[X] Install Buildr gem"
|
61
61
|
end.call
|
@@ -70,12 +70,19 @@ task "all-in-one" => :gem do
|
|
70
70
|
lambda do
|
71
71
|
puts "Zipping distribution ..."
|
72
72
|
cd '..'
|
73
|
-
new_dir = "#{spec.name}-#{spec.version}
|
73
|
+
new_dir = "#{spec.name}-#{spec.version}"
|
74
74
|
mv dir, new_dir
|
75
75
|
zip = "#{new_dir}.zip"
|
76
76
|
rm zip if File.exist? zip
|
77
77
|
sh 'zip', '-q', '-r', zip, new_dir
|
78
78
|
puts "[X] Zipped distribution"
|
79
|
+
|
80
|
+
puts "Tarring distribution ..."
|
81
|
+
tar = "#{new_dir}.tar.gz"
|
82
|
+
rm tar if File.exist? tar
|
83
|
+
sh 'tar', 'czf', tar, new_dir
|
84
|
+
puts "[X] Tarred distribution"
|
85
|
+
|
79
86
|
rm_rf new_dir
|
80
87
|
end.call
|
81
88
|
|
data/rakelib/checks.rake
CHANGED
@@ -18,7 +18,7 @@ desc "Check that source files contain the Apache license"
|
|
18
18
|
task :license=>FileList["**/*.{rb,rake,java,gemspec,buildfile}", 'Rakefile'] do |task|
|
19
19
|
puts "Checking that files contain the Apache license ... "
|
20
20
|
required = task.prerequisites.select { |fn| File.file?(fn) }
|
21
|
-
missing = required.reject { |fn|
|
21
|
+
missing = required.reject { |fn|
|
22
22
|
comments = File.read(fn).scan(/(\/\*(.*?)\*\/)|^#\s+(.*?)$|^-#\s+(.*?)$|<!--(.*?)-->/m).
|
23
23
|
map { |match| match.compact }.flatten.join("\n")
|
24
24
|
comments =~ /Licensed to the Apache Software Foundation/ && comments =~ /http:\/\/www.apache.org\/licenses\/LICENSE-2.0/
|
data/rakelib/doc.rake
CHANGED
@@ -71,6 +71,13 @@ task :site=>['_site', :rdoc, '_reports/specs.html', '_reports/coverage', 'buildr
|
|
71
71
|
cp_r '_reports/coverage', '_site'
|
72
72
|
fail 'No coverage report in site directory' unless File.exist?('_site/coverage/index.html')
|
73
73
|
cp 'CHANGELOG', '_site'
|
74
|
+
open("_site/.htaccess", "w") do |htaccess|
|
75
|
+
htaccess << %Q{
|
76
|
+
<FilesMatch "CHANGELOG">
|
77
|
+
ForceType 'text/plain; charset=UTF-8'
|
78
|
+
</FilesMatch>
|
79
|
+
}
|
80
|
+
end
|
74
81
|
cp 'buildr.pdf', '_site'
|
75
82
|
fail 'No PDF in site directory' unless File.exist?('_site/buildr.pdf')
|
76
83
|
puts 'OK'
|
data/rakelib/package.rake
CHANGED
@@ -67,7 +67,7 @@ task :snapshot=>[:package] do
|
|
67
67
|
cp FileList['pkg/{*.gem,*.tgz,*.zip}'], '_snapshot/gems'
|
68
68
|
puts "Generating gem index ..."
|
69
69
|
sh 'gem', 'generate_index', '--directory', '_snapshot'
|
70
|
-
puts "Copying gem and index back to Apache"
|
70
|
+
puts "Copying gem and index back to Apache"
|
71
71
|
sh 'rsync', '--progress', '--recursive', '_snapshot/', 'people.apache.org:public_html/buildr/snapshot/'
|
72
72
|
end
|
73
73
|
task(:clobber) { rm_rf '_snapshot' }
|
data/rakelib/release.rake
CHANGED
@@ -66,7 +66,7 @@ task :release do
|
|
66
66
|
# Create an SVN tag for this release.
|
67
67
|
lambda do
|
68
68
|
info = `svn info` + `git svn info` # Using either svn or git-svn
|
69
|
-
if url = info[/^URL:/] && info.scan(/^URL: (.*)/)[0][0]
|
69
|
+
if url = info[/^URL:/] && info.scan(/^URL: (.*)/)[0][0]
|
70
70
|
new_url = url.sub(/(trunk$)|(branches\/\w*)$/, "tags/#{spec.version}")
|
71
71
|
unless url == new_url
|
72
72
|
sh 'svn', 'copy', url, new_url, '-m', "Release #{spec.version}" do |ok, res|
|
@@ -83,7 +83,7 @@ task :release do
|
|
83
83
|
|
84
84
|
|
85
85
|
# Update CHANGELOG to next release number.
|
86
|
-
lambda do
|
86
|
+
lambda do
|
87
87
|
next_version = spec.version.to_s.split('.').map { |v| v.to_i }.
|
88
88
|
zip([0, 0, 1]).map { |a| a.inject(0) { |t,i| t + i } }.join('.')
|
89
89
|
modified = "#{next_version} (Pending)\n\n" + File.read('CHANGELOG')
|
@@ -92,7 +92,7 @@ task :release do
|
|
92
92
|
end
|
93
93
|
puts "[X] Updated CHANGELOG and added entry for next release"
|
94
94
|
end.call
|
95
|
-
|
95
|
+
|
96
96
|
|
97
97
|
# Update source files to next release number.
|
98
98
|
lambda do
|
@@ -101,7 +101,7 @@ task :release do
|
|
101
101
|
|
102
102
|
ver_file = "lib/#{spec.name}.rb"
|
103
103
|
if File.exist?(ver_file)
|
104
|
-
modified = File.read(ver_file).sub(/(VERSION\s*=\s*)(['"])(.*)\2/) { |line| "#{$1}#{$2}#{next_version}#{$2}" }
|
104
|
+
modified = File.read(ver_file).sub(/(VERSION\s*=\s*)(['"])(.*)\2/) { |line| "#{$1}#{$2}#{next_version}#{$2}" }
|
105
105
|
File.open ver_file, 'w' do |file|
|
106
106
|
file.write modified
|
107
107
|
end
|
@@ -110,7 +110,7 @@ task :release do
|
|
110
110
|
|
111
111
|
spec_file = "#{spec.name}.gemspec"
|
112
112
|
if File.exist?(spec_file)
|
113
|
-
modified = File.read(spec_file).sub(/(s(?:pec)?\.version\s*=\s*)(['"])(.*)\2/) { |line| "#{$1}#{$2}#{next_version}#{$2}" }
|
113
|
+
modified = File.read(spec_file).sub(/(s(?:pec)?\.version\s*=\s*)(['"])(.*)\2/) { |line| "#{$1}#{$2}#{next_version}#{$2}" }
|
114
114
|
File.open spec_file, 'w' do |file|
|
115
115
|
file.write modified
|
116
116
|
end
|
@@ -118,7 +118,7 @@ task :release do
|
|
118
118
|
end
|
119
119
|
end.call
|
120
120
|
|
121
|
-
|
121
|
+
|
122
122
|
# Prepare release announcement email.
|
123
123
|
lambda do
|
124
124
|
changes = File.read("_release/#{spec.version}/CHANGES")[/.*?\n(.*)/m, 1]
|
data/rakelib/rspec.rake
CHANGED
@@ -20,24 +20,27 @@ begin
|
|
20
20
|
|
21
21
|
desc "Run all specs"
|
22
22
|
Spec::Rake::SpecTask.new :spec=>['_reports', :compile] do |task|
|
23
|
+
ENV['USE_FSC'] = 'no'
|
23
24
|
task.spec_files = FileList['spec/**/*_spec.rb']
|
24
25
|
task.spec_files.exclude('spec/groovy/*') if RUBY_PLATFORM[/java/]
|
25
|
-
task.spec_opts = %w{--format specdoc --format failing_examples:failed --format html:_reports/specs.html --backtrace}
|
26
|
+
task.spec_opts = %w{--format specdoc --format failing_examples:failed --format html:_reports/specs.html --backtrace}
|
26
27
|
task.spec_opts << '--colour' if $stdout.isatty
|
27
28
|
end
|
28
29
|
file('_reports/specs.html') { task(:spec).invoke }
|
29
30
|
|
30
31
|
desc 'Run all failed examples from previous run'
|
31
32
|
Spec::Rake::SpecTask.new :failed do |task|
|
33
|
+
ENV['USE_FSC'] = 'no'
|
32
34
|
task.spec_files = FileList['spec/**/*_spec.rb']
|
33
|
-
task.spec_opts = %w{--format specdoc --format failing_examples:failed --example failed --backtrace}
|
35
|
+
task.spec_opts = %w{--format specdoc --format failing_examples:failed --example failed --backtrace}
|
34
36
|
task.spec_opts << '--colour' if $stdout.isatty
|
35
37
|
end
|
36
38
|
|
37
39
|
desc 'Run RSpec and generate Spec and coverage reports (slow)'
|
38
40
|
Spec::Rake::SpecTask.new :coverage=>['_reports', :compile] do |task|
|
41
|
+
ENV['USE_FSC'] = 'no'
|
39
42
|
task.spec_files = FileList['spec/**/*_spec.rb']
|
40
|
-
task.spec_opts = %W{--format progress --format failing_examples:failed --format html:_reports/specs.html --backtrace}
|
43
|
+
task.spec_opts = %W{--format progress --format failing_examples:failed --format html:_reports/specs.html --backtrace}
|
41
44
|
task.spec_opts << '--colour' if $stdout.isatty
|
42
45
|
task.rcov = true
|
43
46
|
task.rcov_dir = '_reports/coverage'
|
data/rakelib/setup.rake
CHANGED
@@ -35,7 +35,14 @@ def install_gem(name, options = {})
|
|
35
35
|
args = []
|
36
36
|
args << 'sudo' << 'env' << "JAVA_HOME=#{ENV['JAVA_HOME']}" if sudo_needed? and RAKE_SUDO
|
37
37
|
args << rb_bin << '-S' << 'gem' << 'install' << name
|
38
|
-
|
38
|
+
|
39
|
+
if (spec.respond_to? :requirement)
|
40
|
+
args << '--version' << dep.requirement.to_s
|
41
|
+
else
|
42
|
+
# Dependency.version_requirements deprecated in rubygems 1.3.6
|
43
|
+
args << '--version' << dep.version_requirements.to_s
|
44
|
+
end
|
45
|
+
|
39
46
|
args << '--source' << options[:source] if options[:source]
|
40
47
|
args << '--source' << 'http://gems.rubyforge.org'
|
41
48
|
args << '--install-dir' << ENV['GEM_HOME'] if ENV['GEM_HOME']
|
@@ -49,6 +56,11 @@ desc "If you're building from sources, run this task first to setup the necessar
|
|
49
56
|
task :setup do
|
50
57
|
missing = spec.dependencies.select { |dep| Gem::SourceIndex.from_installed_gems.search(dep).empty? }
|
51
58
|
missing.each do |dep|
|
52
|
-
|
59
|
+
if (spec.respond_to? :requirement)
|
60
|
+
install_gem dep.name, :version=>dep.requirement
|
61
|
+
else
|
62
|
+
# Dependency.version_requirements deprecated in rubygems 1.3.6
|
63
|
+
install_gem dep.name, :version=>dep.version_requirements
|
64
|
+
end
|
53
65
|
end
|
54
66
|
end
|
data/rakelib/stage.rake
CHANGED
@@ -23,6 +23,7 @@ rescue LoadError
|
|
23
23
|
task(:setup) { install_gem 'rubyforge' }
|
24
24
|
end
|
25
25
|
|
26
|
+
gpg_cmd = 'gpg2'
|
26
27
|
|
27
28
|
task :prepare do |task, args|
|
28
29
|
# Make sure we're doing a release from checked code.
|
@@ -47,7 +48,12 @@ task :prepare do |task, args|
|
|
47
48
|
# Need GPG to sign the packages.
|
48
49
|
lambda do
|
49
50
|
args.gpg or fail "Please run with gpg=<argument for gpg --local-user>"
|
50
|
-
|
51
|
+
gpg_ok = `gpg2 --list-keys #{args.gpg}`
|
52
|
+
if !$?.success?
|
53
|
+
gpg_ok = `gpg --list-keys #{args.gpg}`
|
54
|
+
gpg_cmd = 'gpg'
|
55
|
+
end
|
56
|
+
fail "No GPG user #{args.gpg}" if gpg_ok.empty?
|
51
57
|
end.call
|
52
58
|
|
53
59
|
task(:license).invoke
|
@@ -73,7 +79,7 @@ task :prepare do |task, args|
|
|
73
79
|
lambda do
|
74
80
|
puts "[!] Make sure you have admin privileges to make a release on RubyForge"
|
75
81
|
rubyforge = RubyForge.new.configure
|
76
|
-
rubyforge.login
|
82
|
+
rubyforge.login
|
77
83
|
rubyforge.scrape_project(spec.name)
|
78
84
|
end.call
|
79
85
|
|
@@ -106,12 +112,12 @@ task :stage=>['setup', 'doc:setup', :clobber, :prepare] do |task, args|
|
|
106
112
|
task(:package).invoke
|
107
113
|
mkpath '_staged/dist'
|
108
114
|
FileList['pkg/*.{gem,zip,tgz}'].each do |source|
|
109
|
-
pkg = source.pathmap('_staged/dist/%n%x')
|
115
|
+
pkg = source.pathmap('_staged/dist/%n%x')
|
110
116
|
cp source, pkg
|
111
117
|
bytes = File.open(pkg, 'rb') { |file| file.read }
|
112
118
|
File.open(pkg + '.md5', 'w') { |file| file.write Digest::MD5.hexdigest(bytes) << ' ' << File.basename(pkg) }
|
113
119
|
File.open(pkg + '.sha1', 'w') { |file| file.write Digest::SHA1.hexdigest(bytes) << ' ' << File.basename(pkg) }
|
114
|
-
sh
|
120
|
+
sh gpg_cmd, '--local-user', args.gpg, '--armor', '--output', pkg + '.asc', '--detach-sig', pkg, :verbose=>true
|
115
121
|
end
|
116
122
|
cp 'etc/KEYS', '_staged/dist'
|
117
123
|
puts "[X] Created and signed release packages in _staged/dist"
|
@@ -162,7 +168,7 @@ p>. ("Release signing keys":#{official}/KEYS)
|
|
162
168
|
sh 'rsync', '--progress', '--recursive', '_staged/', url
|
163
169
|
puts "[X] Uploaded _staged directory to #{url}"
|
164
170
|
end.call
|
165
|
-
|
171
|
+
|
166
172
|
|
167
173
|
# Prepare a release vote email. In the distant future this will also send the
|
168
174
|
# email for you and vote on it.
|
@@ -21,13 +21,13 @@ describe Buildr4OSGi::CompilerSupport::ExternalC do
|
|
21
21
|
before :all do
|
22
22
|
Buildr::Compiler.compilers.delete Buildr::Compiler::Javac
|
23
23
|
Buildr::Compiler.compilers.delete Buildr4OSGi::CompilerSupport::OSGiC
|
24
|
+
raise "ENV['EXTERNAL_COMPILER'] is not defined !" unless ENV['EXTERNAL_COMPILER']
|
24
25
|
end
|
25
26
|
|
26
27
|
describe "should compile a Java project just in the same way javac does" do
|
27
28
|
javac_spec = File.read(File.join(File.dirname(__FILE__), "..", "..", "buildr", "spec", "java", "compiler_spec.rb"))
|
28
29
|
javac_spec = javac_spec.match(Regexp.escape("require File.join(File.dirname(__FILE__), '../spec_helpers')\n")).post_match
|
29
30
|
javac_spec.gsub!("javac", "externalc")
|
30
|
-
javac_spec.gsub!("nowarn", "warn:none")
|
31
31
|
eval(javac_spec)
|
32
32
|
end
|
33
33
|
|
@@ -241,10 +241,10 @@ describe Buildr4OSGi::FeatureTask, " when running" do
|
|
241
241
|
f = @foo.package(:feature)
|
242
242
|
f.plugins.clear
|
243
243
|
@bar = define("bar", :version => "1.0.0") do
|
244
|
-
package(:jar).with :manifest => {"Bundle-SymbolicName" => "bar", "Bundle-Version" => "1.0.0"}
|
244
|
+
package(:jar).with :manifest => {"Bundle-SymbolicName" => "bar", "Bundle-Version" => "1.0.0", "Eclipse-BundleShape" => "dir"}
|
245
245
|
end
|
246
246
|
f.plugins.<< DEBUG_UI, :unjarred => true
|
247
|
-
f.plugins.<< @bar
|
247
|
+
f.plugins.<< @bar
|
248
248
|
@foo.package(:feature).invoke
|
249
249
|
feature_file = @foo.package(:feature).to_s
|
250
250
|
File.exists?(feature_file).should be_true
|
@@ -254,6 +254,29 @@ describe Buildr4OSGi::FeatureTask, " when running" do
|
|
254
254
|
end
|
255
255
|
end
|
256
256
|
|
257
|
+
it "should let the user tell which plugins should be unjarred from the plugin manifests" do
|
258
|
+
Buildr::write "bar/META-INF/MANIFEST.MF", <<-MANIFEST
|
259
|
+
Bundle-SymbolicName: bar
|
260
|
+
Bundle-Version: 1.0.0
|
261
|
+
Eclipse-BundleShape: dir
|
262
|
+
|
263
|
+
MANIFEST
|
264
|
+
f = @foo.package(:feature)
|
265
|
+
f.plugins.clear
|
266
|
+
@bar = define("bar", :version => "1.0.0", :base_dir => "bar") do
|
267
|
+
package(:bundle)
|
268
|
+
end
|
269
|
+
#f.plugins.<< DEBUG_UI, :unjarred => true
|
270
|
+
f.plugins.<< @bar
|
271
|
+
@foo.package(:feature).invoke
|
272
|
+
feature_file = @foo.package(:feature).to_s
|
273
|
+
File.exists?(feature_file).should be_true
|
274
|
+
Zip::ZipFile.open(feature_file) do |zip|
|
275
|
+
#zip.find_entry("eclipse/plugins/org.eclipse.debug.ui_3.4.1.v20080811_r341/META-INF/MANIFEST.MF").should_not be_nil
|
276
|
+
zip.find_entry("eclipse/plugins/bar_1.0.0/META-INF/MANIFEST.MF").should_not be_nil
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
257
280
|
end
|
258
281
|
|
259
282
|
describe Buildr4OSGi::FeatureTask, " package subprojects" do
|
@@ -300,7 +323,7 @@ end
|
|
300
323
|
|
301
324
|
describe Buildr4OSGi::FeatureTask, "packaged as SDK" do
|
302
325
|
|
303
|
-
|
326
|
+
it "should create a jar file with the subproject packaged as a folder inside it when unjarred option is set" do
|
304
327
|
Buildr::write "bar/src/main/java/Hello.java", "public class Hello {}"
|
305
328
|
@container = define("container") do
|
306
329
|
project.group = "grp"
|
@@ -325,9 +348,44 @@ describe Buildr4OSGi::FeatureTask, "packaged as SDK" do
|
|
325
348
|
{:url => "http://example.com/upup", :name => "My update site in case"}]
|
326
349
|
package(:sources)
|
327
350
|
end
|
351
|
+
@foo.package(:sources).invoke
|
352
|
+
feature_file = @foo.package(:sources).to_s
|
353
|
+
File.exists?(feature_file).should be_true
|
354
|
+
Zip::ZipFile.open(feature_file) do |zip|
|
355
|
+
zip.find_entry("eclipse/features/foo.sources_1.0.0/feature.xml").should_not be_nil
|
356
|
+
zip.find_entry("eclipse/features/foo.sources_1.0.0/feature.properties").should_not be_nil
|
357
|
+
zip.find_entry("eclipse/plugins/bar.sources_1.0.0.jar").should be_nil
|
358
|
+
zip.find_entry("eclipse/plugins/bar.sources_1.0.0").directory?.should be_true
|
359
|
+
zip.find_entry("eclipse/plugins/bar.sources_1.0.0/Hello.java").should_not be_nil
|
360
|
+
|
361
|
+
end
|
328
362
|
end
|
329
363
|
|
330
|
-
it "should create a jar file with the subproject packaged as a
|
364
|
+
it "should create a jar file with the subproject packaged as a folder inside it when the Eclipse-BundleShape entry is set to dir" do
|
365
|
+
Buildr::write "bar/src/main/java/Hello.java", "public class Hello {}"
|
366
|
+
@container = define("container") do
|
367
|
+
project.group = "grp"
|
368
|
+
@bar = define("bar", :version => "1.0.0") do
|
369
|
+
package(:bundle).manifest.merge!({"Eclipse-BundleShape" => "dir"})
|
370
|
+
package(:sources)
|
371
|
+
end
|
372
|
+
end
|
373
|
+
@foo = define("foo", :version => "1.0.0") do
|
374
|
+
|
375
|
+
f = package(:feature)
|
376
|
+
f.plugins.<< project("container:bar")
|
377
|
+
f.label = "My feature"
|
378
|
+
f.provider = "Acme Inc"
|
379
|
+
f.description = "The best feature ever"
|
380
|
+
f.changesURL = "http://example.com/changes"
|
381
|
+
f.license = "The license is too long to explain"
|
382
|
+
f.licenseURL = "http://example.com/license"
|
383
|
+
f.branding_plugin = "com.musal.ui"
|
384
|
+
f.update_sites << {:url => "http://example.com/update", :name => "My update site"}
|
385
|
+
f.discovery_sites = [{:url => "http://example.com/update2", :name => "My update site2"},
|
386
|
+
{:url => "http://example.com/upup", :name => "My update site in case"}]
|
387
|
+
package(:sources)
|
388
|
+
end
|
331
389
|
@foo.package(:sources).invoke
|
332
390
|
feature_file = @foo.package(:sources).to_s
|
333
391
|
File.exists?(feature_file).should be_true
|
@@ -340,14 +398,13 @@ describe Buildr4OSGi::FeatureTask, "packaged as SDK" do
|
|
340
398
|
|
341
399
|
end
|
342
400
|
end
|
343
|
-
|
344
|
-
|
345
401
|
end
|
346
402
|
|
347
403
|
describe Buildr4OSGi::FeatureTask, "packaged as SDK, detecting the OSGi headers from the original build" do
|
348
404
|
|
349
405
|
before do
|
350
406
|
Buildr::write "bar/src/main/java/Hello.java", "public class Hello {}"
|
407
|
+
|
351
408
|
@container = define("container") do
|
352
409
|
project.group = "grp"
|
353
410
|
@bar = define("bar", :version => "1.0.0") do
|
@@ -374,6 +431,7 @@ describe Buildr4OSGi::FeatureTask, "packaged as SDK, detecting the OSGi headers
|
|
374
431
|
end
|
375
432
|
|
376
433
|
it "should create a jar file with the subproject packaged as a jar inside it" do
|
434
|
+
project("container:bar").package(:jar).invoke
|
377
435
|
@foo.package(:sources).invoke
|
378
436
|
feature_file = @foo.package(:sources).to_s
|
379
437
|
File.exists?(feature_file).should be_true
|