Commit f133c764 authored by Andi Kleen's avatar Andi Kleen Committed by Arnaldo Carvalho de Melo

perf test: Support external tests for separate objdir

Extend the searching for the test files so that it works when running
perf from a separate objdir, and also when the perf executable is
symlinked.
Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20240813213651.1057362-2-ak@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 00dc5146
......@@ -29,16 +29,45 @@
static int shell_tests__dir_fd(void)
{
char path[PATH_MAX], *exec_path;
static const char * const devel_dirs[] = { "./tools/perf/tests/shell", "./tests/shell", };
struct stat st;
char path[PATH_MAX], path2[PATH_MAX], *exec_path;
static const char * const devel_dirs[] = {
"./tools/perf/tests/shell",
"./tests/shell",
"./source/tests/shell"
};
int fd;
char *p;
for (size_t i = 0; i < ARRAY_SIZE(devel_dirs); ++i) {
int fd = open(devel_dirs[i], O_PATH);
fd = open(devel_dirs[i], O_PATH);
if (fd >= 0)
return fd;
}
/* Use directory of executable */
if (readlink("/proc/self/exe", path2, sizeof path2) < 0)
return -1;
/* Follow another level of symlink if there */
if (lstat(path2, &st) == 0 && (st.st_mode & S_IFMT) == S_IFLNK) {
scnprintf(path, sizeof(path), path2);
if (readlink(path, path2, sizeof path2) < 0)
return -1;
}
/* Get directory */
p = strrchr(path2, '/');
if (p)
*p = 0;
scnprintf(path, sizeof(path), "%s/tests/shell", path2);
fd = open(path, O_PATH);
if (fd >= 0)
return fd;
scnprintf(path, sizeof(path), "%s/source/tests/shell", path2);
fd = open(path, O_PATH);
if (fd >= 0)
return fd;
/* Then installed path. */
exec_path = get_argv_exec_path();
scnprintf(path, sizeof(path), "%s/tests/shell", exec_path);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment