From: moeller Date: Tue, 8 Feb 2011 18:16:12 +0000 (+0000) Subject: Fixes to BASH version of exec/update, X-Git-Url: https://git.donarmstrong.com/?p=cran2deb.git;a=commitdiff_plain;h=b8576b1378774c688daec181fbbb5f89778b9b22 Fixes to BASH version of exec/update, update_cache allows for multiple mirrors. git-svn-id: svn://svn.r-forge.r-project.org/svnroot/cran2deb@342 edb9625f-4e0d-4859-8d74-9fd3b1da38cb --- diff --git a/trunk/exec/update b/trunk/exec/update index b162cc8..d02ece2 100755 --- a/trunk/exec/update +++ b/trunk/exec/update @@ -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 diff --git a/trunk/exec/update_cache b/trunk/exec/update_cache index 3864d17..b47921b 100755 --- a/trunk/exec/update_cache +++ b/trunk/exec/update_cache @@ -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 <'