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"
}
]
}