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

Commit 9ef1f7d9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Don't assume host arch is always x86" am: daf73528

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1415953

Change-Id: I049556891890833c1e7db6483e5ee6446714583e
parents 9e1ba22f daf73528
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -551,6 +551,15 @@ var BuildOs = func() OsType {
	}
}()

var BuildArch = func() ArchType {
	switch runtime.GOARCH {
	case "amd64":
		return X86_64
	default:
		panic(fmt.Sprintf("unsupported Arch: %s", runtime.GOARCH))
	}
}()

var (
	OsTypeList      []OsType
	commonTargetMap = make(map[string]Target)
+5 −5
Original line number Diff line number Diff line
@@ -198,7 +198,7 @@ type ModuleContext interface {
	InstallInRecovery() bool
	InstallInRoot() bool
	InstallBypassMake() bool
	InstallForceOS() *OsType
	InstallForceOS() (*OsType, *ArchType)

	RequiredModuleNames() []string
	HostRequiredModuleNames() []string
@@ -255,7 +255,7 @@ type Module interface {
	InstallInRecovery() bool
	InstallInRoot() bool
	InstallBypassMake() bool
	InstallForceOS() *OsType
	InstallForceOS() (*OsType, *ArchType)
	SkipInstall()
	IsSkipInstall() bool
	MakeUninstallable()
@@ -1121,8 +1121,8 @@ func (m *ModuleBase) InstallBypassMake() bool {
	return false
}

func (m *ModuleBase) InstallForceOS() *OsType {
	return nil
func (m *ModuleBase) InstallForceOS() (*OsType, *ArchType) {
	return nil, nil
}

func (m *ModuleBase) Owner() string {
@@ -2022,7 +2022,7 @@ func (m *moduleContext) InstallBypassMake() bool {
	return m.module.InstallBypassMake()
}

func (m *moduleContext) InstallForceOS() *OsType {
func (m *moduleContext) InstallForceOS() (*OsType, *ArchType) {
	return m.module.InstallForceOS()
}

+23 −12
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ type ModuleInstallPathContext interface {
	InstallInRecovery() bool
	InstallInRoot() bool
	InstallBypassMake() bool
	InstallForceOS() *OsType
	InstallForceOS() (*OsType, *ArchType)
}

var _ ModuleInstallPathContext = ModuleContext(nil)
@@ -1278,12 +1278,17 @@ func (p InstallPath) ToMakePath() InstallPath {
// module appended with paths...
func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string) InstallPath {
	os := ctx.Os()
	if forceOS := ctx.InstallForceOS(); forceOS != nil {
	arch := ctx.Arch().ArchType
	forceOS, forceArch := ctx.InstallForceOS()
	if forceOS != nil {
		os = *forceOS
	}
	if forceArch != nil {
		arch = *forceArch
	}
	partition := modulePartition(ctx, os)

	ret := pathForInstall(ctx, os, partition, ctx.Debug(), pathComponents...)
	ret := pathForInstall(ctx, os, arch, partition, ctx.Debug(), pathComponents...)

	if ctx.InstallBypassMake() && ctx.Config().EmbeddedInMake() {
		ret = ret.ToMakePath()
@@ -1292,7 +1297,7 @@ func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string
	return ret
}

func pathForInstall(ctx PathContext, os OsType, partition string, debug bool,
func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string, debug bool,
	pathComponents ...string) InstallPath {

	var outPaths []string
@@ -1300,15 +1305,21 @@ func pathForInstall(ctx PathContext, os OsType, partition string, debug bool,
	if os.Class == Device {
		outPaths = []string{"target", "product", ctx.Config().DeviceName(), partition}
	} else {
		switch os {
		case Linux:
			outPaths = []string{"host", "linux-x86", partition}
		case LinuxBionic:
			// TODO: should this be a separate top level, or shared with linux-x86?
			outPaths = []string{"host", "linux_bionic-x86", partition}
		default:
			outPaths = []string{"host", os.String() + "-x86", partition}
		}
		osName := os.String()
		if os == Linux {
			// instead of linux_glibc
			osName = "linux"
		}
		// SOONG_HOST_OUT is set to out/host/$(HOST_OS)-$(HOST_PREBUILT_ARCH)
		// and HOST_PREBUILT_ARCH is forcibly set to x86 even on x86_64 hosts. We don't seem
		// to have a plan to fix it (see the comment in build/make/core/envsetup.mk).
		// Let's keep using x86 for the existing cases until we have a need to support
		// other architectures.
		archName := arch.String()
		if os.Class == Host && (arch == X86_64 || arch == Common) {
			archName = "x86"
		}
		outPaths = []string{"host", osName + "-" + archName, partition}
	}
	if debug {
		outPaths = append([]string{"debug"}, outPaths...)
+6 −4
Original line number Diff line number Diff line
@@ -207,6 +207,7 @@ type moduleInstallPathContextImpl struct {
	inRecovery     bool
	inRoot         bool
	forceOS        *OsType
	forceArch      *ArchType
}

func (m moduleInstallPathContextImpl) Config() Config {
@@ -243,8 +244,8 @@ func (m moduleInstallPathContextImpl) InstallBypassMake() bool {
	return false
}

func (m moduleInstallPathContextImpl) InstallForceOS() *OsType {
	return m.forceOS
func (m moduleInstallPathContextImpl) InstallForceOS() (*OsType, *ArchType) {
	return m.forceOS, m.forceArch
}

func pathTestConfig(buildDir string) Config {
@@ -254,8 +255,8 @@ func pathTestConfig(buildDir string) Config {
func TestPathForModuleInstall(t *testing.T) {
	testConfig := pathTestConfig("")

	hostTarget := Target{Os: Linux}
	deviceTarget := Target{Os: Android}
	hostTarget := Target{Os: Linux, Arch: Arch{ArchType: X86}}
	deviceTarget := Target{Os: Android, Arch: Arch{ArchType: Arm64}}

	testCases := []struct {
		name string
@@ -635,6 +636,7 @@ func TestPathForModuleInstall(t *testing.T) {
				},
				inTestcases: true,
				forceOS:     &Linux,
				forceArch:   &X86,
			},
			in:  []string{"my_test", "my_test_bin"},
			out: "host/linux-x86/testcases/my_test/my_test_bin",
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ func robolectricTestSuite(ctx SingletonContext, files map[string]InstallPaths) W
	for _, module := range SortedStringKeys(files) {
		installedPaths = append(installedPaths, files[module]...)
	}
	testCasesDir := pathForInstall(ctx, BuildOs, "testcases", false).ToMakePath()
	testCasesDir := pathForInstall(ctx, BuildOs, X86, "testcases", false).ToMakePath()

	outputFile := PathForOutput(ctx, "packaging", "robolectric-tests.zip")
	rule := NewRuleBuilder()
Loading