Merge "Make mk2rbc output paths relative to android root"
This commit is contained in:
@@ -163,6 +163,21 @@ var ignoredDefines = map[string]bool{
|
||||
|
||||
var identifierFullMatchRegex = regexp.MustCompile("^[a-zA-Z_][a-zA-Z0-9_]*$")
|
||||
|
||||
func RelativeToCwd(path string) (string, error) {
|
||||
cwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
path, err = filepath.Rel(cwd, path)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if strings.HasPrefix(path, "../") {
|
||||
return "", fmt.Errorf("Could not make path relative to current working directory: " + path)
|
||||
}
|
||||
return path, nil
|
||||
}
|
||||
|
||||
// Conversion request parameters
|
||||
type Request struct {
|
||||
MkFile string // file to convert
|
||||
@@ -320,6 +335,14 @@ func (gctx *generationContext) emitPreamble() {
|
||||
loadedSubConfigs := make(map[string]string)
|
||||
for _, mi := range gctx.starScript.inherited {
|
||||
uri := mi.path
|
||||
if strings.HasPrefix(uri, "/") && !strings.HasPrefix(uri, "//") {
|
||||
var err error
|
||||
uri, err = RelativeToCwd(uri)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
uri = "//" + uri
|
||||
}
|
||||
if m, ok := loadedSubConfigs[uri]; ok {
|
||||
// No need to emit load statement, but fix module name.
|
||||
mi.moduleLocalName = m
|
||||
|
@@ -187,7 +187,7 @@ func main() {
|
||||
quit(fmt.Errorf("the product launcher input variables file failed to convert"))
|
||||
}
|
||||
|
||||
err := writeGenerated(*launcher, mk2rbc.Launcher(outputFilePath(files[0]), outputFilePath(*inputVariables),
|
||||
err := writeGenerated(*launcher, mk2rbc.Launcher(outputModulePath(files[0]), outputModulePath(*inputVariables),
|
||||
mk2rbc.MakePath2ModuleName(files[0])))
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%s: %s", files[0], err)
|
||||
@@ -205,7 +205,7 @@ func main() {
|
||||
quit(fmt.Errorf("the board launcher input variables file failed to convert"))
|
||||
}
|
||||
err := writeGenerated(*boardlauncher, mk2rbc.BoardLauncher(
|
||||
outputFilePath(files[0]), outputFilePath(*inputVariables)))
|
||||
outputModulePath(files[0]), outputModulePath(*inputVariables)))
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%s: %s", files[0], err)
|
||||
ok = false
|
||||
@@ -402,6 +402,15 @@ func outputFilePath(mkFile string) string {
|
||||
return path
|
||||
}
|
||||
|
||||
func outputModulePath(mkFile string) string {
|
||||
path := outputFilePath(mkFile)
|
||||
path, err := mk2rbc.RelativeToCwd(path)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return "//" + path
|
||||
}
|
||||
|
||||
func writeGenerated(path string, contents string) error {
|
||||
if err := os.MkdirAll(filepath.Dir(path), os.ModeDir|os.ModePerm); err != nil {
|
||||
return err
|
||||
|
@@ -42,8 +42,8 @@ func TestSoongVariables(t *testing.T) {
|
||||
{"BUILD_ID", VarClassSoong, starlarkTypeString},
|
||||
{"PLATFORM_SDK_VERSION", VarClassSoong, starlarkTypeInt},
|
||||
{"DEVICE_PACKAGE_OVERLAYS", VarClassSoong, starlarkTypeList},
|
||||
{"ENABLE_CFI", VarClassSoong, starlarkTypeBool},
|
||||
{"ENABLE_PREOPT", VarClassSoong, starlarkTypeBool},
|
||||
{"ENABLE_CFI", VarClassSoong, starlarkTypeString},
|
||||
{"ENABLE_PREOPT", VarClassSoong, starlarkTypeString},
|
||||
}}
|
||||
if !reflect.DeepEqual(expected, actual) {
|
||||
t.Errorf("\nExpected: %v\n Actual: %v", expected, actual)
|
||||
|
Reference in New Issue
Block a user