From 4dbd96832c1d60cfe3b5174d397314f9e842be75 Mon Sep 17 00:00:00 2001 From: Iñaki Úcar Date: Jun 05 2021 17:52:58 +0000 Subject: add script to generate a build list with all R packages in Fedora --- diff --git a/pkg-build-list.R b/pkg-build-list.R new file mode 100644 index 0000000..6c7edfd --- /dev/null +++ b/pkg-build-list.R @@ -0,0 +1,33 @@ +# Generates dependency-wise batches of builds, one per line +# Author: Iñaki Úcar +# Usage: Rscript pkg-build-list.R > pkg-build-list.txt + +options(repos = BiocManager:::repositories()) + +get_build_list <- function(pkgs, cran=available.packages()) { + base <- rownames(installed.packages(priority="high")) + pkgs <- lapply(tools::package_dependencies(pkgs, db=cran), setdiff, base) + pkgs <- lapply(Filter(Negate(is.null), pkgs), intersect, names(pkgs)) + + build <- list() + while (length(pkgs)) { + x <- names(Filter(function(i) all(i %in% unlist(build)), pkgs)) + build[[length(build)+1]] <- x + pkgs <- pkgs[!names(pkgs) %in% x] + } + + build +} + +cran <- available.packages() + +pkgs <- system2( + "dnf", c("list", "available", "R-*", "--repo=fedora", "--repo=updates"), stdout=TRUE) +pkgs <- grep("^R-", pkgs, value=TRUE) +pkgs <- sapply(strsplit(pkgs, "[[:space:]]"), "[", 1) +pkgs <- gsub("R-|\\.i686|\\.x86_64|\\.noarch|-devel", "", pkgs) +pkgs <- unique(pkgs) +pkgs <- pkgs[pkgs %in% cran[,"Package"]] + +bl <- get_build_list(pkgs, cran) +cat(paste(sapply(bl, paste, collapse=" "), collapse="\n"))