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.

