On Tue, Feb 17, 2015 at 6:41 PM, Matthew Flatt <mfl...@cs.utah.edu> 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 . 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 , 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.  https://ghc.haskell.org/trac/ghc/wiki/Debugging/InstallingPackagesInplace  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 racket-dev+unsubscr...@googlegroups.com. To post to this group, send email to racket-...@googlegroups.com. 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.