From def7b5d198d294e0f945cd2b5eb7eb143e1caae6 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Sun, 17 Oct 2021 00:22:33 -0700 Subject: [PATCH] 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 --- android/androidmk.go | 8 ++++++++ android/androidmk_test.go | 6 ++++++ cmd/multiproduct_kati/Android.bp | 10 ++++++++++ cmd/multiproduct_kati/main.go | 9 --------- cmd/multiproduct_kati/main_darwin.go | 20 ++++++++++++++++++++ cmd/multiproduct_kati/main_linux.go | 28 ++++++++++++++++++++++++++++ 6 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 cmd/multiproduct_kati/main_darwin.go create mode 100644 cmd/multiproduct_kati/main_linux.go diff --git a/android/androidmk.go b/android/androidmk.go index feaef1f69..f48c06bce 100644 --- a/android/androidmk.go +++ b/android/androidmk.go @@ -29,6 +29,7 @@ import ( "os" "path/filepath" "reflect" + "runtime" "sort" "strings" @@ -902,6 +903,13 @@ func shouldSkipAndroidMkProcessing(module *ModuleBase) bool { 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() || module.commonProperties.HideFromMake || // Make does not understand LinuxBionic diff --git a/android/androidmk_test.go b/android/androidmk_test.go index 8eda9b247..ecfb00825 100644 --- a/android/androidmk_test.go +++ b/android/androidmk_test.go @@ -18,6 +18,7 @@ import ( "fmt" "io" "reflect" + "runtime" "strings" "testing" @@ -155,6 +156,11 @@ func buildContextAndCustomModuleFoo(t *testing.T, bp string) (*TestContext, *cus } 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 := ` custom { name: "foo", diff --git a/cmd/multiproduct_kati/Android.bp b/cmd/multiproduct_kati/Android.bp index e5be6c0c8..20ca2a3c9 100644 --- a/cmd/multiproduct_kati/Android.bp +++ b/cmd/multiproduct_kati/Android.bp @@ -31,4 +31,14 @@ blueprint_go_binary { testSrcs: [ "main_test.go", ], + linux: { + srcs: [ + "main_linux.go", + ], + }, + darwin: { + srcs: [ + "main_darwin.go", + ], + }, } diff --git a/cmd/multiproduct_kati/main.go b/cmd/multiproduct_kati/main.go index 3c9cac190..169f491be 100644 --- a/cmd/multiproduct_kati/main.go +++ b/cmd/multiproduct_kati/main.go @@ -166,15 +166,6 @@ type mpContext struct { 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 { cmd := exec.Command(soongUi, "--dumpvars-mode", "--vars=all_named_products") output, err := cmd.Output() diff --git a/cmd/multiproduct_kati/main_darwin.go b/cmd/multiproduct_kati/main_darwin.go new file mode 100644 index 000000000..3d1b12ab1 --- /dev/null +++ b/cmd/multiproduct_kati/main_darwin.go @@ -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 +} diff --git a/cmd/multiproduct_kati/main_linux.go b/cmd/multiproduct_kati/main_linux.go new file mode 100644 index 000000000..db7449696 --- /dev/null +++ b/cmd/multiproduct_kati/main_linux.go @@ -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) +}