Skip to content

Commit 0e7f708

Browse files
committed
Support Rtools44 + use Rtools42 for R 4.2.x
pak's R 4.2.x build does not work, and I suspect it is because of using Rtools40 instead of Rtools42.
1 parent f11e9df commit 0e7f708

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

NEWS.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11

2+
# rig 0.6.1 (prerelease)
3+
4+
* rig now supports Rtools44 on Windows.
5+
26
# rig 0.6.0
37

48
* rig now supports RPM based distros, in addition to Deboan and Ubuntu (#28).

src/windows.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,22 @@ fn add_rtools(version: String) -> Result<(), Box<dyn Error>> {
150150
}
151151
let client = &reqwest::Client::new();
152152
for ver in vers {
153+
let rtools44 = &ver[0..2] == "44";
153154
let rtools43 = &ver[0..2] == "43";
154155
let rtools42 = &ver[0..2] == "42";
155156
let rtools4 = &ver[0..1] == "4";
156157
let filename: String;
157158
let url: String;
158-
if rtools43 {
159+
if rtools44 {
160+
let rt44=Path::new("C:\\Rtools44");
161+
if rt44.exists() {
162+
info!("Rtools44 is already installed");
163+
continue;
164+
}
165+
filename = "rtools44.exe".to_string();
166+
url = "https://github.com/r-hub/rtools44/releases/download/latest/rtools44.exe"
167+
.to_string();
168+
} else if rtools43 {
159169
let rt43=Path::new("C:\\Rtools43");
160170
if rt43.exists() {
161171
info!("Rtools43 is already installed");
@@ -279,17 +289,29 @@ fn get_rtools_needed(version: Option<Vec<String>>) -> Result<Vec<String>, Box<dy
279289
let ver: String = String::from_utf8(out.stdout)?;
280290
let v35 = "35".to_string();
281291
let v40 = "40".to_string();
292+
let v42 = "42".to_string();
282293
let v43 = "43".to_string();
294+
let v44 = "44".to_string();
295+
let sv440 = semver::Version::parse("4.4.0")?;
283296
let sv430 = semver::Version::parse("4.3.0")?;
297+
let sv420 = semver::Version::parse("4.2.0")?;
284298
let sv = semver::Version::parse(&ver)?;
285299
if &ver[0..1] == "3" {
286300
if !res.contains(&v35) {
287301
res.push(v35);
288302
}
303+
} else if sv >= sv440 {
304+
if !res.contains(&v44) {
305+
res.push(v44)
306+
}
289307
} else if sv >= sv430 {
290308
if !res.contains(&v43) {
291309
res.push(v43)
292310
}
311+
} else if sv >= sv420 {
312+
if !res.contains(&v42) {
313+
res.push(v42)
314+
}
293315
} else if &ver[0..1] == "4" {
294316
if !res.contains(&v40) {
295317
res.push(v40);

0 commit comments

Comments
 (0)