Commit Graph

163 Commits

Author SHA1 Message Date
nweiz@google.com 138d51829f Move common streams in barback to their own class.
This cleans up some duplication and will make it easier to change or
add common streams in the future.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//249183005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35341 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-23 22:58:50 +00:00
nweiz@google.com 4476df500e Fix barback test failures.
The timing changes caused by allowing transformers to return
non-Futures tickled a race condition in the tests for running
declaring transformers eagerly. This avoids that race condition by
ensuring that the transformers are fully declared before any assets
are requested.

R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//247813004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35283 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-22 20:44:47 +00:00
nweiz@google.com e1ebd97e7c Don't require Transformer methods to return Futures.
R=rnystrom@google.com

Review URL: https://codereview.chromium.org//243793005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35280 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-22 19:59:26 +00:00
nweiz@google.com d30621796b Run declaring transformers eagerly if possible, even if their inputs are deferred.
R=rnystrom@google.com
BUG=18270

Review URL: https://codereview.chromium.org//243103003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35279 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-22 19:49:41 +00:00
nweiz@google.com 7edf663a9d Fix a deadlock bug with lazy transformer pipelining.
A deadlock would occur when a lazy primary input to a lazy transformer
became dirty while the transformer's apply method was running.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//241223005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35181 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-18 20:03:14 +00:00
nweiz@google.com 31c7c483a6 Don't warn if a transformer declares outputs that it doesn't emit.
R=rnystrom@google.com
BUG=18285

Review URL: https://codereview.chromium.org//241493002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35150 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-17 20:18:13 +00:00
nweiz@google.com 9f15614e94 Lazy transformers followed by non-lazy ones shouldn't always be forced.
R=rnystrom@google.com

Review URL: https://codereview.chromium.org//238513002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35099 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-15 23:56:11 +00:00
nweiz@google.com 5aa9ef2c40 Make [Barback.getAllAssets] work when called synchronously.
This was broken because InputNode didn't take its input being dirty
into account when calculating whether it was dirty, so the synchronous
period between providing Barback with assets and getting those assets'
values had the graph marked as clean but none of its outputs yet
available.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//238503003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35098 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-15 23:54:32 +00:00
nweiz@google.com b896337e9e Don't make lazy transformers eager when an asset is requested.
Instead, they'll only be active long enough to finish applying, then become lazy
again.

R=rnystrom@google.com
BUG=17903

Review URL: https://codereview.chromium.org//233843002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35055 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-15 01:08:32 +00:00
nweiz@google.com ff12f81d44 Preserve laziness in declaring transformers.
R=rnystrom@google.com
BUG=16442

Review URL: https://codereview.chromium.org//231603005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34945 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-10 20:57:50 +00:00
nweiz@google.com c8f7d9ee15 Stop working around issue 14971 in barback.
R=rnystrom@google.com

Review URL: https://codereview.chromium.org//230723004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34943 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-10 20:43:07 +00:00
nweiz@google.com 6e601e5159 Don't treat the primary input as a secondary input in barback.
Some transformers use [Transform.readInputAsString] to read their
primary input, which puts it into a weird state of being considered
both a primary and a secondary input. This ensures that it always goes
through the normal [primaryInput] path.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//229833003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34905 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-09 23:51:09 +00:00
nweiz@google.com 5da715ba5a Only run [declareOutputs] once for each asset/transformer pair.
BUG=16442
R=rnystrom@google.com

Review URL: https://codereview.chromium.org//227123007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34892 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-09 20:23:12 +00:00
shaza@google.com a402dfd459 Renaming "examples" to "example".
BUG=

Review URL: https://codereview.chromium.org//230143002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34859 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-09 04:13:33 +00:00
nweiz@google.com 7c5db3616b Only run [Transformer.isPrimary] once for each asset/transformer pair.
BUG=16442
R=rnystrom@google.com

Review URL: https://codereview.chromium.org//224933002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34857 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-08 23:59:24 +00:00
nweiz@google.com da4d59c05e Only pass an AssetId to isPrimary and declareOutputs.
BUG=16442
R=blois@google.com, efortuna@google.com, rnystrom@google.com, sigmund@google.com

Review URL: https://codereview.chromium.org//223553008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34853 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-08 23:46:23 +00:00
shaza@google.com 31eee5bc11 Adding barback examples.
BUG=
R=nweiz@google.com

Review URL: https://codereview.chromium.org//197533004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34851 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-08 23:19:58 +00:00
nweiz@google.com 135783d3ec Release barback 0.12.0.
R=rnystrom@google.com

Review URL: https://codereview.chromium.org//213593002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34458 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-26 23:21:54 +00:00
nweiz@google.com 9c1ea39a19 Get rid of an unused library in barback.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//210223005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34346 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-25 01:08:31 +00:00
nweiz@google.com 88fab79855 Re-run a transform when a secondary input starts existing.
R=rnystrom@google.com
BUG=17480

Review URL: https://codereview.chromium.org//200983002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33729 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-15 02:40:06 +00:00
nweiz@google.com c5fee85518 Make barback's onAsset streams broadcast rather than single-subscriber.
This brings these streams in line with the other Barback streams, allows us to
remove [Phase._next], and paves the way for re-running transformers when a
secondary input is added.

R=rnystrom@google.com
BUG=17480

Review URL: https://codereview.chromium.org//200473006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33727 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-14 23:15:27 +00:00
nweiz@google.com d960604eb3 Add a [Transform.hasInput] convenience method to Barback.
R=rnystrom@google.com
BUG=13264

Review URL: https://codereview.chromium.org//196983015

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33724 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-14 21:54:30 +00:00
nweiz@google.com c4b6289cda Improve the documentation for [TransformLogger.error].
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//199723002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33716 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-14 20:24:15 +00:00
nweiz@google.com acd46c1f06 Add a changelog to barback.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//199133003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33680 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-14 00:56:16 +00:00
nweiz@google.com a39fb8d585 Fix an analyzer warning in barback.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//196573013

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33678 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-13 23:50:32 +00:00
nweiz@google.com 645b713bfe Consider errors logged by a transformer equivalent to thrown errors.
R=rnystrom@google.com
BUG=15618

Review URL: https://codereview.chromium.org//196473016

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33674 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-13 23:31:03 +00:00
nweiz@google.com 10dcf9764a Asset load failures in Barback should produce AssetNotFoundExceptions.
Previously they were producing MissingInputExceptions, which is the
class used to communicate to listener's on Barback's error stream that
a transformer failed due to a missing input. The Transformer
documentation said that it should get AssetNotFoundExceptions and
those are easier to serialize anyway.

R=rnystrom@google.com
BUG=17225

Review URL: https://codereview.chromium.org//199443003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33673 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-13 23:26:16 +00:00
nweiz@google.com f993056557 Don't pass an asset through a transformer that produces an error.
R=rnystrom@google.com
BUG=17415

Review URL: https://codereview.chromium.org//195993005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33661 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-13 20:14:17 +00:00
nweiz@google.com 736f724808 Pre-compute the stack chain in Barback's _WrappedException.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//196223005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33660 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-13 19:24:27 +00:00
nweiz@google.com 429d0aef98 Fix analyzer errors in barback.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//195983011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33632 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-13 00:43:39 +00:00
nweiz@google.com f66fcea5f8 Support extensions with multiple periods in Transformer.allowedExtensions.
R=rnystrom@google.com
BUG=17167

Review URL: https://codereview.chromium.org//198103003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33629 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 23:31:46 +00:00
nweiz@google.com 598c5c8ee1 Move isPrimary computation from PhaseInput into TransformNode.
In addition to cleaning up the code, this makes transforms more parallel and
paves the way for properly supporting declaring transformers.

R=rnystrom@google.com
BUG=17401

Review URL: https://codereview.chromium.org//196273003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33626 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 23:20:25 +00:00
nweiz@google.com 2c19a00856 Add BaseTransform.consumePrimary to barback.
R=rnystrom@google.com
BUG=16612

Review URL: https://codereview.chromium.org//191223004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33557 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-11 21:44:14 +00:00
nweiz@google.com aa11f8396f Refactor the Transform classes.
This adds a more principled way of exposing only the necessary API to the
Transformer while providing detailed information to the TransformNode. It lays
the groundwork for [consumePrimary].

R=rnystrom@google.com
BUG=16612

Review URL: https://codereview.chromium.org//178223024

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33449 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 20:32:50 +00:00
nweiz@google.com 8f9faf01b0 Avoid O(n^2) behavior in Barback.
This changes [Phase.isDirty] and [Phase.onDone] to consider a phase
dirty if any previous phase is also dirty. Not only is this more
efficient, it's more accurate, since now [Phase.isDirty] is true
exactly when it's possible that a phase will emit new outputs.

R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//189623006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33447 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 20:10:19 +00:00
nweiz@google.com 37224e2c2e Fix a bug in barback caused by r33408.
It turns out barback didn't have any tests for removing a transformer group
(oops!), and r33408 introduced a bug there. This fixes that bug and adds a test.

R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//189583005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33410 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 01:55:51 +00:00
nweiz@google.com 245ed2801d Make Phase.getInput in barback play nicely with the push model.
The previous implementation made assumptions about each phase being
finished before the next one started. These assumptions were
invalidated by r33391.

R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//189263002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33408 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 01:41:37 +00:00
nweiz@google.com 9260e1620b Roll forward commits r33138, r33135, and r33134.
These commits were rolled back because r33134 exposed a case where barback was
able to deadlock. r33391 removed the root cause of the deadlock, so these
commits can be rolled forward again.

R=rnystrom@google.com
BUG=16612

Review URL: https://codereview.chromium.org//188673004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33400 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-06 22:28:10 +00:00
nweiz@google.com 8a8e27205e Move Barback to a more thoroughly push-based model.
This had a couple smaller ramifications:

* Instead of onDirty streams, most nodes now emit onDone streams that indicate
  when they have no more processing to do.

* AssetCascade was made more similar to other nodes; the BuildResult aggregation
  is now done entirely in PackageGraph.

R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//187263003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33391 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-06 19:31:56 +00:00
nweiz@google.com 3ef00de5cd Use zones to capture unexpected errors in barback.
Rather than being extremely diligent about capturing and piping
asynchronous errors within barback, we can now rely on the zone API to
put all of them where they belong.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//183813006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33315 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-05 00:12:10 +00:00
nweiz@google.com 1e6b7a27bd Revert commits r33138, r33135, and r33134.
r33134 introduced bugs that require a reasonably substantial refactor, and the
other two built on top of it.

R=rnystrom@google.com
TBR

Review URL: https://codereview.chromium.org//183993003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33144 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-28 01:14:24 +00:00
nweiz@google.com 6ff0a8e42d Add a dependency on collection to barback's pubspec.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//183623006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33138 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-27 22:51:06 +00:00
nweiz@google.com 9a629d93b7 Split barback's transform_test into multiple smaller test files.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//182313012

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33135 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-27 22:13:27 +00:00
nweiz@google.com d11e95b5be Barback transforms now pass through the primary input by default.
R=rnystrom@google.com
BUG=16612

Review URL: https://codereview.chromium.org//180473003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33134 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-27 21:49:19 +00:00
nweiz@google.com 29be7bfba2 Add support for a "fine" barback log level.
This level is not printed by default, but will be printed by pub if
--verbose is set.

Also update the observe/polymer version constraints. This change is
backwards-compatible from a transformer implementer's perspective, so the lower
bound doesn't need to be incremented.

BUG=16945
R=rnystrom@google.com

Review URL: https://codereview.chromium.org//166333003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33000 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-25 01:24:26 +00:00
nweiz@google.com 6164d11f16 Bump barback version to 0.11.1.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//178323004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32999 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-25 01:21:49 +00:00
nweiz@google.com 9da7f8aa3f Change ScheduledProcess's output streams over to be ScheduledStreams.
This will help test "pub serve" with multiple entrypoints.

R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//164773003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32770 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-18 22:56:58 +00:00
nweiz@google.com 6b112eb420 Add an issue reference to a TODO in barback.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//152083007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32536 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-11 01:46:50 +00:00
nweiz@google.com 01cadd4917 Add support for lazy transformers.
An upcoming CL will support propagating laziness through DryRunTransformers.

R=rnystrom@google.com
BUG=16077

Review URL: https://codereview.chromium.org//149243009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32516 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-10 20:17:54 +00:00
nweiz@google.com 5ae5b7d120 Fix a line of indentation in barback.
R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//133003007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32340 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-05 21:44:15 +00:00