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

Unified Diff: lib/src/sdk.dart

Issue 1145993003: Fix asset and SDK path detection. (Closed) Base URL: git@github.com:dart-lang/pub_test@master
Patch Set: Code review changes Created 5 years, 7 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/io.dart ('k') | lib/src/utils.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/sdk.dart
diff --git a/lib/src/sdk.dart b/lib/src/sdk.dart
index 3d09163bad00ff4ec3279bff4568a70ae7a20865..3adc9c743c414b568e38bdda9a6d5399006776d2 100644
--- a/lib/src/sdk.dart
+++ b/lib/src/sdk.dart
@@ -7,23 +7,28 @@ library pub.sdk;
import 'dart:io';
-import 'package:path/path.dart' as path;
+import 'package:path/path.dart' as p;
import 'package:pub_semver/pub_semver.dart';
import 'io.dart';
-/// Gets the path to the root directory of the SDK.
+/// The path to the root directory of the SDK.
///
-/// When running from the actual built SDK, this will be the SDK that contains
-/// the running Dart executable. When running from the repo, it will be the
-/// "sdk" directory in the Dart repository itself.
-final String rootDirectory =
- runningFromSdk ? _rootDirectory : path.join(repoRoot, "sdk");
+/// Note that if pub is running from source within the Dart repo (for example
+/// when building Observatory), this will be the repo's "sdk/" directory, which
+/// doesn't look exactly like the built SDK.
+final String rootDirectory = (() {
+ var dartSdk = Platform.environment["DART_SDK"];
+ if (dartSdk != null) return dartSdk;
-/// Gets the path to the root directory of the SDK, assuming that the currently
-/// running Dart executable is within it.
-final String _rootDirectory =
- path.dirname(path.dirname(Platform.executable));
+ if (runningFromDartRepo) return p.join(dartRepoRoot, 'sdk');
+
+ // The Dart exectuable is in "/path/to/sdk/bin/dart", so two levels up is
+ // "/path/to/sdk".
+ var aboveExecutable = p.dirname(p.dirname(Platform.executable));
+ assert(fileExists(p.join(aboveExecutable, 'version')));
+ return aboveExecutable;
+})();
/// The SDK's revision number formatted to be a semantic version.
///
@@ -39,15 +44,15 @@ Version _getVersion() {
var sdkVersion = Platform.environment["_PUB_TEST_SDK_VERSION"];
if (sdkVersion != null) return new Version.parse(sdkVersion);
- if (runningFromSdk) {
+ if (!runningFromDartRepo) {
// Read the "version" file.
- var version = readTextFile(path.join(_rootDirectory, "version")).trim();
+ var version = readTextFile(p.join(rootDirectory, "version")).trim();
return new Version.parse(version);
}
- // When running from the repo, read the canonical VERSION file in tools/.
+ // When running from the Dart repo, read the canonical VERSION file in tools/.
// This makes it possible to run pub without having built the SDK first.
- var contents = readTextFile(path.join(repoRoot, "tools/VERSION"));
+ var contents = readTextFile(p.join(dartRepoRoot, "tools/VERSION"));
parseField(name) {
var pattern = new RegExp("^$name ([a-z0-9]+)", multiLine: true);
« no previous file with comments | « lib/src/io.dart ('k') | lib/src/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698