]> git.donarmstrong.com Git - cran2deb.git/commitdiff
Fixes to BASH version of exec/update,
authormoeller <moeller@edb9625f-4e0d-4859-8d74-9fd3b1da38cb>
Tue, 8 Feb 2011 18:16:12 +0000 (18:16 +0000)
committermoeller <moeller@edb9625f-4e0d-4859-8d74-9fd3b1da38cb>
Tue, 8 Feb 2011 18:16:12 +0000 (18:16 +0000)
update_cache allows for multiple mirrors.

git-svn-id: svn://svn.r-forge.r-project.org/svnroot/cran2deb@342 edb9625f-4e0d-4859-8d74-9fd3b1da38cb

trunk/exec/update
trunk/exec/update_cache

index b162cc84b6a2e0d8fd709c22f0e81e2f0f776149..d02ece214fc19e4f568797a159d1cb24748e9f9a 100755 (executable)
@@ -21,11 +21,13 @@ mkdir -p /var/cache/cran2deb/results/$sys
 #update_period=10800
 update_period=108
 
-if [ ! $1 = full -o !-e /var/cache/cran2deb/cache.rda ]; then
+if [ ! $1 = full ] || [ ! -e /var/cache/cran2deb/cache.rda ]; then
     delta=$(($update_period+1))
     echo Forcing cache update
 else
-    delta=$(awk 'END{print '^`{date +%s}^-^`{stat -c '%Y' /var/cache/cran2deb/cache.rda}^'}' < /dev/null)
+    seconds_time=$(date +%s)
+    seconds_file=$(stat -c '%Y' /var/cache/cran2deb/cache.rda)
+    delta=$(($seconds_time-$seconds_file))
     echo Cache is $delta seconds out of date, auto-update after $update_period seconds.
 fi
 
@@ -33,11 +35,11 @@ if [ ! -e /var/cache/cran2deb/cache.rda ] || [ $delta -gt $update_period ]; then
     mode=create
     if [ -e /var/cache/pbuilder/base-cran2deb-$sys.tgz ]; then
         mode=update
-    ]
+    fi
     echo C: sudo pbuilder $mode --override-config --configfile /etc/cran2deb/sys/$sys/pbuilderrc
     echo "Executing sudo pbuilder $mode --override-config --configfile /etc/cran2deb/sys/$sys/pbuilderrc"
     sudo pbuilder $mode --override-config --configfile /etc/cran2deb/sys/$sys/pbuilderrc
     echo "Executing $root/exec/update_cache $root"
     $root/exec/update_cache $root
-}
+fi
 
index 3864d1727aeb0c2ad14e2a7c88acf3800f4d22b7..b47921be8c3d0561de67a57c2e23a06852de4319 100755 (executable)
@@ -8,20 +8,46 @@ library(ctv)
 #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/2.7')
+
+verbose<-TRUE
+
+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))
+       } else if ("BioC" == mirror.name) {
+               for (s in c('bioc')) {
+                       packages.retrieved <- rbind(packages.retrieved,contrib.url(available.packages(paste(mirror.url,s,sep="/"))))
+               }
+       } else {
+               packages.retrieved <- available.packages(mirror.url)
+       }
+       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="")
+       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 <'