]> git.donarmstrong.com Git - cran2deb.git/blob - trunk/exec/update_cache
Some increased verbosity for the update cache routine.
[cran2deb.git] / trunk / exec / update_cache
1 #!/usr/bin/r -t
2
3 # Note: everything in the case needs to be system-independent!
4 library(cran2deb)
5 library(ctv)
6
7 #argv <- commandArgs()
8 #argv <- argv[-(1:match("--args", argv))]
9
10 #mirror <- 'http://cran.uk.r-project.org/'
11 mirror <- 'http://cran.r-project.org/'
12
13 verbose<-FALSE
14
15 message('updating list of available R packages...')
16 available <- available.packages(contrib.url(mirror))
17
18 #available <- rbind(available,available.packages(contrib.url('http://www.bioconductor.org/')))
19 #dupes <- duplicated(rownames(available), fromLast=T)
20 #available <- available[!dupes,]
21
22 message('updating list of available R task views...')
23 ctv.available <- available.views(repo=mirror)
24
25 message('updating list of base R packages...')
26 base_pkgs <- readLines(pipe(paste('sudo pbuilder --execute --override-config --configfile'
27                                  ,shQuote(pbuilder_config),'-- /usr/bin/R --vanilla 2>&1 >/dev/null <'
28                                  ,shQuote(file.path(root,'exec/get_base_pkgs'))
29                                  ,'| grep -v ^W:')))
30
31 if (any(grep("^E:",base_pkgs,value=FALSE))) {
32         cat("Cannot continue, the following error occurred:\n")
33         cat(paste(grep("^E:",base_pkgs,value=TRUE),collapse="\n"))
34         cat("\n")
35         q(save="no")
36 }
37
38
39 if (verbose) {
40         cat("The following base packages were determined:\n")
41         print(base_pkgs)
42 }
43
44 message('updating list of existing Debian packages...')
45 debian_pkgs <- readLines(pipe('apt-cache rdepends r-base-core | sed -e "/^  r-cran/{s/^[[:space:]]*r/r/;p}" -e d | sort -u'))
46
47 if (any(grep("^E:",debian_pkgs,value=FALSE))) {
48         cat("Cannot continue, the following error occurred:\n")
49         cat(paste(grep("^E:",debian_pkgs,value=TRUE),collapse="\n"))
50         cat("\n")
51         q(save="no")
52 }
53
54 if (verbose) {
55         cat("The following packages were found to be available:\n")
56         print(debian_pkgs)
57 }
58
59 save(debian_pkgs, base_pkgs, available, ctv.available, file=file.path(cache_root,'cache.rda'),eval.promises=T)
60
61 message('synchronising database...')
62 db_update_package_versions()