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/03/15 01:26:52 UTC

[16/50] [abbrv] incubator-mynewt-newt git commit: Add cflags, lflags, aflags to target.

Add cflags,lflags,aflags to target.


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

Branch: refs/heads/master
Commit: 31ff5ef275d2963e963bf771f3a238c9be38b441
Parents: aafe394
Author: Christopher Collins <cc...@apache.org>
Authored: Mon Mar 14 11:59:47 2016 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Mon Mar 14 13:22:48 2016 -0700

----------------------------------------------------------------------
 newt/cli/target_cmds.go  | 49 +++++++++++++++++++++++++----------------
 newt/pkg/localpackage.go | 51 ++++++++++++++++++++++++++++---------------
 2 files changed, 63 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/31ff5ef2/newt/cli/target_cmds.go
----------------------------------------------------------------------
diff --git a/newt/cli/target_cmds.go b/newt/cli/target_cmds.go
index 6dba037..520227e 100644
--- a/newt/cli/target_cmds.go
+++ b/newt/cli/target_cmds.go
@@ -68,8 +68,8 @@ func targetContainsUserFiles(t *target.Target) (bool, error) {
 	return userFiles, nil
 }
 
-func featuresString(pack *pkg.LocalPackage) string {
-	features := pack.Viper.GetStringSlice("pkg.features")
+func pkgVarSliceString(pack *pkg.LocalPackage, key string) string {
+	features := pack.Viper.GetStringSlice(key)
 	sort.Strings(features)
 
 	var buffer bytes.Buffer
@@ -108,26 +108,33 @@ func targetShowCmd(cmd *cobra.Command, args []string) {
 
 	sort.Strings(targetNames)
 
+	kvPairs := map[string]string{}
 	for _, name := range targetNames {
 		util.StatusMessage(util.VERBOSITY_DEFAULT, name+"\n")
 
 		target := target.GetTargets()[name]
+		for k, v := range target.Vars {
+			kvPairs[strings.TrimPrefix(k, "target.")] = v
+		}
+
+		// A few variables come from the base package rather than the target.
+		kvPairs["features"] = pkgVarSliceString(target.Package(),
+			"pkg.features")
+		kvPairs["cflags"] = pkgVarSliceString(target.Package(), "pkg.cflags")
+		kvPairs["lflags"] = pkgVarSliceString(target.Package(), "pkg.lflags")
+		kvPairs["aflags"] = pkgVarSliceString(target.Package(), "pkg.aflags")
+
 		keys := []string{}
-		for k, _ := range target.Vars {
+		for k, _ := range kvPairs {
 			keys = append(keys, k)
 		}
-
 		sort.Strings(keys)
 		for _, k := range keys {
-			varName := strings.TrimPrefix(k, "target.")
-			value := target.Vars[k]
-			util.StatusMessage(util.VERBOSITY_DEFAULT, "    %s=%s\n",
-				varName, value)
-		}
-		features := featuresString(target.Package())
-		if len(features) > 0 {
-			util.StatusMessage(util.VERBOSITY_DEFAULT, "    features=%s\n",
-				features)
+			val := kvPairs[k]
+			if len(val) > 0 {
+				util.StatusMessage(util.VERBOSITY_DEFAULT, "    %s=%s\n",
+					k, kvPairs[k])
+			}
 		}
 	}
 }
@@ -194,15 +201,19 @@ func targetSetCmd(cmd *cobra.Command, args []string) {
 
 	// Set each specified variable in the target.
 	for _, kv := range vars {
-		// "features" is a special case; it goes in the base package and not
-		// the target.
-		if kv[0] == "target.features" {
+		// A few variables are special cases; they get set in the base package
+		// instead of the target.
+		if kv[0] == "target.features" ||
+			kv[0] == "target.cflags" ||
+			kv[0] == "target.lflags" ||
+			kv[0] == "target.aflags" {
+
+			kv[0] = "pkg." + strings.TrimPrefix(kv[0], "target.")
 			if kv[1] == "" {
 				// User specified empty value; delete variable.
-				t.Package().Viper.Set("pkg.features", nil)
+				t.Package().Viper.Set(kv[0], nil)
 			} else {
-				features := strings.Fields(kv[1])
-				t.Package().Viper.Set("pkg.features", features)
+				t.Package().Viper.Set(kv[0], strings.Fields(kv[1]))
 			}
 		} else {
 			if kv[1] == "" {

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/31ff5ef2/newt/pkg/localpackage.go
----------------------------------------------------------------------
diff --git a/newt/pkg/localpackage.go b/newt/pkg/localpackage.go
index 62dbd82..425f6a6 100644
--- a/newt/pkg/localpackage.go
+++ b/newt/pkg/localpackage.go
@@ -20,6 +20,7 @@
 package pkg
 
 import (
+	"bytes"
 	"crypto/sha1"
 	"fmt"
 	"io/ioutil"
@@ -73,8 +74,8 @@ type LocalPackage struct {
 func NewLocalPackage(r *repo.Repo, pkgDir string) *LocalPackage {
 	pkg := &LocalPackage{
 		desc: &PackageDesc{},
-        // XXX: Initialize viper object; clients should not need to check for
-        // nil pointer.
+		// XXX: Initialize viper object; clients should not need to check for
+		// nil pointer.
 	}
 	pkg.Init(r, pkgDir)
 	return pkg
@@ -111,8 +112,8 @@ func (pkg *LocalPackage) Desc() *PackageDesc {
 
 func (pkg *LocalPackage) SetName(name string) {
 	pkg.name = name
-    // XXX: Also set "pkg.name" in viper object (possibly just remove cached
-    // variable from code entirely).
+	// XXX: Also set "pkg.name" in viper object (possibly just remove cached
+	// variable from code entirely).
 }
 
 func (pkg *LocalPackage) SetBasePath(basePath string) {
@@ -121,14 +122,14 @@ func (pkg *LocalPackage) SetBasePath(basePath string) {
 
 func (pkg *LocalPackage) SetType(packageType interfaces.PackageType) {
 	pkg.packageType = packageType
-    // XXX: Also set "pkg.type" in viper object (possibly just remove cached
-    // variable from code entirely).
+	// XXX: Also set "pkg.type" in viper object (possibly just remove cached
+	// variable from code entirely).
 }
 
 func (pkg *LocalPackage) SetDesc(desc *PackageDesc) {
 	pkg.desc = desc
-    // XXX: Also set desc fields in viper object (possibly just remove cached
-    // variable from code entirely).
+	// XXX: Also set desc fields in viper object (possibly just remove cached
+	// variable from code entirely).
 }
 
 func (pkg *LocalPackage) SetRepo(r *repo.Repo) {
@@ -226,6 +227,22 @@ func (pkg *LocalPackage) Init(repo *repo.Repo, pkgDir string) {
 	pkg.basePath = filepath.Clean(pkgDir) + "/"
 }
 
+func (pkg *LocalPackage) sequenceString(key string) string {
+	var buffer bytes.Buffer
+
+	if pkg.Viper != nil {
+		for _, f := range pkg.Viper.GetStringSlice(key) {
+			buffer.WriteString("    - " + yaml.EscapeString(f) + "\n")
+		}
+	}
+
+	if buffer.Len() == 0 {
+		return ""
+	} else {
+		return key + ":\n" + buffer.String()
+	}
+}
+
 // Saves the package's pkg.yml file.
 // NOTE: This does not save every field in the package.  Only the fields
 // necessary for creating a new target get saved.
@@ -244,8 +261,8 @@ func (pkg *LocalPackage) Save() error {
 
 	file.WriteString("### Package: " + pkg.Name() + "\n")
 
-    // XXX: Just iterate viper object's settings rather than calling out
-    // cached settings individually.
+	// XXX: Just iterate viper object's settings rather than calling out
+	// cached settings individually.
 	file.WriteString("pkg.name: " + yaml.EscapeString(pkg.Name()) + "\n")
 	file.WriteString("pkg.type: " +
 		yaml.EscapeString(PackageTypeNames[pkg.Type()]) + "\n")
@@ -258,14 +275,12 @@ func (pkg *LocalPackage) Save() error {
 	file.WriteString("pkg.repository: " +
 		yaml.EscapeString(pkg.Repo().Name()) + "\n")
 
-    // Write feature set.  The viper object is nil if this is a new package
-    // rather than a loaded package.
-	file.WriteString("pkg.features:\n")
-    if pkg.Viper != nil {
-        for _, f := range pkg.Viper.GetStringSlice("pkg.features") {
-            file.WriteString("    - " + yaml.EscapeString(f) + "\n")
-        }
-    }
+	file.WriteString("\n")
+
+	file.WriteString(pkg.sequenceString("pkg.aflags"))
+	file.WriteString(pkg.sequenceString("pkg.cflags"))
+	file.WriteString(pkg.sequenceString("pkg.features"))
+	file.WriteString(pkg.sequenceString("pkg.lflags"))
 
 	return nil
 }