Skip to content

Use buildSdkSummary from the analyzer #2746

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

Merged
merged 4 commits into from
Jul 6, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions build/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,7 @@ dev_dependencies:
build_vm_compilers: ">=0.1.0 <2.0.0"
pedantic: ^1.0.0
test: ^1.2.0

dependency_overrides:
build_resolvers:
path: ../build_resolvers
4 changes: 4 additions & 0 deletions build_daemon/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,7 @@ dev_dependencies:
test: ^1.3.3
test_descriptor: ^1.1.1
uuid: ^2.0.0

dependency_overrides:
build_resolvers:
path: ../build_resolvers
4 changes: 4 additions & 0 deletions build_modules/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,7 @@ dev_dependencies:
path: test/fixtures/a
b:
path: test/fixtures/b

dependency_overrides:
build_resolvers:
path: ../build_resolvers
5 changes: 4 additions & 1 deletion build_resolvers/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
## 1.3.10-dev
## 1.3.10

- Migrate to new analyzer API for creating an SDK summary after the old approach
was broken.

## 1.3.9

Expand Down
54 changes: 6 additions & 48 deletions build_resolvers/lib/src/resolver.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,16 @@ import 'package:analyzer/src/summary/summary_file_builder.dart';
import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/file_system/file_system.dart' hide File;
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/dart/analysis/driver.dart' show AnalysisDriver;
import 'package:analyzer/src/dart/sdk/sdk.dart';
import 'package:analyzer/src/generated/engine.dart'
show AnalysisOptions, AnalysisOptionsImpl;
import 'package:build/build.dart';
import 'package:build/experiments.dart';
import 'package:logging/logging.dart';
import 'package:package_config/package_config.dart';
import 'package:path/path.dart' as p;
import 'package:yaml/yaml.dart';

import 'analysis_driver.dart';
import 'build_asset_uri_resolver.dart';
Expand Down Expand Up @@ -289,7 +285,12 @@ Future<String> _defaultSdkSummaryGenerator() async {
var watch = Stopwatch()..start();
_logger.info('Generating SDK summary...');
await summaryFile.create(recursive: true);
await summaryFile.writeAsBytes(_buildSdkSummary());
final embedderYamlPath =
isFlutter ? p.join(_dartUiPath, '_embedder.yaml') : null;
await summaryFile.writeAsBytes(buildSdkSummary(
sdkPath: _runningDartSdkPath,
resourceProvider: PhysicalResourceProvider.INSTANCE,
embedderYamlPath: embedderYamlPath));

await _createDepsFile(depsFile, currentDeps);
watch.stop();
Expand Down Expand Up @@ -322,49 +323,6 @@ Future<void> _createDepsFile(
await depsFile.writeAsString(jsonEncode(currentDeps));
}

List<int> _buildSdkSummary() {
var resourceProvider = PhysicalResourceProvider.INSTANCE;
var dartSdkFolder = resourceProvider.getFolder(_runningDartSdkPath);
var sdk = FolderBasedDartSdk(resourceProvider, dartSdkFolder)
..useSummary = false
..analysisOptions = AnalysisOptionsImpl();

if (isFlutter) {
_addFlutterLibraries(sdk, resourceProvider);
}

var sdkSources = {
for (var library in sdk.sdkLibraries) sdk.mapDartUri(library.shortName),
};

// ignore: deprecated_member_use
return SummaryBuilder(sdkSources, sdk.context).build(
// TODO: remove after https://github.com/dart-lang/sdk/issues/41820
// ignore: deprecated_member_use
featureSet: FeatureSet.fromEnableFlags(['non-nullable']));
}

/// Loads the flutter engine _embedder.yaml file and adds any new libraries to
/// [sdk].
void _addFlutterLibraries(
AbstractDartSdk sdk, ResourceProvider resourceProvider) {
var embedderYamlFile =
resourceProvider.getFile(p.join(_dartUiPath, '_embedder.yaml'));
if (!embedderYamlFile.exists) {
throw StateError('Unable to find flutter libraries, please run '
'`flutter precache` and try again.');
}

var embedderYaml = loadYaml(embedderYamlFile.readAsStringSync()) as YamlMap;
var flutterSdk = EmbedderSdk(resourceProvider,
{resourceProvider.getFolder(_dartUiPath): embedderYaml});

for (var library in flutterSdk.sdkLibraries) {
if (sdk.libraryMap.getLibrary(library.shortName) != null) continue;
sdk.libraryMap.setLibrary(library.shortName, library as SdkLibraryImpl);
}
}

/// Checks that the current analyzer version supports the current language
/// version.
void _warnOnLanguageVersionMismatch() {
Expand Down
5 changes: 2 additions & 3 deletions build_resolvers/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
name: build_resolvers
version: 1.3.10-dev
version: 1.3.10
description: Resolve Dart code in a Builder
homepage: https://github.com/dart-lang/build/tree/master/build_resolvers

environment:
sdk: ">=2.7.0 <3.0.0"

dependencies:
analyzer: ^0.39.5
analyzer: ^0.39.12
build: ">=1.3.0 <1.4.0"
crypto: ^2.0.0
graphs: ^0.2.0
logging: ^0.11.2
path: ^1.1.0
package_config: ^1.9.3
pub_semver: ^1.3.0
yaml: ^2.0.0

dev_dependencies:
test: ^1.0.0
Expand Down
4 changes: 4 additions & 0 deletions build_runner/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,7 @@ dev_dependencies:
test_process: ^1.0.0
_test_common:
path: ../_test_common

dependency_overrides:
build_resolvers:
path: ../build_resolvers
4 changes: 4 additions & 0 deletions build_runner_core/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,7 @@ dev_dependencies:
test_process: ^1.0.0
_test_common:
path: ../_test_common

dependency_overrides:
build_resolvers:
path: ../build_resolvers
4 changes: 4 additions & 0 deletions build_test/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,7 @@ dev_dependencies:
build_runner: ^1.3.3
build_vm_compilers: '>=0.1.2 <2.0.0'
collection: ^1.14.0

dependency_overrides:
build_resolvers:
path: ../build_resolvers
2 changes: 1 addition & 1 deletion build_vm_compilers/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ dependency_overrides:
build_runner:
path: ../build_runner
build_runner_core:
path: ../build_runner_core
path: ../build_runner_core
4 changes: 4 additions & 0 deletions build_web_compilers/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,7 @@ dev_dependencies:
path: test/fixtures/a
b:
path: test/fixtures/b

dependency_overrides:
build_resolvers:
path: ../build_resolvers
4 changes: 4 additions & 0 deletions scratch_space/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,7 @@ dev_dependencies:
build_test: ^1.0.0
build_vm_compilers: ">=0.1.0 <2.0.0"
test: ^1.0.0

dependency_overrides:
build_resolvers:
path: ../build_resolvers