diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-08-15 09:52:55 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-08-15 11:15:15 +0200 |
commit | ee04f7e2ca26c128aecad2b61955b38783d69b52 (patch) | |
tree | a2154da676205c20c37207cfcb2a7b35f535c495 | |
parent | 99c504e215122c6cfda72cd31063d4fa252f274b (diff) |
Add commit fields to vtag
-rw-r--r-- | component/abi-spec.json | 6 | ||||
-rwxr-xr-x | dist/getversion.pl | 24 | ||||
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java | 28 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/component/vtag.cpp | 4 | ||||
-rw-r--r-- | vtag.cmake | 4 |
5 files changed, 49 insertions, 17 deletions
diff --git a/component/abi-spec.json b/component/abi-spec.json index 8e4442ea199..a6b6a558db6 100644 --- a/component/abi-spec.json +++ b/component/abi-spec.json @@ -194,11 +194,15 @@ "public static final java.lang.String V_TAG_PKG", "public static final java.lang.String V_TAG_DATE", "public static final java.lang.String V_TAG_BUILDER", + "public static final java.lang.String V_TAG_COMMIT_SHA", "public static final java.lang.String V_TAG", + "public static final java.lang.String V_TAG_COMMIT_DATE", "public static final java.lang.String V_TAG_SYSTEM_REV", "public static final java.lang.String V_TAG_COMPONENT", "public static final java.lang.String V_TAG_ARCH", - "public static final com.yahoo.component.Version currentVersion" + "public static final com.yahoo.component.Version currentVersion", + "public static final java.lang.String commitSha", + "public static final java.time.Instant commitDate" ] }, "com.yahoo.component.provider.ComponentRegistry": { diff --git a/dist/getversion.pl b/dist/getversion.pl index 80d35d58f43..d29e7d12aa3 100755 --- a/dist/getversion.pl +++ b/dist/getversion.pl @@ -55,7 +55,7 @@ if ($dateadd) { $tag = "HEAD"; -if (defined $ENV{FACTORY_VESPA_VERSION}) { +if (defined $ENV{FACTORY_VESPA_VERSION}) { $version = $ENV{FACTORY_VESPA_VERSION}; } else { $version = $mainver . $dateadd; @@ -67,6 +67,8 @@ if ($printmap) { chomp($ostype = `uname -s`); chomp($osver = `uname -r`); chomp($osarch = `uname -m`); + chomp($commit_sha = `sh -c "cd ${srcdir} && git rev-parse HEAD"`); + chomp($commit_date = `sh -c "cd ${srcdir} && git show -s --format=%ct ${commit_sha}"`); $vtag_system_rev = $ostype . "-" . $osver; chomp ($who = `(whoami || logname) 2>/dev/null`); @@ -89,16 +91,18 @@ if ($printmap) { } if ($printmap) { - print "V_TAG ${tag}\n"; - print "V_TAG_DATE ${vtag_date}\n"; - print "V_TAG_PKG ${version}\n"; - print "V_TAG_ARCH ${osarch}\n"; - print "V_TAG_SYSTEM ${ostype}\n"; - print "V_TAG_SYSTEM_REV ${vtag_system_rev}\n"; - print "V_TAG_BUILDER ${who}\@${where}\n"; - print "V_TAG_COMPONENT ${cversion}\n"; + print "V_TAG ${tag}\n"; + print "V_TAG_DATE ${vtag_date}\n"; + print "V_TAG_PKG ${version}\n"; + print "V_TAG_ARCH ${osarch}\n"; + print "V_TAG_SYSTEM ${ostype}\n"; + print "V_TAG_SYSTEM_REV ${vtag_system_rev}\n"; + print "V_TAG_BUILDER ${who}\@${where}\n"; + print "V_TAG_COMPONENT ${cversion}\n"; + print "V_TAG_COMMIT_SHA ${commit_sha}\n"; + print "V_TAG_COMMIT_DATE ${commit_date}\n"; exit; } - + print "$version\n"; exit; diff --git a/vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java b/vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java index 8f9ed876262..b2d2258798e 100644 --- a/vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java +++ b/vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java @@ -1,7 +1,14 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.PrintStream; import java.util.HashMap; import java.util.Map; @@ -39,6 +46,7 @@ public class VersionTagger { BufferedReader in = new BufferedReader(new FileReader(path)); String line; while ((line = in.readLine()) != null) { + if (line.isBlank()) continue; String elements[] = line.split("\\s+", 2); map.put(elements[0], elements[1]); } @@ -52,6 +60,8 @@ public class VersionTagger { map.put("V_TAG_SYSTEM_REV", "NOTAG"); map.put("V_TAG_BUILDER", "NOTAG"); map.put("V_TAG_COMPONENT", "6.9999.0"); + map.put("V_TAG_COMMIT_SHA", "badc0ffe"); + map.put("V_TAG_COMMIT_DATE", "0"); } catch (IOException e) { throw new RuntimeException(e); } @@ -83,10 +93,11 @@ public class VersionTagger { writer.write(String.format("package %s;\n\n", packageName)); if (format == Format.VTAG) { + writer.write("import java.time.Instant;\n"); writer.write("import com.yahoo.component.Version;\n"); } - writer.write(String.format("public class %s {\n", className)); + writer.write(String.format("\npublic class %s {\n", className)); if (!vtagMap.containsKey(V_TAG_PKG)) { throw new RuntimeException("V_TAG_PKG not present in map file"); } @@ -99,15 +110,22 @@ public class VersionTagger { writer.write(String.format(" public static final int micro = %s;\n", elements[2])); break; case VTAG: - vtagMap.forEach((key, value) -> { + long commitDateSecs = 0; + for (var entry : vtagMap.entrySet()) { + var key = entry.getKey(); + var value = entry.getValue(); try { writer.write(String.format(" public static final String %s = \"%s\";\n", key, value)); + if ("V_TAG_COMMIT_DATE".equals(key)) { + commitDateSecs = Long.parseLong(value); + } } catch (IOException e) { throw new RuntimeException(e); } - }); - + }; writer.write(" public static final Version currentVersion = new Version(V_TAG_COMPONENT);\n"); + writer.write(" public static final String commitSha = V_TAG_COMMIT_SHA;\n"); + writer.write(" public static final Instant commitDate = Instant.ofEpochSecond(" + commitDateSecs +");\n"); break; } writer.write("}\n"); diff --git a/vespalib/src/vespa/vespalib/component/vtag.cpp b/vespalib/src/vespa/vespalib/component/vtag.cpp index c9cfade6e28..7c67d1dd188 100644 --- a/vespalib/src/vespa/vespalib/component/vtag.cpp +++ b/vespalib/src/vespa/vespalib/component/vtag.cpp @@ -12,6 +12,8 @@ #define V_TAG_BUILDER "NOTAG" #define V_TAG_VERSION "0" #define V_TAG_ARCH "NOTAG" +#define V_TAG_COMMIT_SHA "badc0ffe" +#define V_TAG_COMMIT_DATE "0" #endif namespace vespalib { @@ -24,6 +26,8 @@ char VersionTagBuilder[] = V_TAG_BUILDER; char VersionTagPkg[] = V_TAG_PKG; char VersionTagComponent[] = V_TAG_COMPONENT; char VersionTagArch[] = V_TAG_ARCH; +char VersionTagCommitSha[] = V_TAG_COMMIT_SHA; +char VersionTagCommitDate[] = V_TAG_COMMIT_DATE; Version Vtag::currentVersion(VersionTagComponent); diff --git a/vtag.cmake b/vtag.cmake index c920bd0a165..eefbb638ab2 100644 --- a/vtag.cmake +++ b/vtag.cmake @@ -20,5 +20,7 @@ get_vtag_define(V_TAG_SYSTEM) get_vtag_define(V_TAG_SYSTEM_REV) get_vtag_define(V_TAG_BUILDER) get_vtag_define(V_TAG_COMPONENT) +get_vtag_define(V_TAG_COMMIT_SHA) +get_vtag_define(V_TAG_COMMIT_DATE) -set(VTAG_DEFINES "${V_TAG} ${V_TAG_DATE} ${V_TAG_PKG} ${V_TAG_ARCH} ${V_TAG_SYSTEM} ${V_TAG_SYSTEM_REV} ${V_TAG_BUILDER} ${V_TAG_COMPONENT}") +set(VTAG_DEFINES "${V_TAG} ${V_TAG_DATE} ${V_TAG_PKG} ${V_TAG_ARCH} ${V_TAG_SYSTEM} ${V_TAG_SYSTEM_REV} ${V_TAG_BUILDER} ${V_TAG_COMPONENT} ${V_TAG_COMMIT_SHA} ${V_TAG_COMMIT_DATE}") |