Supported python build in host side.
The base module handles all the common functionalites, such as version
compatibilty check, version variations split, source file format check,
source/data file duplicate check.
The library/binary module focuses on how to generate binary build actions,
such as setting up stub script, zipping, filling in __init__.py in
runfiles dir tree.
Bug: b/31676493
Test: go test under python package
Change-Id: I06608369f350f7195873d459e1c8d1bdb811e77e
diff --git a/android/arch.go b/android/arch.go
index e21a070..39477ad 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -189,7 +189,8 @@
}()
var (
- osTypeList []OsType
+ osTypeList []OsType
+ commonTargetMap = make(map[string]Target)
NoOsType OsType
Linux = NewOsType("linux", Host, false)
@@ -236,6 +237,13 @@
DefaultDisabled: defDisabled,
}
osTypeList = append(osTypeList, os)
+
+ if _, found := commonTargetMap[name]; found {
+ panic(fmt.Errorf("Found Os type duplicate during OsType registration: %q", name))
+ } else {
+ commonTargetMap[name] = Target{Os: os, Arch: Arch{ArchType: Common}}
+ }
+
return os
}
@@ -249,15 +257,6 @@
return NoOsType
}
-var (
- commonTarget = Target{
- Os: Android,
- Arch: Arch{
- ArchType: Common,
- },
- }
-)
-
type Target struct {
Os OsType
Arch Arch
@@ -989,6 +988,20 @@
return ret
}
+func getCommonTargets(targets []Target) []Target {
+ var ret []Target
+ set := make(map[string]bool)
+
+ for _, t := range targets {
+ if _, found := set[t.Os.String()]; !found {
+ set[t.Os.String()] = true
+ ret = append(ret, commonTargetMap[t.Os.String()])
+ }
+ }
+
+ return ret
+}
+
// Use the module multilib setting to select one or more targets from a target list
func decodeMultilib(multilib string, targets []Target, prefer32 bool) ([]Target, error) {
buildTargets := []Target{}
@@ -1001,7 +1014,7 @@
}
switch multilib {
case "common":
- buildTargets = append(buildTargets, commonTarget)
+ buildTargets = append(buildTargets, getCommonTargets(targets)...)
case "both":
if prefer32 {
buildTargets = append(buildTargets, filterMultilibTargets(targets, "lib32")...)