Skip to content

Build runner fails on libraries that indirectly import dart-ext #2045

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
simolus3 opened this issue Feb 12, 2019 · 2 comments · Fixed by #2046
Closed

Build runner fails on libraries that indirectly import dart-ext #2045

simolus3 opened this issue Feb 12, 2019 · 2 comments · Fixed by #2046

Comments

@simolus3
Copy link
Contributor

I'm using Dart VM version: 2.1.0 (Tue Nov 13 18:22:02 2018 +0100) on "linux_x64" with build_runner 1.2.3 and build 1.1.0. I'm applying built_value_generator on a project that includes a file like this (called vm_database.dart)

import 'package:sqlite2/sqlite.dart';
// code that does not use built_value at all

package:sqlite2/sqlite.dart imports package:sqlite2/src/native.dart, which in turn has a
import 'dart-ext:dart_sqlite'; directive.

When I run pub run build_runner build --verbose, I get an error on my file:

[INFO] Generating build script completed, took 213ms
[INFO] BuildDefinition:Initializing inputs
[INFO] BuildDefinition:Reading cached asset graph...
[INFO] BuildDefinition:Reading cached asset graph completed, took 44ms

[INFO] BuildDefinition:Checking for updates since last build...
[INFO] BuildDefinition:Checking for updates since last build completed, took 415ms

[INFO] Build:Running build...
[SEVERE] built_value_generator|built_value on lib/vm_database.dart:

Unsupported operation: Cannot resolve dart-ext:dart_sqlite; only "package" and "asset" schemes supported
package:build                                               new AssetId.resolve
package:build_resolvers/src/resolver.dart 357:18            _resolve
package:build_resolvers/src/resolver.dart 229:21            AssetBasedSource.updateDependencies.<fn>
dart:core                                                   Iterable.toSet
package:build_resolvers/src/resolver.dart 231:10            AssetBasedSource.updateDependencies
package:build_resolvers/src/resolver.dart 145:16            AnalyzerResolver._performResolve.processAsset.<fn>
dart:async                                                  _completeOnAsyncReturn
package:pool/pool.dart                                      Pool.withResource
package:build_runner_core/src/asset/file_based.dart 34:39   FileBasedAssetReader.readAsBytes.<fn>
dart:async                                                  _completeOnAsyncReturn
package:pool/pool.dart                                      Pool.withResource
package:build_runner_core/src/asset/file_based.dart 133:26  _fileForOrThrow
package:build_runner_core/src/asset/file_based.dart 33:48   FileBasedAssetReader.readAsBytes
package:build_runner_core/src/asset/build_cache.dart 39:17  BuildCacheReader.readAsBytes
package:build_runner_core/src/asset/cache.dart 74:25        CachingAssetReader.readAsBytes.<fn>
dart:collection                                             __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent
package:build_runner_core/src/asset/cache.dart 72:38        CachingAssetReader.readAsBytes
package:build_runner_core/src/asset/cache.dart 96:15        CachingAssetReader.readAsString.<fn>
dart:collection                                             __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent
package:build_runner_core/src/asset/cache.dart 94:39        CachingAssetReader.readAsString
package:build_runner_core/src/asset/reader.dart 114:28      SingleStepReader.readAsString.<fn>.<fn>
package:build_runner_core/src/util/async.dart 13:20         doAfter
package:build_runner_core/src/asset/reader.dart 113:14      SingleStepReader.readAsString.<fn>
package:build_runner_core/src/util/async.dart 13:20         doAfter
package:build_runner_core/src/asset/reader.dart 109:21      SingleStepReader.readAsString
package:build                                               BuildStepImpl.readAsString
package:build_resolvers/src/resolver.dart 138:30            AnalyzerResolver._performResolve.processAsset
dart:core                                                   Iterable.forEach
package:build_resolvers/src/resolver.dart 149:14            AnalyzerResolver._performResolve.processAsset.<fn>
dart:async                                                  _completeOnAsyncReturn
package:pool/pool.dart                                      Pool.withResource

A builder I've written is applied on the same file, seemingly after built_value. It throws the following error:

[SEVERE] sally_generator on lib/vm_database.dart:

NoSuchMethodError: The method 'where' was called on null.
Receiver: null
Tried calling: where(Closure: (AssetId) => bool)
dart:core                                         Object.noSuchMethod
package:build_resolvers/src/resolver.dart 148:14  AnalyzerResolver._performResolve.processAsset.<fn>
@jakemac53
Copy link
Contributor

I think we should be explicitly skipping any imports with the dart-ext scheme, just like we do with the dart scheme? Not sure if that would solve the second issue, but worth a shot.

@simolus3
Copy link
Contributor Author

It looks like that does fix both issues. I can only use build_resolvers 0.2.3 because built_value doesn't support version 0.35 of the analyzer yet, but after adding an additional check for dart-ext here

if (uri.scheme == 'dart') return null;

both issues went away in my build.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants