<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&#39;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">&lt;<a href="mailto:jay.mccarthy@gmail.com" target="_blank">jay.mccarthy@gmail.com</a>&gt;</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 &lt;<a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a>&gt; wrote:<br>
&gt; As part of my experiment in creating a different split of the<br>
&gt; repository into packages, I spent some time working with the new setup<br>
&gt; for building Racket, and cut myself on many of it&#39;s rough edges.  Some<br>
&gt; of these are about the package system in general, and some are about<br>
&gt; the new repository and build infrastructure.<br>
&gt;<br>
&gt; * When there&#39;s an installation error, it&#39;s really hard to tell what<br>
&gt; state you&#39;re in, or what you should do to fix it.  Usually, the<br>
&gt; package manager just says that it&#39;s already installed.<br>
&gt;<br>
&gt; This is a general issue in the package system, and it&#39;s easily the<br>
&gt; most significant problem I encountered. The package system decides<br>
&gt; that something is installed very early, and many errors are possible<br>
&gt; after that. If the package didn&#39;t build, or it&#39;s dependencies didn&#39;t<br>
&gt; build, or any of many other things happened, the package system thinks<br>
&gt; 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&#39;s its job.<br>
Knowing whether &#39;raco setup&#39; will succeed after those are in place<br>
isn&#39;t really possible beforehand and I don&#39;t think the idea of &#39;run<br>
raco setup and uninstall if it fails&#39; 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>
&gt; * The error message when you look for a missing collection is really<br>
&gt; long if you have a lot of packages installed<br>
&gt;<br>
&gt; * Using parallel make, ie `make -j 8` doesn&#39;t work from the new<br>
&gt; top-level Makefile.<br>
&gt;<br>
&gt; * Even though unix systems don&#39;t use them, the extra libraries are<br>
&gt; downloaded and packaged up on unix platforms while building.<br>
&gt;<br>
&gt; * When installing a package with a long chain of dependencies, this<br>
&gt; message gets printed a lot:<br>
&gt;<br>
&gt; The following packages are listed as dependencies, but are not<br>
&gt; currently installed,<br>
&gt; so they will be automatically installed:<br>
&gt;     at-exp-lib syntax-color<br>
&gt; The following packages are listed as dependencies, but are not<br>
&gt; currently installed,<br>
&gt; so they will be automatically installed:<br>
&gt;     parser-tools<br>
&gt;<br>
&gt; and so on ...<br>
&gt;<br>
&gt; We should just collect all the packages to be installed and print them<br>
&gt; 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. &#39;apt-get&#39;, etc have more monolithic repository<br>
structures than our package system, so they can analyze everything<br>
locally and compute the transitive closure. Furthermore, &#39;raco pkg&#39; is<br>
prompting you, but you have it set on &quot;auto&quot; (the default) so it&#39;s<br>
equivalent to &#39;yes | apt-get&#39;<br>
<div class="im"><br>
&gt; * I think it&#39;s possible to confuse the local catalog by moving<br>
&gt; directories around in the `pkg` directory.<br>
&gt;<br>
&gt; * `make local-catalog` is not incremental -- it always re-downloads<br>
&gt; and re-packs the external libraries.<br>
&gt;<br>
&gt; * Sometimes, errors can be hard to trace to a particular package.  For<br>
&gt; example, this one was because there was a mistake in the<br>
&gt; future-visualizer package info.rkt file.  But I had to go groveling in<br>
&gt; /var/tmp/ to figure that out.<br>
&gt;<br>
&gt; /var/tmp/pkg13711534991371153499937/info.rkt::212: read: expected a closing &#39;&quot;&#39;<br>
&gt;   context...:<br>
&gt;    /home/samth/tmp/pkg-racket/racket/lib/collects/syntax/module-reader.rkt:176:17:<br>
&gt; body<br>
&gt;    /home/samth/tmp/pkg-racket/racket/lib/collects/syntax/module-reader.rkt:173:2:<br>
&gt; wrap-internal<br>
&gt;    lang:read<br>
&gt;    /home/samth/tmp/pkg-racket/racket/lib/collects/setup/getinfo.rkt:50:8: temp32<br>
&gt;    /home/samth/tmp/pkg-racket/racket/lib/collects/setup/getinfo.rkt:37:0:<br>
&gt; get-info/full/ext<br>
&gt;    /home/samth/tmp/pkg-racket/racket/lib/collects/setup/getinfo.rkt:33:0<br>
&gt;    /home/samth/tmp/pkg-racket/racket/lib/collects/pkg/lib.rkt:1274:0:<br>
&gt; 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>
&gt; Other errors are also hard to track down. In general, it would be very<br>
&gt; helpful to catch setup errors and report them based on the package<br>
&gt; being installed and/or the collection being set up.<br>
&gt;<br>
&gt; Sam<br>
&gt; _________________________<br>
&gt;   Racket Developers list:<br>
&gt;   <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 &lt;<a href="mailto:jay@cs.byu.edu">jay@cs.byu.edu</a>&gt;<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>
&quot;The glory of God is Intelligence&quot; - D&amp;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>