Index: sdk/lib/_internal/pub/lib/src/pub_package_provider.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/pub_package_provider.dart b/sdk/lib/_internal/pub/lib/src/pub_package_provider.dart |
index da98c6fddc988e90792ec9d65661dffd31d49087..624312707a55e6eac6fbcc97e7cbbe2461664368 100644 |
--- a/sdk/lib/_internal/pub/lib/src/pub_package_provider.dart |
+++ b/sdk/lib/_internal/pub/lib/src/pub_package_provider.dart |
@@ -61,12 +61,18 @@ class PubPackageProvider implements PackageProvider { |
var packageDir = _packageDirs[package]; |
var dir = path.join(packageDir, dirPath); |
if (!dirExists(dir)) return; |
- var entries = listDir(dir, recursive: true); |
- files.addAll(entries |
- .where((entry) => !path.split(entry).contains("packages")) |
- .where(fileExists) |
- .map((entry) => new AssetId(package, |
- path.relative(entry, from: packageDir)))); |
+ for (var entry in listDir(dir, recursive: true)) { |
+ // Ignore "packages" symlinks if there. |
+ if (path.split(entry).contains("packages")) continue; |
+ |
+ // Skip directories. |
+ if (!fileExists(entry)) continue; |
+ |
+ // AssetId paths use "/" on all platforms. |
+ var relative = path.relative(entry, from: packageDir); |
+ relative = path.toUri(relative).path; |
+ files.add(new AssetId(package, relative)); |
+ } |
} |
// Expose the "asset" and "lib" directories. |