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

Commit 83e787e8 authored by Spandan Das's avatar Spandan Das
Browse files

Add a new CreateSoongInjectionDirFiles function

- This is a wrapper function for all files in soong_injection directory.
This should prevent an error in the workspace generated for
api_bp2build.
- Rename the existing CreateSoongInjectionFiles fn and make it package
  private to prevent confusion

(The subsequent CL in this stack should contain a smoke test for
api_bp2build)

Test: b build //:empty --config=api_bp2build --config=android
Test: TH
Change-Id: Iddb0aa1aff2f709826edd587aa99fccddf80f08f
parent 57b1e406
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -45,17 +45,27 @@ func Codegen(ctx *CodegenContext) *CodegenMetrics {
	bp2buildFiles := CreateBazelFiles(ctx.Config(), nil, res.buildFileToTargets, ctx.mode)
	writeFiles(ctx, bp2buildDir, bp2buildFiles)

	soongInjectionDir := android.PathForOutput(ctx, bazel.SoongInjectionDirName)
	writeFiles(ctx, soongInjectionDir, CreateSoongInjectionDirFiles(ctx, res.metrics))

	return &res.metrics
}

// Wrapper function that will be responsible for all files in soong_injection directory
// This includes
// 1. config value(s) that are hardcoded in Soong
// 2. product_config variables
func CreateSoongInjectionDirFiles(ctx *CodegenContext, metrics CodegenMetrics) []BazelFile {
	var ret []BazelFile

	productConfigFiles, err := CreateProductConfigFiles(ctx)
	if err != nil {
		fmt.Printf("ERROR: %s", err.Error())
		os.Exit(1)
	}

	soongInjectionDir := android.PathForOutput(ctx, bazel.SoongInjectionDirName)
	writeFiles(ctx, soongInjectionDir, productConfigFiles)
	writeFiles(ctx, soongInjectionDir, CreateSoongInjectionFiles(ctx.Config(), res.metrics))

	return &res.metrics
	ret = append(ret, productConfigFiles...)
	ret = append(ret, soongInjectionFiles(ctx.Config(), metrics)...)
	return ret
}

// Get the output directory and create it if it doesn't exist.
+2 −1
Original line number Diff line number Diff line
@@ -20,7 +20,8 @@ type BazelFile struct {
	Contents string
}

func CreateSoongInjectionFiles(cfg android.Config, metrics CodegenMetrics) []BazelFile {
// PRIVATE: Use CreateSoongInjectionDirFiles instead
func soongInjectionFiles(cfg android.Config, metrics CodegenMetrics) []BazelFile {
	var files []BazelFile

	files = append(files, newFile("android", GeneratedBuildFileName, "")) // Creates a //cc_toolchain package.
+1 −1
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ func TestCreateBazelFiles_QueryView_AddsTopLevelFiles(t *testing.T) {

func TestCreateBazelFiles_Bp2Build_CreatesDefaultFiles(t *testing.T) {
	testConfig := android.TestConfig("", make(map[string]string), "", make(map[string][]byte))
	files := CreateSoongInjectionFiles(testConfig, CreateCodegenMetrics())
	files := soongInjectionFiles(testConfig, CreateCodegenMetrics())

	expectedFilePaths := []bazelFilepath{
		{
+1 −1
Original line number Diff line number Diff line
@@ -176,7 +176,7 @@ func runApiBp2build(ctx *android.Context, extraNinjaDeps []string) string {
	ninjaDeps = append(ninjaDeps, codegenContext.AdditionalNinjaDeps()...)

	// Create soong_injection repository
	soongInjectionFiles := bp2build.CreateSoongInjectionFiles(ctx.Config(), bp2build.CreateCodegenMetrics())
	soongInjectionFiles := bp2build.CreateSoongInjectionDirFiles(codegenContext, bp2build.CreateCodegenMetrics())
	absoluteSoongInjectionDir := shared.JoinPath(topDir, ctx.Config().SoongOutDir(), bazel.SoongInjectionDirName)
	for _, file := range soongInjectionFiles {
		// The API targets in api_bp2build workspace do not have any dependency on api_bp2build.