-
Notifications
You must be signed in to change notification settings - Fork 34
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
Linux install warning #85
Comments
All of this is one and the same issue: nloptr decided to embed nlopt, but left it at a version that is outdated and (IIRC) three full releases behind the current nlopt. nloptr, as an R package, is in fine shape. All the warnings AFAICT are from the embedded nlopt sources, which are outdated (and one could of course throw those out again too and rely on a 'system installation'). Anyway all this is eminently fixable but someone needs to step up and own it. @jyypma said he had a candidate, but said candidate got stuck on another CRAN detail. Is @astamm that candidate? If so, can we help? |
I believe that @astamm is indeed the new intended maintainer (that was communicated in an e-mail to me and Martin Mächler): that's why I cross-posted to #4 . It's not clear whether CRAN knows that or not, which may be why communication was failing ... I have a vague memory that in earlier versions |
I contributed an extension years ago to use a system library (such as the the libnlopt-dev you can get from your Ubuntu derivative) and I still rely on those. That cleanly avoids all issues with CRAN about nlopt source code. But it gets us back to the issue that nlopt needs to be present. That is clearly something we can sort out with Uwe and Tomas for Windows / Windows UCRT, and hopefully even with Simon for macOS. It would then push the burden (and occassional need to hand-holding) back to us all to explain to the occassional Unix user lost at bringing a library in. We cannot say if that is "better" than trying to appease the CRAN maintainers on whatever deviations the embedded nlopt code may have. It's simply a trade off. But right we risk losing nlopt because of the joint decision to a) embed and b) keep that at older and apparently no-longer-good-enough-for-CRAN. The trouble here is that we can never tell ex ante which version would be good enough for CRAN as they insist, for better or worse and here clearly worse, to not make their test system truly replicable. |
We just merged PR #88 which mainly re-use an existing |
Still get the warning. I don't have How is the CRAN communication going? Are they (yet) aware that you're on the job, are they willing to give extra time if necessary? If we could find out that they are willing to install I'm considering communicating with the other 70+ downstream package maintainers - I'm not sure if they are up to speed or not and I got a somewhat panicked e-mail from a maintainer I know asking what I was planning to do ... If you're not getting a response from CRAN let me/Dirk know, we can probably try some back channels. |
As always
|
OK, thanks. FWIW I'm on PopOS! 21.04, which AFAIK is downstream of Ubuntu 21.04. I'm still not clear (sorry) on whether I should (1) install all the system-level stuff and try again; or (2) keep my system as an "nlopt-free" platform to test that variant. (Depends on part on what CRAN maintainers say ... ?) |
There are two cases:
You can also test either case quickly in, say, a Docker container or look at our CI runs. If you have any other questions please let us know. |
I'm in case 1; I don't have I'm happy to ignore the warning if that seems appropriate; just wanted to make sure it was reported in case it was something that should be diagnosed and resolved (I personally have no idea how ...) I can imagine that CRAN test platforms would encounter this warning if they don't have On the other hand, one could ignore this until directed to fix it by CRAN (at the very least, submitting a version to CRAN that works on almost all platforms would presumably reset the clock for when the package gets archived to sometime more than 8 days from now ...) |
We need more detail.
The gold standard for package maintainers is the page at CRAN. Last time it was updated NLopt (as used by the package) was three years older but so such messages were show, |
To be more plain: In your original post above you show two things. An (strongly appreciated output), and a list of your system. But not how the compiler was invoked etc pp. I ran on two very similar systems (Ubuntu 21.04, Debian testing) and include full logs (behind the |
It happens when I
gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0, cmake 3.18.4
Not so far.
Not as far as I know. I have
I completely appreciate that. As far as I can tell this is a stock system of its type (PopOS! 21.04 → Ubuntu 21.04). I am just as baffled as you are that this is throwing a warning that doesn't seem to happen on any of the r-hub Linux platforms (I haven't tried them myself, but I know @astamm has). Digging into the logs above I can see that this happens here:
I will go check your logs from Ubuntu 21.04 to see if I can detect any differences from my setup. I could also try to do comparisons for the lines above between the hard-wired The problem with this rabbit hole is that I don't know what I'm looking for ... |
I wonder if it might be gcc/g++ 10? What is strange is that CRAN is usually pretty forward-looking and tries compilers early and had nothing, and I had at the same or newer and see nothing either. But long story short at the end of the day this is you seeing a warning. Unplesant, but immaterial. At best as we can tell we do not yet see this at CRAN (though we of course cannot simulate a full submission). What p values do we put on ths being a nothingbuger versus this being a tell. As you yourself pointed out, we may be are up against a more important clock here. (The one things I will say is that the '94%' step is the linking step during the cmake build. There could be something there but I am then the wrong person to talk to because I am not the one who bet on the farm on building all under cmake.) |
I got this very same warning on R-Hub Windows since they updated the platform to Windows Server 2022, R-devel, 64 bit : (https://artifacts.r-hub.io/nloptr_2.0.0.tar.gz-ef81a471d8d749aeb311072790c239d0). |
Hmm, looking at the r-hub artifacts it looks like a different warning - albeit at the same place in the code, so presumably the same issue ... I agree that figuring out what's up with
|
There is an option to make CMake be verbose and show all commands (just like <cough, cough> standard build systems do). If we enable that we may be able to triage more. It seems related to the CMake build, so you could also triage and see what happens when you compile and link a standalone example against the libnlopt.a you built. I usually try to separate R interactions out that way. Could of course also be in the R settings interacting with the (lib)NLopt settings. |
FWIW, confirming that the warning does not occur after I install |
After reading protocolbuffers/protobuf#7140, it seems that
@bbolker could you please test the current state of the master to see if that also makes the warning vanish for you too? |
The warning goes away, hurrah. |
I would urge you to re-open to keep us abreast of trying to get this fixed upstream. [ Aside: @astamm you could also try to upgrade to 2.7.1 to if it helps ] I very much do in my packages as we do here: suppress warnings if we must to appease and not trigger the watch dogs. But we also try to be honest about it as engineers. There likely is an out-of-bounds write so this should get fixed in NLopt. |
I updated to NLopt 2.7.1. It does not help with the warning though. Regarding submission of |
I think you should upload to CRAN. The email by Brian Ripley was (as I understand it) in response to older issues prior to your active maintenance. The package is widely used, I would expect them to take that as well as the renewed active development into consideration. I would think that we can look into the warning in a 2.0,1 or later upload. |
I agree. But when I submit to CRAN, it comes back with a pre-test error on the winbuilder devel machine where no |
Ah, yes. In that case you reply, politely declare that this is a false positive due to the declared dependency on (In 2022 I have made two submissions to CRAN, a slightly slower pace than usual -- and they both hit this for different 'known' reasons. This can happen, and can be ok. Give it a shot.) |
I just submitted and received instantly the pre-test error as expected. I replied asking to move to automatic checks of reverse dependencies. I'll keep you both informed. |
Good. Thought I just had is of course that on Windows espcially where the build system is so nailed we really should not need |
For sure that would help as we would not need to bother with |
Still no answers from CRAN. And more e-mails coming in of people worrying about the scheduled archiving date next Friday. Should we think about the idea of shipping a fixed |
Actually what I could do maybe would be to use the makefile that Cmake generates on windows and ship it as fixed. I experimented a bit and what could be done is to ship the output of the So I just need to find a way to emulate a Windows setup with proper Rtools installed. Any chance you already have a way? |
I had the same idea of pre-cooking a Another possibility is to do what many other packages (includig (I do have Windows on personal computer.) |
I'll give a try to your first approach (which is closer in spirit to what I already have in mind) which I believe I can do myself. |
Yes, it should be doable. When I do what ## -*- mode: makefile; -*-
## Configure tells us about locations for
## hiredis headers and library via the variables
## if MsgPack is seen we add it as well
PKG_CXXFLAGS = -I.
#-DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT
PKG_LIBS = hiredis/libhiredis.a
CXX_STD = CXX11
.PHONY: all libhiredis.a
all: $(SHLIB)
$(SHLIB): libhiredis.a
libhiredis.a:
$(MAKE) CC="$(CC)" CFLAGS="$(CFLAGS) $(CPICFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)" --directory=hiredis libhiredis.a So to build the shared library, a static library is needed and for that a directory within |
Thanks Dirk. Do you think that would be even simpler in this case to ship a fixed |
It's up to you. Relying on It is really up to you -- you as maintainer make these choices. I think my first message to you may have been about a hard dependeny on |
Regarding your comment about shipping a fixed libnlopt.a; CRAN will not accept packages with binary "blobs", so I think that's not an option ... I'm a little concerned about the radio silence from CRAN. Would you like me to try a back-channel query? |
You are right about the fixed library I think. |
Ben, that is not what I suggested. Have you actually looked at any of the packages supported by Jeroen's rwinlib ? There are literally eighty plus packages downloading a binary blob. They all downloading at build time and yes, I have a package (that is fairly complex to build) in that set too (and, come to think about it, a few others too -- it is a viable service). So yes, this is a viable approach at CRAN and no I never said to stick a library into a tarball. I already tried the back-channeling a few days ago via a quiet email to CRAN but with nothing to show. They don't always reply. Ben of course carries a mighty stick in this discussion because if |
Dirk, I (mistakenly?) interpreted @astamm's idea to
as sticking a blob in the package, not downloading at build time. (I see that downloading a fixed |
I created confusion here, I apologise. I did suggest embedding a fixed library, but that indeed is doable but not as easily as I'd thought. |
Dirk, did you e-mail |
I replied to the group email sender, the windows maintaier, and the cran handle for record keeping. Jeroen's PR, ignored three years ago by the previous maintainer, could be updated to NLopt 2.7.1. You could ask him. Or you could insist on building NLopt yourself each and every time. Both methods have a number of plus and minus items going for them. |
I asked Jeroen and actually contributed a PR in which I updated the headers and libs. If he accepts it, then I can also adapt and merge #43. |
No worries. He still would have to review, accept and make a release out of it so that we could download it as he does in #43. |
@bbolker, is this still an issue with version 2.1.1? |
@bbolker, friendly nudge :) |
If I don't answer this in the next day or two you can probably assume it can be closed (ditto with the other open issue ...) |
I don't know if this is a significant problem, either substantively or from CRAN's point of view, but thought I would report it.
00install.out
The text was updated successfully, but these errors were encountered: