From 717981d2b75ec148f7dd323ef10aaa3759fe809a Mon Sep 17 00:00:00 2001 From: Benjamin Schwendinger <52290390+ben-schwen@users.noreply.github.com> Date: Mon, 21 Oct 2024 20:15:03 +0200 Subject: [PATCH] Macos binaries (#6421) * add binaries for macos * .tgz instead of .zip * add different binaries * mirror mac packages * fix mirror packages * fix type * fix typo * exchange substr with startsWith Co-authored-by: Michael Chirico * exclude dev version * add integration stage for macos binaries * update integration * restore needs * add spaces * update integration --------- Co-authored-by: Michael Chirico --- .ci/ci.R | 7 ++++--- .gitlab-ci.yml | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/.ci/ci.R b/.ci/ci.R index f3a428566..a8aebb92f 100644 --- a/.ci/ci.R +++ b/.ci/ci.R @@ -111,7 +111,7 @@ mirror.packages <- function(pkgs, which = c("Depends", "Imports", "LinkingTo"), repos = getOption("repos"), - type = c("source", "mac.binary", "win.binary"), + type = c("source", "mac.binary.big-sur-arm64", "win.binary"), repodir, except.repodir = repodir, except.priority = "base", @@ -169,7 +169,8 @@ function(pkgs, newpkgs <- newpkgs[availpkgs] } - pkgsext <- switch(type, + typeshort <- if (startsWith(type, "mac.binary.")) "mac.binary" else type + pkgsext <- switch(typeshort, "source" = "tar.gz", "mac.binary" = "tgz", "win.binary" = "zip") @@ -181,7 +182,7 @@ function(pkgs, dp <- utils::download.packages(pkgs = newpkgs, destdir = destdir, available = db, contriburl = repos.url, type = type, method = method, quiet = quiet) - tools::write_PACKAGES(dir = destdir, type = type, ...) + tools::write_PACKAGES(dir = destdir, type = typeshort, ...) dp } diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8e1137510..02d566030 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,9 @@ variables: R_DEV_VERSION: "4.5" R_DEV_WIN_BIN: "https://cloud.r-project.org/bin/windows/base/R-devel-win.exe" R_OLD_VERSION: "4.3" - R_OLD_WIN_BIN: "https://cloud.r-project.org/bin/windows/base/old/4.3.3/R-4.3.3-win.exe" + R_OLD_WIN_BIN: "https://cloud.r-project.org/bin/windows/base/old/4.3.3/R-4.3.3-win.exe" + R_REL_MAC_BIN: "https://cloud.r-project.org/bin/macosx/big-sur-arm64/base/R-4.4.1-arm64.pkg" + R_OLD_MAC_BIN: "https://cloud.r-project.org/bin/macosx/big-sur-arm64/base/R-4.3.3-arm64.pkg" stages: - dependencies @@ -51,6 +53,7 @@ mirror-packages: - mkdir -p bus/$CI_JOB_NAME/cran/src/contrib - Rscript -e 'mirror.packages(dcf.dependencies("DESCRIPTION", "all"), repos=Sys.getenv("CRAN_MIRROR"), repodir="bus/mirror-packages/cran")' - Rscript -e 'sapply(simplify=FALSE, setNames(nm=Sys.getenv(c("R_REL_VERSION","R_DEV_VERSION","R_OLD_VERSION"))), function(binary.ver) mirror.packages(type="win.binary", dcf.dependencies("DESCRIPTION", "all"), repos=Sys.getenv("CRAN_MIRROR"), repodir="bus/mirror-packages/cran", binary.ver=binary.ver))' + - Rscript -e 'sapply(simplify=FALSE, setNames(nm=Sys.getenv(c("R_REL_VERSION","R_OLD_VERSION"))), function(binary.ver) mirror.packages(type="mac.binary.big-sur-arm64", dcf.dependencies("DESCRIPTION", "all"), repos=Sys.getenv("CRAN_MIRROR"), repodir="bus/mirror-packages/cran", binary.ver=binary.ver))' <<: *artifacts ## install deps alias @@ -267,9 +270,13 @@ test-win-old: tags: - saas-macos-medium-m1 before_script: - - if ! command -v R &> /dev/null || ! command -v Rscript &> /dev/null; then brew install r; fi + - curl -O $R_BIN + - sudo installer -pkg "$(ls -1t R-*-arm64.pkg | head -n 1)" -target / - *install-deps - cp $(ls -1t bus/build/data.table_*.tar.gz | head -n 1) . + script: + - R CMD check --no-manual $(ls -1t data.table_*.tar.gz | head -n 1) + - R CMD INSTALL --build $(ls -1t data.table_*.tar.gz | head -n 1) after_script: - mkdir -p bus/$CI_JOB_NAME - '[ -d data.table.Rcheck ] && mv data.table.Rcheck bus/$CI_JOB_NAME/' @@ -283,9 +290,14 @@ test-mac-rel: <<: *test-mac variables: R_VERSION: "$R_REL_VERSION" - script: - - R CMD check --no-manual $(ls -1t data.table_*.tar.gz | head -n 1) - - R CMD INSTALL --build $(ls -1t data.table_*.tar.gz | head -n 1) + R_BIN: "$R_REL_MAC_BIN" + +## R-oldrel on MacOS +test-mac-old: + <<: *test-mac + variables: + R_VERSION: "$R_OLD_VERSION" + R_BIN: "$R_OLD_MAC_BIN" ## integrate artifacts # merging package tarballs and binaries into single R repository @@ -299,7 +311,8 @@ integration: - saas-linux-medium-amd64 only: - master - needs: ["mirror-packages","build","test-lin-rel","test-lin-rel-cran","test-lin-dev-gcc-strict-cran","test-lin-dev-clang-cran","test-lin-rel-vanilla","test-lin-ancient-cran","test-win-rel","test-win-dev" ,"test-win-old"] + - macos_binaries + needs: ["mirror-packages","build","test-lin-rel","test-lin-rel-cran","test-lin-dev-gcc-strict-cran","test-lin-dev-clang-cran","test-lin-rel-vanilla","test-lin-ancient-cran","test-win-rel","test-win-dev" ,"test-win-old","test-mac-rel","test-mac-old"] script: - R --version - *install-deps ## markdown pkg not present in r-pkgdown image @@ -317,6 +330,9 @@ integration: - rm -f bus/mirror-packages/cran/bin/windows/contrib/$R_REL_VERSION/data.table_*.zip - rm -f bus/mirror-packages/cran/bin/windows/contrib/$R_DEV_VERSION/data.table_*.zip - rm -f bus/mirror-packages/cran/bin/windows/contrib/$R_OLD_VERSION/data.table_*.zip + - rm -f bus/mirror-packages/cran/bin/macosx/big-sur-arm64/contrib/$R_REL_VERSION/data.table_*.tgz + # - rm -f bus/mirror-packages/cran/bin/macosx/big-sur-arm64/contrib/$R_DEV_VERSION/data.table_*.tgz + - rm -f bus/mirror-packages/cran/bin/macosx/big-sur-arm64/contrib/$R_OLD_VERSION/data.table_*.tgz #- rm -f bus/mirror-packages/cran/bin/macosx/el-capitan/contrib/$R_REL_VERSION/data.table_*.tgz #- rm -f bus/mirror-packages/cran/bin/macosx/el-capitan/contrib/$R_DEV_VERSION/data.table_*.tgz #- rm -f bus/mirror-packages/cran/bin/macosx/el-capitan/contrib/$R_OLD_VERSION/data.table_*.tgz @@ -340,8 +356,20 @@ integration: - Rscript -e 'tools::write_PACKAGES(contrib.url("bus/integration/cran", type="win.binary", ver=Sys.getenv("R_DEV_VERSION")), type="win.binary", fields="Revision", addFiles=TRUE)' - Rscript -e 'tools::write_PACKAGES(contrib.url("bus/integration/cran", type="win.binary", ver=Sys.getenv("R_OLD_VERSION")), type="win.binary", fields="Revision", addFiles=TRUE)' #### macos mkdir cran/bin/.../contrib/... + - mkdir -p bus/integration/cran/bin/macosx/big-sur-arm64/contrib/$R_REL_VERSION/ + # - mkdir -p bus/integration/cran/bin/macosx/big-sur-arm64/contrib/$R_DEV_VERSION/ + - mkdir -p bus/integration/cran/bin/macosx/big-sur-arm64/contrib/$R_OLD_VERSION/ #### macos move binaries + - '[ -f bus/test-mac-rel/data.table_*.tgz ] && cp bus/test-mac-rel/data.table_*.tgz bus/integration/cran/bin/macosx/big-sur-arm64/contrib/$R_REL_VERSION/' + - ls -1 "bus/integration/cran/bin/macosx/big-sur-arm64/contrib/$R_REL_VERSION"/data.table_*.tgz || true + # - '[ -f bus/test-mac-dev/data.table_*.tgz ] && cp bus/test-mac-dev/data.table_*.tgz bus/integration/cran/bin/macosx/big-sur-arm64/contrib/$R_DEV_VERSION/' + # - ls -1 "bus/integration/cran/bin/macosx/big-sur-arm64/contrib/$R_DEV_VERSION"/data.table_*.tgz || true + - '[ -f bus/test-mac-old/data.table_*.tgz ] && cp bus/test-mac-old/data.table_*.tgz bus/integration/cran/bin/macosx/big-sur-arm64/contrib/$R_OLD_VERSION/' + - ls -1 "bus/integration/cran/bin/macosx/big-sur-arm64/contrib/$R_OLD_VERSION"/data.table_*.tgz || true #### macos write_PACKAGES + - Rscript -e 'tools::write_PACKAGES(contrib.url("bus/integration/cran", type="mac.binary.big-sur-arm64", ver=Sys.getenv("R_REL_VERSION")), type="mac.binary", fields="Revision", addFiles=TRUE)' + # - Rscript -e 'tools::write_PACKAGES(contrib.url("bus/integration/cran", type="mac.binary.big-sur-arm64", ver=Sys.getenv("R_DEV_VERSION")), type="mac.binary", fields="Revision", addFiles=TRUE)' + - Rscript -e 'tools::write_PACKAGES(contrib.url("bus/integration/cran", type="mac.binary.big-sur-arm64", ver=Sys.getenv("R_OLD_VERSION")), type="mac.binary", fields="Revision", addFiles=TRUE)' ## install pkg to render html - mkdir -p /tmp/opencran/library /tmp/opencran/doc/html - Rscript -e 'install.packages("data.table", lib="/tmp/opencran/library", repos=file.path("file:",normalizePath("bus/integration/cran")), INSTALL_opts="--html", quiet=TRUE)'