versioner: ignore non-header files.
Don't try to compile non-headers (vim swap files, etc.) that happen to
be in the header directory.
Bug: none
Test: manually created a file in libc/include
Change-Id: I2c1647ec7174dc617898dc2f07c9a80a08b69c72
diff --git a/tools/versioner/src/Utils.cpp b/tools/versioner/src/Utils.cpp
index dd087a5..3806110 100644
--- a/tools/versioner/src/Utils.cpp
+++ b/tools/versioner/src/Utils.cpp
@@ -25,6 +25,8 @@
#include <string>
#include <vector>
+#include <android-base/strings.h>
+
#include "DeclarationDatabase.h"
std::string getWorkingDir() {
@@ -35,8 +37,8 @@
return buf;
}
-std::vector<std::string> collectFiles(const std::string& directory) {
- std::vector<std::string> files;
+std::vector<std::string> collectHeaders(const std::string& directory) {
+ std::vector<std::string> headers;
char* dir_argv[2] = { const_cast<char*>(directory.c_str()), nullptr };
FTS* fts = fts_open(dir_argv, FTS_LOGICAL | FTS_NOCHDIR, nullptr);
@@ -51,11 +53,15 @@
continue;
}
- files.push_back(ent->fts_path);
+ if (!android::base::EndsWith(ent->fts_path, ".h")) {
+ continue;
+ }
+
+ headers.push_back(ent->fts_path);
}
fts_close(fts);
- return files;
+ return headers;
}
llvm::StringRef StripPrefix(llvm::StringRef string, llvm::StringRef prefix) {
diff --git a/tools/versioner/src/Utils.h b/tools/versioner/src/Utils.h
index 7876f23..44a34f8 100644
--- a/tools/versioner/src/Utils.h
+++ b/tools/versioner/src/Utils.h
@@ -27,7 +27,7 @@
#include <llvm/ADT/StringRef.h>
std::string getWorkingDir();
-std::vector<std::string> collectFiles(const std::string& directory);
+std::vector<std::string> collectHeaders(const std::string& directory);
static inline std::string dirname(const std::string& path) {
std::unique_ptr<char, decltype(&free)> path_copy(strdup(path.c_str()), free);
diff --git a/tools/versioner/src/versioner.cpp b/tools/versioner/src/versioner.cpp
index 86349e1..0cb7bd0 100644
--- a/tools/versioner/src/versioner.cpp
+++ b/tools/versioner/src/versioner.cpp
@@ -56,7 +56,7 @@
static CompilationRequirements collectRequirements(const Arch& arch, const std::string& header_dir,
const std::string& dependency_dir) {
- std::vector<std::string> headers = collectFiles(header_dir);
+ std::vector<std::string> headers = collectHeaders(header_dir);
std::vector<std::string> dependencies = { header_dir };
if (!dependency_dir.empty()) {
auto collect_children = [&dependencies, &dependency_dir](const std::string& dir_path) {