summaryrefslogtreecommitdiffstats
path: root/meta/recipes-extended/timezone/tzdata.bb
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-extended/timezone/tzdata.bb')
-rw-r--r--meta/recipes-extended/timezone/tzdata.bb202
1 files changed, 202 insertions, 0 deletions
diff --git a/meta/recipes-extended/timezone/tzdata.bb b/meta/recipes-extended/timezone/tzdata.bb
new file mode 100644
index 0000000000..7f4322d867
--- /dev/null
+++ b/meta/recipes-extended/timezone/tzdata.bb
@@ -0,0 +1,202 @@
+require timezone.inc
+
+DEPENDS = "tzcode-native"
+
+inherit allarch
+
+S = "${WORKDIR}"
+
+DEFAULT_TIMEZONE ?= "Universal"
+INSTALL_TIMEZONE_FILE ?= "1"
+
+TZONES = " \
+ africa antarctica asia australasia europe northamerica southamerica \
+ factory etcetera backward \
+"
+
+# "slim" is the default since 2020b
+# "fat" is needed by e.g. MariaDB's mysql_tzinfo_to_sql
+ZIC_FMT ?= "slim"
+
+do_compile() {
+ for zone in ${TZONES}; do
+ ${STAGING_BINDIR_NATIVE}/zic -b ${ZIC_FMT} -d ${WORKDIR}${datadir}/zoneinfo -L /dev/null ${S}/${zone}
+ ${STAGING_BINDIR_NATIVE}/zic -b ${ZIC_FMT} -d ${WORKDIR}${datadir}/zoneinfo/posix -L /dev/null ${S}/${zone}
+ ${STAGING_BINDIR_NATIVE}/zic -b ${ZIC_FMT} -d ${WORKDIR}${datadir}/zoneinfo/right -L ${S}/leapseconds ${S}/${zone}
+ done
+}
+
+do_install() {
+ install -d ${D}$exec_prefix ${D}${datadir}/zoneinfo
+ cp -pPR ${WORKDIR}$exec_prefix ${D}${base_prefix}
+ # libc is removing zoneinfo files from package
+ cp -pP "${S}/zone.tab" ${D}${datadir}/zoneinfo
+ cp -pP "${S}/zone1970.tab" ${D}${datadir}/zoneinfo
+ cp -pP "${S}/iso3166.tab" ${D}${datadir}/zoneinfo
+ cp -pP "${S}/leapseconds" ${D}${datadir}/zoneinfo
+ cp -pP "${S}/leap-seconds.list" ${D}${datadir}/zoneinfo
+
+ # Install default timezone
+ if [ -e ${D}${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ]; then
+ install -d ${D}${sysconfdir}
+ if [ "${INSTALL_TIMEZONE_FILE}" = "1" ]; then
+ echo ${DEFAULT_TIMEZONE} > ${D}${sysconfdir}/timezone
+ fi
+ ln -s ${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ${D}${sysconfdir}/localtime
+ else
+ bberror "DEFAULT_TIMEZONE is set to an invalid value."
+ exit 1
+ fi
+
+ chown -R root:root ${D}
+}
+
+pkg_postinst:${PN}() {
+ etc_lt="$D${sysconfdir}/localtime"
+ src="$D${sysconfdir}/timezone"
+
+ if [ -e "$src" ]; then
+ tz=$(sed -e 's:#.*::' -e 's:[[:space:]]*::g' -e '/^$/d' "$src")
+ fi
+
+ if [ ! -z "$tz" -a ! -e "$D${datadir}/zoneinfo/$tz" ]; then
+ echo "You have an invalid TIMEZONE setting in $src"
+ echo "Your $etc_lt has been reset to Universal; enjoy!"
+ tz="Universal"
+ echo "Updating $etc_lt with $D${datadir}/zoneinfo/$tz"
+ if [ -L "$etc_lt" ]; then
+ rm -f "$etc_lt"
+ fi
+ ln -s "${datadir}/zoneinfo/$tz" "$etc_lt"
+ fi
+}
+
+# Packages are primarily organized by directory with a major city in most time
+# zones in the base package
+TZ_PACKAGES = " \
+ tzdata-core tzdata-misc tzdata-posix tzdata-right tzdata-africa \
+ tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
+ tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific \
+"
+PACKAGES = "${TZ_PACKAGES} ${PN}"
+
+FILES:tzdata-africa += "${datadir}/zoneinfo/Africa"
+
+FILES:tzdata-americas += " \
+ ${datadir}/zoneinfo/America \
+ ${datadir}/zoneinfo/US \
+ ${datadir}/zoneinfo/Brazil \
+ ${datadir}/zoneinfo/Canada \
+ ${datadir}/zoneinfo/Mexico \
+ ${datadir}/zoneinfo/Chile \
+"
+
+FILES:tzdata-antarctica += "${datadir}/zoneinfo/Antarctica"
+
+FILES:tzdata-arctic += "${datadir}/zoneinfo/Arctic"
+
+FILES:tzdata-asia += " \
+ ${datadir}/zoneinfo/Asia \
+ ${datadir}/zoneinfo/Indian \
+ ${datadir}/zoneinfo/Mideast \
+"
+
+FILES:tzdata-atlantic += "${datadir}/zoneinfo/Atlantic"
+
+FILES:tzdata-australia += "${datadir}/zoneinfo/Australia"
+
+FILES:tzdata-europe += "${datadir}/zoneinfo/Europe"
+
+FILES:tzdata-pacific += "${datadir}/zoneinfo/Pacific"
+
+FILES:tzdata-posix += "${datadir}/zoneinfo/posix"
+
+FILES:tzdata-right += "${datadir}/zoneinfo/right"
+
+FILES:tzdata-misc += " \
+ ${datadir}/zoneinfo/Cuba \
+ ${datadir}/zoneinfo/Egypt \
+ ${datadir}/zoneinfo/Eire \
+ ${datadir}/zoneinfo/Factory \
+ ${datadir}/zoneinfo/GB-Eire \
+ ${datadir}/zoneinfo/Hongkong \
+ ${datadir}/zoneinfo/Iceland \
+ ${datadir}/zoneinfo/Iran \
+ ${datadir}/zoneinfo/Israel \
+ ${datadir}/zoneinfo/Jamaica \
+ ${datadir}/zoneinfo/Japan \
+ ${datadir}/zoneinfo/Kwajalein \
+ ${datadir}/zoneinfo/Libya \
+ ${datadir}/zoneinfo/Navajo \
+ ${datadir}/zoneinfo/Poland \
+ ${datadir}/zoneinfo/Portugal \
+ ${datadir}/zoneinfo/Singapore \
+ ${datadir}/zoneinfo/Turkey \
+"
+
+FILES:tzdata-core += " \
+ ${sysconfdir}/localtime \
+ ${sysconfdir}/timezone \
+ ${datadir}/zoneinfo/leapseconds \
+ ${datadir}/zoneinfo/leap-seconds.list \
+ ${datadir}/zoneinfo/Pacific/Honolulu \
+ ${datadir}/zoneinfo/America/Anchorage \
+ ${datadir}/zoneinfo/America/Los_Angeles \
+ ${datadir}/zoneinfo/America/Denver \
+ ${datadir}/zoneinfo/America/Chicago \
+ ${datadir}/zoneinfo/America/New_York \
+ ${datadir}/zoneinfo/America/Caracas \
+ ${datadir}/zoneinfo/America/Sao_Paulo \
+ ${datadir}/zoneinfo/Europe/London \
+ ${datadir}/zoneinfo/Europe/Paris \
+ ${datadir}/zoneinfo/Africa/Cairo \
+ ${datadir}/zoneinfo/Europe/Moscow \
+ ${datadir}/zoneinfo/Asia/Dubai \
+ ${datadir}/zoneinfo/Asia/Karachi \
+ ${datadir}/zoneinfo/Asia/Dhaka \
+ ${datadir}/zoneinfo/Asia/Bangkok \
+ ${datadir}/zoneinfo/Asia/Hong_Kong \
+ ${datadir}/zoneinfo/Asia/Tokyo \
+ ${datadir}/zoneinfo/Australia/Darwin \
+ ${datadir}/zoneinfo/Australia/Adelaide \
+ ${datadir}/zoneinfo/Australia/Brisbane \
+ ${datadir}/zoneinfo/Australia/Sydney \
+ ${datadir}/zoneinfo/Pacific/Noumea \
+ ${datadir}/zoneinfo/CET \
+ ${datadir}/zoneinfo/CST6CDT \
+ ${datadir}/zoneinfo/EET \
+ ${datadir}/zoneinfo/EST \
+ ${datadir}/zoneinfo/EST5EDT \
+ ${datadir}/zoneinfo/GB \
+ ${datadir}/zoneinfo/GMT \
+ ${datadir}/zoneinfo/GMT+0 \
+ ${datadir}/zoneinfo/GMT-0 \
+ ${datadir}/zoneinfo/GMT0 \
+ ${datadir}/zoneinfo/Greenwich \
+ ${datadir}/zoneinfo/HST \
+ ${datadir}/zoneinfo/MET \
+ ${datadir}/zoneinfo/MST \
+ ${datadir}/zoneinfo/MST7MDT \
+ ${datadir}/zoneinfo/NZ \
+ ${datadir}/zoneinfo/NZ-CHAT \
+ ${datadir}/zoneinfo/PRC \
+ ${datadir}/zoneinfo/PST8PDT \
+ ${datadir}/zoneinfo/ROC \
+ ${datadir}/zoneinfo/ROK \
+ ${datadir}/zoneinfo/UCT \
+ ${datadir}/zoneinfo/UTC \
+ ${datadir}/zoneinfo/Universal \
+ ${datadir}/zoneinfo/W-SU \
+ ${datadir}/zoneinfo/WET \
+ ${datadir}/zoneinfo/Zulu \
+ ${datadir}/zoneinfo/zone.tab \
+ ${datadir}/zoneinfo/zone1970.tab \
+ ${datadir}/zoneinfo/iso3166.tab \
+ ${datadir}/zoneinfo/Etc \
+"
+
+CONFFILES:tzdata-core = "${sysconfdir}/localtime ${sysconfdir}/timezone"
+
+ALLOW_EMPTY:${PN} = "1"
+
+RDEPENDS:${PN} = "${TZ_PACKAGES}"