Skip to content

Commit edc019e

Browse files
authored
Merge pull request #177 from r-lib/fix/embedded-certs-on-linux
2 parents 782ac4e + 8e210a1 commit edc019e

File tree

4 files changed

+35
-4
lines changed

4 files changed

+35
-4
lines changed

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,12 @@ rig-$(VERSION).tar.gz: target/release/rig
4747
mkdir -p build/bin
4848
mkdir -p build/share/bash-completion/completions
4949
mkdir -p build/share/zsh/site-functions
50+
ls -l target/release
5051
cp target/release/rig build/bin
5152
find target/release/build -name _rig -exec cp \{\} build/share/zsh/site-functions \;
52-
find target/release/build -name rig.bash -exec cp \{\} build/share/bash-completion/completions \;
53+
find target/release/build -name rig.bash -exec cp \{\} build/share/bash-completion/completions \;
54+
mkdir -p build/share/rig
55+
curl -L -o build/share/rig/cacert.pem 'https://curl.se/ca/cacert.pem'
5356
tar cz -C build -f $@ bin share
5457

5558
# -------------------------------------------------------------------------

src/escalate.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ pub fn escalate(task: &str) -> Result<(), Box<dyn Error>> {
5050
"LC_MONETARY",
5151
"LC_NUMERIC",
5252
"LC_TIME",
53+
"SSL_CERT_FILE",
54+
"SSL_CERT_DIR",
5355
])?;
5456
}
5557

src/linux.rs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use std::{file, line};
1111

1212
use clap::ArgMatches;
1313
use simple_error::*;
14-
use simplelog::{trace,debug, info, warn};
14+
use simplelog::{trace, debug, info, warn};
1515

1616
use crate::resolve::resolve_versions;
1717
use crate::rversion::*;
@@ -855,4 +855,26 @@ fn check_usr_bin_sed(rver: &str) -> Result<(), Box<dyn Error>> {
855855
Run `ln -s /bin/sed /usr/bin/sed` as the root user to fix this,\n \
856856
and then run rig again."
857857
);
858-
}
858+
}
859+
860+
pub fn set_cert_envvar() {
861+
match std::env::var("SSL_CERT_FILE") {
862+
Ok(_) => {
863+
debug!("SSL_CERT_FILE is already set, keeping it.");
864+
return;
865+
},
866+
Err(_) => {
867+
let scertpath = "/usr/local/share/rig/cacert.pem";
868+
let certpath = std::path::Path::new(scertpath);
869+
if certpath.exists() {
870+
debug!("Using embedded SSL certificates via SSL_CERT_FILE");
871+
std::env::set_var("SSL_CERT_FILE", scertpath);
872+
} else {
873+
debug!(
874+
"{} does not exist, using system SSL certificates",
875+
scertpath
876+
);
877+
}
878+
}
879+
};
880+
}

src/main.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ fn main() {
5454
}
5555

5656
fn main_() -> i32 {
57-
unset_r_envvars();
5857
let args = parse_args();
5958

6059
// -- set up logger output --------------------------------------------
@@ -87,6 +86,11 @@ fn main_() -> i32 {
8786
_ => {}
8887
};
8988

89+
unset_r_envvars();
90+
91+
#[cfg(target_os = "linux")]
92+
set_cert_envvar();
93+
9094
// --------------------------------------------------------------------
9195

9296
match main__(&args) {

0 commit comments

Comments
 (0)