Commit 91776975 authored by Inphi's avatar Inphi Committed by GitHub

op-program: Support multiple types of op-program releases (#13498)

* op-program: Support multiple types of op-program releases

* include type in formatted release string
parent a01fa60c
...@@ -13,11 +13,16 @@ import ( ...@@ -13,11 +13,16 @@ import (
var releasesJSON []byte var releasesJSON []byte
type Release struct { type Release struct {
Version string `json:"version"` Version string `json:"version"`
Hash string `json:"hash"` Hash string `json:"hash"`
GovernanceApproved bool `json:"governanceApproved"` GovernanceApproved bool `json:"governanceApproved"`
Type ReleaseType `json:"type"`
} }
type ReleaseType string
const Cannon64Type ReleaseType = "cannon64"
// GetReleases reads the contents of the releases.json file // GetReleases reads the contents of the releases.json file
func GetReleases() ([]Release, error) { func GetReleases() ([]Release, error) {
var releases []Release var releases []Release
......
[ [
{
"version": "1.4.0-rc.3",
"hash": "0x03b7eaa4e3cbce90381921a4b48008f4769871d64f93d113fcadca08ecee503b",
"type": "cannon64"
},
{ {
"version": "1.4.0-rc.3", "version": "1.4.0-rc.3",
"hash": "0x03f89406817db1ed7fd8b31e13300444652cdb0b9c509a674de43483b2f83568" "hash": "0x03f89406817db1ed7fd8b31e13300444652cdb0b9c509a674de43483b2f83568"
}, },
{
"version": "1.4.0-rc.2",
"hash": "0x0348ce2059f718af75729c2c56860551b46b665956a641b3cb2cd51e50b7b725",
"type": "cannon64"
},
{ {
"version": "1.4.0-rc.2", "version": "1.4.0-rc.2",
"hash": "0x0364e4e72922e7d649338f558f8a14b50ca31922a1484e73ea03987fb1516095" "hash": "0x0364e4e72922e7d649338f558f8a14b50ca31922a1484e73ea03987fb1516095"
}, },
{
"version": "1.4.0-rc.1",
"hash": "0x032e5d6119ee983cb87deae3eef16ea6086f2347433c99f1820d60f36a24a6e6",
"type": "cannon64"
},
{ {
"version": "1.4.0-rc.1", "version": "1.4.0-rc.1",
"hash": "0x03925193e3e89f87835bbdf3a813f60b2aa818a36bbe71cd5d8fd7e79f5e8afe" "hash": "0x03925193e3e89f87835bbdf3a813f60b2aa818a36bbe71cd5d8fd7e79f5e8afe"
......
...@@ -11,11 +11,16 @@ func TestGetReleases(t *testing.T) { ...@@ -11,11 +11,16 @@ func TestGetReleases(t *testing.T) {
require.NoError(t, err, "expected no error while parsing embedded releases.json") require.NoError(t, err, "expected no error while parsing embedded releases.json")
foundGovernanceApproved := false foundGovernanceApproved := false
foundCannon64Release := false
for _, release := range releases { for _, release := range releases {
if release.GovernanceApproved { if release.GovernanceApproved {
foundGovernanceApproved = true foundGovernanceApproved = true
break break
} }
if release.Type == Cannon64Type {
foundCannon64Release = true
}
} }
require.True(t, foundGovernanceApproved, "expected to find at least one GovernanceApproved release") require.True(t, foundGovernanceApproved, "expected to find at least one GovernanceApproved release")
require.True(t, foundCannon64Release, "expected to find at least one Cannon64 release")
} }
...@@ -44,11 +44,19 @@ func main() { ...@@ -44,11 +44,19 @@ func main() {
os.Exit(2) os.Exit(2)
} }
stringCompare := func(a, b string) int {
if a > b {
return 1
} else if a == b {
return 0
}
return -1
}
sortFunc := func(a, b prestates.Release) int { sortFunc := func(a, b prestates.Release) int {
if a.Version > b.Version { if a.Version > b.Version {
return 1 return 1
} else if a.Version == b.Version { } else if a.Version == b.Version {
return 0 return stringCompare(string(a.Type), string(b.Type))
} }
return -1 return -1
} }
...@@ -82,5 +90,5 @@ func main() { ...@@ -82,5 +90,5 @@ func main() {
} }
func formatRelease(release prestates.Release) string { func formatRelease(release prestates.Release) string {
return fmt.Sprintf("%-13v %s", release.Version, release.Hash) return fmt.Sprintf("%-13v %s %s", release.Version, release.Hash, release.Type)
} }
...@@ -43,9 +43,15 @@ do ...@@ -43,9 +43,15 @@ do
else else
cp "${BIN_DIR}/prestate.json" "${STATES_DIR}/${HASH}.json" cp "${BIN_DIR}/prestate.json" "${STATES_DIR}/${HASH}.json"
fi fi
VERSIONS_JSON=$(echo "${VERSIONS_JSON}" | jq ". += [{\"version\": \"${SHORT_VERSION}\", \"hash\": \"${HASH}\"}]") VERSIONS_JSON=$(echo "${VERSIONS_JSON}" | jq ". += [{\"version\": \"${SHORT_VERSION}\", \"hash\": \"${HASH}\"}]")
echo "Built ${VERSION}: ${HASH}" echo "Built ${VERSION}: ${HASH}"
if [ -f "${BIN_DIR}/prestate-proof-mt64.json" ]; then
HASH=$(cat "${BIN_DIR}/prestate-proof-mt64.json" | jq -r .pre)
cp "${BIN_DIR}/prestate-mt64.bin.gz" "${STATES_DIR}/${HASH}.mt64.bin.gz"
VERSIONS_JSON=$(echo "${VERSIONS_JSON}" | jq ". += [{\"version\": \"${SHORT_VERSION}\", \"hash\": \"${HASH}\", \"type\": \"cannon64\"}]")
echo "Built cannon64 ${VERSION}: ${HASH}"
fi
done done
echo "${VERSIONS_JSON}" > "${VERSIONS_FILE}" echo "${VERSIONS_JSON}" > "${VERSIONS_FILE}"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment