<div dir="ltr"><div>I think this patch finally looks good.  I read the SOURCE_DATE_EPOCH spec and we seem to be following it correctly.  Thanks for all your hard work (I know it's been a lot) on this!<br><br></div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 1, 2016 at 9:22 AM, Emil Velikov <span dir="ltr"><<a href="mailto:emil.l.velikov@gmail.com" target="_blank">emil.l.velikov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Emil Velikov <<a href="mailto:emil.velikov@collabora.com">emil.velikov@collabora.com</a>><br>
<br>
Do not rely on the git sha1:<br>
 - its current truncated form makes it less unique<br>
 - it does not attribute for local (Vulkand or otherwise) changes<br>
<br>
Use a timestamp produced at the time of build. It's perfectly unique,<br>
unless someone explicitly thinkers with their system clock. Even then<br>
chances of producing the exact same one are very small, if not zero.<br>
<br>
v2: Remove .tmp rule. Its not needed since we want for the header to be<br>
regenerated on each time we call make (Eric).<br>
<br>
v3:<br>
 - Honour SOURCE_DATE_EPOCH, to make the build reproducible (Michel)<br>
 - Replace the generated header with a define, to prevent needless<br>
builds on consecutive `make' and/or `make install' calls. (Dave)<br>
<br>
v4:<br>
 - Keep the timestamp generation at make time. (Jason)<br>
<br>
v5:<br>
 - Ensure that file is regenerated on incremental builds.<br>
<br>
Cc: <a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.freedesktop.org</a><br>
Signed-off-by: Emil Velikov <<a href="mailto:emil.velikov@collabora.com">emil.velikov@collabora.com</a>><br>
---<br>
 <a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a>                  |  2 ++<br>
 src/intel/vulkan/Makefile.am  | 10 +++++++++-<br>
 src/intel/vulkan/anv_device.c |  4 ++--<br>
 3 files changed, 13 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a> b/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
index 8321e8e..3d32c53 100644<br>
--- a/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
+++ b/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
@@ -2620,6 +2620,8 @@ AC_SUBST([XA_MINOR], $XA_MINOR)<br>
 AC_SUBST([XA_TINY], $XA_TINY)<br>
 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")<br>
<br>
+AC_SUBST([TIMESTAMP_CMD], '`test $(SOURCE_DATE_EPOCH) && echo $(SOURCE_DATE_EPOCH) || date +%s`')<br>
+<br>
 AC_ARG_ENABLE(valgrind,<br>
               [AS_HELP_STRING([--enable-valgrind],<br>
                              [Build mesa with valgrind support (default: auto)])],<br>
diff --git a/src/intel/vulkan/Makefile.am b/src/intel/vulkan/Makefile.am<br>
index 4d9ff90..3f49020 100644<br>
--- a/src/intel/vulkan/Makefile.am<br>
+++ b/src/intel/vulkan/Makefile.am<br>
@@ -131,8 +131,16 @@ anv_entrypoints.c : anv_entrypoints_gen.py $(vulkan_include_HEADERS)<br>
        $(AM_V_GEN) cat $(vulkan_include_HEADERS) |\<br>
        $(PYTHON2) $(srcdir)/anv_entrypoints_gen.py code > $@<br>
<br>
+.PHONY: anv_timestamp.h<br>
+<br>
+anv_timestamp.h:<br>
+       @echo "Updating anv_timestamp.h"<br>
+       $(AM_V_GEN) echo "#define ANV_TIMESTAMP \"$(TIMESTAMP_CMD)\"" > $@<br>
+<br>
+anv_device.$(OBJEXT): anv_timestamp.h<br>
+<br>
 BUILT_SOURCES = $(VULKAN_GENERATED_FILES)<br>
-CLEANFILES = $(BUILT_SOURCES) dev_icd.json<br>
+CLEANFILES = $(BUILT_SOURCES) dev_icd.json anv_timestamp.h<br>
 EXTRA_DIST = \<br>
        $(top_srcdir)/include/vulkan/vk_icd.h \<br>
        anv_entrypoints_gen.py \<br>
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c<br>
index ea8e875..dd941b6 100644<br>
--- a/src/intel/vulkan/anv_device.c<br>
+++ b/src/intel/vulkan/anv_device.c<br>
@@ -28,7 +28,7 @@<br>
 #include <fcntl.h><br>
<br>
 #include "anv_private.h"<br>
-#include "git_sha1.h"<br>
+#include "anv_timestamp.h"<br>
 #include "util/strtod.h"<br>
 #include "util/debug.h"<br>
<br>
@@ -426,7 +426,7 @@ void<br>
 anv_device_get_cache_uuid(void *uuid)<br>
 {<br>
    memset(uuid, 0, VK_UUID_SIZE);<br>
-   snprintf(uuid, VK_UUID_SIZE, "anv-%s", MESA_GIT_SHA1 + 4);<br>
+   snprintf(uuid, VK_UUID_SIZE, "anv-%s", ANV_TIMESTAMP);<br>
 }<br>
<br>
 void anv_GetPhysicalDeviceProperties(<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.8.2<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>