<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">Whoops, thanks, Galina. Speculative fix coming shortly.</div><div class=""><br class=""></div><div class="">Jordan</div><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Oct 13, 2017, at 13:13, Galina Kistanova <<a href="mailto:gkistanova@gmail.com" class="">gkistanova@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hello Jordan,<br class=""><br class="">This commit broke tests on few our builders:<br class=""><br class=""><a href="http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/5440" class="">http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/5440</a><br class=""><br class=""><a href="http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast" class="">http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast</a><br class=""><br class="">. . .<br class="">Failing Tests (1):<br class="">    lit :: shared-output.py<br class=""><br class="">Please have a look?<br class=""><br class="">Thanks<br class=""><br class="">Galina<br class=""></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, Oct 13, 2017 at 9:12 AM, Jordan Rose via llvm-commits <span dir="ltr" class=""><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="">llvm-commits@lists.llvm.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: jrose<br class="">
Date: Fri Oct 13 09:12:23 2017<br class="">
New Revision: 315697<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=315697&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project?rev=315697&view=rev</a><br class="">
Log:<br class="">
lit.py: Add new %{shared_output(LABEL)} substitution<br class="">
<br class="">
This refers to a temporary path that can be shared across all tests,<br class="">
identified by a particular label. This can be used for things like<br class="">
caches.<br class="">
<br class="">
At the moment, the character set for the LABEL is limited to C<br class="">
identifier characters, plus '-', '+', '=', and '.'. This is the same<br class="">
set of characters currently allowed in REQUIRES clause identifiers.<br class="">
<br class="">
Added:<br class="">
    llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/<br class="">
    llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/lit.cfg<br class="">
    llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/primary.<wbr class="">txt<br class="">
    llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/<wbr class="">secondary.txt<br class="">
    llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/sub/<br class="">
    llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/sub/sub.<wbr class="">txt<br class="">
    llvm/trunk/utils/lit/tests/<wbr class="">shared-output.py<br class="">
Modified:<br class="">
    llvm/trunk/docs/CommandGuide/<wbr class="">lit.rst<br class="">
    llvm/trunk/docs/TestingGuide.<wbr class="">rst<br class="">
    llvm/trunk/utils/lit/lit/<wbr class="">TestRunner.py<br class="">
    llvm/trunk/utils/lit/lit/run.<wbr class="">py<br class="">
<br class="">
Modified: llvm/trunk/docs/CommandGuide/<wbr class="">lit.rst<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CommandGuide/lit.rst?rev=315697&r1=315696&r2=315697&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/llvm/trunk/docs/<wbr class="">CommandGuide/lit.rst?rev=<wbr class="">315697&r1=315696&r2=315697&<wbr class="">view=diff</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- llvm/trunk/docs/CommandGuide/<wbr class="">lit.rst (original)<br class="">
+++ llvm/trunk/docs/CommandGuide/<wbr class="">lit.rst Fri Oct 13 09:12:23 2017<br class="">
@@ -395,17 +395,18 @@ PRE-DEFINED SUBSTITUTIONS<br class="">
 :program:`lit` provides various patterns that can be used with the RUN command.<br class="">
 These are defined in TestRunner.py. The base set of substitutions are:<br class="">
<br class="">
- ========== ==============<br class="">
-  Macro      Substitution<br class="">
- ========== ==============<br class="">
- %s         source path (path to the file currently being run)<br class="">
- %S         source dir (directory of the file currently being run)<br class="">
- %p         same as %S<br class="">
- %{pathsep} path separator<br class="">
- %t         temporary file name unique to the test<br class="">
- %T         temporary directory unique to the test<br class="">
- %%         %<br class="">
- ========== ==============<br class="">
+ ======================= ==============<br class="">
+  Macro                   Substitution<br class="">
+ ======================= ==============<br class="">
+ %s                      source path (path to the file currently being run)<br class="">
+ %S                      source dir (directory of the file currently being run)<br class="">
+ %p                      same as %S<br class="">
+ %{pathsep}              path separator<br class="">
+ %t                      temporary file name unique to the test<br class="">
+ %T                      temporary directory unique to the test<br class="">
+ %{shared_output(LABEL)} temporary file name, identified by "LABEL", shared across all tests<br class="">
+ %%                      %<br class="">
+ ======================= ==============<br class="">
<br class="">
 Other substitutions are provided that are variations on this base set and<br class="">
 further substitution patterns can be defined by each test module. See the<br class="">
<br class="">
Modified: llvm/trunk/docs/TestingGuide.<wbr class="">rst<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/TestingGuide.rst?rev=315697&r1=315696&r2=315697&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/llvm/trunk/docs/<wbr class="">TestingGuide.rst?rev=315697&<wbr class="">r1=315696&r2=315697&view=diff</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- llvm/trunk/docs/TestingGuide.<wbr class="">rst (original)<br class="">
+++ llvm/trunk/docs/TestingGuide.<wbr class="">rst Fri Oct 13 09:12:23 2017<br class="">
@@ -464,6 +464,12 @@ RUN lines:<br class="">
<br class="">
    Example: ``/home/user/llvm.build/test/<wbr class="">MC/ELF/Output``<br class="">
<br class="">
+``%{shared_output(LABEL)}``<br class="">
+   File path to a temporary file name shared across all tests, identified by<br class="">
+   LABEL. This is useful as a cache for generated resources.<br class="">
+<br class="">
+   Example: ``/home/user/llvm.build/test/<wbr class="">Output/Shared/LABEL.tmp``<br class="">
+<br class="">
 ``%{pathsep}``<br class="">
<br class="">
    Expands to the path separator, i.e. ``:`` (or ``;`` on Windows).<br class="">
<br class="">
Modified: llvm/trunk/utils/lit/lit/<wbr class="">TestRunner.py<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestRunner.py?rev=315697&r1=315696&r2=315697&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/llvm/trunk/utils/lit/<wbr class="">lit/TestRunner.py?rev=315697&<wbr class="">r1=315696&r2=315697&view=diff</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- llvm/trunk/utils/lit/lit/<wbr class="">TestRunner.py (original)<br class="">
+++ llvm/trunk/utils/lit/lit/<wbr class="">TestRunner.py Fri Oct 13 09:12:23 2017<br class="">
@@ -829,6 +829,9 @@ def getDefaultSubstitutions(test, tmpDir<br class="">
     sourcepath = test.getSourcePath()<br class="">
     sourcedir = os.path.dirname(sourcepath)<br class="">
<br class="">
+    sharedOutputDir = os.path.join(test.suite.exec_<wbr class="">root, 'Output', 'Shared')<br class="">
+    sharedOutputDir += os.path.sep<br class="">
+<br class="">
     # Normalize slashes, if requested.<br class="">
     if normalize_slashes:<br class="">
         sourcepath = sourcepath.replace('\\', '/')<br class="">
@@ -849,6 +852,8 @@ def getDefaultSubstitutions(test, tmpDir<br class="">
                           ('%t', tmpName),<br class="">
                           ('%basename_t', baseName),<br class="">
                           ('%T', tmpDir),<br class="">
+                          ('%{shared_output\(([-+=._a-<wbr class="">zA-Z0-9]+)\)}',<br class="">
+                           '%s\\1.tmp' % (sharedOutputDir,)),<br class="">
                           ('#_MARKER_#', '%')])<br class="">
<br class="">
     # "%/[STpst]" should be normalized.<br class="">
<br class="">
Modified: llvm/trunk/utils/lit/lit/run.<wbr class="">py<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/run.py?rev=315697&r1=315696&r2=315697&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/llvm/trunk/utils/lit/<wbr class="">lit/run.py?rev=315697&r1=<wbr class="">315696&r2=315697&view=diff</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- llvm/trunk/utils/lit/lit/run.<wbr class="">py (original)<br class="">
+++ llvm/trunk/utils/lit/lit/run.<wbr class="">py Fri Oct 13 09:12:23 2017<br class="">
@@ -1,4 +1,5 @@<br class="">
 import os<br class="">
+import shutil<br class="">
 import sys<br class="">
 import threading<br class="">
 import time<br class="">
@@ -136,6 +137,13 @@ class Run(object):<br class="">
                 return True<br class="">
             win32api.<wbr class="">SetConsoleCtrlHandler(console_<wbr class="">ctrl_handler, True)<br class="">
<br class="">
+        # Make fresh shared output directories.<br class="">
+        suites = set(test.suite for test in self.tests)<br class="">
+        for suite in suites:<br class="">
+            shared_dir = os.path.join(suite.exec_root, 'Output', 'Shared')<br class="">
+            shutil.rmtree(shared_dir, ignore_errors=True)<br class="">
+            lit.util.mkdir_p(shared_dir)<br class="">
+<br class="">
         # Save the display object on the runner so that we can update it from<br class="">
         # our task completion callback.<br class="">
         self.display = display<br class="">
<br class="">
Added: llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/lit.cfg<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shared-output/lit.cfg?rev=315697&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/llvm/trunk/utils/lit/<wbr class="">tests/Inputs/shared-output/<wbr class="">lit.cfg?rev=315697&view=auto</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/lit.cfg (added)<br class="">
+++ llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/lit.cfg Fri Oct 13 09:12:23 2017<br class="">
@@ -0,0 +1,5 @@<br class="">
+import lit.formats<br class="">
+<a href="http://config.name/" rel="noreferrer" target="_blank" class="">config.name</a> = 'shared-output'<br class="">
+config.suffixes = ['.txt']<br class="">
+config.test_format = lit.formats.ShTest()<br class="">
+config.test_source_root = os.path.dirname(os.path.<wbr class="">realpath(__file__))<br class="">
<br class="">
Added: llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/primary.<wbr class="">txt<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shared-output/primary.txt?rev=315697&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/llvm/trunk/utils/lit/<wbr class="">tests/Inputs/shared-output/<wbr class="">primary.txt?rev=315697&view=<wbr class="">auto</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/primary.<wbr class="">txt (added)<br class="">
+++ llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/primary.<wbr class="">txt Fri Oct 13 09:12:23 2017<br class="">
@@ -0,0 +1,2 @@<br class="">
+RUN: echo "primary" >> %{shared_output(SHARED)}<br class="">
+RUN: echo "other" >> %{shared_output(OTHER)}<br class="">
<br class="">
Added: llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/<wbr class="">secondary.txt<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shared-output/secondary.txt?rev=315697&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/llvm/trunk/utils/lit/<wbr class="">tests/Inputs/shared-output/<wbr class="">secondary.txt?rev=315697&view=<wbr class="">auto</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/<wbr class="">secondary.txt (added)<br class="">
+++ llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/<wbr class="">secondary.txt Fri Oct 13 09:12:23 2017<br class="">
@@ -0,0 +1 @@<br class="">
+RUN: echo "secondary" >> %{shared_output(SHARED)}<br class="">
<br class="">
Added: llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/sub/sub.<wbr class="">txt<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shared-output/sub/sub.txt?rev=315697&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/llvm/trunk/utils/lit/<wbr class="">tests/Inputs/shared-output/<wbr class="">sub/sub.txt?rev=315697&view=<wbr class="">auto</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/sub/sub.<wbr class="">txt (added)<br class="">
+++ llvm/trunk/utils/lit/tests/<wbr class="">Inputs/shared-output/sub/sub.<wbr class="">txt Fri Oct 13 09:12:23 2017<br class="">
@@ -0,0 +1 @@<br class="">
+RUN: echo "sub" >> %{shared_output(SHARED)}<br class="">
<br class="">
Added: llvm/trunk/utils/lit/tests/<wbr class="">shared-output.py<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/shared-output.py?rev=315697&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-<wbr class="">project/llvm/trunk/utils/lit/<wbr class="">tests/shared-output.py?rev=<wbr class="">315697&view=auto</a><br class="">
==============================<wbr class="">==============================<wbr class="">==================<br class="">
--- llvm/trunk/utils/lit/tests/<wbr class="">shared-output.py (added)<br class="">
+++ llvm/trunk/utils/lit/tests/<wbr class="">shared-output.py Fri Oct 13 09:12:23 2017<br class="">
@@ -0,0 +1,13 @@<br class="">
+# RUN: rm -rf %t && mkdir -p %t<br class="">
+# RUN: echo 'lit_config.load_config(<wbr class="">config, "%{inputs}/shared-output/lit.<wbr class="">cfg")' > %t/lit.site.cfg<br class="">
+# RUN: %{lit} %t<br class="">
+# RUN: FileCheck %s < %t/Output/Shared/SHARED.tmp<br class="">
+# RUN: FileCheck -check-prefix=NEGATIVE %s < %t/Output/Shared/SHARED.tmp<br class="">
+# RUN: FileCheck -check-prefix=OTHER %s <  %t/Output/Shared/OTHER.tmp<br class="">
+<br class="">
+# CHECK-DAG: primary<br class="">
+# CHECK-DAG: secondary<br class="">
+# CHECK-DAG: sub<br class="">
+<br class="">
+# NEGATIVE-NOT: other<br class="">
+# OTHER: other<br class="">
<br class="">
<br class="">
______________________________<wbr class="">_________________<br class="">
llvm-commits mailing list<br class="">
<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/<wbr class="">mailman/listinfo/llvm-commits</a><br class="">
</blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></body></html>