blob: 7f70b3ca4fd43c0b6d9d702e7bcd5c7df9ba0f28 [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
Patrick Williams7784c422022-11-17 07:29:11 -06008# Do not inhibit default deps, do_package requires binutils/gcc for
9# objcopy/gcc-nm and glibc-locale depends on virtual/libc directly.
10INHIBIT_DEFAULT_DEPS = ""
Brad Bishop6e60e8b2018-02-01 10:27:11 -050011
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION
13# is set. The idea is to avoid running localedef on the target (at first boot)
14# to decrease initial boot time and avoid localedef being killed by the OOM
15# killer which used to effectively break i18n on machines with < 128MB RAM.
16
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080017# default to disabled
Patrick Williamsc124f4f2015-09-15 14:41:29 -050018ENABLE_BINARY_LOCALE_GENERATION ?= "0"
Patrick Williams213cb262021-08-07 19:21:33 -050019ENABLE_BINARY_LOCALE_GENERATION:pn-nativesdk-glibc-locale = "1"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050020
21#enable locale generation on these arches
22# BINARY_LOCALE_ARCHES is a space separated list of regular expressions
Brad Bishop19323692019-04-05 15:28:33 -040023BINARY_LOCALE_ARCHES ?= "arc arm.* aarch64 i[3-6]86 x86_64 powerpc mips mips64 riscv32 riscv64"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050024
25# set "1" to use cross-localedef for locale generation
26# set "0" for qemu emulation of native localedef for locale generation
27LOCALE_GENERATION_WITH_CROSS-LOCALEDEF = "1"
28
29PROVIDES = "virtual/libc-locale"
30
31PACKAGES = "localedef ${PN}-dbg"
32
33PACKAGES_DYNAMIC = "^locale-base-.* \
34 ^glibc-gconv-.* ^glibc-charmap-.* ^glibc-localedata-.* ^glibc-binary-localedata-.* \
Patrick Williamsc124f4f2015-09-15 14:41:29 -050035 ^${MLPREFIX}glibc-gconv$"
36
37# Create a glibc-binaries package
Patrick Williams213cb262021-08-07 19:21:33 -050038ALLOW_EMPTY:${BPN}-binaries = "1"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050039PACKAGES += "${BPN}-binaries"
Patrick Williams213cb262021-08-07 19:21:33 -050040RRECOMMENDS:${BPN}-binaries = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-binary") != -1])}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050041
42# Create a glibc-charmaps package
Patrick Williams213cb262021-08-07 19:21:33 -050043ALLOW_EMPTY:${BPN}-charmaps = "1"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050044PACKAGES += "${BPN}-charmaps"
Patrick Williams213cb262021-08-07 19:21:33 -050045RRECOMMENDS:${BPN}-charmaps = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-charmap") != -1])}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050046
47# Create a glibc-gconvs package
Patrick Williams213cb262021-08-07 19:21:33 -050048ALLOW_EMPTY:${BPN}-gconvs = "1"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050049PACKAGES += "${BPN}-gconvs"
Patrick Williams213cb262021-08-07 19:21:33 -050050RRECOMMENDS:${BPN}-gconvs = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-gconv") != -1])}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050051
52# Create a glibc-localedatas package
Patrick Williams213cb262021-08-07 19:21:33 -050053ALLOW_EMPTY:${BPN}-localedatas = "1"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050054PACKAGES += "${BPN}-localedatas"
Patrick Williams213cb262021-08-07 19:21:33 -050055RRECOMMENDS:${BPN}-localedatas = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-localedata") != -1])}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050056
Patrick Williams213cb262021-08-07 19:21:33 -050057DESCRIPTION:localedef = "glibc: compile locale definition files"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050058
59# glibc-gconv is dynamically added into PACKAGES, thus
Patrick Williams213cb262021-08-07 19:21:33 -050060# FILES:glibc-gconv will not be automatically extended in multilib.
61# Explicitly add ${MLPREFIX} for FILES:glibc-gconv.
62FILES:${MLPREFIX}glibc-gconv = "${libdir}/gconv/*"
63FILES:localedef = "${bindir}/localedef"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050064
Brad Bishop6e60e8b2018-02-01 10:27:11 -050065LOCALETREESRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050066
Brad Bishop19323692019-04-05 15:28:33 -040067copy_locale_files() {
68 local dir=$1 mode=$2
69
70 [ -e "${LOCALETREESRC}$dir" ] || return 0
71
72 for d in . $(find "${LOCALETREESRC}$dir" -type d -printf '%P '); do
73 install -d ${D}$dir/$d
74 find "${LOCALETREESRC}$dir/$d" -maxdepth 1 -type f \
75 -exec install -m $mode -t "${D}$dir/$d" {} \;
76 done
77}
78
79do_install() {
80 copy_locale_files ${bindir} 0755
81 copy_locale_files ${localedir} 0644
82 if [ ${PACKAGE_NO_GCONV} -eq 0 ]; then
83 copy_locale_files ${libdir}/gconv 0755
84 copy_locale_files ${datadir}/i18n 0644
Patrick Williamsc124f4f2015-09-15 14:41:29 -050085 fi
Andrew Geissler87f5cff2022-09-30 13:13:31 -050086 # Remove empty dirs in libdir when gconv or locales are not copied
87 find ${D}${libdir} -type d -empty -delete
Brad Bishop19323692019-04-05 15:28:33 -040088 copy_locale_files ${datadir}/locale 0644
89 install -m 0644 ${LOCALETREESRC}/SUPPORTED ${WORKDIR}/SUPPORTED
Patrick Williamsc124f4f2015-09-15 14:41:29 -050090}
91
92inherit libc-package
93
94BBCLASSEXTEND = "nativesdk"
Brad Bishop96ff1982019-08-19 13:50:42 -040095
96# Don't scan for CVEs as glibc will be scanned
97CVE_PRODUCT = ""