Reduce modules exposed to Make in Mac builds

Device builds are no longer supported on Mac, but we do support building
various host tools, including the SDK build-tools and platform-tools
packages. These have dependencies on [java] device modules, so we don't
completely disable device modules, only hide them from Make (which makes
them more difficult to trigger from the command line).

Also fix the mac build of multiproduct_kati, so that `m blueprint_tools`
works on Mac.

Bug: 187222815
Test: `m`, `m dist`, etc on Mac
Change-Id: I92f16605d5cd173d431cbcb79081234d45cc6e2e
This commit is contained in:
Dan Willemsen
2021-10-17 00:22:33 -07:00
parent 9579f08f22
commit def7b5d198
6 changed files with 72 additions and 9 deletions

View File

@@ -29,6 +29,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"reflect" "reflect"
"runtime"
"sort" "sort"
"strings" "strings"
@@ -902,6 +903,13 @@ func shouldSkipAndroidMkProcessing(module *ModuleBase) bool {
return true return true
} }
// On Mac, only expose host darwin modules to Make, as that's all we claim to support.
// In reality, some of them depend on device-built (Java) modules, so we can't disable all
// device modules in Soong, but we can hide them from Make (and thus the build user interface)
if runtime.GOOS == "darwin" && module.Os() != Darwin {
return true
}
return !module.Enabled() || return !module.Enabled() ||
module.commonProperties.HideFromMake || module.commonProperties.HideFromMake ||
// Make does not understand LinuxBionic // Make does not understand LinuxBionic

View File

@@ -18,6 +18,7 @@ import (
"fmt" "fmt"
"io" "io"
"reflect" "reflect"
"runtime"
"strings" "strings"
"testing" "testing"
@@ -155,6 +156,11 @@ func buildContextAndCustomModuleFoo(t *testing.T, bp string) (*TestContext, *cus
} }
func TestAndroidMkSingleton_PassesUpdatedAndroidMkDataToCustomCallback(t *testing.T) { func TestAndroidMkSingleton_PassesUpdatedAndroidMkDataToCustomCallback(t *testing.T) {
if runtime.GOOS == "darwin" {
// Device modules are not exported on Mac, so this test doesn't work.
t.SkipNow()
}
bp := ` bp := `
custom { custom {
name: "foo", name: "foo",

View File

@@ -31,4 +31,14 @@ blueprint_go_binary {
testSrcs: [ testSrcs: [
"main_test.go", "main_test.go",
], ],
linux: {
srcs: [
"main_linux.go",
],
},
darwin: {
srcs: [
"main_darwin.go",
],
},
} }

View File

@@ -166,15 +166,6 @@ type mpContext struct {
MainLogsDir string MainLogsDir string
} }
func detectTotalRAM() uint64 {
var info syscall.Sysinfo_t
err := syscall.Sysinfo(&info)
if err != nil {
panic(err)
}
return info.Totalram * uint64(info.Unit)
}
func findNamedProducts(soongUi string, log logger.Logger) []string { func findNamedProducts(soongUi string, log logger.Logger) []string {
cmd := exec.Command(soongUi, "--dumpvars-mode", "--vars=all_named_products") cmd := exec.Command(soongUi, "--dumpvars-mode", "--vars=all_named_products")
output, err := cmd.Output() output, err := cmd.Output()

View File

@@ -0,0 +1,20 @@
// Copyright 2017 Google Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package main
func detectTotalRAM() uint64 {
// unimplemented stub on darwin
return 0
}

View File

@@ -0,0 +1,28 @@
// Copyright 2017 Google Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package main
import (
"syscall"
)
func detectTotalRAM() uint64 {
var info syscall.Sysinfo_t
err := syscall.Sysinfo(&info)
if err != nil {
panic(err)
}
return info.Totalram * uint64(info.Unit)
}