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 2016/10/12 21:57:27 UTC

[1/2] incubator-mynewt-newt git commit: Recored latest commit hashes in manifest

Repository: incubator-mynewt-newt
Updated Branches:
  refs/heads/develop 80a676e13 -> 838d6fc7a


Recored latest commit hashes in manifest


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/b0bd9e66
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/b0bd9e66
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/b0bd9e66

Branch: refs/heads/develop
Commit: b0bd9e66b48a5080d3d89549038f301c318b6372
Parents: eca725e
Author: spoonofpower <sp...@gmail.com>
Authored: Wed Sep 7 21:18:58 2016 -0700
Committer: spoonofpower <sp...@gmail.com>
Committed: Tue Oct 4 23:09:28 2016 -0700

----------------------------------------------------------------------
 newt/image/image.go | 95 ++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 87 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/b0bd9e66/newt/image/image.go
----------------------------------------------------------------------
diff --git a/newt/image/image.go b/newt/image/image.go
index cc57d3a..e144e60 100644
--- a/newt/image/image.go
+++ b/newt/image/image.go
@@ -128,10 +128,23 @@ type ImageManifest struct {
 	Pkgs       []*ImageManifestPkg `json:"pkgs"`
 	LoaderPkgs []*ImageManifestPkg `json:"loader_pkgs"`
 	TgtVars    []string            `json:"target"`
+	Repos      []ImageManifestRepo `json:"repos"`
 }
 
 type ImageManifestPkg struct {
 	Name string `json:"name"`
+	Repo string `json:"repo"`
+}
+
+type ImageManifestRepo struct {
+	Name   string `json:"name"`
+	Commit string `json:"commit"`
+	Dirty  bool   `json:"dirty,omitempty"`
+	URL    string `json:"url,omitempty"`
+}
+
+type repoManager struct {
+	repos map[string]ImageManifestRepo
 }
 
 type ECDSASig struct {
@@ -464,11 +477,9 @@ func CreateManifest(t *builder.TargetBuilder, app *Image, loader *Image, build_i
 		Date:      timeStr,
 	}
 
+	rm := newRepoManager()
 	for _, builtPkg := range t.AppBuilder.PkgMap {
-		imgPkg := &ImageManifestPkg{
-			Name: builtPkg.Name(),
-		}
-		manifest.Pkgs = append(manifest.Pkgs, imgPkg)
+		manifest.Pkgs = append(manifest.Pkgs, rm.getImageManifestPkg(builtPkg))
 	}
 
 	if loader != nil {
@@ -476,12 +487,10 @@ func CreateManifest(t *builder.TargetBuilder, app *Image, loader *Image, build_i
 		manifest.LoaderHash = fmt.Sprintf("%x", loader.hash)
 
 		for _, builtPkg := range t.LoaderBuilder.PkgMap {
-			imgPkg := &ImageManifestPkg{
-				Name: builtPkg.Name(),
-			}
-			manifest.LoaderPkgs = append(manifest.LoaderPkgs, imgPkg)
+			manifest.LoaderPkgs = append(manifest.LoaderPkgs, rm.getImageManifestPkg(builtPkg))
 		}
 	}
+	manifest.Repos = rm.allRepos()
 
 	manifest.BuildID = fmt.Sprintf("%x", build_id)
 
@@ -514,3 +523,73 @@ func CreateManifest(t *builder.TargetBuilder, app *Image, loader *Image, build_i
 
 	return nil
 }
+
+func newRepoManager() *repoManager {
+	return &repoManager{
+		repos: make(map[string]ImageManifestRepo),
+	}
+}
+
+func (r *repoManager) getImageManifestPkg(bp *builder.BuildPackage) *ImageManifestPkg {
+	ip := &ImageManifestPkg{
+		Name: bp.Name(),
+	}
+
+	var path string
+	if bp.Repo().IsLocal() {
+		ip.Repo = bp.LocalPackage.Repo().Name()
+		path = bp.LocalPackage.BasePath()
+	} else {
+		ip.Repo = bp.Repo().Name()
+		path = bp.BasePath()
+	}
+
+	if _, present := r.repos[ip.Repo]; present {
+		return ip
+	}
+
+	repo := ImageManifestRepo{
+		Name: ip.Repo,
+	}
+
+	res, err := util.ShellCommand(fmt.Sprintf("cd %s && git rev-parse head", path))
+	if err != nil {
+		log.Debugf("Unable to determine commit hash for %s: %v", path, err)
+		repo.Commit = "UNKNOWN"
+	} else {
+		repo.Commit = strings.TrimSpace(string(res))
+		res, err := util.ShellCommand(fmt.Sprintf("cd %s && git diff-index HEAD", path))
+		if err != nil {
+			log.Debugf("Unable to determine dirty state for %s: %v", path, err)
+		} else {
+			if len(res) > 0 {
+				repo.Dirty = true
+			}
+		}
+		res, err = util.ShellCommand(fmt.Sprintf("cd %s && git config --get remote.origin.url", path))
+		if err != nil {
+			log.Debugf("Unable to determine URL for %s: %v", path, err)
+		} else {
+			repo.URL = strings.TrimSpace(string(res))
+		}
+	}
+	r.repos[ip.Repo] = repo
+
+	return ip
+}
+
+func (r *repoManager) allRepos() []ImageManifestRepo {
+	keys := make([]string, 0, len(r.repos))
+	for k := range r.repos {
+		keys = append(keys, k)
+	}
+
+	sort.Strings(keys)
+
+	repos := make([]ImageManifestRepo, 0, len(keys))
+	for _, key := range keys {
+		repos = append(repos, r.repos[key])
+	}
+
+	return repos
+}


[2/2] incubator-mynewt-newt git commit: This closes #20.

Posted by cc...@apache.org.
This closes #20.

Merge remote-tracking branch 'spoonofpower/repo_hashes' into develop

* spoonofpower/repo_hashes:
  Recored latest commit hashes in manifest


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/838d6fc7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/838d6fc7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/838d6fc7

Branch: refs/heads/develop
Commit: 838d6fc7aa48cf7f9e94e23cef32b9708b10291e
Parents: 80a676e b0bd9e6
Author: Christopher Collins <cc...@apache.org>
Authored: Wed Oct 12 14:56:31 2016 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Wed Oct 12 14:56:31 2016 -0700

----------------------------------------------------------------------
 newt/image/image.go | 95 ++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 87 insertions(+), 8 deletions(-)
----------------------------------------------------------------------