diff --git a/swupd/create_manifests.go b/swupd/create_manifests.go index 395ac08..2296afa 100644 --- a/swupd/create_manifests.go +++ b/swupd/create_manifests.go @@ -410,12 +410,18 @@ func CreateManifests(version uint32, minVersion uint32, format uint, statedir st newMoM := Manifest{ Name: "MoM", Header: ManifestHeader{ - Format: format, - Version: version, - Previous: lastVersion, - TimeStamp: timeStamp, + Format: format, + Version: version, + MinVersion: minVersion, + Previous: lastVersion, + TimeStamp: timeStamp, }, } + // if min-version wasn't explicitly set we need to carry the header forward + // from the old MoM + if newMoM.Header.MinVersion == 0 && oldMoM.Header.MinVersion > 0 { + newMoM.Header.MinVersion = oldMoM.Header.MinVersion + } fmt.Println("Writing manifest files...") newFull, err := newMoM.writeBundleManifests(newManifests, verOutput) diff --git a/swupd/manifest.go b/swupd/manifest.go index 97e7643..20865fd 100644 --- a/swupd/manifest.go +++ b/swupd/manifest.go @@ -49,6 +49,7 @@ type ManifestHeader struct { Format uint Version uint32 Previous uint32 + MinVersion uint32 FileCount uint32 TimeStamp time.Time ContentSize uint64 @@ -99,6 +100,11 @@ func readManifestFileHeaderLine(fields []string, m *Manifest) error { return fmt.Errorf("invalid manifest, %v", err) } m.Header.Previous = uint32(parsed) + case "minversion:": + if parsed, err = strconv.ParseUint(fields[1], 10, 32); err != nil { + return fmt.Errorf("invalid manifest, %v", err) + } + m.Header.MinVersion = uint32(parsed) case "filecount:": if parsed, err = strconv.ParseUint(fields[1], 10, 32); err != nil { return fmt.Errorf("invalid manifest, %v", err) @@ -294,7 +300,8 @@ var manifestTemplate = template.Must(template.New("manifest").Parse(` MANIFEST {{.Format}} version: {{.Version}} previous: {{.Previous}} -filecount: {{.FileCount}} +{{ if ne .MinVersion 0 }}minversion: {{.MinVersion}} +{{ end }}filecount: {{.FileCount}} timestamp: {{(.TimeStamp.Unix)}} contentsize: {{.ContentSize -}} {{range .Includes}}