summaryrefslogtreecommitdiff
path: root/init/host_import_parser.cpp
diff options
context:
space:
mode:
authorTom Cherry <tomcherry@google.com>2018-05-09 17:38:30 -0700
committerTom Cherry <tomcherry@google.com>2018-05-30 15:43:32 -0700
commit194b5d1da9ec8957bbf0987e263e50132776b5e1 (patch)
treee736f6bc12b0dfd4a4f7b31c9e861a61f9796684 /init/host_import_parser.cpp
parentfe86a1473fdb85d6c21bd4e1c9990b4c97d875ff (diff)
init: handle properties and imports for host init verifier
Allow specifying properties on the command line when running host init verifier. This is needed particularly for importing files that have a property expansion in their path. Handle the import statement on host, basing paths off of the out directory of Android builds. Bug: 36970783 Test: verify that bullhead imports the correct files and checks them Change-Id: I4fe263016b3764a372708b559bc0c739b1b7e5e3
Diffstat (limited to 'init/host_import_parser.cpp')
-rw-r--r--init/host_import_parser.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/init/host_import_parser.cpp b/init/host_import_parser.cpp
new file mode 100644
index 000000000..faf6fc1e3
--- /dev/null
+++ b/init/host_import_parser.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#include "host_import_parser.h"
+
+#include <android-base/strings.h>
+
+using android::base::StartsWith;
+
+namespace android {
+namespace init {
+
+Result<Success> HostImportParser::ParseSection(std::vector<std::string>&& args,
+ const std::string& filename, int line) {
+ if (args.size() != 2) {
+ return Error() << "single argument needed for import\n";
+ }
+
+ auto import_path = args[1];
+
+ if (StartsWith(import_path, "/system") || StartsWith(import_path, "/product") ||
+ StartsWith(import_path, "/odm") || StartsWith(import_path, "/vendor")) {
+ import_path = out_dir_ + "/" + import_path;
+ } else {
+ import_path = out_dir_ + "/root/" + import_path;
+ }
+
+ return ImportParser::ParseSection({"import", import_path}, filename, line);
+}
+
+} // namespace init
+} // namespace android