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

Commit 7b27ca7d authored by Jingwen Chen's avatar Jingwen Chen
Browse files

Fix droiddoc disting when WITHOUT_CHECK_API is true.



When WITHOUT_CHECK_API=true, the droidstubs apiFile can be nil. Fix this
by defensively checking for nil paths when making the TaggedDistFiles,
and also in android.MakeDefaultDistFiles.

The error message reported in r.android.com/1335521 was:

"internal error: panic in GenerateBuildActions for singleton androidmk
  Dist file should not be nil for the default tag in
  android.net.ipsec.ike.stubs.source in translateAndroidMkModule for
  module android.net.ipsec.ike.stubs.source variant android_common"

Test: WITHOUT_CHECK_API=true m droid dist

Bug: 152834186
Signed-off-by: default avatarJingwen Chen <jingwen@google.com>
Change-Id: I1b1f7c0b7a0e1c0ed5e15957d0162c47fd3ec197
parent 3992b7c4
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -163,12 +163,15 @@ func (a *AndroidMkEntries) GetDistForGoals(mod blueprint.Module) []string {
	name := amod.BaseModuleName()

	var ret []string
	var availableTaggedDists TaggedDistFiles

	availableTaggedDists := TaggedDistFiles{}
	if a.DistFiles != nil {
		availableTaggedDists = a.DistFiles
	} else if a.OutputFile.Valid() {
		availableTaggedDists = MakeDefaultDistFiles(a.OutputFile.Path())
	} else {
		// Nothing dist-able for this module.
		return nil
	}

	// Iterate over this module's dist structs, merged from the dist and dists properties.
+6 −0
Original line number Diff line number Diff line
@@ -565,6 +565,12 @@ type commonProperties struct {
type TaggedDistFiles map[string]Paths

func MakeDefaultDistFiles(paths ...Path) TaggedDistFiles {
	for _, path := range paths {
		if path == nil {
			panic("The path to a dist file cannot be nil.")
		}
	}

	// The default OutputFile tag is the empty "" string.
	return TaggedDistFiles{"": paths}
}
+9 −3
Original line number Diff line number Diff line
@@ -563,15 +563,21 @@ func (dstubs *Droidstubs) AndroidMkEntries() []android.AndroidMkEntries {
	// are created in make if only the api txt file is being generated. This is
	// needed because an invalid output file would prevent the make entries from
	// being written.
	//
	// Note that dstubs.apiFile can be also be nil if WITHOUT_CHECKS_API is true.
	// TODO(b/146727827): Revert when we do not need to generate stubs and API separately.
	distFile := dstubs.apiFile

	var distFiles android.TaggedDistFiles
	if dstubs.apiFile != nil {
		distFiles = android.MakeDefaultDistFiles(dstubs.apiFile)
	}
	outputFile := android.OptionalPathForPath(dstubs.stubsSrcJar)
	if !outputFile.Valid() {
		outputFile = android.OptionalPathForPath(distFile)
		outputFile = android.OptionalPathForPath(dstubs.apiFile)
	}
	return []android.AndroidMkEntries{android.AndroidMkEntries{
		Class:      "JAVA_LIBRARIES",
		DistFiles:  android.MakeDefaultDistFiles(distFile),
		DistFiles:  distFiles,
		OutputFile: outputFile,
		Include:    "$(BUILD_SYSTEM)/soong_droiddoc_prebuilt.mk",
		ExtraEntries: []android.AndroidMkExtraEntriesFunc{