pkg/cos: Update pkg_info to accomodate interface changes.

This CL updates the pkg_info library to accomodate
interface changes which will be introduced in
CL:
https://cos-review.googlesource.com/c/cos/overlays/board-overlays/+/14671

BUG=b/182949109
TEST=go install and go test

Change-Id: Ibf6b7cd72bac02b0ce61e0b3d6035f047b61fb01
Reviewed-on: https://cos-review.googlesource.com/c/cos/tools/+/14710
Reviewed-by: Robert Kolchmeyer <rkolchmeyer@google.com>
Reviewed-by: Vaibhav Rustagi <vaibhavrustagi@google.com>
Tested-by: Anil Altinay <aaltinay@google.com>
diff --git a/src/pkg/cos/pkg_info.go b/src/pkg/cos/pkg_info.go
index 68d9447..1b2ddea 100644
--- a/src/pkg/cos/pkg_info.go
+++ b/src/pkg/cos/pkg_info.go
@@ -4,17 +4,16 @@
 	"encoding/json"
 	"io/ioutil"
 	"os"
-	"strconv"
 )
 
 const packageInfoDefaultJSONFile = "/etc/cos-package-info.json"
 
 // Package represents a COS package.
 type Package struct {
-	Category string
-	Name     string
-	Version  string
-	Revision int
+	Category      string
+	Name          string
+	Version       string
+	EbuildVersion string
 }
 
 // PackageInfo contains information about the packages of a COS instance.
@@ -24,10 +23,10 @@
 }
 
 type packageJSON struct {
-	Category string `json:"category"`
-	Name     string `json:"name"`
-	Version  string `json:"version"`
-	Revision string `json:"revision"`
+	Category      string `json:"category"`
+	Name          string `json:"name"`
+	Version       string `json:"version"`
+	EbuildVersion string `json:"ebuild_version"`
 }
 
 type packageInfoJSON struct {
@@ -76,12 +75,7 @@
 		p.Category = pJSON.Category
 		p.Name = pJSON.Name
 		p.Version = pJSON.Version
-		if pJSON.Revision != "" {
-			p.Revision, err = strconv.Atoi(pJSON.Revision)
-			if err != nil {
-				return packageInfo, err
-			}
-		}
+		p.EbuildVersion = pJSON.EbuildVersion
 	}
 
 	packageInfo.BuildTimePackages = make([]Package, len(piJSON.BuildTimePackages))
@@ -92,12 +86,7 @@
 		p.Category = pJSON.Category
 		p.Name = pJSON.Name
 		p.Version = pJSON.Version
-		if pJSON.Revision != "" {
-			p.Revision, err = strconv.Atoi(pJSON.Revision)
-			if err != nil {
-				return packageInfo, err
-			}
-		}
+		p.EbuildVersion = pJSON.EbuildVersion
 	}
 
 	return packageInfo, nil
diff --git a/src/pkg/cos/pkg_info_test.go b/src/pkg/cos/pkg_info_test.go
index ef502f2..9e3836a 100644
--- a/src/pkg/cos/pkg_info_test.go
+++ b/src/pkg/cos/pkg_info_test.go
@@ -16,22 +16,22 @@
 			inputFile: "testdata/only_installed_packages.json",
 			wantInstalledPkgs: []Package{
 				Package{
-					Category: "app-arch",
-					Name:     "gzip",
-					Version:  "1.9",
-					Revision: 0,
+					Category:      "app-arch",
+					Name:          "gzip",
+					Version:       "123",
+					EbuildVersion: "1.9",
 				},
 				Package{
-					Category: "dev-libs",
-					Name:     "popt",
-					Version:  "1.16",
-					Revision: 2,
+					Category:      "dev-libs",
+					Name:          "popt",
+					Version:       "123",
+					EbuildVersion: "1.16-r2",
 				},
 				Package{
-					Category: "app-emulation",
-					Name:     "docker-credential-helpers",
-					Version:  "0.6.3",
-					Revision: 1,
+					Category:      "app-emulation",
+					Name:          "docker-credential-helpers",
+					Version:       "123",
+					EbuildVersion: "0.6.3-r1",
 				},
 			},
 		},
@@ -40,16 +40,16 @@
 			inputFile: "testdata/only_build_time_packages.json",
 			wantBuildTimePkgs: []Package{
 				Package{
-					Category: "virtual",
-					Name:     "pkgconfig",
-					Version:  "0",
-					Revision: 1,
+					Category:      "virtual",
+					Name:          "pkgconfig",
+					Version:       "123",
+					EbuildVersion: "0-r1",
 				},
 				Package{
-					Category: "dev-go",
-					Name:     "protobuf",
-					Version:  "1.3.2",
-					Revision: 0,
+					Category:      "dev-go",
+					Name:          "protobuf",
+					Version:       "123",
+					EbuildVersion: "1.3.2",
 				},
 			},
 		},
@@ -58,36 +58,36 @@
 			inputFile: "testdata/packages.json",
 			wantInstalledPkgs: []Package{
 				Package{
-					Category: "app-arch",
-					Name:     "gzip",
-					Version:  "1.9",
-					Revision: 0,
+					Category:      "app-arch",
+					Name:          "gzip",
+					Version:       "123",
+					EbuildVersion: "1.9",
 				},
 				Package{
-					Category: "dev-libs",
-					Name:     "popt",
-					Version:  "1.16",
-					Revision: 2,
+					Category:      "dev-libs",
+					Name:          "popt",
+					Version:       "123",
+					EbuildVersion: "1.16-r2",
 				},
 				Package{
-					Category: "app-emulation",
-					Name:     "docker-credential-helpers",
-					Version:  "0.6.3",
-					Revision: 1,
+					Category:      "app-emulation",
+					Name:          "docker-credential-helpers",
+					Version:       "123",
+					EbuildVersion: "0.6.3-r1",
 				},
 			},
 			wantBuildTimePkgs: []Package{
 				Package{
-					Category: "virtual",
-					Name:     "pkgconfig",
-					Version:  "0",
-					Revision: 1,
+					Category:      "virtual",
+					Name:          "pkgconfig",
+					Version:       "123",
+					EbuildVersion: "0-r1",
 				},
 				Package{
-					Category: "dev-go",
-					Name:     "protobuf",
-					Version:  "1.3.2",
-					Revision: 0,
+					Category:      "dev-go",
+					Name:          "protobuf",
+					Version:       "123",
+					EbuildVersion: "1.3.2",
 				},
 			},
 		},
@@ -108,7 +108,7 @@
 			}
 
 			for index, pkg := range test.wantInstalledPkgs {
-				checkPackage(t, installedPackages[index], pkg.Category, pkg.Name, pkg.Version, pkg.Revision)
+				checkPackage(t, installedPackages[index], pkg.Category, pkg.Name, pkg.Version, pkg.EbuildVersion)
 			}
 
 			buildTimePackages := packageInfo.BuildTimePackages
@@ -117,13 +117,13 @@
 			}
 
 			for index, pkg := range test.wantBuildTimePkgs {
-				checkPackage(t, buildTimePackages[index], pkg.Category, pkg.Name, pkg.Version, pkg.Revision)
+				checkPackage(t, buildTimePackages[index], pkg.Category, pkg.Name, pkg.Version, pkg.EbuildVersion)
 			}
 		})
 	}
 }
 
-func checkPackage(t *testing.T, p Package, category string, name string, version string, revision int) {
+func checkPackage(t *testing.T, p Package, category string, name string, version string, ebuildVersion string) {
 	if p.Category != category {
 		t.Errorf("Wrong package category in package %v. want: %s, got: %s",
 			p, category, p.Category)
@@ -136,8 +136,8 @@
 		t.Errorf("Wrong package version in package %v. want: %s, got: %s",
 			p, version, p.Version)
 	}
-	if p.Revision != revision {
-		t.Errorf("Wrong package revision in package %v. want: %d, got: %d",
-			p, revision, p.Revision)
+	if p.EbuildVersion != ebuildVersion {
+		t.Errorf("Wrong package ebuild version in package %v. want: %s, got: %s",
+			p, ebuildVersion, p.EbuildVersion)
 	}
 }
diff --git a/src/pkg/cos/testdata/only_build_time_packages.json b/src/pkg/cos/testdata/only_build_time_packages.json
index 7dacb80..a199678 100644
--- a/src/pkg/cos/testdata/only_build_time_packages.json
+++ b/src/pkg/cos/testdata/only_build_time_packages.json
@@ -3,13 +3,14 @@
 		{
 			"category": "virtual",
 			"name": "pkgconfig",
-			"version": "0",
-			"revision": "1"
+			"version": "123",
+			"ebuild_version": "0-r1"
 		},
 		{
 			"category": "dev-go",
 			"name": "protobuf",
-			"version": "1.3.2"
+			"version": "123",
+			"ebuild_version": "1.3.2"
 		}
 	]
 }
diff --git a/src/pkg/cos/testdata/only_installed_packages.json b/src/pkg/cos/testdata/only_installed_packages.json
index 43c3356..2bd8657 100644
--- a/src/pkg/cos/testdata/only_installed_packages.json
+++ b/src/pkg/cos/testdata/only_installed_packages.json
@@ -3,19 +3,20 @@
 		{
 			"category": "app-arch",
 			"name": "gzip",
-			"version": "1.9"
+			"version": "123",
+			"ebuild_version": "1.9"
 		},
 		{
 			"category": "dev-libs",
 			"name": "popt",
-			"version": "1.16",
-			"revision": "2"
+			"version": "123",
+			"ebuild_version": "1.16-r2"
 		},
 		{
 			"category": "app-emulation",
 			"name": "docker-credential-helpers",
-			"version": "0.6.3",
-			"revision": "1"
+			"version": "123",
+			"ebuild_version": "0.6.3-r1"
 		}
 	]
 }
diff --git a/src/pkg/cos/testdata/packages.json b/src/pkg/cos/testdata/packages.json
index a6ca434..5237704 100644
--- a/src/pkg/cos/testdata/packages.json
+++ b/src/pkg/cos/testdata/packages.json
@@ -3,32 +3,34 @@
 		{
 			"category": "app-arch",
 			"name": "gzip",
-			"version": "1.9"
+			"version": "123",
+			"ebuild_version": "1.9"
 		},
 		{
 			"category": "dev-libs",
 			"name": "popt",
-			"version": "1.16",
-			"revision": "2"
+			"version": "123",
+			"ebuild_version": "1.16-r2"
 		},
 		{
 			"category": "app-emulation",
 			"name": "docker-credential-helpers",
-			"version": "0.6.3",
-			"revision": "1"
+			"version": "123",
+			"ebuild_version": "0.6.3-r1"
 		}
 	],
 	"buildTimePackages": [
 		{
 			"category": "virtual",
 			"name": "pkgconfig",
-			"version": "0",
-			"revision": "1"
+			"version": "123",
+			"ebuild_version": "0-r1"
 		},
 		{
 			"category": "dev-go",
 			"name": "protobuf",
-			"version": "1.3.2"
+			"version": "123",
+			"ebuild_version": "1.3.2"
 		}
 	]
 }