mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-15 21:15:23 +02:00
bug 304139: [Scanner Discovery] Compiler inspection does not work for
gcc with non-english locale
This commit is contained in:
parent
abae07b394
commit
726e835448
2 changed files with 11 additions and 31 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2010 IBM Corporation and others.
|
* Copyright (c) 2004, 2011 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -58,7 +58,6 @@ public class DefaultRunSIProvider implements IExternalScannerInfoProvider {
|
||||||
private static final String EXTERNAL_SI_PROVIDER_ERROR = "ExternalScannerInfoProvider.Provider_Error"; //$NON-NLS-1$
|
private static final String EXTERNAL_SI_PROVIDER_ERROR = "ExternalScannerInfoProvider.Provider_Error"; //$NON-NLS-1$
|
||||||
private static final String GMAKE_ERROR_PARSER_ID = "org.eclipse.cdt.core.GmakeErrorParser"; //$NON-NLS-1$
|
private static final String GMAKE_ERROR_PARSER_ID = "org.eclipse.cdt.core.GmakeErrorParser"; //$NON-NLS-1$
|
||||||
private static final String PREF_CONSOLE_ENABLED = "org.eclipse.cdt.make.core.scanner.discovery.console.enabled"; //$NON-NLS-1$
|
private static final String PREF_CONSOLE_ENABLED = "org.eclipse.cdt.make.core.scanner.discovery.console.enabled"; //$NON-NLS-1$
|
||||||
private static final String LANG_ENV_VAR = "LANG"; //$NON-NLS-1$
|
|
||||||
private static final String NEWLINE = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
|
private static final String NEWLINE = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
private static final String PATH_ENV = "PATH"; //$NON-NLS-1$
|
private static final String PATH_ENV = "PATH"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
@ -260,21 +259,19 @@ public class DefaultRunSIProvider implements IExternalScannerInfoProvider {
|
||||||
|
|
||||||
private Properties getEnvMap(ICommandLauncher launcher, Properties initialEnv) {
|
private Properties getEnvMap(ICommandLauncher launcher, Properties initialEnv) {
|
||||||
// Set the environmennt, some scripts may need the CWD var to be set.
|
// Set the environmennt, some scripts may need the CWD var to be set.
|
||||||
Properties props = initialEnv != null ? initialEnv : launcher.getEnvironment();
|
Properties props = initialEnv != null ? initialEnv : launcher.getEnvironment();
|
||||||
|
|
||||||
if (fWorkingDirectory != null) {
|
if (fWorkingDirectory != null) {
|
||||||
props.put("CWD", fWorkingDirectory.toOSString()); //$NON-NLS-1$
|
props.put("CWD", fWorkingDirectory.toOSString()); //$NON-NLS-1$
|
||||||
props.put("PWD", fWorkingDirectory.toOSString()); //$NON-NLS-1$
|
props.put("PWD", fWorkingDirectory.toOSString()); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
// On POSIX (Linux, UNIX) systems reset LANG variable to English with
|
// On POSIX (Linux, UNIX) systems reset LANG variable to English with
|
||||||
// UTF-8 encoding
|
// UTF-8 encoding since GNU compilers can handle only UTF-8 characters.
|
||||||
// since GNU compilers can handle only UTF-8 characters. English language is chosen
|
// Include paths with locale characters will be handled properly regardless
|
||||||
// beacuse GNU compilers inconsistently handle different locales when generating
|
// of the language as long as the encoding is set to UTF-8.
|
||||||
// output of the 'gcc -v' command. Include paths with locale characters will be
|
// English language is chosen because parser relies on English messages
|
||||||
// handled properly regardless of the language as long as the encoding is set to UTF-8.
|
// in the output of the 'gcc -v' command.
|
||||||
if (props.containsKey(LANG_ENV_VAR)) {
|
props.put("LC_ALL", "en_US.UTF-8"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
props.put(LANG_ENV_VAR, "en_US.UTF-8"); //$NON-NLS-1$
|
|
||||||
}
|
|
||||||
return props;
|
return props;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,11 +11,9 @@
|
||||||
package org.eclipse.cdt.make.internal.core.scannerconfig2;
|
package org.eclipse.cdt.make.internal.core.scannerconfig2;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCProjectNature;
|
import org.eclipse.cdt.core.CCProjectNature;
|
||||||
import org.eclipse.cdt.core.CProjectNature;
|
import org.eclipse.cdt.core.CProjectNature;
|
||||||
import org.eclipse.cdt.core.ICommandLauncher;
|
|
||||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||||
import org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes;
|
import org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes;
|
||||||
import org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCScannerConfigUtil;
|
import org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCScannerConfigUtil;
|
||||||
|
@ -28,21 +26,6 @@ import org.eclipse.core.runtime.CoreException;
|
||||||
* @author vhirsl
|
* @author vhirsl
|
||||||
*/
|
*/
|
||||||
public class GCCSpecsRunSIProvider extends DefaultRunSIProvider {
|
public class GCCSpecsRunSIProvider extends DefaultRunSIProvider {
|
||||||
/**
|
|
||||||
* Override LC_ALL so {@link org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCSpecsConsoleParser}
|
|
||||||
* understands the diagnostics generated when non-English locale is active.
|
|
||||||
*
|
|
||||||
* @see org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCSpecsConsoleParser
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected String[] setEnvironment(ICommandLauncher launcher, Properties initialEnv) {
|
|
||||||
Properties extendedEnv = new Properties();
|
|
||||||
extendedEnv.putAll(initialEnv);
|
|
||||||
extendedEnv.put("LC_ALL", "C"); //$NON-NLS-1$ //$NON-NLS-2$
|
|
||||||
|
|
||||||
return super.setEnvironment(launcher, extendedEnv);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.make.internal.core.scannerconfig2.DefaultRunSIProvider#initialize()
|
* @see org.eclipse.cdt.make.internal.core.scannerconfig2.DefaultRunSIProvider#initialize()
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue