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
}