reap 4.3.3 → 4.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/COPYING +400 -8
  2. data/ProjectInfo +26 -26
  3. data/ProjectInfo.rb +88 -0
  4. data/bin/reap +1 -1
  5. data/bin/rubytest +1 -1
  6. data/data/reap/scaffold/standard/COPYING +403 -0
  7. data/data/reap/scaffold/{ChangeLog → standard/ChangeLog} +0 -0
  8. data/data/reap/scaffold/standard/INSTALL +14 -0
  9. data/data/reap/scaffold/{ProjectInfo → standard/ProjectInfo} +12 -12
  10. data/data/reap/scaffold/standard/README +3 -0
  11. data/data/reap/scaffold/standard/Rakefile +10 -0
  12. data/data/reap/scaffold/{INSTALL → standard/TODO} +0 -0
  13. data/data/reap/scaffold/subversion/trunk/COPYING +403 -0
  14. data/data/reap/scaffold/{README → subversion/trunk/ChangeLog} +0 -0
  15. data/data/reap/scaffold/subversion/trunk/INSTALL +14 -0
  16. data/data/reap/scaffold/subversion/trunk/ProjectInfo +78 -0
  17. data/data/reap/scaffold/subversion/trunk/README +3 -0
  18. data/data/reap/scaffold/subversion/trunk/Rakefile +10 -0
  19. data/data/reap/scaffold/{Todo → subversion/trunk/TODO} +0 -0
  20. data/data/reap/{setup-3.4.1/setup.rb → setup.rb} +181 -202
  21. data/{ChangeLog → doc/ChangeLog} +0 -0
  22. data/doc/doap.xml +27 -0
  23. data/doc/note/Rakefile.htm +69 -0
  24. data/{note/Rakefile → doc/note/aRakefile} +0 -0
  25. data/{note → doc/note}/composite_task.rb +0 -0
  26. data/{note → doc/note}/compositepublisher.rb +0 -0
  27. data/{note → doc/note}/ftptools.rb +0 -0
  28. data/{note → doc/note}/interface/interface.rb +0 -0
  29. data/{note → doc/note}/interface/rubyforge.rb +0 -0
  30. data/{note → doc/note}/license-each.rb +0 -0
  31. data/{note → doc/note}/package.rb.0 +0 -0
  32. data/{note → doc/note}/publisher.rb +0 -0
  33. data/{note → doc/note}/rubyforgepublisher.rb +0 -0
  34. data/{lib/reap/task → doc/note}/scaffold.rb +4 -3
  35. data/{lib/reap → doc/note}/setup.rb +7 -6
  36. data/{note → doc/note}/sshpublisher.rb +0 -0
  37. data/{note → doc/note}/suby-cvs.rb +0 -0
  38. data/{note → doc/note}/template.rb +0 -0
  39. data/lib/reap/bin/reap.rb +75 -51
  40. data/lib/reap/bin/{lint.rb → rubylint.rb} +0 -0
  41. data/lib/reap/projectinfo.rb +107 -50
  42. data/lib/reap/reap.rb +60 -0
  43. data/lib/reap/task.rb +46 -60
  44. data/lib/reap/task/doap.rb +67 -0
  45. data/lib/reap/task/info.rb +2 -2
  46. data/lib/reap/task/install.rb +29 -18
  47. data/lib/reap/task/package.rb +56 -56
  48. data/lib/reap/task/release.rb +34 -13
  49. data/package.rb +627 -0
  50. data/setup.rb +287 -272
  51. data/test/tc_reap.rb +1 -1
  52. metadata +64 -61
  53. data/ANN +0 -8
  54. data/data/reap/scaffold/COPYING +0 -11
  55. data/data/reap/scaffold/Rakefile +0 -146
  56. data/data/reap/scaffold/setup.rb +0 -1551
  57. data/data/reap/setup-3.4.1/COPYING +0 -515
  58. data/data/reap/setup-3.4.1/ChangeLog +0 -732
  59. data/data/reap/setup-3.4.1/Makefile +0 -56
  60. data/data/reap/setup-3.4.1/NEWS.en +0 -155
  61. data/data/reap/setup-3.4.1/NEWS.ja +0 -152
  62. data/data/reap/setup-3.4.1/README.en +0 -30
  63. data/data/reap/setup-3.4.1/README.ja +0 -34
  64. data/data/reap/setup-3.4.1/TODO +0 -14
  65. data/data/reap/setup-3.4.1/Template.README.en +0 -41
  66. data/data/reap/setup-3.4.1/Template.README.ja +0 -46
  67. data/data/reap/setup-3.4.1/Usage_en.txt +0 -231
  68. data/data/reap/setup-3.4.1/Usage_ja.txt +0 -250
  69. data/data/reap/setup-3.4.1/doc.en/hookapi.html +0 -91
  70. data/data/reap/setup-3.4.1/doc.en/index.html +0 -28
  71. data/data/reap/setup-3.4.1/doc.en/metaconfapi.html +0 -79
  72. data/data/reap/setup-3.4.1/doc.en/news.html +0 -189
  73. data/data/reap/setup-3.4.1/doc.en/usage.html +0 -297
  74. data/data/reap/setup-3.4.1/doc.ja/hookapi.html +0 -84
  75. data/data/reap/setup-3.4.1/doc.ja/index.html +0 -28
  76. data/data/reap/setup-3.4.1/doc.ja/metaconfapi.html +0 -80
  77. data/data/reap/setup-3.4.1/doc.ja/news.html +0 -186
  78. data/data/reap/setup-3.4.1/doc.ja/usage.html +0 -319
  79. data/data/reap/setup-3.4.1/sample/add-task.rb +0 -15
  80. data/data/reap/setup-3.4.1/test/test_installer.rb +0 -136
@@ -0,0 +1,14 @@
1
+ = YOUR PROJECT
2
+
3
+ This file describes the install procedure.
4
+
5
+ RubyGems.
6
+
7
+ gem install _package_
8
+
9
+ Manual installation.
10
+
11
+ tar -xvvzf _package_name_
12
+ cd _package_name_
13
+ ruby package.rb install
14
+
@@ -0,0 +1,78 @@
1
+ --- %YAML:1.0
2
+
3
+ TITLE : &title Your App's Title
4
+ NAME : &pkg your_unix_name
5
+ SERIES : '0.0.1'
6
+ DATE : '2005-01-01'
7
+ STATUS : beta
8
+
9
+ AUTHOR : Your Name
10
+ EMAIL : youremail@address.com
11
+ HOMEPAGE : "http://your_package_name.rubyforge.org"
12
+
13
+ SUMMARY : One line summary
14
+
15
+ DESCRIPTION: >
16
+ Multline description
17
+ goes here.
18
+
19
+ RUBYFORGE:
20
+ PROJECT: your_projects_unix_name
21
+ USERNAME: your_rubyforge_username
22
+
23
+
24
+ #=================================================
25
+ # Unremark and use as needed. Often defaults
26
+ # are sufficiant and need not specify
27
+ # extra parameters.
28
+ #=================================================
29
+
30
+ PACKAGE:
31
+ DISTRIBUTE : [ gem, tar.bz2 ] # tgz zip deb
32
+ DEPENDENCIES : []
33
+ EXECUTABLES : []
34
+ DIR: pkg
35
+ INCLUDE:
36
+ - '**/*'
37
+ EXCLUDE:
38
+ - InstalledFiles
39
+
40
+ # PUBLISH:
41
+ # - HOST: rubyforge
42
+ # TYPE: web
43
+ # USERNAME: your_username
44
+ # DIR: www
45
+
46
+ # RDOC:
47
+ # TITLE: *title
48
+ # DIR: 'rdoc' # 'web/rdoc'
49
+ # TEMPLATE: html
50
+ # OPTIONS: ['--merge', '--all']
51
+ # MAIN: README
52
+ # INCLUDE:
53
+ # - '[A-Z]*'
54
+ # - 'lib/**/*.rb'
55
+ # - 'bin/**/*.rb'
56
+ # EXCLUDE: []
57
+
58
+ # ANNOUNCE:
59
+ # TO: ruby-talk@ruby-lang.org
60
+ # FROM: *email
61
+ # DOMAIN: your_domain.net
62
+ # SERVER: smtp.your_email_server.com
63
+ # PORT: 25
64
+ # ACCOUNT: email_account_name
65
+ # AUTHTYPE: login # login, cram_md5, plain
66
+ # SECTYPE: ssl # ~, ssl (tls not working yet)
67
+ # FILE: ANN # which file contains announcement
68
+ # SLOGAN: ALL YOUR BASE ARE BELONG TO RUBY!
69
+ # INFO:
70
+ # - http://your_homepage.org
71
+ # - http://other_links.com
72
+
73
+ # TEST:
74
+ # FILES:
75
+ # - 'test/**/tc*.rb'
76
+ # - 'test/**/test*.rb'
77
+ # - 'test/**/*test.rb'
78
+ # FIXTURE: []
@@ -0,0 +1,3 @@
1
+ = YOUR PROJECT
2
+
3
+ Tells us all about your project here.
@@ -0,0 +1,10 @@
1
+
2
+ require 'rake'
3
+
4
+ # Add rake tasks.
5
+ #
6
+ # desc "Some task."
7
+ # task :name do
8
+ # # ...
9
+ # end
10
+ #
File without changes
@@ -8,21 +8,50 @@
8
8
  # the GNU LGPL, Lesser General Public License version 2.1.
9
9
  #
10
10
 
11
- unless Enumerable.method_defined?(:map) # Ruby 1.4.6
12
- module Enumerable
13
- alias map collect
14
- end
11
+ #############################
12
+ # Forked from version 3.2.1 #
13
+ # #
14
+ # -trans #
15
+ #############################
16
+
17
+ # CHANGE No longer need to support 1.4.6 or 1.6 versions of Ruby.
18
+
19
+ # unless Enumerable.method_defined?(:map) # Ruby 1.4.6
20
+ # module Enumerable
21
+ # alias map collect
22
+ # end
23
+ # end
24
+
25
+ # unless File.respond_to?(:read) # Ruby 1.6
26
+ # def File.read(fname)
27
+ # open(fname) {|f|
28
+ # return f.read
29
+ # }
30
+ # end
31
+ # end
32
+
33
+ # This is hack!
34
+ # This is needed to install within an abitrary root dir.
35
+ # B/c setup.rb has become spegetti code, I was forced to do this hack.
36
+ # Setup.rb shuld be re-writ. I would use package.rb instead but
37
+ # it lacks hooks and extension compilation. But we'll keep
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})"
15
50
  end
16
51
 
17
- unless File.respond_to?(:read) # Ruby 1.6
18
- def File.read(fname)
19
- open(fname) {|f|
20
- return f.read
21
- }
22
- end
23
- end
52
+ # Windows?
24
53
 
25
- unless Errno.const_defined?(:ENOTEMPTY) # Windows?
54
+ unless Errno.const_defined?(:ENOTEMPTY)
26
55
  module Errno
27
56
  class ENOTEMPTY
28
57
  # We do not raise this exception, implementation is not needed.
@@ -60,17 +89,11 @@ class ConfigTable
60
89
  attr_accessor :install_prefix
61
90
  attr_accessor :config_opt
62
91
 
63
- attr_writer :verbose
92
+ def verbose=(x) @verbose = x end
93
+ def verbose?() @verbose end
64
94
 
65
- def verbose?
66
- @verbose
67
- end
68
-
69
- attr_writer :no_harm
70
-
71
- def no_harm?
72
- @no_harm
73
- end
95
+ def no_harm=(x) @no_harm = x end
96
+ def no_harm?() @no_harm end
74
97
 
75
98
  def [](key)
76
99
  lookup(key).resolve(self)
@@ -114,9 +137,7 @@ class ConfigTable
114
137
  end
115
138
  end
116
139
 
117
- def savefile
118
- '.config'
119
- end
140
+ def savefile() '.config' end
120
141
 
121
142
  def load_savefile
122
143
  begin
@@ -139,124 +160,126 @@ class ConfigTable
139
160
  end
140
161
 
141
162
  def load_standard_entries
142
- standard_entries(@rbconfig).each do |ent|
163
+ #standard_entries(@rbconfig).each do |ent|
164
+ standard_entries.each do |ent|
143
165
  add ent
144
166
  end
145
167
  end
146
168
 
147
- def standard_entries(rbconfig)
148
- c = rbconfig
169
+ def standard_entries #(rbconfig)
170
+ rbconfig = @rbconfig
149
171
 
150
- rubypath = File.join(c['bindir'], c['ruby_install_name'] + c['EXEEXT'])
172
+ rubypath = File.join(rbconfig['bindir'], rbconfig['ruby_install_name'] + rbconfig['EXEEXT'])
151
173
 
152
- major = c['MAJOR'].to_i
153
- minor = c['MINOR'].to_i
154
- teeny = c['TEENY'].to_i
174
+ major = rbconfig['MAJOR'].to_i
175
+ minor = rbconfig['MINOR'].to_i
176
+ teeny = rbconfig['TEENY'].to_i
155
177
  version = "#{major}.#{minor}"
156
178
 
157
- # ruby ver. >= 1.4.4?
158
- newpath_p = ((major >= 2) or
159
- ((major == 1) and
160
- ((minor >= 5) or
161
- ((minor == 4) and (teeny >= 4)))))
179
+ # CHANGE Do not need to support these old versions any more.
162
180
 
163
- if c['rubylibdir']
181
+ # # ruby ver. >= 1.4.4?
182
+ # newpath_p = ((major >= 2) or
183
+ # ((major == 1) and
184
+ # ((minor >= 5) or
185
+ # ((minor == 4) and (teeny >= 4)))))
186
+
187
+ #if c['rubylibdir']
164
188
  # V > 1.6.3
165
- libruby = "#{c['prefix']}/lib/ruby"
166
- librubyver = c['rubylibdir']
167
- librubyverarch = c['archdir']
168
- siteruby = c['sitedir']
169
- siterubyver = c['sitelibdir']
170
- siterubyverarch = c['sitearchdir']
171
- elsif newpath_p
172
- # 1.4.4 <= V <= 1.6.3
173
- libruby = "#{c['prefix']}/lib/ruby"
174
- librubyver = "#{c['prefix']}/lib/ruby/#{version}"
175
- librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
176
- siteruby = c['sitedir']
177
- siterubyver = "$siteruby/#{version}"
178
- siterubyverarch = "$siterubyver/#{c['arch']}"
179
- else
180
- # V < 1.4.4
181
- libruby = "#{c['prefix']}/lib/ruby"
182
- librubyver = "#{c['prefix']}/lib/ruby/#{version}"
183
- librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
184
- siteruby = "#{c['prefix']}/lib/ruby/#{version}/site_ruby"
185
- siterubyver = siteruby
186
- siterubyverarch = "$siterubyver/#{c['arch']}"
187
- end
189
+
190
+ root = '/'
191
+ prefix = rbconfig['prefix']
192
+
193
+ libruby = "#{prefix}/lib/ruby"
194
+ librubyver = rbconfig['rubylibdir']
195
+ librubyverarch = rbconfig['archdir']
196
+ siteruby = rbconfig['sitedir']
197
+ siterubyver = rbconfig['sitelibdir']
198
+ siterubyverarch = rbconfig['sitearchdir']
199
+
200
+ bindir = paramize(rbconfig['bindir'])
201
+ libdir = paramize(rbconfig['libdir'])
202
+ datadir = paramize(rbconfig['datadir'])
203
+ mandir = paramize(rbconfig['mandir'])
204
+ sysconfdir = paramize(rbconfig['sysconfdir'])
205
+ localstatedir = paramize(rbconfig['localstatedir'])
206
+
207
+ # elsif newpath_p
208
+ # # 1.4.4 <= V <= 1.6.3
209
+ # libruby = "#{c['prefix']}/lib/ruby"
210
+ # librubyver = "#{c['prefix']}/lib/ruby/#{version}"
211
+ # librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
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
+
188
225
  parameterize = lambda {|path|
189
- path.sub(/\A#{Regexp.quote(c['prefix'])}/, '$prefix')
226
+ path.sub(/\A#{Regexp.quote(rbconfig['prefix'])}/, '$prefix')
190
227
  }
191
228
 
192
- if arg = c['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg }
229
+ if arg = rbconfig['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg }
193
230
  makeprog = arg.sub(/'/, '').split(/=/, 2)[1]
194
231
  else
195
232
  makeprog = 'make'
196
233
  end
197
234
 
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
+
198
251
  [
199
- ExecItem.new('installdirs', 'std/site/home',
200
- 'std: install under libruby; site: install under site_ruby; home: install under $HOME')\
201
- {|val, table|
202
- case val
203
- when 'std'
204
- table['rbdir'] = '$librubyver'
205
- table['sodir'] = '$librubyverarch'
206
- when 'site'
207
- table['rbdir'] = '$siterubyver'
208
- table['sodir'] = '$siterubyverarch'
209
- when 'home'
210
- setup_rb_error '$HOME was not set' unless ENV['HOME']
211
- table['prefix'] = ENV['HOME']
212
- table['rbdir'] = '$libdir/ruby'
213
- table['sodir'] = '$libdir/ruby'
214
- end
215
- },
216
- PathItem.new('prefix', 'path', c['prefix'],
217
- 'path prefix of target environment'),
218
- PathItem.new('bindir', 'path', parameterize.call(c['bindir']),
219
- 'the directory for commands'),
220
- PathItem.new('libdir', 'path', parameterize.call(c['libdir']),
221
- 'the directory for libraries'),
222
- PathItem.new('datadir', 'path', parameterize.call(c['datadir']),
223
- 'the directory for shared data'),
224
- PathItem.new('mandir', 'path', parameterize.call(c['mandir']),
225
- 'the directory for man pages'),
226
- PathItem.new('sysconfdir', 'path', parameterize.call(c['sysconfdir']),
227
- 'the directory for system configuration files'),
228
- PathItem.new('localstatedir', 'path', parameterize.call(c['localstatedir']),
229
- 'the directory for local state data'),
230
- PathItem.new('libruby', 'path', libruby,
231
- 'the directory for ruby libraries'),
232
- PathItem.new('librubyver', 'path', librubyver,
233
- 'the directory for standard ruby libraries'),
234
- PathItem.new('librubyverarch', 'path', librubyverarch,
235
- 'the directory for standard ruby extensions'),
236
- PathItem.new('siteruby', 'path', siteruby,
237
- 'the directory for version-independent aux ruby libraries'),
238
- PathItem.new('siterubyver', 'path', siterubyver,
239
- 'the directory for aux ruby libraries'),
240
- PathItem.new('siterubyverarch', 'path', siterubyverarch,
241
- 'the directory for aux ruby binaries'),
242
- PathItem.new('rbdir', 'path', '$siterubyver',
243
- 'the directory for ruby scripts'),
244
- PathItem.new('sodir', 'path', '$siterubyverarch',
245
- 'the directory for ruby extentions'),
246
- PathItem.new('rubypath', 'path', rubypath,
247
- 'the path to set to #! line'),
248
- ProgramItem.new('rubyprog', 'name', rubypath,
249
- 'the ruby program using for installation'),
250
- ProgramItem.new('makeprog', 'name', makeprog,
251
- 'the make program to compile ruby extentions'),
252
- SelectItem.new('shebang', 'all/ruby/never', 'ruby',
253
- 'shebang line (#!) editing mode'),
254
- BoolItem.new('without-ext', 'yes/no', 'no',
255
- 'does not compile/install ruby extentions')
252
+ ExecItem.new('installdirs', 'std/site/home', 'install under libruby, site_ruby or $HOME respectively', &installdir_lambda),
253
+ PathItem.new('root', 'path', root, 'root destination directory'),
254
+ PathItem.new('prefix', 'path', prefix, 'path prefix of target environment'),
255
+ PathItem.new('bindir', 'path', bindir, 'the directory for commands'),
256
+ PathItem.new('libdir', 'path', libdir, 'the directory for libraries'),
257
+ PathItem.new('datadir', 'path', datadir, 'the directory for shared data'),
258
+ PathItem.new('mandir', 'path', mandir, 'the directory for man pages'),
259
+ PathItem.new('sysconfdir', 'path', sysconfdir, 'the directory for system configuration files'),
260
+ PathItem.new('localstatedir', 'path', localstatedir, 'the directory for local state data'),
261
+ PathItem.new('libruby', 'path', libruby, 'the directory for ruby libraries'),
262
+ PathItem.new('librubyver', 'path', librubyver, 'the directory for standard ruby libraries'),
263
+ PathItem.new('librubyverarch', 'path', librubyverarch, 'the directory for standard ruby extensions'),
264
+ PathItem.new('siteruby', 'path', siteruby, 'the directory for version-independent aux ruby libraries'),
265
+ PathItem.new('siterubyver', 'path', siterubyver, 'the directory for aux ruby libraries'),
266
+ PathItem.new('siterubyverarch', 'path', siterubyverarch, 'the directory for aux ruby binaries'),
267
+ PathItem.new('rbdir', 'path', '$siterubyver', 'the directory for ruby scripts'),
268
+ PathItem.new('sodir', 'path', '$siterubyverarch', 'the directory for ruby extentions'),
269
+ PathItem.new('rubypath', 'path', rubypath, 'the path to set to #! line'),
270
+ ProgramItem.new('rubyprog', 'name', rubypath, 'the ruby program using for installation'),
271
+ ProgramItem.new('makeprog', 'name', makeprog, 'the make program to compile ruby extentions'),
272
+ SelectItem.new('shebang', 'all/ruby/never', 'ruby', 'shebang line (#!) editing mode'),
273
+ BoolItem.new('without-ext', 'yes/no', 'no', 'does not compile/install ruby extentions')
256
274
  ]
257
275
  end
258
276
  private :standard_entries
259
277
 
278
+ def paramize( path )
279
+ path.sub(/\A#{Regexp.quote(@rbconfig['prefix'])}/, '$prefix')
280
+ end
281
+ private :paramize
282
+
260
283
  def load_multipackage_entries
261
284
  multipackage_entries().each do |ent|
262
285
  add ent
@@ -265,10 +288,8 @@ class ConfigTable
265
288
 
266
289
  def multipackage_entries
267
290
  [
268
- PackageSelectionItem.new('with', 'name,name...', '', 'ALL',
269
- 'package names that you want to install'),
270
- PackageSelectionItem.new('without', 'name,name...', '', 'NONE',
271
- 'package names that you do not want to install')
291
+ PackageSelectionItem.new('with', 'name,name...', '', 'ALL', 'package names that you want to install'),
292
+ PackageSelectionItem.new('without', 'name,name...', '', 'NONE', 'package names that you do not want to install')
272
293
  ]
273
294
  end
274
295
  private :multipackage_entries
@@ -333,13 +354,8 @@ class ConfigTable
333
354
  "--#{@name}=#{@template}"
334
355
  end
335
356
 
336
- def value?
337
- true
338
- end
339
-
340
- def value
341
- @value
342
- end
357
+ def value? ; true ; end
358
+ def value ; @value ; end
343
359
 
344
360
  def resolve(table)
345
361
  @value.gsub(%r<\$([^/]+)>) { table[$1] }
@@ -358,9 +374,7 @@ class ConfigTable
358
374
  end
359
375
 
360
376
  class BoolItem < Item
361
- def config_type
362
- 'bool'
363
- end
377
+ def config_type() 'bool' end
364
378
 
365
379
  def help_opt
366
380
  "--#{@name}"
@@ -380,12 +394,9 @@ class ConfigTable
380
394
  end
381
395
 
382
396
  class PathItem < Item
383
- def config_type
384
- 'path'
385
- end
397
+ def config_type() 'path' end
386
398
 
387
399
  private
388
-
389
400
  def check(path)
390
401
  setup_rb_error "config: --#{@name} requires argument" unless path
391
402
  path[0,1] == '$' ? path : File.expand_path(path)
@@ -393,9 +404,7 @@ class ConfigTable
393
404
  end
394
405
 
395
406
  class ProgramItem < Item
396
- def config_type
397
- 'program'
398
- end
407
+ def config_type() 'program' end
399
408
  end
400
409
 
401
410
  class SelectItem < Item
@@ -404,12 +413,9 @@ class ConfigTable
404
413
  @ok = selection.split('/')
405
414
  end
406
415
 
407
- def config_type
408
- 'select'
409
- end
416
+ def config_type() 'select' end
410
417
 
411
418
  private
412
-
413
419
  def check(val)
414
420
  unless @ok.include?(val.strip)
415
421
  setup_rb_error "config: use --#{@name}=#{@template} (#{val})"
@@ -536,7 +542,9 @@ end # class ConfigTable
536
542
  module FileOperations
537
543
 
538
544
  def mkdir_p(dirname, prefix = nil)
539
- dirname = prefix + File.expand_path(dirname) if prefix
545
+ dirname = File.join(prefix, File.expand_path(dirname)) if prefix
546
+ dirname = File.join( $setup_install_root, dirname ) if $setup_install_root
547
+
540
548
  $stderr.puts "mkdir -p #{dirname}" if verbose?
541
549
  return if no_harm?
542
550
 
@@ -620,11 +628,15 @@ module FileOperations
620
628
  end
621
629
 
622
630
  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
+
623
635
  $stderr.puts "install #{from} #{dest}" if verbose?
624
636
  return if no_harm?
625
637
 
626
- realdest = prefix ? prefix + File.expand_path(dest) : dest
627
638
  realdest = File.join(realdest, File.basename(from)) if File.dir?(realdest)
639
+
628
640
  str = File.binread(from)
629
641
  if diff?(str, realdest)
630
642
  verbose_off {
@@ -659,7 +671,7 @@ module FileOperations
659
671
  def ruby(*args)
660
672
  command config('rubyprog'), *args
661
673
  end
662
-
674
+
663
675
  def make(task = nil)
664
676
  command(*[config('makeprog'), task].compact)
665
677
  end
@@ -699,33 +711,14 @@ module HookScriptAPI
699
711
  @config[key] = val
700
712
  end
701
713
 
702
- #
703
714
  # srcdir/objdir (works only in the package directory)
704
- #
705
-
706
- def curr_srcdir
707
- "#{srcdir_root()}/#{relpath()}"
708
- end
709
-
710
- def curr_objdir
711
- "#{objdir_root()}/#{relpath()}"
712
- end
713
-
714
- def srcfile(path)
715
- "#{curr_srcdir()}/#{path}"
716
- end
717
715
 
718
- def srcexist?(path)
719
- File.exist?(srcfile(path))
720
- end
721
-
722
- def srcdirectory?(path)
723
- File.dir?(srcfile(path))
724
- end
725
-
726
- def srcfile?(path)
727
- File.file?(srcfile(path))
728
- end
716
+ def curr_srcdir() "#{srcdir_root()}/#{relpath()}" end
717
+ def curr_objdir() "#{objdir_root()}/#{relpath()}" end
718
+ def srcfile(path) "#{curr_srcdir()}/#{path}" end
719
+ def srcexist?(path) File.exist?(srcfile(path)) end
720
+ def srcdirectory?(path) File.dir?(srcfile(path)) end
721
+ def srcfile?(path) File.file?(srcfile(path)) end
729
722
 
730
723
  def srcentries(path = '.')
731
724
  Dir.open("#{curr_srcdir()}/#{path}") {|d|
@@ -764,8 +757,8 @@ class ToplevelInstaller
764
757
  [ 'distclean',"does `make distclean' for each extention" ]
765
758
  ]
766
759
 
767
- def ToplevelInstaller.invoke
768
- config = ConfigTable.new(load_rbconfig())
760
+ def self.invoke
761
+ config = ConfigTable.new(load_rbconfig)
769
762
  config.load_standard_entries
770
763
  config.load_multipackage_entries if multipackage?
771
764
  config.fixup
@@ -773,11 +766,11 @@ class ToplevelInstaller
773
766
  klass.new(File.dirname($0), config).invoke
774
767
  end
775
768
 
776
- def ToplevelInstaller.multipackage?
769
+ def self.multipackage?
777
770
  File.dir?(File.dirname($0) + '/packages')
778
771
  end
779
772
 
780
- def ToplevelInstaller.load_rbconfig
773
+ def self.load_rbconfig
781
774
  if arg = ARGV.detect {|arg| /\A--rbconfig=/ =~ arg }
782
775
  ARGV.delete(arg)
783
776
  load File.expand_path(arg.split(/=/, 2)[1])
@@ -788,6 +781,7 @@ class ToplevelInstaller
788
781
  ::Config::CONFIG
789
782
  end
790
783
 
784
+
791
785
  def initialize(ardir_root, config)
792
786
  @ardir = File.expand_path(ardir_root)
793
787
  @config = config
@@ -826,7 +820,7 @@ class ToplevelInstaller
826
820
  __send__ "exec_#{task}"
827
821
  end
828
822
  end
829
-
823
+
830
824
  def run_metaconfigs
831
825
  @config.load_script "#{@ardir}/metaconfig"
832
826
  end
@@ -839,17 +833,9 @@ class ToplevelInstaller
839
833
  # Hook Script API bases
840
834
  #
841
835
 
842
- def srcdir_root
843
- @ardir
844
- end
845
-
846
- def objdir_root
847
- '.'
848
- end
849
-
850
- def relpath
851
- '.'
852
- end
836
+ def srcdir_root() @ardir end
837
+ def objdir_root() '.' end
838
+ def relpath() '.' end
853
839
 
854
840
  #
855
841
  # Option Parsing
@@ -979,6 +965,7 @@ class ToplevelInstaller
979
965
  out.puts
980
966
  out.puts 'Options for INSTALL:'
981
967
  out.printf fmt, '--no-harm', 'only display what to do if given', 'off'
968
+ out.printf fmt, '--root=path', 'install root directory (effects all paths)', '/'
982
969
  out.printf fmt, '--prefix=path', 'install path prefix', ''
983
970
  out.puts
984
971
  end
@@ -1173,24 +1160,15 @@ class Installer
1173
1160
  "#<#{self.class} #{File.basename(@srcdir)}>"
1174
1161
  end
1175
1162
 
1176
- def noop(rel)
1177
- end
1163
+ def noop(rel) ; end
1178
1164
 
1179
1165
  #
1180
1166
  # Hook Script API base methods
1181
1167
  #
1182
1168
 
1183
- def srcdir_root
1184
- @srcdir
1185
- end
1186
-
1187
- def objdir_root
1188
- @objdir
1189
- end
1190
-
1191
- def relpath
1192
- @currdir
1193
- end
1169
+ def srcdir_root() @srcdir end
1170
+ def objdir_root() @objdir end
1171
+ def relpath() @currdir end
1194
1172
 
1195
1173
  #
1196
1174
  # Config Access
@@ -1373,6 +1351,7 @@ class Installer
1373
1351
 
1374
1352
  def install_files(list, dest, mode)
1375
1353
  mkdir_p dest, @config.install_prefix
1354
+ #mkdir_p dest, offset_dir
1376
1355
  list.each do |fname|
1377
1356
  install fname, dest, mode, @config.install_prefix
1378
1357
  end