<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 29, 2016 at 1:22 PM, Sean Silva <span dir="ltr"><<a href="mailto:chisophugis@gmail.com" target="_blank">chisophugis@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">silvas added a subscriber: silvas.<br>
silvas added a comment.<br>
<br>
This sounds like it would lead to a highly degraded experience for windows users.<br>
<br>
Let me explain the technique that I use to reconstruct games which works pretty well and has been used across windows/linux/mac for some time now, to see if it would work for your use case too:<br>
<br>
Basically, your resulting directory structure is as follows (filenames changed for LLD's --reproduce use case):<br>
<br>
  invocation.txt<br>
  repro.dir/<br>
      FS_ROOT/<br>
          C/<br>
              Users/<br>
                  alice/<br></blockquote><div><br></div><div>This was a typo. Should be:</div><div><br>  repro.dir/</div><div>      invocation.txt<br>      FS_ROOT/<br>          C/<br>              Users/<br>                  alice/<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<br>
On Unix it would be something like:<br>
<br>
  repro.dir/<br>
      invocation.txt<br>
      FS_ROOT/<br>
          home/<br>
              alice/<br>
<br>
The key thing is that the FS_ROOT captures every file that LLD needs to reproduce the build.<br>
<br>
Then there is one more key step: all paths on the command line are converted to be relative paths to repro.dir. That is, LLD, when run with its CWD set to repro.dir, sees only paths of the form `FS_ROOT/...`. (I call such paths "relatively absolute").<br>
<br>
This approach has worked for me in practice robustly across Windows, Mac, and Linux.<br>
<br>
In the future, we can make invocation.txt a bit more robust, such as making it a rsp file so that we know we will interpret correctly when invoked as `ld.lld @invocation.txt`. We control the response file quoting for this and so we can do this robustly. It seems overcomplicated to me (and non-portable) to have a dependency on sh/bash simply for running our own invocation.<br>
<br>
<br>
<a href="http://reviews.llvm.org/D19737" rel="noreferrer" target="_blank">http://reviews.llvm.org/D19737</a><br>
<br>
<br>
<br>
</blockquote></div><br></div></div>