Skip to content

Commit

Permalink
restore scriptinfo (#197)
Browse files Browse the repository at this point in the history
  • Loading branch information
t4lz authored Nov 19, 2023
1 parent 82d1182 commit 7c4979c
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 12 deletions.
1 change: 1 addition & 0 deletions changelog.d/+patched-path.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
SIP-patched script path was being used also when mirrord was disabled - cosmetic effect only.
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ fun patchedScriptFromScript(scriptInfo: ScriptInfo, script: String, args: String
return PatchedScriptInfo(scriptInfo.scriptHelper, parent, startupNotShutdown, params.toTypedArray())
}

data class SavedConfigData(val envVars: List<EnvironmentVariable>, val nonDefaultScript: String?)
data class SavedConfigData(val envVars: List<EnvironmentVariable>, var scriptInfo: ScriptInfo?)

data class CommandLineWithArgs(val command: String, val args: String?)

Expand Down Expand Up @@ -176,22 +176,15 @@ class TomcatExecutionListener : ExecutionListener {
// even if `outgoing` feature is enabled.
val mirrordEnv = env + mapOf(Pair("MIRRORD_DETECT_DEBUGGER_PORT", "javaagent"), Pair("MIRRORD_IGNORE_DEBUGGER_PORTS", getTomcatServerPort()))

// If we're on macOS we're going to SIP-patch the script and change info, so save script info.
val originalScript = if (SystemInfo.isMac && !startupInfo.USE_DEFAULT) {
MirrordLogger.logger.debug("config uses non-default tomcat script. Saving path to restore later")
startupInfo.SCRIPT
} else {
null
}

savedEnvs[executorId] = SavedConfigData(envVars.toList(), originalScript)
val savedData = SavedConfigData(envVars.toList(), null)
envVars.addAll(mirrordEnv.map { (k, v) -> EnvironmentVariable(k, v, false) })
config.setEnvironmentVariables(envVars)

if (SystemInfo.isMac) {
MirrordLogger.logger.debug("isMac, patching SIP.")
patchedPath?.let {
MirrordLogger.logger.debug("patchedPath is not null: $it, meaning original was SIP")
savedData.scriptInfo = startupInfo
if (config.startupInfo.USE_DEFAULT) {
MirrordLogger.logger.debug("using default - handling SIP by replacing config.startupInfo")
val patchedStartupInfo = patchedScriptFromScript(startupInfo, it, scriptAndArgs?.args)
Expand All @@ -204,6 +197,7 @@ class TomcatExecutionListener : ExecutionListener {
}
}
}
savedEnvs[executorId] = savedData
}
} catch (e: Throwable) {
MirrordLogger.logger.debug("Running tomcat project failed: ", e)
Expand All @@ -223,8 +217,10 @@ class TomcatExecutionListener : ExecutionListener {
val saved = savedEnvs.remove(executorId) ?: return
config.setEnvironmentVariables(saved.envVars)
if (SystemInfo.isMac) {
saved.nonDefaultScript?.let {
config.startupInfo.SCRIPT = it
saved.scriptInfo?.let {
val startupInfoField = RunnerSpecificLocalConfigurationBit::class.java.getDeclaredField("myStartupInfo")
startupInfoField.isAccessible = true
startupInfoField.set(config, it)
}
}
}
Expand Down

0 comments on commit 7c4979c

Please sign in to comment.