3 # Note: everything in the case needs to be system-independent!
8 #argv <- argv[-(1:match("--args", argv))]
10 #mirror <- 'http://cran.uk.r-project.org/'
16 mirrors <- c(mirrors,CRAN='http://cran.r-project.org')
17 #mirrors <- c(mirrors,BioC='http://www.bioconductor.org/packages/2.2')
18 mirrors <- c(mirrors,BioC='http://www.bioconductor.org/packages/2.7')
23 for (mirror.name in names(mirrors)) {
24 mirror.url<-mirrors[mirror.name]
25 message(paste("Updating list of available R packages from ",mirror.name," [",mirror.url,"].\n",sep=""))
26 packages.retrieved <- NULL
27 if ("CRAN" == mirror.name) {
28 packages.retrieved <- available.packages(contrib.url(mirror.url))
29 } else if ("BioC" == mirror.name) {
37 packages.retrieved <- rbind(
39 available.packages(contrib.url(paste(mirror.url,s,sep="/")))
43 packages.retrieved <- available.packages(mirror.url)
45 if (verbose) message(paste("Retrieved ",nrow(packages.retrieved)," package descriptions.\n",sep=""))
46 available <- rbind(available, packages.retrieved)
47 message('updating list of available R task views...')
48 ctv.available <- rbind(ctv.available,available.views(repo=mirror.url))
51 #available <- rbind(available,available.packages(contrib.url('http://www.bioconductor.org/')))
53 dupes <- duplicated(rownames(available), fromLast=T)
55 if (verbose) cat("Found ",sum(dupes)," packages with the same name in different distributions. Those are now removed.\n",sep="")
56 available <- available[!dupes,,drop=F]
58 if (length(mirrors)>1) cat("All packages have different names.")
61 # TODO: Check if not better a dedicated tool should be called for this
62 message('updating list of base R packages...')
63 base_pkgs <- c("base",
77 # readLines(pipe(paste('sudo pbuilder --execute --override-config --configfile'
78 # ,shQuote(pbuilder_config),'-- /usr/bin/R --vanilla 2>&1 >/dev/null <'
79 # ,shQuote(file.path(root,'exec/get_base_pkgs'))
82 if (any(grep("^E:",base_pkgs,value=FALSE))) {
83 cat("Cannot continue, the following error occurred:\n")
84 cat(paste(grep("^E:",base_pkgs,value=TRUE),collapse="\n"))
91 cat("The following base packages were determined:\n")
95 message('updating list of existing Debian packages...')
96 debian_pkgs <- readLines(pipe('apt-cache rdepends r-base-core | sed -e "/^ r-cran/{s/^[[:space:]]*r/r/;p}" -e d | sort -u'))
98 if (any(grep("^E:",debian_pkgs,value=FALSE))) {
99 cat("Cannot continue, the following error occurred:\n")
100 cat(paste(grep("^E:",debian_pkgs,value=TRUE),collapse="\n"))
106 cat("The following packages were found to be available:\n")
110 save(debian_pkgs, base_pkgs, available, ctv.available, file=file.path(cache_root,'cache.rda'),eval.promises=T)
112 message('synchronising database...')
113 db_update_package_versions()