Dear ASDF developers,
I've committed to *a new repo* a few ASDF hacks that I wrote. I'd like some of you to review and/or test it. I'd like to get it reviewed before I push those changes to the official repo.
git clone http://common-lisp.net/project/xcvb/git/asdf.git cd asdf git diff -u -a -b 1f7690b49b73b499ff2bd2ad77ec23c273941814 60165185516e699d0daebd0b653e61b83e72d4e6
The main changes are:
* Merged the ECL patch. Had to remove a #+ecl in a slot declaration, because the slot is used afterwards without #+ecl.
* Limited support to upgrade from a previous installation (if you have old installations, please try to upgrade!).
* Notably created an asdf.asd so you can try to (require :asdf) (pushnew "/path/to/asdf/" asdf:*central-registry*) (asdf:oos 'asdf:load-op :asdf)
* Some whitespace normalization (hence use -b in diff above).
There are more things to do before we can declare asdf fully upgradable, but that's a first step. When all is done, there will be less pressure to synchronize with CL implementers to upgrade before a new feature can be relied upon. See https://bugs.launchpad.net/asdf/+bug/485687
Known issues (juanjo, help appreciated):
$ ecl -eval "(require :asdf)" -load "asdf.lisp" ==> works $ ecl -eval "(require :asdf)" -eval "(asdf:oos 'asdf:load-op :asdf)" ==> fails
;;; Finished compiling /home/fare/cl/asdf/asdf.lisp. An error occurred during initialization: NIL is not of type HASH-TABLE..
Fails with both ECL 9.10.2 from debian and ECL 9.11.1 from a semi-recent clbuild.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] To make an apple pie from scratch, you must first create the universe. -- Carl Sagan
On Mon, Nov 30, 2009 at 10:17 PM, Faré fahree@gmail.com wrote:
Known issues (juanjo, help appreciated):
$ ecl -eval "(require :asdf)" -load "asdf.lisp" ==> works $ ecl -eval "(require :asdf)" -eval "(asdf:oos 'asdf:load-op :asdf)" ==> fails
;;; Finished compiling /home/fare/cl/asdf/asdf.lisp. An error occurred during initialization: NIL is not of type HASH-TABLE..
Does not happen with the version of ECL to be released. The older one has probably a too old version of ASDF to do a clean upgrade.
Juanjo
2009/12/1 Juan Jose Garcia-Ripoll juanjose.garciaripoll@googlemail.com:
On Mon, Nov 30, 2009 at 10:17 PM, Faré fahree@gmail.com wrote:
Known issues (juanjo, help appreciated):
$ ecl -eval "(require :asdf)" -load "asdf.lisp" ==> works $ ecl -eval "(require :asdf)" -eval "(asdf:oos 'asdf:load-op :asdf)" ==> fails
;;; Finished compiling /home/fare/cl/asdf/asdf.lisp. An error occurred during initialization: NIL is not of type HASH-TABLE..
Does not happen with the version of ECL to be released. The older one has probably a too old version of ASDF to do a clean upgrade.
OK, but then, I may as well drop the ECL-specific code I inserted to support upgrade from an older ASDF.
Also, I deplore that errors occuring during initialization leave very little chance of debugging to the normal ECL user; I wouldn't even know where to insert break points for gdb.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] The rule is perfect: in all matters of opinion our adversaries are insane. -- Mark Twain
On Tue, Dec 1, 2009 at 12:17 PM, Faré fahree@gmail.com wrote:
OK, but then, I may as well drop the ECL-specific code I inserted to support upgrade from an older ASDF.
I would say that we can focus on ensuring that ASDF can be upgraded for ECL >= 9.12.1 and leave the older versions out.
Also, I deplore that errors occuring during initialization leave very little chance of debugging to the normal ECL user; I wouldn't even know where to insert break points for gdb.
The ECL command line arguments -load and -eval are not intended to open a debugger. Their primary use is scripting, where you do not want interaction with the user.
A different issue is whether you would get a debugger doing the same thing in the command line -- probably the extensions (ASDF, sockets, etc) are currently compiled without debug information, but I would have to look it up.
Juanjo
OK for not supporting too an upgrade of an ASDF that is too old, only supporting an upgrade going forward. To me that means that we should try very hard to get upgradability (and configurability) right, then try to push for a "simultaneous" distribution of the upgradable ASDF to all implementations, and then declare future such distributions not necessary anymore.
However I'd still like to try one more time to get upgradability working for an older ECL, for not only is it a good exercise in preparation for the future, in addition to a minor feature -- if we can debug it for ECL, that might probably help with other implementations, too.
ECL-specific notes (please follow up only to the ECL list for these issues): when I run from the command-line, I get a debugger, but no debugging information for the frames above the ASDF invocation. So yes, maybe the solution is to re-compile asdf.fas with debugging information. How do I do that?
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] Success is getting what you want. Happiness is wanting what you get. -- Dale Carnegie
2009/12/1 Juan Jose Garcia-Ripoll juanjose.garciaripoll@googlemail.com:
On Tue, Dec 1, 2009 at 12:17 PM, Faré fahree@gmail.com wrote:
OK, but then, I may as well drop the ECL-specific code I inserted to support upgrade from an older ASDF.
I would say that we can focus on ensuring that ASDF can be upgraded for ECL >= 9.12.1 and leave the older versions out.
Also, I deplore that errors occuring during initialization leave very little chance of debugging to the normal ECL user; I wouldn't even know where to insert break points for gdb.
The ECL command line arguments -load and -eval are not intended to open a debugger. Their primary use is scripting, where you do not want interaction with the user.
A different issue is whether you would get a debugger doing the same thing in the command line -- probably the extensions (ASDF, sockets, etc) are currently compiled without debug information, but I would have to look it up.
Juanjo
On Tue, Dec 1, 2009 at 4:34 PM, Faré fahree@gmail.com wrote:
OK for not supporting too an upgrade of an ASDF that is too old, only supporting an upgrade going forward. To me that means that we should try very hard to get upgradability (and configurability) right, then try to push for a "simultaneous" distribution of the upgradable ASDF to all implementations, and then declare future such distributions not necessary anymore.
I am willing to help in whatever I can.
However I'd still like to try one more time to get upgradability working for an older ECL, for not only is it a good exercise in preparation for the future, in addition to a minor feature -- if we can debug it for ECL, that might probably help with other implementations, too.
No problem. I will have to dust off the older tarballs, though.
ECL-specific notes (please follow up only to the ECL list for these issues): when I run from the command-line, I get a debugger, but no debugging information for the frames above the ASDF invocation. So yes, maybe the solution is to re-compile asdf.fas with debugging information. How do I do that?
After configuring, you will get a file build/compile.lsp with a text that says
;;; ;;; * ASDF ;;; #+WANTS-ASDF (build-module "asdf" '("ext:asdf;asdf.lisp" "ext:asdf;asdf-ecl.lisp") :dir "build:ext;" :prefix "EXT" :builtin #+:BUILTIN-ASDF t #-:BUILTIN-ASDF nil)
You can add proclamations before that. I should probably add them to the code itself.
Another possibility for better debuggability is to use the original sources:
$ ecl ...
(load "/path/to/old/ecl/sources/contrib/asdf/asdf") (load "/path/to/old/ecl/sources/contrib/asdf/asdf-ecl") (asdf:oos 'asdf:load-op :asdf)
Juanjo
On Mon, 2009-11-30 at 16:17 -0500, Faré wrote:
Dear ASDF developers,
I've committed to *a new repo* a few ASDF hacks that I wrote. I'd like some of you to review and/or test it. I'd like to get it reviewed before I push those changes to the official repo.
git clone http://common-lisp.net/project/xcvb/git/asdf.git cd asdf git diff -u -a -b 1f7690b49b73b499ff2bd2ad77ec23c273941814 60165185516e699d0daebd0b653e61b83e72d4e6
The main changes are:
- Merged the ECL patch. Had to remove a #+ecl in a slot declaration,
because the slot is used afterwards without #+ecl.
- Limited support to upgrade from a previous installation (if you have
old installations, please try to upgrade!).
- Notably created an asdf.asd so you can try to
(require :asdf) (pushnew "/path/to/asdf/" asdf:*central-registry*) (asdf:oos 'asdf:load-op :asdf)
I'm not sure that this is a good idea. When evaluating (asdf:oos 'asdf:load-op :asdf) you'd be redefining asdf:load-op from inside the old asdf:load-op. I'd be surprised if it didn't cause problems in some (perhaps old) compilers.