build icon indicating copy to clipboard operation
build copied to clipboard

Build fails in precompile due to missing classes it's supposed to generate

Open frank06 opened this issue 1 year ago • 8 comments

Getting a failure during precompile:

$ dart run build_runner build -d -v

Building package executable... (7.2s)
Built build_runner:build_runner.
[INFO] Entrypoint:Generating build script...
[INFO] Entrypoint:Generating build script completed, took 389ms

[INFO] Bootstrap:Precompiling build script......
[WARNING] Bootstrap:
lib/main.dart:3:8: Error: Error when reading 'lib/objectbox.g.dart': No such file or directory
import 'package:ob_test/objectbox.g.dart';
       ^
lib/main.dart:13:14: Error: 'Store' isn't a type.
  late final Store store;
             ^^^^^
lib/main.dart:15:13: Error: Method not found: 'openStore'.
    store = openStore();
            ^^^^^^^^^
// ...


[SEVERE] Bootstrap:
Failed to precompile build script .dart_tool/build/entrypoint/build.dart.
This is likely caused by a misconfigured builder definition.

This methods are generated by Objectbox. But the build fails way before giving the chance to Objectbox to generate them. It's a catch 22.

build_runner: ^2.4.6, Dart SDK version: 3.1.2 (stable)

Using Objectbox, which has two builders: resolver, generator.

I created my own to run before resolver, as it generates code that should be consumed by resolver.

builders:
  data_model_builder:
    import: "package:ob_test/builders/data_model_builder.dart"
    builder_factories: ["dataModelBuilder"]
    build_extensions: { "$lib$": ["entities.g.dart"] }
    auto_apply: dependents
    build_to: source
    runs_before: ["objectbox_generator|resolver"]

I've seen data_model_builder properly output entities.g.dart so I know it's some configuration issue.

What is the right config for running my builder before Objectbox?

frank06 avatar Dec 27 '23 22:12 frank06