#!/usr/bin/r -t # Note: everything in the case needs to be system-independent! library(cran2deb) library(ctv) #argv <- commandArgs() #argv <- argv[-(1:match("--args", argv))] #mirror <- 'http://cran.uk.r-project.org/' mirror <- 'http://cran.r-project.org/' verbose<-FALSE message('updating list of available R packages...') available <- available.packages(contrib.url(mirror)) #available <- rbind(available,available.packages(contrib.url('http://www.bioconductor.org/'))) #dupes <- duplicated(rownames(available), fromLast=T) #available <- available[!dupes,] message('updating list of available R task views...') ctv.available <- available.views(repo=mirror) message('updating list of base R packages...') base_pkgs <- readLines(pipe(paste('sudo pbuilder --execute --override-config --configfile' ,shQuote(pbuilder_config),'-- /usr/bin/R --vanilla 2>&1 >/dev/null <' ,shQuote(file.path(root,'exec/get_base_pkgs')) ,'| grep -v ^W:'))) if (any(grep("^E:",base_pkgs,value=FALSE))) { cat("Cannot continue, the following error occurred:\n") cat(paste(grep("^E:",base_pkgs,value=TRUE),collapse="\n")) cat("\n") q(save="no") } if (verbose) { cat("The following base packages were determined:\n") print(base_pkgs) } message('updating list of existing Debian packages...') debian_pkgs <- readLines(pipe('apt-cache rdepends r-base-core | sed -e "/^ r-cran/{s/^[[:space:]]*r/r/;p}" -e d | sort -u')) if (any(grep("^E:",debian_pkgs,value=FALSE))) { cat("Cannot continue, the following error occurred:\n") cat(paste(grep("^E:",debian_pkgs,value=TRUE),collapse="\n")) cat("\n") q(save="no") } if (verbose) { cat("The following packages were found to be available:\n") print(debian_pkgs) } save(debian_pkgs, base_pkgs, available, ctv.available, file=file.path(cache_root,'cache.rda'),eval.promises=T) message('synchronising database...') db_update_package_versions()