On Tue, Feb 17, 2015 at 6:41 PM, Matthew Flatt <[email protected]> wrote:
> At Tue, 17 Feb 2015 14:12:54 -0500, Sam Tobin-Hochstadt wrote:
>> Regardless of that, though, I think we should switch to updating only
>> "main-distribution" (and perhaps "main-distribution-tests"). I doubt
>> people expect `make` in the Racket source tree to update their
>> software somewhere else on their machine -- I certainly would be very
>> unpleasantly surprised if that happened to me when rebuilding some
>> other language I had installed.
>
> I have trouble seeing the comparison to other software. I don't know of
> anything else with an in-place build option, where you can install or
> link additional packages in place, and you can also pull core updates,
> and somehow it all works. The examples I have seen are all more like
> `make unix-style`, where there's a clear separation of the source and
> the installed form. In that case, the issues we're looking at here
> don't come up.
>
> Does another system have a Racket-like in-place option (that works
> better)?

I haven't used it, but GHC has an in-place build option where you can
install packages; see [1]. From their wiki, it looks like `git pull &&
make` will update both the compiler and the "boot libraries" (the ones
used by the compiler), plus any that you've listed as "extra"
explicitly [2], but not any other packages. However, it doesn't seem
like they expect people to use this as the "standard" way to build the
compiler the way we do for Racket.

[1] https://ghc.haskell.org/trac/ghc/wiki/Debugging/InstallingPackagesInplace
[2] https://ghc.haskell.org/trac/ghc/wiki/Commentary/Libraries

I think the closer analogy is to what other software does when you run
both `make` and `make install` analagous to Racket's unix-style
installation, since that's the recommended way of building (eg
Python), just as in-place is the recommended way of building Racket
from source. I don't think any of those systems update packages when
running `make install`.

> At Tue, 17 Feb 2015 17:40:36 -0500, Matthias Felleisen wrote:
>> Speaking as the user I am, I really like it that make updates
>> my extra-pkgs.
>
> Package scope provides one a way to get these different behaviors. The
> current `make` updates only packages that are in installation scope,
> and it also sets installation scope to be the default, so that's why
> `make` tends to update everything that is installed. Maybe Sam should
> install additional packages in user scope, and then `make` won't try to
> update them.

I expect that the packages that update for Matthias on `make` are
packages in "main-distribution", and thus just switching to `raco pkg
update --update-deps main-distribution` would still make him happy
(and be more like the old `git pull && make`).

As an aside, the reason I don't install in user scope is that I switch
between Racket implementations regularly, which would lead to
out-of-date zo errors for all my user packages (instead, I get
multiple copies of the packages).

> Another possibility is that the packages installed by `make` should go
> into a scope that's even deeper than installation scope. That's how the
> pre-split organization worked, and I sometimes think that we should go
> back to that. But it's more complex, and it would work less well for
> Matthias and others who benefit from the current `make` behavior.

Whether that changes Matthias' work flow depends on what packages he's
relying on `make` updating, right?

Sam

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/CAK%3DHD%2BaxxpZu8w_WwtLbWzAjvJbe-HsqFqb-eg0Wqd3tidDepg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to