<div dir="ltr">I&#39;m not sure of the ramifications of a change like that to current-load/use-compiled, but here are two thoughts that don&#39;t require that change:<div><br></div><div style>- use &#39;raco make&#39; to recompile the files (instead of the racket script you have there)</div>
<div style><br></div><div style>- set up your directories as collections using &#39;raco link&#39; and then run &#39;raco setup&#39; and that will rebuild everything (.zos and documentation mostly, but this is the path that the distribution itself uses, so you can use it for anything that you see happening there).</div>
<div style><br></div><div style>Robby</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Jan 20, 2013 at 8:03 AM, Gustavo Massaccesi <span dir="ltr">&lt;<a href="mailto:gustavo@oma.org.ar" target="_blank">gustavo@oma.org.ar</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi!<br>
<br>
Each time I install a new version of Racket I have a problem with the<br>
old .zo files compiled with the old version.<br>
<br>
I have the following program in my personal root racket folder that I<br>
use to compile all the files in all the subfolders:<br>
<br>
;---<br>
  #lang racket/base<br>
  (require compiler/compiler)<br>
  (require setup/getinfo)<br>
<br>
  (compile-directory-zos (current-directory)<br>
                         (get-info/full (current-directory)))<br>
;---<br>
<br>
<br>
After upgrading, I get the error:<br>
<br>
  [file] read (compiled): wrong version for compiled code<br>
  compiled version: 5.3<br>
  expected version: 5.3.1<br>
<br>
So, I have to manually delete all the old .zo files that are<br>
distributed in many subfolders.<br>
<br>
<br>
Now I&#39;m using the following program that automatically deletes the old<br>
.zo files. (Warning: I&#39;m not sure that in some corner case it can&#39;t<br>
delete the wrong file.)<br>
<br>
;---<br>
  #lang racket/base<br>
  (require compiler/compiler)<br>
  (require setup/getinfo)<br>
<br>
  (let ([old-c-l/u-c (current-load/use-compiled)])<br>
    (parameterize ([current-load/use-compiled {lambda (path name)<br>
                                                (with-handlers*<br>
([exn:fail:read? {lambda (exn)<br>
<br>
            (write (srcloc-source (car (exn:fail:read-srclocs exn))))<br>
<br>
            (delete-file (srcloc-source (car (exn:fail:read-srclocs<br>
exn))))<br>
<br>
          (old-c-l/u-c path name)}])<br>
<br>
(old-c-l/u-c path name))}])<br>
      (compile-directory-zos (current-directory)<br>
                             (get-info/full (current-directory)))))<br>
;---<br>
<br>
But it still has problems with the .ss files that have a compiled version.<br>
<br>
<br>
Is there a more elegant/correct way to do this?<br>
<br>
I saw the implementation of default-load/use-compiled, but it&#39;s very<br>
long. Is it possible to change the implementation of it, so it use the<br>
.zo files only when they have the correct version?<br>
<br>
<br>
Gustavo<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</blockquote></div><br></div>