dart-lang / dart-pad

An online Dart editor with support for console, web, and Flutter apps
https://dartpad.dev
BSD 3-Clause "New" or "Revised" License
1.71k stars 554 forks source link

unable to deploy the dartpad backend for the beta and main channels #2718

Closed devoncarew closed 11 months ago

devoncarew commented 11 months ago

The build-storage-artifacts task is currently failing for the main (master) channel. We can't deploy and serve the main channel currently. This will progressively impact the beta and later stable channels of dartpad.

Step #1 - "Build storage artifacts":   Context: The unavailable library 'dart:ui' is imported through these packages:
Step #1 - "Build storage artifacts":   
Step #1 - "Build storage artifacts":       package:flutter => dart:ui
Step #1 - "Build storage artifacts":       ...
Step #1 - "Build storage artifacts":   
Step #1 - "Build storage artifacts":   Detailed import paths for (some of) the these imports:
Step #1 - "Build storage artifacts":   
Step #1 - "Build storage artifacts":       package:flutter/painting.dart => dart:ui
...
devoncarew commented 11 months ago

I was able to bisect this to the flutter commit https://github.com/flutter/flutter/commit/58c06e0fdca359b575d5235e01a08e4633a76032.

That includes:

2023-10-31 skia-flutter-autoroll@skia.org Roll Dart SDK from eecb650a0fb9 to 99fa0283f9d7 (1 revision) (https://github.com/flutter/engine/pull/47526)
2023-10-31 skia-flutter-autoroll@skia.org Roll Skia from 998e19071734 to aaa225e0cc6d (1 revision) (https://github.com/flutter/engine/pull/47524)
2023-10-31 skia-flutter-autoroll@skia.org Roll Skia from cc751f5d50ea to 998e19071734 (1 revision) (https://github.com/flutter/engine/pull/47522)
2023-10-31 skia-flutter-autoroll@skia.org Roll Skia from 2f7e5dbb8521 to cc751f5d50ea (1 revision) (https://github.com/flutter/engine/pull/47519)
2023-10-31 jacksongardner@google.com Move flutter.js into the engine. (https://github.com/flutter/engine/pull/47240)
2023-10-31 skia-flutter-autoroll@skia.org Roll Skia from b3360479118f to 2f7e5dbb8521 (1 revision) (https://github.com/flutter/engine/pull/47517)
2023-10-31 jason-simmons@users.noreply.github.com [Impeller] Do not return a null Contents if a Paint's blur filter yields an empty coverage rect (https://github.com/flutter/engine/pull/47496)
2023-10-31 skia-flutter-autoroll@skia.org Roll Dart SDK from 776fad25647a to eecb650a0fb9 (1 revision) (https://github.com/flutter/engine/pull/47514)

That includes two Dart SDK rolls (both worth investigating) as well as a flutter web related commit.

devoncarew commented 11 months ago

sdk commit 1:

sdk commit 2:

engine commit:

devoncarew commented 11 months ago

At a very first blush, I'd suspect the engine commit.

devoncarew commented 11 months ago

@eyebrowsoffire, @ditman - this is a fairly large breakage for dartpad; we can't deploy the latest sdk to the beta and main channels, and once https://github.com/flutter/engine/commit/6473a5a5015c2984a250048d35df9a3ae7529075 hits the stable channel, will no longer be able to deploy to stable. We'll need to roll back that change (or figure out a way to fix dartpad forward).

eyebrowsoffire commented 11 months ago

@devoncarew Could I get a little more context to investigate this issue? Can you link to the build failure? I'm not familiar with dartpad's CI steps but I can dig into it if you can point me in the right direction.

devoncarew commented 11 months ago

We were using that deleted file from the sdk - flutter_ddc_sdk_sound.dill. We use it with DDC to support modular compilation in dartpad - compiling the user's source and using pre-built JavaScript of the framework and related libraries; https://github.com/dart-lang/dart-pad/blob/main/pkgs/dart_services/tool/grind.dart#L247.

I'm not 100% familiar with the mechanics involved and whether or not it would be feasible for us to just recreate that dill file from the framework source ourselves. Happy to VC or otherwise provide additional context.

devoncarew commented 11 months ago

The build failures are available from the failed jobs of this PR: https://github.com/dart-lang/dart-pad/pull/2719.

eyebrowsoffire commented 11 months ago

Ohh, I see, this is easy to forward fix. We basically moved that to the new path flutter_web_sdk/kernel/ddc_outline_sound.dill and the flutter tool switched to that a while ago. We kept the old one around during the transition, but removed it because the flutter tool had migrated. I didn't realize dartpad was still using that dill file. You can instead point to the new path and that should fix your issue.

eyebrowsoffire commented 11 months ago

So https://github.com/dart-lang/dart-pad/blob/1d5975aa0525e0200eaa69a0fbe85be2893a2a8a/pkgs/dart_services/tool/grind.dart#L242 should basically be:

  final dillPath = path.join(
    sdk.flutterWebSdkPath,
    'kernel',
    'ddc_outline_sound.dill',
  );

Instead, and that should work.

devoncarew commented 11 months ago

That's an embarrassingly simple fix :) I'll give it a shot - thanks for the looking into this.

eyebrowsoffire commented 11 months ago

No problem!