From e83b43ad1e7ad200da928854f532f13d569df9da Mon Sep 17 00:00:00 2001 From: pat-s Date: Mon, 29 Jul 2024 17:31:08 +0200 Subject: [PATCH] catch more errors in building to harden tryCatch calls --- R/build_binaries.R | 20 ++++++++++++-------- R/upload.R | 4 ++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/R/build_binaries.R b/R/build_binaries.R index 83d0605..f4a28ad 100644 --- a/R/build_binaries.R +++ b/R/build_binaries.R @@ -29,6 +29,8 @@ build_binary_package <- function(package_name, tag = NULL, codename = NULL, # create directory structure dir_out_bin <- set_bin_path(r_minor_version, build_for_minor, local_build_root, codename) + local_bin_path <- set_bin_path(r_minor_version, build_for_minor, local_build_root = local_build_root, codename) + if (debug) { cli::cli_alert_warning("DEBUG: dir_out_bin {dir_out_bin}.") } @@ -92,17 +94,19 @@ build_binary_package <- function(package_name, tag = NULL, codename = NULL, { p() dump <- build_single_tag(x, y, dir_out_bin, local_clone_dir, platform = platform, debug = debug) - store_build_metadata(x, y, platform, error_occurred = FALSE, force = force) - cli::cli_alert_success("Successfully built package {.pkg {x}} with tag {.field {y}}.") - con <- DBI::dbConnect(RPostgres::Postgres(), - dbname = "build_metadata", host = "postgres-arm-binaries-r.devxy.io", - port = 15432, user = "arm_binaries", password = Sys.getenv("PGPASS") - ) - dbDisconnect(con) + # if for some reason an underlying error didnt' get caught in the tryCatch calls, we check again here for the existence of the binary file on disk and mark the build as failed if it is not found + tarball_name <- sprintf("%s_%s.tar.gz", x, y) + if (file.exists(sprintf("%s/%s", local_bin_path, tarball_name))) { + store_build_metadata(x, y, platform, error_occurred = FALSE, force = force) + cli::cli_alert_success("Successfully built package {.pkg {x}} with tag {.field {y}}.") + } else { + cli::cli_alert_warning("Error in building package {.pkg {x}} with tag {.field {y}}: Uncommon/unspecific error during build.") + store_build_metadata(x, y, platform, error_occurred = TRUE, force = TRUE, error = "Uncommon/unspecific error during build") + } }, error = function(e) { - cli::cli_alert_warning("Error in starting build command for package {.pkg {package_name}} with tag {.field {tag}}: {e}") + cli::cli_alert_warning("Error in building package {.pkg {package_name}} with tag {.field {tag}}: {e}") local_clone_dir_single <- sprintf("%s/%s_%s", local_clone_dir, x, y) unlink(local_clone_dir_single, force = TRUE, recursive = TRUE) # only stderr contains the important information why the build failed diff --git a/R/upload.R b/R/upload.R index 825bfb3..c0834a2 100644 --- a/R/upload.R +++ b/R/upload.R @@ -46,7 +46,7 @@ upload_single_binary_to_s3 <- function( sprintf("%s/%s", local_bin_path, tarball_name), sprintf("%s/%s", remote_bin_path, tarball_name) ) - cli::cli_alert_success("Successfully uploaded package {.pkg {x}} with tag {.field {y}}.") + cli::cli_alert_success("Successfully uploaded package {.pkg {package_name}} with tag {.field {tag}}.") cli::cli_alert("{.fun upload_single_binary_to_s3}: Deleting binary for {.pkg {package_name}} {.field {tag}} at path {.path {sprintf('%s/%s', local_bin_path, tarball_name)}}.") file.remove(sprintf("%s/%s", local_bin_path, tarball_name)) } else if (exists && force) { @@ -56,7 +56,7 @@ upload_single_binary_to_s3 <- function( sprintf("%s/%s", remote_bin_path, tarball_name), overwrite = TRUE ) - cli::cli_alert_success("Successfully uploaded package {.pkg {x}} with tag {.field {y}}.") + cli::cli_alert_success("Successfully uploaded package {.pkg {package_name}} with tag {.field {tag}}.") cli::cli_alert("{.fun upload_single_binary_to_s3}: Deleting binary for {.pkg {package_name}} {.field {tag}} at path {.path {sprintf('%s/%s', local_bin_path, tarball_name)}}.") file.remove(sprintf("%s/%s", local_bin_path, tarball_name)) } else if (exists && !force) {