reap 6.0.2 → 9.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. data/CHANGES +6 -0
  2. data/COPYING +666 -395
  3. data/MANIFEST +139 -0
  4. data/NOTES +12 -0
  5. data/README +19 -163
  6. data/bin/reap-announce +7 -0
  7. data/bin/reap-check-load +8 -0
  8. data/bin/reap-check-syntax +7 -0
  9. data/bin/reap-clean +7 -0
  10. data/bin/reap-clobber +7 -0
  11. data/bin/reap-doc +7 -0
  12. data/bin/reap-doc-rdoc +7 -0
  13. data/bin/reap-doc-ri +7 -0
  14. data/bin/reap-init +69 -0
  15. data/bin/reap-inspect +7 -0
  16. data/bin/reap-install +8 -0
  17. data/bin/reap-install-gem +8 -0
  18. data/bin/reap-log +7 -0
  19. data/bin/reap-log-changes +8 -0
  20. data/bin/reap-log-notes +8 -0
  21. data/bin/reap-make +7 -0
  22. data/bin/reap-make-clean +7 -0
  23. data/bin/reap-make-distclean +7 -0
  24. data/bin/reap-make-extconf +7 -0
  25. data/bin/reap-make-static +8 -0
  26. data/bin/reap-package +8 -0
  27. data/bin/reap-package-gem +7 -0
  28. data/bin/reap-package-tgz +7 -0
  29. data/bin/reap-package-zip +7 -0
  30. data/bin/reap-prepare +7 -0
  31. data/bin/reap-publish +7 -0
  32. data/bin/reap-release +7 -0
  33. data/bin/reap-scaffold +8 -0
  34. data/bin/reap-scm-branch +7 -0
  35. data/bin/reap-scm-tag +7 -0
  36. data/bin/reap-spec +7 -0
  37. data/bin/reap-spec-doc +8 -0
  38. data/bin/reap-stamp +7 -0
  39. data/bin/reap-stats +7 -0
  40. data/bin/reap-test +7 -0
  41. data/bin/reap-test-cross +7 -0
  42. data/bin/reap-test-load +9 -0
  43. data/bin/reap-test-solo +7 -0
  44. data/bin/reap-uninstall +7 -0
  45. data/bin/reap-uninstall-gem +7 -0
  46. data/data/reap/base/CHANGES +19 -0
  47. data/data/reap/base/COPYING +674 -0
  48. data/data/reap/base/NOTES +12 -0
  49. data/data/reap/base/README +8 -0
  50. data/data/reap/build/rake/Rakefile +130 -0
  51. data/{forge/reference/installers → data/reap/build/rake}/setup.rb +155 -97
  52. data/data/reap/build/rake-lite/install.rb +79 -0
  53. data/data/reap/build/tasks/task/rdoc +211 -0
  54. data/data/reap/{setup.rb → build/tasks/task/setup} +248 -200
  55. data/data/reap/build/tasks/task/test +38 -0
  56. data/data/reap/init/meta/project.yaml +21 -0
  57. data/demo/README +15 -0
  58. data/demo/lib/foo/foo.rb +7 -0
  59. data/demo/meta/VERSION +1 -0
  60. data/demo/meta/project.yaml +21 -0
  61. data/lib/reap/application.rb +80 -0
  62. data/lib/reap/default.yaml +77 -0
  63. data/lib/reap/extensions/array.rb +50 -0
  64. data/lib/reap/extensions/hash.rb +63 -0
  65. data/lib/reap/extensions/string.rb +31 -0
  66. data/lib/reap/extensions.rb +6 -0
  67. data/lib/reap/iobject.rb +264 -0
  68. data/lib/reap/manager/announce.rb +193 -0
  69. data/lib/reap/manager/check.rb +109 -0
  70. data/lib/reap/manager/clean.rb +58 -0
  71. data/lib/reap/manager/gem.rb +200 -0
  72. data/lib/reap/manager/html.rb +69 -0
  73. data/lib/reap/manager/log.rb +214 -0
  74. data/lib/reap/manager/make.rb +109 -0
  75. data/lib/reap/manager/pack.rb +232 -0
  76. data/lib/reap/manager/publish.rb +72 -0
  77. data/lib/reap/manager/rdoc.rb +194 -0
  78. data/lib/reap/manager/release.rb +78 -0
  79. data/lib/reap/manager/rubyforge.rb +44 -0
  80. data/lib/reap/manager/scaffold.rb +138 -0
  81. data/lib/reap/manager/scm.rb +66 -0
  82. data/lib/reap/manager/site.rb +27 -0
  83. data/lib/reap/manager/spec.rb +94 -0
  84. data/lib/reap/manager/stats.rb +145 -0
  85. data/lib/reap/manager/svn.rb +76 -0
  86. data/lib/reap/manager/test.rb +389 -0
  87. data/lib/reap/manager.rb +74 -0
  88. data/lib/reap/metadata.rb +603 -0
  89. data/lib/reap/project.rb +165 -0
  90. data/lib/reap/settings.rb +67 -0
  91. data/lib/reap/systems/rubyforge.rb +737 -0
  92. data/lib/reap/systems/subversion.rb +333 -0
  93. data/lib/reap/utilities/fileutils.rb +304 -0
  94. data/lib/reap/utilities/netutils.rb +221 -0
  95. data/lib/reap/utilities/setuputils.rb +124 -0
  96. data/lib/reap/utilities/shellutils.rb +175 -0
  97. data/log/Changelog.txt +107 -0
  98. data/log/FIXME.txt +25 -0
  99. data/log/TODO.txt +72 -0
  100. data/meta/VERSION +1 -0
  101. data/meta/description +4 -0
  102. data/meta/project.yaml +20 -0
  103. data/task/man +14 -0
  104. data/task/rdoc +20 -0
  105. data/{data/reap/scaffold/standard/setup.rb → task/setup} +248 -200
  106. metadata +225 -153
  107. data/ProjectInfo +0 -105
  108. data/bin/reap +0 -5
  109. data/bin/rubytest +0 -5
  110. data/data/reap/install.rb +0 -62
  111. data/data/reap/scaffold/standard/COPYING +0 -403
  112. data/data/reap/scaffold/standard/ChangeLog +0 -0
  113. data/data/reap/scaffold/standard/INSTALL +0 -14
  114. data/data/reap/scaffold/standard/ProjectInfo +0 -77
  115. data/data/reap/scaffold/standard/README +0 -3
  116. data/data/reap/scaffold/standard/Rakefile +0 -10
  117. data/data/reap/scaffold/standard/TODO +0 -0
  118. data/data/reap/scaffold/subversion/trunk/COPYING +0 -403
  119. data/data/reap/scaffold/subversion/trunk/ChangeLog +0 -0
  120. data/data/reap/scaffold/subversion/trunk/INSTALL +0 -14
  121. data/data/reap/scaffold/subversion/trunk/ProjectInfo +0 -76
  122. data/data/reap/scaffold/subversion/trunk/README +0 -3
  123. data/data/reap/scaffold/subversion/trunk/Rakefile +0 -10
  124. data/data/reap/scaffold/subversion/trunk/TODO +0 -0
  125. data/data/reap/scaffold/subversion/trunk/setup.rb +0 -1568
  126. data/forge/ProjectInfo +0 -38
  127. data/forge/ProjectInfo.rb +0 -76
  128. data/forge/TODO +0 -10
  129. data/forge/installer.rb +0 -250
  130. data/forge/reference/Rakefile +0 -124
  131. data/forge/reference/Rakefile.htm +0 -69
  132. data/forge/reference/aRakefile +0 -60
  133. data/forge/reference/compositepublisher.rb +0 -24
  134. data/forge/reference/ftptools.rb +0 -139
  135. data/forge/reference/installers/package.rb +0 -629
  136. data/forge/reference/license-each.rb +0 -85
  137. data/forge/reference/publisher.rb +0 -75
  138. data/forge/reference/rubyforge.rb +0 -247
  139. data/forge/reference/rubyforgepublisher.rb +0 -18
  140. data/forge/reference/sshpublisher.rb +0 -47
  141. data/forge/reference/suby-cvs.rb +0 -46
  142. data/forge/scaffold.rb +0 -126
  143. data/forge/unit_runner/README +0 -6
  144. data/forge/unit_runner/commentrunner.rb +0 -62
  145. data/forge/unit_runner/cunit.rb +0 -17
  146. data/forge/unit_runner/forkedrunner.rb +0 -91
  147. data/forge/unit_runner/sample.rb +0 -16
  148. data/lib/reap/bin/reap.rb +0 -230
  149. data/lib/reap/bin/rubytest.rb +0 -53
  150. data/lib/reap/class/announce.rb +0 -220
  151. data/lib/reap/class/doap.rb +0 -80
  152. data/lib/reap/class/extest.rb +0 -146
  153. data/lib/reap/class/filer.rb +0 -62
  154. data/lib/reap/class/manifest.rb +0 -68
  155. data/lib/reap/class/package.rb +0 -576
  156. data/lib/reap/class/publish.rb +0 -152
  157. data/lib/reap/class/rdoc.rb +0 -123
  158. data/lib/reap/class/test.rb +0 -264
  159. data/lib/reap/projectinfo.rb +0 -208
  160. data/lib/reap/rake.rb +0 -42
  161. data/lib/reap/reap.rb +0 -89
  162. data/lib/reap/tasks.rb +0 -756
  163. data/lib/reap/taskutils.rb +0 -122
  164. data/note/LATEST +0 -44
  165. data/note/doap.xml +0 -28
  166. data/note/history/Rakefile-0.1 +0 -308
  167. data/sample/ProjectInfo +0 -96
  168. data/sample/Rakefile +0 -9
  169. data/sample/Reapfile +0 -11
  170. data/sample/task/demo.rb +0 -15
  171. data/setup.rb +0 -1568
  172. data/web/ProjectInfo.html +0 -75
  173. data/web/images/grape.jpg +0 -0
  174. data/web/index.html +0 -312
@@ -1,576 +0,0 @@
1
- #--
2
- # ___ _
3
- # | _ \__ _ __| |____ _ __ _ ___
4
- # | _/ _` / _| / / _` / _` / -_)
5
- # |_| \__,_\__|_\_\__,_\__, \___|
6
- # |___/
7
- #++
8
-
9
- require 'facet/fileutils/safe_ln.rb'
10
- require 'facet/filelist.rb' unless defined?( FileList ) # prevent overlap with Rake's
11
-
12
- module Reap
13
-
14
- # = Package
15
- #
16
- # This class creates standard .zip, .tgz, or .tbz
17
- # packages, plus .gem or .deb distributions.
18
- #
19
- # Builds distribution packages. The package task supports
20
- # tar.gz, tar.bz2, zip source packages and gem, pacman and
21
- # debian ditribution packages.
22
- #
23
- # Task specific settings:
24
- #
25
- # dir Directory in which to store distributions.
26
- # include Files to include in distribution.
27
- # exclude Files to exclude from those.
28
- # distribute List of distribution types desired.
29
- # (tgz, tar.gz, tbz, tar.bz2, zip, gem, deb, pac)
30
- # project Project name.
31
- # category Software category.
32
- # architecture Can be any, i368, i686, ppc, etc.
33
- # dependencies List of packages this program depends.
34
- # recommends List of packages that can be used with this package.
35
- # replaces List of packages this one replaces.
36
- # executables Executable files in this distribution.
37
- # rules (see below)
38
- #
39
- # RubyGems specific settings:
40
- #
41
- # autorequire
42
- # platform
43
- # require_paths
44
- #
45
- # The package task also has subsection for each type of distribution.
46
- # These can be used to override settings in the package information
47
- # if they in some way differ. Possible subsections are:
48
- #
49
- # gems
50
- # pacman
51
- # debian
52
- #
53
- # Finally there is one last parameter that you can use for creating packages
54
- # called 'rules'. The rules setting allows you to define how files are
55
- # copied into the distribution package, so instead of a one to one copy
56
- # of the included files, you can actually have a file placed in a different
57
- # location within the distribution. This can be very handy if you wish to
58
- # develop you project with one layout, but need to distribute it with another.
59
- #
60
- # The rules parameter is a literal string that consists of one rule per line.
61
- # A line consists three space separated entries.
62
- #
63
- # from_path, file_glob, to_path
64
- #
65
- # If no 'to_path' is given then it is considered the same as the 'from_path'.
66
- # It also supports two variables $name and $version which will be substitued
67
- # any of these entries. Here is a possible example:
68
- #
69
- # rules: |
70
- # lib **/* lib/$name/$version
71
- #
72
- # This will move any file under lib/ to the equivalent location under lib/$name/$version/.
73
- # The default set of rules is a mirror image transfer, spelled out it would be:
74
- #
75
- # rules: |
76
- # bin *
77
- # ext **/*
78
- # lib **/*
79
- # data **/*
80
- # conf **/*
81
- #
82
- # If your using Rolls against a normal project folder the alterntive is to create
83
- # versioned paths, probably as follows:
84
- #
85
- # rules: |
86
- # ext/$name **/* $name/$version
87
- # lib/$name **/* $name/$version
88
- # data/$name **/* $name/$version
89
- # conf/$name **/* $name/$version ?
90
- #
91
- # Please note that the rules parameter is a new feature and is still considered beta.
92
-
93
- class Package
94
-
95
- include TaskUtils
96
-
97
- KINDS = [ 'bin', 'lib', 'ext', 'data', 'conf', 'doc' ]
98
- LOCATIONS = [ 'dist', 'pkg', 'release', 'package', 'distribution' ]
99
- MUST_EXCLUDE = [ 'InstalledFiles', '**/CVS/**/*', '**/*~', 'dist', 'pkg', 'release' ]
100
-
101
- attr :pkg
102
-
103
- # Setup package task settings.
104
-
105
- def initialize( pkg )
106
- @pkg = pkg
107
-
108
- pkg.status ||= 'development'
109
- pkg.series ||= '1'
110
- pkg.author ||= "Anonymous"
111
- pkg.maintainer ||= pkg.author
112
- pkg.email ||= ''
113
- pkg.summary ||= ''
114
- pkg.architecture ||= 'any'
115
- pkg.license ||= 'Ruby/GPL'
116
-
117
- pkg.dir ||= LOCATIONS.find { |f| File.directory?(f) } || 'dist'
118
- pkg.date ||= Time.now.strftime("%Y-%m-%d")
119
-
120
- d = pkg.date.split('-').collect{ |e| e.to_i }
121
- #d[0] = d[0] - 2000 # No need to keep the 2000
122
- pkg.version ||= d.join('.')
123
-
124
- if $BUILD_VERSION
125
- pkg.buildno = Time.now.strftime("%H*60+%M")
126
- pkg.version += ".#{pkg.buildno}"
127
- end
128
-
129
- pkg.package_name ||= "#{pkg.name}-#{pkg.version}"
130
-
131
- pkg.exclude ||= []
132
- pkg.exclude |= MUST_EXCLUDE
133
-
134
- pkg.include ||= ['**/*']
135
-
136
- # distribute types include 'tgz', 'tbz', 'zip', 'tar.gz' 'tar.bz2', 'gem', 'pac' and 'deb'.
137
-
138
- pkg.distribute ||= [ 'gem', 'tar.bz2', 'zip' ]
139
- pkg.distribute = [pkg.distribute].flatten.collect { |t| t.to_s.strip.downcase }
140
-
141
- pkg.dependencies ||= []
142
- pkg.executables ||= []
143
- pkg.requirements ||= []
144
- pkg.recommends ||= []
145
- pkg.conflicts ||= []
146
- pkg.replaces ||= []
147
-
148
- @rules = parse_rules( pkg.rules )
149
- end
150
-
151
- private
152
-
153
- #--
154
- # TODO use shellwords
155
- #++
156
- def parse_rules( spec )
157
- return [] unless spec
158
- rules = [] #Hash.new { |h,k| h[k] = [] }
159
- lines = spec.strip.split("\n")
160
- lines.each { |line|
161
- words = line.strip.split(/\s+/)
162
- from, glob, to = *words
163
- rules << [ vsub(from), vsub(glob), vsub(to) ]
164
- }
165
- rules
166
- end
167
-
168
- def vsub( str )
169
- return nil if str.nil?
170
- str = str.gsub( '$version', pkg.version.to_s ) #@version.to_s )
171
- str = str.gsub( '$name', pkg.name.to_s )
172
- str
173
- end
174
-
175
- public
176
-
177
- # Generate packages.
178
-
179
- def generate_packages
180
-
181
- release_folder = File.join( pkg.dir, pkg.package_name )
182
- mirror_folder = File.join( pkg.dir, pkg.package_name, pkg.package_name )
183
-
184
- @release_path = File.expand_path( release_folder )
185
- @mirror_path = File.expand_path( mirror_folder )
186
-
187
- if FileTest.directory?(release_folder)
188
- if $FORCE
189
- puts "Removing old directory '#{File.expand_path(release_folder)}'..."
190
- FileUtils.rm_r(release_folder) unless $PRETEND
191
- else
192
- puts "Package directory '#{pkg.package_name}' already exists. Use -f option to overwrite."
193
- return nil
194
- end
195
- end
196
-
197
- #puts "Creating #{pkg.distribute.join(',')} packages..."
198
-
199
- # First we make a copy of the files to be distributed.
200
-
201
- if $PRETEND
202
- puts "mkdir_p #{mirror_folder}"
203
- else
204
- FileUtils.mkdir_p( mirror_folder )
205
- end
206
-
207
- trans = transfer_rules()
208
-
209
- list = ::FileList.new
210
- list.include(*pkg.include)
211
- list.exclude(*pkg.exclude) if pkg.exclude
212
- list.resolve
213
-
214
- # build transfer table
215
- folders, files = [], {}
216
- list.each do |from|
217
- to = trans.key?(from) ? trans[from] : from
218
- #to = File.join( mirror_folder, to )
219
- if File.directory?( from )
220
- folders << to
221
- else
222
- files[ from ] = to
223
- folders << File.dirname( to ) # ensure creation of files' folder
224
- end
225
- end
226
-
227
- folders.delete('')
228
- folders.uniq!
229
-
230
- # create folders
231
- folders.each do |to|
232
- to = File.join( mirror_folder, to )
233
- if $PRETEND
234
- puts "mkdir_p #{to}"
235
- else
236
- FileUtils.mkdir_p( to )
237
- end
238
- end
239
-
240
- # safe link files
241
- files.each do |from, to|
242
- to = File.join( mirror_folder, to )
243
- if $PRETEND
244
- puts "safe_ln #{from}, #{to}"
245
- else
246
- FileUtils.safe_ln( from, to )
247
- end
248
- end
249
-
250
- # store package folders and files relative to mirror_folder (gems build uses this)
251
- @package_files = folders + files.values
252
- #@package_files = package_files.collect{ |f| f.sub("#{mirror_folder}/", '') }
253
-
254
- # Now we create standard packages from the copy.
255
-
256
- FileUtils.chdir( @release_path ) do
257
- pkg.distribute.each do |t|
258
- sh_cmd = nil
259
- prefix = 'ERROR' # in case of unforseen bug
260
- case t
261
- when 'tbz', 'bz2', 'bzip2', 'tar.bz2'
262
- prefix = ( t == 'tbz' ? 'tbz' : 'tar.bz2' )
263
- sh_cmd = 'tar --bzip2 -cvf'
264
- puts "\n[SHELL #{prefix.upcase}]"
265
- when 'tgz', 'tar.gz'
266
- prefix = ( t == 'tgz' ? 'tgz' : 'tar.gz' )
267
- sh_cmd = 'tar --gzip -cvf'
268
- puts "\n[SHELL #{prefix.upcase}]"
269
- when 'zip'
270
- prefix = 'zip'
271
- sh_cmd = 'zip -r'
272
- puts "\n[SHELL #{prefix.upcase}]"
273
- when 'gem', 'deb', 'pac'
274
- sh_cmd = nil
275
- else
276
- puts "WARNING: Unknown package type '#{t}' skipped"
277
- sh_cmd = nil
278
- end
279
- sh %{#{sh_cmd} #{pkg.package_name}.#{prefix} #{pkg.package_name}} if sh_cmd
280
- end
281
- puts
282
- end
283
-
284
- # TODO Finish pretend mode for the distribution types.
285
- return if $PRETEND
286
-
287
- # create gem package
288
-
289
- if pkg.distribute.include?('gem')
290
-
291
- # load rubygems if available
292
- begin
293
- require 'rubygems'
294
- run_gem
295
- rescue LoadError
296
- # no rubygems
297
- tell "WARNING: Package .gem requested, but rubygems not found (skipped)."
298
- end
299
-
300
- # if defined?(::Gem)
301
- # run_gem
302
- # else
303
- # tell "WARNING: Package .gem requested, but rubygems not found (skipped)."
304
- # end
305
- end
306
-
307
- # create debian package
308
-
309
- if pkg.distribute.include?('deb')
310
- if true # TODO ensure required debian tools here
311
- run_deb
312
- else
313
- tell "WARNING: Package .deb requested, but debian tools not found (skipped)."
314
- end
315
- end
316
-
317
- # create PKGBUILD (pacman, archlinux)
318
-
319
- if pkg.distribute.include?('pac')
320
- if true # TODO ensure required tools here
321
- run_pacman
322
- else
323
- tell "WARNING: Pacman package requested, but required tools not found (skipped)."
324
- end
325
- end
326
-
327
- # we can remove mirror folder now
328
-
329
- FileUtils.rm_r(mirror_folder) unless $PRETEND #or $OPTIONS[:retain]
330
-
331
- return true
332
- end
333
-
334
- private
335
-
336
- # Determine transfer rules.
337
- #
338
- # Rules should proceed from the most general to the most specific.
339
-
340
- def transfer_rules
341
- trans = {}
342
- @rules.each do |rule|
343
- from, glob, to = *rule
344
- to = from unless to #?
345
- files = Dir.glob( File.join( from, glob ) )
346
- files.each do |file|
347
- trans[file] = File.join( to, file.sub(from,'') )
348
- end
349
- end
350
- trans
351
- end
352
-
353
- # Build a gem package.
354
-
355
- def run_gem
356
-
357
- # use subsection if given
358
- if pkg.gem
359
- pkg = pkg().__merge__( pkg.gem )
360
- else
361
- pkg = pkg()
362
- end
363
-
364
- spec = Gem::Specification.new { |s|
365
- s.name = pkg.name
366
- s.version = pkg.version
367
-
368
- pkg.dependencies.each { |d,v|
369
- if v
370
- s.add_dependency(d, v)
371
- else
372
- s.add_dependency(d)
373
- end
374
- }
375
-
376
- if pkg.platform
377
- begin
378
- s.platform = ::Gem::Platform.const_get(pkg.platform.upcase)
379
- rescue NameError
380
- s.platform = ::Gem::Platform::RUBY
381
- end
382
- else
383
- s.platform = ::Gem::Platform::RUBY
384
- end
385
-
386
- s.summary = pkg.summary
387
- s.requirements = pkg.requirements
388
-
389
- # s.files = Dir.glob("lib/**/*").delete_if {|item| item.include?("CVS")}
390
- # s.files.concat Dir.glob("bin/**/*").delete_if {|item| item.include?("CVS")}
391
- #package_files = FileList.new
392
- #package_files.include(*pkg.include)
393
- #package_files.exclude(*pkg.exclude) if pkg.exclude and not pkg.exclude.empty?
394
-
395
- s.files = @package_files.to_a
396
-
397
- s.author = pkg.author
398
- s.email = pkg.email
399
- s.rubyforge_project = pkg.project
400
- s.homepage = pkg.homepage
401
-
402
- s.require_path = 'lib'
403
- s.require_paths = pkg.require_paths if pkg.require_paths
404
-
405
- s.autorequire = pkg.autorequire if pkg.autorequire
406
-
407
- s.executables = pkg.executables
408
- s.bindir = "bin"
409
-
410
- s.has_rdoc = true
411
- }
412
-
413
- tell "[RUBYGEMS]"
414
-
415
- Dir.chdir( @mirror_path ) {
416
- Gem.manage_gems
417
- Gem::Builder.new(spec).build
418
- gems = Dir.glob( './*.gem' )
419
- gems.each{ |f| FileUtils.mv( f, @release_path ) }
420
- }
421
-
422
- puts
423
- end
424
-
425
- # This build the Debiam package.
426
-
427
- def run_deb
428
-
429
- # use subsection if given
430
- if pkg.debian
431
- pkg = pkg().__merge__( pkg.debian )
432
- else
433
- pkg = pkg()
434
- end
435
-
436
- # build the debian control file
437
-
438
- dep = pkg.dependencies.collect{ |d, v|
439
- if v
440
- "#{d} (#{v})"
441
- else
442
- d
443
- end
444
- }.join(', ')
445
-
446
- # Some debian fields not yet used:
447
- # Installed-Size: 1024
448
- # Replaces: sam-sheepdog
449
- # Pre-Depends: perl, ...
450
- # Suggests: docbook
451
-
452
- arch = pkg.architecture.downcase
453
- arch = (arch == 'any' ? 'all' : arch)
454
-
455
- ctrl = %{
456
- Package: #{pkg.name}
457
- Version: #{pkg.version}
458
- Priority: optional
459
- Architecture: #{arch}
460
- Essential: no
461
- }.tabto(0)
462
- ctrl << "Section: #{pkg.category}\n" if pkg.category
463
- ctrl << "Depends: #{dep}\n" unless dep.empty?
464
- ctrl << "Recommends: #{pkg.recommends.join(' | ')}\n" unless pkg.recommends.empty?
465
- ctrl << "Conflicts: #{pkg.conflicts.join(', ')}\n" unless pkg.conflicts.empty?
466
- ctrl << "Maintainer: #{pkg.maintainer} <#{pkg.email}>\n"
467
- ctrl << "Provides: #{pkg.name}\n"
468
- ctrl << "Description: #{pkg.summary}\n"
469
- ctrl << " #{pkg.description}\n"
470
-
471
- if arch == 'all'
472
- debname = "#{pkg.name}-ruby_#{pkg.version}.deb"
473
- else
474
- debname = "#{pkg.name}-ruby_#{pkg.version}_#{pkg.architecture}.deb"
475
- end
476
- pkgdir = @release_path #File.join( pkg.dir, pkg.package_name )
477
- debdir = File.join( pkgdir, 'debian' )
478
-
479
- #debdebdir = File.join( debdir, 'DEBIAN' )
480
- debfile = File.join( pkgdir, debname )
481
-
482
- puts "[SHELL DEB]"
483
-
484
- FileUtils.mkdir_p(debdir)
485
-
486
- Dir.chdir( @mirror_path ) do
487
- unless provide_setup_rb
488
- puts "Setup.rb is missing. Forced to skip debian package creation."
489
- return nil
490
- end
491
-
492
- cmd = %{ruby setup.rb }
493
- cmd << '-q ' unless $VERBOSE
494
- cmd << %{all --installdirs=std --root=#{debdir}}
495
-
496
- sh cmd
497
-
498
- FileUtils.mkdir_p( File.join(debdir, 'DEBIAN') )
499
- File.open( File.join(debdir, 'DEBIAN', 'control'), 'w') { |f| f << ctrl }
500
-
501
- sh %{dpkg-deb -b #{debdir} #{debfile}}
502
- end
503
-
504
- puts
505
- end
506
-
507
- # This builds a pacman (archlinux) PKGBUILD script.
508
-
509
- def run_pacman
510
- # use subsection if it exists
511
- if pkg.pacman
512
- pkg = pkg().__merge__( pkg.pacman )
513
- else
514
- pkg = pkg()
515
- end
516
-
517
- unless pkg.source
518
- tell "SOURCE, a URL to the source package, is a required field"
519
- return nil
520
- end
521
-
522
- _dep = pkg.dependencies.collect{ |d| "'#{d}'" }.join(' ')
523
- _rep = pkg.replaces.collect{ |d| "'#{d}'" }.join(' ')
524
- _con = pkg.conflicts.collect{ |d| "'#{d}'" }.join(' ')
525
-
526
- proto = %{
527
- pkgname=#{pkg.name}
528
- pkgver=#{pkg.version}
529
- pkgrel=#{pkg.series}
530
- pkgdesc="#{pkg.summary}"
531
- url="#{pkg.homepage}"
532
- license="#{pkg.license}"
533
- depends=(#{_dep})
534
- conflicts=(#{_con})
535
- replaces=(#{_rep})
536
- source=(#{pkg.source})
537
- md5sums=(#{pkg.md5})
538
- }.tabto(0)
539
-
540
- # What are these for?
541
- # install=
542
- # backup=()
543
-
544
- if pkg.usemake
545
- proto << %{
546
- makedepends=()"
547
- build() {
548
- cd $startdir/src/$pkgname-$pkgver
549
- ./ruby setup.rb --prefix=/usr
550
- make || return 1
551
- make DESTDIR=$startdir/pkg install
552
- }
553
- }.tabto(0)
554
- else
555
- proto << %{
556
- build() {
557
- cd $startdir/src/$pkgname-$pkgver
558
- ./ruby setup.rb --prefix=/usr
559
- }
560
- }.tabto(0)
561
- end
562
-
563
- pacdir = File.join( @release_path, 'pacman' )
564
- #pacpacdir = File.join( pacdir, 'PACMAN' )
565
- pacfile = File.join( pacdir, 'PKGBUILD' )
566
-
567
- tell "[PACMAN PKGBUILD]"
568
- FileUtils.mkdir_p( pacdir )
569
- File.open( pacfile, 'w') { |f| f << proto }
570
- tell "Created #{pacfile}"
571
- puts
572
- end
573
-
574
- end #class Package
575
-
576
- end #module Reap