summary refs log tree commit diff
path: root/pkgs/development/r-modules/generate-cran-packages.R
diff options
context:
space:
mode:
authorAdam Vogt <vogt.adam@gmail.com>2015-02-25 17:43:43 -0500
committerAdam Vogt <vogt.adam@gmail.com>2015-02-25 17:43:43 -0500
commit8365753a43f006368e2892a083d8df04debc6782 (patch)
treef166ff809f6e70f266d86c7789a2bd83e5717f15 /pkgs/development/r-modules/generate-cran-packages.R
parentdf7d984153ce8337eaf613f7942b6f0e75bfab03 (diff)
downloadnixpkgs-8365753a43f006368e2892a083d8df04debc6782.tar
nixpkgs-8365753a43f006368e2892a083d8df04debc6782.tar.gz
nixpkgs-8365753a43f006368e2892a083d8df04debc6782.tar.bz2
nixpkgs-8365753a43f006368e2892a083d8df04debc6782.tar.lz
nixpkgs-8365753a43f006368e2892a083d8df04debc6782.tar.xz
nixpkgs-8365753a43f006368e2892a083d8df04debc6782.tar.zst
nixpkgs-8365753a43f006368e2892a083d8df04debc6782.zip
let generate-cran-packages.R read checksums from cran-packages.nix
this lets "Rscript generate-cran-packages.R > cran-packages.nix"
complete much quicker, because we only have to download packages
with new versions.
Diffstat (limited to 'pkgs/development/r-modules/generate-cran-packages.R')
-rw-r--r--pkgs/development/r-modules/generate-cran-packages.R7
1 files changed, 6 insertions, 1 deletions
diff --git a/pkgs/development/r-modules/generate-cran-packages.R b/pkgs/development/r-modules/generate-cran-packages.R
index 3dea348f330..3510a2fa92c 100644
--- a/pkgs/development/r-modules/generate-cran-packages.R
+++ b/pkgs/development/r-modules/generate-cran-packages.R
@@ -3,7 +3,12 @@ library(parallel)
 cl <- makeCluster(10)
 options(repos=structure(c(CRAN="http://cran.rstudio.com/")))
 
+
+readFormatted <- as.data.table(read.table(skip=6, sep='"', text=head(readLines('cran-packages.nix'), -1)))
+
 nixPrefetch <- function(name, version) {
+  prevV <- readFormatted$V2 == name & readFormatted$V4 == version
+  if (sum(prevV) == 1) as.character(readFormatted$V6[ prevV ]) else
     system(paste0("nix-prefetch-url --type sha256 http://cran.rstudio.com/src/contrib/", name, "_", version, ".tar.gz"), intern=TRUE)
     # system(paste0("nix-hash --flat --base32 --type sha256 /nix/store/*", name, "_", version, ".tar.gz", "| head -n 1"), intern=TRUE)
 }
@@ -21,7 +26,7 @@ formatPackage <- function(name, version, sha256, depends, imports, linkingTo, kn
     paste0(attr, " = derive { name=\"", name, "\"; version=\"", version, "\"; sha256=\"", sha256, "\"; depends=[", depends, "]; };")
 }
 
-clusterExport(cl, c("nixPrefetch"))
+clusterExport(cl, c("nixPrefetch","readFormatted"))
 
 pkgs <- as.data.table(available.packages(filters=c("R_version", "OS_type", "CRAN", "duplicates")))
 pkgs <- subset(pkgs, Repository=="http://cran.rstudio.com/src/contrib")