ueventd: deprecate paths without /etc/
ueventd.rc scripts belong in the /etc/ directory of their given partition, not the root of the partition. This can cause problems, especially since Android.bp cannot write to the root directly, forcing vendors to use Android.mk for these files. Note that /system/etc/ueventd.rc moved long ago. Test: Tree-hugger Change-Id: I2dcaafc3c3f687f76ab6bc38af979c8b43346db0
This commit is contained in:
parent
f2d359cbaa
commit
71dd7064cc
4 changed files with 20 additions and 7 deletions
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "ueventd.h"
|
||||
|
||||
#include <android/api-level.h>
|
||||
#include <ctype.h>
|
||||
#include <dirent.h>
|
||||
#include <fcntl.h>
|
||||
|
@ -266,6 +267,17 @@ void ColdBoot::Run() {
|
|||
LOG(INFO) << "Coldboot took " << cold_boot_timer.duration().count() / 1000.0f << " seconds";
|
||||
}
|
||||
|
||||
static UeventdConfiguration GetConfiguration() {
|
||||
// TODO: Remove these legacy paths once Android S is no longer supported.
|
||||
if (android::base::GetIntProperty("ro.product.first_api_level", 10000) <= __ANDROID_API_S__) {
|
||||
auto hardware = android::base::GetProperty("ro.hardware", "");
|
||||
return ParseConfig({"/system/etc/ueventd.rc", "/vendor/ueventd.rc", "/odm/ueventd.rc",
|
||||
"/ueventd." + hardware + ".rc"});
|
||||
}
|
||||
|
||||
return ParseConfig({"/system/etc/ueventd.rc"});
|
||||
}
|
||||
|
||||
int ueventd_main(int argc, char** argv) {
|
||||
/*
|
||||
* init sets the umask to 077 for forked processes. We need to
|
||||
|
@ -283,7 +295,7 @@ int ueventd_main(int argc, char** argv) {
|
|||
|
||||
std::vector<std::unique_ptr<UeventHandler>> uevent_handlers;
|
||||
|
||||
auto ueventd_configuration = ParseConfig("/system/etc/ueventd.rc");
|
||||
auto ueventd_configuration = GetConfiguration();
|
||||
|
||||
uevent_handlers.emplace_back(std::make_unique<DeviceHandler>(
|
||||
std::move(ueventd_configuration.dev_permissions),
|
||||
|
|
|
@ -230,7 +230,7 @@ Result<void> SubsystemParser::EndSection() {
|
|||
return {};
|
||||
}
|
||||
|
||||
UeventdConfiguration ParseConfig(const std::string& config) {
|
||||
UeventdConfiguration ParseConfig(const std::vector<std::string>& configs) {
|
||||
Parser parser;
|
||||
UeventdConfiguration ueventd_configuration;
|
||||
|
||||
|
@ -260,7 +260,9 @@ UeventdConfiguration ParseConfig(const std::string& config) {
|
|||
std::bind(ParseEnabledDisabledLine, _1,
|
||||
&ueventd_configuration.enable_parallel_restorecon));
|
||||
|
||||
parser.ParseConfig(config);
|
||||
for (const auto& config : configs) {
|
||||
parser.ParseConfig(config);
|
||||
}
|
||||
|
||||
return ueventd_configuration;
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ struct UeventdConfiguration {
|
|||
bool enable_parallel_restorecon = false;
|
||||
};
|
||||
|
||||
UeventdConfiguration ParseConfig(const std::string& config);
|
||||
UeventdConfiguration ParseConfig(const std::vector<std::string>& configs);
|
||||
|
||||
} // namespace init
|
||||
} // namespace android
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import /vendor/ueventd.rc
|
||||
import /odm/ueventd.rc
|
||||
import /ueventd.${ro.hardware}.rc
|
||||
import /vendor/etc/ueventd.rc
|
||||
import /odm/etc/ueventd.rc
|
||||
|
||||
firmware_directories /etc/firmware/ /odm/firmware/ /vendor/firmware/ /firmware/image/
|
||||
uevent_socket_rcvbuf_size 16M
|
||||
|
|
Loading…
Reference in a new issue