reap 6.0.2 → 9.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|