| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| # Run this script AFTER the release was voted and the artifacts |
| # are moved into the final dir. This script will download the checksum |
| # files and save them to the tools/checksums directory mirroring the |
| # artifactory layout. *libs.R uses these files to validated the downloaded |
| # binaries when installing the package. |
| # |
| # Run this script from the r/ directory of the arrow repo with the version |
| # as the first argument$ Rscript tools/update-checksum.R 14.0.0 |
| |
| args <- commandArgs(TRUE) |
| VERSION <- args[1] |
| tools_root <- "" |
| |
| # Use gsed on macOS and sed otherwise |
| if (identical(unname(Sys.info()["sysname"]), "Darwin")) { |
| SED_BIN <- "gsed" |
| } else { |
| SED_BIN <- "sed" |
| } |
| |
| if (length(args) != 1) { |
| stop("Usage: Rscript tools/update-checksums.R <version>") |
| } |
| |
| tasks_yml <- "../dev/tasks/tasks.yml" |
| |
| if (!file.exists(tasks_yml)) { |
| stop("Run this script from the r/ directory of the arrow repo") |
| } |
| |
| cat("Extracting libarrow binary paths from tasks.yml\n") |
| # Get the libarrow binary paths from the tasks.yml file |
| binary_paths <- readLines(tasks_yml) |> |
| grep("r-libarrow", x = _, value = TRUE) |> |
| sub(".+(r-libarrow-.+\\.zip)", "\\1", x = _) |> |
| sub("{no_rc_r_version}", VERSION, fixed = TRUE, x = _) |> |
| sub("\\.zip", ".zip", fixed = TRUE, x = _) |
| |
| github_release_root <- "https://github.com/apache/arrow/releases/download/apache-arrow-%s/%s" |
| |
| # Get the checksum file from the artifactory |
| for (path in binary_paths) { |
| sha_path <- paste0(path, ".sha512") |
| file <- file.path("tools/checksums", sha_path) |
| dirname(file) |> dir.create(path = _, recursive = TRUE, showWarnings = FALSE) |
| |
| cat(paste0("Downloading ", sha_path, "\n")) |
| url <- sprintf(github_release_root, VERSION, sha_path) |
| download.file(url, file, quiet = TRUE, cacheOK = FALSE) |
| |
| if (grepl("windows", path)) { |
| cat(paste0("Converting ", path, " to windows style line endings\n")) |
| # UNIX style line endings cause errors with mysys2 sha512sum |
| sed_status <- system2(SED_BIN, args = c("-i", "s/\\\\r//", file)) |
| if (sed_status != 0) { |
| stop("Failed to remove \\r from windows checksum file. Exit code: ", sed_status) |
| } |
| } |
| } |
| |
| cat("Checksums updated successfully!\n") |