<div dir="ltr">On Mon, Sep 14, 2015 at 1:39 PM, Gregory Szorc <span dir="ltr"><<a href="mailto:gps@mozilla.com" target="_blank">gps@mozilla.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>My concerns with wildcards are as follows:<br></div></div></div></div></div></blockquote><div><br></div><div>I have many of the same concerns. <br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>1) Performance. Iterating directories and doing pattern matching on results is more expensive than calling stat() on single files. You likely won't notice on Linux and OS X. Windows is where this will bite us.<br></div>2) Inadvertent usage of files not under version control. Wildcards will pick up files on the file system that aren't under version control. If said files are ignored by your VCS, we could find ourselves using files left over from a previous build. This will inevitably result in a handful of busted Try pushes and landings due to people forgetting to add files.<br></div></div></div></blockquote><div><br></div><div>I am much less concerned with files not under version control, and much more concerned with how damn difficult it is to get Make to do the right thing when a formerly expected file goes away.  Most of the Java build chain works by directory and removing stale build outputs that are themselves consumed by the build is tricky.  This gets easier if we explicitly list inputs and outputs.  Perhaps I just don't know enough Make?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div></div><div>3) Complexity. From the perspective of tools, you have to teach things to speak in terms of wildcards and not merely simple paths. We've already done this in several places, so I think this is a minor concern.<br></div><div><br></div>The upside is wildcards are much easier to maintain. Trade-offs.<br><br></div>I say experiment with wildcards. If the downsides are too great, we can always switch back to individual files later.<br></div></blockquote><div><br></div><div>A pro for wildcards: most other build systems define their inputs in terms of wildcards.  Translating wildcards is easier than trying to figure out a wildcard-and-exclude strategy.<br><br></div><div>Nick<br></div></div></div></div>