Add infrastructure for deprecating module types
Also start the deprecation for BUILD_HOST_TEST_CONFIG and BUILD_TARGET_TEST_CONFIG, which have no users. Bug: 130720555 Bug: 130723115 Bug: 130734993 Test: treehugger Test: Add entries to DEFAULT_ERROR / OBSOLETE to manually test behavior Change-Id: Icfdff43a29b6512494d44b9be11d178333505010
This commit is contained in:
parent
bed1918841
commit
695849ec88
5 changed files with 136 additions and 0 deletions
|
@ -1,5 +1,9 @@
|
||||||
# Build System Changes for Android.mk Writers
|
# Build System Changes for Android.mk Writers
|
||||||
|
|
||||||
|
## Deprecation of `BUILD_*` module types
|
||||||
|
|
||||||
|
See [build/make/Deprecation.md](Deprecation.md) for the current status.
|
||||||
|
|
||||||
## `PRODUCT_HOST_PACKAGES` split from `PRODUCT_PACKAGES` {#PRODUCT_HOST_PACKAGES}
|
## `PRODUCT_HOST_PACKAGES` split from `PRODUCT_PACKAGES` {#PRODUCT_HOST_PACKAGES}
|
||||||
|
|
||||||
Previously, adding a module to `PRODUCT_PACKAGES` that supported both the host
|
Previously, adding a module to `PRODUCT_PACKAGES` that supported both the host
|
||||||
|
|
56
Deprecation.md
Normal file
56
Deprecation.md
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# Deprecation of Make
|
||||||
|
|
||||||
|
We've made significant progress converting AOSP from Make to Soong (Android.mk
|
||||||
|
to Android.bp), and we're ready to start turning off pieces of Make. If you
|
||||||
|
have any problems converting, please contact us via:
|
||||||
|
|
||||||
|
* The [android-building@googlegroups.com] group.
|
||||||
|
* Our [public bug tracker](https://issuetracker.google.com/issues/new?component=381517).
|
||||||
|
* Or privately through your existing contacts at Google.
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
[build/make/core/deprecation.mk] is the source of truth, but for easy browsing:
|
||||||
|
|
||||||
|
| Module type | State |
|
||||||
|
| -------------------------- | --------- |
|
||||||
|
| `BUILD_HOST_TEST_CONFIG` | Warning |
|
||||||
|
| `BUILD_TARGET_TEST_CONFIG` | Warning |
|
||||||
|
| `BUILD_*` | Available |
|
||||||
|
|
||||||
|
## Module Type Deprecation Process
|
||||||
|
|
||||||
|
We'll be turning off `BUILD_*` module types as all of the users are removed
|
||||||
|
from AOSP (and Google's internal trees). The process will go something like
|
||||||
|
this, using `BUILD_PACKAGE` as an example:
|
||||||
|
|
||||||
|
* Prerequisite: all common users of `BUILD_PACKAGE` have been removed (some
|
||||||
|
device-specific ones may remain).
|
||||||
|
* `BUILD_PACKAGE` will be moved from `AVAILABLE_BUILD_MODULE_TYPES` to
|
||||||
|
`DEFAULT_WARNING_BUILD_MODULE_TYPES` in [build/make/core/deprecation.mk]. This
|
||||||
|
will make referring to `BUILD_PACKAGE` a warning.
|
||||||
|
* Any devices that still have warnings will have
|
||||||
|
`BUILD_BROKEN_USES_BUILD_PACKAGE := true` added to their `BoardConfig.mk`.
|
||||||
|
* `BUILD_PACKAGE` will be switched from `DEFAULT_WARNING_BUILD_MODULE_TYPES` to
|
||||||
|
`DEFAULT_ERROR_BUILD_MODULE_TYPES`, which will turn referring to
|
||||||
|
`BUILD_PACKAGE` into an error unless the device has overridden it.
|
||||||
|
* At some later point, after all devices in AOSP no longer set
|
||||||
|
`BUILD_BROKEN_USES_BUILD_PACKAGE`, `BUILD_PACKAGE` will be moved from
|
||||||
|
`DEFAULT_ERROR_BUILD_MODULE_TYPES` to `OBSOLETE_BUILD_MODULE_TYPES` and the
|
||||||
|
code will be removed. It will no longer be possible to use `BUILD_PACKAGE`.
|
||||||
|
|
||||||
|
In most cases, we expect module types to stay in the default warning state for
|
||||||
|
about two weeks before becoming an error by default. Then it will spend some
|
||||||
|
amount of time in the default error state before moving to obsolete -- we'll
|
||||||
|
try and keep that around for a while, but other development may cause those to
|
||||||
|
break, and the fix may to be to obsolete them. There is no expectation that the
|
||||||
|
`BUILD_BROKEN_USES_BUILD_*` workarounds will work in a future release, it's a
|
||||||
|
short-term workaround.
|
||||||
|
|
||||||
|
Just to be clear, the above process will happen on the AOSP master branch. So
|
||||||
|
if you're following Android releases, none of the deprecation steps will be in
|
||||||
|
Android Q, and the 2020 release will have jumped directly to the end for many
|
||||||
|
module types.
|
||||||
|
|
||||||
|
[android-building@googlegroups.com]: https://groups.google.com/forum/#!forum/android-building
|
||||||
|
[build/make/core/deprecation.mk]: /core/deprecation.mk
|
|
@ -92,6 +92,12 @@ _build_broken_var_list := \
|
||||||
BUILD_BROKEN_ENG_DEBUG_TAGS \
|
BUILD_BROKEN_ENG_DEBUG_TAGS \
|
||||||
BUILD_BROKEN_USES_NETWORK \
|
BUILD_BROKEN_USES_NETWORK \
|
||||||
|
|
||||||
|
_build_broken_var_list += \
|
||||||
|
$(foreach m,$(AVAILABLE_BUILD_MODULE_TYPES) \
|
||||||
|
$(DEFAULT_WARNING_BUILD_MODULE_TYPES) \
|
||||||
|
$(DEFAULT_ERROR_BUILD_MODULE_TYPES), \
|
||||||
|
BUILD_BROKEN_USES_$(m))
|
||||||
|
|
||||||
_board_true_false_vars := $(_build_broken_var_list)
|
_board_true_false_vars := $(_build_broken_var_list)
|
||||||
_board_strip_readonly_list += $(_build_broken_var_list)
|
_board_strip_readonly_list += $(_build_broken_var_list)
|
||||||
|
|
||||||
|
@ -511,3 +517,16 @@ ifneq (,$(_unsupported_systemsdk_versions))
|
||||||
$(error System SDK versions '$(_unsupported_systemsdk_versions)' in BOARD_SYSTEMSDK_VERSIONS are not supported.\
|
$(error System SDK versions '$(_unsupported_systemsdk_versions)' in BOARD_SYSTEMSDK_VERSIONS are not supported.\
|
||||||
Supported versions are $(PLATFORM_SYSTEMSDK_VERSIONS))
|
Supported versions are $(PLATFORM_SYSTEMSDK_VERSIONS))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# Handle BUILD_BROKEN_USES_BUILD_*
|
||||||
|
|
||||||
|
$(foreach m,$(DEFAULT_WARNING_BUILD_MODULE_TYPES),\
|
||||||
|
$(if $(filter false,$(BUILD_BROKEN_USES_$(m))),\
|
||||||
|
$(KATI_obsolete_var $(m),Please convert to Soong),\
|
||||||
|
$(KATI_deprecated_var $(m),Please convert to Soong)))
|
||||||
|
|
||||||
|
$(foreach m,$(DEFAULT_ERROR_BUILD_MODULE_TYPES),\
|
||||||
|
$(if $(filter true,$(BUILD_BROKEN_USES_$(m))),\
|
||||||
|
$(KATI_deprecated_var $(m),Please convert to Soong),\
|
||||||
|
$(KATI_obsolete_var $(m),Please convert to Soong)))
|
||||||
|
|
|
@ -174,6 +174,8 @@ BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY :=$= $(BUILD_SYSTEM)/host_dalvik_static_ja
|
||||||
BUILD_HOST_TEST_CONFIG :=$= $(BUILD_SYSTEM)/host_test_config.mk
|
BUILD_HOST_TEST_CONFIG :=$= $(BUILD_SYSTEM)/host_test_config.mk
|
||||||
BUILD_TARGET_TEST_CONFIG :=$= $(BUILD_SYSTEM)/target_test_config.mk
|
BUILD_TARGET_TEST_CONFIG :=$= $(BUILD_SYSTEM)/target_test_config.mk
|
||||||
|
|
||||||
|
include $(BUILD_SYSTEM)/deprecation.mk
|
||||||
|
|
||||||
# ###############################################################
|
# ###############################################################
|
||||||
# Parse out any modifier targets.
|
# Parse out any modifier targets.
|
||||||
# ###############################################################
|
# ###############################################################
|
||||||
|
|
55
core/deprecation.mk
Normal file
55
core/deprecation.mk
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
# These module types can still be used without warnings or errors.
|
||||||
|
AVAILABLE_BUILD_MODULE_TYPES :=$= \
|
||||||
|
BUILD_AUX_EXECUTABLE \
|
||||||
|
BUILD_AUX_STATIC_LIBRARY \
|
||||||
|
BUILD_COPY_HEADERS \
|
||||||
|
BUILD_EXECUTABLE \
|
||||||
|
BUILD_FUZZ_TEST \
|
||||||
|
BUILD_HEADER_LIBRARY \
|
||||||
|
BUILD_HOST_DALVIK_JAVA_LIBRARY \
|
||||||
|
BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY \
|
||||||
|
BUILD_HOST_EXECUTABLE \
|
||||||
|
BUILD_HOST_FUZZ_TEST \
|
||||||
|
BUILD_HOST_JAVA_LIBRARY \
|
||||||
|
BUILD_HOST_NATIVE_TEST \
|
||||||
|
BUILD_HOST_PREBUILT \
|
||||||
|
BUILD_HOST_SHARED_LIBRARY \
|
||||||
|
BUILD_HOST_SHARED_TEST_LIBRARY \
|
||||||
|
BUILD_HOST_STATIC_LIBRARY \
|
||||||
|
BUILD_HOST_STATIC_TEST_LIBRARY \
|
||||||
|
BUILD_JAVA_LIBRARY \
|
||||||
|
BUILD_MULTI_PREBUILT \
|
||||||
|
BUILD_NATIVE_BENCHMARK \
|
||||||
|
BUILD_NATIVE_TEST \
|
||||||
|
BUILD_NOTICE_FILE \
|
||||||
|
BUILD_PACKAGE \
|
||||||
|
BUILD_PHONY_PACKAGE \
|
||||||
|
BUILD_PREBUILT \
|
||||||
|
BUILD_RRO_PACKAGE \
|
||||||
|
BUILD_SHARED_LIBRARY \
|
||||||
|
BUILD_SHARED_TEST_LIBRARY \
|
||||||
|
BUILD_STATIC_JAVA_LIBRARY \
|
||||||
|
BUILD_STATIC_LIBRARY \
|
||||||
|
BUILD_STATIC_TEST_LIBRARY \
|
||||||
|
|
||||||
|
# These are BUILD_* variables that will throw a warning when used. This is
|
||||||
|
# generally a temporary state until all the devices are marked with the
|
||||||
|
# relevant BUILD_BROKEN_USES_BUILD_* variables, then these would move to
|
||||||
|
# DEFAULT_ERROR_BUILD_MODULE_TYPES.
|
||||||
|
DEFAULT_WARNING_BUILD_MODULE_TYPES :=$= \
|
||||||
|
BUILD_HOST_TEST_CONFIG \
|
||||||
|
BUILD_TARGET_TEST_CONFIG \
|
||||||
|
|
||||||
|
# These are BUILD_* variables that are errors to reference, but you can set
|
||||||
|
# BUILD_BROKEN_USES_BUILD_* in your BoardConfig.mk in order to turn them back
|
||||||
|
# to warnings.
|
||||||
|
DEFAULT_ERROR_BUILD_MODULE_TYPES :=$= \
|
||||||
|
|
||||||
|
# These are BUILD_* variables that are always errors to reference.
|
||||||
|
# Setting the BUILD_BROKEN_USES_BUILD_* variables is also an error.
|
||||||
|
OBSOLETE_BUILD_MODULE_TYPES :=$= \
|
||||||
|
|
||||||
|
$(foreach m,$(OBSOLETE_BUILD_MODULE_TYPES),\
|
||||||
|
$(KATI_obsolete_var $(m),Please convert to Soong) \
|
||||||
|
$(KATI_obsolete_var BUILD_BROKEN_USES_$(m),Please convert to Soong))
|
||||||
|
|
Loading…
Reference in a new issue