drake 0.8.1.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/CHANGES +386 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +396 -0
  4. data/Rakefile +505 -0
  5. data/TODO +20 -0
  6. data/bin/drake +31 -0
  7. data/bin/rake +31 -0
  8. data/doc/example/Rakefile1 +38 -0
  9. data/doc/example/Rakefile2 +35 -0
  10. data/doc/example/a.c +6 -0
  11. data/doc/example/b.c +6 -0
  12. data/doc/example/main.c +11 -0
  13. data/doc/glossary.rdoc +51 -0
  14. data/doc/jamis.rb +591 -0
  15. data/doc/proto_rake.rdoc +127 -0
  16. data/doc/rake.1.gz +0 -0
  17. data/doc/rakefile.rdoc +534 -0
  18. data/doc/rational.rdoc +151 -0
  19. data/doc/release_notes/rake-0.4.14.rdoc +23 -0
  20. data/doc/release_notes/rake-0.4.15.rdoc +35 -0
  21. data/doc/release_notes/rake-0.5.0.rdoc +53 -0
  22. data/doc/release_notes/rake-0.5.3.rdoc +78 -0
  23. data/doc/release_notes/rake-0.5.4.rdoc +46 -0
  24. data/doc/release_notes/rake-0.6.0.rdoc +141 -0
  25. data/doc/release_notes/rake-0.7.0.rdoc +119 -0
  26. data/doc/release_notes/rake-0.7.1.rdoc +59 -0
  27. data/doc/release_notes/rake-0.7.2.rdoc +121 -0
  28. data/doc/release_notes/rake-0.7.3.rdoc +47 -0
  29. data/doc/release_notes/rake-0.8.0.rdoc +114 -0
  30. data/doc/release_notes/rake-0.8.2.rdoc +163 -0
  31. data/install.rb +88 -0
  32. data/lib/rake.rb +2538 -0
  33. data/lib/rake/classic_namespace.rb +8 -0
  34. data/lib/rake/clean.rb +33 -0
  35. data/lib/rake/comp_tree/algorithm.rb +234 -0
  36. data/lib/rake/comp_tree/bucket_ipc.rb +175 -0
  37. data/lib/rake/comp_tree/driver.rb +291 -0
  38. data/lib/rake/comp_tree/error.rb +51 -0
  39. data/lib/rake/comp_tree/node.rb +189 -0
  40. data/lib/rake/comp_tree/quix/builtin/kernel/tap.rb +57 -0
  41. data/lib/rake/comp_tree/quix/diagnostic.rb +92 -0
  42. data/lib/rake/comp_tree/quix/kernel.rb +109 -0
  43. data/lib/rake/comp_tree/retriable_fork.rb +66 -0
  44. data/lib/rake/comp_tree/task_node.rb +46 -0
  45. data/lib/rake/contrib/compositepublisher.rb +24 -0
  46. data/lib/rake/contrib/ftptools.rb +153 -0
  47. data/lib/rake/contrib/publisher.rb +75 -0
  48. data/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  49. data/lib/rake/contrib/sshpublisher.rb +47 -0
  50. data/lib/rake/contrib/sys.rb +209 -0
  51. data/lib/rake/gempackagetask.rb +103 -0
  52. data/lib/rake/loaders/makefile.rb +35 -0
  53. data/lib/rake/packagetask.rb +185 -0
  54. data/lib/rake/parallel.rb +54 -0
  55. data/lib/rake/rake_test_loader.rb +5 -0
  56. data/lib/rake/rdoctask.rb +147 -0
  57. data/lib/rake/ruby182_test_unit_fix.rb +23 -0
  58. data/lib/rake/runtest.rb +23 -0
  59. data/lib/rake/tasklib.rb +23 -0
  60. data/lib/rake/testtask.rb +161 -0
  61. data/test/capture_stdout.rb +26 -0
  62. data/test/check_expansion.rb +5 -0
  63. data/test/contrib/test_sys.rb +47 -0
  64. data/test/data/chains/Rakefile +15 -0
  65. data/test/data/default/Rakefile +19 -0
  66. data/test/data/dryrun/Rakefile +22 -0
  67. data/test/data/file_creation_task/Rakefile +33 -0
  68. data/test/data/imports/Rakefile +19 -0
  69. data/test/data/imports/deps.mf +1 -0
  70. data/test/data/multidesc/Rakefile +17 -0
  71. data/test/data/namespace/Rakefile +57 -0
  72. data/test/data/rakelib/test1.rb +3 -0
  73. data/test/data/rbext/rakefile.rb +3 -0
  74. data/test/data/sample.mf +12 -0
  75. data/test/data/statusreturn/Rakefile +8 -0
  76. data/test/data/unittest/Rakefile +1 -0
  77. data/test/filecreation.rb +32 -0
  78. data/test/functional.rb +15 -0
  79. data/test/in_environment.rb +30 -0
  80. data/test/parallel.rb +3 -0
  81. data/test/rake_test_setup.rb +5 -0
  82. data/test/reqfile.rb +3 -0
  83. data/test/reqfile2.rb +3 -0
  84. data/test/session_functional.rb +324 -0
  85. data/test/shellcommand.rb +3 -0
  86. data/test/single_threaded.rb +2 -0
  87. data/test/test_application.rb +714 -0
  88. data/test/test_clean.rb +14 -0
  89. data/test/test_definitions.rb +82 -0
  90. data/test/test_earlytime.rb +35 -0
  91. data/test/test_extension.rb +63 -0
  92. data/test/test_file_creation_task.rb +62 -0
  93. data/test/test_file_task.rb +139 -0
  94. data/test/test_filelist.rb +618 -0
  95. data/test/test_fileutils.rb +250 -0
  96. data/test/test_ftp.rb +59 -0
  97. data/test/test_invocation_chain.rb +75 -0
  98. data/test/test_makefile_loader.rb +25 -0
  99. data/test/test_namespace.rb +36 -0
  100. data/test/test_package_task.rb +116 -0
  101. data/test/test_parallel.rb +47 -0
  102. data/test/test_pathmap.rb +209 -0
  103. data/test/test_rake.rb +41 -0
  104. data/test/test_require.rb +33 -0
  105. data/test/test_rules.rb +348 -0
  106. data/test/test_task_arguments.rb +89 -0
  107. data/test/test_task_manager.rb +172 -0
  108. data/test/test_tasklib.rb +12 -0
  109. data/test/test_tasks.rb +373 -0
  110. data/test/test_test_task.rb +75 -0
  111. data/test/test_top_level_functions.rb +84 -0
  112. metadata +190 -0
data/CHANGES ADDED
@@ -0,0 +1,386 @@
1
+
2
+ = Rake Changelog
3
+
4
+ == Version 0.8.2
5
+
6
+ * Fixed bug in package task so that it will include the subdir
7
+ directory in the package for testing. (Bug found by Adam Majer)
8
+
9
+ * Added ENV var to rakefile to prevent OS X from including extended
10
+ attribute junk in a tar file. (Bug found by Adam Majer)
11
+
12
+ * Fixed filename dependency order bug in test_inspect_pending and
13
+ test_to_s_pending. (Bug found by Adam Majer)
14
+
15
+ * Fixed check for file utils options to make them immune to the
16
+ symbol/string differences. (Patch supplied by Edwin Pratomo)
17
+
18
+ * Fixed bug with rules involving multiple source (Patch supplied by
19
+ Emanuel Inderm�hle)
20
+
21
+ * Switched from getoptlong to optparse (patches supplied by Edwin
22
+ Pratomo)
23
+
24
+ * The -T option will now attempt to dynamically sense the size of the
25
+ terminal. RAKE_COLUMNS will override any dynamic sensing.
26
+
27
+ * FileList#clone and FileList#dup have better sematics w.r.t. taint
28
+ and freeze.
29
+
30
+ * Added ability clear prerequisites, and/or actions from an existing
31
+ task.
32
+
33
+ * Added the ability to reenable a task to be invoked a second time.
34
+
35
+ * Changed RDoc test task to have no default template. This makes it
36
+ easier for the tempate to pick up the template from the environment.
37
+
38
+ * Changed from using Mutex to Monitor. Evidently Mutex causes thread
39
+ join errors when Ruby is compiled with -disable-pthreads. (Patch
40
+ supplied by Ittay Dror)
41
+
42
+ * Fixed bug in makefile parser that had problems with extra spaces in
43
+ file task names. (Patch supplied by Ittay Dror)
44
+
45
+ * Added a performance patch for reading large makefile dependency
46
+ files. (Patch supplied by Ittay Dror)
47
+
48
+ * Default values for task arguments can easily be specified with the
49
+ :with_defaults method. (Idea for default argument merging supplied
50
+ by (Adam Q. Salter)
51
+
52
+ * The -T output will only self-truncate if the output is a tty.
53
+ However, if RAKE_COLUMNS is explicitly set, it will be honored in
54
+ any case. (Patch provided by Gavin Stark).
55
+
56
+ == Version 0.8.1
57
+
58
+ * Removed requires on parsedate.rb (in Ftptools)
59
+ * Removed ftools from rake.rb. Made it options in sys.rb
60
+
61
+ == Version 0.8.0
62
+
63
+ * Added task parameters (e.g. "rake build[version7]")
64
+ * Made task parameters passable to prerequisites.
65
+ * Comments are limited to 80 columns or so (suggested by Jamis Buck).
66
+ * Added -D to display full comments (suggested by Jamis Buck).
67
+ * The rake program will set the status value used in any explicit
68
+ exit(n) calls. (patch provided by Stephen Touset)
69
+ * Fixed error in functional tests that were not including session (and
70
+ silently skipping the functionl tests.
71
+ * Removed --usage and make -h the same as -H.
72
+ * Make a prettier inspect for tasks.
73
+
74
+ == Version 0.7.3
75
+
76
+ * Added existing and existing! methods to FileList
77
+ * FileLists now claim to be Arrays (via is_a?) to get better support
78
+ from the FileUtil module.
79
+ * Added init and top_level for custom rake applications.
80
+
81
+ == Version 0.7.2
82
+
83
+ * Error messages are now send to stderr rather than stdout (from
84
+ Payton Quackenbush).
85
+ * Better error handling on invalid command line arguments (from Payton
86
+ Quackenbush).
87
+ * Added rcov task and updated unit testing for better code coverage.
88
+ * Fixed some bugs where the application object was going to the global
89
+ appliation instead of using its own data.
90
+ * Added square and curly bracket patterns to FileList#include (Tilman
91
+ Sauerbeck).
92
+ * Added plain filename support to rule dependents (suggested by Nobu
93
+ Nakada).
94
+ * Added pathmap support to rule dependents.
95
+ * Added a 'tasks' method to a namespace to get a list of tasks
96
+ associated with the namespace.
97
+ * Fixed the method name leak from FileUtils (bug found by Glenn
98
+ Vanderburg).
99
+ * Added rake_extension to handle detection of extension collisions.
100
+ * Added test for noop, bad_option and verbose flags to sh command.
101
+ * Removed dependency on internal fu_xxx functions from FileUtils.
102
+ * Added a 'shame' task to the Rakefile.
103
+ * Added tar_command and zip_command options to the Package task.
104
+ * Added a description to the gem task in GemPackageTask.
105
+ * Fixed a bug when rules have multiple prerequisites (patch by Joel
106
+ VanderWerf)
107
+ * Added a protected 'require "rubygems"' to test/test_application to
108
+ unbreak cruisecontrol.rb.
109
+ * Added the handful of RakeFileUtils to the private method as well.
110
+ * Added block based exclusion.
111
+ * The clean task will no longer delete 'core' if it is a directory.
112
+ * Removed rake_dup. Now we just simply rescue a bad dup.
113
+ * Refactored the FileList reject logic to remove duplication.
114
+ * Removed if __FILE__ at the end of the rake.rb file.
115
+
116
+ == Version 0.7.1
117
+
118
+ * Added optional filter parameter to the --tasks command line option.
119
+ * Added flatten to allow rule transform procs to return lists of
120
+ prereqs (Joel VanderWerf provided patch).
121
+ * Added pathmap to String and FileList.
122
+ * The -r option will now load .rake files (but a straight require
123
+ doesn't yet). NOTE: This is experimental ... it may be
124
+ discontinued.
125
+ * The -f option without a value will disable the search for a
126
+ Rakefile. The assumption is that the -r files are adequate.
127
+ * Fixed the safe_ln function to fall back to cp in more error
128
+ scenarios.
129
+
130
+ == Version 0.7.0
131
+
132
+ * Added Rake.original_dir to return the original starting directory of
133
+ the rake application.
134
+ * Added safe_ln support for openAFS (from Ludvig Omholt).
135
+ * Added --trace reminder on short exception messages (David Heinemeier
136
+ Hansson suggestion).
137
+ * Added multitask declaration that executes prerequisites in
138
+ parallel. (Doug Young providied an initial implementation).
139
+ * Fixed missing_const hack to be compatible with Rails. (Jamis Buck
140
+ supplied test case).
141
+ * Made the RDoc task default to internal (in-process) RDoc formatting.
142
+ The old behavior is still available by setting the +external+ flag
143
+ to true.
144
+ * Rakefiles are now loaded with the expanded path to prevent
145
+ accidental polution from the Ruby load path.
146
+ * The +namespace+ command now returns a NameSpace object that can be
147
+ used to lookup tasks defined in that namespace. This allows for
148
+ better anonymous namespace behavior.
149
+ * Task objects my now be used in prerequisite lists directly.
150
+
151
+ == Version 0.6.1
152
+
153
+ * Rebuilt 0.6.0 gem without signing.
154
+
155
+ == Version 0.6.0
156
+
157
+ * Fixed file creation bug in the unit tests (caused infinite loop on
158
+ windows).
159
+ * Fixed bug where session based functional tests were run under
160
+ windows.
161
+ * Fixed bug in directory tasks so that updating a directory will not
162
+ retrigger file tasks depending on the directory (see
163
+ FileCreationTask and EarlyTime).
164
+ * Added egrep to FileList
165
+ * ruby command now runs same ruby version as rake.
166
+ * Added investigation to task object. (suggested by Martin Fowler)
167
+ * Added ruby_opts to the test task to allow arbitrary ruby options to
168
+ be passed to the test script. (Greg Fast)
169
+ * Fixed the test loader to ignore options. (Greg Fast)
170
+ * Moved Task, FileTask, FileCreationTask and RakeApp into the Rake
171
+ module namespace. Old style namespace behavior can be invoked via
172
+ the --classic-namespace option. (requested by Kelly Felkins).
173
+ * GemTask is now sensitive to the gem platform (Masao Mutoh).
174
+ * A non-existing file prerequisite will no longer cause an exception
175
+ (Philipp Neubeck).
176
+ * Multiple prerequisites on Rake rules now allowed (initial patch
177
+ supplied by Stuart Jansen).
178
+
179
+ == Version 0.5.4
180
+
181
+ * Added double quotes to the test runner.
182
+ * Added .svn to default ignore list.
183
+ * Updated FileList#include to support nested arrays and filelists.
184
+
185
+ == Version 0.5.3
186
+
187
+ * Added support for importing Rakefile and other dependencies.
188
+ * Fixed bug so that now rules can chain off of existing tasks as well
189
+ as existing files.
190
+ * Fixed verbose flag bug in the testing task. Shortened some failure
191
+ messages.
192
+ * Make FileUtils methods private at the top level module to avoid
193
+ accidental method leaking into other objects.
194
+ * Added test loader option to test task. "testrb" is no longer the
195
+ default test loader. It is now eating syntax errors that should
196
+ halt the unit tests.
197
+ * Revamped FileList so that it works more like and array (addressed
198
+ flatten bug). Added many tests around file list.
199
+ * Added +ext+ method to both String and FileList.
200
+
201
+ == Version 0.5.0
202
+
203
+ * Fixed documentation that was lacking the Rake module name (Tilman
204
+ Sauerbeck).
205
+ * Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck).
206
+ * Recursive rules are now supported (Tilman Sauerbeck).
207
+ * Added warning option for the Test Task (requested by Eric Hodel).
208
+ * The jamis rdoc template is only used if it exists.
209
+ * Added fix for Ruby 1.8.2 test/unit and rails problem.
210
+ * Added contributed rake man file (Jani Monoses).
211
+ * Added Brian Candler's fix for problems in --trace and --dry-run
212
+ mode.
213
+
214
+ == Version 0.4.15
215
+
216
+ * Fixed a bug that prevented the TESTOPTS flag from working with the
217
+ revised for 1.8.2 test task.
218
+ * Updated the docs on --trace to indicate that it also enables a full
219
+ backtrace on errors.
220
+
221
+ == Version 0.4.14
222
+
223
+ * Modified the TestTask to workaround the Ruby 1.8.2 change in
224
+ autoexecuting unit tests.
225
+
226
+ == Version 0.4.13
227
+
228
+ * Fixed the dry-run flag so it is operating again.
229
+ * Multiple arguments to sh and ruby commands will not be interpreted
230
+ by the shell (patch provided by Jonathan Paisley).
231
+
232
+ == Version 0.4.12
233
+
234
+ * Added --silent (-s) to suppress the (in directory) rake message.
235
+
236
+ == Version 0.4.11
237
+
238
+ * Changed the "don't know how to rake" message (finally)
239
+ * Changes references to a literal "Rakefile" to reference the global
240
+ variable $rakefile (which contains the actual name of the rakefile).
241
+
242
+ == Version 0.4.10
243
+
244
+ * Added block support to the "sh" command, allowing users to take
245
+ special actions on the result of the system call. E.g.
246
+
247
+ sh "shell_command" do |ok, res|
248
+ puts "Program returned #{res.exitstatus}" if ! ok
249
+ end
250
+
251
+ == Version 0.4.9
252
+
253
+ * Switched to Jamis Buck's RDoc template.
254
+ * Removed autorequire from Rake's gem spec. This prevents the Rake
255
+ libraries from loading while using rails.
256
+
257
+ == Version 0.4.8
258
+
259
+ * Added support for .rb versions of Rakefile.
260
+ * Removed \\\n's from test task.
261
+ * Fixed Ruby 1.9 compatibility issue with FileList.
262
+
263
+ == Version 0.4.7
264
+
265
+ * Fixed problem in FileList that caused Ruby 1.9 to go into infinite
266
+ recursion. Since to_a was removed from Object, it does not need to
267
+ added back into the list of methods to rewrite in FileList. (Thanks
268
+ to Kent Sibilev for pointing this out).
269
+
270
+ == Version 0.4.6
271
+ * Removed test version of ln in FileUtils that prevented safe_ln from
272
+ using ln.
273
+
274
+ == Version 0.4.5
275
+ * Upgraded comments in TestTask.
276
+ * FileList to_s and inspect now automatically resolve pending changes.
277
+ * FileList#exclude properly returns the FileList.
278
+
279
+ == Version 0.4.4
280
+ * Fixed initialization problem with @comment.
281
+ * Now using multi -r technique in TestTask. Switch Rakefile back to
282
+ using the built-in test task macros because the rake runtime is no
283
+ longer needed.
284
+ * Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task
285
+ macros.
286
+ * Allow a +test_files+ attribute in test tasks. This allows more
287
+ flexibility in specifying test files.
288
+
289
+ == Version 0.4.3
290
+ * Fixed Comment leakage.
291
+
292
+ == Version 0.4.2
293
+ * Added safe_ln that falls back to a copy if a file link is not supported.
294
+ * Package builder now uses safe_ln.
295
+
296
+ == Version 0.4.1
297
+ * Task comments are now additive, combined with "/".
298
+ * Works with (soon to be released) rubygems 0.6.2 (or 0.7.0)
299
+
300
+ == Version 0.4.0
301
+ * FileList now uses deferred loading. The file system is not searched
302
+ until the first call that needs the file names.
303
+ * VAR=VALUE options are now accepted on the command line and are
304
+ treated like environment variables. The values may be tested in a
305
+ Rakefile by referencing ENV['VAR'].
306
+ * File.mtime is now used (instead of File.new().mtime).
307
+
308
+ == Version 0.3.2.x
309
+
310
+ * Removed some hidden dependencies on rubygems. Tests now will test
311
+ gems only if they are installed.
312
+ * Removed Sys from some example files. I believe that is that last
313
+ reference to Sys outside of the contrib area.
314
+ * Updated all copyright notices to include 2004.
315
+
316
+ == Version 0.3.2
317
+
318
+ * GEM Installation now works with the application stub.
319
+
320
+ == Version 0.3.1
321
+
322
+ * FileLists now automatically ignore CVS, .bak, !
323
+ * GEM Installation now works.
324
+
325
+ == Version 0.3.0
326
+
327
+ Promoted 0.2.10.
328
+
329
+ == Version 0.2.10
330
+ General
331
+
332
+ * Added title to Rake's rdocs
333
+ * Contrib packages are no longer included in the documentation.
334
+
335
+ RDoc Issues
336
+
337
+ * Removed default for the '--main' option
338
+ * Fixed rendering of the rdoc options
339
+ * Fixed clean/clobber confusion with rerdoc
340
+ * 'title' attribute added
341
+
342
+ Package Task Library Issues
343
+
344
+ * Version (or explicit :noversion) is required.
345
+ * +package_file+ attribute is now writable
346
+
347
+ FileList Issues
348
+
349
+ * Dropped bang version of exclude. Now using ant-like include/exclude semantics.
350
+ * Enabled the "yield self" idiom in FileList#initialize.
351
+
352
+ == Version 0.2.9
353
+
354
+ This version contains numerous changes as the RubyConf.new(2003)
355
+ presentation was being prepared. The changes include:
356
+
357
+ * The monolithic rubyapp task library is in the process of being
358
+ dropped in favor of lighter weight task libraries.
359
+
360
+ == Version 0.2.7
361
+
362
+ * Added "desc" for task descriptions.
363
+ * -T will now display tasks with descriptions.
364
+ * -P will display tasks and prerequisites.
365
+ * Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys
366
+ is still supported in the contrib area.
367
+
368
+ == Version 0.2.6
369
+
370
+ * Moved to RubyForge
371
+
372
+ == Version 0.2.5
373
+
374
+ * Switched to standard ruby app builder.
375
+ * Added no_match option to file matcher.
376
+
377
+ == Version 0.2.4
378
+
379
+ * Fixed indir, which neglected to actually change directories.
380
+
381
+ == Version 0.2.3
382
+
383
+ * Added rake module for a help target
384
+ * Added 'for_files' to Sys
385
+ * Added a $rakefile constant
386
+ * Added test for selecting proper rule with multiple targets.
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2003, 2004 Jim Weirich
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
data/README ADDED
@@ -0,0 +1,396 @@
1
+ = DRAKE -- Distributed Rake
2
+
3
+ A branch of Rake supporting parallel task execution.
4
+
5
+ == Synopsis
6
+
7
+ Run up to three tasks in parallel:
8
+
9
+ % drake --threads 3
10
+
11
+ == Installation
12
+
13
+ % gem install drake
14
+
15
+ == Important Notes
16
+
17
+ === Dependencies
18
+
19
+ In a given Rakefile, it is possible (even likely) that the
20
+ dependency tree has not been properly defined. Consider
21
+
22
+ task :a => [:x, :y, :z]
23
+
24
+ With single-threaded +rake+, _x_,_y_,_z_ will be invoked <em>in that
25
+ order</em> before _a_ is invoked. However with
26
+ <code>drake --threads=N</code> (for N > 1), one should not expect any
27
+ particular order of execution. Since there is no dependency specified
28
+ between _x_,_y_,_z_ above, <code>drake</code> is free to execute them
29
+ in any order.
30
+
31
+ If you wish _x_,_y_,_z_ to be invoked sequentially, then write
32
+
33
+ task :a => seq[:x, :y, :z]
34
+
35
+ This is shorthand for
36
+
37
+ task :a => :z
38
+ task :z => :y
39
+ task :y => :x
40
+
41
+ Upon invoking _a_, the above rules say: "Can't do _a_ until _z_ is
42
+ complete; can't do _z_ until _y_ is complete; can't do _y_ until _x_
43
+ is complete; therefore do _x_." In this fashion the sequence
44
+ _x_,_y_,_z_ is enforced.
45
+
46
+ === MultiTask
47
+
48
+ The use of 'multitask' is now deprecated. Tasks which may properly be
49
+ run in parallel will be run in parallel; those which cannot, will not.
50
+ It is not the user's job to decide.
51
+
52
+ === Compatibility
53
+
54
+ Except for the addition of 'seq' and the removal of 'multitask'
55
+ described above, Drake is codewise identical to Rake when
56
+ <tt>--threads=1</tt>. No new code is executed unless threads > 1.
57
+
58
+ Drake passes all of Rake's unit tests for any number of threads
59
+ (presumably; I tested various numbers up to 1000).
60
+
61
+ === Installation Notes
62
+
63
+ Despite outward appearances, Drake is internally the same as Rake,
64
+ down to using the same file names with top-level module named 'Rake'.
65
+ This is to make a mainline merge easier, if Jim decides to do so. The
66
+ fork stems from the latest Rake repository.
67
+
68
+ Since Rubygems installs each gem in separate directory, it it safe to
69
+ have Rake and Drake installed at the same time. You can check this
70
+ with a test Rakefile,
71
+
72
+ task :default do
73
+ puts $LOAD_PATH
74
+ end
75
+
76
+ When +rake+ is executed, it will list the lib directory inside the
77
+ rake gem. When +drake+ is executed, the drake lib will appear.
78
+
79
+ == Download
80
+
81
+ * http://rubyforge.org/frs/?group_id=6530
82
+
83
+ == Repository
84
+
85
+ * http://github.com/quix/rake
86
+
87
+ == License
88
+
89
+ Copyright (c) 2003, 2004 Jim Weirich
90
+
91
+ Copyright (c) 2008 James M. Lawrence
92
+
93
+ Permission is hereby granted, free of charge, to any person obtaining
94
+ a copy of this software and associated documentation files (the
95
+ "Software"), to deal in the Software without restriction, including
96
+ without limitation the rights to use, copy, modify, merge, publish,
97
+ distribute, sublicense, and/or sell copies of the Software, and to
98
+ permit persons to whom the Software is furnished to do so, subject to
99
+ the following conditions:
100
+
101
+ The above copyright notice and this permission notice shall be
102
+ included in all copies or substantial portions of the Software.
103
+
104
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
105
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
106
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
107
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
108
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
109
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
110
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
111
+
112
+ = RAKE -- Ruby Make -- <em>master branch</em>
113
+
114
+ Supporting Rake version: 0.8.3
115
+
116
+ This package contains Rake, a simple ruby build program with
117
+ capabilities similar to make.
118
+
119
+ Rake has the following features:
120
+
121
+ * Rakefiles (rake's version of Makefiles) are completely defined in
122
+ standard Ruby syntax. No XML files to edit. No quirky Makefile
123
+ syntax to worry about (is that a tab or a space?)
124
+
125
+ * Users can specify tasks with prerequisites.
126
+
127
+ * Rake supports rule patterns to synthesize implicit tasks.
128
+
129
+ * Flexible FileLists that act like arrays but know about manipulating
130
+ file names and paths.
131
+
132
+ * A library of prepackaged tasks to make building rakefiles easier.
133
+
134
+ == Download
135
+
136
+ The latest version of rake can be found at
137
+
138
+ * http://rubyforge.org/project/showfiles.php?group_id=50
139
+
140
+ == Source Repository
141
+
142
+ Rake is currently hosted at github. The github web page is
143
+ http://github.com/jimweirich/rake. The public git clone URL is
144
+
145
+ * git://github.com/jimweirich/rake.git
146
+
147
+ == Installation
148
+
149
+ === Normal Installation
150
+
151
+ You can install rake with the following command.
152
+
153
+ % ruby install.rb
154
+
155
+ from its distribution directory.
156
+
157
+ === GEM Installation
158
+
159
+ Download and install rake with the following.
160
+
161
+ gem install --remote rake
162
+
163
+ === Running the Rake Test Suite
164
+
165
+ If you wish to run the unit and functional tests that come with Rake:
166
+
167
+ * Install the 'session' gem in order to run the functional tests. adf
168
+ asdf asdf
169
+ * CD into the top project directory of rake.
170
+ * Type one of the following:
171
+
172
+ rake # If you have a version of rake installed
173
+ ruby -Ilib bin/rake # If you do not have a version of rake installed.
174
+
175
+ == Online Resources
176
+
177
+ == Rake References
178
+
179
+ * Rake Documentation Home: http://docs.rubyrake.org
180
+ * Rake Project Page: http://rubyforge.org/projects/rake
181
+ * Rake API Documents: http://rake.rubyforge.org
182
+ * Rake Source Code Repo: http://github.com/jimweirich/rake
183
+ * Rake Git Repo Clone URL: git://github.com/jimweirich/rake.git
184
+
185
+ == Presentations and Articles about Rake
186
+
187
+ * Jim Weirich's 2003 RubyConf presentation: http://onestepback.org/articles/buildingwithrake/
188
+ * Martin Fowler's article on Rake: http://martinfowler.com/articles/rake.html
189
+
190
+ === Road Map
191
+
192
+ * If you want to see how to invoke rake to build your projects, read on.
193
+ * If you want to see the format of a Rakefile, see
194
+ doc/rakefile.rdoc[http://rake.rubyforge.org/files/doc/rakefile_rdoc.html].
195
+ * If you want to see the original announcement of rake, see
196
+ doc/rational.rdoc[http://rake.rubyforge.org/files/doc/rational_rdoc.html].
197
+ * If you want to see a glossary of terms, see
198
+ doc/glossary.rdoc[http://rake.rubyforge.org/files/doc/glossary_rdoc.html].
199
+
200
+ == Simple Example
201
+
202
+ Once installed, you can run rake as follows ...
203
+
204
+ % rake [options ...] [VAR=VALUE ...] [tasks...]
205
+
206
+ Type "rake --help" for an up-to-date option summary.
207
+
208
+ Invoking <tt>rake</tt> without any options or targets causes rake to
209
+ look for a rakefile and invoke the default task in that rakefile.
210
+
211
+ For example, given a simple rakefile like this ...
212
+
213
+ task :default => [:test]
214
+
215
+ task :test do
216
+ ruby "test/unittest.rb"
217
+ end
218
+
219
+ The command
220
+
221
+ $ rake
222
+
223
+ will invoke the +default+ task. As +default+ satisfies its
224
+ prerequisites, the +test+ task will run the unit tests for the
225
+ package.
226
+
227
+ == Other Make Reinvisionings ...
228
+
229
+ Rake is a late entry in the make replacement field. Here are links to
230
+ other projects with similar (and not so similar) goals.
231
+
232
+ * http://directory.fsf.org/bras.html -- Bras, one of earliest
233
+ implementations of "make in a scripting language".
234
+ * http://www.a-a-p.org -- Make in Python
235
+ * http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make
236
+ * http://ant.apache.org -- The Ant project
237
+ * http://ppt.perl.org/commands/make/index.html -- Make from the Perl
238
+ Power Tools implementation.
239
+ * http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System
240
+ * http://make.rubyforge.org -- Rant, another Ruby make tool.
241
+
242
+ == Credits
243
+
244
+ [<b>Ryan Dlugosz</b>] For the initial conversation that sparked Rake.
245
+
246
+ [<b>nobu.nokada@softhome.net</b>] For the initial patch for rule support.
247
+
248
+ [<b>Tilman Sauerbeck <tilman@code-monkey.de></b>] For the recursive rule patch.
249
+
250
+ == License
251
+
252
+ Rake is available under an MIT-style license.
253
+
254
+ :include: MIT-LICENSE
255
+
256
+ == Support
257
+
258
+ The Rake homepage is http://rake.rubyforge.org. You can find the Rake
259
+ RubyForge page at http://rubyforge.org/projects/rake.
260
+
261
+ Feel free to submit commits or feature requests. If you send a patch,
262
+ remember to update the corresponding unit tests. If fact, I prefer
263
+ new feature to be submitted in the form of new unit tests.
264
+
265
+ For other information, feel free to ask on the ruby-talk mailing list
266
+ (which is mirrored to comp.lang.ruby) or contact
267
+ mailto:jim@weirichhouse.org.
268
+
269
+ ----
270
+
271
+ = Usage
272
+
273
+ Rake is invoked from the command line using:
274
+
275
+ % rake [<em>options</em> ...] [<em>VAR</em>=<em>VALUE</em>] [<em>targets</em> ...]
276
+
277
+ Options are:
278
+
279
+ [<tt><em>name</em>=<em>value</em></tt>]
280
+ Set the environment variable <em>name</em> to <em>value</em>
281
+ during the execution of the <b>rake</b> command. You can access
282
+ the value by using ENV['<em>name</em>'].
283
+
284
+ [<tt>--classic-namespace</tt> (-n)]
285
+ Import the Task, FileTask, and FileCreateTask into the top-level
286
+ scope to be compatible with older versions of Rake. Alternatively
287
+ you can include the line <code>require
288
+ 'rake/classic_namespace'</code> in your Rakefile to get the
289
+ classic behavior.
290
+
291
+ [<tt>--describe</tt> _pattern_ (-D)]
292
+ Describe the tasks (matching optional PATTERN), then exit.
293
+
294
+ [<tt>--dry-run</tt> (-n)]
295
+ Do a dry run. Print the tasks invoked and executed, but do not
296
+ actually execute any of the actions.
297
+
298
+ [<tt>--execute</tt> _code_ (-e)]
299
+ Execute some Ruby code and exit.
300
+
301
+ [<tt>--execute-print</tt> _code_ (-p)]
302
+ Execute some Ruby code, print the result, and exit.
303
+
304
+ [<tt>--execute-continue</tt> _code_ (-p)]
305
+ Execute some Ruby code, then continue with normal task processing.
306
+
307
+ [<tt>--help</tt> (-H)]
308
+ Display some help text and exit.
309
+
310
+ [<tt>--libdir</tt> _directory_ (-I)]
311
+ Add _directory_ to the list of directories searched for require.
312
+
313
+ [<tt>--nosearch</tt> (-N)]
314
+ Do not search for a Rakefile in parent directories.
315
+
316
+ [<tt>--prereqs</tt> (-P)]
317
+ Display a list of all tasks and their immediate prerequisites.
318
+
319
+ [<tt>--quiet</tt> (-q)]
320
+ Do not echo commands from FileUtils.
321
+
322
+ [<tt>--rakefile</tt> _filename_ (-f)]
323
+ Use _filename_ as the name of the rakefile. The default rakefile
324
+ names are +rakefile+ and +Rakefile+ (with +rakefile+ taking
325
+ precedence). If the rakefile is not found in the current
326
+ directory, +rake+ will search parent directories for a match. The
327
+ directory where the Rakefile is found will become the current
328
+ directory for the actions executed in the Rakefile.
329
+
330
+ [<tt>--rakelibdir</tt> _rakelibdir_ (-R)]
331
+ Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib')
332
+
333
+ [<tt>--require</tt> _name_ (-r)]
334
+ Require _name_ before executing the Rakefile.
335
+
336
+ [<tt>--rules</tt>]
337
+ Trace the rules resolution.
338
+
339
+ [<tt>--silent (-s)]
340
+ Like --quiet, but also suppresses the 'in directory' announcement.
341
+
342
+ [<tt>--system</tt> (-g)]
343
+ Use the system wide (global) rakefiles. The project Rakefile is
344
+ ignored. By default, the system wide rakefiles are used only if no
345
+ project Rakefile is found. On Unix-like system, the system wide
346
+ rake files are located in $HOME/.rake. On a windows system they
347
+ are stored in $APPDATA/Rake.
348
+
349
+ [<tt>--no-system</tt> (-G)]
350
+ Use the project level Rakefile, ignoring the system-wide (global)
351
+ rakefiles.
352
+
353
+ [<tt>--tasks</tt> (-T)]
354
+ Display a list of the major tasks and their comments. Comments
355
+ are defined using the "desc" command.
356
+
357
+ [<tt>--trace</tt> (-t)]
358
+ Turn on invoke/execute tracing. Also enable full backtrace on
359
+ errors.
360
+
361
+ [<tt>--usage</tt> (-h)]
362
+ Display a usage message and exit.
363
+
364
+ [<tt>--verbose</tt> (-v)]
365
+ Echo the Sys commands to standard output.
366
+
367
+ [<tt>--version</tt> (-V)]
368
+ Display the program version and exit.
369
+
370
+ In addition, any command line option of the form
371
+ <em>VAR</em>=<em>VALUE</em> will be added to the environment hash
372
+ <tt>ENV</tt> and may be tested in the Rakefile.
373
+
374
+ ---
375
+
376
+ = Rakefile Format
377
+
378
+ See doc/rakefile.rdoc[http://rake.rubyforge.org/files/doc/rakefile_rdoc.html]
379
+ for details on the Rakefile format.
380
+
381
+ ---
382
+
383
+ = Other stuff
384
+
385
+ Author:: Jim Weirich <jim@weirichhouse.org>
386
+ Requires:: Ruby 1.8.0 or later
387
+ License:: Copyright 2003, 2004 by Jim Weirich.
388
+ Released under an MIT-style license. See the LICENSE file
389
+ included in the distribution.
390
+
391
+ == Warranty
392
+
393
+ This software is provided "as is" and without any express or
394
+ implied warranties, including, without limitation, the implied
395
+ warranties of merchantibility and fitness for a particular
396
+ purpose.