Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-13 Thread Dirk Eddelbuettel


Graham,

On 13 July 2023 at 18:59, Graham Inggs wrote:
| I believe the attached patch should do the trick.  It's basically
| Paul's list from message #210, plus r-cran-interval and
| r-cran-maldiquant.  I've also used a << relationship against the
| versions in unstable, and appended a tilde at the end.  I believe this
| will work better for derivatives and make backports easier.

Almost done building, will upload shortly.

Thanks, Dirk

-- 
dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org



Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-13 Thread Graham Inggs
Hi Dirk

On Thu, 13 Jul 2023 at 16:25, Dirk Eddelbuettel  wrote:
> Sounds good, and thanks for the assist! I should be able to provide a pretty
> quick turn-around.

I believe the attached patch should do the trick.  It's basically
Paul's list from message #210, plus r-cran-interval and
r-cran-maldiquant.  I've also used a << relationship against the
versions in unstable, and appended a tilde at the end.  I believe this
will work better for derivatives and make backports easier.

Regards
Graham
--- a/debian/control
+++ b/debian/control
@@ -52,31 +52,17 @@
 Provides: r-api-4.0, r-graphics-engine-${graphicsengine:Version}
 Recommends: r-recommended, r-base-dev, r-doc-html
 Suggests: elpa-ess, r-doc-info | r-doc-pdf, r-mathlib, r-base-html
-Breaks: r-bioc-graph (<< 1.62.0-1~),
-r-cran-bbmle (<< 1.0.20-5~),
-r-cran-biocmanager (<< 1.30.4+dfsg-2~),
-r-cran-caret (<< 6.0-84-2~),
-r-cran-cmprsk (<< 2.2-8-1~),
-r-cran-coin (<< 1.3-0-1~),
-r-cran-dendextend (<< 1.12.0+dfsg-1~),
-r-cran-fields (<< 9.8-3-1~),
-r-cran-filehash (<< 2.4-2-2~),
-r-cran-future (<< 1.14.0+dfsg-1~),
-r-cran-genetics (<< 1.3.8.1.2-1~),
-r-cran-haplo.stats (<< 1.7.9-4~),
-r-cran-igraph (<< 1.2.4.1-1~),
-r-cran-lava (<< 1.6.5-1~),
-r-cran-libcoin (<< 1.0-4-1~),
-r-cran-msm (<< 1.6.7-1~),
-r-cran-permute (<< 0.9-5-1~),
-r-cran-phangorn (<< 2.5.5-1~),
-r-cran-popepi (<< 0.4.7-1~),
-r-cran-recipes (<< 0.1.6-1~),
-r-cran-sp (<< 1:1.3-1-2~),
-r-cran-spam (<< 2.2-2-1~),
-r-cran-units (<< 0.6-3-1~),
-r-cran-vegan (<< 2.5-5+dfsg-1~),
-r-cran-zelig (<< 5.1.6.1-1~)
+Breaks: r-cran-cairo (<< 1.6-0-4~),
+r-cran-intervals (<< 0.15.3-1~),
+r-cran-fnn (<< 1.1.3.2-1~),
+r-cran-magick (<< 2.7.4+dfsg-2~),
+r-cran-maldiquant (<< 1.22.1-1~),
+r-cran-ps (<< 1.7.5-1~),
+r-cran-ragg (<< 1.2.5-3~),
+r-cran-svglite (<< 2.1.1-3~),
+r-cran-tibble (<< 3.2.1+dfsg-2~),
+r-cran-tikzdevice (<< 0.12.4-3~),
+r-cran-vdiffr (<< 1.0.5-3~)
 Description: GNU R core of statistical computation and graphics system
  R is a system for statistical computation and graphics.  It consists 
  of a language plus a run-time environment with graphics, a debugger, 


Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-13 Thread Dirk Eddelbuettel


Hi Graham,

On 13 July 2023 at 11:14, Graham Inggs wrote:
| On Wed, 12 Jul 2023 at 19:07, Dirk Eddelbuettel  wrote:
| > On 12 July 2023 at 19:47, Paul Gevers wrote:
| > | Yes, you only need to carry the Breaks until in the next release. So
| > | every Breaks that's present in the r-base package in bookworm can be
| > | removed from the r-base package in unstable.
| >
| > Good point and much less ugly then :)
| 
| I'll prepare a patch dropping the old and adding the new Breaks.

Sounds good, and thanks for the assist! I should be able to provide a pretty
quick turn-around.

Onwards!

Dirk

-- 
dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org



Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-13 Thread Graham Inggs
Hi Dirk

On Wed, 12 Jul 2023 at 19:07, Dirk Eddelbuettel  wrote:
> On 12 July 2023 at 19:47, Paul Gevers wrote:
> | On 12-07-2023 16:02, Dirk Eddelbuettel wrote:
> | > I can add the Breaks as a 'best of the worse alternative'. And, I 
> presume, I
> | > can remove the existing four-year breaks? [1]
> |
> | Yes, you only need to carry the Breaks until in the next release. So
> | every Breaks that's present in the r-base package in bookworm can be
> | removed from the r-base package in unstable.
>
> Good point and much less ugly then :)

I'll prepare a patch dropping the old and adding the new Breaks.

Regards
Graham



Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-12 Thread Dirk Eddelbuettel


Hi Paul,

On 12 July 2023 at 19:47, Paul Gevers wrote:
| On 12-07-2023 16:02, Dirk Eddelbuettel wrote:
| > I can add the Breaks as a 'best of the worse alternative'. And, I presume, I
| > can remove the existing four-year breaks? [1]
| 
| Yes, you only need to carry the Breaks until in the next release. So 
| every Breaks that's present in the r-base package in bookworm can be 
| removed from the r-base package in unstable.

Good point and much less ugly then :)

Dirk

-- 
dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org



Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-12 Thread Paul Gevers

Hi,

On 12-07-2023 16:02, Dirk Eddelbuettel wrote:

I can add the Breaks as a 'best of the worse alternative'. And, I presume, I
can remove the existing four-year breaks? [1]


Yes, you only need to carry the Breaks until in the next release. So 
every Breaks that's present in the r-base package in bookworm can be 
removed from the r-base package in unstable.


Paul


OpenPGP_signature
Description: OpenPGP digital signature


Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-12 Thread Dirk Eddelbuettel


Hi Paul,

On 11 July 2023 at 20:36, Paul Gevers wrote:
| On 11-07-2023 02:43, Dirk Eddelbuettel wrote:
| I'm totally on board for technical excellence, although I think we have 
| different things in mind when we say that.
| 
| In Debian, with more QA than we ever had before, we're finding a class 
| of issues that often went unnoticed years ago. One of these things is

Of course I am not against testing auto-upgrades. I imagine nobody is.

What I am not happy about is that we fell into a hole we would not need to be
in, ideally.  Please hear me out on this:

 - R has an annual release cycle at the end of April
 - During that cycle the 'next' release (in VCS) is referred to as r-devel.
 - CRAN checks all packages at all uploads, as well as periodically, against
   r-devel.
 - When a change is needed because something would break once r-devel becomes
   'r-release' they contact the package author and request the change, this
   is a hard requirement and non-compliant package are thrown off CRAN. No
 - breakage allowed!
 - What I showed with maldiquant was that its upstream made the change in
   March still well before the R 4.3.0 release requiring it
 - So we could have (we had the freeze, more below) had the package which
   would have passed both 'r-release' then and 'r-devel then' (which is
   'r-release now') and everything would pass. Even under our tests.

That is an ideal I would really like us to move towards with the CRAN
packages in Debian. As CRAN makes it so easy for us to 'always build / build
@HEAD' we really should take the fullest advantage of it.

So I typically roll up my packages the day or week of a CRAN change. (And
maintain 2 x 21k binaries off CRAN in r2u, but that is a different story.)
As it happens, not everybody does, sometimes we have freezes, and other
things happen. Also the number of CRAN packages increases of course and the
net-net of that is that we then have to spend precious manual time picking up
the pieces.

Clearly not ideal, but better than having installation bugs.
 
| that partial upgrades can leave you in a bad state. So more and more we 
| see that packages "have to" add Breaks to tell apt that when you want to 
| upgrade package X, you also have to upgrade package Y if you happen to 
| have that installed. As package Y can not tell that, package X has to 
| add the Breaks on the broken version of Y. As an example, see the list 
| of Breaks in libc6 [1]. While partial upgrades aren't officially

Thanks for that. An impressively long list!

| supported, we rely on them nevertheless (even if only for QA (piuparts, 
| autopkgtest)), and as a Release Team member I consider that class of 
| fixes technical excellence: ensuring as best as we can that the user 
| that upgrades a package keeps a working system.

Yes.
 
| While a rebuild of everything combined with bumping the "api" would 
| achieve that, I'm much more in favor of targeted Breaks, like we have 
| been discussing here. It's typically more work, but it's more correct.

Fully agreed.

| For the future, with the recent change in dh-r, r-base will be much less 
| impacted by this "problem" as the new uploads of reverse dependencies 
| can migrate *before* r-base, and hence this class of issues will

I don't think so. The recent change helps with the (approximately a handful
or two CRAN packages) setting the graphics engine check (out of a total of
maybe 1300 CRAN/BioC packages at Debian leaving the many others unaffected).

| disappear once that happens (autopkgtest failures are retried after a 
| day). So unless somebody investigates the issues in time, the retry will

We will get the same breakage next time will CRAN assumes (and ensures !!)
everything is current at HEAD, we usually have slippage for various reasons
so in practice I fear ... here we are and remain.

| pass after the migration and the issue will no longer block r-base. I 
| can live with that, but I find it a shame nevertheless.

Yep. We should aim to have 'less shame, more technical excellence'. 
 
| So, what do you say: technical excellence and you add the Breaks? Or we 
| let this slip in? I prefer the former, I can live with the latter.

I can add the Breaks as a 'best of the worse alternative'. And, I presume, I
can remove the existing four-year breaks? [1]

Cheers,  Dirk

[1] 
edd@rob:~/deb/r-base(master)$ git blame debian/control | grep -A24 Breaks
52de7d776d (Dirk Eddelbuettel 2019-08-08 19:11:55 -0500  55) Breaks: 
r-bioc-graph (<< 1.62.0-1~),
52de7d776d (Dirk Eddelbuettel 2019-08-08 19:11:55 -0500  56) 
r-cran-bbmle (<< 1.0.20-5~),
52de7d776d (Dirk Eddelbuettel 2019-08-08 19:11:55 -0500  57) 
r-cran-biocmanager (<< 1.30.4+dfsg-2~),
52de7d776d (Dirk Eddelbuettel 2019-08-08 19:11:55 -0500  58) 
r-cran-caret (<< 6.0-84-2~),
52de7d776d (Dirk Eddelbuettel 2019-08-08 19:11:55 -0500  59) 
r-cran-cmprsk (<< 2.2-8-1~),
52de7d776d (Dirk Eddelbuettel 2019-08-08 19:11:55 -0500  60) 
r-cran-coin (<< 

Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-11 Thread Paul Gevers

Hi Dirk,

On 11-07-2023 02:43, Dirk Eddelbuettel wrote:

I still have hopes that we can let technical excellence rule and not require
blunt instruments such as forced recompilation.


I'm totally on board for technical excellence, although I think we have 
different things in mind when we say that.


In Debian, with more QA than we ever had before, we're finding a class 
of issues that often went unnoticed years ago. One of these things is 
that partial upgrades can leave you in a bad state. So more and more we 
see that packages "have to" add Breaks to tell apt that when you want to 
upgrade package X, you also have to upgrade package Y if you happen to 
have that installed. As package Y can not tell that, package X has to 
add the Breaks on the broken version of Y. As an example, see the list 
of Breaks in libc6 [1]. While partial upgrades aren't officially 
supported, we rely on them nevertheless (even if only for QA (piuparts, 
autopkgtest)), and as a Release Team member I consider that class of 
fixes technical excellence: ensuring as best as we can that the user 
that upgrades a package keeps a working system.


While a rebuild of everything combined with bumping the "api" would 
achieve that, I'm much more in favor of targeted Breaks, like we have 
been discussing here. It's typically more work, but it's more correct.


For the future, with the recent change in dh-r, r-base will be much less 
impacted by this "problem" as the new uploads of reverse dependencies 
can migrate *before* r-base, and hence this class of issues will 
disappear once that happens (autopkgtest failures are retried after a 
day). So unless somebody investigates the issues in time, the retry will 
pass after the migration and the issue will no longer block r-base. I 
can live with that, but I find it a shame nevertheless.


So, what do you say: technical excellence and you add the Breaks? Or we 
let this slip in? I prefer the former, I can live with the latter.


Paul

[1] https://tracker.debian.org/media/packages/g/glibc/control-2.37-5


OpenPGP_signature
Description: OpenPGP digital signature


Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-10 Thread Dirk Eddelbuettel


On 10 July 2023 at 19:43, Dirk Eddelbuettel wrote:
| Someone simply didn't update our Debian package, so it lacks this change and
| fingers point at r-base when the fault, if there is one, is to let our
| package slip behind a compilation and code standard established at CRAN for
| the R 4.3.0 relese in April.
| 
| I still have hopes that we can let technical excellence rule and not require
| blunt instruments such as forced recompilation.
| 
| Because with slips like this, even forcing recompilation of over 1000+
| sources packages times 10+ architectures (for binary-any) will not help
| against stale code, and hence mismatched expectations in the language engine
| (r-base) and its client packages. 

I should have double-checked. 1.22.1-1 is in unstable, so that is good, and
hence works with R 4.3.[01].  So what tripped me up is the (known, and
expected, if "you know") failure in the (hence not all that informative)
autopkgtest of trying R 4.3.1 with the outdated maldiquant 1.22 (not 1.22.1).

I am not versed well-enough in the mechanics of release details. If the only
way to get r-base into testing consists of having a Breaks for
r-cran-maldiquant (<< 1.22.1) then I guess that is what we need to do.

Dirk

-- 
dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org



Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-10 Thread Dirk Eddelbuettel


Paul,

Here is a case in point from looking at the current excluses list (which is
by now indeed a little shorter).

One package that jumps out is r-cran-maldiquant. We are at version 1.22, with
Debian build 1.22-1.

But one second at the CRAN site and the page for the package shows that it is
upstream at 1.22.1, since March, with a sole entry in NEWS being

  CHANGES IN MALDIquant VERSION 1.22.1 [2023-03-20]:
  --

  * Use symbols instead of names in `.Call` for faster lookup of C functions.

So there it is.

Someone simply didn't update our Debian package, so it lacks this change and
fingers point at r-base when the fault, if there is one, is to let our
package slip behind a compilation and code standard established at CRAN for
the R 4.3.0 relese in April.

I still have hopes that we can let technical excellence rule and not require
blunt instruments such as forced recompilation.

Because with slips like this, even forcing recompilation of over 1000+
sources packages times 10+ architectures (for binary-any) will not help
against stale code, and hence mismatched expectations in the language engine
(r-base) and its client packages. 

Best,  Dirk


-- 
dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org



Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-10 Thread Paul Gevers

Hi Dirk,

On 09-07-2023 21:09, Dirk Eddelbuettel wrote:

So this is where R 4.3.[01] will possibly break with some older packages.
But the fix is simple because when R 4.3.0 came out all packages at CRAN
complied. We need to have current packages that correspond to the R 4.3.0
standard.

(If one were super picky one could call this an ABI/API change and reason for
forcing _all_ packages to be rebuild. I never advocated for that but I am
getting tired of this process. But we need to throw that bomb at some point
just say 'fsck it' and rebuild _all_ packages. Feels like overkill but so is
wasting weeks on this.


Reading this a second time, I think your proposal is to acknowledge that 
r-base sometimes introduces unanticipated changes, and if we want to be 
on the safe side, we should rebuild everything when the minor version 
bumps. I guess that's more or less (I'm not sure how different r is in 
that respect) what other interpretation based languages like python, 
ruby, php and perl are doing too. r-base already has a "handle" for 
that: r-api-*. We *could* decide to just bump that on every minor bump 
of r-base and that would mean a transition every time that happens 
(mostly like those other languages except ruby, python and php also have 
a "defaults" package to explicitly switch from one version to the next), 
but at least our tools would help there. Apart from the potential 
overkill, the major (current) drawback is that for arch:all binaries, we 
still need source-full uploads as binNMU's don't work for them.


Is that what you are proposing? (For next time maybe?)

Paul


OpenPGP_signature
Description: OpenPGP digital signature


Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-09 Thread Paul Gevers

Hi,

On 09-07-2023 21:09, Dirk Eddelbuettel wrote:

| I don't understand this then. For several packages we're seeing failures
| in testing even if we only use r-base from unstable and everything else
| from testing to run the test. They pass with a rebuild r-cran-fnn and/or
| a rebuild and updated r-cran-ps, and/or r-cran-tibble. (Sorry, in my
| previous message I think I added r-cran-dplyr by mistake, misremembered).

It would be useful to break this down into concrete reproducible examples.


Several in the set that I explicitly tested:
r-cran-stars (needs r-cran-tibble and r-cran-interval)
r-cran-spacetime (needs r-cran-interval)
r-cran-uwot (needs r-cran-fnn)
r-cran-xopen (needs r-cran-ps)


So this is where R 4.3.[01] will possibly break with some older packages.
But the fix is simple because when R 4.3.0 came out all packages at CRAN
complied. We need to have current packages that correspond to the R 4.3.0
standard.


And Andreas already ensured (nearly) everything is rebuild by now, so 
that part is done. To be clear, I think I understand it when you say 
this is not caused by r-base, but rather by those packages that need 
rebuilding with the new r-base. However, to ensure those packages are 
upgraded alongside r-base, r-base needs to force that. And that's why 
there is the Breaks.


I think the list is now:
r-cran-cairo (<= 1.6-0-1)
r-cran-fnn (<= 1.1.3.1-1)
r-cran-magick (<= 2.7.3+dfsg-3)
r-cran-ps (<= 1.7.2-1)
r-cran-ragg (<= 1.2.5-1)
r-cran-svglite (<= 2.1.1-1)
r-cran-tibble (<= 3.1.8+dfsg-1)
r-cran-tikzdevice (<= 0.12.4-1)
r-cran-vdiffr (<= 1.0.5-1)


they built with. My point is that the accept-vs-break comes from the package,
not from R.)


Sure, but the package in testing and stable can't (easily) tell that 
anymore in their relationships as they are already shipped, so packages 
moving into testing should solve it. I think only r-base is in the 
position to add the right Breaks.


Paul


OpenPGP_signature
Description: OpenPGP digital signature


Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-09 Thread Dirk Eddelbuettel


Hi Paul,

On 9 July 2023 at 20:11, Paul Gevers wrote:
| On 09-07-2023 18:41, Dirk Eddelbuettel wrote:
| > On 9 July 2023 at 17:40, Paul Gevers wrote:
| > | Did we already discuss that r-cran-ps also seems to be impacted by the
| > | r-base change of the symbols thingy, as can be seen in r-cran-xopen [1].
| > 
| > Correct me if I am wrong but the "symbols thingy" was not a change in R 
4.2.*
| > to R 4.3.*. It was a change by some packages opting into different behavior.
| 
| I don't understand this then. For several packages we're seeing failures 
| in testing even if we only use r-base from unstable and everything else 
| from testing to run the test. They pass with a rebuild r-cran-fnn and/or 
| a rebuild and updated r-cran-ps, and/or r-cran-tibble. (Sorry, in my 
| previous message I think I added r-cran-dplyr by mistake, misremembered).

It would be useful to break this down into concrete reproducible examples.

| > |   33s  10. ps:::not_null(.Call("psll_connections", p))
| > 
| > Tis would be a bug in r-cran-ps and I think a Breaks may be warranted.
| 
| Ok, let's remember this.
| 
| > Given
| > that ps always had 'native symbols', maybe testthat changed?
| 
| But I think (I would need to check for the autopkgtest fallback) in none 
| of the tests, the version of testthat in testing changed between passing 
| and failing tests. Would testthat embed something during the build of 
| the binaries (from the name, I would assume not)?

I don't think it would do anything _explicit_.

I think what we are seeing is simply 'fragility from some packages with
larger tails'. If you install 'testthat' (presumably just to run tests) you
end up with with 30+ packages loaded (without considering Suggests:). It is
similar with other 'tidyverse' packages (dplyr, tibble, vctrs, ...) are all
part of that.
 
| > | Same for r-cran-fnn, which impacts r-cran-uwof [2].

I just looked at FNN, it is very narrow package at its core, it gets a bit of
tail via the Suggests of chemometrics.

| > | I think what we should do is add a versioned Breaks in r-base on
| > | , r-cran-ps, r-cran-tibble,
| > | r-cran-dplyr, r-cran-fnn. I think that's the right thing to do for
| > 
| > I think it would be best to work out to corresponding package pairings and
| > apply the Breaks to them. If we can.
| 
| Sure, lets add the Breaks to the place where it belongs.
| 
| > For spacetime and stars I suspect (based on past experience) possible
| > interaction from the underlying graphics libraries.
| 
| Good to hear, didn't check yet, but will shortly (geospatial).

It's a complex block. spacetime is one of the older ones using 'sp' (and then
'raster' via Suggests), 'stars' is newer using 'sf'. Sometimes these prefer /
work better with a consistent rebuild.
 
| > If I am not mistaken all of these were already in the Excuses list before we
| > made addition of the r-graphics-engine-* tag (which was taken care of for R
| > 4.3.* already, having it may help if another change happens like that).
| 
| Sure, I'd hope the r-graphics-engine-* Provides only reduced issue, so 
| I'm currently considering them to be different. But I might be proven 
| wrong easily.

I don't think it had a net effect this.  The 
| 
| > Unfortunately I find
| > the reports a little hard to read and am hence not very efficient at
| > pinpointing underlying causes. Above you pointed eg at [2] for uwot, I see 
no
| > error in there :-/
| 
| Well, that log has two tests. The first second one passes, the first one 
| has:
|   51s > library(testthat)
|   51s > library(uwot)
|   51s Loading required package: Matrix
|   53s >
|   53s > test_check("uwot")
|   53s Error in FNN::get.knn(X, k) : DLL requires the use of native symbols
|   53s Calls: test_check ... eval -> create_data -> find_nn -> FNN_nn -> 
| 
|   53s Execution halted

But uwot itself does not force symbols:

  https://github.com/jlmelville/uwot/blob/master/src/RcppExports.cpp#L228-L231

and I mentioned, using just those two lines in common. So the forceSymbols
comes from somewhere else.

Ok, I rechecked.  R 4.3.0 has this

* Attempting to use a character string naming a foreign function
  entry point in a foreign function call in a package will now
  signal an error if the packages has called R_forceSymbols to
  specify that symbols must be used.

It used to _ignore_ the combinatation of calling R_forceSymbols _and_ use of
non-symbols / quoted identifiers.  Now it errors: if you have R_forceSymbols
each .Call() will require symbols (not strings).

So this is where R 4.3.[01] will possibly break with some older packages.
But the fix is simple because when R 4.3.0 came out all packages at CRAN
complied. We need to have current packages that correspond to the R 4.3.0
standard.

(If one were super picky one could call this an ABI/API change and reason for
forcing _all_ packages to be rebuild. I never advocated for that but I am
getting tired of this process. But we need to throw that bomb at some point
just 

Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-09 Thread Paul Gevers

Hi Dirk,

Thanks.

On 09-07-2023 18:41, Dirk Eddelbuettel wrote:

On 9 July 2023 at 17:40, Paul Gevers wrote:
| Did we already discuss that r-cran-ps also seems to be impacted by the
| r-base change of the symbols thingy, as can be seen in r-cran-xopen [1].

Correct me if I am wrong but the "symbols thingy" was not a change in R 4.2.*
to R 4.3.*. It was a change by some packages opting into different behavior.


I don't understand this then. For several packages we're seeing failures 
in testing even if we only use r-base from unstable and everything else 
from testing to run the test. They pass with a rebuild r-cran-fnn and/or 
a rebuild and updated r-cran-ps, and/or r-cran-tibble. (Sorry, in my 
previous message I think I added r-cran-dplyr by mistake, misremembered).



|   33s  10. ps:::not_null(.Call("psll_connections", p))

Tis would be a bug in r-cran-ps and I think a Breaks may be warranted.


Ok, let's remember this.


Given
that ps always had 'native symbols', maybe testthat changed?


But I think (I would need to check for the autopkgtest fallback) in none 
of the tests, the version of testthat in testing changed between passing 
and failing tests. Would testthat embed something during the build of 
the binaries (from the name, I would assume not)?



| Same for r-cran-fnn, which impacts r-cran-uwof [2].
|
| I think what we should do is add a versioned Breaks in r-base on
| , r-cran-ps, r-cran-tibble,
| r-cran-dplyr, r-cran-fnn. I think that's the right thing to do for

I think it would be best to work out to corresponding package pairings and
apply the Breaks to them. If we can.


Sure, lets add the Breaks to the place where it belongs.


For spacetime and stars I suspect (based on past experience) possible
interaction from the underlying graphics libraries.


Good to hear, didn't check yet, but will shortly (geospatial).


If I am not mistaken all of these were already in the Excuses list before we
made addition of the r-graphics-engine-* tag (which was taken care of for R
4.3.* already, having it may help if another change happens like that).


Sure, I'd hope the r-graphics-engine-* Provides only reduced issue, so 
I'm currently considering them to be different. But I might be proven 
wrong easily.



Unfortunately I find
the reports a little hard to read and am hence not very efficient at
pinpointing underlying causes. Above you pointed eg at [2] for uwot, I see no
error in there :-/


Well, that log has two tests. The first second one passes, the first one 
has:

 51s > library(testthat)
 51s > library(uwot)
 51s Loading required package: Matrix
 53s >
 53s > test_check("uwot")
 53s Error in FNN::get.knn(X, k) : DLL requires the use of native symbols
 53s Calls: test_check ... eval -> create_data -> find_nn -> FNN_nn -> 


 53s Execution halted


Obviously, I too want my package r-base in testing and I will help. But I
feel that pinning a large Breaks list on it seems a little inefficient /
unfair if the package was not causing the change. We can do if there is (as
we r-graphics-engine-*) an overwhelming feel "that we must".


I want the Breaks in the right location. If we locate a more logical 
location than r-base, that's where it should go. At least the packages 
involved in the r-graphics-engine would do nice, as it's really the 
change in r-base that broke them (will not be needed anymore after the 
release of trixie as now we have the Provides): r-cran-cairo, 
r-cran-magick, r-cran-ragg, r-cran-svglite, r-cran-tikzdevice and 
r-cran-vdiffr.


Paul


OpenPGP_signature
Description: OpenPGP digital signature


Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-09 Thread Dirk Eddelbuettel


On 9 July 2023 at 11:41, Dirk Eddelbuettel wrote:
| For spacetime and stars I suspect (based on past experience) possible
| interaction from the underlying graphics libraries.

Absent-minded typing error: "geospatial", of course. Not "graphics". 

Dirk

-- 
dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org



Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-09 Thread Dirk Eddelbuettel


Paul,

On 9 July 2023 at 17:40, Paul Gevers wrote:
| Did we already discuss that r-cran-ps also seems to be impacted by the 
| r-base change of the symbols thingy, as can be seen in r-cran-xopen [1].

Correct me if I am wrong but the "symbols thingy" was not a change in R 4.2.*
to R 4.3.*. It was a change by some packages opting into different behavior.

| In unstable r-cran-xopen works. If I take r-cran-ps, r-cran-xopen and 
| r-base from unstable and test in testing, r-cran-xopen works. If I only 
| take r-base and r-cran-ps from unstable and test in testing, 
| r-cran-xopen works. Can somebody with R understanding confirm?
| 
|   33s Error in `not_null(.Call("psll_connections", p))`: DLL requires 
| the use of native symbols
|   33s Backtrace:
|   33s   1. testthat::test_that(...)
|   33sat test.R:4:0
|   33s   2. testthat:::test_code(desc, code, env = parent.frame(), 
| reporter = reporter)
|   33s   3. reporter$start_test(context = reporter$.context, test = test)
|   33s   4. testthat:::o_apply(self$reporters, "start_test", context, test)
|   33s   5. base::lapply(objects, f)
|   33s   6. testthat (local) FUN(X[[i]], ...)
|   33s   7. x$start_test(...)
|   33s   8. ps::ps_connections(ps_handle())
|   33s   9. ps:::psl_connections(p)
|   33s  10. ps:::not_null(.Call("psll_connections", p))

Tis would be a bug in r-cran-ps and I think a Breaks may be warranted.  We
are apparently between version 1.7.2 and 1.7.5 of package (r-cran-)ps but I
see no smoking gun in https://github.com/r-lib/ps/blob/main/NEWS.md that
would have caused this.

Looking further, `git blame` indicates that the package had
`registation=TRUE` for five years / all its existence, see line 2 here
  
https://github.com/r-lib/ps/blame/357f9c01f5db95b67ce9e230282391bc835afca4/R/ps.R

It also used 'forceSymbols' for the same five years (lines 99 to 101 here
  
https://github.com/r-lib/ps/blame/357f9c01f5db95b67ce9e230282391bc835afca4/src/init.c

So I think the issue here may not be coming from ps. I has not changed how it
refers to its symbols.  Same R API, same usage.

As the last entry here is into the (unexported) ps:::not_null we can look
into it. It just indexes with map_lgl which is a local function (from R/utils)
and calls psll_connection, a local compiled function in the package.  Given
that ps always had 'native symbols', maybe testthat changed?

However, it does not force symbols :-/  Lines 20 and 21 use the two required
initialization but not the optional symbol forcing that eg ps has. 
  https://github.com/r-lib/testthat/blob/main/src/init.c

So I got nothing here. Cause is unclear to me.

| Same for r-cran-fnn, which impacts r-cran-uwof [2].
| 
| I think what we should do is add a versioned Breaks in r-base on 
| , r-cran-ps, r-cran-tibble, 
| r-cran-dplyr, r-cran-fnn. I think that's the right thing to do for 

I think it would be best to work out to corresponding package pairings and
apply the Breaks to them. If we can.

| bookworm to trixie upgrades (and current trixie to trixie with the new 
| r-base). Has anyone see other packages throwing that "DLL requires the 
| use of native symbols" error? I spotted the ones below [3, 4, 5, 6], but 
| I haven't identified which package brings in the issue. I first thought 
| it would be from the package itself, but for some (r-cran-spacetime and 
| r-cran-stars) their versions in unstable fail their own testsuite in

For spacetime and stars I suspect (based on past experience) possible
interaction from the underlying graphics libraries.

| testing. Would it hint at the same problem for the packages, or just for 
| their tests? I suspect the former, then they should also need to be 
| added to the Breaks list.
| 
| Paul
| 
| [1] 
| 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-xopen/35575366/log.gz
| [2] 
| 
https://ci.debian.net/data/autopkgtest/testing/i386/r/r-cran-uwot/35590669/log.gz
| [3] 
| 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-intervals/35575046/log.gz
| [4] 
| 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-maldiquant/35575320/log.gz
| [5] 
| 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-spacetime/35575371/log.gz
| [6] 
| 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-stars/35583884/log.gz

If I am not mistaken all of these were already in the Excuses list before we
made addition of the r-graphics-engine-* tag (which was taken care of for R
4.3.* already, having it may help if another change happens like that).

So it short, the vast majority of R packages is now fine.  A persistent
subset is not under the testing regime of autopkgtest.  Unfortunately I find
the reports a little hard to read and am hence not very efficient at
pinpointing underlying causes. Above you pointed eg at [2] for uwot, I see no
error in there :-/


Obviously, I too want my package r-base in testing and I will help. But I
feel that pinning a large Breaks list on it seems a little inefficient /
unfair if 

Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-09 Thread Paul Gevers

Hi,

On 09-07-2023 16:20, Andreas Tille wrote:

I'm working my through the list and the ppc64el ci workers have a bit of
backlog; we're getting somewhere, but I'm think I'm still also seeing
different failure modes than the graphics engine, tibble and dplyr.


I admit the only chance I personally see to clarify this question is to
open an issue at the tibble git repository[1].  May be we also need
something like an r-cran-tibble-api?


Did we already discuss that r-cran-ps also seems to be impacted by the 
r-base change of the symbols thingy, as can be seen in r-cran-xopen [1]. 
In unstable r-cran-xopen works. If I take r-cran-ps, r-cran-xopen and 
r-base from unstable and test in testing, r-cran-xopen works. If I only 
take r-base and r-cran-ps from unstable and test in testing, 
r-cran-xopen works. Can somebody with R understanding confirm?


 33s Error in `not_null(.Call("psll_connections", p))`: DLL requires 
the use of native symbols

 33s Backtrace:
 33s   1. testthat::test_that(...)
 33sat test.R:4:0
 33s   2. testthat:::test_code(desc, code, env = parent.frame(), 
reporter = reporter)

 33s   3. reporter$start_test(context = reporter$.context, test = test)
 33s   4. testthat:::o_apply(self$reporters, "start_test", context, test)
 33s   5. base::lapply(objects, f)
 33s   6. testthat (local) FUN(X[[i]], ...)
 33s   7. x$start_test(...)
 33s   8. ps::ps_connections(ps_handle())
 33s   9. ps:::psl_connections(p)
 33s  10. ps:::not_null(.Call("psll_connections", p))

Same for r-cran-fnn, which impacts r-cran-uwof [2].

I think what we should do is add a versioned Breaks in r-base on 
, r-cran-ps, r-cran-tibble, 
r-cran-dplyr, r-cran-fnn. I think that's the right thing to do for 
bookworm to trixie upgrades (and current trixie to trixie with the new 
r-base). Has anyone see other packages throwing that "DLL requires the 
use of native symbols" error? I spotted the ones below [3, 4, 5, 6], but 
I haven't identified which package brings in the issue. I first thought 
it would be from the package itself, but for some (r-cran-spacetime and 
r-cran-stars) their versions in unstable fail their own testsuite in 
testing. Would it hint at the same problem for the packages, or just for 
their tests? I suspect the former, then they should also need to be 
added to the Breaks list.


Paul

[1] 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-xopen/35575366/log.gz
[2] 
https://ci.debian.net/data/autopkgtest/testing/i386/r/r-cran-uwot/35590669/log.gz
[3] 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-intervals/35575046/log.gz
[4] 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-maldiquant/35575320/log.gz
[5] 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-spacetime/35575371/log.gz
[6] 
https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-stars/35583884/log.gz


OpenPGP_signature
Description: OpenPGP digital signature


Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-09 Thread Andreas Tille
Am Sat, Jul 08, 2023 at 10:35:17PM +0200 schrieb Paul Gevers:
> Indeed, I think the pattern is that if we test in testing, with r-cran from
> unstable and r-cran-tibble from testing it fails, but with r-cran from
> unstable and r-cran-tibble from unstable, it works.
> 
> I'm working my through the list and the ppc64el ci workers have a bit of
> backlog; we're getting somewhere, but I'm think I'm still also seeing
> different failure modes than the graphics engine, tibble and dplyr.

I admit the only chance I personally see to clarify this question is to
open an issue at the tibble git repository[1].  May be we also need
something like an r-cran-tibble-api?

Kind regards
Andreas.

[1] https://github.com/tidyverse/tibble

-- 
http://fam-tille.de



Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-08 Thread Paul Gevers

Hi,

On 06-07-2023 21:18, Andreas Tille wrote:

Am Thu, Jul 06, 2023 at 08:28:45PM +0200 schrieb Paul Gevers:

On 06-07-2023 19:08, Paul Gevers wrote:
I'm seeing in several tests where things seem to work when r-cran-tibble



from unstable is involved and fail if the version from unstable is used;

  

Are you sure there is no typo in your sentence?  At least I fail to
understand.  I assume the latter "unstable" should be "testing", right?


Indeed, I think the pattern is that if we test in testing, with r-cran 
from unstable and r-cran-tibble from testing it fails, but with r-cran 
from unstable and r-cran-tibble from unstable, it works.


I'm working my through the list and the ppc64el ci workers have a bit 
of backlog; we're getting somewhere, but I'm think I'm still also seeing 
different failure modes than the graphics engine, tibble and dplyr.


Paul


OpenPGP_signature
Description: OpenPGP digital signature


Bug#1040001: Role of tibble? (Was: Bug#1040001: Seeking advise how to proceed with the transition / move R stack to testing)

2023-07-06 Thread Andreas Tille
Hi,

Am Thu, Jul 06, 2023 at 08:28:45PM +0200 schrieb Paul Gevers:
> On 06-07-2023 19:08, Paul Gevers wrote:
> > Yes, we'll take care of that where it looks sane to do so (examples of
> > that are r-cran-epi); I'll manually schedule the "combined" tests, such
> > that they disappear from the excuses if they then pass.
> 
> I'm seeing in several tests where things seem to work when r-cran-tibble
   
> from unstable is involved and fail if the version from unstable is used;
     

Are you sure there is no typo in your sentence?  At least I fail to
understand.  I assume the latter "unstable" should be "testing", right?

> e.g. here: https://ci.debian.net/packages/r/r-cran-rsample/testing/amd64/

I can only say that tibble is used by a lot of packages directly as
dependency (69 in my locally stored repositories - may be some more).
In addition there are further dependencies of higher order.
 
> Is there something special about r-cran-tibble? It didn't grow a dependency
> on r-graphics-engine according to 
> https://buildd.debian.org/status/fetch.php?pkg=r-cran-tibble=amd64=3.2.1%2Bdfsg-2=1688629916=0
> so it doesn't seem to be involved in that part of the discussion.

I confirm it shouldn't be involved into the r-graphics-engine issue.
May be there is some other "hidden" transition needed which is connected
to some interface of tibble?  Dirk, can you shed some light into this?

Kind regards
   Andreas.

-- 
http://fam-tille.de