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
@@ -0,0 +1,119 @@
1
+ = Rake 0.7.0 Released
2
+
3
+ These changes for Rake have been brewing for a long time. Here they
4
+ are, I hope you enjoy them.
5
+
6
+ == Changes
7
+
8
+ === New Features
9
+
10
+ * Name space support for task names (see below).
11
+
12
+ * Prerequisites can be executed in parallel (see below).
13
+
14
+ * Added safe_ln support for openAFS (via Ludvig Omholt).
15
+
16
+ * RDoc defaults to internal (in-process) invocation. The old behavior
17
+ is still available by setting the +external+ flag to true.
18
+
19
+ * Rakefiles are now loaded with the expanded path to prevent
20
+ accidental polution from the Ruby load path.
21
+
22
+ * Task objects my now be used in prerequisite lists directly.
23
+
24
+ * Task objects (in addition to task names) may now be included in the
25
+ prerequisite list of a task.
26
+
27
+ * Internals cleanup and refactoring.
28
+
29
+ === Bug Fixes
30
+
31
+ * Compatibility fixes for Ruby 1.8.4 FileUtils changes.
32
+
33
+ === Namespaces
34
+
35
+ Tasks can now be nested inside their own namespaces. Tasks within one
36
+ namespace will not accidently interfer with tasks named in a different
37
+ namespace.
38
+
39
+ For example:
40
+
41
+ namespace "main" do
42
+ task :build do
43
+ # Build the main program
44
+ end
45
+ end
46
+
47
+ namespace "samples" do
48
+ task :build do
49
+ # Build the sample programs
50
+ end
51
+ end
52
+
53
+ task :build_all => ["main:build", "samples:build"]
54
+
55
+ Even though both tasks are named :build, they are separate tasks in
56
+ their own namespaces. The :build_all task (defined in the toplevel
57
+ namespace) references both build tasks in its prerequisites.
58
+
59
+ You may invoke each of the individual build tasks with the following
60
+ commands:
61
+
62
+ rake main:build
63
+ rake samples:build
64
+
65
+ Or invoke both via the :build_all command:
66
+
67
+ rake build_all
68
+
69
+ Namespaces may be nested arbitrarily. Since the name of file tasks
70
+ correspond to the name of a file in the external file system,
71
+ FileTasks are not affected by the namespaces.
72
+
73
+ See the Rakefile format documentation (in the Rake API documents) for
74
+ more information.
75
+
76
+ === Parallel Tasks
77
+
78
+ Sometimes you have several tasks that can be executed in parallel. By
79
+ specifying these tasks as prerequisites to a +multitask+ task.
80
+
81
+ In the following example the tasks copy_src, copy_doc and copy_bin
82
+ will all execute in parallel in their own thread.
83
+
84
+ multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do
85
+ puts "All Copies Complete"
86
+ end
87
+
88
+ == What is Rake
89
+
90
+ Rake is a build tool similar to the make program in many ways. But
91
+ instead of cryptic make recipes, Rake uses standard Ruby code to
92
+ declare tasks and dependencies. You have the full power of a modern
93
+ scripting language built right into your build tool.
94
+
95
+ == Availability
96
+
97
+ The easiest way to get and install rake is via RubyGems ...
98
+
99
+ gem install rake (you may need root/admin privileges)
100
+
101
+ Otherwise, you can get it from the more traditional places:
102
+
103
+ Home Page:: http://rake.rubyforge.org/
104
+ Download:: http://rubyforge.org/project/showfiles.php?group_id=50
105
+
106
+ == Thanks
107
+
108
+ As usual, it was input from users that drove a alot of these changes.
109
+ The following people either contributed patches, made suggestions or
110
+ made otherwise helpful comments. Thanks to ...
111
+
112
+ * Doug Young (inspriation for the parallel task)
113
+
114
+ * David Heinemeier Hansson (for --trace message enhancement and for
115
+ pushing for namespace support).
116
+
117
+ * Ludvig Omholt (for the openAFS fix)
118
+
119
+ -- Jim Weirich
@@ -0,0 +1,59 @@
1
+ = Rake 0.7.1 Released
2
+
3
+ Version 0.7.1 supplies a bug fix and a few minor enhancements.
4
+
5
+ == Changes
6
+
7
+ === Bug Fixes in 0.7.1
8
+
9
+ * Changes in the exception reported for the FileUtils.ln caused
10
+ safe_ln to fail with a NotImplementedError. Rake 0.7.1 will now
11
+ catch that error or any StandardError and properly fall back to
12
+ using +cp+.
13
+
14
+ === New Features in 0.7.1
15
+
16
+ * You can filter the results of the --task option by supplying an
17
+ optional regular expression. This allows the user to easily find a
18
+ particular task name in a long list of possible names.
19
+
20
+ * Transforming procs in a rule may now return a list of prerequisites.
21
+ This allows more flexible rule formation.
22
+
23
+ * FileList and String now support a +pathmap+ melthod that makes the
24
+ transforming paths a bit easier. See the API docs for +pathmap+ for
25
+ details.
26
+
27
+ * The -f option without a value will disable the search for a
28
+ Rakefile. This allows the Rakefile to be defined entirely in a
29
+ library (and loaded with the -r option). The current working
30
+ directory is not changed when this is done.
31
+
32
+ == What is Rake
33
+
34
+ Rake is a build tool similar to the make program in many ways. But
35
+ instead of cryptic make recipes, Rake uses standard Ruby code to
36
+ declare tasks and dependencies. You have the full power of a modern
37
+ scripting language built right into your build tool.
38
+
39
+ == Availability
40
+
41
+ The easiest way to get and install rake is via RubyGems ...
42
+
43
+ gem install rake (you may need root/admin privileges)
44
+
45
+ Otherwise, you can get it from the more traditional places:
46
+
47
+ Home Page:: http://rake.rubyforge.org/
48
+ Download:: http://rubyforge.org/project/showfiles.php?group_id=50
49
+
50
+ == Thanks
51
+
52
+ As usual, it was input from users that drove a alot of these changes.
53
+ The following people either contributed patches, made suggestions or
54
+ made otherwise helpful comments. Thanks to ...
55
+
56
+ * James Britt and Assaph Mehr for reporting and helping to debug the
57
+ safe_ln issue.
58
+
59
+ -- Jim Weirich
@@ -0,0 +1,121 @@
1
+ = Rake 0.7.2 Released
2
+
3
+ Version 0.7.2 supplies a bug fix and a few minor enhancements. In
4
+ particular, the new version fixes an incompatibility with the soon to
5
+ be released Ruby 1.8.6. We strongly recommend upgrading to Rake 0.7.2
6
+ in order to be compatible with the new version of Ruby.
7
+
8
+ == Changes
9
+
10
+ === Bug Fixes in 0.7.2
11
+
12
+ There are quite a number of bug fixes in the new 0.7.2 version of
13
+ Rake:
14
+
15
+ * Removed dependency on internal fu_xxx functions from FileUtils.
16
+
17
+ * Error messages are now send to stderr rather than stdout (from
18
+ Payton Quackenbush).
19
+
20
+ * Better error handling on invalid command line arguments (from Payton
21
+ Quackenbush).
22
+
23
+ * Fixed some bugs where the application object was going to the global
24
+ appliation instead of using its own data.
25
+
26
+ * Fixed the method name leak from FileUtils (bug found by Glenn
27
+ Vanderburg).
28
+
29
+ * Added test for noop, bad_option and verbose flags to sh command.
30
+
31
+ * Added a description to the gem task in GemPackageTask.
32
+
33
+ * Fixed a bug when rules have multiple prerequisites (patch by Joel
34
+ VanderWerf)
35
+
36
+ * Added the handful of RakeFileUtils to the private method as well.
37
+
38
+ === New Features in 0.7.2
39
+
40
+ The following new features are available in Rake version 0.7.2:
41
+
42
+ * Added square and curly bracket patterns to FileList#include (Tilman
43
+ Sauerbeck).
44
+
45
+ * FileLists can now pass a block to FileList#exclude to exclude files
46
+ based on calculated values.
47
+
48
+ * Added plain filename support to rule dependents (suggested by Nobu
49
+ Nakada).
50
+
51
+ * Added pathmap support to rule dependents. In other words, if a
52
+ pathmap format (beginning with a '%') is given as a Rake rule
53
+ dependent, then the name of the depend will be the name of the
54
+ target with the pathmap format applied.
55
+
56
+ * Added a 'tasks' method to a namespace to get a list of tasks
57
+ associated with the namespace.
58
+
59
+ * Added tar_command and zip_command options to the Package task.
60
+
61
+ * The clean task will no longer delete 'core' if it is a directory.
62
+
63
+ === Internal Rake Improvements
64
+
65
+ The following changes will are mainly internal improvements and
66
+ refactorings and have little effect on the end user. But they may be
67
+ of interest to the general public.
68
+
69
+ * Added rcov task and updated unit testing for better code coverage.
70
+
71
+ * Added a 'shame' task to the Rakefile.
72
+
73
+ * Added rake_extension to handle detection of extension collisions.
74
+
75
+ * Added a protected 'require "rubygems"' to test/test_application to
76
+ unbreak cruisecontrol.rb.
77
+
78
+ * Removed rake_dup. Now we just simply rescue a bad dup.
79
+
80
+ * Refactored the FileList reject logic to remove duplication.
81
+
82
+ * Removed if __FILE__ at the end of the rake.rb file.
83
+
84
+ == What is Rake
85
+
86
+ Rake is a build tool similar to the make program in many ways. But
87
+ instead of cryptic make recipes, Rake uses standard Ruby code to
88
+ declare tasks and dependencies. You have the full power of a modern
89
+ scripting language built right into your build tool.
90
+
91
+ == Availability
92
+
93
+ The easiest way to get and install rake is via RubyGems ...
94
+
95
+ gem install rake (you may need root/admin privileges)
96
+
97
+ Otherwise, you can get it from the more traditional places:
98
+
99
+ Home Page:: http://rake.rubyforge.org/
100
+ Download:: http://rubyforge.org/project/showfiles.php?group_id=50
101
+
102
+ == Thanks
103
+
104
+ As usual, it was input from users that drove a alot of these changes.
105
+ The following people either contributed patches, made suggestions or
106
+ made otherwise helpful comments. Thanks to ...
107
+
108
+ * Payton Quackenbush -- For several error handling improvements.
109
+
110
+ * Glenn Vanderburg -- For finding and fixing the method name leak from
111
+ FileUtils.
112
+
113
+ * Joel VanderWerf -- for finding and fixing a bug in the handling of
114
+ multiple prerequisites.
115
+
116
+ * Tilman Sauerbeck -- For some enhancing FileList to support more
117
+ advanced file globbing.
118
+
119
+ * Nobu Nakada -- For suggesting plain file name support to rule dependents.
120
+
121
+ -- Jim Weirich
@@ -0,0 +1,47 @@
1
+ = Rake 0.7.3 Released
2
+
3
+ Rake version 0.7.3 is a minor release that includes some refactoring to better
4
+ support custom Rake applications.
5
+
6
+ == Changes
7
+
8
+ === New Features in Version 0.7.3
9
+
10
+ * Added the +init+ and +top_level+ methods to make the creation of custom Rake applications a bit easier. E.g.
11
+
12
+ gem 'rake', ">= 0.7.3"
13
+ require 'rake'
14
+
15
+ Rake.application.init('myrake')
16
+
17
+ task :default do
18
+ something_interesting
19
+ end
20
+
21
+ Rake.application.top_level
22
+
23
+ == What is Rake
24
+
25
+ Rake is a build tool similar to the make program in many ways. But instead of
26
+ cryptic make recipes, Rake uses standard Ruby code to declare tasks and
27
+ dependencies. You have the full power of a modern scripting language built
28
+ right into your build tool.
29
+
30
+ == Availability
31
+
32
+ The easiest way to get and install rake is via RubyGems ...
33
+
34
+ gem install rake (you may need root/admin privileges)
35
+
36
+ Otherwise, you can get it from the more traditional places:
37
+
38
+ Home Page:: http://rake.rubyforge.org/
39
+ Download:: http://rubyforge.org/project/showfiles.php?group_id=50
40
+
41
+ == Thanks
42
+
43
+ As usual, it was input from users that drove a alot of these changes. The
44
+ following people either contributed patches, made suggestions or made
45
+ otherwise helpful comments. Thanks to ...
46
+
47
+ -- Jim Weirich
@@ -0,0 +1,114 @@
1
+ = Rake 0.8.0/0.8.1 Released
2
+
3
+ Rake version 0.8.0 is a new release of rake that includes serveral new
4
+ features.
5
+
6
+ == Changes
7
+
8
+ === New Features in Version 0.8.0
9
+
10
+ * Tasks can now receive command line parameters. See the examples
11
+ below for more details.
12
+
13
+ * Comments are limited to 80 columns on output, but full comments can
14
+ be seen by using the -D parameter. (feature suggested by Jamis
15
+ Buck).
16
+
17
+ * Explicit exit(n) calls will now set the exit status to n. (patch
18
+ provided by Stephen Touset).
19
+
20
+ * Rake is now compatible with Ruby 1.9.
21
+
22
+ Version 0.8.1 is a minor update that includes additional Ruby 1.9
23
+ compatibility fixes.
24
+
25
+ == What is Rake
26
+
27
+ Rake is a build tool similar to the make program in many ways. But
28
+ instead of cryptic make recipes, Rake uses standard Ruby code to
29
+ declare tasks and dependencies. You have the full power of a modern
30
+ scripting language built right into your build tool.
31
+
32
+ == Availability
33
+
34
+ The easiest way to get and install rake is via RubyGems ...
35
+
36
+ gem install rake (you may need root/admin privileges)
37
+
38
+ Otherwise, you can get it from the more traditional places:
39
+
40
+ Home Page:: http://rake.rubyforge.org/
41
+ Download:: http://rubyforge.org/project/showfiles.php?group_id=50
42
+
43
+ == Task Argument Examples
44
+
45
+ Prior to version 0.8.0, rake was only able to handle command line
46
+ arguments of the form NAME=VALUE that were passed into Rake via the
47
+ ENV hash. Many folks had asked for some kind of simple command line
48
+ arguments, perhaps using "--" to separate regular task names from
49
+ argument values on the command line. The problem is that there was no
50
+ easy way to associate positional arguments on the command line with
51
+ different tasks. Suppose both tasks :a and :b expect a command line
52
+ argument: does the first value go with :a? What if :b is run first?
53
+ Should it then get the first command line argument.
54
+
55
+ Rake 0.8.0 solves this problem by explicitly passing values directly
56
+ to the tasks that need them. For example, if I had a release task
57
+ that required a version number, I could say:
58
+
59
+ rake release[0.8.0]
60
+
61
+ And the string "0.8.0" will be passed to the :release task. Multiple
62
+ arguments can be passed by separating them with a comma, for example:
63
+
64
+ rake name[john,doe]
65
+
66
+ Just a few words of caution. The rake task name and its arguments
67
+ need to be a single command line argument to rake. This generally
68
+ means no spaces. If spaces are needed, then the entire rake +
69
+ argument string should be quoted. Something like this:
70
+
71
+ rake "name[billy bob, smith]"
72
+
73
+ (Quoting rules vary between operating systems and shells, so make sure
74
+ you consult the proper docs for your OS/shell).
75
+
76
+ === Tasks that Expect Parameters
77
+
78
+ Parameters are only given to tasks that are setup to expect them. In
79
+ order to handle named parameters, the task declaration syntax for
80
+ tasks has been extended slightly.
81
+
82
+ For example, a task that needs a first name and last name might be
83
+ declared as:
84
+
85
+ task :name, :first_name, :last_name
86
+
87
+ The first argument is still the name of the task (:name in this case).
88
+ The next to argumements are the names of the parameters expected by
89
+ :name (:first_name and :last_name in the example).
90
+
91
+ To access the values of the paramters, the block defining the task
92
+ behaviour can now accept a second parameter:
93
+
94
+ task :name, :first_name, :last_name do |t, args|
95
+ puts "First name is #{args.first_name}"
96
+ puts "Last name is #{args.last_name}"
97
+ end
98
+
99
+ The first argument of the block "t" is always bound to the current
100
+ task object. The second argument "args" is an open-struct like object
101
+ that allows access to the task arguments. Extra command line
102
+ arguments to a task are ignored. Missing command line arguments are
103
+ given the nil value.
104
+
105
+ == Thanks
106
+
107
+ As usual, it was input from users that drove a alot of these changes. The
108
+ following people either contributed patches, made suggestions or made
109
+ otherwise helpful comments. Thanks to ...
110
+
111
+ * Jamis Buck (for comment formatting suggestions)
112
+ * Stephen Touset (for exit status patch).
113
+
114
+ -- Jim Weirich