Skip to content

R 3.5.0 fails its regression test suite on Linux/x86_64

12 messages · Ricardo Wurmus, Dirk Eddelbuettel, Peter Simons +2 more

#
Hi,

I just tried to upgrade Nixpkgs to R 3.5.0, but unfortunately the new
version fails its regression test suite. We configure the build using
the flags "--without-recommended-packages", in case that's relevant. You
can see a complete build log with all relevant information at [1].
Anyway, the test failures look like this:

 | make[3]: Entering directory '/build/R-3.5.0/tests/Examples'
 | Testing examples for package 'base'
 | Testing examples for package 'tools'
 |   comparing 'tools-Ex.Rout' to 'tools-Ex.Rout.save' ... OK
 | Testing examples for package 'utils'
 | Testing examples for package 'grDevices'
 |   comparing 'grDevices-Ex.Rout' to 'grDevices-Ex.Rout.save' ... OK
 | Testing examples for package 'graphics'
 |   comparing 'graphics-Ex.Rout' to 'graphics-Ex.Rout.save' ... OK
 | Testing examples for package 'stats'
 |   comparing 'stats-Ex.Rout' to 'stats-Ex.Rout.save' ... NOTE
 |   6599c6599
 |   < Grand Mean: 291.5937
 |   ---
 |   > Grand Mean: 291.5938
 |   15124c15124
 |   < Grand Mean: 291.5937
 |   ---
 |   > Grand Mean: 291.5938
 |   17444c17444
 |   < assertCondition: caught "error"
 |   ---
 |   > assertCondition: caught 'error'
 | Testing examples for package 'datasets'
 |   comparing 'datasets-Ex.Rout' to 'datasets-Ex.Rout.save' ... OK
 | Testing examples for package 'methods'
 | Testing examples for package 'grid'
 |   comparing 'grid-Ex.Rout' to 'grid-Ex.Rout.save' ... OK
 | Testing examples for package 'splines'
 |   comparing 'splines-Ex.Rout' to 'splines-Ex.Rout.save' ... OK
 | Testing examples for package 'stats4'
 |   comparing 'stats4-Ex.Rout' to 'stats4-Ex.Rout.save' ... OK
 | Testing examples for package 'tcltk'
 | Testing examples for package 'compiler'
 | Testing examples for package 'parallel'
 | make[3]: Leaving directory '/build/R-3.5.0/tests/Examples'
 | make[2]: Leaving directory '/build/R-3.5.0/tests'
 | make[2]: Entering directory '/build/R-3.5.0/tests'
 | make[2]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
 | running strict specific tests
 | make[3]: Entering directory '/build/R-3.5.0/tests'
 | running code in 'eval-etc.R' ... OK
 |   comparing 'eval-etc.Rout' to './eval-etc.Rout.save' ...414,416c414,548
 | < Warning message:
 | < In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
 | <   there is no package called 'Matrix'
 | ---
 | > Trying some Matrix objects, too
 | >
 | > Matrix> Matrix(0, 3, 2)             # 3 by 2 matrix of zeros -> sparse
 | > 3 x 2 sparse Matrix of class "dgCMatrix"
 | >
 | > [1,] . .
 | > [2,] . .
 | > [3,] . .
 | >
 | > Matrix> Matrix(0, 3, 2, sparse=FALSE)# -> 'dense'
 | > 3 x 2 Matrix of class "dgeMatrix"
 | >      [,1] [,2]
 | > [1,]    0    0
 | > [2,]    0    0
 | > [3,]    0    0
 | >
 | > Matrix> Matrix(0, 2, 2, sparse=FALSE)# diagonal !
 | > 2 x 2 diagonal matrix of class "ddiMatrix"
 | >      [,1] [,2]
 | > [1,]    0    .
 | > [2,]    .    0
 | >
 | > Matrix> Matrix(0, 2, 2, sparse=FALSE, doDiag=FALSE)# -> dense
 | > 2 x 2 Matrix of class "dsyMatrix"
 | >      [,1] [,2]
 | > [1,]    0    0
 | > [2,]    0    0
 | >
 | > Matrix> Matrix(1:6, 3, 2)           # a 3 by 2 matrix (+ integer warning)
 | > 3 x 2 Matrix of class "dgeMatrix"
 | >      [,1] [,2]
 | > [1,]    1    4
 | > [2,]    2    5
 | > [3,]    3    6
 | >
 | > Matrix> Matrix(1:6 + 1, nrow=3)
 | > 3 x 2 Matrix of class "dgeMatrix"
 | >      [,1] [,2]
 | > [1,]    2    5
 | > [2,]    3    6
 | > [3,]    4    7
 | >
 | > Matrix> ## logical ones:
 | > Matrix> Matrix(diag(4) >  0)# -> "ldiMatrix" with diag = "U"
 | > 4 x 4 diagonal matrix of class "ldiMatrix"
 | >      [,1] [,2] [,3] [,4]
 | > [1,] TRUE    .    .    .
 | > [2,]    . TRUE    .    .
 | > [3,]    .    . TRUE    .
 | > [4,]    .    .    . TRUE
 | >
 | > Matrix> Matrix(diag(4) >  0, sparse=TRUE)# -> sparse...
 | > 4 x 4 sparse Matrix of class "lsCMatrix"
 | >
 | > [1,] | . . .
 | > [2,] . | . .
 | > [3,] . . | .
 | > [4,] . . . |
 | >
 | > Matrix> Matrix(diag(4) >= 0)# -> "lsyMatrix" (of all 'TRUE')
 | > 4 x 4 Matrix of class "lsyMatrix"
 | >      [,1] [,2] [,3] [,4]
 | > [1,] TRUE TRUE TRUE TRUE
 | > [2,] TRUE TRUE TRUE TRUE
 | > [3,] TRUE TRUE TRUE TRUE
 | > [4,] TRUE TRUE TRUE TRUE
 | >
 | > Matrix> ## triangular
 | > Matrix> l3 <- upper.tri(matrix(,3,3))
 | >
 | > Matrix> (M <- Matrix(l3))  # -> "ltCMatrix"
 | > 3 x 3 sparse Matrix of class "ltCMatrix"
 | >
 | > [1,] . | |
 | > [2,] . . |
 | > [3,] . . .
 | >
 | > Matrix> Matrix(! l3)# -> "ltrMatrix"
 | > 3 x 3 Matrix of class "ltrMatrix"
 | >      [,1]  [,2]  [,3]
 | > [1,]  TRUE     .     .
 | > [2,]  TRUE  TRUE     .
 | > [3,]  TRUE  TRUE  TRUE
 | >
 | > Matrix> as(l3, "CsparseMatrix")
 | > 3 x 3 sparse Matrix of class "lgCMatrix"
 | >
 | > [1,] . | |
 | > [2,] . . |
 | > [3,] . . .
 | >
 | > Matrix> Matrix(1:9, nrow=3,
 | > Matrix+        dimnames = list(c("a", "b", "c"), c("A", "B", "C")))
 | > 3 x 3 Matrix of class "dgeMatrix"
 | >   A B C
 | > a 1 4 7
 | > b 2 5 8
 | > c 3 6 9
 | >
 | > Matrix> (I3 <- Matrix(diag(3)))# identity, i.e., unit "diagonalMatrix"
 | > 3 x 3 diagonal matrix of class "ddiMatrix"
 | >      [,1] [,2] [,3]
 | > [1,]    1    .    .
 | > [2,]    .    1    .
 | > [3,]    .    .    1
 | >
 | > Matrix> str(I3) # note the empty 'x' slot
 | > Formal class 'ddiMatrix' [package "Matrix"] with 4 slots
 | >   ..@ diag    : chr "U"
 | >   ..@ Dim     : int [1:2] 3 3
 | >   ..@ Dimnames:List of 2
 | >   .. ..$ : NULL
 | >   .. ..$ : NULL
 | >   ..@ x       : num(0)
 | >
 | > Matrix> (A <- cbind(a=c(2,1), b=1:2))# symmetric *apart* from dimnames
 | >      a b
 | > [1,] 2 1
 | > [2,] 1 2
 | >
 | > Matrix> Matrix(A)                    # hence 'dgeMatrix'
 | > 2 x 2 Matrix of class "dgeMatrix"
 | >      a b
 | > [1,] 2 1
 | > [2,] 1 2
 | >
 | > Matrix> (As <- Matrix(A, dimnames = list(NULL,NULL)))# -> symmetric
 | > 2 x 2 Matrix of class "dsyMatrix"
 | >      [,1] [,2]
 | > [1,]    2    1
 | > [2,]    1    2
 | >
 | > Matrix> stopifnot(is(As, "symmetricMatrix"),
 | > Matrix+           is(Matrix(0, 3,3), "sparseMatrix"),
 | > Matrix+           is(Matrix(FALSE, 1,1), "sparseMatrix"))
 | 430,436c562,564
 | < A: function (x, y, ...)
 | < {
 | <     B <- function(a, b, ...) {
 | <         match.call()
 | <     }
 | <     B(x + y, ...)
 | < }
 | ---
 | > A: new("dgCMatrix", i = c(0L, 3L, 4L, 5L, 2L, 6L, 7L), p = c(0L,
 | > 0L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 6L, 7L), Dim = c(8L, 10L), Dimnames = list(
 | >     NULL, NULL), x = c(7, 21, 28, 35, 14, 42, 49), factors = list())
 | 438,444c566,589
 | < checking body(.):
 | < quote({
 | <     B <- function(a, b, ...) {
 | <         match.call()
 | <     }
 | <     B(x + y, ...)
 | < })
 | ---
 | > --=--=--=--=--
 | > A.: new("dgCMatrix", i = c(0L, 3L, 4L, 5L, 2L, 6L, 7L), p = c(0L,
 | > 0L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 6L, 7L), Dim = c(8L, 10L), Dimnames = list(
 | >     NULL, NULL), x = c(2, 21, 28, 35, 14, 42, 49), factors = list())
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | > A1: new("dgCMatrix", i = c(0L, 3L, 4L, 5L, 2L, 6L, 7L), p = c(0L,
 | > 0L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 6L, 7L), Dim = c(8L, 10L), Dimnames = list(
 | >     NULL, NULL), x = c(7, 21, 28, 35, 14, 42, 49), factors = list())
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | > AA: new("dgCMatrix", i = c(0L, 3L, 4L, 5L, 2L, 6L, 7L), p = c(0L,
 | > 0L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
 | > 7L, 7L, 7L, 7L), Dim = c(10L, 20L), Dimnames = list(NULL, NULL),
 | >     x = c(7, 21, 28, 35, 14, 42, 49), factors = list())
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | > Aa: new("dgCMatrix", i = c(0L, 3L, 4L, 5L, 2L, 6L, 7L), p = c(0L,
 | > 0L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 6L, 7L), Dim = c(8L, 10L), Dimnames = list(
 | >     NULL, NULL), x = c(9, 21, 28, 35, 14, 42, 49), factors = list())
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | > As: new("dsyMatrix", x = c(2, 1, 1, 2), Dim = c(2L, 2L), Dimnames = list(
 | >     NULL, NULL), uplo = "U", factors = list())
 | 446,448d590
 | < checking formals(.):
 | < as.pairlist(alist(x = , y = , ... = ))
 | < __ not parse()able __: hasMissObj(.) is true
 | 551a694,701
 | > D5.: new("ddiMatrix", diag = "N", Dim = c(5L, 5L), Dimnames = list(
 | >     NULL, NULL), x = c(5, 4, 3, 2, 1))
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | > D5N: new("ddiMatrix", diag = "N", Dim = c(5L, 5L), Dimnames = list(
 | >     NULL, NULL), x = c(5, 4, 3, 2, NA))
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 564a715,718
 | > I3: new("ddiMatrix", diag = "U", Dim = c(3L, 3L), Dimnames = list(
 | >     NULL, NULL), x = numeric(0))
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 588a743,747
 | > M: new("ltCMatrix", i = c(0L, 0L, 1L), p = c(0L, 0L, 1L, 3L), Dim = c(3L,
 | > 3L), Dimnames = list(NULL, NULL), x = c(TRUE, TRUE, TRUE), uplo = "U",
 | >     diag = "N")
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 612a772,776
 | > args: structure(list(i = c(1, 3, 4, 5, 6, 7, 8, 1), j = c(2, 9, 6,
 | > 7, 8, 9, 10, 2), x = c(7, 14, 21, 28, 35, 42, 49, 2)), class = "data.frame", row.names = c(NA,
 | > -8L))
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 732,733c896,901
 | < e: <environment>
 | < __ not parse()able __: environment
 | ---
 | > dn: list(c("A", "B", "C"), c("a", "b", "c", "d", "e"))
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | > e: new("ngCMatrix", i = integer(0), p = c(0L, 0L, 0L, 0L, 0L, 0L,
 | > 0L), Dim = c(4L, 6L), Dimnames = list(NULL, NULL), factors = list())
 | >  --> checking list(*): Ok
 | 844a1013,1015
 | > i: c(1, 3, 4, 5, 6, 7, 8)
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 876a1048,1050
 | > j: c(2, 9, 6, 7, 8, 9, 10)
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 886a1061,1064
 | > l3: structure(c(FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE,
 | > FALSE), .Dim = c(3L, 3L))
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 891a1070,1074
 | > m: new("dgCMatrix", i = c(2L, 0L, 1L, 2L, 0L, 1L), p = c(0L, 1L,
 | > 2L, 4L, 4L, 6L), Dim = c(3L, 5L), Dimnames = list(c("A", "B",
 | > "C"), c("a", "b", "c", "d", "e")), x = c(1, 2, 4, 3, 6, 5), factors = list())
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 944a1128,1136
 | > n: new("ngCMatrix", i = 5:0, p = c(0L, 0L, 1L, 2L, 3L, 4L, 5L, 6L
 | > ), Dim = 6:7, Dimnames = list(NULL, NULL), factors = list())
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | > nA: new("ngCMatrix", i = c(0L, 3L, 4L, 5L, 2L, 6L, 7L), p = c(0L,
 | > 0L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 6L, 7L), Dim = c(8L, 10L), Dimnames = list(
 | >     NULL, NULL), factors = list())
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 961a1154,1156
 | > perm: c(2L, 3L, 6L, 4L, 1L, 7L, 5L)
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 1010a1206,1211
 | > sA: new("dsCMatrix", i = c(0L, 3L, 4L, 5L, 2L, 6L, 7L), p = c(0L,
 | > 0L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 6L, 7L), Dim = c(10L, 10L), Dimnames = list(
 | >     NULL, NULL), x = c(7, 21, 28, 35, 14, 42, 49), uplo = "U",
 | >     factors = list())
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 1014a1216,1220
 | > sy: new("dsCMatrix", i = c(1L, 3L, 4L, 2L, 3L), p = c(0L, 0L, 0L,
 | > 0L, 1L, 3L, 4L, 5L), Dim = c(7L, 7L), Dimnames = list(NULL, NULL),
 | >     x = c(1, 4, 5, 3, 2), uplo = "U", factors = list())
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 1018a1225,1230
 | > tA: new("dtCMatrix", i = c(0L, 3L, 4L, 5L, 2L, 6L, 7L), p = c(0L,
 | > 0L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 6L, 7L), Dim = c(10L, 10L), Dimnames = list(
 | >     NULL, NULL), x = c(7, 21, 28, 35, 14, 42, 49), uplo = "U",
 | >     diag = "N")
 | >  --> checking list(*): Ok
 | > --=--=--=--=--
 | 1048c1260,1261
 | < 2: In dput(x, control = control) : deparse may be incomplete
 | ---
 | > 2: In deparse(expr, backtick = backtick, control = control, ...) :
 | >   deparse may be incomplete
 | 1051c1264,1265
 | < 4: In deparse(expr, backtick = backtick, control = control, ...) :
 | ---
 | > 4: In dput(x, control = control) : deparse may be incomplete
 | > 5: In deparse(expr, backtick = backtick, control = control, ...) :
 | 1053d1266
 | < 5: In dput(x, control = control) : deparse may be incomplete
 | 1056c1269,1270
 | < 7: In deparse(expr, backtick = backtick, control = control, ...) :
 | ---
 | > 7: In dput(x, control = control) : deparse may be incomplete
 | > 8: In deparse(expr, backtick = backtick, control = control, ...) :
 | 1058d1271
 | < 8: In dput(x, control = control) : deparse may be incomplete
 | 1061,1062d1273
 | < 10: In deparse(expr, backtick = backtick, control = control, ...) :
 | <   deparse may be incomplete
 | 1064c1275
 | < Summary of (a total of 10) warning messages:
 | ---
 | > Summary of (a total of 9) warning messages:
 | 1066c1277
 | < 4x : In deparse(expr, backtick = backtick, control = control,  ... :
 | ---
 | > 3x : In deparse(expr, backtick = backtick, control = control,  ... :
 | make[3]: *** [Makefile.common:106: eval-etc.Rout] Error 1

Now, I'm not quite sure how to interpret that output. Some of these
issues seem harmless, really, and not indicative of a serious problem in
R. Still, I reckon that it would be nice if the test suite would pass
and for all I know other people might run into the same issue as we did,
so I felt I should report it to the devs.

If there is any advice how to remedy this issues, then I'd very much
appreciate it.

Best regards,
Peter

[1] https://hydra.nixos.org/build/73154582/nixlog/3
#
On 23 April 2018 at 12:33, Peter Simons wrote:
| Hi,
| 
| I just tried to upgrade Nixpkgs to R 3.5.0, but unfortunately the new
| version fails its regression test suite. We configure the build using
| the flags "--without-recommended-packages", in case that's relevant. You
| can see a complete build log with all relevant information at [1].
| Anyway, the test failures look like this:

The flag instructs R not to build new 'recommended packages'; however the
tests you run later need them.  This release has a binary change so you
actually need to rebuild dependent packages -- in other words I think you can
expect (some of) these tests to fail until these recommended packages are
rebuilt.
* The object header layout has been changed to support merging the
      ALTREP branch. This requires re-installing packages that use
      compiled code.

Dirk
#
On 23/04/2018 6:33 AM, Peter Simons wrote:
I haven't read the full script below, but a lot of it has to do with 
tests of Matrix, which is a recommended package.  Since you built 
without it, they should be expected to fail.

You can likely get rid of most of them by building with the recommended 
packages.

Duncan Murdoch
#
Hi Dirk,
Is there a way to disable only those tests that depend on the
recommended packages?  Would it make sense to disable these tests by
default when ?--without-recommended-packages? is passed?
I?ve hit the same problem as Peter in upgrading R for Guix.  We build
the recommended packages as separate packages later, so that we can
offer a minimal R package.  At the time when R itself is built the
environment does not contain any R packages, so there is nothing to be
rebuilt.

Another problem with building the recommended packages as part of the R
build process is that it?s more difficult to make them build
bit-reproducibly.  Building them as separate packages simplifies that
and enables us to prevent e.g. the embedding of timestamps.

--
Ricardo
#
Duncan Murdoch <murdoch.duncan at gmail.com> writes:

 > You can likely get rid of most of them by building with the recommended
 > packages.

unfortunately, this is not an option for us. For various reasons, our
build process requires that we build those packages separately. Ricardo
appears to be in a similar situation and he has outlined some of those
reasons already in his message.

Anyway, it would be FAR better for us if "make check" would simply
succeed in the configuration we're using. We'd be perfectly happy to
have those tests disabled that cannot be executed without the
recommended packages available.

Is there a way to accomplish that?

Best regards,
Peter
#
On 23 April 2018 at 15:14, Peter Simons wrote:
| Duncan Murdoch <murdoch.duncan at gmail.com> writes:
| 
|  > You can likely get rid of most of them by building with the recommended
|  > packages.
| 
| unfortunately, this is not an option for us. For various reasons, our
| build process requires that we build those packages separately. Ricardo
| appears to be in a similar situation and he has outlined some of those
| reasons already in his message.
| 
| Anyway, it would be FAR better for us if "make check" would simply
| succeed in the configuration we're using. We'd be perfectly happy to
| have those tests disabled that cannot be executed without the
| recommended packages available.
| 
| Is there a way to accomplish that?

I have been doing for R for about 20 years (if you count the time I assisted
Doug Bates when he was still the maintainer) (and longer for Debian), and you
seem to follow the same model we set up years ago of splitting the content of
r-recommended (itself a virtual package) off r-base-core.

You simply need to do this in stages.

As Duncan stated, this is not a concern for R Core as they offer us a way to
test the set.

Dirk
#
Hi Dirk,

 > I have been doing for R for about 20 years (if you count the time I
 > assisted Doug Bates when he was still the maintainer) (and longer for
 > Debian), and you seem to follow the same model we set up years ago of
 > splitting the content of r-recommended (itself a virtual package) off
 > r-base-core.
 >
 > You simply need to do this in stages.

I have packaged free software for 20+ years for many different distributions,
and, in fact, I'm doing that professionally these days as an employee of one of
the largest commercial Linux distributors. So please trust my expertise when I
tell you that this is not what I want.

What I want is

  ./configure --without-recommended-packages && make && make check

to succeed without error, and I don't think that's an unreasonable expectation.

I have reported these kind of errors before in past, and back then a friendly R
developer simply took a moment to disable the offending tests when the build
was configured with this particular flag and that solved the problem. I would
hope that this is the outcome we can achieve this time, too.

If no-one wants to make those changes for whatever reason, then that's fine and
I'll just disable the test suite in NixOS to make the build succeed. I feel like
that would be a sub-optimal solution, though.

Best regards,
Peter
#
Peter,

I think we are on the same page, but there is little I can do for you here.
Ultimately you are asking R Core to do you a favor. More below.
On 23 April 2018 at 18:28, Peter Simons wrote:
| Hi Dirk,
| 
|  > I have been doing for R for about 20 years (if you count the time I
|  > assisted Doug Bates when he was still the maintainer) (and longer for
|  > Debian), and you seem to follow the same model we set up years ago of
|  > splitting the content of r-recommended (itself a virtual package) off
|  > r-base-core.
|  >
|  > You simply need to do this in stages.
| 
| I have packaged free software for 20+ years for many different distributions,
| and, in fact, I'm doing that professionally these days as an employee of one of
| the largest commercial Linux distributors. So please trust my expertise when I
| tell you that this is not what I want.
| 
| What I want is
| 
|   ./configure --without-recommended-packages && make && make check
| 
| to succeed without error, and I don't think that's an unreasonable expectation.

Sure. You "merely" have to get R Core to implement it for you.  Given that it
does not help them (they just build 'with recommended') and is not strictly
needed (it will pass in a second pass once you used the first pass to build
the recommended packages) it is a little hard to see how this 'nice to have'
item may bubble higher on anybody's priorities.  But the general rules is
that if and when well-written patches are submitted on topics where there is
agreement that a fix may help, then they are considered. So *you* could work
on this.
 
| I have reported these kind of errors before in past, and back then a friendly R
| developer simply took a moment to disable the offending tests when the build
| was configured with this particular flag and that solved the problem. I would
| hope that this is the outcome we can achieve this time, too.

R Core disabled tests in base R for you?  Hm. Are you sure?  Or are you by
chance confusing R Core with a random package maintainer (like myself) who
may have disabled a test?
 
| If no-one wants to make those changes for whatever reason, then that's fine and
| I'll just disable the test suite in NixOS to make the build succeed. I feel like
| that would be a sub-optimal solution, though.

You could comment it out now, and re-enable it once your package stack is
refilled.  Or you could make it 'make -k check' for now.

It's really under your control as it your build environment.

Dirk
#
On 23/04/2018 12:28 PM, Peter Simons wrote:
So you're getting paid to do what you do, but you want the volunteers in 
R Core to do some work for you for free.  I *do* think that's an 
unreasonable expectation.
Perhaps back then you were also a volunteer.
I agree.  You should spend some time working out a better one.

Duncan Murdoch
#
Duncan Murdoch writes:

 >> ./configure --without-recommended-packages && make && make check
 >
 > So you're getting paid to do what you do, but you want the volunteers
 > in R Core to do some work for you for free.

You are jumping to conclusions. Nobody pays me a single cent to package
R for Nix; I do that purely as a hobby.


 >> If no-one wants to make those changes for whatever reason, then that's fine and
 >> I'll just disable the test suite in NixOS to make the build succeed. I feel like
 >> that would be a sub-optimal solution, though.
 >
 > I agree. You should spend some time working out a better one.

Well, you know, every so often, I reach out to people in a free software
community to make them aware of some issue I've run into. On some
occasions, members of those communities respond in a helpful and
friendly manner that impresses me because these people are obviously
thoughtful and issue-oriented and offer nuanced insight into the problem
I've brought up, and then I feel like it would be fun to interact with
those people to learn new stuff and maybe contribute something useful.
That's the point about volunteering, right? People do it because they
*enjoy it*, not because someone tells them to.

So, you go ahead and have a very nice day, Duncan.

Best regards,
Peter
#
> Duncan Murdoch writes:
    >>> ./configure --without-recommended-packages && make && make check
    >> 
    >> So you're getting paid to do what you do, but you want the volunteers
    >> in R Core to do some work for you for free.

    > You are jumping to conclusions. Nobody pays me a single cent to package
    > R for Nix; I do that purely as a hobby.


    >>> If no-one wants to make those changes for whatever reason, then that's fine and
    >>> I'll just disable the test suite in NixOS to make the build succeed. I feel like
    >>> that would be a sub-optimal solution, though.
    >> 
    >> I agree. You should spend some time working out a better one.

    > Well, you know, every so often, I reach out to people in a free software
    > community to make them aware of some issue I've run into. On some
    > occasions, members of those communities respond in a helpful and
    > friendly manner that impresses me because these people are obviously
    > thoughtful and issue-oriented and offer nuanced insight into the problem
    > I've brought up, and then I feel like it would be fun to interact with
    > those people to learn new stuff and maybe contribute something useful.
    > That's the point about volunteering, right? People do it because they
    > *enjoy it*, not because someone tells them to.

    > So, you go ahead and have a very nice day, Duncan.

... "easy easy", ...
Let's all be friendly and not imposing on others.

I can't speak for all of R core on this, but I agree with you,
Simon, that ideally  'make check' should work also when the unusual
	 --without-recommended-packages
option is
used.  As a matter of fact, it did work in most recent versions of R. 
I will make an effort to have it work again like that in R
3.5.1,  notably because I was crucial in breaking what
previously did work (when I introduced relatively comprehensive test code for
checking the newly introduced feature of correct deparsing of S4 objects).

Note however that 3.5.1 will most probably be many weeks away.

What should also be said :

We have had a public release cycle of about one month of
alpha testing, beta testing, release-canditate, etc,
and nobody has reported that problem.
I would think good netizens depending on R would do at least one
check of installing a pre-release.
(Debian has done so).

Lastly, let me add to what was said:  You can change your
procedures to easily workaround the issue, and as Dirk has
mentioned, Debian etc have adopted a more robust procedure for
packaging both R without rec.pkg. and the rec.pkg.s (and then
bundle the two in yet another).

Best,
Martin Maechler
ETH Zurich
#
On 24/04/2018 5:50 AM, Peter Simons wrote:
"Jumping to conclusions"?  You're the one who said "I have packaged free 
software for 20+ years for many different distributions,
and, in fact, I'm doing that professionally these days as an employee of 
one of the largest commercial Linux distributors."  Perhaps it wasn't 
your intention to imply that R was one of those packages, but that seems 
like a natural reading of your post.
Your message sounded more like "you need to do this to make my job 
easier", rather than pointing out an issue with a goal of helping everyone.
You too.  Here's a free gift:  https://xkcd.com/1984/.

Duncan Murdoch