| Index: pkg/code_transformers/lib/src/dart_sdk.dart
|
| diff --git a/pkg/code_transformers/lib/src/dart_sdk.dart b/pkg/code_transformers/lib/src/dart_sdk.dart
|
| index 5dfcab848905e2668c682aa32832a07eab6477ae..77dd04c51db70da9921114c01ab52d8c146ba16d 100644
|
| --- a/pkg/code_transformers/lib/src/dart_sdk.dart
|
| +++ b/pkg/code_transformers/lib/src/dart_sdk.dart
|
| @@ -23,18 +23,24 @@ String get dartSdkDirectory {
|
|
|
| bool isSdkDir(String dirname) =>
|
| new File(path.join(dirname, 'lib', '_internal', 'libraries.dart'))
|
| - .existsSync();
|
| + .existsSync();
|
|
|
| - if (path.split(Platform.executable).length == 1) {
|
| + String executable = Platform.executable;
|
| + if (path.split(executable).length == 1) {
|
| // TODO(blois): make this cross-platform.
|
| // HACK: A single part, hope it's on the path.
|
| - var result = Process.runSync('which', ['dart'],
|
| - stdoutEncoding: convert.UTF8);
|
| -
|
| - var sdkDir = path.dirname(path.dirname(result.stdout));
|
| + executable = Process.runSync('which', ['dart'],
|
| + stdoutEncoding: convert.UTF8).stdout.trim();
|
| + // In case Dart is symlinked (e.g. homebrew on Mac) follow symbolic links.
|
| + var link = new Link(executable);
|
| + if (link.existsSync()) {
|
| + executable = link.resolveSymbolicLinksSync();
|
| + }
|
| + var sdkDir = path.dirname(path.dirname(executable));
|
| if (isSdkDir(sdkDir)) return sdkDir;
|
| }
|
| - var dartDir = path.dirname(path.absolute(Platform.executable));
|
| +
|
| + var dartDir = path.dirname(path.absolute(executable));
|
| // If there's a sub-dir named dart-sdk then we're most likely executing from
|
| // a dart enlistment build directory.
|
| if (isSdkDir(path.join(dartDir, 'dart-sdk'))) {
|
|
|