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

Commit 5aec0afe authored by Zi Wang's avatar Zi Wang Committed by Gerrit Code Review
Browse files

Merge "Use OutputFilesProvider on some android test modules" into main

parents 66b451b8 01715cac
Loading
Loading
Loading
Loading
+22 −33
Original line number Diff line number Diff line
@@ -36,10 +36,6 @@ type customModule struct {
	data       AndroidMkData
	distFiles  TaggedDistFiles
	outputFile OptionalPath

	// The paths that will be used as the default dist paths if no tag is
	// specified.
	defaultDistPaths Paths
}

const (
@@ -51,6 +47,7 @@ const (
func (m *customModule) GenerateAndroidBuildActions(ctx ModuleContext) {

	m.base().licenseMetadataFile = PathForOutput(ctx, "meta_lic")
	var defaultDistPaths Paths

	// If the dist_output_file: true then create an output file that is stored in
	// the OutputFile property of the AndroidMkEntry.
@@ -62,7 +59,7 @@ func (m *customModule) GenerateAndroidBuildActions(ctx ModuleContext) {
		// property in AndroidMkEntry when determining the default dist paths.
		// Setting this first allows it to be overridden based on the
		// default_dist_files setting replicating that previous behavior.
		m.defaultDistPaths = Paths{path}
		defaultDistPaths = Paths{path}
	}

	// Based on the setting of the default_dist_files property possibly create a
@@ -71,29 +68,40 @@ func (m *customModule) GenerateAndroidBuildActions(ctx ModuleContext) {
	defaultDistFiles := proptools.StringDefault(m.properties.Default_dist_files, defaultDistFiles_Tagged)
	switch defaultDistFiles {
	case defaultDistFiles_None:
		// Do nothing
		m.setOutputFiles(ctx, defaultDistPaths)

	case defaultDistFiles_Default:
		path := PathForTesting("default-dist.out")
		m.defaultDistPaths = Paths{path}
		defaultDistPaths = Paths{path}
		m.setOutputFiles(ctx, defaultDistPaths)
		m.distFiles = MakeDefaultDistFiles(path)

	case defaultDistFiles_Tagged:
		// Module types that set AndroidMkEntry.DistFiles to the result of calling
		// GenerateTaggedDistFiles(ctx) relied on no tag being treated as "" which
		// meant that the default dist paths would be whatever was returned by
		// OutputFiles(""). In order to preserve that behavior when treating no tag
		// as being equal to DefaultDistTag this ensures that
		// OutputFiles(DefaultDistTag) will return the same as OutputFiles("").
		m.defaultDistPaths = PathsForTesting("one.out")
		// meant that the default dist paths would be the same as empty-string-tag
		// output files. In order to preserve that behavior when treating no tag
		// as being equal to DefaultDistTag this ensures that DefaultDistTag output
		// will be the same as empty-string-tag output.
		defaultDistPaths = PathsForTesting("one.out")
		m.setOutputFiles(ctx, defaultDistPaths)

		// This must be called after setting defaultDistPaths/outputFile as
		// GenerateTaggedDistFiles calls into OutputFiles(tag) which may use those
		// fields.
		// GenerateTaggedDistFiles calls into outputFiles property which may use
		// those fields.
		m.distFiles = m.GenerateTaggedDistFiles(ctx)
	}
}

func (m *customModule) setOutputFiles(ctx ModuleContext, defaultDistPaths Paths) {
	ctx.SetOutputFiles(PathsForTesting("one.out"), "")
	ctx.SetOutputFiles(PathsForTesting("two.out", "three/four.out"), ".multiple")
	ctx.SetOutputFiles(PathsForTesting("another.out"), ".another-tag")
	if defaultDistPaths != nil {
		ctx.SetOutputFiles(defaultDistPaths, DefaultDistTag)
	}
}

func (m *customModule) AndroidMk() AndroidMkData {
	return AndroidMkData{
		Custom: func(w io.Writer, name, prefix, moduleDir string, data AndroidMkData) {
@@ -102,25 +110,6 @@ func (m *customModule) AndroidMk() AndroidMkData {
	}
}

func (m *customModule) OutputFiles(tag string) (Paths, error) {
	switch tag {
	case DefaultDistTag:
		if m.defaultDistPaths != nil {
			return m.defaultDistPaths, nil
		} else {
			return nil, fmt.Errorf("default dist tag is not available")
		}
	case "":
		return PathsForTesting("one.out"), nil
	case ".multiple":
		return PathsForTesting("two.out", "three/four.out"), nil
	case ".another-tag":
		return PathsForTesting("another.out"), nil
	default:
		return nil, fmt.Errorf("unsupported module reference tag %q", tag)
	}
}

func (m *customModule) AndroidMkEntries() []AndroidMkEntries {
	return []AndroidMkEntries{
		{
+5 −15
Original line number Diff line number Diff line
@@ -1183,9 +1183,6 @@ type pathForModuleSrcOutputFileProviderModule struct {
		Outs   []string
		Tagged []string
	}

	outs   Paths
	tagged Paths
}

func pathForModuleSrcOutputFileProviderModuleFactory() Module {
@@ -1196,24 +1193,17 @@ func pathForModuleSrcOutputFileProviderModuleFactory() Module {
}

func (p *pathForModuleSrcOutputFileProviderModule) GenerateAndroidBuildActions(ctx ModuleContext) {
	var outs, taggedOuts Paths
	for _, out := range p.props.Outs {
		p.outs = append(p.outs, PathForModuleOut(ctx, out))
		outs = append(outs, PathForModuleOut(ctx, out))
	}

	for _, tagged := range p.props.Tagged {
		p.tagged = append(p.tagged, PathForModuleOut(ctx, tagged))
	}
		taggedOuts = append(taggedOuts, PathForModuleOut(ctx, tagged))
	}

func (p *pathForModuleSrcOutputFileProviderModule) OutputFiles(tag string) (Paths, error) {
	switch tag {
	case "":
		return p.outs, nil
	case ".tagged":
		return p.tagged, nil
	default:
		return nil, fmt.Errorf("unsupported tag %q", tag)
	}
	ctx.SetOutputFiles(outs, "")
	ctx.SetOutputFiles(taggedOuts, ".tagged")
}

type pathForModuleSrcTestCase struct {
+3 −12
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
package android

import (
	"fmt"
	"testing"

	"github.com/google/blueprint"
@@ -494,7 +493,6 @@ type prebuiltModule struct {
	properties struct {
		Srcs []string `android:"path,arch_variant"`
	}
	src Path
}

func newPrebuiltModule() Module {
@@ -510,24 +508,17 @@ func (p *prebuiltModule) Name() string {
}

func (p *prebuiltModule) GenerateAndroidBuildActions(ctx ModuleContext) {
	var src Path
	if len(p.properties.Srcs) >= 1 {
		p.src = p.prebuilt.SingleSourcePath(ctx)
		src = p.prebuilt.SingleSourcePath(ctx)
	}
	ctx.SetOutputFiles(Paths{src}, "")
}

func (p *prebuiltModule) Prebuilt() *Prebuilt {
	return &p.prebuilt
}

func (p *prebuiltModule) OutputFiles(tag string) (Paths, error) {
	switch tag {
	case "":
		return Paths{p.src}, nil
	default:
		return nil, fmt.Errorf("unsupported module reference tag %q", tag)
	}
}

type sourceModuleProperties struct {
	Deps []string `android:"path,arch_variant"`
}