Skip to content

Commit

Permalink
Merge.
Browse files Browse the repository at this point in the history
  • Loading branch information
sean-mcmanus committed Nov 10, 2020
2 parents 50c1efa + 49d9cfd commit 1877aed
Show file tree
Hide file tree
Showing 22 changed files with 58 additions and 82 deletions.
4 changes: 4 additions & 0 deletions Extension/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# C/C++ for Visual Studio Code Change Log

## Version 1.1.1: November 9, 2020
### Bug Fixes
* Fix cpptools binaries sometimes not getting installed on Windows. [#6453](https://github.com/microsoft/vscode-cpptools/issues/6453)

## Version 1.1.0: November 5, 2020
### New Features
* Add language server support for Windows ARM64 (no debugging yet). [#5583](https://github.com/microsoft/vscode-cpptools/issues/5583)
Expand Down
2 changes: 1 addition & 1 deletion Extension/cpptools.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
"recursiveIncludes": 100,
"gotoDefIntelliSense": 100,
"enhancedColorization": 100,
"minimumVSCodeVersion": "1.44.0"
"minimumVSCodeVersion": "1.49.0"
}
2 changes: 1 addition & 1 deletion Extension/i18n/chs/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "生成和调试活动文件",
"cannot.build.non.cpp": "无法生成和调试,因为活动文件不是 C 或 C++ 源文件。",
"no.compiler.found": "未找到编译程序",
"select.configuration": "Select a configuration",
"select.configuration": "选择配置",
"cl.exe.not.available": "仅当从 VS 开发人员命令提示符处运行 VS Code 时,{0} 生成和调试才可用。"
}
2 changes: 1 addition & 1 deletion Extension/i18n/cht/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "建置及偵錯使用中的檔案",
"cannot.build.non.cpp": "因為作用中的檔案不是 C 或 C++ 來源檔案,所以無法建立和偵錯。",
"no.compiler.found": "找不到任何編譯器",
"select.configuration": "Select a configuration",
"select.configuration": "選取組態",
"cl.exe.not.available": "只有從 VS 的開發人員命令提示字元執行 VS Code 時,才可使用 {0} 組建和偵錯。"
}
2 changes: 1 addition & 1 deletion Extension/i18n/csy/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "Sestavit a ladit aktivní soubor",
"cannot.build.non.cpp": "Sestavení a ladění není možné, protože aktivní soubor není zdrojový soubor jazyka C ani C++.",
"no.compiler.found": "Nenašel se žádný kompilátor.",
"select.configuration": "Select a configuration",
"select.configuration": "Vybrat konfiguraci",
"cl.exe.not.available": "Sestavení a ladění {0} je k dispozici jen v případě, že se nástroj VS Code spustil z nástroje Developer Command Prompt pro VS."
}
2 changes: 1 addition & 1 deletion Extension/i18n/deu/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "Aktive Datei erstellen und debuggen",
"cannot.build.non.cpp": "Erstellen und Debuggen nicht möglich, da die aktive Datei keine C- oder C++-Quelldatei ist.",
"no.compiler.found": "Kein Compiler gefunden.",
"select.configuration": "Select a configuration",
"select.configuration": "Konfiguration auswählen",
"cl.exe.not.available": "{0}-Build und -Debuggen können nur verwendet werden, wenn VS Code von der Developer-Eingabeaufforderung für VS ausgeführt wird."
}
2 changes: 1 addition & 1 deletion Extension/i18n/esn/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "Compilar y depurar el archivo activo",
"cannot.build.non.cpp": "No se puede compilar y depurar código porque el archivo activo no es un archivo de código fuente de C o C++.",
"no.compiler.found": "No se encontró ningún compilador",
"select.configuration": "Select a configuration",
"select.configuration": "Seleccionar una configuración",
"cl.exe.not.available": "La compilación y depuración de {0} solo se puede usar cuando VS Code se ejecuta desde el Símbolo del sistema para desarrolladores de Visual Studio."
}
2 changes: 1 addition & 1 deletion Extension/i18n/fra/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "Générer et déboguer le fichier actif",
"cannot.build.non.cpp": "Génération et débogage impossibles, car le fichier actif n'est pas un fichier source C ou C++.",
"no.compiler.found": "Aucun compilateur",
"select.configuration": "Select a configuration",
"select.configuration": "Sélectionner une configuration",
"cl.exe.not.available": "La génération et le débogage de {0} peuvent être utilisés uniquement quand VS Code est exécuté à partir de l'invite de commandes développeur pour VS."
}
2 changes: 1 addition & 1 deletion Extension/i18n/ita/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "Compila ed esegui il debug del file attivo",
"cannot.build.non.cpp": "Non è possibile compilare ed eseguire il debug perché il file attivo non è un file di origine C o C++.",
"no.compiler.found": "Non è stato trovato alcun compilatore",
"select.configuration": "Select a configuration",
"select.configuration": "Seleziona una configurazione",
"cl.exe.not.available": "La compilazione e il debug di {0} sono utilizzabili solo quando VS Code viene eseguito da Prompt dei comandi per gli sviluppatori per Visual Studio."
}
2 changes: 1 addition & 1 deletion Extension/i18n/jpn/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "アクティブ ファイルのビルドとデバッグ",
"cannot.build.non.cpp": "アクティブ ファイルが C または C++ ソース ファイルではないため、ビルドおよびデバッグできません。",
"no.compiler.found": "コンパイラが見つかりませんでした",
"select.configuration": "Select a configuration",
"select.configuration": "構成の選択",
"cl.exe.not.available": "{0} のビルドとデバッグを使用できるのは、VS 用開発者コマンド プロンプトから VS Code を実行する場合のみです。"
}
2 changes: 1 addition & 1 deletion Extension/i18n/kor/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "활성 파일 빌드 및 디버그",
"cannot.build.non.cpp": "활성 파일이 C 또는 C++ 소스 파일이 아니므로 빌드 및 디버그할 수 없습니다.",
"no.compiler.found": "컴파일러를 찾을 수 없음",
"select.configuration": "Select a configuration",
"select.configuration": "구성 선택",
"cl.exe.not.available": "{0} 빌드 및 디버그는 VS의 개발자 명령 프롬프트에서 VS Code를 실행하는 경우에만 사용할 수 있습니다."
}
2 changes: 1 addition & 1 deletion Extension/i18n/plk/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "Kompiluj i debuguj aktywny plik",
"cannot.build.non.cpp": "Nie można skompilować i debugować, ponieważ aktywny plik nie jest plikiem źródłowym języka C lub C++.",
"no.compiler.found": "Nie znaleziono kompilatora",
"select.configuration": "Select a configuration",
"select.configuration": "Wybierz konfigurację",
"cl.exe.not.available": "{0} — funkcji kompilacji i debugowania można używać tylko wtedy, gdy program VS Code został uruchomiony z wiersza polecenia dla deweloperów w programie VS."
}
2 changes: 1 addition & 1 deletion Extension/i18n/ptb/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "Criar e depurar o arquivo ativo",
"cannot.build.non.cpp": "Não é possível criar e depurar porque o arquivo ativo não é um arquivo de origem C ou C++.",
"no.compiler.found": "Nenhum compilador encontrado",
"select.configuration": "Select a configuration",
"select.configuration": "Selecionar uma configuração",
"cl.exe.not.available": "A criação e a depuração de {0} só podem ser usadas quando o VS Code é executado por meio do Prompt de Comando do Desenvolvedor para VS."
}
2 changes: 1 addition & 1 deletion Extension/i18n/rus/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "Сборка и отладка активного файла",
"cannot.build.non.cpp": "Не удается выполнить сборку и отладку, так как активный файл не является исходным файлом C или C++.",
"no.compiler.found": "Компилятор не найден",
"select.configuration": "Select a configuration",
"select.configuration": "Выберите конфигурацию.",
"cl.exe.not.available": "Сборку и отладку {0} можно использовать только при запуске VS Code из Командной строки разработчика для VS."
}
2 changes: 1 addition & 1 deletion Extension/i18n/trk/src/Debugger/extension.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"build.and.debug.active.file": "Etkin dosyayı derle ve dosyada hata ayıkla",
"cannot.build.non.cpp": "Etkin dosya bir C ya da C++ kaynak dosyası olmadığından derleme veya hata ayıklama yapılamıyor.",
"no.compiler.found": "Derleyici bulunamadı",
"select.configuration": "Select a configuration",
"select.configuration": "Yapılandırma seçin",
"cl.exe.not.available": "{0} derlemesi ve hata ayıklama yalnızca VS Code, VS için Geliştirici Komut İstemi'nden çalıştırıldığında kullanılabilir."
}
20 changes: 8 additions & 12 deletions Extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "cpptools",
"displayName": "C/C++",
"description": "C/C++ IntelliSense, debugging, and code browsing.",
"version": "1.1.0",
"version": "1.1.1",
"publisher": "ms-vscode",
"icon": "LanguageCCPP_color_128x.png",
"readme": "README.md",
Expand Down Expand Up @@ -2419,7 +2419,7 @@
"linux"
],
"architectures": [
"x86_64"
"x64"
],
"binaries": [
"./bin/cpptools",
Expand Down Expand Up @@ -2476,10 +2476,8 @@
"win32"
],
"architectures": [
"x86_64",
"x86",
"i686",
"i386"
"x64",
"x86"
],
"binaries": [
"./bin/cpptools.exe",
Expand Down Expand Up @@ -2509,7 +2507,7 @@
"linux"
],
"architectures": [
"x86_64"
"x64"
],
"binaries": [
"./LLVM/bin/clang-format"
Expand Down Expand Up @@ -2583,7 +2581,7 @@
"linux"
],
"architectures": [
"x86_64"
"x64"
],
"binaries": [
"./debugAdapters/mono.linux-x86_64"
Expand Down Expand Up @@ -2665,10 +2663,8 @@
"win32"
],
"architectures": [
"x86_64",
"x86",
"i686",
"i386"
"x64",
"x86"
],
"binaries": [
"./debugAdapters/vsdbg/bin/vsdbg.exe"
Expand Down
2 changes: 1 addition & 1 deletion Extension/src/LanguageServer/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ function realActivation(): void {

PlatformInformation.GetPlatformInformation().then(info => {
// Skip Insiders processing for 32-bit Linux.
if (info.platform !== "linux" || info.architecture === "x86_64" || info.architecture === "arm" || info.architecture === "arm64") {
if (info.platform !== "linux" || info.architecture === "x64" || info.architecture === "arm" || info.architecture === "arm64") {
// Skip Insiders processing for unsupported VS Code versions.
const vscodeVersion: PackageVersion = new PackageVersion(vscode.version);
const abTestSettings: ABTestSettings = getABTestSettings();
Expand Down
1 change: 1 addition & 0 deletions Extension/src/abTesting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ export class ABTestSettings {
let hasError: boolean = false;
const telemetryProperties: { [key: string]: string } = {};
const localConfigPath: string = util.getExtensionFilePath(localConfigFile);
// Download the latest cpptools.json.
return util.downloadFileToDestination("https://go.microsoft.com/fwlink/?linkid=2097702", localConfigPath)
.catch((error) => {
// More specific error info is not likely to be helpful, and we get detailed download data from the initial install.
Expand Down
8 changes: 3 additions & 5 deletions Extension/src/githubAPI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,17 +116,15 @@ export function vsixNameForPlatform(info: PlatformInformation): string {
switch (platformInfo.platform) {
case 'win32':
switch (platformInfo.architecture) {
case 'x86_64': return 'cpptools-win32.vsix'; // TODO: Change to cpptools-win64?
case 'x86':
case 'i386':
case 'i686': return 'cpptools-win32.vsix';
case 'x64': return 'cpptools-win32.vsix'; // TODO: Change to cpptools-win64?
case 'x86': return 'cpptools-win32.vsix';
case 'arm64': return 'cpptools-win-arm64.vsix';
default: throw new Error(`Unexpected Windows architecture: ${platformInfo.architecture}`);
}
case 'darwin': return 'cpptools-osx.vsix';
default: {
switch (platformInfo.architecture) {
case 'x86_64': return 'cpptools-linux.vsix';
case 'x64': return 'cpptools-linux.vsix';
case 'arm': return 'cpptools-linux-armhf.vsix';
case 'arm64': return 'cpptools-linux-aarch64.vsix';
default: throw new Error(`Unexpected Linux architecture: ${platformInfo.architecture}`);
Expand Down
8 changes: 5 additions & 3 deletions Extension/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ const disposables: vscode.Disposable[] = [];

export async function activate(context: vscode.ExtensionContext): Promise<CppToolsApi & CppToolsExtension> {
let errMsg: string = "";
if (process.arch !== 'x64' && (process.platform !== 'win32' || (process.arch !== 'ia32' && process.arch !== 'arm64')) && (process.platform !== 'linux' || (process.arch !== 'x64' && process.arch !== 'arm' && process.arch !== 'arm64' && process.arch !== 'aarch64'))) {
errMsg = localize("architecture.not.supported", "Architecture {0} is not supported. ", String(process.arch));
const arch: string = os.arch();
if (arch !== 'x64' && (process.platform !== 'win32' || (arch !== 'ia32' && arch !== 'arm64')) && (process.platform !== 'linux' || (arch !== 'x64' && arch !== 'arm' && arch !== 'arm64'))) {
errMsg = localize("architecture.not.supported", "Architecture {0} is not supported. ", String(arch));
} else if (process.platform === 'linux' && fs.existsSync('/etc/alpine-release')) {
errMsg = localize("apline.containers.not.supported", "Alpine containers are not supported.");
}
Expand Down Expand Up @@ -372,7 +373,8 @@ function sendTelemetry(info: PlatformInformation): boolean {
util.setProgress(util.getProgressInstallSuccess());
}

installBlob.telemetryProperties['osArchitecture'] = info.architecture ?? "";
installBlob.telemetryProperties['osArchitecture'] = os.arch();
installBlob.telemetryProperties['infoArchitecture'] = info.architecture;

Telemetry.logDebuggerEvent("acquisition", installBlob.telemetryProperties);

Expand Down
2 changes: 1 addition & 1 deletion Extension/src/packageManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ export function VersionsMatch(pkg: IPackage, info: PlatformInformation): boolean
}

export function ArchitecturesMatch(value: IPackage, info: PlatformInformation): boolean {
return !value.architectures || (info.architecture !== undefined && value.architectures.indexOf(info.architecture) !== -1);
return !value.architectures || (value.architectures.indexOf(info.architecture) !== -1);
}

export function PlatformsMatch(value: IPackage, info: PlatformInformation): boolean {
Expand Down
67 changes: 21 additions & 46 deletions Extension/src/platform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
* ------------------------------------------------------------------------------------------ */

import * as os from 'os';
import * as util from './common';
import { LinuxDistribution } from './linuxDistribution';
import * as plist from 'plist';
import * as fs from 'fs';
Expand All @@ -24,77 +23,53 @@ export function GetOSName(processPlatform: string | undefined): string | undefin
}

export class PlatformInformation {
constructor(public platform: string, public architecture?: string, public distribution?: LinuxDistribution, public version?: string) { }
constructor(public platform: string, public architecture: string, public distribution?: LinuxDistribution, public version?: string) { }

public static GetPlatformInformation(): Promise<PlatformInformation> {
const platform: string = os.platform();
let architecturePromise: Promise<string | undefined>;
const architecture: string = PlatformInformation.GetArchitecture();
let distributionPromise: Promise<LinuxDistribution | undefined> = Promise.resolve<LinuxDistribution | undefined>(undefined);
let versionPromise: Promise<string | undefined> = Promise.resolve<string | undefined>(undefined);

switch (platform) {
case "win32":
architecturePromise = PlatformInformation.GetWindowsArchitecture();
break;

case "linux":
architecturePromise = PlatformInformation.GetUnixArchitecture();
distributionPromise = LinuxDistribution.GetDistroInformation();
break;

case "darwin":
architecturePromise = PlatformInformation.GetUnixArchitecture();
versionPromise = PlatformInformation.GetDarwinVersion();
break;

default:
throw new Error(localize("unknown.os.platform", "Unknown OS platform"));
}

return Promise.all([architecturePromise, distributionPromise, versionPromise])
.then(([arch, distro, version]) =>
new PlatformInformation(platform, arch, distro, version)
return Promise.all([distributionPromise, versionPromise])
.then(([distro, version]) =>
new PlatformInformation(platform, architecture, distro, version)
);
}

public static GetUnknownArchitecture(): string { return "Unknown"; }

private static GetWindowsArchitecture(): Promise<string> {
return util.execChildProcess('wmic os get osarchitecture', util.extensionPath)
.then((architecture) => {
if (architecture) {
const archArray: string[] = architecture.split(os.EOL);
if (archArray.length >= 2) {
const arch: string = archArray[1].trim();

// Note: This string can be localized. So, we'll just check to see if it contains 32 or 64.
if (arch.indexOf('64') >= 0) {
if (arch.indexOf('ARM') >= 0) {
return "arm64";
}
return "x86_64";
} else if (arch.indexOf('32') >= 0) {
return "x86";
}
}
}
return PlatformInformation.GetUnknownArchitecture();
}).catch((error) => PlatformInformation.GetUnknownArchitecture());
}

private static GetUnixArchitecture(): Promise<string | undefined> {
return util.execChildProcess('uname -m', util.packageJson.extensionFolderPath)
.then((architecture) => {
if (architecture) {
if (architecture.startsWith('arm64') || architecture.startsWith('aarch64')) {
return 'arm64';
} else if (architecture.startsWith('armv')) {
return 'arm';
}
return architecture.trim();
public static GetArchitecture(): string {
const arch: string = os.arch();
switch (arch) {
case "x64":
case "arm64":
case "arm":
return arch;
case "x32":
case "ia32":
return "x86";
default:
if (os.platform() === "win32") {
return "x86";
} else {
return "x64";
}
return undefined;
});
}
}

private static GetDarwinVersion(): Promise<string> {
Expand Down

0 comments on commit 1877aed

Please sign in to comment.