Re: Oddities in ECL tests on Linux
"Robert Goldman" <[email protected]>
| Newsgroups | gmane.lisp.asdf.devel,gmane.lisp.ecl.general |
|---|---|
| Message-ID | <[email protected]> |
OK, that makes sense. These tests were passing for me on the Mac, but brew has ECL 16.1.3 instead of 16.1.2. On 1 Sep 2018, at 7:26, Marius Gerbershagen wrote: > The patch works exactly as it should. All it does is to exit the > current > process with a return code of 1 if the process lands in the top level > prompt. The tests you mention also failed before on ECL <= 16.1.2, the > difference is just that instead of failing with a nonzero exit code > (as > they should), they failed by getting stuck in the top level prompt. As > I > already mentioned in the previous discussion, these failures are due > to > a bug in ECL, which has already been fixed in the 16.1.3 release. > > Am 31.08.2018 um 23:36 schrieb Robert Goldman: >> Unfortunately, this patch doesn't seem to work. Maybe it interferes >> with >> condition handlers? At any rate, after I insert it into >> script-support.lisp I now get two /new/ test failures in >> package-inferred-system-test.script and >> test-defsystem-depends-on.script. I get a message that >> >> |Top level in: #<process TOP-LEVEL>. ECL unexpectedly landed in the >> top >> level prompt. Script aborted. Using ecl, >> package-inferred-system-test.script failed | >> >> ...and one like it for the other test. So there were some failures >> there >> that were correctly caught before that are no longer. >> >> On 31 Aug 2018, at 13:43, Marius Gerbershagen wrote: >> >> Yes, the Ubuntu package definitely should be updated to version >> 16.1.3 >> which fixes the issue. But the ECL developers can't run to the >> maintainer of the ECL package of every linux distribution and ask >> them >> to upgrade their package each time they make a new release. And >> even if >> they could, the package maintainers probably wouldn't do it, >> since some >> other package might depend on an older ECL version. >> >> For the moment, the best solution I can offer you for your >> problem is a >> dirty hack to prevent older ECL versions from entering the >> interactive REPL: >> >> diff --git a/test/script-support.lisp b/test/script-support.lisp >> index 86b6c1f2..7f72488a 100644 >> --- a/test/script-support.lisp >> +++ b/test/script-support.lisp >> @@ -83,6 +83,14 @@ Some constraints: >> (defun ensure-directories-exist (path) >> #+genera (fs:create-directories-recursively (pathname path)))) >> >> +;; Dirty hack to prevent buggy ECL versions from landing in the >> top >> level prompt when they shouldn't >> +#+ecl (when (and (string<= (lisp-implementation-version) >> "16.1.2") >> + (not *debug-asdf*)) >> + (setq si:*tpl-prompt-hook* >> + #'(lambda () >> + (format *error-output* "ECL unexpectedly landed in >> the top level prompt. Script aborted.~%") >> + (exit-lisp 1)))) >> + >> ;;; Survival utilities >> (defun asym (name &optional package errorp) >> (let* ((pname (or package :asdf)) >> >> >> Of course since this is only a workaround to prevent the tests >> from >> stopping, the tests in which ECL would stop without the >> workaround will >> fail on ECL versions <= 16.1.2. >> >> Am 31.08.2018 um 17:54 schrieb Robert Goldman: >> >> On 31 Aug 2018, at 10:35, Marius Gerbershagen wrote: >> >> This is most likely a bug in ECL. I recommend trying out a >> newer >> version >> of ecl (16.1.3 or the current develop branch from the git >> repository). >> >> I see your point, but have two comments: >> >> 1. >> >> If this really /is/ an ECL bug, then shouldn't the Ubuntu >> package be >> updated and fixed? ASDF is supposed to work on the ECL that >> users >> will have, not only on the one that developers have. >> >> 2. >> >> I don't see a way to get a new ECL except by pulling from >> Gitlab and >> building. I do not have the time to run around building all >> available lisp implementations from source (and, again, ASDF >> should >> work on the versions of the implementations that users >> actually >> have, which means the ones provided by the packaging systems >> on the >> platforms). I build only SBCL, because that's an >> implementation I >> build anyway, for my work needs. Faré had the energy to play >> with >> all the different implementations in a substantial way, but I >> do >> not. >> >> So if the released version of an implementation is broken, I >> will simply >> regard that implementation as broken. If the /released >> version/ >> of an >> implementation is broken for long enough (I'm looking at you, >> clisp), it >> will become unsupported by ASDF. Unsupported means "patches >> will be >> accepted, but I will no longer run the tests, and test >> failure on an >> unsupported implementation will not be a reason to hold up an >> ASDF release." >> >> Note that at the moment /all/ implementations are essentially >> unsupported on Windows, since I have lost my Windows VM, and >> even if I >> got it back, I would have no way to develop on Windows. If >> you are a >> Windows user and this bothers you, I would be happy to >> support >> you in >> setting up a test environment, and even more happy to help >> you >> learn to >> patch ASDF. But even someone who doesn't want to patch ASDF, >> but who >> would be willing to run the test suite (or help figure out >> how >> it could >> be run through, e.g., Travis), would be a great help. >> >> Am 30.08.2018 um 21:51 schrieb Robert Goldman: >> >> I'm experimenting with your changes now but, for some reason >> that I >> don't understand, when I run the tests as |make l=ecl| >> interactively on >> Ubuntu (using the Ubuntu ECL package |16.1.2-3|), signals are >> throwing >> me into the interactive debugger, instead of being caught. I >> have no >> idea why this started happening, because I used to be able to >> run ECL >> successfully, and I don't believe I have changed the package >> (although >> Ubuntu might have upgraded it). >> >> Actually /usr/bin/ecl is crashing with SIGABRT when running >> programs, >> apparently, on my Ubuntu box. (|SIGABRT in >> si_run_program()|). >> I'll try >> uninstalling and reinstalling ECL in the hopes that fixes >> this, but >> unless I get some help, I will not be able to continue >> testing >> ASDF on >> ECL on Linux. >> >> On 30 Aug 2018, at 13:22, Marius Gerbershagen wrote: >> >> No, I don't think so. The sockets module has been part of ECL >> since >> version 0.9f from 2005. Please note, that this test can fail >> anyway if >> ECL is built without support for the respective module (be it >> :rt or >> :sockets). The change only prevents it from failing on a >> default >> build >> configuration. >> >> Am 30.08.2018 um 19:53 schrieb Robert Goldman: >> >> Thank you very much for these, Marius. I will look into >> fixing them >> directly. One question - do I need to check for ECL version >> number when >> requiring sockets in the test? I.e., to I need to test with >> |:rt| in >> older versions and |:sockets| in newer? Or will |:sockets| >> work >> in older >> versions of ECL, as well? >> >> Best, >> R >> >> On 30 Aug 2018, at 12:46, Marius Gerbershagen wrote: >> >> Harmless in the sense that ECL doesn't crash or throw me in >> the >> interactive debugger. Besides, the test failures seem to be >> easily >> fixed. The test-require.script test fails because it tries to >> require >> the :rt module which is deprecated on the develop branch and >> no >> longer >> build by default. A simple fix is to use the :sockets module >> instead: >> >> diff --git a/test/test-require.script >> b/test/test-require.script >> index e5f70857..1ef84e8c 100644 >> --- a/test/test-require.script >> +++ b/test/test-require.script >> @@ -178,7 +178,7 @@ >> #+allegro :sax >> #+clisp (first (remove "asdf" *dynmod-list* :test 'equal)) >> #+(or clozure cmucl) :defsystem >> - #+ecl :rt ;; loads faster than :ecl-quicklisp >> + #+ecl :sockets >> #+lispworks "comm" >> #+mkcl :walker >> #+sbcl :sb-md5 >> >> The test-program.script test seems to fail to include uiop >> because of an >> error in the linkable-system function. Tracing it shows that >> the >> function returns nil for the uiop system object, >> 1> (ASDF/BUNDLE::LINKABLE-SYSTEM #<system "uiop">) >> <1 (ASDF/BUNDLE::LINKABLE-SYSTEM NIL) >> which seems to be caused by a missing call to coerce-name: >> >> diff --git a/bundle.lisp b/bundle.lisp >> index 2ff56f93..42034c9f 100644 >> --- a/bundle.lisp >> +++ b/bundle.lisp >> @@ -529,7 +529,7 @@ which is probably not what you want; you >> probably >> need to tweak your output tran >> ;; If an ASDF upgrade is available from source, but not a >> UIOP >> upgrade to that, >> ;; then use the asdf/driver system instead of >> ;; the UIOP that was disabled by check-not-old-asdf-system. >> - (if-let (s (and (equal x "uiop") (output-files 'lib-op >> "asdf") >> (find-system "asdf/driver"))) >> + (if-let (s (and (equal (coerce-name x) "uiop") >> (output-files >> 'lib-op "asdf") (find-system "asdf/driver"))) >> (and (output-files 'lib-op s) s)) >> ;; If there was no source upgrade, look for modules provided >> by >> the implementation. >> (if-let (p (system-module-pathname (coerce-name x))) >> >> >> Am 29.08.2018 um 01:22 schrieb Faré: >> >> I can't reproduce this, for me the tests run fine without >> being thrown >> in the debugger. I only get two harmlessly looking test >> failures >> (test-program.script and test-require.script). >> >> No test failure is harmless. The test-program.script failure >> is what >> Robert saw, that I can reproduce. I didn't reproduce a >> failure with >> test-require. I had more problems with ECL from the develop >> branch, >> but maybe it was a bad idea to use the develop branch. >> >> —♯ƒ • François-René ÐVB Rideau >> •Reflection&Cybernethics• >> http://fare.tunes.org >> There are two kinds of people, those who do the work >> and those who take the credit. Try to be in the first group; >> there is less competition there >> — Indira Gandhi. >>