Skip to contentSkip to conversation

toolchain-external: download: add <CROSS>-cc symlink if not present

PATCH New Peter Korsgaard 2 participants 3 messages Dec 17, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 toolchain-external: download: add <CROSS>-cc symlink if not present

Fixes:
http://autobuild.buildroot.net/results/dbb/dbb3c4634d5fc726ca0b27c2dac0befbbab70912
http://autobuild.buildroot.net/results/dbb/dbb69acadc20b4bb559311348eca276c1e6343f7

Some external toolchains do not have a <CROSS>-cc binary/symlink, which is used by some packages. As a workaround, add a symlink to <CROSS>-gcc.

Notice that we can only do this for external toolchains we download ourselves, and not pre-installed ones as we might not have write access to them.

---
 toolchain/toolchain-external/pkg-toolchain-external.mk | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)
toolchain/toolchain-external/pkg-toolchain-external.mk +12 -1
index db3570d96f..753a6c5207 100644
@@ -106,6 +106,16 @@ define TOOLCHAIN_EXTERNAL_MOVE
 	mkdir -p $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
 	mv $(@D)/* $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)/
 endef
+
+# Some external toolchains do not have a <CROSS>-cc binary/symlink,
+# which is used by some packages. As a workaround, add a (relative)
+# symlink to <CROSS>-gcc
+define TOOLCHAIN_EXTERNAL_ADD_CC_SYMLINK
+	if [ ! -e $(TOOLCHAIN_EXTERNAL_CROSS)cc ]; then \
+		ln -s $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc $(TOOLCHAIN_EXTERNAL_CROSS)cc; \
+	fi
+endef
+
 endif
 
 #
@@ -515,7 +525,8 @@ ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
 $(2)_EXCLUDES = usr/lib/locale/*
 
 $(2)_POST_EXTRACT_HOOKS += \
-	TOOLCHAIN_EXTERNAL_MOVE
+	TOOLCHAIN_EXTERNAL_MOVE \
+	TOOLCHAIN_EXTERNAL_ADD_CC_SYMLINK
 endif
 
 # Checks for an already installed toolchain: check the toolchain
Signature · 1 line
2.11.0
#1 lore raw

PATCH 1/1 toolchain-external: download: add <CROSS>-cc symlink if not present

Hello,

Quoted 10 lines · Peter Korsgaard

Fixes:
http://autobuild.buildroot.net/results/dbb/dbb3c4634d5fc726ca0b27c2dac0befbbab70912
http://autobuild.buildroot.net/results/dbb/dbb69acadc20b4bb559311348eca276c1e6343f7

Some external toolchains do not have a <CROSS>-cc binary/symlink, which is used by some packages. As a workaround, add a symlink to <CROSS>-gcc.

Notice that we can only do this for external toolchains we download ourselves, and not pre-installed ones as we might not have write access to them.

This is not great, as it doesn't fix the problem in all cases.

What about doing this *after* the toolchain has been installed in $(HOST_DIR), where we have write access ?

I.E:

output/host/bin (master)$ ls -l
total 108
lrwxrwxrwx 1 thomas thomas 104 Dec 17 10:09 arm-linux-gnueabihf-addr2line -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-addr2line

lrwxrwxrwx 1 thomas thomas    97 Dec 17 10:09 arm-linux-gnueabihf-ar -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-ar
lrwxrwxrwx 1 thomas thomas    97 Dec 17 10:09 arm-linux-gnueabihf-as -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-as
lrwxrwxrwx 1 thomas thomas    17 Dec 17 10:09 arm-linux-gnueabihf-c++ -> toolchain-wrapper
lrwxrwxrwx 1 thomas thomas   102 Dec 17 10:09 arm-linux-gnueabihf-c++filt -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-c++filt
lrwxrwxrwx 1 thomas thomas    17 Dec 17 10:09 arm-linux-gnueabihf-cpp -> toolchain-wrapper
lrwxrwxrwx 1 thomas thomas   102 Dec 17 10:09 arm-linux-gnueabihf-elfedit -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-elfedit
lrwxrwxrwx 1 thomas thomas    17 Dec 17 10:09 arm-linux-gnueabihf-g++ -> toolchain-wrapper
lrwxrwxrwx 1 thomas thomas    17 Dec 17 10:09 arm-linux-gnueabihf-gcc -> toolchain-wrapper
lrwxrwxrwx 1 thomas thomas    17 Dec 17 10:09 arm-linux-gnueabihf-gcc-8.2.1 -> toolchain-wrapper

lrwxrwxrwx 1 thomas thomas 101 Dec 17 10:09 arm-linux-gnueabihf-gcc-ar -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-gcc-ar

Add a -cc -> toolchain-wrapper symlink ?

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
#2 lore raw

PATCH 1/1 toolchain-external: download: add <CROSS>-cc symlink if not present

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Hi,

Quoted 6 lines

Hello,

Quoted 4 lines · Peter Korsgaard

Fixes:
http://autobuild.buildroot.net/results/dbb/dbb3c4634d5fc726ca0b27c2dac0befbbab70912
http://autobuild.buildroot.net/results/dbb/dbb69acadc20b4bb559311348eca276c1e6343f7

Quoted 8 lines
Quoted 6 lines

Some external toolchains do not have a <CROSS>-cc binary/symlink, which is used by some packages. As a workaround, add a symlink to <CROSS>-gcc.

Notice that we can only do this for external toolchains we download ourselves, and not pre-installed ones as we might not have write access to them.

This is not great, as it doesn't fix the problem in all cases.

Correct, but I don't really see how?

Quoted 2 lines

What about doing this *after* the toolchain has been installed in $(HOST_DIR), where we have write access ?

But we do not copy a pre-installed toolchain? We only setup symlinks.

Quoted 19 lines

I.E:

output/host/bin (master)$ ls -l
total 108
lrwxrwxrwx 1 thomas thomas 104 Dec 17 10:09
arm-linux-gnueabihf-addr2line -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-addr2line lrwxrwxrwx 1 thomas thomas 97 Dec 17 10:09 arm-linux-gnueabihf-ar -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-ar lrwxrwxrwx 1 thomas thomas 97 Dec 17 10:09 arm-linux-gnueabihf-as -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-as
lrwxrwxrwx 1 thomas thomas 17 Dec 17 10:09 arm-linux-gnueabihf-c++ -> toolchain-wrapper
lrwxrwxrwx 1 thomas thomas 102 Dec 17 10:09
arm-linux-gnueabihf-c++filt -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-c++filt
lrwxrwxrwx 1 thomas thomas 17 Dec 17 10:09 arm-linux-gnueabihf-cpp -> toolchain-wrapper
lrwxrwxrwx 1 thomas thomas 102 Dec 17 10:09
arm-linux-gnueabihf-elfedit -> /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-elfedit

Quoted 4 lines
lrwxrwxrwx 1 thomas thomas    17 Dec 17 10:09 arm-linux-gnueabihf-g++ -> toolchain-wrapper
lrwxrwxrwx 1 thomas thomas    17 Dec 17 10:09 arm-linux-gnueabihf-gcc -> toolchain-wrapper
lrwxrwxrwx 1 thomas thomas    17 Dec 17 10:09 arm-linux-gnueabihf-gcc-8.2.1 -> toolchain-wrapper

lrwxrwxrwx 1 thomas thomas 101 Dec 17 10:09 arm-linux-gnueabihf-gcc-ar

->

Quoted 3 lines

/home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-gcc-ar

Add a -cc -> toolchain-wrapper symlink ?

That will not work, as it will then try to execute /home/thomas/Downloads/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf//bin/arm-linux-gnueabihf-cc (which does not exist)

Signature · 1 line
Bye, Peter Korsgaard