Hi all, I am using an external tree with buildroot. My external tree is in a seperate git repository and the buildroot source is fetched as a git submodule: ./ ├── board │ └── board definitions... ├── buildroot │ ├── arch │ ├── board │ ├── boot │ ├── CHANGES │ ├── Config.in │ ├── Config.in.legacy │ ├── configs │ ├── COPYING │ ├── DEVELOPERS │ ├── dl │ ├── docs │ ├── fs │ ├── linux │ ├── Makefile │ ├── Makefile.legacy │ ├── output │ ├── package │ ├── README │ ├── support │ ├── system │ └── toolchain ├── Config.in ├── configs │ ├── my_defconfig │ └── several_defconfig ├── external.desc ├── external.mk ├── package │ ├── custom package 1 │ └── custom package 2 └── README.md This tree was working fine with buildroot 2016.08. To compile, I go into the /buildroot directory and run: make BR2_EXTERNAL=../ my_defconfig O=output/my_output and then make O=output/my_output I followed the buildroot user manual on how to adapt an external tree for buildroot 2016.11. I created the external.desc file and changed every reference to $(BR2_EXTERNAL) to $(BR2_EXTERNAL_MY_EXTERNAL_TREE_PATH). Howver, now building does not work anymore. I get an infinite loop when making like in the snippet below. Can you help me diagnose the problem? Updating goal targets.... Considering target file 'my_defconfig'. File 'my_defconfig' does not exist. Looking for an implicit rule for 'my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for 'my_defconfig'. Considering target file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Looking for an implicit rule for '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying pattern rule with stem 'c'. Found an implicit rule for '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Finished prerequisites of target file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. No need to remake target '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for '..//configs/my_defconfig'. Pruning file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//configs/..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for '..//configs/..//configs/my_defconfig'. Pruning file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/..//configs/..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/..//configs/..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for '..//configs/..//configs/..//configs/my_defconfig'. Pruning file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/..//configs/..//configs/..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for '..//configs/..//configs/..//configs/..//configs/my_defconfig'. Pruning file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Pruning file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Pruning file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Pruning file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Pruning file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying rule prerequisite 'prepare-kconfig'. Found an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Pruning file '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Considering target file '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Looking for an implicit rule for '..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/..//configs/my_defconfig'. Trying pattern rule with stem 'my'. Trying rule prerequisite '/home/user/development/external-buildroot-tree/buildroot/output/my_output_folder/build/buildroot-config/conf'. Trying implicit prerequisite '..//configs/..//
Hello, OK, I could reproduce the issue on a minimal br2-external tree. I'll investigate. In the meantime, you can workaround this problem by using an absolute path to your br2-external tree: $ make BR2_EXTERNAL=$(cd ..; pwd) O=output/my-output my_defconfig Thanks for the report! Regards, Yann E. MORIN.
Created attachment 6846 [details] Canonicalise paths to br2-external trees Hello, Could please try the attached patch? Regards, Yann E. MORIN.
Yes, the patch works perfectly! Thanks a lot! Kind regards, Bert
Fixed in git, thanks: https://git.buildroot.net/buildroot/commit/?id=05576fca13b129da8c7186ee2307981135d3391f I will also include it in the upcoming 2016.11.2 bugfix release.