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.12')
18 mirrors <- c(mirrors,Omegahat="http://www.omegahat.org/R/src/contrib")
22 package.filters <- c("OS_type","duplicates")
24 for (mirror.name in names(mirrors)) {
25 mirror.url<-mirrors[mirror.name]
26 message(paste("Updating list of available R packages from ",mirror.name," [",mirror.url,"].\n",sep=""))
27 packages.retrieved <- NULL
28 if ("CRAN" == mirror.name) {
29 packages.retrieved <- available.packages(contrib.url(mirror.url),filters=package.filters)
30 print(packages.retrieved[grep("SNP",rownames(packages.retrieved)),])
31 } else if ("BioC" == mirror.name) {
39 packages.retrieved <- rbind(
41 available.packages(contrib.url(paste(mirror.url,s,sep="/")),filters=package.filters)
45 packages.retrieved <- available.packages(mirror.url,filters=package.filters)
47 if (verbose) message(paste("Retrieved ",nrow(packages.retrieved)," package descriptions.\n",sep=""))
48 available <- rbind(available, packages.retrieved)
49 message('updating list of available R task views...')
50 ctv.available <- rbind(ctv.available,available.views(repo=mirror.url))
53 #available <- rbind(available,available.packages(contrib.url('http://www.bioconductor.org/')))
55 dupes <- duplicated(rownames(available), fromLast=T)
58 cat("Found ",sum(dupes)," packages with the same name in different distributions. Those are now removed.\n",sep="")
59 print(available[dupes,])
62 available <- available[!dupes,,drop=F]
64 if (length(mirrors)>1) cat("All packages have different names.")
67 # TODO: Check if not better a dedicated tool should be called for this
68 message('updating list of base R packages...')
69 base_pkgs <- c("base",
83 # readLines(pipe(paste('sudo pbuilder --execute --override-config --configfile'
84 # ,shQuote(pbuilder_config),'-- /usr/bin/R --vanilla 2>&1 >/dev/null <'
85 # ,shQuote(file.path(root,'exec/get_base_pkgs'))
88 if (any(grep("^E:",base_pkgs,value=FALSE))) {
89 cat("Cannot continue, the following error occurred:\n")
90 cat(paste(grep("^E:",base_pkgs,value=TRUE),collapse="\n"))
97 cat("The following base packages were determined:\n")
101 message('updating list of existing Debian packages...')
102 debian_pkgs <- readLines(pipe('apt-cache rdepends r-base-core | sed -e "/^ r-cran/{s/^[[:space:]]*r/r/;p}" -e d | sort -u'))
104 if (any(grep("^E:",debian_pkgs,value=FALSE))) {
105 cat("Cannot continue, the following error occurred:\n")
106 cat(paste(grep("^E:",debian_pkgs,value=TRUE),collapse="\n"))
112 cat("The following packages were found to be available:\n")
116 save(debian_pkgs, base_pkgs, available, ctv.available, file=file.path(cache_root,'cache.rda'),eval.promises=T)
118 message('synchronising database...')
119 db_update_package_versions()