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/10/24 16:40:58 UTC

[mynewt-newt] 01/03: mfg: Include raw binary files in mfg output

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 393a8857f587ac40a72b7e675ae65bc0f1ec1311
Author: Christopher Collins <cc...@apache.org>
AuthorDate: Fri Oct 18 14:16:11 2019 -0700

    mfg: Include raw binary files in mfg output
    
    The `newt mfg create` output includes some files for each target
    embedded in the mfgimage.  However, it did not include anything for the
    "raw" items (binary files that get embedded in flash).
    
    This commit changes the `newt mfg create` output such that it includes
    the raw items.  For example, an mfgimage with one raw item might produce
    the following output (note the "raws" directory):
    
        Generated the following files:
            myproj/bin/mfgs/steam/manifest.json
            myproj/bin/mfgs/steam/mfgimg.bin
            myproj/bin/mfgs/steam/mfgimg.hex
            myproj/bin/mfgs/steam/raws/0/raw.bin
            myproj/bin/mfgs/steam/targets/0/elf.elf
            myproj/bin/mfgs/steam/targets/0/image.hex
            myproj/bin/mfgs/steam/targets/0/image.img
            myproj/bin/mfgs/steam/targets/0/manifest.json
---
 newt/mfg/emit.go  | 74 ++++++++++++++++++++++++++++++++++++-------------------
 newt/mfg/paths.go |  8 ++++++
 2 files changed, 57 insertions(+), 25 deletions(-)

diff --git a/newt/mfg/emit.go b/newt/mfg/emit.go
index 4652129..ed45ee3 100644
--- a/newt/mfg/emit.go
+++ b/newt/mfg/emit.go
@@ -211,36 +211,60 @@ func NewMfgEmitter(mb MfgBuilder, name string, ver image.ImageVersion,
 	return me, nil
 }
 
+func (me *MfgEmitter) calcCpEntriesTarget(mt MfgEmitTarget, idx int) []CpEntry {
+	var entries []CpEntry
+
+	var binTo string
+	if mt.IsBoot {
+		binTo = MfgTargetBinPath(idx)
+	} else {
+		binTo = MfgTargetImgPath(idx)
+	}
+
+	entry := CpEntry{
+		From: mt.BinPath,
+		To:   MfgBinDir(me.Name) + "/" + binTo,
+	}
+	entries = append(entries, entry)
+
+	entry = CpEntry{
+		From: mt.ElfPath,
+		To: MfgBinDir(me.Name) + "/" +
+			MfgTargetElfPath(idx),
+	}
+	entries = append(entries, entry)
+
+	entry = CpEntry{
+		From: mt.ManifestPath,
+		To: MfgBinDir(me.Name) + "/" +
+			MfgTargetManifestPath(idx),
+	}
+	entries = append(entries, entry)
+
+	return entries
+}
+
+func (me *MfgEmitter) calcCpEntriesRaw(mr MfgEmitRaw, idx int) []CpEntry {
+	entry := CpEntry{
+		From: mr.Filename,
+		To: MfgBinDir(me.Name) + "/" +
+			MfgRawBinPath(idx),
+	}
+
+	return []CpEntry{entry}
+}
+
 // Calculates the necessary file copy operations for emitting an mfg image.
 func (me *MfgEmitter) calcCpEntries() []CpEntry {
 	entries := []CpEntry{}
 	for i, mt := range me.Targets {
-		var binTo string
-		if mt.IsBoot {
-			binTo = MfgTargetBinPath(i)
-		} else {
-			binTo = MfgTargetImgPath(i)
-		}
-
-		entry := CpEntry{
-			From: mt.BinPath,
-			To:   MfgBinDir(me.Name) + "/" + binTo,
-		}
-		entries = append(entries, entry)
-
-		entry = CpEntry{
-			From: mt.ElfPath,
-			To: MfgBinDir(me.Name) + "/" +
-				MfgTargetElfPath(i),
-		}
-		entries = append(entries, entry)
+		targetEntries := me.calcCpEntriesTarget(mt, i)
+		entries = append(entries, targetEntries...)
+	}
 
-		entry = CpEntry{
-			From: mt.ManifestPath,
-			To: MfgBinDir(me.Name) + "/" +
-				MfgTargetManifestPath(i),
-		}
-		entries = append(entries, entry)
+	for i, mr := range me.Raws {
+		rawEntries := me.calcCpEntriesRaw(mr, i)
+		entries = append(entries, rawEntries...)
 	}
 
 	return entries
diff --git a/newt/mfg/paths.go b/newt/mfg/paths.go
index 59c55e5..027ea23 100644
--- a/newt/mfg/paths.go
+++ b/newt/mfg/paths.go
@@ -49,6 +49,10 @@ func MfgTargetDir(targetNum int) string {
 	return fmt.Sprintf("targets/%d", targetNum)
 }
 
+func MfgRawDir(rawNum int) string {
+	return fmt.Sprintf("raws/%d", rawNum)
+}
+
 func MfgTargetBinPath(targetNum int) string {
 	return fmt.Sprintf("%s/binary.bin", MfgTargetDir(targetNum))
 }
@@ -68,3 +72,7 @@ func MfgTargetElfPath(targetNum int) string {
 func MfgTargetManifestPath(targetNum int) string {
 	return fmt.Sprintf("%s/manifest.json", MfgTargetDir(targetNum))
 }
+
+func MfgRawBinPath(rawNum int) string {
+	return fmt.Sprintf("%s/raw.bin", MfgRawDir(rawNum))
+}