buildroot/toolchain
Thomas De Schampheleire bb924a0489 toolchain-external: fix broken handling of 'usr/lib/locale'
Function copy_toolchain_sysroot, which is in charge of copying the relevant
bits from the external toolchain to the staging directory, performs an rsync
loop of various directories and excludes the pattern 'usr/lib/locale' with
the intention of skipping the directory <toolchain>/usr/lib/locale.

However, while this worked in the original commit, commit
5628776c4a broke it inadvertently. The
relevant part of the diff:

-    rsync -au --chmod=Du+w --exclude 'usr/lib/locale' \
-          $${ARCH_SYSROOT_DIR}/$$i $(STAGING_DIR)/ ; \
+    rsync -au --chmod=Du+w --exclude 'usr/lib/locale' \
+          --exclude lib --exclude lib32 --exclude lib64 \
+          $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \

Notice how the source directory now contains a trailing slash, which impacts
the way the exclude rules are interpreted. Previously, when 'i' was 'usr',
the exclude of 'usr/lib/locale' would find a match. With the trailing slash,
there will never be a match, unless for a directory 'usr/usr/lib/locale'.
The right rule would have been '--exclude lib/locale'.

However, just that fix does not solve the problem in all cases, in
particular in the (common) case where ARCH_LIB_DIR is 'lib'. This is due
another change in that commit, changing the iterated values of the above
rsync:

- for i in etc $${ARCH_LIB_DIR} sbin usr ; do \
+ for i in etc $${ARCH_LIB_DIR} sbin usr usr/$${ARCH_LIB_DIR}; do \

Due to the fact that we rsync both 'usr' as 'usr/lib' (assuming ARCH_LIB_DIR
is 'lib') we need to add the correct exclude in both cases. But the exclude
is different for both. When i == 'usr', the correct exclude rule would be
'--exclude lib/locale' while when i == 'usr/lib' the correct rule would be
'--exclude locale'.

Since we would like to avoid separate cases for this, use the following
exclude: '--exclude locale/'. The trailing slash will make sure only
directories called 'locale' will match. The targeted directories are then
usr/lib/locale and usr/share/locale. The latter directory was not matched
originally, but it should not hurt changing that.

Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-03-01 23:23:35 +01:00
..
toolchain core/pkg-cmake: provide our own platform description 2017-03-01 21:56:24 +01:00
toolchain-buildroot uclibc: allow to build aarch64 internal toolchain 2017-02-03 20:58:56 +01:00
toolchain-external Merge branch 'next' 2017-03-01 17:37:33 +01:00
Config.in bfin: change default to bf532, internal toolchain !bf6xx 2016-08-27 23:07:11 +02:00
helpers.mk toolchain-external: fix broken handling of 'usr/lib/locale' 2017-03-01 23:23:35 +01:00
toolchain-common.in toolchain: add 4.10.x choice for headers 2017-02-20 21:55:55 +01:00
toolchain-wrapper.c Revert "reproducible: fix DATE/TIME macros in toolchain-wrapper" 2017-02-20 23:26:05 +01:00
toolchain-wrapper.mk arch/Config.in.mips: add support for XBurst cores 2016-11-09 21:36:34 +01:00
toolchain.mk toolchain: use the <PKG>_TARGET_FINALIZE_HOOKS 2016-07-18 23:30:46 +02:00