[Rd] DESCRIPTION.in file causes R CMD check to fail?

Duncan Murdoch murdoch.duncan at gmail.com
Sat Jul 5 13:45:55 CEST 2014


On 05/07/2014, 1:25 AM, Greg Minshall wrote:
> hi, Duncan,
> 
> thanks for the reply, and the pointer to the XML package.
> 
>> I don't understand why configure needs access to DESCRIPTION.in. What
>> is it reading there?
> 
> actually, ./configure is setting the version number in DESCRIPTION,
> using DESCRIPTION.in as a template.  in configure.ac, i have:
> ----

Okay, I misunderstood.

> AC_INIT([image2k],[0.1])
> ----
> which says that i'm building the "image2k" package, with version 0.1.
> 
> my DESCRIPTION.in file has a line
> ----
> Version: @VERSION@
> ----
> 
> back in configure.ac, i tell autoconf to do substitutions in
> DESCRIPTION.in to create DESCRIPTION (among other files):
> ----
> AC_CONFIG_FILES([
>         DESCRIPTION
>         Makefile
>         src/Makefile
> ])
> ----
> 
> so, ./configure will copy DESCRIPTION.in to DESCRIPTION, but will
> substitute its idea of the version.  (i'm always a big fan of second
> normal form.)
> 
> i looked at XML's package.  thanks, i'm new to the autotools world, so
> it's good to be able to look at other examples, especially when used
> with R (at which i'm also not so proficient, ignorance squared).
> 
> it *looks* like my problem probably comes from some code in
> ----
> ./src/library/tools/R/check.R
> ----
> from ./src/library/tools/R/check.R:
>         ## Package sources from the R distribution are special.  They
>         ## have a 'DESCRIPTION.in' file (instead of 'DESCRIPTION'),
>         ## with Version and License fields containing '@VERSION@' for
>         ## substitution by configure.  Earlier bundles had packages
>         ## containing DESCRIPTIION.in, hence the extra check for
>         ## Makefile.in.
> 
>         is_base_pkg <- is_rec_pkg <- FALSE
>         if (file.exists(f <- file.path(pkgdir, "DESCRIPTION.in")) &&
>             file.exists(file.path(pkgdir, "Makefile.in"))) {
>             desc <- try(read.dcf(f))
>             if (inherits(desc, "try-error") || !length(desc)) {
>                 resultLog(Log, "EXISTS but not correct format")
>                 do_exit(1L)
>             }
>             desc <- desc[1L, ]
>             if (desc["Priority"] == "base") {
>                 messageLog(Log, "looks like ", sQuote(pkgname0),
>                            " is a base package")
>                 messageLog(Log, "skipping installation test")
>                 is_base_pkg <- TRUE
>                 pkgname <- desc["Package"] # should be same as pkgname0
>             }
>         }
> ----
> (i'm looking at R-3.1.0.)  XML doesn't run into this because although it
> has a DESCRIPTION.in, it does *not* have Makefile.in, so the suspect
> code isn't run.
> 
> it seems like maybe something like the below patch might fix my
> problem.  (but, it also seems like adding a "Priority: other" should,
> and indeed does, fix my problem.)
> 
> sorry if this was overly wordy.
> 
> cheers, Greg
> 
> ----
> --- orig-check.R        2014-03-29 01:15:03.000000000 +0200
> +++ new-check.R 2014-07-05 08:22:01.000000000 +0300
> @@ -4270,7 +4270,7 @@
>                  do_exit(1L)
>              }
>              desc <- desc[1L, ]
> -            if (desc["Priority"] == "base") {
> +            if ((!is.na(desc["Priority"]) && desc["Priority"] == "base")) {
>                  messageLog(Log, "looks like ", sQuote(pkgname0),
>                             " is a base package")
>                  messageLog(Log, "skipping installation test")
> ----
> 

That looks like a good fix in any case.  I'll put it in.  (It's too late
to make it into 3.1.1, but I'll try to remember to backport it to
R-patched after the release.)

Duncan Murdoch

Duncan Murdoch



More information about the R-devel mailing list