[racket-dev] Planet 2 Beta Release

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Sun Dec 9 08:14:28 EST 2012

On Sat, Dec 8, 2012 at 11:54 PM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
> On Sat, Dec 8, 2012 at 9:27 PM, Eli Barzilay <eli at barzilay.org> wrote:
>>
>> 30 minutes ago, Jay McCarthy wrote:
>> > On Sat, Dec 8, 2012 at 8:29 PM, Eli Barzilay <eli at barzilay.org> wrote:
>> >
>> >     > One other thing that I think is important in a migration path is
>> >     > keeping any modification made to the source of the packages that
>> > are
>> >     > already installed.
>> >
>> >     Yeah -- and IIUC, the difference between the two installations is
>> >     where the packages get installed is where the compiled files are, so
>> >     the sources are the same.  At least I *hope* that that's how it is,
>> >     otherwise it's back to the whole planet "cache" things, which IMO
>> > was
>> >     a major mistake.
>> >
>> > They are in the same place. However, I thought the whole premise of
>> > this proposed behavior is that the package won't work in the new
>> > version of Racket, so certainly the package system can't be
>> > responsible for doing a merge your local changes and whatever the
>> > updated version of the package needs.
>>
>> I'm not following that -- the compiled files and the sources are in
>> the same place?  If so then it makes the whole migration thing kind of
>> impossible with local changes, no?  (And I wasn't thinking about
>> merging, just reusing the same sources.)
>
>
> :) Now I'm not following you.
>
> If you have a package named P that has a module A/B/C.rkt then on your disk
> is in:
>
> ~/.racket/$version/pkgs/P/A/B/C.rkt
>
> with its compiled code in:
>
> ~/.racket/$version/pkgs/P/A/B/compiled/C_rkt.zo
>
> My idea of "raco pkg migrate" is just to get a list of the packages that you
> have installed and re-install them. I think if we assume that Racket
> versions will break package P then those same problems will prevent you from
> keeping local changes; especially if the package system isn't responsible
> for running merge, which it clearly shouldn't be. (Now, I don't think that's
> a reasonable assumption, i.e. I think version-less should be the default,
> but I've clearly been out-voted.)

First, I still agree with you about version-less being the default.

Second, I think an upgradeable installation, replacing the `bin` and
`collects` directories, so that migration of packages isn't needed
would work better -- that's more like how those of us who use git
work, and I think we're mostly happy with that.

But even with `migrate`, I think the behavior *needs* to be be 'copy
the files, call `setup`'.  Otherwise it won't work on a system without
the internet, for example. My impression about the reasons for
version-specific packages and 'migrate' are that when upgrading, just
keeping the same code will potentially error, and so users shouldn't
*automatically* keep the same code.  But I thought of `migrate` as
'make it seem like those packages were installed for this new
installation'.

Sam

Posted on the dev mailing list.