File: update-checksums.R

package info (click to toggle)
apache-arrow 23.0.1-1
  • links: PTS
  • area: main
  • in suites: sid
  • size: 76,220 kB
  • sloc: cpp: 654,608; python: 70,522; ruby: 45,964; ansic: 18,742; sh: 7,365; makefile: 669; javascript: 125; xml: 41
file content (78 lines) | stat: -rw-r--r-- 2,945 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# 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")