Support restrictions based on a module's OsClass
Bug: 137543088 Test: m nothing Change-Id: Ibb05f222594d8180746b612c04ab1538a1cf3c0b
This commit is contained in:
@@ -175,6 +175,8 @@ func neverallowMutator(ctx BottomUpMutatorContext) {
|
|||||||
dir := ctx.ModuleDir() + "/"
|
dir := ctx.ModuleDir() + "/"
|
||||||
properties := m.GetProperties()
|
properties := m.GetProperties()
|
||||||
|
|
||||||
|
osClass := ctx.Module().Target().Os.Class
|
||||||
|
|
||||||
for _, r := range neverallows {
|
for _, r := range neverallows {
|
||||||
n := r.(*rule)
|
n := r.(*rule)
|
||||||
if !n.appliesToPath(dir) {
|
if !n.appliesToPath(dir) {
|
||||||
@@ -189,6 +191,10 @@ func neverallowMutator(ctx BottomUpMutatorContext) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !n.appliesToOsClass(osClass) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if !n.appliesToDirectDeps(ctx) {
|
if !n.appliesToDirectDeps(ctx) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -252,6 +258,8 @@ type Rule interface {
|
|||||||
|
|
||||||
InDirectDeps(deps ...string) Rule
|
InDirectDeps(deps ...string) Rule
|
||||||
|
|
||||||
|
WithOsClass(osClasses ...OsClass) Rule
|
||||||
|
|
||||||
ModuleType(types ...string) Rule
|
ModuleType(types ...string) Rule
|
||||||
|
|
||||||
NotModuleType(types ...string) Rule
|
NotModuleType(types ...string) Rule
|
||||||
@@ -276,6 +284,8 @@ type rule struct {
|
|||||||
|
|
||||||
directDeps map[string]bool
|
directDeps map[string]bool
|
||||||
|
|
||||||
|
osClasses []OsClass
|
||||||
|
|
||||||
moduleTypes []string
|
moduleTypes []string
|
||||||
unlessModuleTypes []string
|
unlessModuleTypes []string
|
||||||
|
|
||||||
@@ -305,6 +315,11 @@ func (r *rule) InDirectDeps(deps ...string) Rule {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *rule) WithOsClass(osClasses ...OsClass) Rule {
|
||||||
|
r.osClasses = append(r.osClasses, osClasses...)
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
func (r *rule) ModuleType(types ...string) Rule {
|
func (r *rule) ModuleType(types ...string) Rule {
|
||||||
r.moduleTypes = append(r.moduleTypes, types...)
|
r.moduleTypes = append(r.moduleTypes, types...)
|
||||||
return r
|
return r
|
||||||
@@ -374,6 +389,9 @@ func (r *rule) String() string {
|
|||||||
for k := range r.directDeps {
|
for k := range r.directDeps {
|
||||||
s += " deps:" + k
|
s += " deps:" + k
|
||||||
}
|
}
|
||||||
|
for _, v := range r.osClasses {
|
||||||
|
s += " os:" + v.String()
|
||||||
|
}
|
||||||
if len(r.reason) != 0 {
|
if len(r.reason) != 0 {
|
||||||
s += " which is restricted because " + r.reason
|
s += " which is restricted because " + r.reason
|
||||||
}
|
}
|
||||||
@@ -402,6 +420,20 @@ func (r *rule) appliesToDirectDeps(ctx BottomUpMutatorContext) bool {
|
|||||||
return matches
|
return matches
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *rule) appliesToOsClass(osClass OsClass) bool {
|
||||||
|
if len(r.osClasses) == 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range r.osClasses {
|
||||||
|
if c == osClass {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func (r *rule) appliesToModuleType(moduleType string) bool {
|
func (r *rule) appliesToModuleType(moduleType string) bool {
|
||||||
return (len(r.moduleTypes) == 0 || InList(moduleType, r.moduleTypes)) && !InList(moduleType, r.unlessModuleTypes)
|
return (len(r.moduleTypes) == 0 || InList(moduleType, r.moduleTypes)) && !InList(moduleType, r.unlessModuleTypes)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user