Merge "Don't assume host arch is always x86" am: daf735287b
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1415953 Change-Id: I049556891890833c1e7db6483e5ee6446714583e
This commit is contained in:
commit
9ef1f7d96a
6 changed files with 54 additions and 28 deletions
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
@ -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...)
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -326,9 +326,11 @@ func RobolectricTestFactory() android.Module {
|
|||
return module
|
||||
}
|
||||
|
||||
func (r *robolectricTest) InstallBypassMake() bool { return true }
|
||||
func (r *robolectricTest) InstallInTestcases() bool { return true }
|
||||
func (r *robolectricTest) InstallForceOS() *android.OsType { return &android.BuildOs }
|
||||
func (r *robolectricTest) InstallBypassMake() bool { return true }
|
||||
func (r *robolectricTest) InstallInTestcases() bool { return true }
|
||||
func (r *robolectricTest) InstallForceOS() (*android.OsType, *android.ArchType) {
|
||||
return &android.BuildOs, &android.BuildArch
|
||||
}
|
||||
|
||||
func robolectricRuntimesFactory() android.Module {
|
||||
module := &robolectricRuntimes{}
|
||||
|
@ -390,6 +392,8 @@ func (r *robolectricRuntimes) GenerateAndroidBuildActions(ctx android.ModuleCont
|
|||
}
|
||||
}
|
||||
|
||||
func (r *robolectricRuntimes) InstallBypassMake() bool { return true }
|
||||
func (r *robolectricRuntimes) InstallInTestcases() bool { return true }
|
||||
func (r *robolectricRuntimes) InstallForceOS() *android.OsType { return &android.BuildOs }
|
||||
func (r *robolectricRuntimes) InstallBypassMake() bool { return true }
|
||||
func (r *robolectricRuntimes) InstallInTestcases() bool { return true }
|
||||
func (r *robolectricRuntimes) InstallForceOS() (*android.OsType, *android.ArchType) {
|
||||
return &android.BuildOs, &android.BuildArch
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue