0.27.2
This commit is contained in:
1 parent
e0194fbaff
commit
a631068cbe
39 files changed
+246
-138
No files matched your search
+16
-13
@@ -60,6 +60,7 @@ impl Manager {
|
||||
struct RuntimeLaunch {
|
||||
python: PathBuf,
|
||||
prepend_path: Option<PathBuf>,
|
||||
managed_certbot_python: Option<PathBuf>,
|
||||
}
|
||||
|
||||
fn find_on_path(name: &str) -> Option<PathBuf> {
|
||||
@@ -96,15 +97,6 @@ fn venv_python(directory: &Path) -> PathBuf {
|
||||
venv_bin(directory).join("python")
|
||||
}
|
||||
|
||||
#[cfg(windows)]
|
||||
fn venv_certbot(directory: &Path) -> PathBuf {
|
||||
venv_bin(directory).join("certbot.exe")
|
||||
}
|
||||
#[cfg(not(windows))]
|
||||
fn venv_certbot(directory: &Path) -> PathBuf {
|
||||
venv_bin(directory).join("certbot")
|
||||
}
|
||||
|
||||
async fn command_success(
|
||||
mut command: Command,
|
||||
timeout: Duration,
|
||||
@@ -131,8 +123,7 @@ async fn managed_environment_valid(
|
||||
shutdown: &tokio_util::sync::CancellationToken,
|
||||
) -> bool {
|
||||
let python = venv_python(directory);
|
||||
let certbot = venv_certbot(directory);
|
||||
if !python.is_file() || !certbot.is_file() {
|
||||
if !python.is_file() {
|
||||
return false;
|
||||
}
|
||||
let mut imports = Command::new(&python);
|
||||
@@ -144,8 +135,13 @@ async fn managed_environment_valid(
|
||||
if !command_success(imports, Duration::from_secs(20), shutdown).await {
|
||||
return false;
|
||||
}
|
||||
let mut version = Command::new(&certbot);
|
||||
version.arg("--version");
|
||||
// A venv is created under an atomic staging directory and then renamed
|
||||
// into place. pip-generated console scripts contain an absolute shebang,
|
||||
// so the staged `bin/certbot` is not relocatable after that rename. Invoke
|
||||
// Certbot as a module through the final venv interpreter instead. This also
|
||||
// makes existing 0.27.1 environments immediately usable after upgrade.
|
||||
let mut version = Command::new(&python);
|
||||
version.args(["-I", "-m", "certbot", "--version"]);
|
||||
command_success(version, Duration::from_secs(20), shutdown).await
|
||||
}
|
||||
|
||||
@@ -307,6 +303,7 @@ async fn ensure_runtime(state: &App) -> Result<RuntimeLaunch, String> {
|
||||
return Ok(RuntimeLaunch {
|
||||
python: venv_python(&managed),
|
||||
prepend_path: Some(venv_bin(&managed)),
|
||||
managed_certbot_python: Some(venv_python(&managed)),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -355,6 +352,7 @@ async fn ensure_runtime(state: &App) -> Result<RuntimeLaunch, String> {
|
||||
return Ok(RuntimeLaunch {
|
||||
python: venv_python(&managed),
|
||||
prepend_path: Some(venv_bin(&managed)),
|
||||
managed_certbot_python: Some(venv_python(&managed)),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -371,6 +369,7 @@ async fn ensure_runtime(state: &App) -> Result<RuntimeLaunch, String> {
|
||||
return Ok(RuntimeLaunch {
|
||||
python,
|
||||
prepend_path: None,
|
||||
managed_certbot_python: None,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -434,9 +433,13 @@ async fn worker(state: &App, directory: PathBuf, raw: Zeroizing<String>) -> Resu
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::null())
|
||||
.kill_on_drop(true);
|
||||
command.env_remove("RUSTPROXY_CERTBOT_PYTHON");
|
||||
if let Some(prepend) = launch.prepend_path.as_deref() {
|
||||
command.env("PATH", merged_path(prepend)?);
|
||||
}
|
||||
if let Some(python) = launch.managed_certbot_python.as_deref() {
|
||||
command.env("RUSTPROXY_CERTBOT_PYTHON", python);
|
||||
}
|
||||
#[cfg(unix)]
|
||||
{
|
||||
use std::os::unix::process::CommandExt;
|
||||
|
||||
Reference in new issue
Block a user