Remove EXPAND/STRINGIFY macros.
This reverts commit 8be0f39fec
to reland
the change that removes EXPAND/STRINGIFY macros.
It's error-prone by putting anything into a string (e.g.
EXPAND(RECOVERY_API_VERSION) would become "RECOVER_API_VERSION" if we
forgot to pass -DRECOVERY_API_VERSION=3).
The initial attempt put RECOVERY_API_VERSION into common.h, which might
be included by device-specific codes but without defining that when
compiling the module. This CL avoids the issue by using a constant
in the header, with a static_assert in recovery.cpp that guards the
consistency.
Test: recovery_component_test
Test: Sideload OTAs on bullhead and sailfish respectively.
Change-Id: I12af3f73392a85554ba703f04970ec9d984ccbaa
This commit is contained in:
parent
64307daf5b
commit
bd0ddcd5e8
3 changed files with 9 additions and 4 deletions
5
common.h
5
common.h
|
@ -22,8 +22,9 @@
|
|||
|
||||
#include <string>
|
||||
|
||||
#define STRINGIFY(x) #x
|
||||
#define EXPAND(x) STRINGIFY(x)
|
||||
// Not using the command-line defined macro here because this header could be included by
|
||||
// device-specific recovery libraries. We static assert the value consistency in recovery.cpp.
|
||||
static constexpr int kRecoveryApiVersion = 3;
|
||||
|
||||
class RecoveryUI;
|
||||
|
||||
|
|
|
@ -290,7 +290,7 @@ int update_binary_command(const std::string& package, ZipArchiveHandle zip,
|
|||
|
||||
*cmd = {
|
||||
binary_path,
|
||||
EXPAND(RECOVERY_API_VERSION), // defined in Android.mk
|
||||
std::to_string(kRecoveryApiVersion),
|
||||
std::to_string(status_fd),
|
||||
package,
|
||||
};
|
||||
|
|
|
@ -125,6 +125,10 @@ static const int BATTERY_WITH_CHARGER_OK_PERCENTAGE = 15;
|
|||
static constexpr const char* RECOVERY_WIPE = "/etc/recovery.wipe";
|
||||
static constexpr const char* DEFAULT_LOCALE = "en-US";
|
||||
|
||||
// We define RECOVERY_API_VERSION in Android.mk, which will be picked up by build system and packed
|
||||
// into target_files.zip. Assert the version defined in code and in Android.mk are consistent.
|
||||
static_assert(kRecoveryApiVersion == RECOVERY_API_VERSION, "Mismatching recovery API versions.");
|
||||
|
||||
static std::string locale;
|
||||
static bool has_cache = false;
|
||||
|
||||
|
@ -1498,7 +1502,7 @@ int main(int argc, char **argv) {
|
|||
property_list(print_property, NULL);
|
||||
printf("\n");
|
||||
|
||||
ui->Print("Supported API: %d\n", RECOVERY_API_VERSION);
|
||||
ui->Print("Supported API: %d\n", kRecoveryApiVersion);
|
||||
|
||||
int status = INSTALL_SUCCESS;
|
||||
|
||||
|
|
Loading…
Reference in a new issue