<div dir="ltr">WRT to the stacktrace below, I guess that if the info.rkt file had been in a suggestively named directory, e.g.,<div><span style="color:rgb(80,0,80);font-family:monospace"><br></span></div><div><span style="color:rgb(80,0,80);font-family:monospace">/var/tmp/</span><span style="color:rgb(80,0,80);font-family:monospace">pkg13711534991371153499937/future-visualizer/</span><span style="color:rgb(80,0,80);font-family:monospace">info.rkt</span><br>
</div><div><br></div><div style>(assuming that the package's name was future-visualizer) that might have been a useful clue.</div><div style><br>Robby</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Thu, Jun 13, 2013 at 9:56 PM, Jay McCarthy <span dir="ltr"><<a href="mailto:jay.mccarthy@gmail.com" target="_blank">jay.mccarthy@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Thu, Jun 13, 2013 at 3:56 PM, Sam Tobin-Hochstadt <<a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a>> wrote:<br>
> As part of my experiment in creating a different split of the<br>
> repository into packages, I spent some time working with the new setup<br>
> for building Racket, and cut myself on many of it's rough edges. Some<br>
> of these are about the package system in general, and some are about<br>
> the new repository and build infrastructure.<br>
><br>
> * When there's an installation error, it's really hard to tell what<br>
> state you're in, or what you should do to fix it. Usually, the<br>
> package manager just says that it's already installed.<br>
><br>
> This is a general issue in the package system, and it's easily the<br>
> most significant problem I encountered. The package system decides<br>
> that something is installed very early, and many errors are possible<br>
> after that. If the package didn't build, or it's dependencies didn't<br>
> build, or any of many other things happened, the package system thinks<br>
> everything is ok.<br>
<br>
</div>The package system says something is installed when the files are in<br>
place and the link is made. From some perspective, that's its job.<br>
Knowing whether 'raco setup' will succeed after those are in place<br>
isn't really possible beforehand and I don't think the idea of 'run<br>
raco setup and uninstall if it fails' is robust against the sorts of<br>
realistic and innocuous problems that raco setup can report. Maybe you<br>
could be more specific about what error you saw and what you wish had<br>
happened.<br>
<div class="im"><br>
> * The error message when you look for a missing collection is really<br>
> long if you have a lot of packages installed<br>
><br>
> * Using parallel make, ie `make -j 8` doesn't work from the new<br>
> top-level Makefile.<br>
><br>
> * Even though unix systems don't use them, the extra libraries are<br>
> downloaded and packaged up on unix platforms while building.<br>
><br>
> * When installing a package with a long chain of dependencies, this<br>
> message gets printed a lot:<br>
><br>
> The following packages are listed as dependencies, but are not<br>
> currently installed,<br>
> so they will be automatically installed:<br>
> at-exp-lib syntax-color<br>
> The following packages are listed as dependencies, but are not<br>
> currently installed,<br>
> so they will be automatically installed:<br>
> parser-tools<br>
><br>
> and so on ...<br>
><br>
> We should just collect all the packages to be installed and print them<br>
> all at once (and perhaps prompt, the way `apt-get` does).<br>
<br>
</div>Since package dependencies are in the package and not otherwise<br>
available, the manager is asking for permission to do a download.<br>
After doing the download, it can then look at the dependencies and see<br>
if there more. 'apt-get', etc have more monolithic repository<br>
structures than our package system, so they can analyze everything<br>
locally and compute the transitive closure. Furthermore, 'raco pkg' is<br>
prompting you, but you have it set on "auto" (the default) so it's<br>
equivalent to 'yes | apt-get'<br>
<div class="im"><br>
> * I think it's possible to confuse the local catalog by moving<br>
> directories around in the `pkg` directory.<br>
><br>
> * `make local-catalog` is not incremental -- it always re-downloads<br>
> and re-packs the external libraries.<br>
><br>
> * Sometimes, errors can be hard to trace to a particular package. For<br>
> example, this one was because there was a mistake in the<br>
> future-visualizer package info.rkt file. But I had to go groveling in<br>
> /var/tmp/ to figure that out.<br>
><br>
> /var/tmp/pkg13711534991371153499937/info.rkt::212: read: expected a closing '"'<br>
> context...:<br>
> /home/samth/tmp/pkg-racket/racket/lib/collects/syntax/module-reader.rkt:176:17:<br>
> body<br>
> /home/samth/tmp/pkg-racket/racket/lib/collects/syntax/module-reader.rkt:173:2:<br>
> wrap-internal<br>
> lang:read<br>
> /home/samth/tmp/pkg-racket/racket/lib/collects/setup/getinfo.rkt:50:8: temp32<br>
> /home/samth/tmp/pkg-racket/racket/lib/collects/setup/getinfo.rkt:37:0:<br>
> get-info/full/ext<br>
> /home/samth/tmp/pkg-racket/racket/lib/collects/setup/getinfo.rkt:33:0<br>
> /home/samth/tmp/pkg-racket/racket/lib/collects/pkg/lib.rkt:1274:0:<br>
> pkg-single-collection85<br>
<br>
</div>Are there other examples? This stack trace is useful to just put a<br>
with-handlers at the right spot.<br>
<div class="im"><br>
> Other errors are also hard to track down. In general, it would be very<br>
> helpful to catch setup errors and report them based on the package<br>
> being installed and/or the collection being set up.<br>
><br>
> Sam<br>
> _________________________<br>
> Racket Developers list:<br>
> <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
<br>
<br>
<br>
</div>--<br>
Jay McCarthy <<a href="mailto:jay@cs.byu.edu">jay@cs.byu.edu</a>><br>
Assistant Professor / Brigham Young University<br>
<a href="http://faculty.cs.byu.edu/~jay" target="_blank">http://faculty.cs.byu.edu/~jay</a><br>
<br>
"The glory of God is Intelligence" - D&C 93<br>
<div class="HOEnZb"><div class="h5">_________________________<br>
Racket Developers list:<br>
<a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
</div></div></blockquote></div><br></div>