You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2019/01/04 18:21:09 UTC
[mynewt-newt] 04/17: Use "artifact" library
This is an automated email from the ASF dual-hosted git repository.
ccollins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git
commit 3e5cfc649ee4a07b2b2beeb315cd73835fa66850
Author: Christopher Collins <cc...@apache.org>
AuthorDate: Tue Nov 20 17:49:41 2018 -0800
Use "artifact" library
Import and use the artifact libary.
---
newt/cli/image_cmds.go | 133 ++++++++++++++++--------------------------------
newt/cli/mfg_cmds.go | 2 +-
newt/cli/run_cmds.go | 38 ++++++++------
newt/mfg/create.go | 6 +--
newt/mfg/meta.go | 5 +-
newt/mfg/mfg.go | 2 +-
newt/pkg/bsp_package.go | 6 +--
newt/resolve/resolve.go | 8 +--
newt/syscfg/syscfg.go | 8 +--
9 files changed, 86 insertions(+), 122 deletions(-)
diff --git a/newt/cli/image_cmds.go b/newt/cli/image_cmds.go
index 73459ed..cf742ac 100644
--- a/newt/cli/image_cmds.go
+++ b/newt/cli/image_cmds.go
@@ -23,38 +23,50 @@ import (
"strconv"
"github.com/spf13/cobra"
+
+ "mynewt.apache.org/newt/artifact/image"
"mynewt.apache.org/newt/newt/builder"
- "mynewt.apache.org/newt/newt/image"
+ "mynewt.apache.org/newt/newt/imgprod"
"mynewt.apache.org/newt/newt/newtutil"
"mynewt.apache.org/newt/util"
)
var useV1 bool
var useV2 bool
+var encKeyFilename string
-func parseKeyArgs(args []string) ([]string, uint8, error) {
+// @return keys, key ID, error
+func parseKeyArgs(args []string) ([]image.ImageSigKey, uint8, error) {
if len(args) == 0 {
return nil, 0, nil
}
- if len(args) == 1 {
- return args, 0, nil
- }
+ var keyId uint8
+ var keyFilenames []string
- if image.UseV1 {
- keyId64, err := strconv.ParseUint(args[1], 10, 8)
+ if len(args) == 1 {
+ keyFilenames = append(keyFilenames, args[0])
+ } else if useV1 {
+ keyIdUint, err := strconv.ParseUint(args[1], 10, 8)
if err != nil {
return nil, 0, util.NewNewtError("Key ID must be between 0-255")
}
- return args[:1], uint8(keyId64), nil
+ keyId = uint8(keyIdUint)
+ keyFilenames = args[:1]
+ } else {
+ keyId = 0
+ keyFilenames = args
}
- return args, 0, nil
+ keys, err := image.ReadKeys(keyFilenames)
+ if err != nil {
+ return nil, 0, err
+ }
+
+ return keys, keyId, nil
}
func createImageRunCmd(cmd *cobra.Command, args []string) {
- var keyId uint8
-
if len(args) < 2 {
NewtUsage(cmd, util.NewNewtError("Must specify target and version"))
}
@@ -62,10 +74,9 @@ func createImageRunCmd(cmd *cobra.Command, args []string) {
if useV1 && useV2 {
NewtUsage(cmd, util.NewNewtError("Either -1, or -2, but not both"))
}
- if useV2 {
- image.UseV1 = false
- } else {
- image.UseV1 = true
+
+ if !useV2 {
+ useV1 = true
}
TryGetProject()
@@ -76,65 +87,30 @@ func createImageRunCmd(cmd *cobra.Command, args []string) {
NewtUsage(cmd, util.NewNewtError("Invalid target name: "+targetName))
}
- version := args[1]
+ ver, err := image.ParseVersion(args[1])
+ if err != nil {
+ NewtUsage(cmd, err)
+ }
b, err := builder.NewTargetBuilder(t)
if err != nil {
NewtUsage(nil, err)
}
- keystrs, keyId, err := parseKeyArgs(args[2:])
+ keys, _, err := parseKeyArgs(args[2:])
if err != nil {
NewtUsage(cmd, err)
}
- if _, _, err := b.CreateImages(version, keystrs, keyId); err != nil {
+ if err := b.Build(); err != nil {
NewtUsage(nil, err)
}
-}
-func resignImageRunCmd(cmd *cobra.Command, args []string) {
- var keyId uint8
- var keystr string
-
- if len(args) < 1 {
- NewtUsage(cmd, util.NewNewtError("Must specify image to re-sign."))
- }
-
- if useV1 && useV2 {
- NewtUsage(cmd, util.NewNewtError("Either -1, or -2, but not both"))
- }
- if useV2 {
- image.UseV1 = false
+ if useV1 {
+ err = imgprod.ProduceAllV1(b, ver, keys, encKeyFilename)
} else {
- image.UseV1 = true
- }
-
- imgName := args[0]
- img, err := image.OldImage(imgName)
- if err != nil {
- NewtUsage(nil, err)
- return
- }
-
- if len(args) > 1 {
- if len(args) > 2 {
- keyId64, err := strconv.ParseUint(args[2], 10, 8)
- if err != nil {
- NewtUsage(cmd,
- util.NewNewtError("Key ID must be between 0-255"))
- }
- keyId = uint8(keyId64)
- }
- keystr = args[1]
- err = img.SetKeyV1(keystr, keyId)
- if err != nil {
- NewtUsage(nil, err)
- return
- }
+ err = imgprod.ProduceAll(b, ver, keys, encKeyFilename)
}
-
- err = img.ReSign()
if err != nil {
NewtUsage(nil, err)
}
@@ -185,44 +161,23 @@ func AddImageCommands(cmd *cobra.Command) {
"1", "1", false, "Use old image header format")
createImageCmd.PersistentFlags().BoolVarP(&useV2,
"2", "2", false, "Use new image header format")
- createImageCmd.PersistentFlags().StringVarP(&image.PubKeyFile,
+ createImageCmd.PersistentFlags().StringVarP(&encKeyFilename,
"encrypt", "e", "", "Encrypt image using this public key")
cmd.AddCommand(createImageCmd)
AddTabCompleteFn(createImageCmd, targetList)
- resignImageHelpText := "Sign/Re-sign an existing image file with the specified signing key.\nIf a signing key is not specified, the signing key in the current image\nis stripped. "
- resignImageHelpText += "A image header will be recreated!\n"
- resignImageHelpText += "\nWarning: The image hash will change if you change key-id "
- resignImageHelpText += "or the type of key used for signing.\n"
- resignImageHelpText += "Default image format is version 1.\n"
- resignImageHelpText += "RSA signature format by default for ver 1 image is PKCSv1.5\n"
- resignImageHelpText += "RSA signature format for ver 2 image is RSA-PSS\n"
-
- resignImageHelpEx := " newt resign-image my_target1.img private.pem\n"
- resignImageHelpEx += " newt resign-image my_target1.img private.pem 5\n"
+ resignImageHelpText :=
+ "This command is obsolete; use the `larva` tool to resign images."
resignImageCmd := &cobra.Command{
- Use: "resign-image <image-file> [signing-key [key-id]]",
- Short: "Re-sign an image.",
- Long: resignImageHelpText,
- Example: resignImageHelpEx,
- Run: resignImageRunCmd,
+ Use: "resign-image",
+ Short: "Obsolete",
+ Long: resignImageHelpText,
+ Run: func(cmd *cobra.Command, args []string) {
+ cmd.Help()
+ },
}
- resignImageCmd.PersistentFlags().BoolVarP(&newtutil.NewtForce,
- "force", "f", false,
- "Ignore flash overflow errors during image creation")
- resignImageCmd.PersistentFlags().BoolVar(&image.UseRsaPss,
- "rsa-pss", false,
- "Use RSA-PSS instead of PKCS#1 v1.5 for RSA sig. "+
- "Meaningful for version 1 image format.")
- resignImageCmd.PersistentFlags().BoolVarP(&useV1,
- "1", "1", false, "Use old image header format")
- resignImageCmd.PersistentFlags().BoolVarP(&useV2,
- "2", "2", false, "Use new image header format")
- resignImageCmd.PersistentFlags().StringVarP(&image.PubKeyFile,
- "encrypt", "e", "", "Encrypt image using this public key")
-
cmd.AddCommand(resignImageCmd)
}
diff --git a/newt/cli/mfg_cmds.go b/newt/cli/mfg_cmds.go
index 1e35d4e..513e2c4 100644
--- a/newt/cli/mfg_cmds.go
+++ b/newt/cli/mfg_cmds.go
@@ -22,7 +22,7 @@ package cli
import (
"github.com/spf13/cobra"
- "mynewt.apache.org/newt/newt/image"
+ "mynewt.apache.org/newt/artifact/image"
"mynewt.apache.org/newt/newt/mfg"
"mynewt.apache.org/newt/newt/pkg"
"mynewt.apache.org/newt/util"
diff --git a/newt/cli/run_cmds.go b/newt/cli/run_cmds.go
index d3f3ed9..55b0b9b 100644
--- a/newt/cli/run_cmds.go
+++ b/newt/cli/run_cmds.go
@@ -23,7 +23,8 @@ import (
"fmt"
"github.com/spf13/cobra"
- "mynewt.apache.org/newt/newt/image"
+ "mynewt.apache.org/newt/artifact/image"
+ "mynewt.apache.org/newt/newt/imgprod"
"mynewt.apache.org/newt/newt/newtutil"
"mynewt.apache.org/newt/newt/parse"
"mynewt.apache.org/newt/util"
@@ -37,10 +38,8 @@ func runRunCmd(cmd *cobra.Command, args []string) {
if useV1 && useV2 {
NewtUsage(cmd, util.NewNewtError("Either -1, or -2, but not both"))
}
- if useV2 {
- image.UseV1 = false
- } else {
- image.UseV1 = true
+ if !useV2 {
+ useV1 = true
}
TryGetProject()
@@ -60,9 +59,9 @@ func runRunCmd(cmd *cobra.Command, args []string) {
NewtUsage(nil, err)
}
} else {
- var version string = ""
+ var verStr string
if len(args) > 1 {
- version = args[1]
+ verStr = args[1]
} else {
// If user did not provide version number and the target is not a
// bootloader and doesn't run in the simulator, then ask the user
@@ -78,29 +77,38 @@ func runRunCmd(cmd *cobra.Command, args []string) {
if !parse.ValueIsTrue(settings["BOOT_LOADER"]) &&
!parse.ValueIsTrue(settings["BSP_SIMULATED"]) {
- version = "0"
+ verStr = "0"
fmt.Println("Enter image version(default 0):")
- fmt.Scanf("%s\n", &version)
+ fmt.Scanf("%s\n", &verStr)
}
}
+
if err := b.Build(); err != nil {
NewtUsage(nil, err)
}
- if len(version) > 0 {
- var keystrs []string
- var keyId uint8
+ if len(verStr) > 0 {
+ ver, err := image.ParseVersion(verStr)
+ if err != nil {
+ NewtUsage(cmd, err)
+ }
+
+ var keys []image.ImageSigKey
if len(args) > 2 {
- keystrs, keyId, err = parseKeyArgs(args[2:])
+ keys, _, err = parseKeyArgs(args[2:])
if err != nil {
NewtUsage(cmd, err)
}
}
- _, _, err = b.CreateImages(version, keystrs, keyId)
+ if useV1 {
+ err = imgprod.ProduceAllV1(b, ver, keys, "")
+ } else {
+ err = imgprod.ProduceAll(b, ver, keys, "")
+ }
if err != nil {
- NewtUsage(cmd, err)
+ NewtUsage(nil, err)
}
}
diff --git a/newt/mfg/create.go b/newt/mfg/create.go
index 2ee9f07..4930329 100644
--- a/newt/mfg/create.go
+++ b/newt/mfg/create.go
@@ -28,8 +28,8 @@ import (
"sort"
"time"
+ "mynewt.apache.org/newt/artifact/flash"
"mynewt.apache.org/newt/newt/builder"
- "mynewt.apache.org/newt/newt/flash"
"mynewt.apache.org/newt/newt/pkg"
"mynewt.apache.org/newt/newt/target"
"mynewt.apache.org/newt/util"
@@ -44,8 +44,8 @@ type mfgManifest struct {
}
type mfgSection struct {
- offset int
- blob []byte
+ offset int
+ blob []byte
}
type createState struct {
diff --git a/newt/mfg/meta.go b/newt/mfg/meta.go
index 87aabe0..5e6e5ad 100644
--- a/newt/mfg/meta.go
+++ b/newt/mfg/meta.go
@@ -24,7 +24,8 @@ import (
"crypto/sha256"
"encoding/binary"
- "mynewt.apache.org/newt/newt/flash"
+ "mynewt.apache.org/newt/artifact/flash"
+ "mynewt.apache.org/newt/newt/flashmap"
"mynewt.apache.org/newt/util"
)
@@ -172,7 +173,7 @@ func writeZeroHash(buf *bytes.Buffer) error {
}
// @return meta-offset, hash-offset, error
-func insertMeta(section0Data []byte, flashMap flash.FlashMap) (
+func insertMeta(section0Data []byte, flashMap flashmap.FlashMap) (
int, int, error) {
buf := &bytes.Buffer{}
diff --git a/newt/mfg/mfg.go b/newt/mfg/mfg.go
index 51d6e6d..10c6c8e 100644
--- a/newt/mfg/mfg.go
+++ b/newt/mfg/mfg.go
@@ -22,7 +22,7 @@ package mfg
import (
"sort"
- "mynewt.apache.org/newt/newt/image"
+ "mynewt.apache.org/newt/artifact/image"
"mynewt.apache.org/newt/newt/pkg"
"mynewt.apache.org/newt/newt/target"
"mynewt.apache.org/newt/newt/toolchain"
diff --git a/newt/pkg/bsp_package.go b/newt/pkg/bsp_package.go
index 1406593..81196ff 100644
--- a/newt/pkg/bsp_package.go
+++ b/newt/pkg/bsp_package.go
@@ -24,7 +24,7 @@ import (
"runtime"
"strings"
- "mynewt.apache.org/newt/newt/flash"
+ "mynewt.apache.org/newt/newt/flashmap"
"mynewt.apache.org/newt/newt/interfaces"
"mynewt.apache.org/newt/newt/newtutil"
"mynewt.apache.org/newt/newt/ycfg"
@@ -41,7 +41,7 @@ type BspPackage struct {
Part2LinkerScripts []string /* scripts to link app to second partition */
DownloadScript string
DebugScript string
- FlashMap flash.FlashMap
+ FlashMap flashmap.FlashMap
BspV ycfg.YCfg
}
@@ -162,7 +162,7 @@ func (bsp *BspPackage) Reload(settings map[string]string) error {
return util.NewNewtError("BSP does not specify a flash map " +
"(bsp.flash_map)")
}
- bsp.FlashMap, err = flash.Read(ymlFlashMap)
+ bsp.FlashMap, err = flashmap.Read(ymlFlashMap)
if err != nil {
return err
}
diff --git a/newt/resolve/resolve.go b/newt/resolve/resolve.go
index c9ccb42..45944c6 100644
--- a/newt/resolve/resolve.go
+++ b/newt/resolve/resolve.go
@@ -26,7 +26,7 @@ import (
log "github.com/Sirupsen/logrus"
- "mynewt.apache.org/newt/newt/flash"
+ "mynewt.apache.org/newt/newt/flashmap"
"mynewt.apache.org/newt/newt/logcfg"
"mynewt.apache.org/newt/newt/parse"
"mynewt.apache.org/newt/newt/pkg"
@@ -61,7 +61,7 @@ type Resolver struct {
pkgMap map[*pkg.LocalPackage]*ResolvePackage
seedPkgs []*pkg.LocalPackage
injectedSettings map[string]string
- flashMap flash.FlashMap
+ flashMap flashmap.FlashMap
cfg syscfg.Cfg
lcfg logcfg.LCfg
sysinitCfg sysinit.SysinitCfg
@@ -131,7 +131,7 @@ type Resolution struct {
func newResolver(
seedPkgs []*pkg.LocalPackage,
injectedSettings map[string]string,
- flashMap flash.FlashMap) *Resolver {
+ flashMap flashmap.FlashMap) *Resolver {
r := &Resolver{
apis: map[string]resolveApi{},
@@ -800,7 +800,7 @@ func ResolveFull(
loaderSeeds []*pkg.LocalPackage,
appSeeds []*pkg.LocalPackage,
injectedSettings map[string]string,
- flashMap flash.FlashMap) (*Resolution, error) {
+ flashMap flashmap.FlashMap) (*Resolution, error) {
// First, calculate syscfg and determine which package provides each
// required API. Syscfg and APIs are project-wide; that is, they are
diff --git a/newt/syscfg/syscfg.go b/newt/syscfg/syscfg.go
index 8a81a68..3010937 100644
--- a/newt/syscfg/syscfg.go
+++ b/newt/syscfg/syscfg.go
@@ -34,7 +34,7 @@ import (
log "github.com/Sirupsen/logrus"
"github.com/spf13/cast"
- "mynewt.apache.org/newt/newt/flash"
+ "mynewt.apache.org/newt/newt/flashmap"
"mynewt.apache.org/newt/newt/interfaces"
"mynewt.apache.org/newt/newt/newtutil"
"mynewt.apache.org/newt/newt/parse"
@@ -738,7 +738,7 @@ func (cfg *Cfg) detectPriorityViolations() {
}
// Detects all flash conflict errors in the syscfg and records them internally.
-func (cfg *Cfg) detectFlashConflicts(flashMap flash.FlashMap) {
+func (cfg *Cfg) detectFlashConflicts(flashMap flashmap.FlashMap) {
entries := cfg.settingsOfType(CFG_SETTING_TYPE_FLASH_OWNER)
areaEntryMap := map[string][]CfgEntry{}
@@ -1072,7 +1072,7 @@ func (cfg *Cfg) detectAmbiguities() {
// Detects and records errors in the build's syscfg. This should only be
// called after APIs are resolved to avoid false positives.
-func (cfg *Cfg) DetectErrors(flashMap flash.FlashMap) {
+func (cfg *Cfg) DetectErrors(flashMap flashmap.FlashMap) {
cfg.detectAmbiguities()
cfg.detectViolations()
cfg.detectPriorityViolations()
@@ -1081,7 +1081,7 @@ func (cfg *Cfg) DetectErrors(flashMap flash.FlashMap) {
func Read(lpkgs []*pkg.LocalPackage, apis []string,
injectedSettings map[string]string, settings map[string]string,
- flashMap flash.FlashMap) (Cfg, error) {
+ flashMap flashmap.FlashMap) (Cfg, error) {
cfg := NewCfg()
for k, v := range injectedSettings {