Dear CLers,
with ASDF 3.3.1 released and the syntax-control branch pending review, there's not much left for me to do with ASDF before I actually retire. Now I'm looking for hackers to whom to pass the torch of ASDF hacking.
It so happens that I seem to have introduced (probably with 3.3.0) a regression that breaks static image dumping of workout-timer with cffi-toolchain. If people are interested, I could do the entire debugging session over Google Hangouts, from isolating the bug and filing a bug report to writing regression test and submitting a merge request. That would be a good way to introduce newcomers to ASDF hacking. Having a public ask questions as I make progress would be a good way to keep the video relevant. Is anyone interested?
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org If there's a book you really want to read but it hasn't been written yet, then you must write it. — Toni Morrison [same with software, —♯f]
That would be great. One question, would you please record the hangout and share it? (I have some work things that are making my schedule unpredictable for the next few weeks). I believe you can record hangouts to YouTube. Thanks
Sent from my iPad
On Nov 28, 2017, at 12:32, Faré fahree@gmail.com wrote:
Dear CLers,
with ASDF 3.3.1 released and the syntax-control branch pending review, there's not much left for me to do with ASDF before I actually retire. Now I'm looking for hackers to whom to pass the torch of ASDF hacking.
It so happens that I seem to have introduced (probably with 3.3.0) a regression that breaks static image dumping of workout-timer with cffi-toolchain. If people are interested, I could do the entire debugging session over Google Hangouts, from isolating the bug and filing a bug report to writing regression test and submitting a merge request. That would be a good way to introduce newcomers to ASDF hacking. Having a public ask questions as I make progress would be a good way to keep the video relevant. Is anyone interested?
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org If there's a book you really want to read but it hasn't been written yet, then you must write it. — Toni Morrison [same with software, —♯f]
On Tue, Nov 28, 2017 at 01:32:05PM -0500, Faré wrote:
[...] If people are interested, I could do the entire debugging session over Google Hangouts, from isolating the bug and filing a bug report to writing regression test and submitting a merge request. That would be a good way to introduce newcomers to ASDF hacking. Having a public ask questions as I make progress would be a good way to keep the video relevant. Is anyone interested?
I think this is a good idea and I am interested. Please let us know when you're planning to do this.
2017-11-28 20:09 GMT+01:00 Julian Squires julian@cipht.net:
On Tue, Nov 28, 2017 at 01:32:05PM -0500, Faré wrote:
[...] If people are interested, I could do the entire debugging session over Google Hangouts, from isolating the bug and filing a bug report to writing regression test and submitting a merge request. That would be a good way to introduce newcomers to ASDF hacking. Having a public ask questions as I make progress would be a good way to keep the video relevant. Is anyone interested?
I think this is a good idea and I am interested. Please let us know when you're planning to do this.
I agree, and I'm also interested in this session (or recorded video).
Regards, Michał
On Tue, Nov 28, 2017 at 2:09 PM, Julian Squires julian@cipht.net wrote:
On Tue, Nov 28, 2017 at 01:32:05PM -0500, Faré wrote:
[...] If people are interested, I could do the entire debugging session over Google Hangouts, from isolating the bug and filing a bug report to writing regression test and submitting a merge request. That would be a good way to introduce newcomers to ASDF hacking. Having a public ask questions as I make progress would be a good way to keep the video relevant. Is anyone interested?
I think this is a good idea and I am interested. Please let us know when you're planning to do this.
I don't have a set time for it at the moment. Probably some day next week between 1000 and 1400 EST. Or maybe on that week's weekend if there is demand and my laptop is back from Lenovo's repair shop. The main hurdle will figuring out the Linux software installation to record the damn thing on Hangouts on Air, I suppose using OBS Studio.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Personal dishonesty is not needed to produce a dishonest business plan or research proposal. Wishful thinking suffices. — John McCarthy
I assume the software installation you need is just Chrome. Looks like Hangouts on Air is now called YouTube Live.
https://support.google.com/youtube/answer/7083786?hl=en https://support.google.com/youtube/answer/7083786?hl=en
On Nov 28, 2017, at 2:29 PM, Faré fahree@gmail.com wrote:
On Tue, Nov 28, 2017 at 2:09 PM, Julian Squires julian@cipht.net wrote:
On Tue, Nov 28, 2017 at 01:32:05PM -0500, Faré wrote:
[...] If people are interested, I could do the entire debugging session over Google Hangouts, from isolating the bug and filing a bug report to writing regression test and submitting a merge request. That would be a good way to introduce newcomers to ASDF hacking. Having a public ask questions as I make progress would be a good way to keep the video relevant. Is anyone interested?
I think this is a good idea and I am interested. Please let us know when you're planning to do this.
I don't have a set time for it at the moment. Probably some day next week between 1000 and 1400 EST. Or maybe on that week's weekend if there is demand and my laptop is back from Lenovo's repair shop. The main hurdle will figuring out the Linux software installation to record the damn thing on Hangouts on Air, I suppose using OBS Studio.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Personal dishonesty is not needed to produce a dishonest business plan or research proposal. Wishful thinking suffices. — John McCarthy
On Tue, Nov 28, 2017 at 2:44 PM, Bob Cassels bobcassels@netscape.net wrote:
I assume the software installation you need is just Chrome. Looks like Hangouts on Air is now called YouTube Live.
My Youtube Live dashboard tells me I need to setup some software as item 1 on its checklist: https://www.youtube.com/live_dashboard https://support.google.com/youtube/answer/2907883?hl=en Only solution listed for Linux, OBS Studio https://obsproject.com/
Happily, NixOS does have obs-studio already packaged. Unhappily it dies at startup with these last log messages: info: Initializing OpenGL... info: OpenGL version: 4.5 (Core Profile) Mesa 17.1.8 intel_do_flush_locked failed: Input/output error
So... I'll try when I have more time.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org It is only when we realize that life is taking us nowhere that it begins to have meaning. ― Pyotr Uspensky
After a kernel downgrade, I have painfully managed to get streaming to Youtube Live Events working. https://www.youtube.com/my_live_events
I'm tentatively scheduled an event at 10:00 EST (15:00 UTC) on next Monday December 4th 2017. https://www.youtube.com/watch?v=1kq-73Cjn08
I'll be using Hangouts on Air, and will send a message to these lists with the link before I go live, and also posting the link on my twitter https://twitter.com/Ngnghm
If you have requests for an alternate time slot, I'm open to moving the session.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org What one person receives without working for, another person must work for without receiving. — Adrian Rogers
Well, after realizing one hour into the debugging session that I needed to click on a button "Start Broadcast" to go live, I'm going to reschedule the event, starting at 14:00 EST (19:00 UTC). Sorry.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org How small of all that human hearts endure That part which laws or kings can cause or cure! — Samuel Johnson
On Wed, Nov 29, 2017 at 7:24 PM, Faré fahree@gmail.com wrote:
After a kernel downgrade, I have painfully managed to get streaming to Youtube Live Events working. https://www.youtube.com/my_live_events
I'm tentatively scheduled an event at 10:00 EST (15:00 UTC) on next Monday December 4th 2017. https://www.youtube.com/watch?v=1kq-73Cjn08
I'll be using Hangouts on Air, and will send a message to these lists with the link before I go live, and also posting the link on my twitter https://twitter.com/Ngnghm
If you have requests for an alternate time slot, I'm open to moving the session.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org What one person receives without working for, another person must work for without receiving. — Adrian Rogers
My second attempt at a live session was also ultimately a failure: there were interruptions, the rhythm was slow with lots of side issues, the microphone was unplugged at one point, etc., and it all lasted way too many hours with lots of down time. Happily, none of the two anonymous spectators stayed long anyway, so no one missed much.
That said, I battled and vanquished an interesting conundrum of bugs, all of them directly or indirectly related to code upgrade:
* Simplest and most obvious issue: ASDF 3.3.1 renamed STAMP< to TIMESTAMP< because the API changed; this caused a naming conflict with LOCAL-TIME:TIMESTAMP<. Solution: in WORKOUT-TIMER's UIOP:DEFINE-PACKAGE, use the :MIX clause with LOCAL-TIME ahead of UIOP, instead of :USE. The backtrace pointed to the correct issue, the ASDF changelog and/or commit messages explained what it was about, this was obvious to find out and fix. https://gitlab.common-lisp.net/frideau/workout-timer/commit/0e3f0104ddb26524...
* I had somehow compiled my SBCL with an old script that hadn't set the SB-LINKABLE-RUNTIME feature; but CFFI-TOOLCHAIN failed to tell me, instead failing in a cryptic way. Solution: have CFFI proactively check for feature presence and issue a useful error message if absent. (This is loosely related to SBCL, because CFFI failed to detect that SBCL hadn't been upgraded to be compiled with this recent feature I added.) This issue was compounded by the fact that, while believing that it was an ASDF bug and trying to check at what point the bug appeared, other issues kept cropping up because of the bug below, and the fact that downgrading ASDF is itself quite tricky, unlike upgrading which is trivial. https://github.com/cffi/cffi/pull/127
* ASDF stored metadata in the :initform of operation class slots, but then changes due to code upgrade were not visible because the slot was already initialized (yet upgrade previously worked, once, due to change of :allocation to :class). Solution: use defmethod, not slots. This is a deep issue. At root was my failing to take measure of how :initform would ultimately interact with software upgrade, when I originally wrote this code. And yet it worked well enough so far. Fixing the same potential issue with the (more stable but still evolvable) code in the core of ASDF will require applying the same solution to action.lisp all files that define new operations. This will impact backward compatibility and will require yet another round of going through Quicklisp fixing everything (not that many systems define new operations, but some do), and making big announcements. --- Good task for a candidate future maintainer: well defined and predictable, and yet will get you around the core code of ASDF. https://gitlab.common-lisp.net/asdf/asdf/merge_requests/89
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org If you don't like yourself, you *can't* like other people. — Robert Heinlein, "Time Enough For Love"
On Mon, Dec 4, 2017 at 11:29 AM, Faré fahree@gmail.com wrote:
Well, after realizing one hour into the debugging session that I needed to click on a button "Start Broadcast" to go live, I'm going to reschedule the event, starting at 14:00 EST (19:00 UTC). Sorry.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org How small of all that human hearts endure That part which laws or kings can cause or cure! — Samuel Johnson
On Wed, Nov 29, 2017 at 7:24 PM, Faré fahree@gmail.com wrote:
After a kernel downgrade, I have painfully managed to get streaming to Youtube Live Events working. https://www.youtube.com/my_live_events
I'm tentatively scheduled an event at 10:00 EST (15:00 UTC) on next Monday December 4th 2017. https://www.youtube.com/watch?v=1kq-73Cjn08
I'll be using Hangouts on Air, and will send a message to these lists with the link before I go live, and also posting the link on my twitter https://twitter.com/Ngnghm
If you have requests for an alternate time slot, I'm open to moving the session.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org What one person receives without working for, another person must work for without receiving. — Adrian Rogers
It looks like there is a bug in ASDF 3.3 worth definitely worth fixing before I leave: https://bugs.launchpad.net/asdf/+bug/1739514 Basically, ASDF fails spuriously rebuilds misnamed secondary systems and/or things that depend on them, instead of just issuing a warning as intended. (NB: there are a few hundred misnamed secondary systems in quicklisp.)
That's a good opportunity for another live debugging session some time next week. One that works this time. Please contact me via private email message if you want to be present. A public that asks useful questions would be useful.
I expect the total session to last about two to three hours from unwrapping the (reproducible) test case to filing the merge request. You don't have to attend all of it, and are welcome to leave or join part way.
This time, I will record locally so even a remote fiasco like last time won't prevent recording; however the session will probably be more didactic if there are attendees to ask relevant questions about what I'm doing.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Multiple instances of a same hacker with different context in his mental cache count as multiple hackers wrt documentation and testing needs.
On Mon, Dec 4, 2017 at 10:56 PM, Faré fahree@gmail.com wrote:
My second attempt at a live session was also ultimately a failure: there were interruptions, the rhythm was slow with lots of side issues, the microphone was unplugged at one point, etc., and it all lasted way too many hours with lots of down time. Happily, none of the two anonymous spectators stayed long anyway, so no one missed much.
That said, I battled and vanquished an interesting conundrum of bugs, all of them directly or indirectly related to code upgrade:
- Simplest and most obvious issue: ASDF 3.3.1 renamed STAMP< to
TIMESTAMP< because the API changed; this caused a naming conflict with LOCAL-TIME:TIMESTAMP<. Solution: in WORKOUT-TIMER's UIOP:DEFINE-PACKAGE, use the :MIX clause with LOCAL-TIME ahead of UIOP, instead of :USE. The backtrace pointed to the correct issue, the ASDF changelog and/or commit messages explained what it was about, this was obvious to find out and fix. https://gitlab.common-lisp.net/frideau/workout-timer/commit/0e3f0104ddb26524...
- I had somehow compiled my SBCL with an old script that hadn't set
the SB-LINKABLE-RUNTIME feature; but CFFI-TOOLCHAIN failed to tell me, instead failing in a cryptic way. Solution: have CFFI proactively check for feature presence and issue a useful error message if absent. (This is loosely related to SBCL, because CFFI failed to detect that SBCL hadn't been upgraded to be compiled with this recent feature I added.) This issue was compounded by the fact that, while believing that it was an ASDF bug and trying to check at what point the bug appeared, other issues kept cropping up because of the bug below, and the fact that downgrading ASDF is itself quite tricky, unlike upgrading which is trivial. https://github.com/cffi/cffi/pull/127
- ASDF stored metadata in the :initform of operation class slots, but
then changes due to code upgrade were not visible because the slot was already initialized (yet upgrade previously worked, once, due to change of :allocation to :class). Solution: use defmethod, not slots. This is a deep issue. At root was my failing to take measure of how :initform would ultimately interact with software upgrade, when I originally wrote this code. And yet it worked well enough so far. Fixing the same potential issue with the (more stable but still evolvable) code in the core of ASDF will require applying the same solution to action.lisp all files that define new operations. This will impact backward compatibility and will require yet another round of going through Quicklisp fixing everything (not that many systems define new operations, but some do), and making big announcements. --- Good task for a candidate future maintainer: well defined and predictable, and yet will get you around the core code of ASDF. https://gitlab.common-lisp.net/asdf/asdf/merge_requests/89
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org If you don't like yourself, you *can't* like other people. — Robert Heinlein, "Time Enough For Love"
On Mon, Dec 4, 2017 at 11:29 AM, Faré fahree@gmail.com wrote:
Well, after realizing one hour into the debugging session that I needed to click on a button "Start Broadcast" to go live, I'm going to reschedule the event, starting at 14:00 EST (19:00 UTC). Sorry.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org How small of all that human hearts endure That part which laws or kings can cause or cure! — Samuel Johnson
On Wed, Nov 29, 2017 at 7:24 PM, Faré fahree@gmail.com wrote:
After a kernel downgrade, I have painfully managed to get streaming to Youtube Live Events working. https://www.youtube.com/my_live_events
I'm tentatively scheduled an event at 10:00 EST (15:00 UTC) on next Monday December 4th 2017. https://www.youtube.com/watch?v=1kq-73Cjn08
I'll be using Hangouts on Air, and will send a message to these lists with the link before I go live, and also posting the link on my twitter https://twitter.com/Ngnghm
If you have requests for an alternate time slot, I'm open to moving the session.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org What one person receives without working for, another person must work for without receiving. — Adrian Rogers
Speaking of ASDF, quicklisp loaded :ceramic OK into SBCL on Mac OS X but on Windows under AllegroCL Ansi I get:
Error: OPERATION instances must only be created through MAKE-OPERATION.
[condition type: FORMATTED-SYSTEM-DEFINITION-ERROR]
Is that an ASDF issue? Ceramic? ACL? cffi-grovel (the system being built when the error is thrown)?
Does quicklisp use its own copy of ASDF for stability?
I will try Clozure on Windows, but I would love to stick to AllegroCL's windows IDE.
-kt
On Wed, Dec 20, 2017 at 8:48 PM, Faré fahree@gmail.com wrote:
It looks like there is a bug in ASDF 3.3 worth definitely worth fixing before I leave: https://bugs.launchpad.net/asdf/+bug/1739514 Basically, ASDF fails spuriously rebuilds misnamed secondary systems and/or things that depend on them, instead of just issuing a warning as intended. (NB: there are a few hundred misnamed secondary systems in quicklisp.)
That's a good opportunity for another live debugging session some time next week. One that works this time. Please contact me via private email message if you want to be present. A public that asks useful questions would be useful.
I expect the total session to last about two to three hours from unwrapping the (reproducible) test case to filing the merge request. You don't have to attend all of it, and are welcome to leave or join part way.
This time, I will record locally so even a remote fiasco like last time won't prevent recording; however the session will probably be more didactic if there are attendees to ask relevant questions about what I'm doing.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Multiple instances of a same hacker with different context in his mental cache count as multiple hackers wrt documentation and testing needs.
On Mon, Dec 4, 2017 at 10:56 PM, Faré fahree@gmail.com wrote:
My second attempt at a live session was also ultimately a failure: there were interruptions, the rhythm was slow with lots of side issues, the microphone was unplugged at one point, etc., and it all lasted way too many hours with lots of down time. Happily, none of the two anonymous spectators stayed long anyway, so no one missed much.
That said, I battled and vanquished an interesting conundrum of bugs, all of them directly or indirectly related to code upgrade:
- Simplest and most obvious issue: ASDF 3.3.1 renamed STAMP< to
TIMESTAMP< because the API changed; this caused a naming conflict with LOCAL-TIME:TIMESTAMP<. Solution: in WORKOUT-TIMER's UIOP:DEFINE-PACKAGE, use the :MIX clause with LOCAL-TIME ahead of UIOP, instead of :USE. The backtrace pointed to the correct issue, the ASDF changelog and/or commit messages explained what it was about, this was obvious to find out and fix. https://gitlab.common-lisp.net/frideau/workout-timer/commit/
0e3f0104ddb26524f8445ddcf5e34dafe43aa8dd
- I had somehow compiled my SBCL with an old script that hadn't set
the SB-LINKABLE-RUNTIME feature; but CFFI-TOOLCHAIN failed to tell me, instead failing in a cryptic way. Solution: have CFFI proactively check for feature presence and issue a useful error message if absent. (This is loosely related to SBCL, because CFFI failed to detect that SBCL hadn't been upgraded to be compiled with this recent feature I added.) This issue was compounded by the fact that, while believing that it was an ASDF bug and trying to check at what point the bug appeared, other issues kept cropping up because of the bug below, and the fact that downgrading ASDF is itself quite tricky, unlike upgrading which is trivial. https://github.com/cffi/cffi/pull/127
- ASDF stored metadata in the :initform of operation class slots, but
then changes due to code upgrade were not visible because the slot was already initialized (yet upgrade previously worked, once, due to change of :allocation to :class). Solution: use defmethod, not slots. This is a deep issue. At root was my failing to take measure of how :initform would ultimately interact with software upgrade, when I originally wrote this code. And yet it worked well enough so far. Fixing the same potential issue with the (more stable but still evolvable) code in the core of ASDF will require applying the same solution to action.lisp all files that define new operations. This will impact backward compatibility and will require yet another round of going through Quicklisp fixing everything (not that many systems define new operations, but some do), and making big announcements. --- Good task for a candidate future maintainer: well defined and predictable, and yet will get you around the core code of ASDF. https://gitlab.common-lisp.net/asdf/asdf/merge_requests/89
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
If you don't like yourself, you *can't* like other people. — Robert Heinlein, "Time Enough For Love"
On Mon, Dec 4, 2017 at 11:29 AM, Faré fahree@gmail.com wrote:
Well, after realizing one hour into the debugging session that I needed to click on a button "Start Broadcast" to go live, I'm going to reschedule the event, starting at 14:00 EST (19:00 UTC). Sorry.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
How small of all that human hearts endure That part which laws or kings can cause or cure! — Samuel Johnson
On Wed, Nov 29, 2017 at 7:24 PM, Faré fahree@gmail.com wrote:
After a kernel downgrade, I have painfully managed to get streaming to Youtube Live Events working. https://www.youtube.com/my_live_events
I'm tentatively scheduled an event at 10:00 EST (15:00 UTC) on next Monday December 4th 2017. https://www.youtube.com/watch?v=1kq-73Cjn08
I'll be using Hangouts on Air, and will send a message to these lists with the link before I go live, and also posting the link on my twitter https://twitter.com/Ngnghm
If you have requests for an alternate time slot, I'm open to moving
the session.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
What one person receives without working for, another person must work
for
without receiving. — Adrian Rogers
Error: OPERATION instances must only be created through MAKE-OPERATION.
[condition type: FORMATTED-SYSTEM-DEFINITION-ERROR]
Is that an ASDF issue? Ceramic? ACL? cffi-grovel (the system being built when the error is thrown)?
You need a fresher version of cffi-grovel. Update your quicklisp and/or make sure you don't have an antique version of cffi in your local-projects and/or source-registry.
Does quicklisp use its own copy of ASDF for stability?
quicklisp provides an antique asdf 2.26 that is only loaded in even more antique implementations. All maintained implementations have been providing asdf 3.1 or later for over a year.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org C is a DSL for turning low-level byte arrays into security advisories.
Thanks for the info. But Ceramic just built on the same windows laptop under ccl64. Maybe the asdf AllegroCL provides is getting in the way? I will look also at tossing cffi just to get a fresh start.
-kt
On Tue, Dec 26, 2017 at 1:55 PM, Faré fahree@gmail.com wrote:
Error: OPERATION instances must only be created through MAKE-OPERATION.
[condition type: FORMATTED-SYSTEM-DEFINITION-ERROR]
Is that an ASDF issue? Ceramic? ACL? cffi-grovel (the system being built when the error is thrown)?
You need a fresher version of cffi-grovel. Update your quicklisp and/or make sure you don't have an antique version of cffi in your local-projects and/or source-registry.
Does quicklisp use its own copy of ASDF for stability?
quicklisp provides an antique asdf 2.26 that is only loaded in even more antique implementations. All maintained implementations have been providing asdf 3.1 or later for over a year.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org C is a DSL for turning low-level byte arrays into security advisories.
Well, the cffi loaded by ql is: beta.quicklisp.org/archive/cffi/2015-09-23/cffi_0.16.1.tgz
The list of beta releases at https://www.quicklisp.org/beta/releases.html shows 0.19.0
Uninstalling and reinstalling pulled down cffi_0.16.1 again.
I'll have to look at a manual override.
On Tue, Dec 26, 2017 at 2:05 PM, Ken Tilton kentilton@gmail.com wrote:
Thanks for the info. But Ceramic just built on the same windows laptop under ccl64. Maybe the asdf AllegroCL provides is getting in the way? I will look also at tossing cffi just to get a fresh start.
-kt
On Tue, Dec 26, 2017 at 1:55 PM, Faré fahree@gmail.com wrote:
Error: OPERATION instances must only be created through MAKE-OPERATION.
[condition type: FORMATTED-SYSTEM-DEFINITION-ERROR]
Is that an ASDF issue? Ceramic? ACL? cffi-grovel (the system being built when the error is thrown)?
You need a fresher version of cffi-grovel. Update your quicklisp and/or make sure you don't have an antique version of cffi in your local-projects and/or source-registry.
Does quicklisp use its own copy of ASDF for stability?
quicklisp provides an antique asdf 2.26 that is only loaded in even more antique implementations. All maintained implementations have been providing asdf 3.1 or later for over a year.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org C is a DSL for turning low-level byte arrays into security advisories.
-- Kenneth Tilton http://tiltontec.com/
Why not make a backup and update all of quicklisp? Mixing and matching software of vastly different versions can never be supported. This is a hell of your own making.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Amateurs talk strategy. Professionals talk logistics. — old military saying
On Tue, Dec 26, 2017 at 2:31 PM, Ken Tilton kentilton@gmail.com wrote:
Well, the cffi loaded by ql is: beta.quicklisp.org/archive/cffi/2015-09-23/cffi_0.16.1.tgz
The list of beta releases at https://www.quicklisp.org/beta/releases.html shows 0.19.0
Uninstalling and reinstalling pulled down cffi_0.16.1 again.
I'll have to look at a manual override.
On Tue, Dec 26, 2017 at 2:05 PM, Ken Tilton kentilton@gmail.com wrote:
Thanks for the info. But Ceramic just built on the same windows laptop under ccl64. Maybe the asdf AllegroCL provides is getting in the way? I will look also at tossing cffi just to get a fresh start.
-kt
On Tue, Dec 26, 2017 at 1:55 PM, Faré fahree@gmail.com wrote:
Error: OPERATION instances must only be created through MAKE-OPERATION.
[condition type: FORMATTED-SYSTEM-DEFINITION-ERROR]
Is that an ASDF issue? Ceramic? ACL? cffi-grovel (the system being built when the error is thrown)?
You need a fresher version of cffi-grovel. Update your quicklisp and/or make sure you don't have an antique version of cffi in your local-projects and/or source-registry.
Does quicklisp use its own copy of ASDF for stability?
quicklisp provides an antique asdf 2.26 that is only loaded in even more antique implementations. All maintained implementations have been providing asdf 3.1 or later for over a year.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org C is a DSL for turning low-level byte arrays into security advisories.
-- Kenneth Tilton http://tiltontec.com/
-- Kenneth Tilton http://tiltontec.com/
On Tue, Dec 26, 2017 at 2:37 PM, Faré fahree@gmail.com wrote:
Why not make a backup and update all of quicklisp?
Great, simple idea. Thx!
But I am curious, I will first try to see why uninstall did not work. Over on my Mac ql did indeed grap cffi 19.
-kt
On Tue, Dec 26, 2017 at 7:43 PM, Ken Tilton kentilton@gmail.com wrote:
But I am curious, I will first try to see why uninstall did not work.
When you first install Quicklisp, it will download the latest dist. A dist is, among other things, a list of URLs pointing to project snapshots that are known to work well with each other. (This is one of the key features of Quicklisp!) Uninstalling a project then reinstalling it doesn't achieve much since Quicklisp will again grab the very same project version, as determined by the dist.
To update to the latest dist, you can use ql:update-all-dists. They're released monthly.
Cheers,
Thanks, Luis! I noticed update-all-dists too late, not sure how I missed it. I bravely attempted (ql:update :cffi) but of course no luck, I guess because you are saying:
A
dist is, among other things, a list of URLs pointing to project snapshots that are known to work well with each other.
But then the name "update-all-dists" seems off (checking my understanding). Does it not update-all-*projects* in the one current dist? Trying to answer my own question on The Google, I found this gem of a thread:
http://blog.quicklisp.org/2011/08/going-back-in-dist-time.html
...and the extensive :ql-dist package.
I guess I should not have skipped the instruction to contact Xach if I had any questions. :)
Thanks again, hk
On Wed, Dec 27, 2017 at 5:53 AM, Luís Oliveira luismbo@gmail.com wrote:
On Tue, Dec 26, 2017 at 7:43 PM, Ken Tilton kentilton@gmail.com wrote:
But I am curious, I will first try to see why uninstall did not work.
When you first install Quicklisp, it will download the latest dist. A dist is, among other things, a list of URLs pointing to project snapshots that are known to work well with each other. (This is one of the key features of Quicklisp!) Uninstalling a project then reinstalling it doesn't achieve much since Quicklisp will again grab the very same project version, as determined by the dist.
To update to the latest dist, you can use ql:update-all-dists. They're released monthly.
Cheers,
-- Luís Oliveira http://kerno.org/~luis/
In the future, when debugging something like this, where the environment into which you are loading code is of critical importance, and an ASDF issue is suspected, I suggest the following:
On the various implementations, do whatever you need to do to prepare to load the system that exhibits the error. Then try to load the system. After the system either loads successfully, or encounters an error, collect the value of `(ASDF:ASDF-VERSION)`.
That will be better than trying to guess what's being loaded, and will zero in on issues.
Best, r
On 26 Dec 2017, at 12:39, Ken Tilton wrote:
Speaking of ASDF, quicklisp loaded :ceramic OK into SBCL on Mac OS X but on Windows under AllegroCL Ansi I get:
Error: OPERATION instances must only be created through MAKE-OPERATION.
[condition type: FORMATTED-SYSTEM-DEFINITION-ERROR]
Is that an ASDF issue? Ceramic? ACL? cffi-grovel (the system being built when the error is thrown)?
Does quicklisp use its own copy of ASDF for stability?
I will try Clozure on Windows, but I would love to stick to AllegroCL's windows IDE.
-kt
On Wed, Dec 20, 2017 at 8:48 PM, Faré fahree@gmail.com wrote:
It looks like there is a bug in ASDF 3.3 worth definitely worth fixing before I leave: https://bugs.launchpad.net/asdf/+bug/1739514 Basically, ASDF fails spuriously rebuilds misnamed secondary systems and/or things that depend on them, instead of just issuing a warning as intended. (NB: there are a few hundred misnamed secondary systems in quicklisp.)
That's a good opportunity for another live debugging session some time next week. One that works this time. Please contact me via private email message if you want to be present. A public that asks useful questions would be useful.
I expect the total session to last about two to three hours from unwrapping the (reproducible) test case to filing the merge request. You don't have to attend all of it, and are welcome to leave or join part way.
This time, I will record locally so even a remote fiasco like last time won't prevent recording; however the session will probably be more didactic if there are attendees to ask relevant questions about what I'm doing.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Multiple instances of a same hacker with different context in his mental cache count as multiple hackers wrt documentation and testing needs.
On Mon, Dec 4, 2017 at 10:56 PM, Faré fahree@gmail.com wrote:
My second attempt at a live session was also ultimately a failure: there were interruptions, the rhythm was slow with lots of side issues, the microphone was unplugged at one point, etc., and it all lasted way too many hours with lots of down time. Happily, none of the two anonymous spectators stayed long anyway, so no one missed much.
That said, I battled and vanquished an interesting conundrum of bugs, all of them directly or indirectly related to code upgrade:
- Simplest and most obvious issue: ASDF 3.3.1 renamed STAMP< to
TIMESTAMP< because the API changed; this caused a naming conflict with LOCAL-TIME:TIMESTAMP<. Solution: in WORKOUT-TIMER's UIOP:DEFINE-PACKAGE, use the :MIX clause with LOCAL-TIME ahead of UIOP, instead of :USE. The backtrace pointed to the correct issue, the ASDF changelog and/or commit messages explained what it was about, this was obvious to find out and fix. https://gitlab.common-lisp.net/frideau/workout-timer/commit/
0e3f0104ddb26524f8445ddcf5e34dafe43aa8dd
- I had somehow compiled my SBCL with an old script that hadn't set
the SB-LINKABLE-RUNTIME feature; but CFFI-TOOLCHAIN failed to tell me, instead failing in a cryptic way. Solution: have CFFI proactively check for feature presence and issue a useful error message if absent. (This is loosely related to SBCL, because CFFI failed to detect that SBCL hadn't been upgraded to be compiled with this recent feature I added.) This issue was compounded by the fact that, while believing that it was an ASDF bug and trying to check at what point the bug appeared, other issues kept cropping up because of the bug below, and the fact that downgrading ASDF is itself quite tricky, unlike upgrading which is trivial. https://github.com/cffi/cffi/pull/127
- ASDF stored metadata in the :initform of operation class slots,
but then changes due to code upgrade were not visible because the slot was already initialized (yet upgrade previously worked, once, due to change of :allocation to :class). Solution: use defmethod, not slots. This is a deep issue. At root was my failing to take measure of how :initform would ultimately interact with software upgrade, when I originally wrote this code. And yet it worked well enough so far. Fixing the same potential issue with the (more stable but still evolvable) code in the core of ASDF will require applying the same solution to action.lisp all files that define new operations. This will impact backward compatibility and will require yet another round of going through Quicklisp fixing everything (not that many systems define new operations, but some do), and making big announcements.
Good task for a candidate future maintainer: well defined and predictable, and yet will get you around the core code of ASDF. https://gitlab.common-lisp.net/asdf/asdf/merge_requests/89
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
If you don't like yourself, you *can't* like other people. — Robert Heinlein, "Time Enough For Love"
On Mon, Dec 4, 2017 at 11:29 AM, Faré fahree@gmail.com wrote:
Well, after realizing one hour into the debugging session that I needed to click on a button "Start Broadcast" to go live, I'm going to reschedule the event, starting at 14:00 EST (19:00 UTC). Sorry.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
How small of all that human hearts endure That part which laws or kings can cause or cure! — Samuel Johnson
On Wed, Nov 29, 2017 at 7:24 PM, Faré fahree@gmail.com wrote:
After a kernel downgrade, I have painfully managed to get streaming to Youtube Live Events working. https://www.youtube.com/my_live_events
I'm tentatively scheduled an event at 10:00 EST (15:00 UTC) on next Monday December 4th 2017. https://www.youtube.com/watch?v=1kq-73Cjn08
I'll be using Hangouts on Air, and will send a message to these lists with the link before I go live, and also posting the link on my twitter https://twitter.com/Ngnghm
If you have requests for an alternate time slot, I'm open to moving
the session.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
What one person receives without working for, another person must work
for
without receiving. — Adrian Rogers
-- Kenneth Tilton http://tiltontec.com/
On 20 Dec 2017, at 19:48, Faré wrote:
It looks like there is a bug in ASDF 3.3 worth definitely worth fixing before I leave: https://bugs.launchpad.net/asdf/+bug/1739514 Basically, ASDF fails spuriously rebuilds misnamed secondary systems and/or things that depend on them, instead of just issuing a warning as intended.
Another editing query here. Looks like it might be either "ASDF fails to rebuild" or "ASDF spuriously rebuilds misnamed..."
Thanks, r
P.S. trying to catch up, but badly in arrears of ASDF matters.
Best, r
On 4 Dec 2017, at 21:56, Faré wrote:
Fixing the same potential issue with the (more stable but still evolvable) code in the core of ASDF will require applying the same solution to action.lisp all files that define new operations.
Will you please clarify this sentence? It looks like some editing error cost us some key words. Did you originally write "to action.lisp" and then decide it had to change to "to all files that define new operations"?
Thanks, r
On Wed, Dec 27, 2017 at 10:33 AM, Robert Goldman rpgoldman@sift.info wrote:
On 4 Dec 2017, at 21:56, Faré wrote:
Fixing the same potential issue with the (more stable but still evolvable) code in the core of ASDF will require applying the same solution to action.lisp all files that define new operations.
Will you please clarify this sentence? It looks like some editing error cost us some key words. Did you originally write "to action.lisp" and then decide it had to change to "to all files that define new operations"?
Oops, I meant to action.lisp AND all files that define new operations. Fixing action.lisp is trivial: change all the operation slots to methods. But *first* you need to change all clients to do the same, probably over a year (doing it in the other order doesn't work).
Alternatively, demand that suitable update-instance-for-redefined-class methods be written; but it's just as much work, and much more fragile. It's also slightly more backward compatible, especially if are aggressive bumping *oldest-forward-compatible-asdf-version*, but the fragility means that if someone makes an API call with an operation created before upgrade then things might go wrong (the operate :around method will catch that in the common case; but your uncommon case will be "interesting" to debug).
https://bugs.launchpad.net/asdf/+bug/1739514 Basically, ASDF fails spuriously rebuilds misnamed secondary systems and/or things that depend on them, instead of just issuing a warning as intended.
Another editing query here. Looks like it might be either "ASDF fails to rebuild" or "ASDF spuriously rebuilds misnamed..."
Yes, it's "ASDF spuriously rebuilds misnamed...".
Note that if it were a simple circular dependency, it would have just broken the build and be very visible and I'd have caught it last year.
Without having looked at the code or tried to debug it yet, my working hypothesis is that having "foo" in "foo.asd" depend on "bar" also defined in "foo.asd" causes dependency from (define-op "foo") to (define-op . "bar"), which is always in need of build because there is no "bar.asd" and the associated timestamp is therefore NIL. If that is correct, the backward-compatible solution would be to make sure that "bar" remembers that it was defined in "foo.asd", so that it gets the timestamp from "foo.asd", and the next time around, if there is no up-to-date "bar.asd", ASDF falls back on looking at the previously loaded "foo.asd" or a more up-to-date version of it.
Note that if "bar" is defined in both "foo.asd" and "bar.asd" you'll still have a mighty bug. Therefore people should still fix their code to properly name secondary system, ASDF should still issue a warning when they are misnamed, and this warning should still be upgraded to a cerror then an error when all of Quicklisp is fixed (>300 systems).
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Rocky's Lemma of Innovation Prevention Unless the results are known in advance, funding agencies will reject the proposal.
OK, I'm setting the day and time for the next ASDF debugging session to Tuesday January 2nd 2018 at 14:00 EST (19:00 UTC). Please send me a private email if you can make it, I'll add you to a Google Calendar event with a Hangout invitation.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org When it comes to giving, some men stop at nothing. — Saul Gorn
On Wed, Dec 27, 2017 at 6:06 PM, Faré fahree@gmail.com wrote:
On Wed, Dec 27, 2017 at 10:33 AM, Robert Goldman rpgoldman@sift.info wrote:
On 4 Dec 2017, at 21:56, Faré wrote:
https://bugs.launchpad.net/asdf/+bug/1739514 Basically, ASDF fails spuriously rebuilds misnamed secondary systems and/or things that depend on them, instead of just issuing a warning as intended.
Another editing query here. Looks like it might be either "ASDF fails to rebuild" or "ASDF spuriously rebuilds misnamed..."
Yes, it's "ASDF spuriously rebuilds misnamed...".
Note that if it were a simple circular dependency, it would have just broken the build and be very visible and I'd have caught it last year.
Without having looked at the code or tried to debug it yet, my working hypothesis is that having "foo" in "foo.asd" depend on "bar" also defined in "foo.asd" causes dependency from (define-op "foo") to (define-op . "bar"), which is always in need of build because there is no "bar.asd" and the associated timestamp is therefore NIL. If that is correct, the backward-compatible solution would be to make sure that "bar" remembers that it was defined in "foo.asd", so that it gets the timestamp from "foo.asd", and the next time around, if there is no up-to-date "bar.asd", ASDF falls back on looking at the previously loaded "foo.asd" or a more up-to-date version of it.
Note that if "bar" is defined in both "foo.asd" and "bar.asd" you'll still have a mighty bug. Therefore people should still fix their code to properly name secondary system, ASDF should still issue a warning when they are misnamed, and this warning should still be upgraded to a cerror then an error when all of Quicklisp is fixed (>300 systems).