On Fri, Mar 14, 2014 at 12:24 PM, Anton Vodonosov avodonosov@yandex.ru wrote:
14.03.2014, 20:20, "Anton Vodonosov" avodonosov@yandex.ru:
As systems depend on each other, a failing system breaks other systems.
To get sense of the situation the following report may help: http://common-lisp.net/project/cl-test-grid/asdf/asdf-load-failures-3.1.0.94... It includes only systems which fail with the syntax pach, while load OK without the patch.
The default sorting places more "important to fix" systems at top.
The term "root-blocker" means a system failing by itself, i.e. none of its dependencies fail.
For example atdoc has 1 root-blocker - clozure-common. If we fix clozure-common, atdoc will hopefully work (unless atdoc it has its own problem, which will be revealed in this case).
The systems which have count of root-blockers = 0 fail by themselves.
You may change sorting by clicking columns (holding Shift to sort by multiple columns).
Let me know if you have questions about this report.
Also "systems-blocked-exclusively" are systems which have no other failing dependencies except for the current system.
For example, ironclad has 120 systems blocked exclusively. This means if we fix ironclad the 120 systems may be fixed (Unless they have their own problems, which will be revealed in this case; but all the dependencies for these systems will be fixed).
Thanks a lot for your testing, Anton.
This suggests that we can't transition to a cleaner syntax by "just" fixing one or two systems. We need to provide some migration path and/or some configuration magic so that old systems known to fail keep using dirty syntax, but new systems use a clean syntax.
Completing the migration is clearly beyond the 3.1.1 release. Maybe providing the cleaner alternative could be done before, but even that is doubtful. An out-of-band system configuration scheme needs much thought, and no one seems to have ideas how to do it.
Another useful test would be to determine how many of these failures happen when just the asd has a forced clean syntax. Probably a few still.
Another solution might be one readtable per system and/or per set of systems using the same .asd file, i.e. defsystem remembers the readtable it was defined in, and load-asd binds the *readtable* and *print-pprint-syntax* to a new table. On the one hand, this might entrench bad syntax hygiene and make the loading of files noticeably different when done from ASDF than when done from the REPL — unless you use slime-asdf in a way that ensures files are compiled using ASDF. On the other hand, we're already heading that way with all the around compile hooks and manual around methods, etc.
Why this matters: http://fare.tunes.org/files/tmp/asdf/asdf3-2014.html#%28part._.Safety_before...
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Malthus was right. It's hard to see how the solar system could support much more than 10^28 people or the universe more than 10^50. — John McCarthy