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))
+}