build: override vars in alt pkg
This commit is contained in:
@@ -132,9 +132,11 @@ type Config struct {
|
|||||||
CheckLinkArgs bool // check linkargs valid
|
CheckLinkArgs bool // check linkargs valid
|
||||||
ForceEspClang bool // force to use esp-clang
|
ForceEspClang bool // force to use esp-clang
|
||||||
Tags string
|
Tags string
|
||||||
GlobalRewrites map[string]string // pkg.name => data
|
GlobalRewrites map[string]Rewrites // pkg => var => value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Rewrites map[string]string
|
||||||
|
|
||||||
func NewDefaultConf(mode Mode) *Config {
|
func NewDefaultConf(mode Mode) *Config {
|
||||||
bin := os.Getenv("GOBIN")
|
bin := os.Getenv("GOBIN")
|
||||||
if bin == "" {
|
if bin == "" {
|
||||||
@@ -336,8 +338,8 @@ func Do(args []string, conf *Config) ([]Package, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// default runtime globals must be registered before packages are built
|
// default runtime globals must be registered before packages are built
|
||||||
addDefaultGlobalString(conf, "runtime.defaultGOROOT="+runtime.GOROOT(), nil)
|
addGlobalString(conf, "runtime.defaultGOROOT="+runtime.GOROOT(), nil)
|
||||||
addDefaultGlobalString(conf, "runtime.buildVersion="+runtime.Version(), nil)
|
addGlobalString(conf, "runtime.buildVersion="+runtime.Version(), nil)
|
||||||
pkgs, err := buildAllPkgs(ctx, initial, verbose)
|
pkgs, err := buildAllPkgs(ctx, initial, verbose)
|
||||||
check(err)
|
check(err)
|
||||||
if mode == ModeGen {
|
if mode == ModeGen {
|
||||||
@@ -626,10 +628,6 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func addGlobalString(conf *Config, arg string, mainPkgs []string) {
|
func addGlobalString(conf *Config, arg string, mainPkgs []string) {
|
||||||
addGlobalStringWith(conf, arg, mainPkgs, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
func addDefaultGlobalString(conf *Config, arg string, mainPkgs []string) {
|
|
||||||
addGlobalStringWith(conf, arg, mainPkgs, true)
|
addGlobalStringWith(conf, arg, mainPkgs, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -648,18 +646,22 @@ func addGlobalStringWith(conf *Config, arg string, mainPkgs []string, skipIfExis
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if conf.GlobalRewrites == nil {
|
if conf.GlobalRewrites == nil {
|
||||||
conf.GlobalRewrites = make(map[string]string)
|
conf.GlobalRewrites = make(map[string]Rewrites)
|
||||||
}
|
}
|
||||||
suffix := arg[dot:eq]
|
varName := arg[dot+1 : eq]
|
||||||
value := arg[eq+1:]
|
value := arg[eq+1:]
|
||||||
for _, realPkg := range pkgs {
|
for _, realPkg := range pkgs {
|
||||||
name := realPkg + suffix
|
vars := conf.GlobalRewrites[realPkg]
|
||||||
|
if vars == nil {
|
||||||
|
vars = make(Rewrites)
|
||||||
|
conf.GlobalRewrites[realPkg] = vars
|
||||||
|
}
|
||||||
if skipIfExists {
|
if skipIfExists {
|
||||||
if _, exists := conf.GlobalRewrites[name]; exists {
|
if _, exists := vars[varName]; exists {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
conf.GlobalRewrites[name] = value
|
vars[varName] = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1177,18 +1179,18 @@ func allPkgs(ctx *context, initial []*packages.Package, verbose bool) (all []*aP
|
|||||||
|
|
||||||
func collectRewriteVars(ctx *context, pkgPath string) map[string]string {
|
func collectRewriteVars(ctx *context, pkgPath string) map[string]string {
|
||||||
var rewrites map[string]string
|
var rewrites map[string]string
|
||||||
add := func(name, value string) {
|
basePath := strings.TrimPrefix(pkgPath, altPkgPathPrefix)
|
||||||
if rewrites == nil {
|
|
||||||
rewrites = make(map[string]string)
|
|
||||||
}
|
|
||||||
rewrites[name] = value
|
|
||||||
}
|
|
||||||
if data := ctx.buildConf.GlobalRewrites; len(data) != 0 {
|
if data := ctx.buildConf.GlobalRewrites; len(data) != 0 {
|
||||||
prefix := pkgPath + "."
|
for pkg, vars := range data {
|
||||||
for name, value := range data {
|
trimmed := strings.TrimPrefix(pkg, altPkgPathPrefix)
|
||||||
if strings.HasPrefix(name, prefix) {
|
if trimmed != basePath {
|
||||||
add(name, value)
|
continue
|
||||||
delete(data, name)
|
}
|
||||||
|
for name, value := range vars {
|
||||||
|
if rewrites == nil {
|
||||||
|
rewrites = make(map[string]string)
|
||||||
|
}
|
||||||
|
rewrites[pkgPath+"."+name] = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user