[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