Index: utils/pub/path_source.dart |
diff --git a/utils/pub/path_source.dart b/utils/pub/path_source.dart |
index e4d1f02ad724afb417ca36897d775cd5bb631c74..c103c1bfdd488a57a8af0efd254145f2a05ca6c7 100644 |
--- a/utils/pub/path_source.dart |
+++ b/utils/pub/path_source.dart |
@@ -33,10 +33,18 @@ class PathSource extends Source { |
} |
bool descriptionsEqual(description1, description2) { |
- // Compare real paths after normalizing and resolving symlinks. |
- var path1 = new File(description1["path"]).fullPathSync(); |
- var path2 = new File(description2["path"]).fullPathSync(); |
- return path1 == path2; |
+ try { |
+ // Compare real paths after normalizing and resolving symlinks. |
+ var path1 = new File(description1["path"]).fullPathSync(); |
+ var path2 = new File(description2["path"]).fullPathSync(); |
+ return path1 == path2; |
+ } on FileIOException catch (ex) { |
+ // If either of the files couldn't be found, fall back to just comparing |
+ // the normalized paths. |
+ var path1 = path.normalize(path.absolute(description1["path"])); |
+ var path2 = path.normalize(path.absolute(description2["path"])); |
+ return path1 == path2; |
+ } |
} |
Future<bool> install(PackageId id, String destination) { |