Skip to content

Commit

Permalink
Update embedded pkgdepends
Browse files Browse the repository at this point in the history
  • Loading branch information
gaborcsardi committed Nov 21, 2023
1 parent 5f36e21 commit adea806
Show file tree
Hide file tree
Showing 25 changed files with 76 additions and 139 deletions.
2 changes: 1 addition & 1 deletion src/library/pkgdepends/DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Config/testthat/edition: 3
Encoding: UTF-8
RoxygenNote: 7.2.3
NeedsCompilation: no
Packaged: 2023-11-20 23:17:41 UTC; gaborcsardi
Packaged: 2023-11-21 21:52:53 UTC; gaborcsardi
Author: Gábor Csárdi [aut, cre],
Posit Software, PBC [cph, fnd]
Maintainer: Gábor Csárdi <[email protected]>
29 changes: 0 additions & 29 deletions src/library/pkgdepends/NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -59,35 +59,6 @@ export(sysreqs_install_plan)
export(sysreqs_is_supported)
export(sysreqs_list_system_packages)
export(sysreqs_platforms)
importFrom(callr,poll)
importFrom(callr,r_process_options)
importFrom(cli,ansi_hide_cursor)
importFrom(cli,ansi_show_cursor)
importFrom(cli,cli_alert_danger)
importFrom(cli,cli_alert_info)
importFrom(cli,cli_alert_success)
importFrom(cli,cli_alert_warning)
importFrom(cli,cli_status)
importFrom(cli,cli_status_clear)
importFrom(cli,cli_status_update)
importFrom(cli,col_blue)
importFrom(cli,get_spinner)
importFrom(cli,is_utf8_output)
importFrom(cli,qty)
importFrom(cli,style_bold)
importFrom(cli,symbol)
importFrom(cli,tree)
importFrom(desc,desc)
importFrom(desc,desc_get_deps)
importFrom(filelock,lock)
importFrom(filelock,unlock)
importFrom(jsonlite,fromJSON)
importFrom(jsonlite,toJSON)
importFrom(jsonlite,unbox)
importFrom(lpSolve,lp)
importFrom(pkgbuild,build)
importFrom(pkgbuild,pkgbuild_process)
importFrom(stats,na.omit)
importFrom(utils,modifyList)
importFrom(utils,untar)
importFrom(zip,unzip_process)
2 changes: 1 addition & 1 deletion src/library/pkgdepends/R/build.R
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ build_package <- function(path, build_args = list()) {
)
args <- modifyList(default_args, build_args)
zip_path <- system.file(package = "zip", "bin", .Platform$r_arch)
withr_with_path(zip_path, do.call(build, args))
withr_with_path(zip_path, do.call(pkgbuild::build, args))
}
29 changes: 13 additions & 16 deletions src/library/pkgdepends/R/download-progress-bar.R
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,6 @@
#' @noRd
NULL

#' @importFrom cli get_spinner cli_status qty

pkgplan__create_progress_bar <- function(what) {
bar <- new.env(parent = emptyenv())

Expand Down Expand Up @@ -136,14 +134,14 @@ pkgplan__initial_pb_message <- function(bar) {
cbt <- sum(bar$what$filesize[bar$what$cache_status %in% "hit"], na.rm = TRUE)

if (num == 0) {
cli_alert_info(c(
cli::cli_alert_info(c(
"No downloads are needed",
if (nch > 0) ", {nch} pkg{?s} ",
if (cbt > 0) "{.size ({format_bytes$pretty_bytes(cbt)})} ",
if (nch > 0) "{qty(nch)}{?is/are} cached"
if (nch > 0) "{cli::qty(nch)}{?is/are} cached"
))
} else {
cli_alert_info(c(
cli::cli_alert_info(c(
"Getting",
if (bts > 0) " {num-unk} pkg{?s} {.size ({format_bytes$pretty_bytes(bts)})}",
if (bts > 0 && unk > 0) " and",
Expand All @@ -154,7 +152,7 @@ pkgplan__initial_pb_message <- function(bar) {
))
}
if (should_show_progress_bar()) {
bar$status <- cli_status("", .auto_close = FALSE)
bar$status <-cli::cli_status("", .auto_close = FALSE)
}
}

Expand All @@ -170,7 +168,6 @@ pkgplan__initial_pb_message <- function(bar) {
#' `"done"`, and on error `"error"`.
#'
#' @noRd
#' @importFrom cli cli_alert_success cli_alert_danger

pkgplan__update_progress_bar <- function(bar, idx, event, data) {
# Record the time here, and use it in this function, so that this
Expand All @@ -189,7 +186,7 @@ pkgplan__update_progress_bar <- function(bar, idx, event, data) {
bar$what$status[idx] <- "got"
sz <- na.omit(file.size(c(data$fulltarget, data$fulltarget_tree)))[1]
if (!is.na(sz)) bar$what$filesize[idx] <- sz
cli_alert_success(c(
cli::cli_alert_success(c(
"Got {.pkg {data$package}} ",
"{.version {data$version}} ({data$platform})",
if (!is.na(sz) && bar$show_size) " {.size ({format_bytes$pretty_bytes(sz)})}"
Expand All @@ -204,13 +201,13 @@ pkgplan__update_progress_bar <- function(bar, idx, event, data) {
bar$what$current[idx] <- 0L
bar$what$need[idx] <- 0L
if (identical(data$cache_status, "miss") && data$type != "deps") {
cli_alert_success(c(
cli::cli_alert_success(c(
"Cached copy of {.pkg {data$package}} ",
"{.version {data$version}} ({data$platform}) is the latest build"
))
}
} else if (data$download_status == "Failed") {
cli_alert_danger(c(
cli::cli_alert_danger(c(
"Failed to download {.pkg {data$package}} ",
"{.version {data$version}} ({data$platform})"
))
Expand All @@ -225,7 +222,7 @@ pkgplan__update_progress_bar <- function(bar, idx, event, data) {
}

if (event == "error") {
cli_alert_danger(c(
cli::cli_alert_danger(c(
"Failed to download {.pkg {data$package}} ",
"{.version {data$version}} ({data$platform})"
))
Expand Down Expand Up @@ -273,7 +270,7 @@ pkgplan__show_progress_bar <- function(bar) {
)

bar$events <- list()
cli_status_update(bar$status, str)
cli::cli_status_update(bar$status, str)
}

calculate_rate <- function(start, now, chunks) {
Expand Down Expand Up @@ -368,7 +365,7 @@ pkgplan__done_progress_bar <- function(bar) {
end_at <- Sys.time()
dt <- format_time$pretty_dt(Sys.time() - bar$start_at)

cli_status_clear(bar$status)
cli::cli_status_clear(bar$status)
bar$status <- NULL

bts <- format_bytes$pretty_bytes(sum(bar$what$current))
Expand All @@ -379,16 +376,16 @@ pkgplan__done_progress_bar <- function(bar) {
if (sum(!bar$what$skip) == 0) {
# Print nothing, we already printed that no downloads are needed
} else if (err == 0 && dld == 0) {
cli_alert_success("No downloads needed, all packages are cached")
cli::cli_alert_success("No downloads needed, all packages are cached")
} else if (err == 0) {
cli_alert_success(
cli::cli_alert_success(
paste0(
"Downloaded {dld} package{?s} {.size ({bts})}",
if (bar$show_time) " in {.time {dt}}"
)
)
} else {
cli_alert_danger(
cli::cli_alert_danger(
"Failed to download {err} package{?s}. "
)
}
Expand Down
10 changes: 4 additions & 6 deletions src/library/pkgdepends/R/download.R
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
#' @aliases pkg_download_result
NULL

#' @importFrom cli ansi_hide_cursor ansi_show_cursor

pkgplan_download_resolution <- function(self, private) {
if (is.null(private$resolution)) self$resolve()
if (private$dirty) {
Expand All @@ -29,8 +27,8 @@ pkgplan_download_resolution <- function(self, private) {
))
}
on.exit(private$done_progress_bar(), add = TRUE)
on.exit(ansi_show_cursor(), add = TRUE)
ansi_hide_cursor()
on.exit(cli::ansi_show_cursor(), add = TRUE)
cli::ansi_hide_cursor()
synchronise(self$async_download_resolution())
}

Expand Down Expand Up @@ -62,8 +60,8 @@ pkgplan_download_solution <- function(self, private) {
))
}
on.exit(private$done_progress_bar(), add = TRUE)
on.exit(ansi_show_cursor(), add = TRUE)
ansi_hide_cursor()
on.exit(cli::ansi_show_cursor(), add = TRUE)
cli::ansi_hide_cursor()
synchronise(self$async_download_solution())
}

Expand Down
5 changes: 1 addition & 4 deletions src/library/pkgdepends/R/files.R
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@

#' @importFrom cli cli_alert_info

mkdirp <- function(dir, msg = NULL) {
s <- vlapply(dir, dir.create, recursive = TRUE, showWarnings = FALSE)
if (any(s) && !is.null(msg)) {
cli_alert_info(c(msg, ": {.path {dir[s]}}"))
cli::cli_alert_info(c(msg, ": {.path {dir[s]}}"))
}
invisible(s)
}
2 changes: 1 addition & 1 deletion src/library/pkgdepends/R/install-binary.R
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ install_extracted_binary <- function(filename, lib_cache, pkg_cache, lib,
pkg_name <- pkg$name

lockfile <- lock_cache(lib_cache, pkg_name, getOption("install.lock"))
on.exit(unlock(lockfile), add = TRUE)
on.exit(filelock::unlock(lockfile), add = TRUE)

installed_path <- file.path(lib, pkg_name)
if (file.exists(installed_path)) {
Expand Down
11 changes: 3 additions & 8 deletions src/library/pkgdepends/R/install-plan.R
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ NULL
#' @param cache Package cache to use, or `NULL`.
#' @return Information about the installation process.
#'
#' @importFrom callr poll
#' @export

install_package_plan <- function(plan, lib = .libPaths()[[1]],
Expand Down Expand Up @@ -193,13 +192,11 @@ are_we_done <- function(state) {
all(state$plan$install_done)
}

#' @importFrom callr poll

poll_workers <- function(state) {
if (length(state$workers)) {
timeout <- get_timeout(state)
procs <- lapply(state$workers, "[[", "process")
res <- poll(procs, ms = timeout)
res <- processx::poll(procs, ms = timeout)
vlapply(res, function(x) "ready" %in% x)

} else {
Expand Down Expand Up @@ -390,7 +387,7 @@ make_build_process <- function(path, pkg, tmp_dir, lib, vignettes,
## lib path in the child process.
mkdirp(tmplib <- tempfile("pkg-lib"))
withr_with_libpaths(c(tmplib, lib), action = "prefix",
pkgbuild_process$new(
pkgbuild::pkgbuild_process$new(
path, tmp_dir, binary = binary, vignettes = vignettes,
needs_compilation = needscompilation, compile_attributes = FALSE,
args = c("--no-lock", cmd_args, if (binary) sprintf("--library=%s", tmplib))
Expand Down Expand Up @@ -496,8 +493,6 @@ start_task_package_build <- function(state, task) {
state
}

#' @importFrom pkgbuild pkgbuild_process

start_task_build <- function(state, task) {
pkgidx <- task$args$pkgidx
path <- state$plan$file[pkgidx]
Expand Down Expand Up @@ -845,7 +840,7 @@ print.pkginstall_result <- function(x, ...) {
}
)

cli_alert_success(paste0(res, collapse = " "))
cli::cli_alert_success(paste0(res, collapse = " "))

invisible(x)
}
Expand Down
24 changes: 8 additions & 16 deletions src/library/pkgdepends/R/install-progress-bar.R
Original file line number Diff line number Diff line change
@@ -1,33 +1,27 @@

#' @importFrom cli symbol cli_alert_success cli_alert_danger

alert <- function(type, msg, ..., .envir = parent.frame()) {
switch (
type,
success = cli_alert_success(msg, ..., .envir = .envir),
info = cli_alert_info(msg, ..., .envir = .envir),
warning = cli_alert_warning(msg, ..., .envir = .envir),
danger = cli_alert_danger(msg, ..., .envir = .envir)
success = cli::cli_alert_success(msg, ..., .envir = .envir),
info = cli::cli_alert_info(msg, ..., .envir = .envir),
warning = cli::cli_alert_warning(msg, ..., .envir = .envir),
danger = cli::cli_alert_danger(msg, ..., .envir = .envir)
)
}

#' @importFrom cli get_spinner cli_status

create_progress_bar <- function(state) {
bar <- new.env(parent = emptyenv())
bar$spinner <- get_spinner()
bar$spinner <- cli::get_spinner()
bar$spinner_state <- 1L
if (should_show_progress_bar()) {
bar$status <- cli_status("Installing...", .auto_close = FALSE)
bar$status <- cli::cli_status("Installing...", .auto_close = FALSE)
}

bar$simple <- is_older_rstudio()

bar
}

#' @importFrom cli cli_status_update

update_progress_bar <- function(state, tick = 0) {
if (is.null(state$progress$status)) return()

Expand Down Expand Up @@ -59,7 +53,7 @@ update_progress_bar <- function(state, tick = 0) {
}

if (state$progress$simple) st <- cli::ansi_strip(st)
cli_status_update(state$progress$status, st)
cli::cli_status_update(state$progress$status, st)
}

## p1 <= p2 must hold
Expand Down Expand Up @@ -91,11 +85,9 @@ make_progress_block <- function(state, sym, done, total, prog) {
)
}

#' @importFrom cli cli_status_clear

done_progress_bar <- function(state) {
if (!is.null(state$progress$status)) {
cli_status_clear(state$progress$status)
cli::cli_status_clear(state$progress$status)
}
}

Expand Down
3 changes: 1 addition & 2 deletions src/library/pkgdepends/R/install-tar.R
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,6 @@ external_untar_process <- R6::R6Class(
#' @description
#' Uses [utils::untar()], in a background process.
#'
#' @importFrom callr r_process_options
#' @noRd

r_untar_process <- R6::R6Class(
Expand Down Expand Up @@ -176,7 +175,7 @@ r_untar_process <- R6::R6Class(
tar = tar,
post_process = post_process)

process_options <- r_process_options(stdout = stdout, stderr = stderr)
process_options <- callr::r_process_options(stdout = stdout, stderr = stderr)
process_options$func <- function(options) {
# nocov start
ret <- utils::untar(
Expand Down
2 changes: 1 addition & 1 deletion src/library/pkgdepends/R/install-utils.R
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ lock_cache <- function(cache, pkg_name, lock = TRUE) {
if (use_lock) {
lockfile <- file.path(cache, sprintf("%s.lock", pkg_name))
# TODO: timeout and fail?
my_lock <- lock(lockfile)
my_lock <- filelock::lock(lockfile)
}
my_lock
}
Expand Down
2 changes: 1 addition & 1 deletion src/library/pkgdepends/R/install-verify-binary.R
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ verify_extracted_package <- function(filename, parent_path) {
rel_dsc_file <- file.path(pkg_name, "DESCRIPTION")
dsc_file <- file.path(pkg_path, "DESCRIPTION")
dsc <- tryCatch(
desc(dsc_file),
desc::desc(dsc_file),
error = function(e) {
throw(pkg_error(
"{.path {filename}} is not a valid binary, invalid DESCRIPTION
Expand Down
5 changes: 1 addition & 4 deletions src/library/pkgdepends/R/install-zip.R
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@

#' @importFrom zip unzip_process

make_unzip_process <- function(zipfile, exdir = ".",
post_process = NULL, stdout = "|",
stderr = "2>&1", ...) {
up <- unzip_process()
up <- zip::unzip_process()
up$new(zipfile, exdir = exdir, post_process = post_process,
stdout = stdout, stderr = stderr, ...)
}
2 changes: 1 addition & 1 deletion src/library/pkgdepends/R/name-check.R
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ async_pnc_crandb_query <- function(name) {

pnc_crandb_process <- function(response) {
http_stop_for_status(response)
ans <- fromJSON(rawToChar(response$content), simplifyVector = FALSE)
ans <- jsonlite::fromJSON(rawToChar(response$content), simplifyVector = FALSE)
ret <- list(
crandb = length(ans$rows) == 0,
package = if (length(ans$rows) > 0) vcapply(ans$rows, "[[", "value")
Expand Down
2 changes: 1 addition & 1 deletion src/library/pkgdepends/R/parse-remotes.R
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ parse_query <- function(ref) {
})

if (length(bad <- unique(setdiff(keys, known_query_params)))) {
cli_alert_warning(c(
cli::cli_alert_warning(c(
"Unknown package{cli::qty(bad)} parameter{?s}: ",
"{.val {bad}} in {.val {ref}}."
))
Expand Down
Loading

0 comments on commit adea806

Please sign in to comment.