blob: 250cf6175503c239ba6651d3840f2d5bb5ed280a [file] [log] [blame]
# 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")