[Clc-users] [Sbcl-devel] Re-loading of ASDF-based system where file, that contains defpackage form, is modified
Joubert Nel
joubert at joubster.com
Thu Dec 27 16:43:28 UTC 2007
Hi Rudi,
Thanks for taking the time to look at this.
On Thu, 2007-12-27 at 16:32 +0800, Rudi Schlatte wrote:
> Hi Joubert,
>
> I tried to reproduce your problem: I took the files you sent,
> commented out the second form in package.lisp, loaded via require,
> added the the form again and reloaded via require. Both lisp files
> were recompiled and reloaded without errors.
Since you're not seeing the error, here's a variation where I hope you
will:
Attached are the same files with a slight modification.
Functions.lisp has another (defun) and and an explicit (export) form.
To repro:
1) Do a (require).
2) Now comment out the (format) form in the package.lisp file and save.
3) Evaluate (require). Boom!
I received a note from Christophe mentioning that the result when
changing a (defpackage) form inbetween evaluating successive (require)
forms, is undefined.
However, I'm *not* modifying the (defpackage) form itself, merely stuff
inside the package. It seems like a subtle, but definite distinction.
(Note: I found this behavior in the project I'm currently working on,
and the attached example is not an exact replica of my code, but shows
the same end-result.)
> Note that the file condition.txt that you attached does not contain
> the actual error output, just asdf telling you (via cerror) that there
> was some problem earlier. If you send a complete transcript, starting
> with the line (require :pak) entered by you at the REPL, I can have a
> look - otherwise I can only say "works for me", unfortunately ...
Here is the output when I evaluate (require :pak) after making the
changes to functions.lisp and package.lisp.
I get the content of the condition.txt file, and if I choose the "abort"
restart, see this:
CL-USER> (require :pak)
; compiling file "/tank/code/lisp/test-packaging/package.lisp" (written
27 DEC 2007 11:24:10 AM):
; compiling (IN-PACKAGE :CL-USER)
; compiling (DEFPACKAGE :PAK ...)
;
; caught WARNING:
; PAK also exports the following symbols:
; (PAK:FUNC3)
; See also:
; The ANSI Standard, Macro DEFPACKAGE
; /var/cache/common-lisp-controller/1000/sbcl/local/tank/code/lisp/test-packaging/package.fasl written
; compilation finished in 0:00:00
WARNING:
COMPILE-FILE warned while performing #<COMPILE-OP NIL {B0EED91}> on
#<CL-SOURCE-FILE "package" {AA23AA1}>.
;
; compilation unit aborted
; caught 1 fatal ERROR condition
; caught 1 WARNING condition
; Evaluation aborted.
CL-USER>
If I choose the "accept" restart, then there's no indication of an error
condition.
Hope this helps.
Joubert
-------------- next part --------------
erred while invoking #<COMPILE-OP NIL {AE191E1}> on
#<CL-SOURCE-FILE "package" {B065A49}>
[Condition of type ASDF:COMPILE-FAILED]
Restarts:
0: [RETRY] Retry performing #<ASDF:COMPILE-OP NIL {AE191E1}> on #<ASDF:CL-SOURCE-FILE "package" {B065A49}>.
1: [ACCEPT] Continue, treating #<ASDF:COMPILE-OP NIL {AE191E1}> on #<ASDF:CL-SOURCE-FILE "package" {B065A49}> as having been successful.
2: [ABORT] Return to SLIME's top level.
3: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" {B436311}>)
Backtrace:
0: ((SB-PCL::FAST-METHOD ASDF:PERFORM
(ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE))
#<unavailable argument>
#<unavailable argument>
#<ASDF:COMPILE-OP NIL {AE191E1}>
#<ASDF:CL-SOURCE-FILE "package" {B065A49}>)
Locals:
SB-DEBUG::ARG-0 = :<NOT-AVAILABLE>
SB-DEBUG::ARG-1 = :<NOT-AVAILABLE>
SB-DEBUG::ARG-2 = #<ASDF:COMPILE-OP NIL {AE191E1}>
SB-DEBUG::ARG-3 = #<ASDF:CL-SOURCE-FILE "package" {B065A49}>
1: ((LAMBDA
(SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0.
SB-PCL::.ARG1.))
#<unavailable argument>
#<unavailable argument>
#<ASDF:COMPILE-OP NIL {AE191E1}>
#<ASDF:CL-SOURCE-FILE "package" {B065A49}>)
2: ((LAMBDA ()))
[No Locals]
3: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK))
[No Locals]
4: (SB-UNIX::CALL-WITH-LOCAL-INTERRUPTS
#<CLOSURE (FLET SB-UNIX::WITH-LOCAL-INTERRUPTS-THUNK) {B645281D}>
T)
Locals:
SB-DEBUG::ARG-0 = #<CLOSURE (FLET SB-UNIX::WITH-LOCAL-INTERRUPTS-THUNK) {B645281D}>
SB-DEBUG::ARG-1 = T
5: ((FLET SB-UNIX::WITHOUT-INTERRUPTS-THUNK) T)
6: ((FLET SB-UNIX::RUN-WITHOUT-INTERRUPTS))
7: (SB-UNIX::CALL-WITHOUT-INTERRUPTS
#<CLOSURE (FLET SB-UNIX::WITHOUT-INTERRUPTS-THUNK) {B645290D}>)
8: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK
#<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK) {B645298D}>
#S(SB-THREAD:MUTEX
:NAME "big compiler lock"
:%OWNER #<SB-THREAD:THREAD "repl-thread" {B436311}>
:STATE 1))
9: (SB-C::%WITH-COMPILATION-UNIT #<CLOSURE (LAMBDA #) {AE247FD}>)
10: (ASDF:OPERATE ASDF:LOAD-OP :PAK)
11: (ASDF::MODULE-PROVIDE-ASDF :PAK)
12: ((LAMBDA (#:G[REQUIRE]18)) ASDF::MODULE-PROVIDE-ASDF)
13: (SB-IMPL::%MAP-FOR-EFFECT-ARITY-1
#<CLOSURE (LAMBDA #) {ADC5D8D}>
(ASDF::MODULE-PROVIDE-ASDF SB-IMPL::MODULE-PROVIDE-CONTRIB))
14: (REQUIRE :PAK NIL)
15: (SB-INT:SIMPLE-EVAL-IN-LEXENV (REQUIRE :PAK) #<NULL-LEXENV>)
16: (SWANK::EVAL-REGION
"(require :pak)
")
17: ((LAMBDA ()))
18: (SWANK::TRACK-PACKAGE #<CLOSURE (LAMBDA #) {ADC5995}>)
19: ((LAMBDA (SWANK-BACKEND::FN)) #<CLOSURE (LAMBDA #) {ADC597D}>)
20: (SWANK::CALL-WITH-BUFFER-SYNTAX #<CLOSURE (LAMBDA #) {ADC597D}>)
21: (SWANK::REPL-EVAL
"(require :pak)
")
22: (SB-INT:SIMPLE-EVAL-IN-LEXENV
(SWANK:LISTENER-EVAL "(require :pak)
")
#<NULL-LEXENV>)
23: ((LAMBDA ()))
24: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN))
#<FUNCTION SWANK:SWANK-DEBUGGER-HOOK>
#<CLOSURE (LAMBDA #) {ADC584D}>)
25: ((LAMBDA ()))
26: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN))
#<FUNCTION SWANK:SWANK-DEBUGGER-HOOK>
#<FUNCTION (LAMBDA #) {B9FF66D}>)
27: (SWANK::CALL-WITH-REDIRECTED-IO
#<SWANK::CONNECTION {B31DE89}>
#<CLOSURE (LAMBDA #) {ADC5795}>)
28: (SWANK::CALL-WITH-CONNECTION
#<SWANK::CONNECTION {B31DE89}>
#<FUNCTION (LAMBDA #) {B9FF66D}>)
29: (SWANK::HANDLE-REQUEST #<SWANK::CONNECTION {B31DE89}>)
30: (SWANK::REPL-LOOP #<SWANK::CONNECTION {B31DE89}>)
31: (SWANK::REPL-LOOP #<SWANK::CONNECTION {B31DE89}>)
32: (SWANK::CALL-WITH-BINDINGS NIL #<CLOSURE (LAMBDA #) {B4450A5}>)
33: ((FLET SB-THREAD::WITH-MUTEX-THUNK))
34: (SB-UNIX::CALL-WITH-LOCAL-INTERRUPTS
#<CLOSURE (FLET SB-UNIX::WITH-LOCAL-INTERRUPTS-THUNK) {B645309D}>
T)
35: ((FLET SB-UNIX::WITHOUT-INTERRUPTS-THUNK) T)
36: ((FLET SB-UNIX::RUN-WITHOUT-INTERRUPTS))
37: (SB-UNIX::CALL-WITHOUT-INTERRUPTS
#<CLOSURE (FLET SB-UNIX::WITHOUT-INTERRUPTS-THUNK) {B645318D}>)
38: (SB-THREAD::CALL-WITH-MUTEX
#<CLOSURE (FLET SB-THREAD::WITH-MUTEX-THUNK) {B6453215}>
#S(SB-THREAD:MUTEX
:NAME "thread result lock"
:%OWNER #<SB-THREAD:THREAD "repl-thread" {B436311}>
:STATE 1)
#<SB-THREAD:THREAD "repl-thread" {B436311}>
T)
39: ((LAMBDA ()))
40: ("foreign function: #x806398C")
41: ("foreign function: #x8051E61")
42: ("foreign function: #x805B44D")
43: ("foreign function: #xB7FB84FB")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pak.asd
Type: text/lisp-sysdef
Size: 188 bytes
Desc: not available
Url : http://lists.alioth.debian.org/pipermail/clc-users/attachments/20071227/48adf702/attachment.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: package.lisp
Type: text/lisp-source
Size: 123 bytes
Desc: not available
Url : http://lists.alioth.debian.org/pipermail/clc-users/attachments/20071227/48adf702/attachment-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: functions.lisp
Type: text/lisp-source
Size: 184 bytes
Desc: not available
Url : http://lists.alioth.debian.org/pipermail/clc-users/attachments/20071227/48adf702/attachment-0002.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.alioth.debian.org/pipermail/clc-users/attachments/20071227/48adf702/attachment.pgp
More information about the Clc-users
mailing list