summaryrefslogtreecommitdiffstats
path: root/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch')
-rw-r--r--meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch137
1 files changed, 137 insertions, 0 deletions
diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch
new file mode 100644
index 000000000..47957333d
--- /dev/null
+++ b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch
@@ -0,0 +1,137 @@
+From 0e566f65fa31eaa5208d4a17413c7a4aad7eade5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linaro.org>
+Date: Thu, 7 Dec 2017 17:42:45 -0600
+Subject: [PATCH 3/7] Add support to avoid load/run twice a run_ptest script
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In some ptest packages exists symlink in the ptest directory causing
+to load/run twice the same ptest,
+
+For example in perl5:
+
+/usr/lib/perl -> /usr/lib/perl5
+
+Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
+---
+ ptest_list.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ ptest_list.h | 3 +++
+ tests/data/python3 | 1 +
+ tests/utils.c | 1 +
+ utils.c | 6 ++++++
+ 5 files changed, 51 insertions(+)
+ create mode 120000 tests/data/python3
+
+diff --git a/ptest_list.c b/ptest_list.c
+index 2e1aa305752d..3e393d5fabe2 100644
+--- a/ptest_list.c
++++ b/ptest_list.c
+@@ -110,6 +110,46 @@ ptest_list_search(struct ptest_list *head, char *ptest)
+ return q;
+ }
+
++
++struct ptest_list *
++ptest_list_search_by_file(struct ptest_list *head, char *run_ptest, struct stat st_buf)
++{
++ struct ptest_list *q = NULL;
++ struct ptest_list *p;
++ struct stat st_buf_p;
++
++ VALIDATE_PTR_RNULL(head);
++ VALIDATE_PTR_RNULL(run_ptest);
++
++ for (p = head; p != NULL; p = p->next) {
++ if (p->ptest == NULL)
++ continue;
++
++ if (stat(p->run_ptest, &st_buf_p) == -1)
++ continue;
++
++ if (strcmp(p->run_ptest, run_ptest) == 0) {
++ q = p;
++ break;
++ }
++
++ /* *
++ * In some ptest packages exists symlink in the ptest directory
++ * causing to load/run twice the same ptest,
++ *
++ * For example in perl5:
++ * /usr/lib/perl -> /usr/lib/perl5
++ * */
++ if (st_buf.st_dev == st_buf_p.st_dev &&
++ st_buf.st_ino == st_buf_p.st_ino) {
++ q = p;
++ break;
++ }
++ }
++
++ return q;
++}
++
+ struct ptest_list *
+ ptest_list_add(struct ptest_list *head, char *ptest, char *run_ptest)
+ {
+diff --git a/ptest_list.h b/ptest_list.h
+index 8b394853c25b..03d75390a51d 100644
+--- a/ptest_list.h
++++ b/ptest_list.h
+@@ -28,6 +28,8 @@
+ #define PTEST_LIST_ITERATE_START(head, p) for (p = head->next; p != NULL; p = p->next) {
+ #define PTEST_LIST_ITERATE_END }
+
++#include <sys/stat.h>
++
+ struct ptest_list {
+ char *ptest;
+ char *run_ptest;
+@@ -42,6 +44,7 @@ extern int ptest_list_free_all(struct ptest_list *);
+
+ extern int ptest_list_length(struct ptest_list *);
+ extern struct ptest_list *ptest_list_search(struct ptest_list *, char *);
++extern struct ptest_list *ptest_list_search_by_file(struct ptest_list *, char *, struct stat);
+ extern struct ptest_list *ptest_list_add(struct ptest_list *, char *, char *);
+ extern struct ptest_list *ptest_list_remove(struct ptest_list *, char *, int);
+
+diff --git a/tests/data/python3 b/tests/data/python3
+new file mode 120000
+index 000000000000..d8654aa0e2f2
+--- /dev/null
++++ b/tests/data/python3
+@@ -0,0 +1 @@
++python
+\ No newline at end of file
+diff --git a/tests/utils.c b/tests/utils.c
+index ecf3e8af9a81..cf093793c4f2 100644
+--- a/tests/utils.c
++++ b/tests/utils.c
+@@ -48,6 +48,7 @@ static int ptests_found_length = 6;
+ static char *ptests_not_found[] = {
+ "busybox",
+ "perl",
++ "python3",
+ NULL,
+ };
+
+diff --git a/utils.c b/utils.c
+index 933ecedf57e8..ed2eff7900c1 100644
+--- a/utils.c
++++ b/utils.c
+@@ -143,6 +143,12 @@ get_available_ptests(const char *dir)
+ continue;
+ }
+
++ if (ptest_list_search_by_file(head, run_ptest, st_buf)) {
++ free(run_ptest);
++ free(d_name);
++ continue;
++ }
++
+ struct ptest_list *p = ptest_list_add(head,
+ d_name, run_ptest);
+ CHECK_ALLOCATION(p, sizeof(struct ptest_list *), 0);
+--
+2.11.0
+