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.

Reply via email to