Bug 10151

Summary: toolchain eclipse register : fails with a custom BR2_HOST_DIR
Product: buildroot Reporter: Frederic MATHIEU <frederic.mathieu>
Component: OtherAssignee: Arnout Vandecappelle <arnout>
Status: RESOLVED FIXED    
Severity: normal CC: buildroot
Priority: P5    
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Host: Target:
Build:

Description Frederic MATHIEU 2017-08-03 09:25:50 UTC
The toolchain registering fails when a custom HOST directory is defined. 

the script './support/scripts/eclipse-register-toolchain' returns message :
"Your project directory does not look like a Buildroot output"

tested with versions 2017.02.(n), 2017.05.2


in my case, 
BR2_HOST_DIR="$(BASE_DIR)/../../../toolchain/2107.02.3_X86_32/host"
also tested with absolute path : /home/dev01/data/toolchain/2107.02.3_X86_32/host"


...
./support/scripts/eclipse-register-toolchain `readlink -f /home/dev01/data/projects/buildroot-2017.02.3_X86_32/output` i686-buildroot-linux-gnu- "i686"
Your project directory does not look like a Buildroot output
Makefile:655: recipe for target 'target-finalize' failed
make[1]: *** [target-finalize] Error 1
Makefile:79: recipe for target '_all' failed
make: *** [_all] Error 2
Comment 1 Arnout Vandecappelle 2017-08-03 21:29:03 UTC
Indeed, the eclipse-register-toolchain script doesn't seem to support a non-default BR2_HOST_DIR.

A simple solution would be to symlink host to BR2_HOST_DIR if it's not the default. Any objections to that?
Comment 2 Thomas Petazzoni 2017-08-04 07:03:55 UTC
I'm not really happy to add this host symlink just for the sake of making the eclipse-register-toolchain script work. Instead, we should pass $(HOST_DIR) as argument to eclipse-register-toolchain.
Comment 3 Frederic MATHIEU 2017-08-04 07:38:37 UTC
I agree with Thomas, it is better to solve the problem at its source, ie the main makefile.
Comment 4 Arnout Vandecappelle 2017-08-04 16:43:42 UTC
(In reply to Thomas Petazzoni from comment #2)
> I'm not really happy to add this host symlink just for the sake
> of making the eclipse-register-toolchain script work.

It's more that scripts in general (e.g. post-build scripts) may assume that $(O)/host exists, and it just simplifies life in general if you can rely on it being there. A bit like the staging symlink.

Note that things *will* break dramatically if you change BR2_HOST_DIR and try to rebuild. So there can be no argument of "the symlink could dangle".

> Instead, we should pass $(HOST_DIR) as argument to eclipse-register-toolchain.

HOST_DIR is already exported, no need to add an argument.

However, if you look at the script, you'll see that it just checks that ${project_directory}/host exists, but this directory is *not* encoded in the eclipse toolchains file. Since there is apparently no way to pass BR2_HOST_DIR to eclipse, I guess a non-default BR2_HOST_DIR can't be supported without changing both the eclipse plugin and the toolchains file. That, in turn, requires a synchronised update, and old Buildroots won't run with the new eclipse plugin and vice versa...

In short: I propose to add the symlink :-)
http://patchwork.ozlabs.org/patch/797910/