reap 6.0.2 → 9.2.0
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/CHANGES +6 -0
- data/COPYING +666 -395
- data/MANIFEST +139 -0
- data/NOTES +12 -0
- data/README +19 -163
- data/bin/reap-announce +7 -0
- data/bin/reap-check-load +8 -0
- data/bin/reap-check-syntax +7 -0
- data/bin/reap-clean +7 -0
- data/bin/reap-clobber +7 -0
- data/bin/reap-doc +7 -0
- data/bin/reap-doc-rdoc +7 -0
- data/bin/reap-doc-ri +7 -0
- data/bin/reap-init +69 -0
- data/bin/reap-inspect +7 -0
- data/bin/reap-install +8 -0
- data/bin/reap-install-gem +8 -0
- data/bin/reap-log +7 -0
- data/bin/reap-log-changes +8 -0
- data/bin/reap-log-notes +8 -0
- data/bin/reap-make +7 -0
- data/bin/reap-make-clean +7 -0
- data/bin/reap-make-distclean +7 -0
- data/bin/reap-make-extconf +7 -0
- data/bin/reap-make-static +8 -0
- data/bin/reap-package +8 -0
- data/bin/reap-package-gem +7 -0
- data/bin/reap-package-tgz +7 -0
- data/bin/reap-package-zip +7 -0
- data/bin/reap-prepare +7 -0
- data/bin/reap-publish +7 -0
- data/bin/reap-release +7 -0
- data/bin/reap-scaffold +8 -0
- data/bin/reap-scm-branch +7 -0
- data/bin/reap-scm-tag +7 -0
- data/bin/reap-spec +7 -0
- data/bin/reap-spec-doc +8 -0
- data/bin/reap-stamp +7 -0
- data/bin/reap-stats +7 -0
- data/bin/reap-test +7 -0
- data/bin/reap-test-cross +7 -0
- data/bin/reap-test-load +9 -0
- data/bin/reap-test-solo +7 -0
- data/bin/reap-uninstall +7 -0
- data/bin/reap-uninstall-gem +7 -0
- data/data/reap/base/CHANGES +19 -0
- data/data/reap/base/COPYING +674 -0
- data/data/reap/base/NOTES +12 -0
- data/data/reap/base/README +8 -0
- data/data/reap/build/rake/Rakefile +130 -0
- data/{forge/reference/installers → data/reap/build/rake}/setup.rb +155 -97
- data/data/reap/build/rake-lite/install.rb +79 -0
- data/data/reap/build/tasks/task/rdoc +211 -0
- data/data/reap/{setup.rb → build/tasks/task/setup} +248 -200
- data/data/reap/build/tasks/task/test +38 -0
- data/data/reap/init/meta/project.yaml +21 -0
- data/demo/README +15 -0
- data/demo/lib/foo/foo.rb +7 -0
- data/demo/meta/VERSION +1 -0
- data/demo/meta/project.yaml +21 -0
- data/lib/reap/application.rb +80 -0
- data/lib/reap/default.yaml +77 -0
- data/lib/reap/extensions/array.rb +50 -0
- data/lib/reap/extensions/hash.rb +63 -0
- data/lib/reap/extensions/string.rb +31 -0
- data/lib/reap/extensions.rb +6 -0
- data/lib/reap/iobject.rb +264 -0
- data/lib/reap/manager/announce.rb +193 -0
- data/lib/reap/manager/check.rb +109 -0
- data/lib/reap/manager/clean.rb +58 -0
- data/lib/reap/manager/gem.rb +200 -0
- data/lib/reap/manager/html.rb +69 -0
- data/lib/reap/manager/log.rb +214 -0
- data/lib/reap/manager/make.rb +109 -0
- data/lib/reap/manager/pack.rb +232 -0
- data/lib/reap/manager/publish.rb +72 -0
- data/lib/reap/manager/rdoc.rb +194 -0
- data/lib/reap/manager/release.rb +78 -0
- data/lib/reap/manager/rubyforge.rb +44 -0
- data/lib/reap/manager/scaffold.rb +138 -0
- data/lib/reap/manager/scm.rb +66 -0
- data/lib/reap/manager/site.rb +27 -0
- data/lib/reap/manager/spec.rb +94 -0
- data/lib/reap/manager/stats.rb +145 -0
- data/lib/reap/manager/svn.rb +76 -0
- data/lib/reap/manager/test.rb +389 -0
- data/lib/reap/manager.rb +74 -0
- data/lib/reap/metadata.rb +603 -0
- data/lib/reap/project.rb +165 -0
- data/lib/reap/settings.rb +67 -0
- data/lib/reap/systems/rubyforge.rb +737 -0
- data/lib/reap/systems/subversion.rb +333 -0
- data/lib/reap/utilities/fileutils.rb +304 -0
- data/lib/reap/utilities/netutils.rb +221 -0
- data/lib/reap/utilities/setuputils.rb +124 -0
- data/lib/reap/utilities/shellutils.rb +175 -0
- data/log/Changelog.txt +107 -0
- data/log/FIXME.txt +25 -0
- data/log/TODO.txt +72 -0
- data/meta/VERSION +1 -0
- data/meta/description +4 -0
- data/meta/project.yaml +20 -0
- data/task/man +14 -0
- data/task/rdoc +20 -0
- data/{data/reap/scaffold/standard/setup.rb → task/setup} +248 -200
- metadata +225 -153
- data/ProjectInfo +0 -105
- data/bin/reap +0 -5
- data/bin/rubytest +0 -5
- data/data/reap/install.rb +0 -62
- data/data/reap/scaffold/standard/COPYING +0 -403
- data/data/reap/scaffold/standard/ChangeLog +0 -0
- data/data/reap/scaffold/standard/INSTALL +0 -14
- data/data/reap/scaffold/standard/ProjectInfo +0 -77
- data/data/reap/scaffold/standard/README +0 -3
- data/data/reap/scaffold/standard/Rakefile +0 -10
- data/data/reap/scaffold/standard/TODO +0 -0
- data/data/reap/scaffold/subversion/trunk/COPYING +0 -403
- data/data/reap/scaffold/subversion/trunk/ChangeLog +0 -0
- data/data/reap/scaffold/subversion/trunk/INSTALL +0 -14
- data/data/reap/scaffold/subversion/trunk/ProjectInfo +0 -76
- data/data/reap/scaffold/subversion/trunk/README +0 -3
- data/data/reap/scaffold/subversion/trunk/Rakefile +0 -10
- data/data/reap/scaffold/subversion/trunk/TODO +0 -0
- data/data/reap/scaffold/subversion/trunk/setup.rb +0 -1568
- data/forge/ProjectInfo +0 -38
- data/forge/ProjectInfo.rb +0 -76
- data/forge/TODO +0 -10
- data/forge/installer.rb +0 -250
- data/forge/reference/Rakefile +0 -124
- data/forge/reference/Rakefile.htm +0 -69
- data/forge/reference/aRakefile +0 -60
- data/forge/reference/compositepublisher.rb +0 -24
- data/forge/reference/ftptools.rb +0 -139
- data/forge/reference/installers/package.rb +0 -629
- data/forge/reference/license-each.rb +0 -85
- data/forge/reference/publisher.rb +0 -75
- data/forge/reference/rubyforge.rb +0 -247
- data/forge/reference/rubyforgepublisher.rb +0 -18
- data/forge/reference/sshpublisher.rb +0 -47
- data/forge/reference/suby-cvs.rb +0 -46
- data/forge/scaffold.rb +0 -126
- data/forge/unit_runner/README +0 -6
- data/forge/unit_runner/commentrunner.rb +0 -62
- data/forge/unit_runner/cunit.rb +0 -17
- data/forge/unit_runner/forkedrunner.rb +0 -91
- data/forge/unit_runner/sample.rb +0 -16
- data/lib/reap/bin/reap.rb +0 -230
- data/lib/reap/bin/rubytest.rb +0 -53
- data/lib/reap/class/announce.rb +0 -220
- data/lib/reap/class/doap.rb +0 -80
- data/lib/reap/class/extest.rb +0 -146
- data/lib/reap/class/filer.rb +0 -62
- data/lib/reap/class/manifest.rb +0 -68
- data/lib/reap/class/package.rb +0 -576
- data/lib/reap/class/publish.rb +0 -152
- data/lib/reap/class/rdoc.rb +0 -123
- data/lib/reap/class/test.rb +0 -264
- data/lib/reap/projectinfo.rb +0 -208
- data/lib/reap/rake.rb +0 -42
- data/lib/reap/reap.rb +0 -89
- data/lib/reap/tasks.rb +0 -756
- data/lib/reap/taskutils.rb +0 -122
- data/note/LATEST +0 -44
- data/note/doap.xml +0 -28
- data/note/history/Rakefile-0.1 +0 -308
- data/sample/ProjectInfo +0 -96
- data/sample/Rakefile +0 -9
- data/sample/Reapfile +0 -11
- data/sample/task/demo.rb +0 -15
- data/setup.rb +0 -1568
- data/web/ProjectInfo.html +0 -75
- data/web/images/grape.jpg +0 -0
- data/web/index.html +0 -312
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# Setup and install.
|
|
1
4
|
#
|
|
2
5
|
# setup.rb
|
|
3
6
|
#
|
|
@@ -6,52 +9,49 @@
|
|
|
6
9
|
# This program is free software.
|
|
7
10
|
# You can distribute/modify this program under the terms of
|
|
8
11
|
# the GNU LGPL, Lesser General Public License version 2.1.
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Was hardcoded as 'InstalledFiles'
|
|
9
15
|
#
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
#
|
|
31
|
-
#
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
# an eye on that one for the future. -trans.
|
|
39
|
-
|
|
40
|
-
$setup_install_root = nil
|
|
41
|
-
ARGV.each{ |a|
|
|
42
|
-
if md = /--root=(.*)/.match( a )
|
|
43
|
-
$setup_install_root = md[1]
|
|
44
|
-
end
|
|
45
|
-
}
|
|
46
|
-
if $setup_install_root
|
|
47
|
-
ARGV.delete("--root=#{$setup_install_root}")
|
|
48
|
-
$setup_install_root = File.expand_path($setup_install_root)
|
|
49
|
-
puts "(root=#{$setup_install_root})"
|
|
17
|
+
INSTALLED_MANIFEST = '.installed'
|
|
18
|
+
|
|
19
|
+
#
|
|
20
|
+
# Was hardcoded as 'packages'.
|
|
21
|
+
#
|
|
22
|
+
|
|
23
|
+
PACKAGES_DIRECTORY = 'src'
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Locate and move to the root dir of the project/package.
|
|
27
|
+
# This is setup to put setup in a utilities subdir.
|
|
28
|
+
#
|
|
29
|
+
# TODO Make more robust.
|
|
30
|
+
#
|
|
31
|
+
|
|
32
|
+
ROOT_DIRECTORY = File.dirname(File.dirname(File.expand_path($0)))
|
|
33
|
+
|
|
34
|
+
Dir.chdir(ROOT_DIRECTORY)
|
|
35
|
+
|
|
36
|
+
#
|
|
37
|
+
# Deal with Ruby version issues.
|
|
38
|
+
#
|
|
39
|
+
|
|
40
|
+
unless Enumerable.method_defined?(:map) # Ruby 1.4.6
|
|
41
|
+
module Enumerable
|
|
42
|
+
alias map collect
|
|
43
|
+
end
|
|
50
44
|
end
|
|
51
45
|
|
|
52
|
-
#
|
|
46
|
+
unless File.respond_to?(:read) # Ruby 1.6
|
|
47
|
+
def File.read(fname)
|
|
48
|
+
open(fname) {|f|
|
|
49
|
+
return f.read
|
|
50
|
+
}
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
53
|
|
|
54
|
-
unless Errno.const_defined?(:ENOTEMPTY)
|
|
54
|
+
unless Errno.const_defined?(:ENOTEMPTY) # Windows?
|
|
55
55
|
module Errno
|
|
56
56
|
class ENOTEMPTY
|
|
57
57
|
# We do not raise this exception, implementation is not needed.
|
|
@@ -89,11 +89,17 @@ class ConfigTable
|
|
|
89
89
|
attr_accessor :install_prefix
|
|
90
90
|
attr_accessor :config_opt
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
def verbose?() @verbose end
|
|
92
|
+
attr_writer :verbose
|
|
94
93
|
|
|
95
|
-
def
|
|
96
|
-
|
|
94
|
+
def verbose?
|
|
95
|
+
@verbose
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
attr_writer :no_harm
|
|
99
|
+
|
|
100
|
+
def no_harm?
|
|
101
|
+
@no_harm
|
|
102
|
+
end
|
|
97
103
|
|
|
98
104
|
def [](key)
|
|
99
105
|
lookup(key).resolve(self)
|
|
@@ -137,7 +143,9 @@ class ConfigTable
|
|
|
137
143
|
end
|
|
138
144
|
end
|
|
139
145
|
|
|
140
|
-
def savefile
|
|
146
|
+
def savefile
|
|
147
|
+
'.config'
|
|
148
|
+
end
|
|
141
149
|
|
|
142
150
|
def load_savefile
|
|
143
151
|
begin
|
|
@@ -160,126 +168,124 @@ class ConfigTable
|
|
|
160
168
|
end
|
|
161
169
|
|
|
162
170
|
def load_standard_entries
|
|
163
|
-
|
|
164
|
-
standard_entries.each do |ent|
|
|
171
|
+
standard_entries(@rbconfig).each do |ent|
|
|
165
172
|
add ent
|
|
166
173
|
end
|
|
167
174
|
end
|
|
168
175
|
|
|
169
|
-
def standard_entries
|
|
170
|
-
|
|
176
|
+
def standard_entries(rbconfig)
|
|
177
|
+
c = rbconfig
|
|
171
178
|
|
|
172
|
-
rubypath = File.join(
|
|
179
|
+
rubypath = File.join(c['bindir'], c['ruby_install_name'] + c['EXEEXT'])
|
|
173
180
|
|
|
174
|
-
major =
|
|
175
|
-
minor =
|
|
176
|
-
teeny =
|
|
181
|
+
major = c['MAJOR'].to_i
|
|
182
|
+
minor = c['MINOR'].to_i
|
|
183
|
+
teeny = c['TEENY'].to_i
|
|
177
184
|
version = "#{major}.#{minor}"
|
|
178
185
|
|
|
179
|
-
#
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
# ((minor >= 5) or
|
|
185
|
-
# ((minor == 4) and (teeny >= 4)))))
|
|
186
|
+
# ruby ver. >= 1.4.4?
|
|
187
|
+
newpath_p = ((major >= 2) or
|
|
188
|
+
((major == 1) and
|
|
189
|
+
((minor >= 5) or
|
|
190
|
+
((minor == 4) and (teeny >= 4)))))
|
|
186
191
|
|
|
187
|
-
|
|
192
|
+
if c['rubylibdir']
|
|
188
193
|
# V > 1.6.3
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
#
|
|
208
|
-
#
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
# siteruby = c['sitedir']
|
|
213
|
-
# siterubyver = "$siteruby/#{version}"
|
|
214
|
-
# siterubyverarch = "$siterubyver/#{c['arch']}"
|
|
215
|
-
# else
|
|
216
|
-
# # V < 1.4.4
|
|
217
|
-
# libruby = "#{c['prefix']}/lib/ruby"
|
|
218
|
-
# librubyver = "#{c['prefix']}/lib/ruby/#{version}"
|
|
219
|
-
# librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
|
|
220
|
-
# siteruby = "#{c['prefix']}/lib/ruby/#{version}/site_ruby"
|
|
221
|
-
# siterubyver = siteruby
|
|
222
|
-
# siterubyverarch = "$siterubyver/#{c['arch']}"
|
|
223
|
-
# end
|
|
224
|
-
|
|
194
|
+
libruby = "#{c['prefix']}/lib/ruby"
|
|
195
|
+
librubyver = c['rubylibdir']
|
|
196
|
+
librubyverarch = c['archdir']
|
|
197
|
+
siteruby = c['sitedir']
|
|
198
|
+
siterubyver = c['sitelibdir']
|
|
199
|
+
siterubyverarch = c['sitearchdir']
|
|
200
|
+
elsif newpath_p
|
|
201
|
+
# 1.4.4 <= V <= 1.6.3
|
|
202
|
+
libruby = "#{c['prefix']}/lib/ruby"
|
|
203
|
+
librubyver = "#{c['prefix']}/lib/ruby/#{version}"
|
|
204
|
+
librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
|
|
205
|
+
siteruby = c['sitedir']
|
|
206
|
+
siterubyver = "$siteruby/#{version}"
|
|
207
|
+
siterubyverarch = "$siterubyver/#{c['arch']}"
|
|
208
|
+
else
|
|
209
|
+
# V < 1.4.4
|
|
210
|
+
libruby = "#{c['prefix']}/lib/ruby"
|
|
211
|
+
librubyver = "#{c['prefix']}/lib/ruby/#{version}"
|
|
212
|
+
librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
|
|
213
|
+
siteruby = "#{c['prefix']}/lib/ruby/#{version}/site_ruby"
|
|
214
|
+
siterubyver = siteruby
|
|
215
|
+
siterubyverarch = "$siterubyver/#{c['arch']}"
|
|
216
|
+
end
|
|
225
217
|
parameterize = lambda {|path|
|
|
226
|
-
path.sub(/\A#{Regexp.quote(
|
|
218
|
+
path.sub(/\A#{Regexp.quote(c['prefix'])}/, '$prefix')
|
|
227
219
|
}
|
|
228
220
|
|
|
229
|
-
if arg =
|
|
221
|
+
if arg = c['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg }
|
|
230
222
|
makeprog = arg.sub(/'/, '').split(/=/, 2)[1]
|
|
231
223
|
else
|
|
232
224
|
makeprog = 'make'
|
|
233
225
|
end
|
|
234
226
|
|
|
235
|
-
installdir_lambda = lambda {|val, table|
|
|
236
|
-
case val
|
|
237
|
-
when 'std'
|
|
238
|
-
table['rbdir'] = '$librubyver'
|
|
239
|
-
table['sodir'] = '$librubyverarch'
|
|
240
|
-
when 'site'
|
|
241
|
-
table['rbdir'] = '$siterubyver'
|
|
242
|
-
table['sodir'] = '$siterubyverarch'
|
|
243
|
-
when 'home'
|
|
244
|
-
setup_rb_error '$HOME was not set' unless ENV['HOME']
|
|
245
|
-
table['prefix'] = ENV['HOME']
|
|
246
|
-
table['rbdir'] = '$libdir/ruby'
|
|
247
|
-
table['sodir'] = '$libdir/ruby'
|
|
248
|
-
end
|
|
249
|
-
}
|
|
250
|
-
|
|
251
227
|
[
|
|
252
|
-
ExecItem.new('installdirs', 'std/site/home',
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
PathItem.new('
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
228
|
+
ExecItem.new('installdirs', 'std/site/home',
|
|
229
|
+
'std: install under libruby; site: install under site_ruby; home: install under $HOME')\
|
|
230
|
+
{|val, table|
|
|
231
|
+
case val
|
|
232
|
+
when 'std'
|
|
233
|
+
table['rbdir'] = '$librubyver'
|
|
234
|
+
table['sodir'] = '$librubyverarch'
|
|
235
|
+
when 'site'
|
|
236
|
+
table['rbdir'] = '$siterubyver'
|
|
237
|
+
table['sodir'] = '$siterubyverarch'
|
|
238
|
+
when 'home'
|
|
239
|
+
setup_rb_error '$HOME was not set' unless ENV['HOME']
|
|
240
|
+
table['prefix'] = ENV['HOME']
|
|
241
|
+
table['rbdir'] = '$libdir/ruby'
|
|
242
|
+
table['sodir'] = '$libdir/ruby'
|
|
243
|
+
end
|
|
244
|
+
},
|
|
245
|
+
PathItem.new('prefix', 'path', c['prefix'],
|
|
246
|
+
'path prefix of target environment'),
|
|
247
|
+
PathItem.new('bindir', 'path', parameterize.call(c['bindir']),
|
|
248
|
+
'the directory for commands'),
|
|
249
|
+
PathItem.new('libdir', 'path', parameterize.call(c['libdir']),
|
|
250
|
+
'the directory for libraries'),
|
|
251
|
+
PathItem.new('datadir', 'path', parameterize.call(c['datadir']),
|
|
252
|
+
'the directory for shared data'),
|
|
253
|
+
PathItem.new('mandir', 'path', parameterize.call(c['mandir']),
|
|
254
|
+
'the directory for man pages'),
|
|
255
|
+
PathItem.new('sysconfdir', 'path', parameterize.call(c['sysconfdir']),
|
|
256
|
+
'the directory for system configuration files'),
|
|
257
|
+
PathItem.new('localstatedir', 'path', parameterize.call(c['localstatedir']),
|
|
258
|
+
'the directory for local state data'),
|
|
259
|
+
PathItem.new('libruby', 'path', libruby,
|
|
260
|
+
'the directory for ruby libraries'),
|
|
261
|
+
PathItem.new('librubyver', 'path', librubyver,
|
|
262
|
+
'the directory for standard ruby libraries'),
|
|
263
|
+
PathItem.new('librubyverarch', 'path', librubyverarch,
|
|
264
|
+
'the directory for standard ruby extensions'),
|
|
265
|
+
PathItem.new('siteruby', 'path', siteruby,
|
|
266
|
+
'the directory for version-independent aux ruby libraries'),
|
|
267
|
+
PathItem.new('siterubyver', 'path', siterubyver,
|
|
268
|
+
'the directory for aux ruby libraries'),
|
|
269
|
+
PathItem.new('siterubyverarch', 'path', siterubyverarch,
|
|
270
|
+
'the directory for aux ruby binaries'),
|
|
271
|
+
PathItem.new('rbdir', 'path', '$siterubyver',
|
|
272
|
+
'the directory for ruby scripts'),
|
|
273
|
+
PathItem.new('sodir', 'path', '$siterubyverarch',
|
|
274
|
+
'the directory for ruby extentions'),
|
|
275
|
+
PathItem.new('rubypath', 'path', rubypath,
|
|
276
|
+
'the path to set to #! line'),
|
|
277
|
+
ProgramItem.new('rubyprog', 'name', rubypath,
|
|
278
|
+
'the ruby program using for installation'),
|
|
279
|
+
ProgramItem.new('makeprog', 'name', makeprog,
|
|
280
|
+
'the make program to compile ruby extentions'),
|
|
281
|
+
SelectItem.new('shebang', 'all/ruby/never', 'ruby',
|
|
282
|
+
'shebang line (#!) editing mode'),
|
|
283
|
+
BoolItem.new('without-ext', 'yes/no', 'no',
|
|
284
|
+
'does not compile/install ruby extentions')
|
|
274
285
|
]
|
|
275
286
|
end
|
|
276
287
|
private :standard_entries
|
|
277
288
|
|
|
278
|
-
def paramize( path )
|
|
279
|
-
path.sub(/\A#{Regexp.quote(@rbconfig['prefix'])}/, '$prefix')
|
|
280
|
-
end
|
|
281
|
-
private :paramize
|
|
282
|
-
|
|
283
289
|
def load_multipackage_entries
|
|
284
290
|
multipackage_entries().each do |ent|
|
|
285
291
|
add ent
|
|
@@ -288,8 +294,10 @@ class ConfigTable
|
|
|
288
294
|
|
|
289
295
|
def multipackage_entries
|
|
290
296
|
[
|
|
291
|
-
PackageSelectionItem.new('with',
|
|
292
|
-
|
|
297
|
+
PackageSelectionItem.new('with', 'name,name...', '', 'ALL',
|
|
298
|
+
'package names that you want to install'),
|
|
299
|
+
PackageSelectionItem.new('without', 'name,name...', '', 'NONE',
|
|
300
|
+
'package names that you do not want to install')
|
|
293
301
|
]
|
|
294
302
|
end
|
|
295
303
|
private :multipackage_entries
|
|
@@ -354,8 +362,13 @@ class ConfigTable
|
|
|
354
362
|
"--#{@name}=#{@template}"
|
|
355
363
|
end
|
|
356
364
|
|
|
357
|
-
def value?
|
|
358
|
-
|
|
365
|
+
def value?
|
|
366
|
+
true
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
def value
|
|
370
|
+
@value
|
|
371
|
+
end
|
|
359
372
|
|
|
360
373
|
def resolve(table)
|
|
361
374
|
@value.gsub(%r<\$([^/]+)>) { table[$1] }
|
|
@@ -374,7 +387,9 @@ class ConfigTable
|
|
|
374
387
|
end
|
|
375
388
|
|
|
376
389
|
class BoolItem < Item
|
|
377
|
-
def config_type
|
|
390
|
+
def config_type
|
|
391
|
+
'bool'
|
|
392
|
+
end
|
|
378
393
|
|
|
379
394
|
def help_opt
|
|
380
395
|
"--#{@name}"
|
|
@@ -394,9 +409,12 @@ class ConfigTable
|
|
|
394
409
|
end
|
|
395
410
|
|
|
396
411
|
class PathItem < Item
|
|
397
|
-
def config_type
|
|
412
|
+
def config_type
|
|
413
|
+
'path'
|
|
414
|
+
end
|
|
398
415
|
|
|
399
416
|
private
|
|
417
|
+
|
|
400
418
|
def check(path)
|
|
401
419
|
setup_rb_error "config: --#{@name} requires argument" unless path
|
|
402
420
|
path[0,1] == '$' ? path : File.expand_path(path)
|
|
@@ -404,7 +422,9 @@ class ConfigTable
|
|
|
404
422
|
end
|
|
405
423
|
|
|
406
424
|
class ProgramItem < Item
|
|
407
|
-
def config_type
|
|
425
|
+
def config_type
|
|
426
|
+
'program'
|
|
427
|
+
end
|
|
408
428
|
end
|
|
409
429
|
|
|
410
430
|
class SelectItem < Item
|
|
@@ -413,9 +433,12 @@ class ConfigTable
|
|
|
413
433
|
@ok = selection.split('/')
|
|
414
434
|
end
|
|
415
435
|
|
|
416
|
-
def config_type
|
|
436
|
+
def config_type
|
|
437
|
+
'select'
|
|
438
|
+
end
|
|
417
439
|
|
|
418
440
|
private
|
|
441
|
+
|
|
419
442
|
def check(val)
|
|
420
443
|
unless @ok.include?(val.strip)
|
|
421
444
|
setup_rb_error "config: use --#{@name}=#{@template} (#{val})"
|
|
@@ -469,7 +492,7 @@ class ConfigTable
|
|
|
469
492
|
private
|
|
470
493
|
|
|
471
494
|
def check(val)
|
|
472
|
-
unless File.dir?("
|
|
495
|
+
unless File.dir?("#{PACKAGES_DIRECTORY}/#{val}")
|
|
473
496
|
setup_rb_error "config: no such package: #{val}"
|
|
474
497
|
end
|
|
475
498
|
val
|
|
@@ -542,9 +565,7 @@ end # class ConfigTable
|
|
|
542
565
|
module FileOperations
|
|
543
566
|
|
|
544
567
|
def mkdir_p(dirname, prefix = nil)
|
|
545
|
-
dirname =
|
|
546
|
-
dirname = File.join( $setup_install_root, dirname ) if $setup_install_root
|
|
547
|
-
|
|
568
|
+
dirname = prefix + File.expand_path(dirname) if prefix
|
|
548
569
|
$stderr.puts "mkdir -p #{dirname}" if verbose?
|
|
549
570
|
return if no_harm?
|
|
550
571
|
|
|
@@ -628,15 +649,11 @@ module FileOperations
|
|
|
628
649
|
end
|
|
629
650
|
|
|
630
651
|
def install(from, dest, mode, prefix = nil)
|
|
631
|
-
|
|
632
|
-
realdest = prefix ? File.join(prefix, File.expand_path(dest)) : dest
|
|
633
|
-
realdest = File.join($setup_install_root, File.expand_path(realdest)) if $setup_install_root
|
|
634
|
-
|
|
635
652
|
$stderr.puts "install #{from} #{dest}" if verbose?
|
|
636
653
|
return if no_harm?
|
|
637
654
|
|
|
655
|
+
realdest = prefix ? prefix + File.expand_path(dest) : dest
|
|
638
656
|
realdest = File.join(realdest, File.basename(from)) if File.dir?(realdest)
|
|
639
|
-
|
|
640
657
|
str = File.binread(from)
|
|
641
658
|
if diff?(str, realdest)
|
|
642
659
|
verbose_off {
|
|
@@ -647,11 +664,7 @@ module FileOperations
|
|
|
647
664
|
}
|
|
648
665
|
File.chmod mode, realdest
|
|
649
666
|
|
|
650
|
-
#
|
|
651
|
-
# This prevents problem with root permissions on this file.
|
|
652
|
-
return true unless $setup_install_root
|
|
653
|
-
|
|
654
|
-
File.open("#{objdir_root()}/InstalledFiles", 'a') {|f|
|
|
667
|
+
File.open("#{objdir_root()}/#{INSTALLED_MANIFEST}", 'a') {|f|
|
|
655
668
|
if prefix
|
|
656
669
|
f.puts realdest.sub(prefix, '')
|
|
657
670
|
else
|
|
@@ -715,14 +728,33 @@ module HookScriptAPI
|
|
|
715
728
|
@config[key] = val
|
|
716
729
|
end
|
|
717
730
|
|
|
731
|
+
#
|
|
718
732
|
# srcdir/objdir (works only in the package directory)
|
|
733
|
+
#
|
|
719
734
|
|
|
720
|
-
def curr_srcdir
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
def
|
|
725
|
-
|
|
735
|
+
def curr_srcdir
|
|
736
|
+
"#{srcdir_root()}/#{relpath()}"
|
|
737
|
+
end
|
|
738
|
+
|
|
739
|
+
def curr_objdir
|
|
740
|
+
"#{objdir_root()}/#{relpath()}"
|
|
741
|
+
end
|
|
742
|
+
|
|
743
|
+
def srcfile(path)
|
|
744
|
+
"#{curr_srcdir()}/#{path}"
|
|
745
|
+
end
|
|
746
|
+
|
|
747
|
+
def srcexist?(path)
|
|
748
|
+
File.exist?(srcfile(path))
|
|
749
|
+
end
|
|
750
|
+
|
|
751
|
+
def srcdirectory?(path)
|
|
752
|
+
File.dir?(srcfile(path))
|
|
753
|
+
end
|
|
754
|
+
|
|
755
|
+
def srcfile?(path)
|
|
756
|
+
File.file?(srcfile(path))
|
|
757
|
+
end
|
|
726
758
|
|
|
727
759
|
def srcentries(path = '.')
|
|
728
760
|
Dir.open("#{curr_srcdir()}/#{path}") {|d|
|
|
@@ -761,20 +793,22 @@ class ToplevelInstaller
|
|
|
761
793
|
[ 'distclean',"does `make distclean' for each extention" ]
|
|
762
794
|
]
|
|
763
795
|
|
|
764
|
-
def
|
|
765
|
-
config = ConfigTable.new(load_rbconfig)
|
|
796
|
+
def ToplevelInstaller.invoke
|
|
797
|
+
config = ConfigTable.new(load_rbconfig())
|
|
766
798
|
config.load_standard_entries
|
|
767
799
|
config.load_multipackage_entries if multipackage?
|
|
768
800
|
config.fixup
|
|
769
801
|
klass = (multipackage?() ? ToplevelInstallerMulti : ToplevelInstaller)
|
|
770
|
-
klass.new(File.dirname($0), config).invoke
|
|
802
|
+
#klass.new(File.dirname($0), config).invoke
|
|
803
|
+
klass.new(ROOT_DIRECTORY, config).invoke
|
|
771
804
|
end
|
|
772
805
|
|
|
773
|
-
def
|
|
774
|
-
File.dir?(File.dirname($0) + '
|
|
806
|
+
def ToplevelInstaller.multipackage?
|
|
807
|
+
#File.dir?(File.dirname($0) + '/#{PACKAGES_DIRECTORY}')
|
|
808
|
+
File.dir?(ROOT_DIRECTORY + "/#{PACKAGES_DIRECTORY}")
|
|
775
809
|
end
|
|
776
810
|
|
|
777
|
-
def
|
|
811
|
+
def ToplevelInstaller.load_rbconfig
|
|
778
812
|
if arg = ARGV.detect {|arg| /\A--rbconfig=/ =~ arg }
|
|
779
813
|
ARGV.delete(arg)
|
|
780
814
|
load File.expand_path(arg.split(/=/, 2)[1])
|
|
@@ -785,7 +819,6 @@ class ToplevelInstaller
|
|
|
785
819
|
::Config::CONFIG
|
|
786
820
|
end
|
|
787
821
|
|
|
788
|
-
|
|
789
822
|
def initialize(ardir_root, config)
|
|
790
823
|
@ardir = File.expand_path(ardir_root)
|
|
791
824
|
@config = config
|
|
@@ -837,9 +870,17 @@ class ToplevelInstaller
|
|
|
837
870
|
# Hook Script API bases
|
|
838
871
|
#
|
|
839
872
|
|
|
840
|
-
def srcdir_root
|
|
841
|
-
|
|
842
|
-
|
|
873
|
+
def srcdir_root
|
|
874
|
+
@ardir
|
|
875
|
+
end
|
|
876
|
+
|
|
877
|
+
def objdir_root
|
|
878
|
+
'.'
|
|
879
|
+
end
|
|
880
|
+
|
|
881
|
+
def relpath
|
|
882
|
+
'.'
|
|
883
|
+
end
|
|
843
884
|
|
|
844
885
|
#
|
|
845
886
|
# Option Parsing
|
|
@@ -969,7 +1010,6 @@ class ToplevelInstaller
|
|
|
969
1010
|
out.puts
|
|
970
1011
|
out.puts 'Options for INSTALL:'
|
|
971
1012
|
out.printf fmt, '--no-harm', 'only display what to do if given', 'off'
|
|
972
|
-
out.printf fmt, '--root=path', 'install root directory (effects all paths)', '/'
|
|
973
1013
|
out.printf fmt, '--prefix=path', 'install path prefix', ''
|
|
974
1014
|
out.puts
|
|
975
1015
|
end
|
|
@@ -1018,7 +1058,7 @@ class ToplevelInstallerMulti < ToplevelInstaller
|
|
|
1018
1058
|
|
|
1019
1059
|
def initialize(ardir_root, config)
|
|
1020
1060
|
super
|
|
1021
|
-
@packages = directories_of("#{@ardir}
|
|
1061
|
+
@packages = directories_of("#{@ardir}/#{PACKAGES_DIRECTORY}")
|
|
1022
1062
|
raise 'no package exists' if @packages.empty?
|
|
1023
1063
|
@root_installer = Installer.new(@config, @ardir, File.expand_path('.'))
|
|
1024
1064
|
end
|
|
@@ -1026,7 +1066,7 @@ class ToplevelInstallerMulti < ToplevelInstaller
|
|
|
1026
1066
|
def run_metaconfigs
|
|
1027
1067
|
@config.load_script "#{@ardir}/metaconfig", self
|
|
1028
1068
|
@packages.each do |name|
|
|
1029
|
-
@config.load_script "#{@ardir}
|
|
1069
|
+
@config.load_script "#{@ardir}/#{PACKAGES_DIRECTORY}/#{name}/metaconfig"
|
|
1030
1070
|
end
|
|
1031
1071
|
end
|
|
1032
1072
|
|
|
@@ -1035,8 +1075,8 @@ class ToplevelInstallerMulti < ToplevelInstaller
|
|
|
1035
1075
|
def packages=(list)
|
|
1036
1076
|
raise 'package list is empty' if list.empty?
|
|
1037
1077
|
list.each do |name|
|
|
1038
|
-
raise "directory
|
|
1039
|
-
unless File.dir?("#{@ardir}
|
|
1078
|
+
raise "directory #{PACKAGES_DIRECTORY}/#{name} does not exist"\
|
|
1079
|
+
unless File.dir?("#{@ardir}/#{PACKAGES_DIRECTORY}/#{name}")
|
|
1040
1080
|
end
|
|
1041
1081
|
@packages = list
|
|
1042
1082
|
end
|
|
@@ -1045,8 +1085,8 @@ class ToplevelInstallerMulti < ToplevelInstaller
|
|
|
1045
1085
|
@installers = {}
|
|
1046
1086
|
@packages.each do |pack|
|
|
1047
1087
|
@installers[pack] = Installer.new(@config,
|
|
1048
|
-
"#{@ardir}
|
|
1049
|
-
"
|
|
1088
|
+
"#{@ardir}/#{PACKAGES_DIRECTORY}/#{pack}",
|
|
1089
|
+
"#{PACKAGES_DIRECTORY}/#{pack}")
|
|
1050
1090
|
end
|
|
1051
1091
|
with = extract_selection(config('with'))
|
|
1052
1092
|
without = extract_selection(config('without'))
|
|
@@ -1119,11 +1159,11 @@ class ToplevelInstallerMulti < ToplevelInstaller
|
|
|
1119
1159
|
#
|
|
1120
1160
|
|
|
1121
1161
|
def each_selected_installers
|
|
1122
|
-
Dir.mkdir
|
|
1162
|
+
Dir.mkdir PACKAGES_DIRECTORY unless File.dir?(PACKAGES_DIRECTORY)
|
|
1123
1163
|
@selected.each do |pack|
|
|
1124
1164
|
$stderr.puts "Processing the package `#{pack}' ..." if verbose?
|
|
1125
|
-
Dir.mkdir "
|
|
1126
|
-
Dir.chdir "
|
|
1165
|
+
Dir.mkdir "#{PACKAGES_DIRECTORY}/#{pack}" unless File.dir?("#{PACKAGES_DIRECTORY}/#{pack}")
|
|
1166
|
+
Dir.chdir "#{PACKAGES_DIRECTORY}/#{pack}"
|
|
1127
1167
|
yield @installers[pack]
|
|
1128
1168
|
Dir.chdir '../..'
|
|
1129
1169
|
end
|
|
@@ -1164,15 +1204,24 @@ class Installer
|
|
|
1164
1204
|
"#<#{self.class} #{File.basename(@srcdir)}>"
|
|
1165
1205
|
end
|
|
1166
1206
|
|
|
1167
|
-
def noop(rel)
|
|
1207
|
+
def noop(rel)
|
|
1208
|
+
end
|
|
1168
1209
|
|
|
1169
1210
|
#
|
|
1170
1211
|
# Hook Script API base methods
|
|
1171
1212
|
#
|
|
1172
1213
|
|
|
1173
|
-
def srcdir_root
|
|
1174
|
-
|
|
1175
|
-
|
|
1214
|
+
def srcdir_root
|
|
1215
|
+
@srcdir
|
|
1216
|
+
end
|
|
1217
|
+
|
|
1218
|
+
def objdir_root
|
|
1219
|
+
@objdir
|
|
1220
|
+
end
|
|
1221
|
+
|
|
1222
|
+
def relpath
|
|
1223
|
+
@currdir
|
|
1224
|
+
end
|
|
1176
1225
|
|
|
1177
1226
|
#
|
|
1178
1227
|
# Config Access
|
|
@@ -1320,7 +1369,7 @@ class Installer
|
|
|
1320
1369
|
#
|
|
1321
1370
|
|
|
1322
1371
|
def exec_install
|
|
1323
|
-
rm_f
|
|
1372
|
+
rm_f "#{INSTALLED_MANIFEST}"
|
|
1324
1373
|
exec_task_traverse 'install'
|
|
1325
1374
|
end
|
|
1326
1375
|
|
|
@@ -1355,7 +1404,6 @@ class Installer
|
|
|
1355
1404
|
|
|
1356
1405
|
def install_files(list, dest, mode)
|
|
1357
1406
|
mkdir_p dest, @config.install_prefix
|
|
1358
|
-
#mkdir_p dest, offset_dir
|
|
1359
1407
|
list.each do |fname|
|
|
1360
1408
|
install fname, dest, mode, @config.install_prefix
|
|
1361
1409
|
end
|
|
@@ -1387,7 +1435,7 @@ class Installer
|
|
|
1387
1435
|
end
|
|
1388
1436
|
|
|
1389
1437
|
# picked up many entries from cvs-1.11.1/src/ignore.c
|
|
1390
|
-
JUNK_FILES = %w(
|
|
1438
|
+
JUNK_FILES = %w(
|
|
1391
1439
|
core RCSLOG tags TAGS .make.state
|
|
1392
1440
|
.nse_depinfo #* .#* cvslog.* ,* .del-* *.olb
|
|
1393
1441
|
*~ *.old *.bak *.BAK *.orig *.rej _$* *$
|
|
@@ -1457,7 +1505,7 @@ class Installer
|
|
|
1457
1505
|
def exec_clean
|
|
1458
1506
|
exec_task_traverse 'clean'
|
|
1459
1507
|
rm_f @config.savefile
|
|
1460
|
-
rm_f
|
|
1508
|
+
rm_f "#{INSTALLED_MANIFEST}"
|
|
1461
1509
|
end
|
|
1462
1510
|
|
|
1463
1511
|
alias clean_dir_bin noop
|
|
@@ -1478,7 +1526,7 @@ class Installer
|
|
|
1478
1526
|
def exec_distclean
|
|
1479
1527
|
exec_task_traverse 'distclean'
|
|
1480
1528
|
rm_f @config.savefile
|
|
1481
|
-
rm_f
|
|
1529
|
+
rm_f "#{INSTALLED_MANIFEST}"
|
|
1482
1530
|
end
|
|
1483
1531
|
|
|
1484
1532
|
alias distclean_dir_bin noop
|