X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=trunk%2FR%2Fgetrpkg.R;h=02266c4e9634d372d546ef3d55718b18a8f15d26;hb=d4ce54fa9729743502cb3962975105cacde5feb5;hp=f60329af58e7aca9529a9217d1b652ff7e103aeb;hpb=f9487ec5bcd78eddc4046782a3942166924043b9;p=cran2deb.git diff --git a/trunk/R/getrpkg.R b/trunk/R/getrpkg.R index f60329a..02266c4 100644 --- a/trunk/R/getrpkg.R +++ b/trunk/R/getrpkg.R @@ -1,3 +1,7 @@ + +curl.maxtime<-60*60 # 60 minutes max download time (some bioconductor packages are truly big and take time) +curl.retries<-0 # No retries (connections are commonly good enough) + setup <- function() { # set up the working directory tmp <- tempfile('cran2deb') @@ -39,6 +43,7 @@ download_pkg <- function(dir, pkgname) { pkg$archive <- file.path(dir, basename(debfn)) file.copy(debfn,pkg$archive) pkg$path = file.path(dir, paste(pkg$srcname ,pkg$version ,sep='-')) + notice('using an existing debianized source tarball:',debfn) } else { # see if we have a local mirror in /srv/R use_local = FALSE @@ -60,7 +65,9 @@ download_pkg <- function(dir, pkgname) { # dodgy network connections (hello BT 'OpenWorld', bad ISP) url <- paste(available[pkgname,'Repository'], fn, sep='/') # don't log the output -- we don't care! - ret <- system(paste('curl','-o',shQuote(archive),'-m 720 --retry 5',shQuote(url))) + ret <- system(paste('curl','-o',shQuote(archive), + paste('-m',curl.maxtime,'--retry',curl.retries,sep=' '), + shQuote(url))) if (ret != 0) { fail('failed to download',url) } @@ -82,6 +89,7 @@ download_pkg <- function(dir, pkgname) { repack_pkg <- function(pkg) { # re-pack into a Debian-named archive with a Debian-named directory. + notice('repacking into debian source archive.') debpath = file.path(dirname(pkg$archive) ,paste(pkg$srcname ,pkg$version @@ -100,6 +108,10 @@ repack_pkg <- function(pkg) { ,'-type f -a ' , '! \\( -name configure -o -name cleanup \\)' ,'-exec chmod -x {} \\;') + if (file.exists(file.path(basename(pkg$path),'debian'))) { + warn('debian/ directory found in tarball! removing...') + unlink(file.path(basename(pkg$path),'debian'),recursive=TRUE) + } # tar it all back up log_system('tar -czf',shQuote(debarchive),shQuote(basename(pkg$path))) setwd(wd) @@ -111,19 +123,9 @@ repack_pkg <- function(pkg) { prepare_pkg <- function(dir, pkgname) { # download and extract an R package named pkgname - # OR the bundle containing pkgname # based loosely on library/utils/R/packages2.R::install.packages - # first a little trick; change pkgname if pkgname is contained in a bundle - if (!(pkgname %in% rownames(available))) { - bundle <- r_bundle_of(pkgname) - if (is.null(bundle)) { - fail('package',pkgname,'is unavailable') - } - pkgname <- bundle - } - # grab the archive and some metadata pkg <- download_pkg(dir, pkgname) @@ -161,10 +163,8 @@ prepare_pkg <- function(dir, pkgname) { } } - pkg$is_bundle = 'Bundle' %in% names(pkg$description[1,]) # note subtly of short circuit operators (no absorption) - if ((!pkg$is_bundle && pkg$description[1,'Package'] != pkg$name) || - ( pkg$is_bundle && pkg$description[1,'Bundle'] != pkg$name)) { + if (pkg$description[1,'Package'] != pkg$name) { fail('package name mismatch') } return(pkg)