src/goInstallTools: pin dlv-dap version @ 89ed5a0b

Building from master is too risky.

Eventually, we want to allow users to choose the version to install
or allow Nightly/Preview mode users to install from the master.
But that's not included in this CL.

Fixes golang/vscode-go#1661

Change-Id: Ib3d6a4b63b1084b30bc8a24e69453395e622810a
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/339449
Trust: Hyang-Ah Hana Kim <hyangah@gmail.com>
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Suzy Mueller <suzmue@golang.org>
diff --git a/src/goInstallTools.ts b/src/goInstallTools.ts
index e27b16b..bc8dead 100644
--- a/src/goInstallTools.ts
+++ b/src/goInstallTools.ts
@@ -161,7 +161,6 @@
 	const toInstall: Promise<{ tool: Tool; reason: string }>[] = [];
 	for (const tool of missing) {
 		const modulesOffForTool = modulesOff;
-
 		const reason = installTool(tool, goVersion, envForTools, !modulesOffForTool);
 		toInstall.push(Promise.resolve({ tool, reason: await reason }));
 	}
diff --git a/src/goToolsInformation.ts b/src/goToolsInformation.ts
index 90c8356..cdb63d5 100644
--- a/src/goToolsInformation.ts
+++ b/src/goToolsInformation.ts
@@ -213,7 +213,8 @@
 		modulePath: 'github.com/go-delve/delve',
 		replacedByGopls: false,
 		isImportant: true,
-		description: 'Go debugger (Delve)'
+		description: 'Go debugger (Delve)',
+		minimumGoVersion: semver.coerce('1.12') // dlv requires 1.12+ for build
 	},
 	'dlv-dap': {
 		name: 'dlv-dap',
@@ -221,9 +222,9 @@
 		modulePath: 'github.com/go-delve/delve',
 		replacedByGopls: false,
 		isImportant: true,
-		description: 'Go debugger (Delve built for DAP experiment)',
-		defaultVersion: 'master', // Always build from the master.
-		minimumGoVersion: semver.coerce('1.14'), // last 3 versions per delve policy
+		description: 'Go debugger & debug adapter (Delve DAP)',
+		defaultVersion: 'v1.7.1-0.20210729173401-89ed5a0b1972', // pinned version
+		minimumGoVersion: semver.coerce('1.12'), // dlv requires 1.12+ for build
 		latestVersion: semver.parse('v1.7.1-0.20210729173401-89ed5a0b1972'),
 		latestVersionTimestamp: moment('2021-07-29', 'YYYY-MM-DD')
 	},
diff --git a/test/integration/install.test.ts b/test/integration/install.test.ts
index c4875f5..00eaef3 100644
--- a/test/integration/install.test.ts
+++ b/test/integration/install.test.ts
@@ -160,7 +160,7 @@
 				{ name: 'guru', versions: ['v1.0.0'], wantVersion: 'v1.0.0' },
 				{
 					name: 'dlv-dap',
-					versions: ['v1.0.0', 'master'],
+					versions: ['v1.0.0', getTool('dlv-dap').defaultVersion!],
 					wantVersion: 'v' + getTool('dlv-dap').latestVersion!.toString()
 				}
 			],
@@ -175,7 +175,7 @@
 				{ name: 'guru', versions: ['v1.0.0'], wantVersion: 'v1.0.0' },
 				{
 					name: 'dlv-dap',
-					versions: ['v1.0.0', 'master'],
+					versions: ['v1.0.0', getTool('dlv-dap').defaultVersion!],
 					wantVersion: 'v' + getTool('dlv-dap').latestVersion!.toString()
 				}
 			],
diff --git a/tools/allTools.ts.in b/tools/allTools.ts.in
index 33d46b7..ee85474 100644
--- a/tools/allTools.ts.in
+++ b/tools/allTools.ts.in
@@ -211,17 +211,18 @@
 		modulePath: 'github.com/go-delve/delve',
 		replacedByGopls: false,
 		isImportant: true,
-		description: 'Go debugger (Delve)'
+		description: 'Go debugger (Delve)',
+		minimumGoVersion: semver.coerce('1.12') // dlv requires 1.12+ for build
 	},
 	'dlv-dap': {
 		name: 'dlv-dap',
 		importPath: 'github.com/go-delve/delve/cmd/dlv',
 		modulePath: 'github.com/go-delve/delve',
 		replacedByGopls: false,
-		isImportant: false,
-		description: 'Go debugger (Delve built for DAP experiment)',
-		defaultVersion: 'master', // Always build from the master.
-		minimumGoVersion: semver.coerce('1.14'), // last 3 versions per delve policy
+		isImportant: true,
+		description: 'Go debugger & debug adapter (Delve DAP)',
+		defaultVersion: '%s', // pinned version
+		minimumGoVersion: semver.coerce('1.12'), // dlv requires 1.12+ for build
 		latestVersion: semver.parse('%s'),
 		latestVersionTimestamp: moment('%s', 'YYYY-MM-DD')
 	},
diff --git a/tools/generate.go b/tools/generate.go
index 4f0948e..a3f64f7 100644
--- a/tools/generate.go
+++ b/tools/generate.go
@@ -269,7 +269,7 @@
 	}
 
 	// TODO(suzmue): change input to json and avoid magic string printing.
-	toolsString := fmt.Sprintf(string(data), goplsVersion.Version, goplsVersion.Time[:len("YYYY-MM-DD")], goplsVersionPre.Version, goplsVersionPre.Time[:len("YYYY-MM-DD")], dlvVersion.Version, dlvVersion.Time[:len("YYYY-MM-DD")])
+	toolsString := fmt.Sprintf(string(data), goplsVersion.Version, goplsVersion.Time[:len("YYYY-MM-DD")], goplsVersionPre.Version, goplsVersionPre.Time[:len("YYYY-MM-DD")], dlvVersion.Version, dlvVersion.Version, dlvVersion.Time[:len("YYYY-MM-DD")])
 
 	// Write tools section.
 	b.WriteString(toolsString)