The builder process I've been using with no problems is now breaking on watch. That is to say:
It completes just fine with pub run build_runner build --delete-conflicting-outputs (though it does warn me about missing required sources, though that has been fine to ignore for months).
$ pub run build_runner build --delete-conflicting-outputs
[INFO] Generating build script completed, took 337ms
[WARNING] The package `edgehead` does not include some required sources in any of its targets (see their build.yaml file).
The missing sources are:
- $package$
[INFO] Reading cached asset graph completed, took 120ms
[INFO] Checking for updates since last build completed, took 512ms
[INFO] Running build completed, took 16.0s
[INFO] Caching finalized dependency graph completed, took 101ms
[INFO] Succeeded after 16.2s with 43 outputs (250 actions)
It also completes fine for the initial build of pub run build_runner watch --delete-conflicting-outputs
$ pub run build_runner watch --delete-conflicting-outputs
[INFO] Generating build script completed, took 314ms
[WARNING] The package `edgehead` does not include some required sources in any of its targets (see their build.yaml file).
The missing sources are:
- $package$
[INFO] Setting up file watchers completed, took 4ms
[INFO] Waiting for all file watchers to be ready completed, took 201ms
[INFO] Reading cached asset graph completed, took 122ms
[INFO] Checking for updates since last build completed, took 558ms
[INFO] Running build completed, took 14.8s
[INFO] Caching finalized dependency graph completed, took 126ms
[INFO] Succeeded after 14.9s with 43 outputs (250 actions)
[INFO] ------------------------------------------------------------------------
[INFO] Starting Build
[INFO] Updating asset graph completed, took 3ms
[SEVERE] egamebook_builder:writers_builder on lib/writers_input.dart:
Cycle loading state error
#0 LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:177:32)
dart-lang/build#1 LibraryContext.load2.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:250:17)
dart-lang/build#2 PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:34:15)
dart-lang/build#3 LibraryContext.load2 (package:analyzer/src/dart/analysis/library_context.dart:248:12)
dart-lang/build#4 AnalysisDriver._createLibraryContext.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1504:25)
dart-lang/build#5 _rootRun (dart:async/zone.dart:1190:13)
dart-lang/build#6 _CustomZone.run (dart:async/zone.dart:1093:19)
dart-lang/build#7 _runZoned (dart:async/zone.dart:1630:10)
dart-lang/build#8 runZoned (dart:async/zone.dart:1550:10)
dart-lang/build#9 NullSafetyUnderstandingFlag.enableNullSafetyTypes (package:analyzer/dart/element/null_safety_understanding_flag.dart:42:12)
dart-lang/build#10 AnalysisDriver._createLibraryContext (package:analyzer/src/dart/analysis/driver.dart:1490:33)
dart-lang/build#11 AnalysisDriver._computeUnitElement.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1420:28)
dart-lang/build#12 PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:34:15)
dart-lang/build#13 AnalysisDriver._computeUnitElement (package:analyzer/src/dart/analysis/driver.dart:1418:20)
dart-lang/build#14 AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1006:34)
dart-lang/build#15 AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:1967:24)
<asynchronous suspension>
dart-lang/build#16 AnalysisDriverScheduler.start (package:analyzer/src/dart/analysis/driver.dart:1890:5)
dart-lang/build#17 analysisDriver (package:build_resolvers/src/analysis_driver.dart:62:13)
dart-lang/build#18 AnalyzerResolvers._ensureInitialized.<anonymous closure> (package:build_resolvers/src/resolver.dart:224:26)
<asynchronous suspension>
dart-lang/build#19 AnalyzerResolvers._ensureInitialized.<anonymous closure> (package:build_resolvers/src/resolver.dart)
dart-lang/build#20 AnalyzerResolvers._ensureInitialized (package:build_resolvers/src/resolver.dart:227:6)
dart-lang/build#21 AnalyzerResolvers.get (package:build_resolvers/src/resolver.dart:232:11)
dart-lang/build#22 PerformanceTrackingResolvers.get.<anonymous closure> (package:build_runner_core/src/performance_tracking/performance_tracking_resolvers.dart:19:58)
dart-lang/build#23 _NoOpBuilderActionTracker.trackStage (package:build_runner_core/src/generate/performance_tracker.dart:302:15)
dart-lang/build#24 PerformanceTrackingResolvers.get (package:build_runner_core/src/performance_tracking/performance_tracking_resolvers.dart:19:16)
dart-lang/build#25 BuildStepImpl.resolver (package:build/src/builder/build_step_impl.dart:73:54)
dart-lang/build#26 _Builder.build (package:source_gen/src/builder.dart:68:32)
dart-lang/build#27 runBuilder.buildForInput (package:build/src/generate/run_builder.dart:55:21)
dart-lang/build#28 MappedListIterable.elementAt (dart:_internal/iterable.dart:417:31)
dart-lang/build#29 ListIterator.moveNext (dart:_internal/iterable.dart:343:26)
dart-lang/build#30 Future.wait (dart:async/future.dart:402:26)
dart-lang/build#31 runBuilder.<anonymous closure> (package:build/src/generate/run_builder.dart:61:36)
dart-lang/build#32 _rootRun (dart:async/zone.dart:1190:13)
dart-lang/build#33 _CustomZone.run (dart:async/zone.dart:1093:19)
dart-lang/build#34 _runZoned (dart:async/zone.dart:1630:10)
dart-lang/build#35 runZonedGuarded (dart:async/zone.dart:1618:12)
dart-lang/build#36 runZoned (dart:async/zone.dart:1547:12)
dart-lang/build#37 scopeLogAsync (package:build/src/builder/logging.dart:26:3)
dart-lang/build#38 runBuilder (package:build/src/generate/run_builder.dart:61:9)
dart-lang/build#39 _SingleBuild._runForInput.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:485:19)
dart-lang/build#40 _NoOpBuilderActionTracker.trackStage (package:build_runner_core/src/generate/performance_tracker.dart:302:15)
dart-lang/build#41 _SingleBuild._runForInput.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:483:23)
<asynchronous suspension>
dart-lang/build#42 _SingleBuild._runForInput.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart)
dart-lang/build#43 NoOpTimeTracker.track (package:timing/src/timing.dart:222:44)
dart-lang/build#44 _SingleBuild._runForInput.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:440:22)
dart-lang/build#45 Pool.withResource (package:pool/pool.dart:127:28)
<asynchronous suspension>
dart-lang/build#46 _SingleBuild._runForInput (package:build_runner_core/src/generate/build_impl.dart:436:17)
dart-lang/build#47 _SingleBuild._runBuilder.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:374:38)
dart-lang/build#48 MappedIterator.moveNext (dart:_internal/iterable.dart:392:20)
dart-lang/build#49 Future.wait (dart:async/future.dart:402:26)
dart-lang/build#50 _SingleBuild._runBuilder (package:build_runner_core/src/generate/build_impl.dart:373:36)
dart-lang/build#51 _SingleBuild._runPhases.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:319:20)
<asynchronous suspension>
dart-lang/build#52 _SingleBuild._runPhases.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart)
dart-lang/build#53 _NoOpBuildPerformanceTracker.trackBuildPhase (package:build_runner_core/src/generate/performance_tracker.dart:184:15)
dart-lang/build#54 _SingleBuild._runPhases.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:315:47)
dart-lang/build#55 NoOpTimeTracker.track (package:timing/src/timing.dart:222:44)
dart-lang/build#56 _SingleBuild._runPhases (package:build_runner_core/src/generate/build_impl.dart:309:32)
dart-lang/build#57 logTimedAsync (package:build_runner_core/src/logging/logging.dart:25:30)
dart-lang/build#58 _SingleBuild._safeBuild.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:266:26)
dart-lang/build#59 _rootRun (dart:async/zone.dart:1190:13)
dart-lang/build#60 _CustomZone.run (dart:async/zone.dart:1093:19)
dart-lang/build#61 _runZoned (dart:async/zone.dart:1630:10)
dart-lang/build#62 runZonedGuarded (dart:async/zone.dart:1618:12)
dart-lang/build#63 runZoned (dart:async/zone.dart:1547:12)
dart-lang/build#64 _SingleBuild._safeBuild (package:build_runner_core/src/generate/build_impl.dart:261:5)
dart-lang/build#65 _SingleBuild.run (package:build_runner_core/src/generate/build_impl.dart:208:24)
dart-lang/build#66 BuildImpl.run (package:build_runner_core/src/generate/build_impl.dart:94:56)
dart-lang/build#67 WatchImpl._run.<anonymous closure> (package:build_runner/src/generate/watch_impl.dart:337:14)
<asynchronous suspension>
dart-lang/build#68 WatchImpl._run.<anonymous closure> (package:build_runner/src/generate/watch_impl.dart)
dart-lang/build#69 WatchImpl._run (package:build_runner/src/generate/watch_impl.dart:355:6)
dart-lang/build#70 new WatchImpl (package:build_runner/src/generate/watch_impl.dart:196:20)
dart-lang/build#71 _runWatch (package:build_runner/src/generate/watch_impl.dart:127:5)
dart-lang/build#72 watch (package:build_runner/src/generate/watch_impl.dart:85:15)
dart-lang/build#73 _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#74 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#75 _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#76 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#77 Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#78 Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#79 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
dart-lang/build#80 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
dart-lang/build#81 BuildOptions.create (package:build_runner_core/src/generate/options.dart)
dart-lang/build#82 _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#83 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#84 _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#85 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#86 Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#87 Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#88 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
dart-lang/build#89 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
dart-lang/build#90 TargetGraph.forPackageGraph (package:build_runner_core/src/package_graph/target_graph.dart)
dart-lang/build#91 _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#92 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#93 _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#94 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#95 Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#96 Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#97 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
dart-lang/build#98 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
dart-lang/build#99 _packageBuildConfig (package:build_runner_core/src/package_graph/target_graph.dart)
dart-lang/build#100 _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#101 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#102 _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#103 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#104 Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#105 Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#106 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
dart-lang/build#107 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
dart-lang/build#108 BuildConfig.fromBuildConfigDir (package:build_config/src/build_config.dart)
dart-lang/build#109 _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#110 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#111 _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#112 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#113 Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#114 Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#115 Future._asyncCompleteWithValue.<anonymous closure> (dart:async/future_impl.dart:567:7)
dart-lang/build#116 _rootRun (dart:async/zone.dart:1190:13)
dart-lang/build#117 _CustomZone.run (dart:async/zone.dart:1093:19)
dart-lang/build#118 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:1021:23)
dart-lang/build#119 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
dart-lang/build#120 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
dart-lang/build#121 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
dart-lang/build#122 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)
I don't have a minimal repro, but if you're willing to try it out on the real thing:
git clone https://github.com/filiph/egamebook.gitcd egamebook/edgeheadpub getpub run build_runner watch --delete-conflicting-outputsassets/text/Knights (e.g. this one) and make a whitespace change, then saveThat should trigger the failure.
Dart SDK Version (dart --version)
What package(s) from this repo you are using, and the version (i.e. build_runner 0.7.12)
What builder(s) you are using (or writing yourself). Try to give a short summary of what they do.
built_value that runs both on manually-written Dart files as well as on the dart files generated in the previous step.Whether you are using Windows, MacOSX, or Linux (if applicable)
Any other packages or constraints we should know about
cc @scheglov do you have any ideas here?
I was able to reproduce the issue with the given instructions.
And this is so good.
I have been unsuccessfully trying to find a way to reproduce it for a long time.
Should we move this to the sdk repo? (ie: is it an analyzer issue then and not something with our use of it?)
Yes, this is an analyzer issue, internal exceptions should not happen.
If this is caused by a client using APIs incorrectly, then the analyzer should report it a a kind of StateError explicitly.
So, let's move it.
https://dart-review.googlesource.com/c/sdk/+/159140 should fix the issue, when a version of analyzer that includes this change is published.
@jakemac53 Should I create a new issue on the dart-lang/build repo to ask for including this in the next release?
Most helpful comment
Yes, this is an analyzer issue, internal exceptions should not happen.
If this is caused by a client using APIs incorrectly, then the analyzer should report it a a kind of
StateErrorexplicitly.So, let's move it.