<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><font face="Menlo" class="">Hi!</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">The lisp commands to build abcl in the build-from-lisp.bash script have a problem: they’re mere progn forms.</font></div><div class=""><font face="Menlo" class="">When an error occurs, the lisp implementations will enter into the debugger and expect an interactive debugging.</font></div><div class=""><font face="Menlo" class="">This prevents building abcl in automatic scripts, such as:</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><div class=""><font face="Menlo" class="">function install_abcl_from_sources(){</font></div><div class=""><font face="Menlo" class="">    # Assume ccl is available.</font></div><div class=""><font face="Menlo" class="">    cd "${PREFIX}"/src/</font></div><div class=""><font face="Menlo" class="">    local url='<a href="http://abcl.org/releases/1.4.0/abcl-src-1.4.0.tar.gz" class="">http://abcl.org/releases/1.4.0/abcl-src-1.4.0.tar.gz</a>'</font></div><div class=""><font face="Menlo" class="">    local tarball;tarball="$(basename "${url}")"</font></div><div class=""><font face="Menlo" class="">    local dir;dir="$(basename "${tarball}" .tar.gz)"</font></div><div class=""><font face="Menlo" class="">    local jdkhome;jdkhome="$(java_home)"</font></div><div class=""><font face="Menlo" class="">    local logbase;logbase="$(pwd)/${dir}"</font></div><div class=""><font face="Menlo" class="">    export JAVA_HOME="${jdkhome}"</font></div><div class=""><font face="Menlo" class="">    if [[ ! -e  "${tarball}" ]] ; then</font></div><div class=""><font face="Menlo" class="">        download "${url}"</font></div><div class=""><font face="Menlo" class="">    fi</font></div><div class=""><font face="Menlo" class="">    unarchive "${tarball}" "${dir}"</font></div><div class=""><font face="Menlo" class="">    cd "${dir}"</font></div><div class=""><font face="Menlo" class="">    case "$(uname)" in</font></div><div class=""><font face="Menlo" class="">    (Darwin)</font></div><div class=""><font face="Menlo" class="">        sed -e 's^"/usr/"^"'"${jdkhome}/"'"^' \</font></div><div class=""><font face="Menlo" class="">            <customizations.lisp.in >customizations.lisp</font></div><div class=""><font face="Menlo" class="">        ;;</font></div><div class=""><font face="Menlo" class="">    (*)</font></div><div class=""><font face="Menlo" class="">        sed -e 's^"/home/peter/sun/jdk1.5.0_16/"^"'"${jdkhome}/"'"^' \</font></div><div class=""><font face="Menlo" class="">            -e 's/fastjar/jar/' \</font></div><div class=""><font face="Menlo" class="">            <customizations.lisp.in >customizations.lisp</font></div><div class=""><font face="Menlo" class="">        ;;</font></div><div class=""><font face="Menlo" class="">    esac</font></div><div class=""><font face="Menlo" class="">    chmod 755 ./build-from-lisp.bash</font></div><div class=""><font face="Menlo" class="">    printi 'Building abcl from lisp with ccl'</font></div><div class=""><font face="Menlo" class="">    ./build-from-lisp.bash ccl  > "${logbase}".build-from-lisp.log      2>&1 \</font></div><div class=""><font face="Menlo" class="">        && ( printi 'Installing abcl' ; install -m 755 abcl "${PREFIX}"/bin/  > "${logbase}".make-install.log   2>&1 ) \</font></div><div class=""><font face="Menlo" class="">        ||   printe 'Compiling abcl failed; check the logs.'</font></div><div class=""><font face="Menlo" class="">}</font></div></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">since errors aren’t detected, but just suspend the execution indefinitely.</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">Therefore, I would suggest to wrap those progn forms into a handler-case; for example, in the case of ccl:</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><font face="Menlo" class="">(handler-case (progn $3 (ccl:quit)) (error (err) (princ err *error-output*) (terpri </font><span style="font-family: Menlo;" class="">*error-output*</span><font face="Menlo" class="">) (finish-output</font><span style="font-family: Menlo;" class=""> *error-output*)</span><font face="Menlo" class=""> (ccl:quit 1)))</font><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><br class=""><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">-- <br class="">__Pascal J. Bourguignon__</div><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><br class=""><br class=""></div></div></div>
</div>
<br class=""></body></html>