[pkgs] Remove implicit package versions.

This feature isn't used, and removing it narrows the Jiri feature set.

Bug: 63094

Change-Id: I32c9972d2660d8588a8c37f72427745f030955f9
Reviewed-on: https://fuchsia-review.googlesource.com/c/jiri/+/445074
Reviewed-by: Haowei Wu <haowei@google.com>
Commit-Queue: Nathan Mulcahey <nmulcahey@google.com>
diff --git a/cmd/jiri/fetch_pkgs.go b/cmd/jiri/fetch_pkgs.go
index 0610f21..c519aa8 100644
--- a/cmd/jiri/fetch_pkgs.go
+++ b/cmd/jiri/fetch_pkgs.go
@@ -44,11 +44,10 @@
 
 	// Get pkgs.
 	var pkgs project.Packages
-	var projs project.Projects
 	if !fetchPkgsFlags.localManifest {
-		projs, _, pkgs, err = project.LoadUpdatedManifest(jirix, localProjects, fetchPkgsFlags.localManifest)
+		_, _, pkgs, err = project.LoadUpdatedManifest(jirix, localProjects, fetchPkgsFlags.localManifest)
 	} else {
-		projs, _, pkgs, err = project.LoadManifestFile(jirix, jirix.JiriManifestFile(), localProjects, fetchPkgsFlags.localManifest)
+		_, _, pkgs, err = project.LoadManifestFile(jirix, jirix.JiriManifestFile(), localProjects, fetchPkgsFlags.localManifest)
 	}
 	if err != nil {
 		return err
@@ -57,7 +56,7 @@
 		return err
 	}
 	if len(pkgs) > 0 {
-		return project.FetchPackages(jirix, projs, pkgs, fetchPkgsFlags.fetchPkgsTimeout)
+		return project.FetchPackages(jirix, pkgs, fetchPkgsFlags.fetchPkgsTimeout)
 	}
 	return nil
 }
diff --git a/cmd/jiri/run_hooks.go b/cmd/jiri/run_hooks.go
index 0bcc108..98a3c1f 100644
--- a/cmd/jiri/run_hooks.go
+++ b/cmd/jiri/run_hooks.go
@@ -45,13 +45,12 @@
 	jirix.Attempts = runHooksFlags.attempts
 
 	// Get hooks.
-	var projs project.Projects
 	var hooks project.Hooks
 	var pkgs project.Packages
 	if !runHooksFlags.localManifest {
-		projs, hooks, pkgs, err = project.LoadUpdatedManifest(jirix, localProjects, runHooksFlags.localManifest)
+		_, hooks, pkgs, err = project.LoadUpdatedManifest(jirix, localProjects, runHooksFlags.localManifest)
 	} else {
-		projs, hooks, pkgs, err = project.LoadManifestFile(jirix, jirix.JiriManifestFile(), localProjects, runHooksFlags.localManifest)
+		_, hooks, pkgs, err = project.LoadManifestFile(jirix, jirix.JiriManifestFile(), localProjects, runHooksFlags.localManifest)
 	}
 	if err != nil {
 		return err
@@ -65,7 +64,7 @@
 	// Get packages if the fetchPackages is true
 	if runHooksFlags.fetchPackages && len(pkgs) > 0 {
 		// Extend timeout for packages to be 5 times the timeout of a single hook.
-		return project.FetchPackages(jirix, projs, pkgs, runHooksFlags.hookTimeout*5)
+		return project.FetchPackages(jirix, pkgs, runHooksFlags.hookTimeout*5)
 	}
 	return nil
 }
diff --git a/project/manifest.go b/project/manifest.go
index a40755d..8be1688 100644
--- a/project/manifest.go
+++ b/project/manifest.go
@@ -19,7 +19,6 @@
 	"os/exec"
 	"path"
 	"path/filepath"
-	"regexp"
 	"sort"
 	"strings"
 	"text/template"
@@ -794,52 +793,9 @@
 	return ld.Projects, ld.Hooks, ld.Packages, nil
 }
 
-// ResolveImplicitPackageVersions resolves the version field of packages if it
-// pins to a project's revision hash
-func ResolveImplicitPackageVersions(jirix *jiri.X, projects Projects, pkgs Packages) (Packages, error) {
-	// Example:
-	// <package name="fuchsia/dart-sdk/${platform}"
-	//          path="third_party/dart/tools/sdks/dart-sdk"
-	//          version="git_revision:{{(index .Projects &quot;dart/sdk&quot;).Revision}}"/>
-	// The fuchsia/dart-sdk package is pinned to current dart/sdk project's Revision
-	templateRE := regexp.MustCompile(`{{[^}]*}}`)
-	var projMap struct {
-		Projects map[string]Project
-	}
-	retPkgs := make(Packages)
-	for k, v := range pkgs {
-		retPkgs[k] = v
-	}
-	projMap.Projects = make(map[string]Project)
-	for _, proj := range projects {
-		if v, ok := projMap.Projects[proj.Name]; ok {
-			// Just a warning since jiri could handle projects with duplicated names.
-			jirix.Logger.Warningf("Found more than 1 projects have the same name: %+v:%+v", proj, v)
-		}
-		projMap.Projects[proj.Name] = proj
-	}
-
-	for _, pkg := range pkgs {
-		if !templateRE.MatchString(pkg.Version) {
-			continue
-		}
-		tpl, err := template.New("version").Parse(pkg.Version)
-		if err != nil {
-			return nil, err
-		}
-		var verBuf bytes.Buffer
-		if err := tpl.Execute(&verBuf, &projMap); err != nil {
-			return nil, err
-		}
-		pkg.Version = verBuf.String()
-		retPkgs[pkg.Key()] = pkg
-	}
-	return retPkgs, nil
-}
-
 // resovlePackageLocks resolves instance ids using versions described in given
 // pkgs using cipd.
-func resolvePackageLocks(jirix *jiri.X, projects Projects, pkgs Packages) (PackageLocks, error) {
+func resolvePackageLocks(jirix *jiri.X, pkgs Packages) (PackageLocks, error) {
 	jirix.TimerPush("resolve instance id for cipd packages")
 	defer jirix.TimerPop()
 
@@ -848,7 +804,7 @@
 		return nil, err
 	}
 
-	ensureFilePath, err := generateEnsureFile(jirix, projects, pkgs, false)
+	ensureFilePath, err := generateEnsureFile(jirix, pkgs, false)
 	if err != nil {
 		return nil, err
 	}
@@ -885,7 +841,7 @@
 
 // FetchPackages fetches prebuilt packages described in given pkgs using cipd.
 // Parameter fetchTimeout is in minutes.
-func FetchPackages(jirix *jiri.X, projects Projects, pkgs Packages, fetchTimeout uint) error {
+func FetchPackages(jirix *jiri.X, pkgs Packages, fetchTimeout uint) error {
 	jirix.TimerPush("fetch cipd packages")
 	defer jirix.TimerPop()
 
@@ -894,7 +850,7 @@
 		return err
 	}
 
-	ensureFilePath, err := generateEnsureFile(jirix, projects, pkgsWAccess, !jirix.LockfileEnabled || jirix.UsingSnapshot)
+	ensureFilePath, err := generateEnsureFile(jirix, pkgsWAccess, !jirix.LockfileEnabled || jirix.UsingSnapshot)
 	if err != nil {
 		return err
 	}
@@ -1008,11 +964,7 @@
 	return ioutil.WriteFile(filepath.Join(jirix.RootMetaDir(), jirix.PrebuiltJSON), jsonData, 0644)
 }
 
-func generateEnsureFile(jirix *jiri.X, projects Projects, pkgs Packages, ignoreCryptoCheck bool) (string, error) {
-	pkgs, err := ResolveImplicitPackageVersions(jirix, projects, pkgs)
-	if err != nil {
-		return "", err
-	}
+func generateEnsureFile(jirix *jiri.X, pkgs Packages, ignoreCryptoCheck bool) (string, error) {
 	ensureFile, err := ioutil.TempFile("", "jiri*.ensure")
 	if err != nil {
 		return "", fmt.Errorf("not able to create tmp file: %v", err)
diff --git a/project/project.go b/project/project.go
index 263a7fa..c47edcb 100644
--- a/project/project.go
+++ b/project/project.go
@@ -1279,7 +1279,7 @@
 					delete(pkgsWithMultiVersionsMap, k)
 				}
 			}
-			pkgLocks, err = resolvePackageLocks(jirix, projects, pkgsToProcess)
+			pkgLocks, err = resolvePackageLocks(jirix, pkgsToProcess)
 			if err != nil {
 				return
 			}
@@ -2437,7 +2437,7 @@
 	if shouldFetchPkgs {
 		packageFetched = true
 		if len(pkgs) > 0 {
-			if err := FetchPackages(jirix, remoteProjects, pkgs, fetchTimeout); err != nil {
+			if err := FetchPackages(jirix, pkgs, fetchTimeout); err != nil {
 				return err
 			}
 		}
diff --git a/project/project_test.go b/project/project_test.go
index 4f68be2..91ff251 100644
--- a/project/project_test.go
+++ b/project/project_test.go
@@ -2376,64 +2376,6 @@
 	}
 }
 
-func TestPackageVersionTemplate(t *testing.T) {
-	jirix, cleanup := xtest.NewX(t)
-	defer cleanup()
-
-	testProjs := []project.Project{
-		project.Project{
-			Name:       "testTP0",
-			Path:       "testTP0",
-			Remote:     "https://example.com/testTP0",
-			Revision:   "acf8ae59e121b3922bc8ac979323a531da418cc5",
-			GerritHost: "https://example.com",
-		},
-		project.Project{
-			Name:       "testTP1",
-			Path:       "testTP1",
-			Remote:     "https://example.com/testTP1",
-			Revision:   "1e4aee79b472a6939ac26811c5dee8a132c29fef",
-			GerritHost: "https://example.com",
-		},
-	}
-
-	testPkgs := []project.Package{
-		project.Package{
-			Name:    "test0",
-			Version: "git_revision:{{(index .Projects \"testTP0\").Revision}}",
-			Path:    "test0",
-		},
-		project.Package{
-			Name:    "test1",
-			Version: "git_revision:{{(index .Projects \"testTP1\").Revision}}",
-			Path:    "test0",
-		},
-	}
-
-	projects := make(project.Projects)
-	pkgs := make(project.Packages)
-	verificationMap := make(map[string]project.Project)
-	for i, v := range testPkgs {
-		projects[testProjs[i].Key()] = testProjs[i]
-		pkgs[v.Key()] = v
-		verificationMap[v.Name] = testProjs[i]
-	}
-
-	pkgs, err := project.ResolveImplicitPackageVersions(jirix, projects, pkgs)
-	if err != nil {
-		t.Errorf("ResolveImplicitPackageVersions failed due to error: %v", err)
-	}
-	for _, v := range pkgs {
-		if proj, ok := verificationMap[v.Name]; ok {
-			if proj.Revision != v.Version[len("git_revision:"):] {
-				t.Errorf("expecting \"git_revision:%s\", got %q", proj.Revision, v.Version)
-			}
-		} else {
-			t.Errorf("unexpected package %+v", v)
-		}
-	}
-}
-
 func TestOptionalProjectsAndPackages(t *testing.T) {
 	fake, cleanup := jiritest.NewFakeJiriRoot(t)
 	defer cleanup()