[racket-dev] Planet require gone wild

From: Ryan Culpepper (ryanc at ccs.neu.edu)
Date: Fri Aug 2 11:50:41 EDT 2013

I think you just ran into all of the problems with planet1 at the same 
time. I started with kazzmir/peg and browsed sources, and as far as I 
can tell, all of the packages you got are actually transitively required 
by kazzmir/peg. So it's not a PLaneT implementation bug.

It looks like there's a chance to cut out most of the other packages by 
some small changes to schemeunit. I'll see if I can do that.

Here are my notes as of the point where I got tired of chasing links. 
The best part is when kazzmir/peg (a Packrat parsing library) depends on 
bzlib/parseq (a combinator-based parsing library)---with six degrees of 
separation.

peg -> memoize

memoize -> schemeunit:3 (for testing)

schemeunit:3 -> sake:1 (in build.ss !!)
              -> require:1:3 (in check-test.ss)

sake:1 -> schemeunit:3
        -> unlib:3 (in base.ss)
        -> galore:4

unlib:3 -> planet package directories
         -> autoplanet:1 (from autoplanet.ss)
         -> cce/scheme:6 (from base.ss)
         -> bzlib/date:1 (same)
         -> bzlib/date-tz:1 (same)
         -> schematics/namespace:1 (same)
         -> schematics/schemeunit:3 (same)

autoplanet:1 -> schemeunit:3

bzlib/date:1 -> bzlib/base:1 (from depend.ss)
              -> bzlib/parseq:1 (same)

bzlib/date-tz:1 -> bzlib/base:1 (from depend.ss)
                 -> bzlib/file:1 (same)
                 -> bzlib/date:1 (same)

bzlib/base:1 -> zitterbewegung/uuid-v4:1

....

Ryan


On 08/01/2013 09:57 PM, Greg Hendershott wrote:
> p.s. The About text from DrRacket is:
>
> Welcome to DrRacket, version 5.90.0.3--2013-07-30(c126a8aa/d), english by PLT.
>
> Just to confirm I ran the DrRacket built from HEAD = c126a8a, not an
> older version by accident.
>
>
> On Thu, Aug 1, 2013 at 9:55 PM, Greg Hendershott
> <greghendershott at gmail.com> wrote:
>> I'm running HEAD = c126a8a from about 1 week ago.
>>
>> I wanted to try the PEG Planet 1 package.
>>
>> My source file was simply this:
>>
>>      #lang racket
>>      (require (planet kazzmir/peg:2:0/peg))
>>
>> 1. Using command-line Racket, I got:
>>
>> Welcome to Racket v5.90.0.3.
>> ; uncaught exception:
>> '#&"/Users/greg/src/scheme/collects/markdown/markdown/peg.rkt"
>>
>> Huh.
>>
>> I had the bright idea of trying this again, in DrRacket 5.90.0.3.
>>
>> 2. Right away, I got a red message:
>>
>> make-directory: forbidden (write) access to
>> /Users/greg/Library/Racket/planet/300/5.90.0.3
>>
>> Strange...
>>
>> 3. Perhaps dumbly, I decided to hit Run, anyway.
>>
>> What happened is that it installed a LOT of Planet packages. I let it
>> run for awhile, thinking maybe there were more dependencies for `peg'
>> than I realized. But the names flying by were making less and less
>> sense. I got worried it was running wild and doing something like
>> maybe trying to install ALL Planet packages.
>>
>> Plus then it started spitting out the following in the eval pane:
>>
>> Welcome to DrRacket, version 5.90.0.3--2013-07-30(c126a8aa/d) [3m].
>> Language: racket [custom]; memory limit: 2048 MB.
>> Library/Racket/planet/300/5.90.0.3/cache/cce/scheme.plt/6/3/class.ss:36:16:
>> module: identifier is already imported
>>    at: send+
>>    in: (define-syntaxes (send+) (new-lambda (stx) (syntax-case stx ()
>> ((s+ expr clause ...) (syntax/loc stx (let* ((obj expr)) (send obj .
>> clause) ... obj))))))
>> Library/Racket/planet/300/5.90.0.3/cache/cce/scheme.plt/6/3/contract.ss:319:30:
>> proj-get: unbound identifier in module
>>    in: proj-get
>> Library/Racket/planet/300/5.90.0.3/cache/cce/scheme.plt/6/3/contract.ss:319:30:
>> proj-get: unbound identifier in module
>>    in: proj-get
>> raco setup: error: during making for <planet>/cce/scheme.plt/6/3
>> (Scheme Utilities: (planet cce/scheme))
>> raco setup:   Library/Racket/planet/300/5.90.0.3/cache/cce/scheme.plt/6/3/class.ss:36:16:
>> module: identifier is already imported
>> raco setup:     at: send+
>> raco setup:     in: (define-syntaxes (send+) (new-lambda (stx)
>> (syntax-case stx () ((s+ expr clause ...) (syntax/loc stx (let* ((obj
>> expr)) (send obj . clause) ... obj))))))
>> raco setup: error: during making for <planet>/cce/scheme.plt/6/3/reference
>> raco setup:   Library/Racket/planet/300/5.90.0.3/cache/cce/scheme.plt/6/3/contract.ss:319:30:
>> proj-get: unbound identifier in module
>> raco setup:     in: proj-get
>> raco setup: error: during Building docs for
>> /Users/greg/Library/Racket/planet/300/5.90.0.3/cache/cce/scheme.plt/6/3/reference/manual.scrbl
>> raco setup:   Library/Racket/planet/300/5.90.0.3/cache/cce/scheme.plt/6/3/contract.ss:319:30:
>> proj-get: unbound identifier in module
>> raco setup:     in: proj-get
>> Library/Racket/planet/300/5.90.0.3/cache/cce/scheme.plt/6/3/contract.ss:319:30:
>> proj-get: unbound identifier in module
>>    in: proj-get
>> Library/Racket/planet/300/5.90.0.3/cache/cce/scheme.plt/6/3/contract.ss:319:30:
>> proj-get: unbound identifier in module
>>    in: proj-get
>> . . ../../../../../../../../../../../src/plt/racket/racket/collects/setup/private/omitted-paths.rkt:71:2:
>> user break
>> . . src/plt/racket/racket/collects/planet/private/resolver.rkt:606:8: user break
>>>
>>
>> So I hit Stop in DrRacket (as you see from "user break").  Whew.
>>
>> 4. Here's everything it just installed. The only 2 I expected were
>> `peg' and `memoize`:
>>
>>    /Users/greg/Library/Racket/planet/300/5.90.0.3/cache:
>>    total used in directory 0 available 146890512
>>    drwxr-xr-x  10 greg  staff  340 Aug  1 21:34 .
>>    drwxr-xr-x   5 greg  staff  170 Aug  1 21:32 ..
>>    drwxr-xr-x   9 greg  staff  306 Aug  1 21:33 bzlib
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:34 cce
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 dherman
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 kazzmir
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 ryanc
>>    drwxr-xr-x   5 greg  staff  170 Aug  1 21:35 schematics
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 untyped
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 zitterbewegung
>>
>>    /Users/greg/Library/Racket/planet/300/5.90.0.3/cache/bzlib:
>>    total used in directory 0 available 146891616
>>    drwxr-xr-x   9 greg  staff  306 Aug  1 21:33 .
>>    drwxr-xr-x  10 greg  staff  340 Aug  1 21:34 ..
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 base.plt
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 date-tz.plt
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 date.plt
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 file.plt
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 os.plt
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 parseq.plt
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 port.plt
>>
>>    /Users/greg/Library/Racket/planet/300/5.90.0.3/cache/cce:
>>    total used in directory 0 available 146891608
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:34 .
>>    drwxr-xr-x  10 greg  staff  340 Aug  1 21:34 ..
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:34 scheme.plt
>>
>>    /Users/greg/Library/Racket/planet/300/5.90.0.3/cache/dherman:
>>    total used in directory 0 available 146891608
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 .
>>    drwxr-xr-x  10 greg  staff  340 Aug  1 21:34 ..
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 memoize.plt
>>
>>    /Users/greg/Library/Racket/planet/300/5.90.0.3/cache/kazzmir:
>>    total used in directory 0 available 146891600
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 .
>>    drwxr-xr-x  10 greg  staff  340 Aug  1 21:34 ..
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 peg.plt
>>
>>    /Users/greg/Library/Racket/planet/300/5.90.0.3/cache/ryanc:
>>    total used in directory 0 available 146891600
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 .
>>    drwxr-xr-x  10 greg  staff  340 Aug  1 21:34 ..
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 require.plt
>>
>>    /Users/greg/Library/Racket/planet/300/5.90.0.3/cache/schematics:
>>    total used in directory 0 available 146891592
>>    drwxr-xr-x   5 greg  staff  170 Aug  1 21:35 .
>>    drwxr-xr-x  10 greg  staff  340 Aug  1 21:34 ..
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:35 namespace.plt
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 sake.plt
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:32 schemeunit.plt
>>
>>    /Users/greg/Library/Racket/planet/300/5.90.0.3/cache/untyped:
>>    total used in directory 0 available 146891592
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 .
>>    drwxr-xr-x  10 greg  staff  340 Aug  1 21:34 ..
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 unlib.plt
>>
>>    /Users/greg/Library/Racket/planet/300/5.90.0.3/cache/zitterbewegung:
>>    total used in directory 0 available 146891592
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 .
>>    drwxr-xr-x  10 greg  staff  340 Aug  1 21:34 ..
>>    drwxr-xr-x   3 greg  staff  102 Aug  1 21:33 uuid-v4.plt
>>
>>
>> Please let me know what else I can try or do that might be helpful.
>>
>> For the moment I haven't touched anything, leaving it as-is in case
>> you might need that.
> _________________________
>    Racket Developers list:
>    http://lists.racket-lang.org/dev
>


Posted on the dev mailing list.