Use explicit rustc commit-hash
Required for lldb on mac
This commit is contained in:
parent
1ebfe11730
commit
1b4197cb35
@ -3,7 +3,7 @@ import * as vscode from 'vscode';
|
||||
import * as path from 'path';
|
||||
import * as ra from './lsp_ext';
|
||||
|
||||
import { Cargo, getSysroot } from './toolchain';
|
||||
import { Cargo, getRustcId, getSysroot } from './toolchain';
|
||||
import { Ctx } from "./ctx";
|
||||
import { prepareEnv } from "./run";
|
||||
|
||||
@ -107,9 +107,11 @@ async function getDebugConfiguration(ctx: Ctx, runnable: ra.Runnable): Promise<v
|
||||
let sourceFileMap = debugOptions.sourceFileMap;
|
||||
if (sourceFileMap === "auto") {
|
||||
// let's try to use the default toolchain
|
||||
const commitHash = await getRustcId(wsFolder);
|
||||
const sysroot = await getSysroot(wsFolder);
|
||||
const rustlib = path.normalize(sysroot + "/lib/rustlib/src/rust");
|
||||
sourceFileMap = { "/rustc/*": rustlib };
|
||||
sourceFileMap = {};
|
||||
sourceFileMap[`/rustc/${commitHash}/`] = rustlib;
|
||||
}
|
||||
|
||||
const debugConfig = knownEngines[debugEngine.id](runnable, simplifyPath(executable), env, sourceFileMap);
|
||||
|
@ -129,6 +129,16 @@ export function getSysroot(dir: string): Promise<string> {
|
||||
return execute(`${rustcPath} --print sysroot`, { cwd: dir });
|
||||
}
|
||||
|
||||
export async function getRustcId(dir: string): Promise<string> {
|
||||
const rustcPath = getPathForExecutable("rustc");
|
||||
|
||||
// do not memoize the result because the toolchain may change between runs
|
||||
const data = await execute(`${rustcPath} -V -v`, { cwd: dir });
|
||||
const rx = /commit-hash:\s(.*)$/m.compile();
|
||||
|
||||
return rx.exec(data)![1];
|
||||
}
|
||||
|
||||
/** Mirrors `toolchain::cargo()` implementation */
|
||||
export function cargoPath(): string {
|
||||
return getPathForExecutable("cargo");
|
||||
|
@ -159,4 +159,4 @@ export function execute(command: string, options: ExecOptions): Promise<string>
|
||||
resolve(stdout.trimEnd());
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user