Hi Sam, I was replacing net/url, but with a copy of the system library which I was modifying in a way that would not alter the existing public interface. I was relying on some external packages like racket-couchdb that I'd rather keep working as-is in terms of the net/url interface. At least at that time I thought then that this was an important consideration.
However, I've found that there are a few changes I should make to net/*l that will indeed break dependencies. And once you start down that road, the fun never stops. Then it took just a couple of minutes to rename my copy of the "net" directory and all references in dependencies. Still, I do think this is a useful case to support (i.e. shadowing a system collection), and works well enough with DrRacket. Erik. On Tue, Oct 22, 2013 at 6:19 PM, Sam Tobin-Hochstadt <sa...@cs.indiana.edu>wrote: > On Tue, Oct 22, 2013 at 8:54 PM, Erik Pearson <e...@adaptations.com> > wrote: > > Thanks. > > > > raco link -d <collections-dir> is working, that is, my collections are > > found, although I still have one little problem. The precedence of my > linked > > collection directory seems to be lower than for the built-in collections. > > With the explicit collections directory setting in drracket I'm able to > set > > the github directory higher, which allows me to shadow built-in > collections. > > Now my code is loading the built in collection, rather than the > replacement > > I'm using. > > > > A workaround could be to rename the replacement collection (net), which > is > > not a big deal, but inconvenient. > > > > Please let me know if I'm wrong about this. Otherwise, is there a > > recommended way to shadow a system collection? > > One question: are you replacing actual system libraries, or just > adding new things to, for example, the `net` collection? > > If you're just adding `net/quic` or something like that, then the > precedence shouldn't matter. > > If you're actually _replacing_ something like `net/url`, then that's > more worrying, because it will potentially cause parts of Racket to > break. > > Sam > > > > > Thanks, Erik. > > > > > > On Tue, Oct 22, 2013 at 4:42 PM, Sam Tobin-Hochstadt < > sa...@cs.indiana.edu> > > wrote: > >> > >> On Tue, Oct 22, 2013 at 7:36 PM, Greg Hendershott > >> <greghendersh...@gmail.com> wrote: > >> > I think the equivalent to DrRacket's Collection Paths setting might be > >> > to use the PLTCOLLECTS environment variable? See: > >> > > >> > http://docs.racket-lang.org/reference/collects.html > >> > > >> > Also there are a number of command-line flags; I'm not sure which > >> > corresponds to exactly what you need: > >> > > >> > $ racket -h > >> > ... > >> > -X <dir>, --collects <dir> : Main collects at <dir> (or "" disables > >> > all) > >> > -S <dir>, --search <dir> : More collects at <dir> (after main > >> > collects) > >> > -A <dir>, --addon <dir> : Addon directory at <dir> > >> > -R <paths>, --compiled <paths> : Set compiled-file search roots to > >> > <paths> > >> > -C <file>, --links <file> : User-specific collection links at <file> > >> > ... > >> > >> `-S` is the one that's like `PLTCOLLECTS`. > >> > >> But more generally, I would strongly encourage Erik (and others) not > >> to use PLTCOLLECTS or its analogues, but instead to use the package > >> system (or `raco link`). > >> > >> `raco link` is probably the simplest thing to do here, like so: > >> > >> raco link -d /home/epearson/work/racket/github > >> > >> That should set up all the collections you have. > >> > >> Better still would be to set up a package, even one locally that you > >> don't distribute. > >> > >> Sam > >> > >> > >> > > >> > On Tue, Oct 22, 2013 at 4:39 PM, Erik Pearson <e...@adaptations.com> > >> > wrote: > >> >> Hi, > >> >> I've just switched over to the Racket github master from 5.3.6. It is > >> >> set up > >> >> well enough that development proceeds normally. I have setup a > >> >> collection > >> >> directory which contains libraries that I'm developing and upon which > >> >> my > >> >> main projects depend. For DrRacket work I have used Language -> > Choose > >> >> Language ... -> Collection Paths to set this up, putting my > collection > >> >> path > >> >> at the top so that it can override the system path if it needs to. > >> >> Works > >> >> great. > >> >> > >> >> But this Collection Paths setting does not seem to be honored by > Racket > >> >> -> > >> >> Create Executable. Similarly from the command line raco exe does not > >> >> seem to > >> >> be using these preferences, nor can I figure out how to tell raco to > >> >> use my > >> >> collection directory. > >> >> > >> >> The specific error message I am getting is: > >> >> > >> >> /home/epearson/work/racket/coco/scgi-server.rkt:4:8: collection not > >> >> found > >> >> for module path: (lib "racqueb/scgi2") > >> >> collection: "racqueb" > >> >> in collection directories: > >> >> /home/epearson/.racket/development/collects > >> >> /home/epearson/work/racket/plt/plt/racket/collects > >> >> context...: > >> >> show-collection-err > >> >> standard-module-name-resolver > >> >> standard-module-name-resolver > >> >> > >> >> > >> >> > /home/epearson/work/racket/plt/plt/racket/collects/compiler/embed.rkt:394:0: > >> >> get-code > >> >> > >> >> > >> >> > /home/epearson/work/racket/plt/plt/racket/collects/compiler/embed.rkt:993:0: > >> >> do-write-module-bundle > >> >> > >> >> > >> >> > /home/epearson/work/racket/plt/plt/racket/collects/compiler/embed.rkt:1517:51 > >> >> > >> >> > >> >> > /home/epearson/work/racket/plt/plt/racket/collects/compiler/private/elf.rkt:190:6: > >> >> temp19 > >> >> > >> >> As you can see, is using the default collection paths, and not the > one > >> >> that > >> >> I've added via DrRacket preferences, which would be > >> >> /home/epearson/work/racket/github. > >> >> > >> >> So, the question is -- first, I guess this might be considered a bug > in > >> >> DrRacket -- since Create Executable is not using the same collection > >> >> paths > >> >> as the IDE? Second, is there a way to supply raco exe and distribute > >> >> with a > >> >> new collection path? Ideally I would just supply a new one which is > >> >> added to > >> >> the top of the path list, but I could also just reconstruct the > >> >> collection > >> >> path list from scratch if need be. (The docs for > >> >> create-embedding-executable > >> >> imply this.) > >> >> > >> >> (BTW I'm not implying that anything has changed in this regard from > >> >> 5.3.6. > >> >> In 5.3.6 I had used links to the individual libraries, but in github > >> >> master > >> >> I had switched to using the collection paths, which is less > maintenance > >> >> and > >> >> allows seamless shadowing of system libraries with custom > >> >> replacements.) > >> >> > >> >> Thanks, > >> >> Erik. > >> >> > >> >> > >> >> ____________________ > >> >> Racket Users list: > >> >> http://lists.racket-lang.org/users > >> >> > >> > ____________________ > >> > Racket Users list: > >> > http://lists.racket-lang.org/users > > > > > > > > > > -- > > Erik Pearson > > Adaptations > > ;; web form and function > -- Erik Pearson Adaptations ;; web form and function
____________________ Racket Users list: http://lists.racket-lang.org/users