Hi Vineet, On Mon, 2018-11-12 at 23:22 +0000, Vineet Gupta wrote: > > On 11/12/18 2:44 PM, Alexey Brodkin wrote: > > With this it's possible to build locale data for ARC > > and not do it instead on the first boot. > > > > Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com> > > --- > > meta/classes/libc-package.bbclass | 2 ++ > > meta/lib/oe/package_manager.py | 2 ++ > > meta/recipes-core/glibc/glibc-locale.inc | 2 +- > > 3 files changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass > > index 9d09c7be6a..4c694ab5e2 100644 > > --- a/meta/classes/libc-package.bbclass > > +++ b/meta/classes/libc-package.bbclass > > @@ -242,6 +242,8 @@ python package_do_split_gconvs () { > > if use_cross_localedef == "1": > > target_arch = d.getVar('TARGET_ARCH') > > locale_arch_options = { \ > > + "arc": " --uint32-align=4 --little-endian ", \ > > + "arceb": " --uint32-align=4 --big-endian ", \ > > "arm": " --uint32-align=4 --little-endian ", \ > > "armeb": " --uint32-align=4 --big-endian ", \ > > "aarch64": " --uint32-align=4 --little-endian ", \ > > diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py > > index 882e7c429f..aa4de6e7c3 100644 > > --- a/meta/lib/oe/package_manager.py > > +++ b/meta/lib/oe/package_manager.py > > @@ -94,6 +94,8 @@ def generate_locale_archive(d, rootfs, target_arch, localedir): > > # Pretty sure we don't need this for locale archive generation but > > # keeping it to be safe... > > locale_arch_options = { \ > > + "arc": ["--uint32-align=4", "--little-endian"], > > + "arceb": ["--uint32-align=4", "--big-endian"], > > "arm": ["--uint32-align=4", "--little-endian"], > > "armeb": ["--uint32-align=4", "--big-endian"], > > "aarch64": ["--uint32-align=4", "--little-endian"], > > diff --git a/meta/recipes-core/glibc/glibc-locale.inc b/meta/recipes-core/glibc/glibc-locale.inc > > index 1b676dc26e..57b465dd5d 100644 > > --- a/meta/recipes-core/glibc/glibc-locale.inc > > +++ b/meta/recipes-core/glibc/glibc-locale.inc > > @@ -27,7 +27,7 @@ ENABLE_BINARY_LOCALE_GENERATION_pn-nativesdk-glibc-locale = "1" > > > > #enable locale generation on these arches > > # BINARY_LOCALE_ARCHES is a space separated list of regular expressions > > -BINARY_LOCALE_ARCHES ?= "arm.* aarch64 i[3-6]86 x86_64 powerpc mips mips64 riscv32 riscv64" > > +BINARY_LOCALE_ARCHES ?= "arc arm.* aarch64 i[3-6]86 x86_64 powerpc mips mips64 riscv32 riscv64" > > > > # set "1" to use cross-localedef for locale generation > > # set "0" for qemu emulation of native localedef for locale generation > > Interesting: How do we do that for other buildsystems / buildroot or when building > by hand ? 1. Buildroot In buildroot we do pretty-much the same things, see https://git.buildroot.org/buildroot/tree/Makefile#n640 We build localedef (with help of "host-localedef" package) and then generate requested locales for the target. 2. Crosstool-NG Here we just build locales on host and copy them over to built cross-toolchain, see https://github.com/crosstool-ng/crosstool-ng/blob/master/scripts/build/libc/glibc.sh#L482 The problem here (and this is explicitly mentioned in the script above) - this locale only makes sense if host and target have the same uint32_t alignment and endianess, see https://github.com/crosstool-ng/crosstool-ng/blob/master/scripts/build/libc/glibc.sh#L533 So if we're lucky we may get useful locales. Though there's another caveat: Glibc 2.28 requires GCC 4.9+ which means you cannot build locales for target on CentOS/RHEL machine any longer as GCC 4.8 is used by default. 3. Manually you're free to do whatever pleases you but since we cross-compile you'd need to use one of options discussed above: a) Use localedef (http://www.pengutronix.de/software/ptxdist/temporary-src/localedef-eglibc-2.14.1-r17443-ptx1.tar.bz2) b) Build natively on host and install on target -Alexey