Use a module to get build date

Change-Id: I9655fa9145142847f39c2d75eaaf031a9b21e11b
diff --git a/recipes/jiri.expected/ci.json b/recipes/jiri.expected/ci.json
index 97c5d1f..d4a01db 100644
--- a/recipes/jiri.expected/ci.json
+++ b/recipes/jiri.expected/ci.json
@@ -95,26 +95,6 @@
     ]
   },
   {
-    "cmd": [
-      "git",
-      "show",
-      "HEAD",
-      "--format=%H",
-      "-s"
-    ],
-    "cwd": "[START_DIR]/go/src/fuchsia.googlesource.com/jiri",
-    "name": "git show",
-    "stdout": "/path/to/tmp/"
-  },
-  {
-    "cmd": [
-      "date",
-      "--rfc-3339=seconds"
-    ],
-    "name": "date",
-    "stdout": "/path/to/tmp/"
-  },
-  {
     "cmd": [],
     "name": "ensure_packages"
   },
@@ -173,7 +153,7 @@
     "cmd": [
       "[START_DIR]/cipd/bin/cmake",
       "-GNinja",
-      "-DCMAKE_BUILD_PROGRAM=[START_DIR]/cipd/ninja",
+      "-DCMAKE_MAKE_PROGRAM=[START_DIR]/cipd/ninja",
       "-DCMAKE_BUILD_TYPE=RelWithDebInfo",
       "-DCMAKE_C_FLAGS=-fPIC",
       "-DTHREADSAFE=ON",
@@ -193,10 +173,37 @@
   },
   {
     "cmd": [
+      "[START_DIR]/cipd/jiri/jiri",
+      "project",
+      "info",
+      "-json-output",
+      "/path/to/tmp/json",
+      "jiri"
+    ],
+    "name": "jiri project info",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"branches\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"(HEAD detached at c22471f)\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"master\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    ], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"current_branch\": \"\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"jiri\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"/path/to/repo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"remote\": \"https://fuchsia.googlesource.com/repo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"revision\": \"c22471f4e3f842ae18dd9adec82ed9eb78ed1127\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@]@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
       "[START_DIR]/cipd/go/bin/go",
       "build jiri",
       "-ldflags",
-      "-X \"fuchsia.googlesource.com/jiri/version.GitCommit=deadbeef\" -X \"fuchsia.googlesource.com/jiri/version.BuildTime=2016-10-11 14:40:25-07:00\"",
+      "-X \"fuchsia.googlesource.com/jiri/version.GitCommit=c22471f4e3f842ae18dd9adec82ed9eb78ed1127\" -X \"fuchsia.googlesource.com/jiri/version.BuildTime=2012-05-14T12:53:21.500000\"",
       "-a",
       "fuchsia.googlesource.com/jiri/cmd/jiri"
     ],
@@ -220,7 +227,9 @@
   },
   {
     "name": "$result",
-    "recipe_result": null,
+    "recipe_result": {
+      "got_revision": "c22471f4e3f842ae18dd9adec82ed9eb78ed1127"
+    },
     "status_code": 0
   }
 ]
\ No newline at end of file
diff --git a/recipes/jiri.expected/cq_try.json b/recipes/jiri.expected/cq_try.json
index c0777c8..7834781 100644
--- a/recipes/jiri.expected/cq_try.json
+++ b/recipes/jiri.expected/cq_try.json
@@ -105,26 +105,6 @@
     ]
   },
   {
-    "cmd": [
-      "git",
-      "show",
-      "HEAD",
-      "--format=%H",
-      "-s"
-    ],
-    "cwd": "[START_DIR]/go/src/fuchsia.googlesource.com/jiri",
-    "name": "git show",
-    "stdout": "/path/to/tmp/"
-  },
-  {
-    "cmd": [
-      "date",
-      "--rfc-3339=seconds"
-    ],
-    "name": "date",
-    "stdout": "/path/to/tmp/"
-  },
-  {
     "cmd": [],
     "name": "ensure_packages"
   },
@@ -183,7 +163,7 @@
     "cmd": [
       "[START_DIR]/cipd/bin/cmake",
       "-GNinja",
-      "-DCMAKE_BUILD_PROGRAM=[START_DIR]/cipd/ninja",
+      "-DCMAKE_MAKE_PROGRAM=[START_DIR]/cipd/ninja",
       "-DCMAKE_BUILD_TYPE=RelWithDebInfo",
       "-DCMAKE_C_FLAGS=-fPIC",
       "-DTHREADSAFE=ON",
@@ -203,10 +183,37 @@
   },
   {
     "cmd": [
+      "[START_DIR]/cipd/jiri/jiri",
+      "project",
+      "info",
+      "-json-output",
+      "/path/to/tmp/json",
+      "jiri"
+    ],
+    "name": "jiri project info",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"branches\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"(HEAD detached at c22471f)\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"master\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    ], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"current_branch\": \"\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"jiri\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"/path/to/repo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"remote\": \"https://fuchsia.googlesource.com/repo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"revision\": \"c22471f4e3f842ae18dd9adec82ed9eb78ed1127\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@]@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
       "[START_DIR]/cipd/go/bin/go",
       "build jiri",
       "-ldflags",
-      "-X \"fuchsia.googlesource.com/jiri/version.GitCommit=deadbeef\" -X \"fuchsia.googlesource.com/jiri/version.BuildTime=2016-10-11 14:40:25-07:00\"",
+      "-X \"fuchsia.googlesource.com/jiri/version.GitCommit=c22471f4e3f842ae18dd9adec82ed9eb78ed1127\" -X \"fuchsia.googlesource.com/jiri/version.BuildTime=2012-05-14T12:53:21.500000\"",
       "-a",
       "fuchsia.googlesource.com/jiri/cmd/jiri"
     ],
@@ -230,7 +237,9 @@
   },
   {
     "name": "$result",
-    "recipe_result": null,
+    "recipe_result": {
+      "got_revision": "c22471f4e3f842ae18dd9adec82ed9eb78ed1127"
+    },
     "status_code": 0
   }
 ]
\ No newline at end of file
diff --git a/recipes/jiri.py b/recipes/jiri.py
index 851f88a..968460d 100644
--- a/recipes/jiri.py
+++ b/recipes/jiri.py
@@ -4,6 +4,7 @@
 
 """Recipe for building Jiri."""
 
+from recipe_engine.config import ReturnSchema, Single
 from recipe_engine.recipe_api import Property
 from recipe_engine import config
 
@@ -18,6 +19,7 @@
   'recipe_engine/raw_io',
   'recipe_engine/shutil',
   'recipe_engine/step',
+  'recipe_engine/time',
 ]
 
 PROPERTIES = {
@@ -33,6 +35,10 @@
   'target': Property(kind=str, help='Target to build'),
 }
 
+RETURN_SCHEMA = ReturnSchema(
+  got_revision=Single(str)
+)
+
 
 def RunSteps(api, category, patch_gerrit_url, patch_project, patch_ref,
              patch_storage, patch_repository_url, manifest, remote, target):
@@ -53,17 +59,6 @@
   git2go_dir = jiri_dir.join('vendor', 'github.com', 'libgit2', 'git2go')
   libgit2_dir = git2go_dir.join('vendor', 'libgit2')
 
-  with api.step.context({'cwd': jiri_dir}):
-    git_commit = api.git.get_hash()
-  result = api.step('date', ['date', '--rfc-3339=seconds'],
-      stdout=api.raw_io.output(),
-      step_test_data=lambda:
-          api.raw_io.test_api.stream_output('2016-10-11 14:40:25-07:00'))
-  build_time = result.stdout.strip()
-
-  ldflags = "-X \"fuchsia.googlesource.com/jiri/version.GitCommit=%s\" -X \"fuchsia.googlesource.com/jiri/version.BuildTime=%s\"" % (git_commit, build_time)
-  gopath = api.path['start_dir'].join('go')
-
   with api.step.nest('ensure_packages'):
     with api.step.context({'infra_step': True}):
       cipd_dir = api.path['start_dir'].join('cipd')
@@ -78,7 +73,7 @@
     api.step('configure libgit2', [
       cipd_dir.join('bin', 'cmake'),
       '-GNinja',
-      '-DCMAKE_BUILD_PROGRAM=%s' % cipd_dir.join('ninja'),
+      '-DCMAKE_MAKE_PROGRAM=%s' % cipd_dir.join('ninja'),
       '-DCMAKE_BUILD_TYPE=RelWithDebInfo',
       '-DCMAKE_C_FLAGS=-fPIC',
       '-DTHREADSAFE=ON',
@@ -88,6 +83,12 @@
     ])
     api.step('build libgit2', [cipd_dir.join('ninja')])
 
+  revision = api.jiri.project('jiri').json.output[0]['revision']
+  build_time = api.time.utcnow().isoformat()
+
+  ldflags = "-X \"fuchsia.googlesource.com/jiri/version.GitCommit=%s\" -X \"fuchsia.googlesource.com/jiri/version.BuildTime=%s\"" % (revision, build_time)
+  gopath = api.path['start_dir'].join('go')
+
   with api.step.context({'env': {'GOPATH': gopath}}):
     api.go('build jiri', '-ldflags', ldflags, '-a',
            'fuchsia.googlesource.com/jiri/cmd/jiri')
@@ -95,6 +96,8 @@
   with api.step.context({'env': {'GOPATH': gopath}}):
     api.go('test jiri', 'fuchsia.googlesource.com/jiri/cmd/jiri')
 
+  return RETURN_SCHEMA.new(got_revision=revision)
+
 
 def GenTests(api):
   yield api.test('ci') + api.properties(