-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[r] Use lower and upper pin bounds on tiledb-r
for release-1.9
branch
#2374
Conversation
To be plain, and at least to me, We would need the suite of package building and checking command, plus I also learned only this week (on list, from CRAN maintainer Uwe Ligges) that these Edit: Typo corrected. Picked the wrong noun in haste. |
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## release-1.9 #2374 +/- ##
============================================
Coverage 90.43% 90.43%
============================================
Files 37 37
Lines 3940 3940
============================================
Hits 3563 3563
Misses 377 377
Flags with carried forward coverage won't be shown. Click here to find out more.
|
+100;
This behavior is new to me as well and AFAICT not well documented. I've also never seen it used anywhere. There is a lot of experimenting with bidirectional pins, repo combos, and install chains that I'd like to play around with before adopting this in any way |
@mojaveazure +1. #2373 is a known-good pattern which, factually, does solve the problem for CI. And I'm unaware of solutions I'm able to implement which are available to solve the problem outside of CI. Those facts, combined with your assertion above which I agree with, mean:
|
c3b1ece
to
4d75027
Compare
CI failing as at
which I do not understand 🤔 👀 |
That looks like an unrelated error with the Additional_repositories: entry we use for the two data packages. We made no changes to that aspect, and I think I had a similar 'intra-GH' fluke once before. (That Additional_repositories: is hosted at GH, but mortals like us do not know if in one or more data centers etc). (And it just worked for me in a Docker container here.) |
I've done some experimentation with double-pinning and I don't think it actually works. I've got a branch off of R sees two versions of tiledb-r: 0.24.0 from my R-universe and 0.26.0 from CRAN/P3M
R also sees my branch of tiledbsoma with the double-pin
However, when installing this branch of tiledbsoma, R opts for 0.26.0 from CRAN; the double-pin also allows full loading/attachment of tiledbsoma despite the higher version of tiledb-r
Dockerfile with all steps is available as a gist; the build used was
|
@mojaveazure There is a difference in behavior between installing and loading / attaching. The effect of the dual inequality is more on the latter as it seems to have not effect on the former (which would be a 'nice to have' but it not implemented by R). It remains hard / difficult to 'hide' a higher version available at CRAN. But see eg my PR #2450 which uncorks the issue here (via explicit installation steps). PS It may be possible to point |
* Required changes to r-ci.yml, plus simplifications * Idem for r-python-interop-testing
@eddelbuettel @mojaveazure I always appreciate your R-expert dialog! As I, an R non-expert, am functioning in a clerical role on this PR -- @eddelbuettel and/or @mojaveazure please accept this PR as-is, or accept with proposed changes for a follow-up PR, or request changes on this PR with specific proposed changes -- thank you! |
(Had this typed earlier an apparently never sent it / saved it. Sorry.) @mojaveazure At the risk of drifting further 'inside baseball' you can look at R's own ## This one a 'CRAN' filter in file src/packages.R in 'utils'
## So let's build not-CRAN one for tiledb
available_packages_filters_db_not_CRAN_tiledb <- function(db) {
packages <- db[, "Package"]
dups <- packages[duplicated(packages)]
drop <- integer()
CRAN <- getOption("repos")["CRAN"]
## do nothing if there is no CRAN repos on the list
if(is.na(CRAN)) return(db)
for(d in dups) {
pos <- which(packages == d)
pkg <- db[pos[1], "Package"]
if (pkg == "tiledb") {
ind <- startsWith(db[pos, "Repository"], CRAN)
if(!all(ind)) drop <- c(drop, pos[ind])
} else {
ind <- !startsWith(db[pos, "Repository"], CRAN)
if(!all(ind)) drop <- c(drop, pos[ind])
}
}
if(length(drop)) db[-drop, , drop = FALSE] else db
} and use it (note that it picks up the CRAN repo via the named entry in > options("repos" = c(univ="https://tiledb-inc.r-universe.dev", getOption("repos")))
> AP1 <- data.frame(available.packages(filters=list(available_packages_filters_db_not_CRAN)))
> AP1[with(AP1, Package=="tiledb"), c(1:2,17)]
Package Version Repository
tiledb tiledb 0.25.0 https://tiledb-inc.r-universe.dev/src/contrib
> |
@johnkerl @mojaveazure I suggest two more changes I can make if we're all on board with them. |
@eddelbuettel @mojaveazure all requested changes have been made |
@eddelbuettel I showed in the Docker that the double-pin had no effect on loading/attaching. R was more than happy to load tiledbsoma with a version of tiledb-r that exceeded the pin. At this point, I'm not convinced that this PR will do anything to handle mismatches between tiledb-r and tiledbsoma That being said, we could rig up something in I won't object to this PR being merged, I just wanted to flag that R doesn't seem to respect it 🤷 |
@mojaveazure We can take this off-line. Happy to discuss and dive further.
That behavior appears to be part of R, it actually happened to me once during
I believe there is a mismatch between what you expect to happen and what this is about. No more no less. |
@johnkerl Before merging maybe renaming 'with bidirectional-pin' ? It's not actually bi-directional as I understand it as no information flows back,is there? |
tiledb-r
@mojaveazure I appreciate your concerns about correctness. We do have:
This means we do have correctness signal on this PR -- I believe this means we at least have break-even with #1972 #1996 #2157 #2295 #2373 -- not to say that more can't be done (and I note #2406 will eliminate this problem entirely) I'll of course be watching everything very closely (as usual) during the 1.10 release process happening this week |
tiledb-r
tiledb-r
for release-1.9
tiledb-r
for release-1.9
tiledb-r
for release-1.9
branch
Issue and/or context: Per #2373 (comment) following advice https://stackoverflow.com/questions/63834412/enforce-upper-bound-for-r-package-version-dependency which is at variance with rstudio/renv#764 and, in fact, everything I've ever been told. I'm currently uncertain whether the bidirectional-pin syntax is genuinely new.
Changes: Try it out!
Notes for Reviewer: This PR is not ready for review. I will take this PR out of draft status as such time as it becomes ready for review.