start eating include_dirs from both ends
Further restrictions on a restricting build configuration. Before, we restricted certain paths from being included. Now, we restrict certain paths from including. This adds system/libfmq for now, but I'm planning to add more in the future, as they are cleaned up. Bug: 35624006 Test: m nothing Change-Id: I913f190f93ab63059ee0372d342daa8f5584806b
This commit is contained in:
parent
aef7fcfa7e
commit
8fc8dbf70c
|
@ -63,8 +63,7 @@ func AddNeverAllowRules(rules ...Rule) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func createIncludeDirsRules() []Rule {
|
func createIncludeDirsRules() []Rule {
|
||||||
// The list of paths that cannot be referenced using include_dirs
|
notInIncludeDir := []string{
|
||||||
paths := []string{
|
|
||||||
"art",
|
"art",
|
||||||
"art/libnativebridge",
|
"art/libnativebridge",
|
||||||
"art/libnativeloader",
|
"art/libnativeloader",
|
||||||
|
@ -80,12 +79,13 @@ func createIncludeDirsRules() []Rule {
|
||||||
"external/vixl",
|
"external/vixl",
|
||||||
"external/wycheproof",
|
"external/wycheproof",
|
||||||
}
|
}
|
||||||
|
noUseIncludeDir := []string{
|
||||||
|
"system/libfmq",
|
||||||
|
}
|
||||||
|
|
||||||
// Create a composite matcher that will match if the value starts with any of the restricted
|
rules := make([]Rule, 0, len(notInIncludeDir)+len(noUseIncludeDir))
|
||||||
// paths. A / is appended to the prefix to ensure that restricting path X does not affect paths
|
|
||||||
// XY.
|
for _, path := range notInIncludeDir {
|
||||||
rules := make([]Rule, 0, len(paths))
|
|
||||||
for _, path := range paths {
|
|
||||||
rule :=
|
rule :=
|
||||||
NeverAllow().
|
NeverAllow().
|
||||||
WithMatcher("include_dirs", StartsWith(path+"/")).
|
WithMatcher("include_dirs", StartsWith(path+"/")).
|
||||||
|
@ -95,6 +95,13 @@ func createIncludeDirsRules() []Rule {
|
||||||
rules = append(rules, rule)
|
rules = append(rules, rule)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, path := range noUseIncludeDir {
|
||||||
|
rule := NeverAllow().In(path+"/").WithMatcher("include_dirs", isSetMatcherInstance).
|
||||||
|
Because("include_dirs is deprecated, all usages of them in '" + path + "' have been migrated" +
|
||||||
|
" to use alternate mechanisms and so can no longer be used.")
|
||||||
|
rules = append(rules, rule)
|
||||||
|
}
|
||||||
|
|
||||||
return rules
|
return rules
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,20 @@ var neverallowTests = []struct {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "include_dir can reference another location",
|
name: "include_dir not allowed to reference art",
|
||||||
|
fs: map[string][]byte{
|
||||||
|
"system/libfmq/Android.bp": []byte(`
|
||||||
|
cc_library {
|
||||||
|
name: "libother",
|
||||||
|
include_dirs: ["any/random/file"],
|
||||||
|
}`),
|
||||||
|
},
|
||||||
|
expectedErrors: []string{
|
||||||
|
"all usages of them in 'system/libfmq' have been migrated",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "include_dir can work",
|
||||||
fs: map[string][]byte{
|
fs: map[string][]byte{
|
||||||
"other/Android.bp": []byte(`
|
"other/Android.bp": []byte(`
|
||||||
cc_library {
|
cc_library {
|
||||||
|
|
Loading…
Reference in New Issue