summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--component/abi-spec.json6
-rwxr-xr-xdist/getversion.pl24
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java28
-rw-r--r--vespalib/src/vespa/vespalib/component/vtag.cpp4
-rw-r--r--vtag.cmake4
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}")