X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=trunk%2FR%2Fversion.R;h=8e632493bcd2c46fa514143d8421446108ce00fe;hb=9e9b07c11abd9fabfa1800b648365692d4f2d1a2;hp=184ec2380bfa8944dc73fffcebf8d185bd361172;hpb=e48407cfb4f4911aaeb8dde94d386cc16a600822;p=cran2deb.git diff --git a/trunk/R/version.R b/trunk/R/version.R index 184ec23..8e63249 100644 --- a/trunk/R/version.R +++ b/trunk/R/version.R @@ -1,4 +1,5 @@ -version_new <- function(rver,debian_revision=1, debian_epoch=db_get_base_epoch()) { +version_new <- function(rver, debian_revision=1, debian_epoch=db_get_base_epoch(), verbose=FALSE) { + if (verbose) {cat("rver:",rver," debian_revision:",debian_revision," debian_epoch:",debian_epoch,"\n")} # generate a string representation of the Debian version of an # R version of a package pkgver = rver @@ -6,7 +7,7 @@ version_new <- function(rver,debian_revision=1, debian_epoch=db_get_base_epoch() # ``Writing R extensions'' says that the version consists of at least two # non-negative integers, separated by . or - if (!length(grep('^([0-9]+[.-])+[0-9]+$',rver))) { - fail('Not a valid R package version',rver) + fail(paste("Not a valid R package version: '",rver,"'",sep="")) } # Debian policy says that an upstream version should start with a digit and @@ -26,32 +27,34 @@ version_new <- function(rver,debian_revision=1, debian_epoch=db_get_base_epoch() # always add the '-1' Debian release; nothing is lost and rarely will R # packages be Debian packages without modification. - return(paste(pkgver,'-',debian_revision,sep='')) + return(paste(pkgver,'-',version_suffix_step,version_suffix,debian_revision,sep='')) } version_epoch <- function(pkgver) { # return the Debian epoch of a Debian package version if (!length(grep(':',pkgver))) return(0) - return(as.integer(sub('^([0-9]+):.*','\\1',pkgver))) + return(as.integer(sub('^([0-9]+):.*$','\\1',pkgver))) } # version_epoch . version_new(x,y) = id # version_epoch(version_new(x,y)) = base_epoch version_revision <- function(pkgver) { # return the Debian revision of a Debian package version - return(as.integer(sub('.*-([0-9]+)$','\\1',pkgver))) + return(as.integer(sub(paste('.*-([0-9]+',version_suffix,')?([0-9]+)$',sep=''),'\\2',pkgver))) } # version_revision . version_new(x) = id # version_revision(version_new(x)) = 1 -version_upstream <- function(pkgver) { +version_upstream <- function(pkgver, verbose=FALSE) { + if (verbose) {cat("version_upstream:"," pkgver:",pkgver,"\n")} # return the upstream version of a Debian package version - return(sub('-[0-9]+$','',sub('^[0-9]+:','',pkgver))) + return(sub('-[a-zA-Z0-9+.~]+$','',sub('^[0-9]+:','',pkgver))) } # version_upstream . version_new = id -version_update <- function(rver, prev_pkgver, prev_success) { +version_update <- function(rver, prev_pkgver, prev_success, verbose=TRUE) { + if (verbose) cat("version_update:"," rver:",rver," prev_pkgver:",prev_pkgver," prev_success:",prev_success,"\n") # return the next debian package version prev_rver <- version_upstream(prev_pkgver) if (prev_rver == rver) { @@ -73,17 +76,17 @@ version_update <- function(rver, prev_pkgver, prev_success) { )) } -new_build_version <- function(pkgname) { +new_build_version <- function(pkgname, verbose=FALSE) { + cat("new_build_version: "," pkgname:",pkgname,"\n") if (!(pkgname %in% rownames(available))) { - bundle <- r_bundle_of(pkgname) - if (is.null(bundle)) { - fail('tried to discover new version of',pkgname,'but it does not appear to be available') - } - name <- bundle + fail('tried to discover new version of',pkgname,'but it does not appear to be available') } db_ver <- db_latest_build_version(pkgname) + if (verbose) {cat("db_ver: '",db_ver,"'\n",sep="")} db_succ <- db_latest_build_status(pkgname)[[1]] + if (verbose) {cat("db_succ: '",db_succ,"'\n",sep="")} latest_r_ver <- available[pkgname,'Version'] + if (verbose) {cat("latest_r_ver: '",latest_r_ver,"'\n",sep="")} if (!is.null(db_ver)) { return(version_update(latest_r_ver, db_ver, db_succ)) }