Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e89aff32 authored by Cole Faust's avatar Cole Faust Committed by Gerrit Code Review
Browse files

Merge "Make mk2rbc output paths relative to android root"

parents c38f1d51 c85d08f6
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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
+11 −2
Original line number Diff line number Diff line
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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)