[FE training-materials-updates] Add patch needed to make Buildroot behave properly
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Fri May 31 18:01:51 CEST 2013
Repository : git://git.free-electrons.com/training-materials.git
On branch : master
Link : http://git.free-electrons.com/training-materials/commit/?id=bc7decc26a1618c15e1b42bdc57fa1d4b7338266
>---------------------------------------------------------------
commit bc7decc26a1618c15e1b42bdc57fa1d4b7338266
Author: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
Date: Fri May 31 17:53:13 2013 +0200
Add patch needed to make Buildroot behave properly
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
>---------------------------------------------------------------
bc7decc26a1618c15e1b42bdc57fa1d4b7338266
...in-wrapper-fix-paths-if-executable-was-re.patch | 56 ++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/lab-data/sysdev/buildroot/data/0001-ext-toolchain-wrapper-fix-paths-if-executable-was-re.patch b/lab-data/sysdev/buildroot/data/0001-ext-toolchain-wrapper-fix-paths-if-executable-was-re.patch
new file mode 100644
index 0000000..cbd142e
--- /dev/null
+++ b/lab-data/sysdev/buildroot/data/0001-ext-toolchain-wrapper-fix-paths-if-executable-was-re.patch
@@ -0,0 +1,56 @@
+From 51698d4f81138f0b2ab33a069af9a7346f199094 Mon Sep 17 00:00:00 2001
+From: Patrick Ziegler <patrick.ziegler at fh-kl.de>
+Date: Wed, 29 May 2013 11:41:19 +0200
+Subject: [PATCH] ext-toolchain-wrapper: fix paths if executable was resolved
+ by PATH
+
+If ext-toolchain-wrapper or any symbolic link to it was resolved by PATH,
+the wrapper takes the working directory to calculate the relative paths.
+
+Now '/proc/self/exe' is used to resolve the absolute path to the toolchain
+directory if the wrapper was called neither with a relative nor an absolute
+path.
+
+Signed-off-by: Patrick Ziegler <patrick.ziegler at fh-kl.de>
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
+---
+ .../toolchain-external/ext-toolchain-wrapper.c | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/toolchain/toolchain-external/ext-toolchain-wrapper.c b/toolchain/toolchain-external/ext-toolchain-wrapper.c
+index 9a2fc70..e71a90a 100644
+--- a/toolchain/toolchain-external/ext-toolchain-wrapper.c
++++ b/toolchain/toolchain-external/ext-toolchain-wrapper.c
+@@ -61,7 +61,7 @@ int main(int argc, char **argv)
+ char *relbasedir, *absbasedir;
+ char *progpath = argv[0];
+ char *basename;
+- int ret;
++ int ret, i, count = 0;
+
+ /* Calculate the relative paths */
+ basename = strrchr(progpath, '/');
+@@ -77,7 +77,19 @@ int main(int argc, char **argv)
+ absbasedir = realpath(relbasedir, NULL);
+ } else {
+ basename = progpath;
+- absbasedir = realpath("../..", NULL);
++ absbasedir = malloc(PATH_MAX + 1);
++ ret = readlink("/proc/self/exe", absbasedir, PATH_MAX);
++ if (ret < 0) {
++ perror(__FILE__ ": readlink");
++ return 2;
++ }
++ for (i = ret; i > 0; i--) {
++ if ('/' == absbasedir[i]) {
++ absbasedir[i] = '\0';
++ if (3 == ++count)
++ break;
++ }
++ }
+ }
+ if (absbasedir == NULL) {
+ perror(__FILE__ ": realpath");
+--
+1.7.9.5
+
More information about the training-materials-updates
mailing list