From 306ce45036e43571f41e20096df841fea8b84a0d Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 22 Jun 2023 09:35:04 -0500 Subject: [PATCH 1/7] Run win CI only --- ...R-CMD-check-wsl.yaml => R-CMD-check-wsl.yaml.bak} | 0 .github/workflows/R-CMD-check.yaml | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) rename .github/workflows/{R-CMD-check-wsl.yaml => R-CMD-check-wsl.yaml.bak} (100%) diff --git a/.github/workflows/R-CMD-check-wsl.yaml b/.github/workflows/R-CMD-check-wsl.yaml.bak similarity index 100% rename from .github/workflows/R-CMD-check-wsl.yaml rename to .github/workflows/R-CMD-check-wsl.yaml.bak diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index f59b7d3a9..0a8ef1f18 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -23,14 +23,14 @@ jobs: fail-fast: false matrix: config: - - {os: macOS-latest, r: 'devel', rtools: ''} - - {os: macOS-latest, r: 'release', rtools: ''} - - {os: windows-latest, r: 'devel', rtools: '42'} + #- {os: macOS-latest, r: 'devel', rtools: ''} + #- {os: macOS-latest, r: 'release', rtools: ''} + - {os: windows-latest, r: 'devel', rtools: '43'} - {os: windows-latest, r: 'release', rtools: '42'} - {os: windows-latest, r: 'oldrel', rtools: '40'} - - {os: ubuntu-20.04, r: 'devel', rtools: ''} - - {os: ubuntu-20.04, r: 'release', rtools: ''} - - {os: ubuntu-20.04, r: 'oldrel', rtools: ''} + #- {os: ubuntu-20.04, r: 'devel', rtools: ''} + #- {os: ubuntu-20.04, r: 'release', rtools: ''} + #- {os: ubuntu-20.04, r: 'oldrel', rtools: ''} env: R_REMOTES_NO_ERRORS_FROM_WARNINGS: true GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} From 0d33589a4a6598c06887f410bc015a8c1a3b6494 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 22 Jun 2023 09:35:39 -0500 Subject: [PATCH 2/7] Run win CI only --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 0a8ef1f18..3569e0068 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -7,7 +7,7 @@ name: Unit tests 'on': push: branches: - - master + - interactive-testing pull_request: branches: - master From 8dd5bb26ffd665873c7634fde9daf0f22d5f9b56 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 22 Jun 2023 10:28:48 -0500 Subject: [PATCH 3/7] More flexible rtools handling --- .github/workflows/R-CMD-check.yaml | 6 +-- R/install.R | 65 ++++++++++++++++++++---------- R/utils.R | 8 ++++ 3 files changed, 54 insertions(+), 25 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 3569e0068..15ad57a4c 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -7,7 +7,7 @@ name: Unit tests 'on': push: branches: - - interactive-testing + - rtools-compat-fixes pull_request: branches: - master @@ -26,8 +26,8 @@ jobs: #- {os: macOS-latest, r: 'devel', rtools: ''} #- {os: macOS-latest, r: 'release', rtools: ''} - {os: windows-latest, r: 'devel', rtools: '43'} - - {os: windows-latest, r: 'release', rtools: '42'} - - {os: windows-latest, r: 'oldrel', rtools: '40'} + - {os: windows-latest, r: 'release', rtools: '43'} + - {os: windows-latest, r: 'oldrel', rtools: '42'} #- {os: ubuntu-20.04, r: 'devel', rtools: ''} #- {os: ubuntu-20.04, r: 'release', rtools: ''} #- {os: ubuntu-20.04, r: 'oldrel', rtools: ''} diff --git a/R/install.R b/R/install.R index 7820881c3..8f31534a1 100644 --- a/R/install.R +++ b/R/install.R @@ -204,12 +204,12 @@ install_cmdstan <- function(dir = NULL, append = TRUE ) } - if (is_rtools42_toolchain() && !wsl) { + if (is_ucrt_toolchain() && !wsl) { cmdstan_make_local( dir = dir_cmdstan, cpp_options = list( - "CXXFLAGS += -Wno-nonnull", - "TBB_CXXFLAGS= -U__MSVCRT_VERSION__ -D__MSVCRT_VERSION__=0x0E00" + "CXXFLAGS += -Wno-nonnull -D_UCRT", + "TBB_CXXFLAGS= -D_UCRT" ), append = TRUE ) @@ -511,12 +511,13 @@ build_status_ok <- function(process_log, quiet = FALSE) { install_toolchain <- function(quiet = FALSE) { rtools_usr_bin <- file.path(rtools4x_home_path(), "usr", "bin") - if (R.version$minor < "2.0") { + rtools_version <- paste0("Rtools", rtools4x_version()) + if (!is_ucrt_toolchain()) { install_pkgs <- "mingw-w64-x86_64-make" - if (!quiet) message("Installing mingw32-make with Rtools40.") + if (!quiet) message(paste0("Installing mingw32-make with ", rtools_version)) } else { install_pkgs <- c("mingw-w64-ucrt-x86_64-make", "mingw-w64-ucrt-x86_64-gcc") - if (!quiet) message("Installing mingw32-make and g++ with Rtools42.") + if (!quiet) message(paste0("Installing mingw32-make and g++ with ", rtools_version)) } if (!checkmate::test_directory(rtools_usr_bin, access = "w")) { warning("No write permissions in the RTools folder. This might prevent installing the toolchain.", @@ -571,8 +572,8 @@ check_wsl_toolchain <- function() { } check_rtools4x_windows_toolchain <- function(fix = FALSE, quiet = FALSE) { - rtools_path <- rtools4x_home_path() - rtools_version <- if (is_rtools42_toolchain()) "Rtools42" else "Rtools40" + rtools_path <- rtools_home_path() + rtools_version <- paste0("Rtools", rtools4x_version()) toolchain_path <- rtools4x_toolchain_path() # If RTOOLS4X_HOME is not set (the env. variable gets set on install) # we assume that RTools 40 is not installed. @@ -770,7 +771,7 @@ is_toolchain_installed <- function(app, path) { toolchain_PATH_env_var <- function() { path <- NULL - if (is_rtools42_toolchain() || is_rtools40_toolchain()) { + if (R.version$major == "4") { rtools_home <- rtools4x_home_path() path <- paste0( repair_path(file.path(rtools_home, "usr", "bin")), ";", @@ -781,26 +782,46 @@ toolchain_PATH_env_var <- function() { } rtools4x_toolchain_path <- function() { - if (is_rtools42_toolchain()) { - path <- repair_path(file.path(rtools4x_home_path(), "ucrt64", "bin")) + c_runtime <- ifelse(is_ucrt_toolchain(), "ucrt64", "mingw64") + repair_path(file.path(rtools4x_home_path(), c_runtime, "bin")) +} + +rtools4x_version <- function() { + rtools_ver <- NULL + + if (R.version$minor < "2.0") { + rtools_ver <- "40" + } else if (R.version$minor < "3.0") { + rtools_ver <- "42" } else { - path <- repair_path(file.path(rtools4x_home_path(), "mingw64", "bin")) + rtools_ver <- "43" } - path + rtools_ver <- rtools4x_version() } rtools4x_home_path <- function() { path <- NULL - if (is_rtools42_toolchain()) { - path <- Sys.getenv("RTOOLS42_HOME") - if (!nzchar(path)) { - default_path <- repair_path(file.path("C:/rtools42")) - if (dir.exists(default_path)) { - path <- default_path - } + rtools_ver + + rtools_home <- paste0("RTOOLS", rtools_ver, "_HOME") + + if (!nzchar(rtools_home)) { + default_path <- repair_path(file.path(paste0("C:/rtools", rtools_ver))) + if (dir.exists(default_path)) { + path <- default_path } - } else { - path <- Sys.getenv("RTOOLS40_HOME") + } + + path +} + +rtools_home_path <- function() { + path <- NULL + if (R.version$major == "3") { + path <- Sys.getenv("RTOOLS_HOME") + } + if (R.version$major == "4") { + path <- rtools4x_home_path() } path } diff --git a/R/utils.R b/R/utils.R index 0e610df92..203360f3a 100644 --- a/R/utils.R +++ b/R/utils.R @@ -50,6 +50,10 @@ os_is_macos <- function() { isTRUE(Sys.info()[["sysname"]] == "Darwin") } +is_rtools43_toolchain <- function() { + os_is_windows() && R.version$major == "4" && R.version$minor >= "3.0" +} + is_rtools42_toolchain <- function() { os_is_windows() && R.version$major == "4" && R.version$minor >= "2.0" } @@ -58,6 +62,10 @@ is_rtools40_toolchain <- function() { os_is_windows() && R.version$major == "4" && R.version$minor < "2.0" } +is_ucrt_toolchain <- function() { + os_is_windows() && R.version$major == "4" && R.version$minor >= "2.0" +} + # Check if running R in Rosetta 2 translation environment, which is an # Intel-to-ARM translation layer. is_rosetta2 <- function() { From 8d5821c28a54e0884bf88075ae242834eec10824 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 22 Jun 2023 10:30:28 -0500 Subject: [PATCH 4/7] Typos --- R/install.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/install.R b/R/install.R index 8f31534a1..87c10ea7e 100644 --- a/R/install.R +++ b/R/install.R @@ -796,12 +796,12 @@ rtools4x_version <- function() { } else { rtools_ver <- "43" } - rtools_ver <- rtools4x_version() + rtools_ver } rtools4x_home_path <- function() { path <- NULL - rtools_ver + rtools_ver <- rtools4x_version() rtools_home <- paste0("RTOOLS", rtools_ver, "_HOME") From 67f002901d231536d747cf22770a5b87743337ba Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 22 Jun 2023 10:39:21 -0500 Subject: [PATCH 5/7] Missed value --- R/install.R | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/R/install.R b/R/install.R index 87c10ea7e..225399426 100644 --- a/R/install.R +++ b/R/install.R @@ -800,12 +800,10 @@ rtools4x_version <- function() { } rtools4x_home_path <- function() { - path <- NULL rtools_ver <- rtools4x_version() + path <- paste0("RTOOLS", rtools_ver, "_HOME") - rtools_home <- paste0("RTOOLS", rtools_ver, "_HOME") - - if (!nzchar(rtools_home)) { + if (!nzchar(path)) { default_path <- repair_path(file.path(paste0("C:/rtools", rtools_ver))) if (dir.exists(default_path)) { path <- default_path From e5c5166955884754a4224c397ef725384e6be769 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 22 Jun 2023 10:45:35 -0500 Subject: [PATCH 6/7] Path lookup --- R/install.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/install.R b/R/install.R index 225399426..381afb1de 100644 --- a/R/install.R +++ b/R/install.R @@ -801,7 +801,7 @@ rtools4x_version <- function() { rtools4x_home_path <- function() { rtools_ver <- rtools4x_version() - path <- paste0("RTOOLS", rtools_ver, "_HOME") + path <- Sys.getenv(paste0("RTOOLS", rtools_ver, "_HOME")) if (!nzchar(path)) { default_path <- repair_path(file.path(paste0("C:/rtools", rtools_ver))) From 0e6254a6074c86d5eaae588d42e9e2e4224018fc Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 23 Jun 2023 11:33:50 -0500 Subject: [PATCH 7/7] cleanup CI changes --- .../{R-CMD-check-wsl.yaml.bak => R-CMD-check-wsl.yaml} | 0 .github/workflows/R-CMD-check.yaml | 2 +- R/install.R | 9 ++++----- 3 files changed, 5 insertions(+), 6 deletions(-) rename .github/workflows/{R-CMD-check-wsl.yaml.bak => R-CMD-check-wsl.yaml} (100%) diff --git a/.github/workflows/R-CMD-check-wsl.yaml.bak b/.github/workflows/R-CMD-check-wsl.yaml similarity index 100% rename from .github/workflows/R-CMD-check-wsl.yaml.bak rename to .github/workflows/R-CMD-check-wsl.yaml diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 152a9d940..1ecf76d7a 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -7,7 +7,7 @@ name: Unit tests 'on': push: branches: - - rtools-compat-fixes + - master pull_request: branches: - master diff --git a/R/install.R b/R/install.R index d0a1b800f..ceb141c52 100644 --- a/R/install.R +++ b/R/install.R @@ -535,13 +535,12 @@ build_status_ok <- function(process_log, quiet = FALSE) { install_toolchain <- function(quiet = FALSE) { rtools_usr_bin <- file.path(rtools4x_home_path(), "usr", "bin") rtools_version <- paste0("Rtools", rtools4x_version()) - if (!is_ucrt_toolchain()) { - install_pkgs <- "mingw-w64-x86_64-make" - if (!quiet) message(paste0("Installing mingw32-make with ", rtools_version)) - } else { - ver <- ifelse(is_rtools43_toolchain(), "Rtools43", "Rtools42") + if (is_ucrt_toolchain()) { install_pkgs <- c("mingw-w64-ucrt-x86_64-make", "mingw-w64-ucrt-x86_64-gcc") if (!quiet) message(paste0("Installing mingw32-make and g++ with ", rtools_version)) + } else { + install_pkgs <- "mingw-w64-x86_64-make" + if (!quiet) message(paste0("Installing mingw32-make with ", rtools_version)) } if (!checkmate::test_directory(rtools_usr_bin, access = "w")) { warning("No write permissions in the RTools folder. This might prevent installing the toolchain.",