xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-extended/timezone/tzdata.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunrequire timezone.inc
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunDEPENDS = "tzcode-native"
4*4882a593Smuzhiyun
5*4882a593Smuzhiyuninherit allarch
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunDEFAULT_TIMEZONE ?= "Universal"
8*4882a593SmuzhiyunINSTALL_TIMEZONE_FILE ?= "1"
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunTZONES = " \
11*4882a593Smuzhiyun    africa antarctica asia australasia europe northamerica southamerica \
12*4882a593Smuzhiyun    factory etcetera backward \
13*4882a593Smuzhiyun"
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun# "slim" is the default since 2020b
16*4882a593Smuzhiyun# "fat" is needed by e.g. MariaDB's mysql_tzinfo_to_sql
17*4882a593SmuzhiyunZIC_FMT ?= "slim"
18*4882a593Smuzhiyun
19*4882a593Smuzhiyundo_configure[cleandirs] = "${B}"
20*4882a593SmuzhiyunB = "${WORKDIR}/build"
21*4882a593Smuzhiyun
22*4882a593Smuzhiyundo_compile() {
23*4882a593Smuzhiyun	for zone in ${TZONES}; do
24*4882a593Smuzhiyun		${STAGING_BINDIR_NATIVE}/zic -b ${ZIC_FMT} -d ${B}/zoneinfo -L /dev/null ${S}/${zone}
25*4882a593Smuzhiyun		${STAGING_BINDIR_NATIVE}/zic -b ${ZIC_FMT} -d ${B}/zoneinfo/posix -L /dev/null ${S}/${zone}
26*4882a593Smuzhiyun		${STAGING_BINDIR_NATIVE}/zic -b ${ZIC_FMT} -d ${B}/zoneinfo/right -L ${S}/leapseconds ${S}/${zone}
27*4882a593Smuzhiyun	done
28*4882a593Smuzhiyun}
29*4882a593Smuzhiyun
30*4882a593Smuzhiyundo_install() {
31*4882a593Smuzhiyun	install -d ${D}${datadir}/zoneinfo
32*4882a593Smuzhiyun	cp -pPR ${B}/zoneinfo/* ${D}${datadir}/zoneinfo
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun	# libc is removing zoneinfo files from package
35*4882a593Smuzhiyun	cp -pP "${S}/zone.tab" ${D}${datadir}/zoneinfo
36*4882a593Smuzhiyun	cp -pP "${S}/zone1970.tab" ${D}${datadir}/zoneinfo
37*4882a593Smuzhiyun	cp -pP "${S}/iso3166.tab" ${D}${datadir}/zoneinfo
38*4882a593Smuzhiyun	cp -pP "${S}/leapseconds" ${D}${datadir}/zoneinfo
39*4882a593Smuzhiyun	cp -pP "${S}/leap-seconds.list" ${D}${datadir}/zoneinfo
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun	# Install default timezone
42*4882a593Smuzhiyun	if [ -e ${D}${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ]; then
43*4882a593Smuzhiyun		install -d ${D}${sysconfdir}
44*4882a593Smuzhiyun		if [ "${INSTALL_TIMEZONE_FILE}" = "1" ]; then
45*4882a593Smuzhiyun			echo ${DEFAULT_TIMEZONE} > ${D}${sysconfdir}/timezone
46*4882a593Smuzhiyun		fi
47*4882a593Smuzhiyun		ln -s ${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ${D}${sysconfdir}/localtime
48*4882a593Smuzhiyun	else
49*4882a593Smuzhiyun		bberror "DEFAULT_TIMEZONE is set to an invalid value."
50*4882a593Smuzhiyun		exit 1
51*4882a593Smuzhiyun	fi
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun	chown -R root:root ${D}
54*4882a593Smuzhiyun}
55*4882a593Smuzhiyun
56*4882a593Smuzhiyunpkg_postinst:${PN}() {
57*4882a593Smuzhiyun	etc_lt="$D${sysconfdir}/localtime"
58*4882a593Smuzhiyun	src="$D${sysconfdir}/timezone"
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun	if [ -e "$src" ]; then
61*4882a593Smuzhiyun		tz=$(sed -e 's:#.*::' -e 's:[[:space:]]*::g' -e '/^$/d' "$src")
62*4882a593Smuzhiyun	fi
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun	if [ ! -z "$tz" -a ! -e "$D${datadir}/zoneinfo/$tz" ]; then
65*4882a593Smuzhiyun		echo "You have an invalid TIMEZONE setting in $src"
66*4882a593Smuzhiyun		echo "Your $etc_lt has been reset to Universal; enjoy!"
67*4882a593Smuzhiyun		tz="Universal"
68*4882a593Smuzhiyun		echo "Updating $etc_lt with $D${datadir}/zoneinfo/$tz"
69*4882a593Smuzhiyun		if [ -L "$etc_lt" ]; then
70*4882a593Smuzhiyun			rm -f "$etc_lt"
71*4882a593Smuzhiyun		fi
72*4882a593Smuzhiyun		ln -s "${datadir}/zoneinfo/$tz" "$etc_lt"
73*4882a593Smuzhiyun	fi
74*4882a593Smuzhiyun}
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun# Packages are primarily organized by directory with a major city in most time
77*4882a593Smuzhiyun# zones in the base package
78*4882a593SmuzhiyunTZ_PACKAGES = " \
79*4882a593Smuzhiyun    tzdata-core tzdata-misc tzdata-posix tzdata-right tzdata-africa \
80*4882a593Smuzhiyun    tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
81*4882a593Smuzhiyun    tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific \
82*4882a593Smuzhiyun"
83*4882a593SmuzhiyunPACKAGES = "${TZ_PACKAGES} ${PN}"
84*4882a593Smuzhiyun
85*4882a593SmuzhiyunFILES:tzdata-africa += "${datadir}/zoneinfo/Africa"
86*4882a593Smuzhiyun
87*4882a593SmuzhiyunFILES:tzdata-americas += " \
88*4882a593Smuzhiyun    ${datadir}/zoneinfo/America \
89*4882a593Smuzhiyun    ${datadir}/zoneinfo/US \
90*4882a593Smuzhiyun    ${datadir}/zoneinfo/Brazil \
91*4882a593Smuzhiyun    ${datadir}/zoneinfo/Canada \
92*4882a593Smuzhiyun    ${datadir}/zoneinfo/Mexico \
93*4882a593Smuzhiyun    ${datadir}/zoneinfo/Chile \
94*4882a593Smuzhiyun"
95*4882a593Smuzhiyun
96*4882a593SmuzhiyunFILES:tzdata-antarctica += "${datadir}/zoneinfo/Antarctica"
97*4882a593Smuzhiyun
98*4882a593SmuzhiyunFILES:tzdata-arctic += "${datadir}/zoneinfo/Arctic"
99*4882a593Smuzhiyun
100*4882a593SmuzhiyunFILES:tzdata-asia += " \
101*4882a593Smuzhiyun    ${datadir}/zoneinfo/Asia \
102*4882a593Smuzhiyun    ${datadir}/zoneinfo/Indian \
103*4882a593Smuzhiyun    ${datadir}/zoneinfo/Mideast \
104*4882a593Smuzhiyun"
105*4882a593Smuzhiyun
106*4882a593SmuzhiyunFILES:tzdata-atlantic += "${datadir}/zoneinfo/Atlantic"
107*4882a593Smuzhiyun
108*4882a593SmuzhiyunFILES:tzdata-australia += "${datadir}/zoneinfo/Australia"
109*4882a593Smuzhiyun
110*4882a593SmuzhiyunFILES:tzdata-europe += "${datadir}/zoneinfo/Europe"
111*4882a593Smuzhiyun
112*4882a593SmuzhiyunFILES:tzdata-pacific += "${datadir}/zoneinfo/Pacific"
113*4882a593Smuzhiyun
114*4882a593SmuzhiyunFILES:tzdata-posix += "${datadir}/zoneinfo/posix"
115*4882a593Smuzhiyun
116*4882a593SmuzhiyunFILES:tzdata-right += "${datadir}/zoneinfo/right"
117*4882a593Smuzhiyun
118*4882a593SmuzhiyunFILES:tzdata-misc += " \
119*4882a593Smuzhiyun    ${datadir}/zoneinfo/Cuba \
120*4882a593Smuzhiyun    ${datadir}/zoneinfo/Egypt \
121*4882a593Smuzhiyun    ${datadir}/zoneinfo/Eire \
122*4882a593Smuzhiyun    ${datadir}/zoneinfo/Factory \
123*4882a593Smuzhiyun    ${datadir}/zoneinfo/GB-Eire \
124*4882a593Smuzhiyun    ${datadir}/zoneinfo/Hongkong \
125*4882a593Smuzhiyun    ${datadir}/zoneinfo/Iceland \
126*4882a593Smuzhiyun    ${datadir}/zoneinfo/Iran \
127*4882a593Smuzhiyun    ${datadir}/zoneinfo/Israel \
128*4882a593Smuzhiyun    ${datadir}/zoneinfo/Jamaica \
129*4882a593Smuzhiyun    ${datadir}/zoneinfo/Japan \
130*4882a593Smuzhiyun    ${datadir}/zoneinfo/Kwajalein \
131*4882a593Smuzhiyun    ${datadir}/zoneinfo/Libya \
132*4882a593Smuzhiyun    ${datadir}/zoneinfo/Navajo \
133*4882a593Smuzhiyun    ${datadir}/zoneinfo/Poland \
134*4882a593Smuzhiyun    ${datadir}/zoneinfo/Portugal \
135*4882a593Smuzhiyun    ${datadir}/zoneinfo/Singapore \
136*4882a593Smuzhiyun    ${datadir}/zoneinfo/Turkey \
137*4882a593Smuzhiyun"
138*4882a593Smuzhiyun
139*4882a593SmuzhiyunFILES:tzdata-core += " \
140*4882a593Smuzhiyun    ${sysconfdir}/localtime \
141*4882a593Smuzhiyun    ${sysconfdir}/timezone \
142*4882a593Smuzhiyun    ${datadir}/zoneinfo/leapseconds \
143*4882a593Smuzhiyun    ${datadir}/zoneinfo/leap-seconds.list \
144*4882a593Smuzhiyun    ${datadir}/zoneinfo/Pacific/Honolulu \
145*4882a593Smuzhiyun    ${datadir}/zoneinfo/America/Anchorage \
146*4882a593Smuzhiyun    ${datadir}/zoneinfo/America/Los_Angeles \
147*4882a593Smuzhiyun    ${datadir}/zoneinfo/America/Denver \
148*4882a593Smuzhiyun    ${datadir}/zoneinfo/America/Chicago \
149*4882a593Smuzhiyun    ${datadir}/zoneinfo/America/New_York \
150*4882a593Smuzhiyun    ${datadir}/zoneinfo/America/Caracas \
151*4882a593Smuzhiyun    ${datadir}/zoneinfo/America/Sao_Paulo \
152*4882a593Smuzhiyun    ${datadir}/zoneinfo/Europe/London \
153*4882a593Smuzhiyun    ${datadir}/zoneinfo/Europe/Paris \
154*4882a593Smuzhiyun    ${datadir}/zoneinfo/Africa/Cairo \
155*4882a593Smuzhiyun    ${datadir}/zoneinfo/Europe/Moscow \
156*4882a593Smuzhiyun    ${datadir}/zoneinfo/Asia/Dubai \
157*4882a593Smuzhiyun    ${datadir}/zoneinfo/Asia/Karachi \
158*4882a593Smuzhiyun    ${datadir}/zoneinfo/Asia/Dhaka \
159*4882a593Smuzhiyun    ${datadir}/zoneinfo/Asia/Bangkok \
160*4882a593Smuzhiyun    ${datadir}/zoneinfo/Asia/Hong_Kong \
161*4882a593Smuzhiyun    ${datadir}/zoneinfo/Asia/Tokyo \
162*4882a593Smuzhiyun    ${datadir}/zoneinfo/Australia/Darwin \
163*4882a593Smuzhiyun    ${datadir}/zoneinfo/Australia/Adelaide \
164*4882a593Smuzhiyun    ${datadir}/zoneinfo/Australia/Brisbane \
165*4882a593Smuzhiyun    ${datadir}/zoneinfo/Australia/Sydney \
166*4882a593Smuzhiyun    ${datadir}/zoneinfo/Pacific/Noumea \
167*4882a593Smuzhiyun    ${datadir}/zoneinfo/CET \
168*4882a593Smuzhiyun    ${datadir}/zoneinfo/CST6CDT \
169*4882a593Smuzhiyun    ${datadir}/zoneinfo/EET \
170*4882a593Smuzhiyun    ${datadir}/zoneinfo/EST \
171*4882a593Smuzhiyun    ${datadir}/zoneinfo/EST5EDT \
172*4882a593Smuzhiyun    ${datadir}/zoneinfo/GB \
173*4882a593Smuzhiyun    ${datadir}/zoneinfo/GMT \
174*4882a593Smuzhiyun    ${datadir}/zoneinfo/GMT+0 \
175*4882a593Smuzhiyun    ${datadir}/zoneinfo/GMT-0 \
176*4882a593Smuzhiyun    ${datadir}/zoneinfo/GMT0 \
177*4882a593Smuzhiyun    ${datadir}/zoneinfo/Greenwich \
178*4882a593Smuzhiyun    ${datadir}/zoneinfo/HST \
179*4882a593Smuzhiyun    ${datadir}/zoneinfo/MET \
180*4882a593Smuzhiyun    ${datadir}/zoneinfo/MST \
181*4882a593Smuzhiyun    ${datadir}/zoneinfo/MST7MDT \
182*4882a593Smuzhiyun    ${datadir}/zoneinfo/NZ \
183*4882a593Smuzhiyun    ${datadir}/zoneinfo/NZ-CHAT \
184*4882a593Smuzhiyun    ${datadir}/zoneinfo/PRC \
185*4882a593Smuzhiyun    ${datadir}/zoneinfo/PST8PDT \
186*4882a593Smuzhiyun    ${datadir}/zoneinfo/ROC \
187*4882a593Smuzhiyun    ${datadir}/zoneinfo/ROK \
188*4882a593Smuzhiyun    ${datadir}/zoneinfo/UCT \
189*4882a593Smuzhiyun    ${datadir}/zoneinfo/UTC \
190*4882a593Smuzhiyun    ${datadir}/zoneinfo/Universal \
191*4882a593Smuzhiyun    ${datadir}/zoneinfo/W-SU \
192*4882a593Smuzhiyun    ${datadir}/zoneinfo/WET \
193*4882a593Smuzhiyun    ${datadir}/zoneinfo/Zulu \
194*4882a593Smuzhiyun    ${datadir}/zoneinfo/zone.tab \
195*4882a593Smuzhiyun    ${datadir}/zoneinfo/zone1970.tab \
196*4882a593Smuzhiyun    ${datadir}/zoneinfo/iso3166.tab \
197*4882a593Smuzhiyun    ${datadir}/zoneinfo/Etc \
198*4882a593Smuzhiyun"
199*4882a593Smuzhiyun
200*4882a593SmuzhiyunCONFFILES:tzdata-core = "${sysconfdir}/localtime ${sysconfdir}/timezone"
201*4882a593Smuzhiyun
202*4882a593SmuzhiyunALLOW_EMPTY:${PN} = "1"
203*4882a593Smuzhiyun
204*4882a593SmuzhiyunRDEPENDS:${PN} = "${TZ_PACKAGES}"
205