Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: lib/src/global_packages.dart

Issue 1534093002: Improve the detection lockfile freshness. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library pub.global_packages; 5 library pub.global_packages;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 // If the package specified by the user doesn't exist, we want to 161 // If the package specified by the user doesn't exist, we want to
162 // surface that as a [DataError] with the associated exit code. 162 // surface that as a [DataError] with the associated exit code.
163 if (result.error.package != dep.name) throw result.error; 163 if (result.error.package != dep.name) throw result.error;
164 if (result.error is NoVersionException) dataError(result.error.message); 164 if (result.error is NoVersionException) dataError(result.error.message);
165 throw result.error; 165 throw result.error;
166 } 166 }
167 result.showReport(SolveType.GET); 167 result.showReport(SolveType.GET);
168 168
169 // Make sure all of the dependencies are locally installed. 169 // Make sure all of the dependencies are locally installed.
170 await Future.wait(result.packages.map(_cacheDependency)); 170 await Future.wait(result.packages.map(_cacheDependency));
171 var lockFile = new LockFile(result.packages, cache.sources);
172 171
173 // Load the package graph from [result] so we don't need to re-parse all 172 // Load the package graph from [result] so we don't need to re-parse all
174 // the pubspecs. 173 // the pubspecs.
175 var entrypoint = new Entrypoint.fromSolveResult(root, cache, result, 174 var entrypoint = new Entrypoint.fromSolveResult(root, cache, result,
176 isGlobal: true); 175 isGlobal: true);
177 var snapshots = await _precompileExecutables(entrypoint, dep.name); 176 var snapshots = await _precompileExecutables(entrypoint, dep.name);
177
178 var lockFile = result.lockFile;
178 _writeLockFile(dep.name, lockFile); 179 _writeLockFile(dep.name, lockFile);
179 writeTextFile(_getPackagesFilePath(dep.name), lockFile.packagesFile()); 180 writeTextFile(_getPackagesFilePath(dep.name), lockFile.packagesFile());
180 181
181 _updateBinStubs(entrypoint.packageGraph.packages[dep.name], executables, 182 _updateBinStubs(entrypoint.packageGraph.packages[dep.name], executables,
182 overwriteBinStubs: overwriteBinStubs, snapshots: snapshots); 183 overwriteBinStubs: overwriteBinStubs, snapshots: snapshots);
183 } 184 }
184 185
185 /// Precompiles the executables for [package] and saves them in the global 186 /// Precompiles the executables for [package] and saves them in the global
186 /// cache. 187 /// cache.
187 /// 188 ///
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 // could find and load the [Package] object, but normally an entrypoint 303 // could find and load the [Package] object, but normally an entrypoint
303 // doesn't expect to be in its own lockfile. 304 // doesn't expect to be in its own lockfile.
304 var id = lockFile.packages[name]; 305 var id = lockFile.packages[name];
305 lockFile = lockFile.removePackage(name); 306 lockFile = lockFile.removePackage(name);
306 307
307 var source = cache.sources[id.source]; 308 var source = cache.sources[id.source];
308 var entrypoint; 309 var entrypoint;
309 if (source is CachedSource) { 310 if (source is CachedSource) {
310 // For cached sources, the package itself is in the cache and the 311 // For cached sources, the package itself is in the cache and the
311 // lockfile is the one we just loaded. 312 // lockfile is the one we just loaded.
312 var dir = cache.sources[id.source].getDirectory(id);
313 var package = new Package.load(name, dir, cache.sources);
314 entrypoint = new Entrypoint.inMemory( 313 entrypoint = new Entrypoint.inMemory(
315 package, lockFile, cache, isGlobal: true); 314 cache.sources.load(id), lockFile, cache, isGlobal: true);
316 } else { 315 } else {
317 // For uncached sources (i.e. path), the ID just points to the real 316 // For uncached sources (i.e. path), the ID just points to the real
318 // directory for the package. 317 // directory for the package.
319 assert(id.source == "path"); 318 assert(id.source == "path");
320 entrypoint = new Entrypoint( 319 entrypoint = new Entrypoint(
321 PathSource.pathFromDescription(id.description), cache, 320 PathSource.pathFromDescription(id.description), cache,
322 isGlobal: true); 321 isGlobal: true);
323 } 322 }
324 323
325 if (entrypoint.root.pubspec.environment.sdkVersion.allows(sdk.version)) { 324 if (entrypoint.root.pubspec.environment.sdkVersion.allows(sdk.version)) {
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 } 790 }
792 791
793 /// Returns the value of the property named [name] in the bin stub script 792 /// Returns the value of the property named [name] in the bin stub script
794 /// [source]. 793 /// [source].
795 String _binStubProperty(String source, String name) { 794 String _binStubProperty(String source, String name) {
796 var pattern = new RegExp(quoteRegExp(name) + r": ([a-zA-Z0-9_-]+)"); 795 var pattern = new RegExp(quoteRegExp(name) + r": ([a-zA-Z0-9_-]+)");
797 var match = pattern.firstMatch(source); 796 var match = pattern.firstMatch(source);
798 return match == null ? null : match[1]; 797 return match == null ? null : match[1];
799 } 798 }
800 } 799 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698