drake 0.8.7.0.2.3 → 0.8.7.0.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,10 @@
1
1
 
2
2
  = Drake Changelog
3
3
 
4
+ == Version 0.8.7.0.2.4
5
+
6
+ * Fix for kite-shaped dep graphs; based on a patch by Heath Kehoe.
7
+
4
8
  == Version 0.8.7.0.2.3
5
9
 
6
10
  * update from mainline branch
@@ -13,9 +13,9 @@ task :drake_prerelease => [:clobber, :gemspec] do
13
13
  unless `git status` =~ %r!nothing to commit \(working directory clean\)!
14
14
  raise "Directory not clean"
15
15
  end
16
- unless `git pull` =~ %r!Already up-to-date!
17
- raise "New stuff from remote repository"
18
- end
16
+ #unless `git pull` =~ %r!Already up-to-date!
17
+ # raise "New stuff from remote repository"
18
+ #end
19
19
  %w[github.com rubyforge.org].each { |server|
20
20
  cmd = "ping " + (
21
21
  if Config::CONFIG["host"] =~ %r!darwin!
@@ -59,7 +59,7 @@ task :drake_finish_release do
59
59
  }
60
60
 
61
61
  git("tag", "drake-" + SPEC.version.to_s)
62
- git(*%w(push --tags origin master))
62
+ git(*%w(push --tags origin))
63
63
  end
64
64
 
65
65
  task :drake_release =>
@@ -29,7 +29,7 @@
29
29
  # as a library via a require statement, but it can be distributed
30
30
  # independently as an application.
31
31
 
32
- RAKEVERSION = '0.8.7.0.2.3'
32
+ RAKEVERSION = '0.8.7.0.2.4'
33
33
 
34
34
  require 'rbconfig'
35
35
  require 'fileutils'
@@ -110,15 +110,8 @@ module Rake
110
110
  def invoke_with_call_chain_collector(task_args, new_chain, previous_chain)
111
111
  prereqs = invoke_prerequisites_collector(task_args, new_chain)
112
112
  parallel = application.parallel
113
- if needed? or parallel.tasks[self]
113
+ if needed? or prereqs.any? { |p| parallel.tasks[p] }
114
114
  parallel.tasks[self] = [task_args, prereqs]
115
- unless previous_chain == InvocationChain::EMPTY
116
- #
117
- # Touch the parent to propagate 'needed?' upwards. This
118
- # works because the recursion is depth-first.
119
- #
120
- parallel.tasks[previous_chain.value] = true
121
- end
122
115
  end
123
116
  end
124
117
 
@@ -17,7 +17,12 @@ class TestFileTask < Test::Unit::TestCase
17
17
  def setup
18
18
  Task.clear
19
19
  @runs = SerializedArray.new
20
- FileUtils.rm_f FILES
20
+ FileUtils.rm_rf "testdata", :verbose => false
21
+ FileUtils.mkdir_p "testdata", :verbose => false
22
+ end
23
+
24
+ def teardown
25
+ FileUtils.rm_rf "testdata", :verbose => false
21
26
  end
22
27
 
23
28
  def test_create_dispersed_timed_files
@@ -119,6 +124,166 @@ class TestFileTask < Test::Unit::TestCase
119
124
  assert_equal([ANCIENT_FILE, OLDFILE, MIDDLE_AGED_FILE], @runs)
120
125
  end
121
126
 
127
+ def test_old_file_in_between_with_missing_leaf
128
+ create_dispersed_timed_files(MIDDLE_AGED_FILE, OLDFILE)
129
+ sleep 1
130
+
131
+ file MIDDLE_AGED_FILE => OLDFILE do |t|
132
+ @runs << t.name
133
+ touch MIDDLE_AGED_FILE, :verbose => false
134
+ end
135
+ file OLDFILE => NEWFILE do |t|
136
+ @runs << t.name
137
+ touch OLDFILE, :verbose => false
138
+ end
139
+ file NEWFILE do |t|
140
+ @runs << t.name
141
+ touch NEWFILE, :verbose => false
142
+ end
143
+
144
+ Task[MIDDLE_AGED_FILE].invoke
145
+ assert_equal([NEWFILE, OLDFILE, MIDDLE_AGED_FILE], @runs)
146
+ end
147
+
148
+ def test_two_old_files_in_between_with_missing_leaf
149
+ create_dispersed_timed_files(MIDDLE_AGED_FILE, OLDFILE, ANCIENT_FILE)
150
+ sleep 1
151
+
152
+ file MIDDLE_AGED_FILE => OLDFILE do |t|
153
+ @runs << t.name
154
+ touch MIDDLE_AGED_FILE, :verbose => false
155
+ end
156
+ file OLDFILE => ANCIENT_FILE do |t|
157
+ @runs << t.name
158
+ touch OLDFILE, :verbose => false
159
+ end
160
+ file ANCIENT_FILE => NEWFILE do |t|
161
+ @runs << t.name
162
+ touch ANCIENT_FILE, :verbose => false
163
+ end
164
+ file NEWFILE do |t|
165
+ @runs << t.name
166
+ touch NEWFILE, :verbose => false
167
+ end
168
+
169
+ Task[MIDDLE_AGED_FILE].invoke
170
+ assert_equal([NEWFILE, ANCIENT_FILE, OLDFILE, MIDDLE_AGED_FILE], @runs)
171
+ end
172
+
173
+ def test_diamond_graph_with_missing_leaf
174
+ a, b, c, d = %w[a b c d].map { |n| "testdata/#{n}" }
175
+ create_timed_files(a, b, c)
176
+ sleep 1
177
+
178
+ file a => [b, c] do
179
+ @runs << a
180
+ touch a
181
+ end
182
+ file b => d do
183
+ @runs << b
184
+ touch b
185
+ end
186
+ file c => d do
187
+ @runs << c
188
+ touch c
189
+ end
190
+ file d do
191
+ @runs << d
192
+ touch d
193
+ end
194
+
195
+ Task[a].invoke
196
+ assert_equal [a, b, c, d], @runs.sort
197
+ end
198
+
199
+ def test_diamond_graph_with_new_leaf
200
+ a, b, c, d = %w[a b c d].map { |n| "testdata/#{n}" }
201
+ create_timed_files(a, b, c)
202
+ sleep 1
203
+ touch d
204
+
205
+ file a => [b, c] do
206
+ @runs << a
207
+ touch a
208
+ end
209
+ file b => d do
210
+ @runs << b
211
+ touch b
212
+ end
213
+ file c => d do
214
+ @runs << c
215
+ touch c
216
+ end
217
+ file d do
218
+ @runs << d
219
+ touch d
220
+ end
221
+
222
+ Task[a].invoke
223
+ assert_equal [a, b, c], @runs.sort
224
+ end
225
+
226
+ def test_kite_graph_with_missing_leaf
227
+ a, b, c, d, e = %w[a b c d e].map { |n| "testdata/#{n}" }
228
+ create_timed_files(a, b, c, d)
229
+ sleep 1
230
+
231
+ file a => [b, c] do
232
+ @runs << a
233
+ touch a
234
+ end
235
+ file b => d do
236
+ @runs << b
237
+ touch b
238
+ end
239
+ file c => d do
240
+ @runs << c
241
+ touch c
242
+ end
243
+ file d => e do
244
+ @runs << d
245
+ touch d
246
+ end
247
+ file e do
248
+ @runs << e
249
+ touch e
250
+ end
251
+
252
+ Task[a].invoke
253
+ assert_equal [a, b, c, d, e], @runs.sort
254
+ end
255
+
256
+ def test_kite_graph_with_new_leaf
257
+ a, b, c, d, e = %w[a b c d e].map { |n| "testdata/#{n}" }
258
+ create_timed_files(a, b, c, d)
259
+ sleep 1
260
+ touch e
261
+
262
+ file a => [b, c] do
263
+ @runs << a
264
+ touch a
265
+ end
266
+ file b => d do
267
+ @runs << b
268
+ touch b
269
+ end
270
+ file c => d do
271
+ @runs << c
272
+ touch c
273
+ end
274
+ file d => e do
275
+ @runs << d
276
+ touch d
277
+ end
278
+ file e do
279
+ @runs << e
280
+ touch e
281
+ end
282
+
283
+ Task[a].invoke
284
+ assert_equal [a, b, c, d], @runs.sort
285
+ end
286
+
122
287
  # I have currently disabled this test. I'm not convinced that
123
288
  # deleting the file target on failure is always the proper thing to
124
289
  # do. I'm willing to hear input on this topic.
metadata CHANGED
@@ -1,7 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.7.0.2.3
4
+ hash: 207
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 8
9
+ - 7
10
+ - 0
11
+ - 2
12
+ - 4
13
+ version: 0.8.7.0.2.4
5
14
  platform: ruby
6
15
  authors:
7
16
  - James M. Lawrence
@@ -9,20 +18,26 @@ autorequire:
9
18
  bindir: bin
10
19
  cert_chain: []
11
20
 
12
- date: 2009-05-27 00:00:00 -04:00
21
+ date: 2010-06-07 00:00:00 -04:00
13
22
  default_executable: drake
14
23
  dependencies:
15
24
  - !ruby/object:Gem::Dependency
16
25
  name: comp_tree
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
26
+ prerelease: false
27
+ requirement: &id001 !ruby/object:Gem::Requirement
28
+ none: false
20
29
  requirements:
21
30
  - - ">="
22
31
  - !ruby/object:Gem::Version
32
+ hash: 5
33
+ segments:
34
+ - 0
35
+ - 7
36
+ - 3
23
37
  version: 0.7.3
24
- version:
25
- description: Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.
38
+ type: :runtime
39
+ version_requirements: *id001
40
+ description: " Rake is a Make-like program implemented in Ruby. Tasks\n and dependencies are specified in standard Ruby syntax. \n"
26
41
  email: quixoticsycophant@gmail.com
27
42
  executables:
28
43
  - drake
@@ -61,9 +76,9 @@ files:
61
76
  - CHANGES
62
77
  - CHANGES.drake
63
78
  - MIT-LICENSE
79
+ - README
64
80
  - Rakefile
65
81
  - Rakefile.drake
66
- - README
67
82
  - TODO
68
83
  - bin/drake
69
84
  - lib/rake/alt_system.rb
@@ -108,10 +123,10 @@ files:
108
123
  - test/test_definitions.rb
109
124
  - test/test_earlytime.rb
110
125
  - test/test_extension.rb
111
- - test/test_filelist.rb
112
- - test/test_fileutils.rb
113
126
  - test/test_file_creation_task.rb
114
127
  - test/test_file_task.rb
128
+ - test/test_filelist.rb
129
+ - test/test_fileutils.rb
115
130
  - test/test_ftp.rb
116
131
  - test/test_invocation_chain.rb
117
132
  - test/test_makefile_loader.rb
@@ -125,10 +140,10 @@ files:
125
140
  - test/test_rdoc_task.rb
126
141
  - test/test_require.rb
127
142
  - test/test_rules.rb
128
- - test/test_tasklib.rb
129
- - test/test_tasks.rb
130
143
  - test/test_task_arguments.rb
131
144
  - test/test_task_manager.rb
145
+ - test/test_tasklib.rb
146
+ - test/test_tasks.rb
132
147
  - test/test_test_task.rb
133
148
  - test/test_top_level_functions.rb
134
149
  - test/test_win32.rb
@@ -143,14 +158,12 @@ files:
143
158
  - test/data/namespace/Rakefile
144
159
  - test/data/statusreturn/Rakefile
145
160
  - test/data/unittest/Rakefile
146
- - test/data/unittest/subdir
147
161
  - doc/command_line_usage.rdoc
148
- - doc/example
162
+ - doc/example/Rakefile1
163
+ - doc/example/Rakefile2
149
164
  - doc/example/a.c
150
165
  - doc/example/b.c
151
166
  - doc/example/main.c
152
- - doc/example/Rakefile1
153
- - doc/example/Rakefile2
154
167
  - doc/glossary.rdoc
155
168
  - doc/jamis.rb
156
169
  - doc/parallel.rdoc
@@ -158,7 +171,6 @@ files:
158
171
  - doc/rake.1.gz
159
172
  - doc/rakefile.rdoc
160
173
  - doc/rational.rdoc
161
- - doc/release_notes
162
174
  - doc/release_notes/rake-0.4.14.rdoc
163
175
  - doc/release_notes/rake-0.4.15.rdoc
164
176
  - doc/release_notes/rake-0.5.0.rdoc
@@ -178,6 +190,8 @@ files:
178
190
  - doc/release_notes/rake-0.8.7.rdoc
179
191
  has_rdoc: true
180
192
  homepage: http://drake.rubyforge.org
193
+ licenses: []
194
+
181
195
  post_install_message:
182
196
  rdoc_options:
183
197
  - --line-numbers
@@ -188,23 +202,29 @@ rdoc_options:
188
202
  require_paths:
189
203
  - lib
190
204
  required_ruby_version: !ruby/object:Gem::Requirement
205
+ none: false
191
206
  requirements:
192
207
  - - ">="
193
208
  - !ruby/object:Gem::Version
209
+ hash: 3
210
+ segments:
211
+ - 0
194
212
  version: "0"
195
- version:
196
213
  required_rubygems_version: !ruby/object:Gem::Requirement
214
+ none: false
197
215
  requirements:
198
216
  - - ">="
199
217
  - !ruby/object:Gem::Version
218
+ hash: 3
219
+ segments:
220
+ - 0
200
221
  version: "0"
201
- version:
202
222
  requirements: []
203
223
 
204
224
  rubyforge_project: drake
205
- rubygems_version: 1.3.1
225
+ rubygems_version: 1.3.7
206
226
  signing_key:
207
- specification_version: 2
227
+ specification_version: 3
208
228
  summary: A branch of Rake supporting automatic parallelizing of tasks.
209
229
  test_files: []
210
230