Repository: incubator-mynewt-newt
Updated Branches:
refs/heads/develop e2546a89a -> 5125fc181
MYNEWT-540 newt - Add version number to mfg image
New usage:
newt mfg create <mfg-package-name> <version #.#.#.#>
newt mfg deploy <mfg-package-name> [version #.#.#.#]
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/repo
Commit:
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/commit/5125fc18
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/5125fc18
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/5125fc18
Branch: refs/heads/develop
Commit: 5125fc181a42ec9bc1a314579b5f79b35b523e7c
Parents: e2546a8
Author: Christopher Collins <[email protected]>
Authored: Mon Jan 9 15:37:26 2017 -0800
Committer: Christopher Collins <[email protected]>
Committed: Mon Jan 9 15:37:26 2017 -0800
----------------------------------------------------------------------
newt/builder/targetbuild.go | 4 +--
newt/cli/mfg_cmds.go | 28 ++++++++++++++++---
newt/image/image.go | 59 ++++++++++++++++++++++++----------------
newt/mfg/create.go | 2 ++
newt/mfg/mfg.go | 7 +++++
5 files changed, 70 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/5125fc18/newt/builder/targetbuild.go
----------------------------------------------------------------------
diff --git a/newt/builder/targetbuild.go b/newt/builder/targetbuild.go
index db6172c..4d96c1f 100644
--- a/newt/builder/targetbuild.go
+++ b/newt/builder/targetbuild.go
@@ -622,9 +622,7 @@ func (t *TargetBuilder) augmentManifest(
return err
}
- manifest.Version = fmt.Sprintf("%d.%d.%d.%d",
- appImg.Version.Major, appImg.Version.Minor,
- appImg.Version.Rev, appImg.Version.BuildNum)
+ manifest.Version = appImg.Version.String()
manifest.ImageHash = fmt.Sprintf("%x", appImg.Hash)
manifest.Image = filepath.Base(appImg.TargetImg)
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/5125fc18/newt/cli/mfg_cmds.go
----------------------------------------------------------------------
diff --git a/newt/cli/mfg_cmds.go b/newt/cli/mfg_cmds.go
index 173a261..38816d7 100644
--- a/newt/cli/mfg_cmds.go
+++ b/newt/cli/mfg_cmds.go
@@ -22,6 +22,7 @@ package cli
import (
"github.com/spf13/cobra"
+ "mynewt.apache.org/newt/newt/image"
"mynewt.apache.org/newt/newt/mfg"
"mynewt.apache.org/newt/newt/pkg"
"mynewt.apache.org/newt/util"
@@ -83,8 +84,9 @@ func mfgLoad(mi *mfg.MfgImage) {
}
func mfgCreateRunCmd(cmd *cobra.Command, args []string) {
- if len(args) < 1 {
- NewtUsage(cmd, util.NewNewtError("Must specify mfg package
name"))
+ if len(args) < 2 {
+ NewtUsage(cmd, util.NewNewtError(
+ "Must specify mfg package name and version number"))
}
pkgName := args[0]
@@ -93,11 +95,18 @@ func mfgCreateRunCmd(cmd *cobra.Command, args []string) {
NewtUsage(cmd, err)
}
+ versStr := args[1]
+ ver, err := image.ParseVersion(versStr)
+ if err != nil {
+ NewtUsage(cmd, err)
+ }
+
mi, err := mfg.Load(lpkg)
if err != nil {
NewtUsage(nil, err)
}
+ mi.SetVersion(ver)
mfgCreate(mi)
}
@@ -131,12 +140,23 @@ func mfgDeployRunCmd(cmd *cobra.Command, args []string) {
NewtUsage(cmd, err)
}
+ ver := image.ImageVersion{}
+ if len(args) >= 2 {
+ versStr := args[1]
+ ver, err = image.ParseVersion(versStr)
+ if err != nil {
+ NewtUsage(cmd, err)
+ }
+ }
+
mi, err := mfg.Load(lpkg)
if err != nil {
NewtUsage(nil, err)
}
+ mi.SetVersion(ver)
mfgCreate(mi)
+
mfgLoad(mi)
}
@@ -156,7 +176,7 @@ func AddMfgCommands(cmd *cobra.Command) {
cmd.AddCommand(mfgCmd)
mfgCreateCmd := &cobra.Command{
- Use: "create <mfg-package-name>",
+ Use: "create <mfg-package-name> <version #.#.#.#>",
Short: "Create a manufacturing flash image",
Run: mfgCreateRunCmd,
}
@@ -172,7 +192,7 @@ func AddMfgCommands(cmd *cobra.Command) {
AddTabCompleteFn(mfgLoadCmd, mfgList)
mfgDeployCmd := &cobra.Command{
- Use: "deploy <mfg-package-name>",
+ Use: "deploy <mfg-package-name> [version #.#.#.#]",
Short: "Builds and uploads a manufacturing image (create +
load)",
Run: mfgDeployRunCmd,
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/5125fc18/newt/image/image.go
----------------------------------------------------------------------
diff --git a/newt/image/image.go b/newt/image/image.go
index 013ddcc..49134d1 100644
--- a/newt/image/image.go
+++ b/newt/image/image.go
@@ -151,55 +151,68 @@ type ECDSASig struct {
S *big.Int
}
-func NewImage(srcBinPath string, dstImgPath string) (*Image, error) {
- image := &Image{}
-
- image.SourceBin = srcBinPath
- image.TargetImg = dstImgPath
- return image, nil
-}
-
-func (image *Image) SetVersion(versStr string) error {
+func ParseVersion(versStr string) (ImageVersion, error) {
var err error
var major uint64
var minor uint64
var rev uint64
var buildNum uint64
+ var ver ImageVersion
components := strings.Split(versStr, ".")
major, err = strconv.ParseUint(components[0], 10, 8)
if err != nil {
- return util.NewNewtError(fmt.Sprintf("Invalid version string
%s",
- versStr))
+ return ver, util.FmtNewtError("Invalid version string %s",
versStr)
}
if len(components) > 1 {
minor, err = strconv.ParseUint(components[1], 10, 8)
if err != nil {
- return util.NewNewtError(fmt.Sprintf("Invalid version
string %s",
- versStr))
+ return ver, util.FmtNewtError("Invalid version string
%s", versStr)
}
}
if len(components) > 2 {
rev, err = strconv.ParseUint(components[2], 10, 16)
if err != nil {
- return util.NewNewtError(fmt.Sprintf("Invalid version
string %s",
- versStr))
+ return ver, util.FmtNewtError("Invalid version string
%s", versStr)
}
}
if len(components) > 3 {
buildNum, err = strconv.ParseUint(components[3], 10, 32)
if err != nil {
- return util.NewNewtError(fmt.Sprintf("Invalid version
string %s",
- versStr))
+ return ver, util.FmtNewtError("Invalid version string
%s", versStr)
}
}
- image.Version.Major = uint8(major)
- image.Version.Minor = uint8(minor)
- image.Version.Rev = uint16(rev)
- image.Version.BuildNum = uint32(buildNum)
+
+ ver.Major = uint8(major)
+ ver.Minor = uint8(minor)
+ ver.Rev = uint16(rev)
+ ver.BuildNum = uint32(buildNum)
+ return ver, nil
+}
+
+func (ver ImageVersion) String() string {
+ return fmt.Sprintf("%d.%d.%d.%d",
+ ver.Major, ver.Minor, ver.Rev, ver.BuildNum)
+}
+
+func NewImage(srcBinPath string, dstImgPath string) (*Image, error) {
+ image := &Image{}
+
+ image.SourceBin = srcBinPath
+ image.TargetImg = dstImgPath
+ return image, nil
+}
+
+func (image *Image) SetVersion(versStr string) error {
+ ver, err := ParseVersion(versStr)
+ if err != nil {
+ return err
+ }
+
log.Debugf("Assigning version number %d.%d.%d.%d\n",
- image.Version.Major, image.Version.Minor,
- image.Version.Rev, image.Version.BuildNum)
+ ver.Major, ver.Minor, ver.Rev, ver.BuildNum)
+
+ image.Version = ver
buf := new(bytes.Buffer)
err = binary.Write(buf, binary.LittleEndian, image.Version)
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/5125fc18/newt/mfg/create.go
----------------------------------------------------------------------
diff --git a/newt/mfg/create.go b/newt/mfg/create.go
index 1257b75..08614e0 100644
--- a/newt/mfg/create.go
+++ b/newt/mfg/create.go
@@ -38,6 +38,7 @@ import (
type mfgManifest struct {
BuildTime string `json:"build_time"`
MfgHash string `json:"mfg_hash"`
+ Version string `json:"version"`
MetaSection int `json:"meta_section"`
MetaOffset int `json:"meta_offset"`
}
@@ -437,6 +438,7 @@ func (mi *MfgImage) build() (createState, error) {
func (mi *MfgImage) createManifest(cs createState) ([]byte, error) {
manifest := mfgManifest{
BuildTime: time.Now().Format(time.RFC3339),
+ Version: mi.version.String(),
MfgHash: fmt.Sprintf("%x", cs.hash),
MetaSection: 0,
MetaOffset: cs.metaOffset,
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/5125fc18/newt/mfg/mfg.go
----------------------------------------------------------------------
diff --git a/newt/mfg/mfg.go b/newt/mfg/mfg.go
index 999c00f..98fbc37 100644
--- a/newt/mfg/mfg.go
+++ b/newt/mfg/mfg.go
@@ -22,6 +22,7 @@ package mfg
import (
"sort"
+ "mynewt.apache.org/newt/newt/image"
"mynewt.apache.org/newt/newt/pkg"
"mynewt.apache.org/newt/newt/target"
)
@@ -50,6 +51,12 @@ type MfgImage struct {
boot *target.Target
images []*target.Target
rawEntries []MfgRawEntry
+
+ version image.ImageVersion
+}
+
+func (mi *MfgImage) SetVersion(ver image.ImageVersion) {
+ mi.version = ver
}
func (mi *MfgImage) imgApps(imageIdx int) (