anv: use cache uuid based on the build timestamp.
authorEmil Velikov <emil.velikov@collabora.com>
Tue, 21 Jun 2016 16:43:35 +0000 (17:43 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Tue, 5 Jul 2016 11:15:23 +0000 (12:15 +0100)
Do not rely on the git sha1:
 - its current truncated form makes it less unique
 - it does not attribute for local (Vulkand or otherwise) changes

Use a timestamp produced at the time of build. It's perfectly unique,
unless someone explicitly thinkers with their system clock. Even then
chances of producing the exact same one are very small, if not zero.

v2: Remove .tmp rule. Its not needed since we want for the header to be
regenerated on each time we call make (Eric).

v3:
 - Honour SOURCE_DATE_EPOCH, to make the build reproducible (Michel)
 - Replace the generated header with a define, to prevent needless
builds on consecutive `make' and/or `make install' calls. (Dave)

v4:
 - Keep the timestamp generation at make time. (Jason)

v5:
 - Ensure that file is regenerated on incremental builds.

Cc: Michel Dänzer <michel@daenzer.net>
Cc: Dave Airlie <airlied@gmail.com>
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
configure.ac
src/intel/vulkan/Makefile.am
src/intel/vulkan/anv_device.c

index 8321e8eb21da4a4141743e5a7e06b1f297135ae7..3d32c53e2fe61fc60dc2489b7a58cb512fc7a124 100644 (file)
@@ -2620,6 +2620,8 @@ AC_SUBST([XA_MINOR], $XA_MINOR)
 AC_SUBST([XA_TINY], $XA_TINY)
 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
 
+AC_SUBST([TIMESTAMP_CMD], '`test $(SOURCE_DATE_EPOCH) && echo $(SOURCE_DATE_EPOCH) || date +%s`')
+
 AC_ARG_ENABLE(valgrind,
               [AS_HELP_STRING([--enable-valgrind],
                              [Build mesa with valgrind support (default: auto)])],
index 4d9ff908bbcc2aa8032261c414125ec7689fd8ae..3f4902022e8d4d297d5a0f9714e3932ba560dfd4 100644 (file)
@@ -131,8 +131,16 @@ anv_entrypoints.c : anv_entrypoints_gen.py $(vulkan_include_HEADERS)
        $(AM_V_GEN) cat $(vulkan_include_HEADERS) |\
        $(PYTHON2) $(srcdir)/anv_entrypoints_gen.py code > $@
 
+.PHONY: anv_timestamp.h
+
+anv_timestamp.h:
+       @echo "Updating anv_timestamp.h"
+       $(AM_V_GEN) echo "#define ANV_TIMESTAMP \"$(TIMESTAMP_CMD)\"" > $@
+
+anv_device.$(OBJEXT): anv_timestamp.h
+
 BUILT_SOURCES = $(VULKAN_GENERATED_FILES)
-CLEANFILES = $(BUILT_SOURCES) dev_icd.json
+CLEANFILES = $(BUILT_SOURCES) dev_icd.json anv_timestamp.h
 EXTRA_DIST = \
        $(top_srcdir)/include/vulkan/vk_icd.h \
        anv_entrypoints_gen.py \
index ea8e875ad1e566e0defa5a630b3b67d6d8c58ea3..dd941b6afeba968abe39f77c40f485d35d1a4bfc 100644 (file)
@@ -28,7 +28,7 @@
 #include <fcntl.h>
 
 #include "anv_private.h"
-#include "git_sha1.h"
+#include "anv_timestamp.h"
 #include "util/strtod.h"
 #include "util/debug.h"
 
@@ -426,7 +426,7 @@ void
 anv_device_get_cache_uuid(void *uuid)
 {
    memset(uuid, 0, VK_UUID_SIZE);
-   snprintf(uuid, VK_UUID_SIZE, "anv-%s", MESA_GIT_SHA1 + 4);
+   snprintf(uuid, VK_UUID_SIZE, "anv-%s", ANV_TIMESTAMP);
 }
 
 void anv_GetPhysicalDeviceProperties(