Hi,

I just noticed that David Kirkby encouraged us to put "set -e"'s in
the Sage spkg-install's, and at the time when I was barely paying
attention it seemed like a good idea.  So I was just refereeing 6990
and noticed that the spkg-install's are now full of code like this:

----------------------
# This tells Bash to exit the script if any statement returns a non-true
# value.
set -e

# PATCH

cp patches/ctypes__init__.py src/Lib/ctypes/__init__.py
if [ $? -ne 0 ]; then
    echo "Error copying patched ctypes"
    exit 1
fi
--------------------------

Here's the problem.  There is *no possible way* the code

    echo "Error copying patched ctypes"
    exit 1

will ever get executed!   If $? isn't 0, the script already
terminated.  Thus by adding "set -e" we have made it so every single
error message that was carefully written to convey what the problem
was is no longer displayed.   Sometimes the error messages are fairly
obvious from "set -e", as above, but sometimes they aren't at all.

Also, some packages, e.g., ratpoints, attempt a build, and if a
failure occurs then attempt the same build but with different options.
  If one were to blithely put "set -a" at the top of such an
spkg-install, the result would be to break it on some platforms.
This could happen in any number of other situations.

So the upshot is that I'm extremely worried about this use of "set
-e".  It seems good on the surface, but it has some serious hidden
costs.

William




-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to