echoe 2.6.4 → 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +4 -0
- data/Manifest +1 -0
- data/README +2 -1
- data/Rakefile +2 -1
- data/lib/echoe.rb +60 -22
- data/lib/echoe/platform.rb +40 -0
- metadata +30 -14
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
|
2
|
+
vSVN. support compiling without extension registration for win32 and java targets.
|
3
|
+
|
4
|
+
v2.7.0. Add coverage task; change default test pattern; Rubygems 0.9.4.5 compatibility and requirement. Cross-packaging hacks for same. Add rubygems_version accessor. Manifest alerts about removed files now as well as added. Allow targeting of every platform on RubyGems 0.9.5.
|
5
|
+
|
2
6
|
v2.6.4. Fix related issue.
|
3
7
|
|
4
8
|
v2.6.3. Fix issue with shared object paths in :compile task.
|
data/Manifest
CHANGED
data/README
CHANGED
@@ -70,13 +70,14 @@ The following tasks are made available to your gem.
|
|
70
70
|
|
71
71
|
Packaging:
|
72
72
|
|
73
|
-
* <tt>manifest</tt> - Build a manifest list.
|
73
|
+
* <tt>manifest</tt> - Build a manifest list. Shows added and removed files.
|
74
74
|
* <tt>docs</tt> - Build the documentation.
|
75
75
|
* <tt>package</tt> - Build all the packages.
|
76
76
|
|
77
77
|
Testing:
|
78
78
|
|
79
79
|
* <tt>test</tt> - Run the test suite.
|
80
|
+
* <tt>coverage</tt> - Generate a coverage report.
|
80
81
|
* <tt>compile</tt> - Compile C extensions, if available.
|
81
82
|
* <tt>clean</tt> - Clean up generated documentation, packaging, and build files.
|
82
83
|
* <tt>install</tt> - Install the gem locally.
|
data/Rakefile
CHANGED
@@ -7,8 +7,9 @@ Echoe.new('echoe') do |p|
|
|
7
7
|
p.summary = 'A tool for packaging Ruby gems.'
|
8
8
|
p.url = 'http://blog.evanweaver.com/files/doc/fauna/echoe/'
|
9
9
|
p.docs_host = 'blog.evanweaver.com:~/www/bax/public/files/doc/'
|
10
|
-
p.dependencies = ['rake', 'rubyforge >=0.4.3', 'highline']
|
10
|
+
p.dependencies = ['rake', 'rubyforge >=0.4.3', 'highline', 'rcov']
|
11
11
|
p.require_signed = true
|
12
|
+
p.rubygems_version = '>= 0.9.4.5'
|
12
13
|
|
13
14
|
# Echoe is self-dependent
|
14
15
|
p.include_gemspec = false
|
data/lib/echoe.rb
CHANGED
@@ -9,9 +9,14 @@ require 'rake/testtask'
|
|
9
9
|
require 'rbconfig'
|
10
10
|
require 'open-uri'
|
11
11
|
require 'highline/import'
|
12
|
+
require 'rcov/rcovtask'
|
13
|
+
|
12
14
|
gem 'rubyforge', '>=0.4.0'
|
13
15
|
require 'rubyforge'
|
14
16
|
|
17
|
+
$LOAD_PATH << File.dirname(__FILE__)
|
18
|
+
require 'echoe/platform'
|
19
|
+
|
15
20
|
=begin rdoc
|
16
21
|
|
17
22
|
Echoe includes some optional accessors for more advanced gem configuration.
|
@@ -56,6 +61,14 @@ Echoe does not force packages to depend on Echoe itself. Instead, it generates a
|
|
56
61
|
|
57
62
|
If you do want metadependencies, add <tt>'echoe'</tt> to the <tt>p.dependencies</tt> array, and set <tt>p.include_rakefile = true</tt> and <tt>p.include_gemspec = false</tt>.
|
58
63
|
|
64
|
+
== Cross-packaging
|
65
|
+
|
66
|
+
Echoe supports platform Rake targets to allow you to cross-package your gems. Just write the spec assuming <tt>RUBY_PLATFORM</tt> will be what you need it to be for each architecture, and then invoke Rake with the platform name when you're cross-packaging.
|
67
|
+
|
68
|
+
For example, on JRuby, <tt>rake package</tt> will build a generic <tt>-ruby</tt> type gem. But if you want to include a Java-specific extension, you can do one of two things. You can package from within JRuby by checking if <tt>RUBY_PLATFORM =~ /java/</tt> and setting <tt>p.platform = jruby</tt>, or you can run <tt>rake java package</tt>, which will set <tt>RUBY_PLATFORM</tt> and <tt>p.platform</tt> for you.
|
69
|
+
|
70
|
+
This way you can run <tt>rake java package</tt>, <tt>rake aix install</tt>, or whatever task you need and Echoe will behave just like you're packaging from within the target platform.
|
71
|
+
|
59
72
|
== Accessor options
|
60
73
|
|
61
74
|
Descriptive options:
|
@@ -76,8 +89,12 @@ Common packaging options:
|
|
76
89
|
|
77
90
|
* <tt>dependencies</tt> - An array of dependencies for this gem. For example, <tt>['mongrel', 'rake >=0.7.1']</tt>.
|
78
91
|
* <tt>extension_pattern</tt> - A filename array, glob array, or regex for extension files that need to be run at install time. Defaults to <tt>"ext/**/extconf.rb"</tt>.
|
92
|
+
|
93
|
+
Testing options:
|
94
|
+
|
79
95
|
* <tt>clean_pattern</tt> - A filename array, glob array, or regex for files that should be removed when <tt>rake clean</tt> is run.
|
80
96
|
* <tt>test_pattern</tt> - A filename array, glob array, or regex for test runners. Overridden by <tt>"test/test_all.rb"</tt>, if it exists.
|
97
|
+
* <tt>rcov_options</tt> - Any extra flags to pass to RCov when coverage reports are run.
|
81
98
|
|
82
99
|
Uncommon packaging options:
|
83
100
|
* <tt>platform</tt> - What platform this gem is for.
|
@@ -126,13 +143,12 @@ class Echoe
|
|
126
143
|
RUBY_FLAGS = ENV['RUBY_FLAGS'] ||
|
127
144
|
"-w -I#{%w(lib ext bin test).join(File::PATH_SEPARATOR)}" +
|
128
145
|
(RUBY_DEBUG ? " #{RUBY_DEBUG}" : '')
|
129
|
-
FILTER = ENV['FILTER'] # for tests (eg FILTER="-n test_blah")
|
130
146
|
|
131
147
|
# user-configurable
|
132
|
-
attr_accessor :author, :changes, :clean_pattern, :description, :email, :dependencies, :need_tgz, :need_tar_gz, :need_gem, :need_zip, :rdoc_pattern, :project, :summary, :test_pattern, :url, :version, :docs_host, :rdoc_template, :manifest_name, :install_message, :extension_pattern, :private_key, :certificate_chain, :require_signed, :ruby_version, :platform, :ignore_pattern, :executable_pattern, :changelog
|
148
|
+
attr_accessor :author, :changes, :clean_pattern, :description, :email, :dependencies, :need_tgz, :need_tar_gz, :need_gem, :need_zip, :rdoc_pattern, :project, :summary, :test_pattern, :url, :version, :docs_host, :rdoc_template, :manifest_name, :install_message, :extension_pattern, :private_key, :certificate_chain, :require_signed, :ruby_version, :platform, :ignore_pattern, :executable_pattern, :changelog, :rcov_options
|
133
149
|
|
134
150
|
# best left alone
|
135
|
-
attr_accessor :name, :lib_files, :test_files, :bin_files, :spec, :rdoc_options, :rubyforge_name, :has_rdoc, :include_gemspec, :include_rakefile, :gemspec_name, :eval, :files, :changelog_patterns
|
151
|
+
attr_accessor :name, :lib_files, :test_files, :bin_files, :spec, :rdoc_options, :rubyforge_name, :has_rdoc, :include_gemspec, :include_rakefile, :gemspec_name, :eval, :files, :changelog_patterns, :rubygems_version
|
136
152
|
|
137
153
|
# legacy
|
138
154
|
attr_accessor :extra_deps, :rdoc_files, :extensions
|
@@ -147,8 +163,8 @@ class Echoe
|
|
147
163
|
self.author = ""
|
148
164
|
self.email = ""
|
149
165
|
self.clean_pattern = ["pkg", "doc", 'build/*', '**/*.o', '**/*.so', '**/*.a', 'lib/*-*', '**/*.log', "{ext,lib}/*.{bundle,so,obj,pdb,lib,def,exp}", "ext/Makefile", "{ext,lib}/**/*.{bundle,so,obj,pdb,lib,def,exp}", "ext/**/Makefile", "pkg", "*.gem", ".config"]
|
150
|
-
self.test_pattern = ['test/**/test_*.rb']
|
151
|
-
self.ignore_pattern = /^(pkg|doc)|\.svn|CVS|\.bzr|\.DS|\.git/
|
166
|
+
self.test_pattern = File.exist?("test/test_all.rb") ? "test/test_all.rb" : ['test/**/test_*.rb']
|
167
|
+
self.ignore_pattern = /^(pkg|doc)|\.svn|CVS|\.bzr|\.DS|\.git/
|
152
168
|
|
153
169
|
self.changelog_patterns = {
|
154
170
|
:version => [
|
@@ -164,9 +180,9 @@ class Echoe
|
|
164
180
|
self.description = ""
|
165
181
|
self.summary = ""
|
166
182
|
self.install_message = nil
|
183
|
+
self.executable_pattern = /^bin\//
|
167
184
|
self.has_rdoc = true
|
168
185
|
self.rdoc_pattern = /^(lib|bin|tasks|ext)|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
|
169
|
-
self.executable_pattern = /^bin\//
|
170
186
|
self.rdoc_options = ['--line-numbers', '--inline-source']
|
171
187
|
self.dependencies = []
|
172
188
|
self.manifest_name = "Manifest"
|
@@ -179,6 +195,7 @@ class Echoe
|
|
179
195
|
self.need_tar_gz = true
|
180
196
|
self.need_tgz = false
|
181
197
|
self.need_zip = false
|
198
|
+
self.platform = $platform
|
182
199
|
|
183
200
|
self.include_rakefile = false
|
184
201
|
self.include_gemspec = true
|
@@ -279,7 +296,8 @@ class Echoe
|
|
279
296
|
s.post_install_message = install_message if install_message
|
280
297
|
s.description = description
|
281
298
|
s.required_ruby_version = ruby_version
|
282
|
-
s.
|
299
|
+
s.required_rubygems_version = rubygems_version if rubygems_version
|
300
|
+
s.platform = platform
|
283
301
|
|
284
302
|
if private_key and File.exist? private_key
|
285
303
|
s.signing_key = private_key
|
@@ -370,11 +388,12 @@ class Echoe
|
|
370
388
|
else
|
371
389
|
raise "Key required, but not found. Maybe you forget to set ENV['GEM_PRIVATE_KEY']?" if require_signed
|
372
390
|
puts "Private key not found; gem will not be signed."
|
373
|
-
end
|
391
|
+
end
|
392
|
+
puts "Targeting \"#{platform}\" platform."
|
374
393
|
end
|
375
394
|
|
376
395
|
desc 'Install the gem'
|
377
|
-
task :install => [:clean, :package] do
|
396
|
+
task :install => [:clean, :package, :uninstall] do
|
378
397
|
system "sudo gem install pkg/*.gem -P MediumSecurity"
|
379
398
|
end
|
380
399
|
|
@@ -445,6 +464,14 @@ class Echoe
|
|
445
464
|
|
446
465
|
end
|
447
466
|
|
467
|
+
### Cross-platform targets
|
468
|
+
|
469
|
+
Gem::Specification::PLATFORM_CROSS_TARGETS.each do |target|
|
470
|
+
task target do
|
471
|
+
reset_target target
|
472
|
+
end
|
473
|
+
end
|
474
|
+
|
448
475
|
### Documentation
|
449
476
|
|
450
477
|
Rake::RDocTask.new(:docs) do |rd|
|
@@ -577,29 +604,40 @@ class Echoe
|
|
577
604
|
files.uniq!
|
578
605
|
|
579
606
|
File.open(manifest_name, 'w').puts(files)
|
580
|
-
|
581
|
-
|
582
|
-
|
607
|
+
|
608
|
+
(files | old_files).sort.each do |file|
|
609
|
+
sign = " "
|
610
|
+
if old_files.include?(file) and !files.include?(file)
|
611
|
+
sign = "-"
|
612
|
+
elsif files.include?(file) and !old_files.include?(file)
|
613
|
+
sign = "+"
|
614
|
+
end
|
615
|
+
puts "#{sign} #{file}"
|
616
|
+
end
|
583
617
|
end
|
584
618
|
|
585
|
-
task :build_manifest =>
|
619
|
+
task :build_manifest => :manifest
|
586
620
|
|
587
|
-
###
|
621
|
+
### Testing
|
588
622
|
|
589
|
-
# XXX unreadable
|
590
623
|
desc 'Run the test suite'
|
591
624
|
task :test do
|
592
|
-
|
593
|
-
"
|
594
|
-
|
595
|
-
|
596
|
-
tests.map! {|f| %Q(require "#{f}")}
|
597
|
-
"#{RUBY_FLAGS} -e '#{tests.join("; ")}' #{FILTER}"
|
598
|
-
end)
|
625
|
+
tests = test_pattern.map do |file|
|
626
|
+
"require \"#{file}\"; "
|
627
|
+
end
|
628
|
+
ruby "#{RUBY_FLAGS} -e '#{tests}'"
|
599
629
|
end
|
600
630
|
|
601
631
|
task :default => :test
|
602
632
|
|
633
|
+
Rcov::RcovTask.new(:coverage) do |t|
|
634
|
+
t.test_files = test_pattern
|
635
|
+
t.rcov_options << rcov_options if rcov_options
|
636
|
+
t.verbose = true
|
637
|
+
end
|
638
|
+
|
639
|
+
task :rcov => :coverage
|
640
|
+
|
603
641
|
end
|
604
642
|
end
|
605
643
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
|
2
|
+
module Gem
|
3
|
+
|
4
|
+
# Overrides for cross packaging, which Rubygems 0.9.5 doesn't do
|
5
|
+
class Specification
|
6
|
+
|
7
|
+
alias :old_validate :validate
|
8
|
+
|
9
|
+
PLATFORM_CROSS_TARGETS = ["aix", "cygwin", "darwin", "freebsd", "hpux", "java", "linux", "mingw", "mswin", "netbsdelf", "openbsd", "solaris", "test", "_platform", "jruby"]
|
10
|
+
|
11
|
+
def validate
|
12
|
+
begin
|
13
|
+
old_validate
|
14
|
+
rescue Gem::InvalidSpecificationException
|
15
|
+
if platform =~ /(#{PLATFORM_CROSS_TARGETS.join("|")})/i
|
16
|
+
true
|
17
|
+
else
|
18
|
+
raise Gem::InvalidSpecificationException, "Unknown package target \"#{platform}\"."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
$platform = "ruby"
|
27
|
+
|
28
|
+
def reset_target target #:nodoc:
|
29
|
+
$platform = target
|
30
|
+
Object.send(:remove_const, "RUBY_PLATFORM")
|
31
|
+
Object.send(:const_set, "RUBY_PLATFORM", target)
|
32
|
+
end
|
33
|
+
|
34
|
+
if target = ARGV.detect do |arg|
|
35
|
+
# Hack to get the platform set before the Rakefile evaluates
|
36
|
+
Gem::Specification::PLATFORM_CROSS_TARGETS.include? arg
|
37
|
+
end
|
38
|
+
reset_target target
|
39
|
+
end
|
40
|
+
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version:
|
2
|
+
rubygems_version: 0.9.4.5
|
3
|
+
specification_version: 2
|
4
4
|
name: echoe
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 2.
|
7
|
-
date: 2007-10-
|
6
|
+
version: 2.7.0
|
7
|
+
date: 2007-10-25 00:00:00 -04:00
|
8
8
|
summary: A tool for packaging Ruby gems.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -16,11 +16,17 @@ autorequire:
|
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|
18
18
|
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::
|
19
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- - "
|
21
|
+
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.9.4.5
|
24
30
|
version:
|
25
31
|
platform: ruby
|
26
32
|
signing_key:
|
@@ -52,6 +58,7 @@ authors:
|
|
52
58
|
- Evan Weaver
|
53
59
|
files:
|
54
60
|
- CHANGELOG
|
61
|
+
- lib/echoe/platform.rb
|
55
62
|
- lib/echoe.rb
|
56
63
|
- LICENSE
|
57
64
|
- Manifest
|
@@ -75,16 +82,16 @@ dependencies:
|
|
75
82
|
- !ruby/object:Gem::Dependency
|
76
83
|
name: rake
|
77
84
|
version_requirement:
|
78
|
-
version_requirements: !ruby/object:Gem::
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
86
|
requirements:
|
80
|
-
- - "
|
87
|
+
- - ">="
|
81
88
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0
|
89
|
+
version: "0"
|
83
90
|
version:
|
84
91
|
- !ruby/object:Gem::Dependency
|
85
92
|
name: rubyforge
|
86
93
|
version_requirement:
|
87
|
-
version_requirements: !ruby/object:Gem::
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
95
|
requirements:
|
89
96
|
- - ">="
|
90
97
|
- !ruby/object:Gem::Version
|
@@ -93,9 +100,18 @@ dependencies:
|
|
93
100
|
- !ruby/object:Gem::Dependency
|
94
101
|
name: highline
|
95
102
|
version_requirement:
|
96
|
-
version_requirements: !ruby/object:Gem::
|
103
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
104
|
requirements:
|
98
|
-
- - "
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: "0"
|
108
|
+
version:
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: rcov
|
111
|
+
version_requirement:
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
99
115
|
- !ruby/object:Gem::Version
|
100
|
-
version: 0
|
116
|
+
version: "0"
|
101
117
|
version:
|
metadata.gz.sig
CHANGED
Binary file
|