mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
PY-40486 Fixes after rebasing on master
Co-authored-by: Mikhail Golubev <mikhail.golubev@jetbrains.com> GitOrigin-RevId: fbecb15b6720ae4c2c741404b063dcdb59d0c23e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
863ee165e1
commit
c82480ce58
@@ -2,18 +2,25 @@
|
||||
package com.jetbrains.python.sdk
|
||||
|
||||
import com.intellij.execution.ExecutionException
|
||||
import com.intellij.execution.target.TargetEnvironmentRequest
|
||||
import com.intellij.execution.target.TargetProgressIndicatorAdapter
|
||||
import com.intellij.execution.target.TargetedCommandLineBuilder
|
||||
import com.intellij.execution.target.local.LocalTargetEnvironmentRequest
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.jetbrains.python.PythonHelper
|
||||
import com.jetbrains.python.run.*
|
||||
import com.jetbrains.python.run.target.HelpersAwareTargetEnvironmentRequest
|
||||
|
||||
class PyTargetsIntrospectionFacade(val mySdk: Sdk) {
|
||||
private val myTargetEnvRequest = checkNotNull(PythonInterpreterTargetEnvironmentFactory.findTargetEnvironmentRequest(mySdk))
|
||||
class PyTargetsIntrospectionFacade(val mySdk: Sdk, val project: Project) {
|
||||
private val pyRequest: HelpersAwareTargetEnvironmentRequest =
|
||||
checkNotNull(PythonInterpreterTargetEnvironmentFactory.findPythonTargetInterpreter(mySdk, project))
|
||||
|
||||
private val myTargetEnvRequest: TargetEnvironmentRequest
|
||||
get() = pyRequest.targetEnvironmentRequest
|
||||
|
||||
init {
|
||||
check(mySdk !is Disposable || !Disposer.isDisposed(mySdk))
|
||||
@@ -43,7 +50,7 @@ class PyTargetsIntrospectionFacade(val mySdk: Sdk) {
|
||||
|
||||
@Throws(ExecutionException::class)
|
||||
fun getInterpreterPaths(indicator: ProgressIndicator): List<String> {
|
||||
val execution = prepareHelperScriptExecution(helperPackage = PythonHelper.SYSPATH, targetEnvironmentRequest = myTargetEnvRequest)
|
||||
val execution = prepareHelperScriptExecution(helperPackage = PythonHelper.SYSPATH, helpersAwareTargetRequest = pyRequest)
|
||||
val environment = myTargetEnvRequest.prepareEnvironment(TargetProgressIndicatorAdapter(indicator))
|
||||
val cmd = execution.buildTargetedCommandLine(environment, mySdk, emptyList())
|
||||
return cmd.execute(environment, indicator).stdoutLines
|
||||
@@ -52,6 +59,6 @@ class PyTargetsIntrospectionFacade(val mySdk: Sdk) {
|
||||
@Throws(ExecutionException::class)
|
||||
fun synchronizeRemoteSourcesAndSetupMappings(indicator: ProgressIndicator) {
|
||||
if (isLocalTarget()) return
|
||||
PyTargetsRemoteSourcesRefresher(mySdk).run(indicator)
|
||||
PyTargetsRemoteSourcesRefresher(mySdk, project).run(indicator)
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import com.google.gson.annotations.SerializedName
|
||||
import com.intellij.execution.ExecutionException
|
||||
import com.intellij.execution.target.TargetEnvironment
|
||||
import com.intellij.execution.target.TargetEnvironment.TargetPath
|
||||
import com.intellij.execution.target.TargetEnvironmentRequest
|
||||
import com.intellij.execution.target.TargetProgressIndicatorAdapter
|
||||
import com.intellij.execution.target.value.getRelativeTargetPath
|
||||
import com.intellij.execution.target.value.getTargetDownloadPath
|
||||
@@ -13,6 +14,7 @@ import com.intellij.execution.target.value.getTargetUploadPath
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.diagnostic.logger
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.util.PathMappingSettings
|
||||
@@ -24,6 +26,7 @@ import com.jetbrains.python.run.PythonInterpreterTargetEnvironmentFactory
|
||||
import com.jetbrains.python.run.buildTargetedCommandLine
|
||||
import com.jetbrains.python.run.execute
|
||||
import com.jetbrains.python.run.prepareHelperScriptExecution
|
||||
import com.jetbrains.python.run.target.HelpersAwareTargetEnvironmentRequest
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Paths
|
||||
import java.nio.file.attribute.FileTime
|
||||
@@ -33,11 +36,15 @@ import kotlin.io.path.div
|
||||
|
||||
private const val STATE_FILE = ".state.json"
|
||||
|
||||
class PyTargetsRemoteSourcesRefresher(val mySdk: Sdk) {
|
||||
private val myTargetEnvRequest = checkNotNull(PythonInterpreterTargetEnvironmentFactory.findTargetEnvironmentRequest(mySdk))
|
||||
class PyTargetsRemoteSourcesRefresher(val mySdk: Sdk, project: Project) {
|
||||
private val pyRequest: HelpersAwareTargetEnvironmentRequest =
|
||||
checkNotNull(PythonInterpreterTargetEnvironmentFactory.findPythonTargetInterpreter(mySdk, project))
|
||||
|
||||
private val myTargetEnvRequest: TargetEnvironmentRequest
|
||||
get() = pyRequest.targetEnvironmentRequest
|
||||
|
||||
init {
|
||||
check(mySdk !is Disposable || !Disposer.isDisposed(mySdk))
|
||||
assert(mySdk !is Disposable || !Disposer.isDisposed(mySdk))
|
||||
}
|
||||
|
||||
@Throws(ExecutionException::class)
|
||||
@@ -51,7 +58,7 @@ class PyTargetsRemoteSourcesRefresher(val mySdk: Sdk) {
|
||||
val downloadVolume = TargetEnvironment.DownloadRoot(localRootPath = localRemoteSourcesRoot, targetRootPath = TargetPath.Temporary())
|
||||
myTargetEnvRequest.downloadVolumes += downloadVolume
|
||||
|
||||
val execution = prepareHelperScriptExecution(helperPackage = PythonHelper.REMOTE_SYNC, targetEnvironmentRequest = myTargetEnvRequest)
|
||||
val execution = prepareHelperScriptExecution(helperPackage = PythonHelper.REMOTE_SYNC, helpersAwareTargetRequest = pyRequest)
|
||||
|
||||
val stateFilePath = localRemoteSourcesRoot / STATE_FILE
|
||||
val stateFilePrevTimestamp: FileTime
|
||||
@@ -71,7 +78,7 @@ class PyTargetsRemoteSourcesRefresher(val mySdk: Sdk) {
|
||||
|
||||
// XXX Make it automatic
|
||||
environment.uploadVolumes.values.forEach { it.upload(".", targetIndicator) }
|
||||
|
||||
|
||||
val cmd = execution.buildTargetedCommandLine(environment, mySdk, emptyList())
|
||||
cmd.execute(environment, indicator)
|
||||
|
||||
@@ -84,7 +91,7 @@ class PyTargetsRemoteSourcesRefresher(val mySdk: Sdk) {
|
||||
if (Files.getLastModifiedTime(stateFilePath) <= stateFilePrevTimestamp) {
|
||||
throw IllegalStateException("$stateFilePath has not been updated")
|
||||
}
|
||||
|
||||
|
||||
val stateFile: StateFile
|
||||
Files.newBufferedReader(stateFilePath).use {
|
||||
stateFile = Gson().fromJson(it, StateFile::class.java)
|
||||
|
||||
@@ -138,7 +138,7 @@ public class PythonSdkUpdater implements StartupActivity.Background {
|
||||
}
|
||||
try {
|
||||
if (Experiments.getInstance().isFeatureEnabled("python.use.targets.api.for.run.configurations")) {
|
||||
PyTargetsIntrospectionFacade targetsFacade = new PyTargetsIntrospectionFacade(sdk);
|
||||
PyTargetsIntrospectionFacade targetsFacade = new PyTargetsIntrospectionFacade(sdk, myProject);
|
||||
String version = targetsFacade.getInterpreterVersion(indicator);
|
||||
commitSdkVersionIfChanged(sdk, version);
|
||||
if (targetsFacade.isLocalTarget()) {
|
||||
|
||||
@@ -119,7 +119,7 @@ public class PySkeletonRefresher {
|
||||
mySdk = sdk;
|
||||
mySkeletonsPath = skeletonsPath;
|
||||
if (Experiments.getInstance().isFeatureEnabled("python.use.targets.api.for.run.configurations")) {
|
||||
mySkeletonsGenerator = new PyTargetsSkeletonGenerator(getSkeletonsPath(), mySdk, folder);
|
||||
mySkeletonsGenerator = new PyTargetsSkeletonGenerator(getSkeletonsPath(), mySdk, folder, myProject);
|
||||
}
|
||||
else if (PythonSdkUtil.isRemote(sdk)) {
|
||||
try {
|
||||
|
||||
@@ -4,17 +4,21 @@ package com.jetbrains.python.sdk.skeletons
|
||||
import com.intellij.execution.process.CapturingProcessHandler
|
||||
import com.intellij.execution.process.ProcessOutput
|
||||
import com.intellij.execution.target.TargetEnvironment
|
||||
import com.intellij.execution.target.TargetEnvironmentRequest
|
||||
import com.intellij.execution.target.TargetProgressIndicator
|
||||
import com.intellij.execution.target.local.LocalTargetEnvironmentRequest
|
||||
import com.intellij.execution.target.value.getTargetDownloadPath
|
||||
import com.intellij.openapi.progress.EmptyProgressIndicator
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.ProjectManager
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.jetbrains.python.PythonHelper
|
||||
import com.jetbrains.python.run.PythonInterpreterTargetEnvironmentFactory
|
||||
import com.jetbrains.python.run.buildTargetedCommandLine
|
||||
import com.jetbrains.python.run.prepareHelperScriptExecution
|
||||
import com.jetbrains.python.run.target.HelpersAwareTargetEnvironmentRequest
|
||||
import com.jetbrains.python.sdk.InvalidSdkException
|
||||
import com.jetbrains.python.sdk.skeleton.PySkeletonHeader
|
||||
import java.nio.file.Files
|
||||
@@ -22,9 +26,16 @@ import java.nio.file.NoSuchFileException
|
||||
import java.nio.file.Paths
|
||||
import kotlin.io.path.div
|
||||
|
||||
class PyTargetsSkeletonGenerator(skeletonPath: String?, pySdk: Sdk, currentFolder: String?)
|
||||
class PyTargetsSkeletonGenerator(skeletonPath: String, pySdk: Sdk, currentFolder: String?, project: Project?)
|
||||
: PySkeletonGenerator(skeletonPath, pySdk, currentFolder) {
|
||||
private val myTargetEnvRequest = checkNotNull(PythonInterpreterTargetEnvironmentFactory.findTargetEnvironmentRequest(sdk = mySdk))
|
||||
private val pyRequest: HelpersAwareTargetEnvironmentRequest = checkNotNull(
|
||||
// TODO Get rid of the dependency on the default project
|
||||
PythonInterpreterTargetEnvironmentFactory.findPythonTargetInterpreter(mySdk, project ?: ProjectManager.getInstance().defaultProject)
|
||||
)
|
||||
|
||||
private val myTargetEnvRequest: TargetEnvironmentRequest
|
||||
get() = pyRequest.targetEnvironmentRequest
|
||||
|
||||
private val myFoundBinaries: MutableSet<String> = HashSet()
|
||||
|
||||
private fun isLocalTarget() = myTargetEnvRequest is LocalTargetEnvironmentRequest
|
||||
@@ -43,7 +54,7 @@ class PyTargetsSkeletonGenerator(skeletonPath: String?, pySdk: Sdk, currentFolde
|
||||
|
||||
private fun doRunProcess(listener: LineWiseProcessOutputListener?): ProcessOutput {
|
||||
val generatorScriptExecution = prepareHelperScriptExecution(helperPackage = PythonHelper.GENERATOR3,
|
||||
targetEnvironmentRequest = myTargetEnvRequest)
|
||||
helpersAwareTargetRequest = pyRequest)
|
||||
generatorScriptExecution.addParameter("-d")
|
||||
val skeletonsDownloadRoot = TargetEnvironment.DownloadRoot(localRootPath = Paths.get(mySkeletonsPath),
|
||||
targetRootPath = TargetEnvironment.TargetPath.Temporary())
|
||||
|
||||
Reference in New Issue
Block a user