[racket-dev] Planet require gone wild

From: Greg Hendershott (greghendershott at gmail.com)
Date: Fri Aug 2 16:04:04 EDT 2013

Ah. I was primed with the "mental set":

(a) I got some error messages I'd never before seen when requiring a
Planet package.

(b) I guessed all the recent reorganization broke something with
Planet "1" packages.

(c) Although I was aware peg required memoize, I didn't look into
memoize's source, so I didn't anticipate the extent of everything it
would require.

So when I saw things like bzlib/os etc. being installed, I wigged out.


On Fri, Aug 2, 2013 at 11:50 AM, Ryan Culpepper <ryanc at ccs.neu.edu> wrote:
> 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.