blob: f033635bd0d3127c16727e844f635e9887b42693 [file] [log] [blame]
Brad Bishop6e60e8b2018-02-01 10:27:11 -05001require glibc-collateral.inc
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002
3SUMMARY = "Locale data from glibc"
4
5BPN = "glibc"
6LOCALEBASEPN = "${MLPREFIX}glibc"
7
8# glibc-collateral.inc inhibits all default deps, but do_package needs objcopy
9# ERROR: objcopy failed with exit code 127 (cmd was 'i586-webos-linux-objcopy' --only-keep-debug 'glibc-locale/2.17-r0/package/usr/lib/gconv/IBM1166.so' 'glibc-locale/2.17-r0/package/usr/lib/gconv/.debug/IBM1166.so')
10# ERROR: Function failed: split_and_strip_files
11BINUTILSDEP = "virtual/${MLPREFIX}${TARGET_PREFIX}binutils:do_populate_sysroot"
12BINUTILSDEP_class-nativesdk = "virtual/${TARGET_PREFIX}binutils-crosssdk:do_populate_sysroot"
13do_package[depends] += "${BINUTILSDEP}"
14
Brad Bishop15ae2502019-06-18 21:44:24 -040015DEPENDS += "virtual/libc"
Brad Bishop6e60e8b2018-02-01 10:27:11 -050016
Patrick Williamsc124f4f2015-09-15 14:41:29 -050017# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION
18# is set. The idea is to avoid running localedef on the target (at first boot)
19# to decrease initial boot time and avoid localedef being killed by the OOM
20# killer which used to effectively break i18n on machines with < 128MB RAM.
21
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080022# default to disabled
Patrick Williamsc124f4f2015-09-15 14:41:29 -050023ENABLE_BINARY_LOCALE_GENERATION ?= "0"
Patrick Williamsc0f7c042017-02-23 20:41:17 -060024ENABLE_BINARY_LOCALE_GENERATION_pn-nativesdk-glibc-locale = "1"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050025
26#enable locale generation on these arches
27# BINARY_LOCALE_ARCHES is a space separated list of regular expressions
Brad Bishop19323692019-04-05 15:28:33 -040028BINARY_LOCALE_ARCHES ?= "arc arm.* aarch64 i[3-6]86 x86_64 powerpc mips mips64 riscv32 riscv64"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050029
30# set "1" to use cross-localedef for locale generation
31# set "0" for qemu emulation of native localedef for locale generation
32LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1"
33
34PROVIDES = "virtual/libc-locale"
35
36PACKAGES = "localedef ${PN}-dbg"
37
38PACKAGES_DYNAMIC = "^locale-base-.* \
39 ^glibc-gconv-.* ^glibc-charmap-.* ^glibc-localedata-.* ^glibc-binary-localedata-.* \
Patrick Williamsc124f4f2015-09-15 14:41:29 -050040 ^${MLPREFIX}glibc-gconv$"
41
42# Create a glibc-binaries package
43ALLOW_EMPTY_${BPN}-binaries = "1"
44PACKAGES += "${BPN}-binaries"
Brad Bishop6e60e8b2018-02-01 10:27:11 -050045RRECOMMENDS_${BPN}-binaries = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-binary") != -1])}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050046
47# Create a glibc-charmaps package
48ALLOW_EMPTY_${BPN}-charmaps = "1"
49PACKAGES += "${BPN}-charmaps"
Brad Bishop6e60e8b2018-02-01 10:27:11 -050050RRECOMMENDS_${BPN}-charmaps = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-charmap") != -1])}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050051
52# Create a glibc-gconvs package
53ALLOW_EMPTY_${BPN}-gconvs = "1"
54PACKAGES += "${BPN}-gconvs"
Brad Bishop6e60e8b2018-02-01 10:27:11 -050055RRECOMMENDS_${BPN}-gconvs = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-gconv") != -1])}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050056
57# Create a glibc-localedatas package
58ALLOW_EMPTY_${BPN}-localedatas = "1"
59PACKAGES += "${BPN}-localedatas"
Brad Bishop6e60e8b2018-02-01 10:27:11 -050060RRECOMMENDS_${BPN}-localedatas = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-localedata") != -1])}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050061
62DESCRIPTION_localedef = "glibc: compile locale definition files"
63
64# glibc-gconv is dynamically added into PACKAGES, thus
65# FILES_glibc-gconv will not be automatically extended in multilib.
66# Explicitly add ${MLPREFIX} for FILES_glibc-gconv.
67FILES_${MLPREFIX}glibc-gconv = "${libdir}/gconv/*"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050068FILES_localedef = "${bindir}/localedef"
69
Brad Bishop6e60e8b2018-02-01 10:27:11 -050070LOCALETREESRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050071
Brad Bishop19323692019-04-05 15:28:33 -040072copy_locale_files() {
73 local dir=$1 mode=$2
74
75 [ -e "${LOCALETREESRC}$dir" ] || return 0
76
77 for d in . $(find "${LOCALETREESRC}$dir" -type d -printf '%P '); do
78 install -d ${D}$dir/$d
79 find "${LOCALETREESRC}$dir/$d" -maxdepth 1 -type f \
80 -exec install -m $mode -t "${D}$dir/$d" {} \;
81 done
82}
83
84do_install() {
85 copy_locale_files ${bindir} 0755
86 copy_locale_files ${localedir} 0644
87 if [ ${PACKAGE_NO_GCONV} -eq 0 ]; then
88 copy_locale_files ${libdir}/gconv 0755
89 copy_locale_files ${datadir}/i18n 0644
Patrick Williamsc124f4f2015-09-15 14:41:29 -050090 fi
Brad Bishop19323692019-04-05 15:28:33 -040091 copy_locale_files ${datadir}/locale 0644
92 install -m 0644 ${LOCALETREESRC}/SUPPORTED ${WORKDIR}/SUPPORTED
Patrick Williamsc124f4f2015-09-15 14:41:29 -050093}
94
95inherit libc-package
96
97BBCLASSEXTEND = "nativesdk"