On Oct 5, 2010, at 3:25 PM, Ryan Culpepper wrote: > I seem to have mangled my response right before sending it. Here it is again, > hopefully straightened out. > > On 10/05/2010 03:59 PM, John Clements wrote: >> A couple of weeks ago, you showed me the trick that rackunit uses to allow >> single-instantiation of a modules. I'm now trying to do this >> for a planet package, and it looks like I have to change the required module >> from being a relative to being an absolute path. That is: >> >> (require (prefix-in drlink: private/drracket-link)) > > I assume (hope) you meant > (require (prefix-in drlink: "private/drracket-link.rkt")) > > for the relative require.
yes, of course. My mistake.
>> must become
>>
>> (require (prefix-in drlink: (planet "drracket-link.rkt" ("clements"
>> "rsound.plt") "private")))
>>
>> This works, but seems extremely fragile. Does it make sense to you that
>> this would be required? Without it, I get the error below:
>
> From what I recall, the call to namespace-module-attach must use the correct
> absolute module path, but the require can be relative. I confirmed that
> that's how the last PLaneT version of schemeunit that included the tool
> (version (2 12)) did it.
>
> It looks like you're using a PLaneT development link. Perhaps that's the
> source of the problem?
>
> How about dropping the following code into drracket-link.rkt so it prints out
> its (absolute) resolved module path when it gets required from the tool.
>
> (eprintf "drracket-link.rkt = ~s\n"
> (resolved-module-path-name
> (variable-reference->resolved-module-path
> (#%variable-reference))))
wait... isn't that part of the error message I attached earlier? Viz:
namespace-attach-module: unknown module (in the source namespace):
#<resolved-module-path:"/Users/clements/clements/planet-collects/rsound/private/drracket-link.rkt">
=== context ===
/Users/clements/plt/collects/drracket/private/rep.rkt:1660:6:
initialize-console method in ...cket/private/rep.rkt:508:4
/Users/clements/plt/collects/drracket/private/unit.rkt:4755:4:
create-new-drscheme-frame
/Users/clements/plt/collects/drracket/private/main.rkt:663:0: make-basic
/Users/clements/plt/collects/drracket/tool-lib.rkt: [running body]
/Users/clements/plt/collects/drracket/private/drracket-normal.rkt: [running
body]
/Users/clements/plt/collects/drracket/drracket.rkt: [running body]
John
> ;; --
>
> Another thing to consider, if you're going to be distributing this code via
> PLaneT, is that users will have to restart DrRacket after installing the
> package so the tool can take effect.
>
> Ryan
smime.p7s
Description: S/MIME cryptographic signature
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev

