mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:03:19 +00:00
[vm/isolate] Prefer .dart_tool/package_config.json over .packages
Flutter has migrated away from using the discontinued `package:package_resolver`, see [0], which should allow us to prefer the new `.dart_tool/package_config.json` format now. [0] https://github.com/flutter/flutter/issues/56289 Closes https://github.com/dart-lang/sdk/issues/41748 Change-Id: I9026af05756d01f4a3e0e0fc97fa77d27bf805b4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146840 Reviewed-by: Siva Annamalai <asiva@google.com> Commit-Queue: Martin Kustermann <kustermann@google.com>
This commit is contained in:
parent
4ead8ad652
commit
57e54cdd31
|
@ -338,33 +338,13 @@ _findPackagesConfiguration(bool traceLoading, Uri base) {
|
|||
while (true) {
|
||||
final dirUri = currentDir.uri;
|
||||
|
||||
// We prefer using `.packages` over `.dart_tool/package_config.json` so
|
||||
// old users of `Isolate.packageConfig` which cannot handle the new format
|
||||
// will continue to work (see https://github.com/dart-lang/sdk/issues/41748).
|
||||
final packagesFile = dirUri.resolve(".packages");
|
||||
if (traceLoading) {
|
||||
_log("Checking for $packagesFile file.");
|
||||
}
|
||||
File file = File.fromUri(packagesFile);
|
||||
bool exists = file.existsSync();
|
||||
if (traceLoading) {
|
||||
_log("$packagesFile exists: $exists");
|
||||
}
|
||||
if (exists) {
|
||||
final String data = utf8.decode(file.readAsBytesSync());
|
||||
if (traceLoading) {
|
||||
_log("Loaded packages file from $packagesFile:\n$data");
|
||||
}
|
||||
return _parsePackagesFile(traceLoading, packagesFile, data);
|
||||
}
|
||||
|
||||
// We fallback to using `.dart_tool/package_config.json` if it exists.
|
||||
// We prefer using `.dart_tool/package_config.json` over `.packages`.
|
||||
final packageConfig = dirUri.resolve(".dart_tool/package_config.json");
|
||||
if (traceLoading) {
|
||||
_log("Checking for $packageConfig file.");
|
||||
}
|
||||
file = File.fromUri(packageConfig);
|
||||
exists = file.existsSync();
|
||||
File file = File.fromUri(packageConfig);
|
||||
bool exists = file.existsSync();
|
||||
if (traceLoading) {
|
||||
_log("$packageConfig exists: $exists");
|
||||
}
|
||||
|
@ -376,6 +356,24 @@ _findPackagesConfiguration(bool traceLoading, Uri base) {
|
|||
return _parsePackageConfig(traceLoading, packageConfig, data);
|
||||
}
|
||||
|
||||
// We fallback to using `.packages` if it exists.
|
||||
final packagesFile = dirUri.resolve(".packages");
|
||||
if (traceLoading) {
|
||||
_log("Checking for $packagesFile file.");
|
||||
}
|
||||
file = File.fromUri(packagesFile);
|
||||
exists = file.existsSync();
|
||||
if (traceLoading) {
|
||||
_log("$packagesFile exists: $exists");
|
||||
}
|
||||
if (exists) {
|
||||
final String data = utf8.decode(file.readAsBytesSync());
|
||||
if (traceLoading) {
|
||||
_log("Loaded packages file from $packagesFile:\n$data");
|
||||
}
|
||||
return _parsePackagesFile(traceLoading, packagesFile, data);
|
||||
}
|
||||
|
||||
final parentDir = currentDir.parent;
|
||||
if (dirUri == parentDir.uri) break;
|
||||
currentDir = parentDir;
|
||||
|
|
|
@ -337,33 +337,13 @@ _findPackagesConfiguration(bool traceLoading, Uri base) {
|
|||
while (true) {
|
||||
final dirUri = currentDir.uri;
|
||||
|
||||
// We prefer using `.packages` over `.dart_tool/package_config.json` so
|
||||
// old users of `Isolate.packageConfig` which cannot handle the new format
|
||||
// will continue to work (see https://github.com/dart-lang/sdk/issues/41748).
|
||||
final packagesFile = dirUri.resolve(".packages");
|
||||
if (traceLoading) {
|
||||
_log("Checking for $packagesFile file.");
|
||||
}
|
||||
File file = File.fromUri(packagesFile);
|
||||
bool exists = file.existsSync();
|
||||
if (traceLoading) {
|
||||
_log("$packagesFile exists: $exists");
|
||||
}
|
||||
if (exists) {
|
||||
final String data = utf8.decode(file.readAsBytesSync());
|
||||
if (traceLoading) {
|
||||
_log("Loaded packages file from $packagesFile:\n$data");
|
||||
}
|
||||
return _parsePackagesFile(traceLoading, packagesFile, data);
|
||||
}
|
||||
|
||||
// We fallback to using `.dart_tool/package_config.json` if it exists.
|
||||
// We prefer using `.dart_tool/package_config.json` over `.packages`.
|
||||
final packageConfig = dirUri.resolve(".dart_tool/package_config.json");
|
||||
if (traceLoading) {
|
||||
_log("Checking for $packageConfig file.");
|
||||
}
|
||||
file = File.fromUri(packageConfig);
|
||||
exists = file.existsSync();
|
||||
File file = File.fromUri(packageConfig);
|
||||
bool exists = file.existsSync();
|
||||
if (traceLoading) {
|
||||
_log("$packageConfig exists: $exists");
|
||||
}
|
||||
|
@ -375,6 +355,24 @@ _findPackagesConfiguration(bool traceLoading, Uri base) {
|
|||
return _parsePackageConfig(traceLoading, packageConfig, data);
|
||||
}
|
||||
|
||||
// We fallback to using `.packages` if it exists.
|
||||
final packagesFile = dirUri.resolve(".packages");
|
||||
if (traceLoading) {
|
||||
_log("Checking for $packagesFile file.");
|
||||
}
|
||||
file = File.fromUri(packagesFile);
|
||||
exists = file.existsSync();
|
||||
if (traceLoading) {
|
||||
_log("$packagesFile exists: $exists");
|
||||
}
|
||||
if (exists) {
|
||||
final String data = utf8.decode(file.readAsBytesSync());
|
||||
if (traceLoading) {
|
||||
_log("Loaded packages file from $packagesFile:\n$data");
|
||||
}
|
||||
return _parsePackagesFile(traceLoading, packagesFile, data);
|
||||
}
|
||||
|
||||
final parentDir = currentDir.parent;
|
||||
if (dirUri == parentDir.uri) break;
|
||||
currentDir = parentDir;
|
||||
|
|
|
@ -14,20 +14,18 @@ main() async {
|
|||
// Make a folder structure that has both ".dart_tool/package_config.json" and
|
||||
// ".packages" and ensure VM prefers to use ".packages".
|
||||
await withTempDir((String tempDir) async {
|
||||
// Setup ".packages" with "foo -> ..." mapping.
|
||||
// Setup bogus ".packages" with "foo -> ..." with invalid mapping.
|
||||
final dotPackagesPath = path.join(tempDir, '.packages');
|
||||
final dotPackagesFile = File(dotPackagesPath);
|
||||
await dotPackagesFile.writeAsString(buildDotPackages('foo'));
|
||||
await dotPackagesFile.writeAsString(buildDotPackages('invalid'));
|
||||
|
||||
// Setup bogus ".dart_tool/package_config.json" with "invalid -> ..."
|
||||
// mapping.
|
||||
// Setup ".dart_tool/package_config.json".
|
||||
final dotDartToolDir = path.join(tempDir, '.dart_tool');
|
||||
await Directory(dotDartToolDir).create();
|
||||
final packageConfigJsonPath =
|
||||
path.join(dotDartToolDir, 'package_config.json');
|
||||
final packageConfigJsonFile = File(packageConfigJsonPath);
|
||||
await packageConfigJsonFile
|
||||
.writeAsString(buildPackageConfig('invalid', true));
|
||||
await packageConfigJsonFile.writeAsString(buildPackageConfig('foo', true));
|
||||
|
||||
final mainFile = path.join(tempDir, 'main.dart');
|
||||
await File(mainFile).writeAsString('''
|
||||
|
@ -36,7 +34,7 @@ import 'dart:isolate';
|
|||
|
||||
main() async {
|
||||
final uri = await Isolate.packageConfig;
|
||||
final expectedUri = Uri.parse('${dotPackagesFile.uri}');
|
||||
final expectedUri = Uri.parse('${packageConfigJsonFile.uri}');
|
||||
if (uri != expectedUri) {
|
||||
throw 'VM should use .packages file (but used \$uri).';
|
||||
}
|
||||
|
|
|
@ -14,20 +14,18 @@ main() async {
|
|||
// Make a folder structure that has both ".dart_tool/package_config.json" and
|
||||
// ".packages" and ensure VM prefers to use ".packages".
|
||||
await withTempDir((String tempDir) async {
|
||||
// Setup ".packages" with "foo -> ..." mapping.
|
||||
// Setup bogus ".packages" with "foo -> ..." with invalid mapping.
|
||||
final dotPackagesPath = path.join(tempDir, '.packages');
|
||||
final dotPackagesFile = File(dotPackagesPath);
|
||||
await dotPackagesFile.writeAsString(buildDotPackages('foo'));
|
||||
await dotPackagesFile.writeAsString(buildDotPackages('invalid'));
|
||||
|
||||
// Setup bogus ".dart_tool/package_config.json" with "invalid -> ..."
|
||||
// mapping.
|
||||
// Setup ".dart_tool/package_config.json".
|
||||
final dotDartToolDir = path.join(tempDir, '.dart_tool');
|
||||
await Directory(dotDartToolDir).create();
|
||||
final packageConfigJsonPath =
|
||||
path.join(dotDartToolDir, 'package_config.json');
|
||||
final packageConfigJsonFile = File(packageConfigJsonPath);
|
||||
await packageConfigJsonFile
|
||||
.writeAsString(buildPackageConfig('invalid', true));
|
||||
await packageConfigJsonFile.writeAsString(buildPackageConfig('foo', true));
|
||||
|
||||
final mainFile = path.join(tempDir, 'main.dart');
|
||||
await File(mainFile).writeAsString('''
|
||||
|
@ -36,7 +34,7 @@ import 'dart:isolate';
|
|||
|
||||
main() async {
|
||||
final uri = await Isolate.packageConfig;
|
||||
final expectedUri = Uri.parse('${dotPackagesFile.uri}');
|
||||
final expectedUri = Uri.parse('${packageConfigJsonFile.uri}');
|
||||
if (uri != expectedUri) {
|
||||
throw 'VM should use .packages file (but used \$uri).';
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue