mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Don't generate compiled bytecode files for skeletons, packaging and docstrings formatter (PY-15907)
This fix disabled the generation of compiled bytecode files only for Python >= 2.6 in non read-only directories. Having new files inside the app directory breaks a Mac OS X security policy regarding application signing and it might result in the "incoming network connections" warning if the firewall is enabled and the default option about allowing signed software to accept incoming connections is enabled.
This commit is contained in:
@@ -28,6 +28,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.jetbrains.python.PythonHelpersLocator;
|
||||
import com.jetbrains.python.psi.StructuredDocString;
|
||||
import com.jetbrains.python.sdk.PySdkUtil;
|
||||
import com.jetbrains.python.sdk.PythonEnvUtil;
|
||||
import com.jetbrains.python.sdk.PythonSdkType;
|
||||
import com.jetbrains.python.toolbox.Substring;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -37,7 +38,9 @@ import java.io.File;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
@@ -105,9 +108,11 @@ public class PyStructuredDocstringFormatter {
|
||||
final byte[] data = new byte[encoded.limit()];
|
||||
encoded.get(data);
|
||||
|
||||
final Map<String, String> env = new HashMap<String, String>();
|
||||
PythonEnvUtil.setPythonDontWriteBytecode(env);
|
||||
|
||||
final ProcessOutput output = PySdkUtil.getProcessOutput(new File(sdkHome).getParent(), new String[]{sdkHome, formatter},
|
||||
null, 5000, data, true);
|
||||
env, 5000, data, true);
|
||||
if (output.isTimeout()) {
|
||||
LOG.info("timeout when calculating docstring");
|
||||
return null;
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.jetbrains.python.packaging;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.RunCanceledByUserException;
|
||||
@@ -49,6 +48,7 @@ import com.jetbrains.python.psi.PyExpression;
|
||||
import com.jetbrains.python.psi.PyListLiteralExpression;
|
||||
import com.jetbrains.python.psi.PyStringLiteralExpression;
|
||||
import com.jetbrains.python.sdk.PySdkUtil;
|
||||
import com.jetbrains.python.sdk.PythonEnvUtil;
|
||||
import com.jetbrains.python.sdk.PythonSdkType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -469,7 +469,9 @@ public class PyPackageManagerImpl extends PyPackageManager {
|
||||
|
||||
try {
|
||||
final Process process;
|
||||
final Map<String, String> environment = PySdkUtil.mergeEnvVariables(System.getenv(), ImmutableMap.of("PYTHONUNBUFFERED", "1"));
|
||||
final Map<String, String> environment = new HashMap<String, String>(System.getenv());
|
||||
PythonEnvUtil.setPythonUnbuffered(environment);
|
||||
PythonEnvUtil.setPythonDontWriteBytecode(environment);
|
||||
final GeneralCommandLine commandLine = new GeneralCommandLine(cmdline).withWorkDirectory(workingDir).withEnvironment(environment);
|
||||
if (useSudo) {
|
||||
process = ExecUtil.sudo(commandLine, "Please enter your password to make changes in system packages: ");
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.jetbrains.python.sdk;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -23,7 +22,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -35,6 +33,7 @@ public class PythonEnvUtil {
|
||||
@SuppressWarnings("SpellCheckingInspection") public static final String PYTHONUNBUFFERED = "PYTHONUNBUFFERED";
|
||||
@SuppressWarnings("SpellCheckingInspection") public static final String PYTHONIOENCODING = "PYTHONIOENCODING";
|
||||
@SuppressWarnings("SpellCheckingInspection") public static final String IPYTHONENABLE = "IPYTHONENABLE";
|
||||
@SuppressWarnings("SpellCheckingInspection") public static final String PYTHONDONTWRITEBYTECODE = "PYTHONDONTWRITEBYTECODE";
|
||||
|
||||
private PythonEnvUtil() { }
|
||||
|
||||
@@ -86,4 +85,10 @@ public class PythonEnvUtil {
|
||||
public static void addToPythonPath(@NotNull Map<String, String> env, String value) {
|
||||
addPathToEnv(env, PYTHONPATH, value);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Map<String, String> setPythonDontWriteBytecode(@NotNull Map<String, String> env) {
|
||||
env.put(PYTHONDONTWRITEBYTECODE, "1");
|
||||
return env;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.intellij.util.Consumer;
|
||||
import com.jetbrains.python.PythonHelpersLocator;
|
||||
import com.jetbrains.python.sdk.InvalidSdkException;
|
||||
import com.jetbrains.python.sdk.PySdkUtil;
|
||||
import com.jetbrains.python.sdk.PythonEnvUtil;
|
||||
import com.jetbrains.python.sdk.PythonSdkType;
|
||||
import com.jetbrains.python.sdk.flavors.IronPythonSdkFlavor;
|
||||
import com.jetbrains.python.sdk.flavors.PythonSdkFlavor;
|
||||
@@ -171,12 +172,9 @@ public class PySkeletonGenerator {
|
||||
|
||||
protected ProcessOutput getProcessOutput(String homePath, String[] commandLine, Map<String, String> extraEnv,
|
||||
int timeout) throws InvalidSdkException {
|
||||
return PySdkUtil.getProcessOutput(
|
||||
homePath,
|
||||
commandLine,
|
||||
extraEnv,
|
||||
timeout
|
||||
);
|
||||
final Map<String, String> env = extraEnv != null ? new HashMap<String, String>(extraEnv) : new HashMap<String, String>();
|
||||
PythonEnvUtil.setPythonDontWriteBytecode(env);
|
||||
return PySdkUtil.getProcessOutput(homePath, commandLine, env, timeout);
|
||||
}
|
||||
|
||||
public void generateBuiltinSkeletons(@NotNull Sdk sdk) throws InvalidSdkException {
|
||||
|
||||
Reference in New Issue
Block a user