#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 <- NULL
+ctv.available <- NULL
+
+mirrors <- NULL
+mirrors <- c(mirrors,CRAN='http://cran.r-project.org')
+mirrors <- c(mirrors,BioC='http://www.bioconductor.org/packages/3.1')
+mirrors <- c(mirrors,Omegahat="http://www.omegahat.org/R/src/contrib")
+
+verbose<-TRUE
+debug<-FALSE
+package.filters <- c("OS_type","duplicates")
+
+for (mirror.name in names(mirrors)) {
+ mirror.url<-mirrors[mirror.name]
+ message(paste("Updating list of available R packages from ",mirror.name," [",mirror.url,"].\n",sep=""))
+ packages.retrieved <- NULL
+ if ("CRAN" == mirror.name) {
+ packages.retrieved <- available.packages(contrib.url(mirror.url),filters=package.filters)
+ print(packages.retrieved[grep("SNP",rownames(packages.retrieved)),])
+ } else if ("BioC" == mirror.name) {
+ repos <- c(
+ "bioc"
+ ,"data/annotation"
+ ,"data/experiment"
+ ,"extra"
+ )
+ for (s in repos) {
+ packages.retrieved <- rbind(
+ packages.retrieved,
+ available.packages(contrib.url(paste(mirror.url,s,sep="/")),filters=package.filters)
+ )
+ }
+ } else {
+ packages.retrieved <- available.packages(mirror.url,filters=package.filters)
+ }
+ if (verbose) message(paste("Retrieved ",nrow(packages.retrieved)," package descriptions.\n",sep=""))
+ available <- rbind(available, packages.retrieved)
+ message('updating list of available R task views...')
+ ctv.available <- rbind(ctv.available,available.views(repo=mirror.url))
+}
#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)
+dupes <- duplicated(rownames(available), fromLast=T)
+if (sum(dupes)>0) {
+ if (verbose) {
+ cat("Found ",sum(dupes)," packages with the same name in different distributions. Those are now removed.\n",sep="")
+ print(available[dupes,])
+ }
+
+ available <- available[!dupes,,drop=F]
+} else {
+ if (length(mirrors)>1) cat("All packages have different names.")
+}
+# TODO: Check if not better a dedicated tool should be called for this
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:')))
+base_pkgs <- c("base",
+ "compiler",
+ "datasets",
+ "graphics",
+ "grDevices",
+ "grid",
+ "methods",
+ "parallel",
+ "splines",
+ "stats",
+ "stats4",
+ "tcltk",
+ "tools",
+ "utils")
+# 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")
}
-if (verbose) {
+if (debug) {
cat("The following base packages were determined:\n")
print(base_pkgs)
}