On Mon, Aug 4, 2014 at 6:30 AM, Jeroen Demeyer <jdeme...@cage.ugent.be> wrote: > On 2014-08-04 15:17, William A Stein wrote: >> >> Hi, >> >> I installed Sage-6.3.beta6 on SageMathCloud, then installed a big list >> of optional packages, including cryptominisat. I was surprised when >> the next day a user reported that CryptoMiniSat didn't work, and when >> you attempt to use it, you see >> >> Run "install_package('cryptominisat')" to install it. >> >> I tried the above (as the owner of the sage install), and it did not >> fix the problem. What did fix the problem was typing "sage -b". >> So... it seems like somebody removed doing "sage -b" after installing >> optional packages from the build system (if it was ever there?). > > Running "sage -b" after installing packages has always been needed, nobody > removed anything. >
Of all optional packages (that work), it is apparently only needed after 2 or 3 of them: cryptominisat, coin, coxeter. > I don't consider that a bug, it's consistent with: whenever you change > something to your Sage setup, run "sage -b" or even better "make". Just consider what happens to a new confused user... or even the most longterm user of Sage (me): 1. Install cryptominisat -- if you do install_package('cryptominisat'), I think that's broken, so at least I know to do: sage -i cryptominisat 2. Start sage and try to run it. That's me doing this -- I never even considered having to do "sage -b", and I've been using Sage for a while. sage: try function using package boom Run "install_package('cryptominisat')" to install it. 3. OK, I'll do what Sage *tells me to do*. sage: install_package('cryptominisat') boom! ValueError: Package is already installed. Try install_package('cryptominisat',force=True) 4. OK, I'll do what Sage tells me to do: sage: install_package('cryptominisat', force=True) ValueError: There is no package name starting with 'cryptominisat'. 5. Wow, I'm starting to think Sage is a confused broken mess? An old forgetful sage... Oh wait, now I remember there was some bug in install_package that I reported a few months ago, namely that install_package, which you're told to use, is broken. So I do: sage -f cryptominisat and and go to 1. Nothing has been fixed at all. This is absolutely not how Sage should behave. The fixes I can think of: (1) Run "sage -b" as part of installing any package that requires it for the install to finish. Your argument not to run "sage -b" isn't convincing, because the user is explicitly installing a package anyways, so they are potentially changing things all over Sage. Or, (2) Tell people they have to run "sage -b" clearly in the package install message. This won't work, because after 20 pages of build output, nobody is likely to read this. Or, (3) Instead of telling the user to reinstall the missing package (in minisat say), actually give a useful error message, instead of a totally wrong one. E.g., check to see if the minisat library is installed, but the cython module isn't built. I don't like this since it is fragile. So (1) is the best solution I can think of, and solves all cases of this problem for all packages that have it. William > > I would not be in favour of automatically running "sage -b" since you might > want to install several packages but run "sage -b" only once, you might want > to do something else like checking out some git branch (after which you need > to do "sage -b" anyway) and it wouldn't work for standard packages as you > said. I would also advice against doing "sage -b" while Sage is running, so > the install_package() Sage command couldn't do it. -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.