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.
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