tzdata.bb by default pulls in all possible timezone data packages which 
increases size of the final root filesystem considerably.
The customer would like to have extra timezones configurable so that only
tzdata-core is chosen by default and rest of the zones are optional.
This change would make the fs size a lot smaller.

Comparison of customized package volume before and after:
When TZ_PACKAGES contains all tzdata packets, the image size of tzdata is 7.4MB.
The difference in mirror size between the two is 7MB.

When TZ_PACKAGES only retains one tzdata-core, the image size generated by
tzdata is 320KB.

Signed-off-by: Lizhi Xu <[email protected]>
---
 meta/recipes-extended/timezone/README.txt     |   8 ++
 meta/recipes-extended/timezone/tzd.inc        |   3 +
 meta/recipes-extended/timezone/tzdata-cus.inc | 114 ++++++++++++++++++
 meta/recipes-extended/timezone/tzdata.bb      |   1 +
 4 files changed, 126 insertions(+)
 create mode 100644 meta/recipes-extended/timezone/README.txt
 create mode 100644 meta/recipes-extended/timezone/tzd.inc
 create mode 100644 meta/recipes-extended/timezone/tzdata-cus.inc

diff --git a/meta/recipes-extended/timezone/README.txt 
b/meta/recipes-extended/timezone/README.txt
new file mode 100644
index 0000000000..e0c6bfdc2e
--- /dev/null
+++ b/meta/recipes-extended/timezone/README.txt
@@ -0,0 +1,8 @@
+# Timezones Config 
+Set the parameter "OP_TZ" in the file "tzd.inc" to increase or 
+decrease the time zone in rootfs, as shown in the following example:
+
+1. Add time zone Asia and Americas, set OP_TZ=" tzdata-asia tzdata-americas"
+
+2. Delete time zone Americas, set OP_TZ=" tzdata-asia"
+
diff --git a/meta/recipes-extended/timezone/tzd.inc 
b/meta/recipes-extended/timezone/tzd.inc
new file mode 100644
index 0000000000..fd59531063
--- /dev/null
+++ b/meta/recipes-extended/timezone/tzd.inc
@@ -0,0 +1,3 @@
+OP_TZ=" tzdata-americas \
+       tzdata-asia \
+"
diff --git a/meta/recipes-extended/timezone/tzdata-cus.inc 
b/meta/recipes-extended/timezone/tzdata-cus.inc
new file mode 100644
index 0000000000..db97ac7a02
--- /dev/null
+++ b/meta/recipes-extended/timezone/tzdata-cus.inc
@@ -0,0 +1,114 @@
+require tzd.inc
+# Packages are primarily organized by directory with a major city in most time
+# zones in the base package
+TZ_PACKAGES = " \
+    tzdata-core \
+    ${OP_TZ} \
+"
+
+# delete posix
+do_install:append() { 
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-posix" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/posix
+       fi
+}
+
+# delete right
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-right" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/right
+       fi
+}
+
+# delete america
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-americas" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/America
+               rm -rf ${D}${datadir}/zoneinfo/US
+               rm -rf ${D}${datadir}/zoneinfo/Brazil
+               rm -rf ${D}${datadir}/zoneinfo/Canada
+               rm -rf ${D}${datadir}/zoneinfo/Mexico
+               rm -rf ${D}${datadir}/zoneinfo/Chile
+       fi
+}
+
+# delete europe
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-europe" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/Europe
+       fi
+}
+
+# delete africa
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-africa" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/Africa
+       fi
+}
+
+# delete atlantic
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-atlantic" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/Atlantic
+       fi
+}
+
+# delete pacific
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-pacific" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/Pacific
+       fi
+}
+
+# delete antarctica
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-antarctica" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/Antarctica
+       fi
+}
+
+# delete australia
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-australia" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/Australia
+       fi
+}
+
+# delete arctic
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-arctic" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/Arctic
+       fi
+}
+
+# delete misc
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-misc" 2>&1; then
+               rm ${D}${datadir}/zoneinfo/Cuba
+               rm ${D}${datadir}/zoneinfo/Egypt
+               rm ${D}${datadir}/zoneinfo/Eire
+               rm ${D}${datadir}/zoneinfo/Factory
+               rm ${D}${datadir}/zoneinfo/GB-Eire
+               rm ${D}${datadir}/zoneinfo/Hongkong
+               rm ${D}${datadir}/zoneinfo/Iceland
+               rm ${D}${datadir}/zoneinfo/Iran
+               rm ${D}${datadir}/zoneinfo/Israel
+               rm ${D}${datadir}/zoneinfo/Jamaica
+               rm ${D}${datadir}/zoneinfo/Japan
+               rm ${D}${datadir}/zoneinfo/Kwajalein
+               rm ${D}${datadir}/zoneinfo/Libya
+               rm ${D}${datadir}/zoneinfo/Navajo
+               rm ${D}${datadir}/zoneinfo/Poland
+               rm ${D}${datadir}/zoneinfo/Portugal
+               rm ${D}${datadir}/zoneinfo/Singapore
+               rm ${D}${datadir}/zoneinfo/Turkey
+       fi
+}
+
+# delete asia
+do_install:append() {      
+       if ! echo "${TZ_PACKAGES}" | grep -c "tzdata-asia" 2>&1; then
+               rm -rf ${D}${datadir}/zoneinfo/Asia 
+               rm -rf ${D}${datadir}/zoneinfo/Indian
+       fi
+}
diff --git a/meta/recipes-extended/timezone/tzdata.bb 
b/meta/recipes-extended/timezone/tzdata.bb
index dd1960ffa7..e2180cfda4 100644
--- a/meta/recipes-extended/timezone/tzdata.bb
+++ b/meta/recipes-extended/timezone/tzdata.bb
@@ -202,3 +202,4 @@ CONFFILES:tzdata-core = "${sysconfdir}/localtime 
${sysconfdir}/timezone"
 ALLOW_EMPTY:${PN} = "1"
 
 RDEPENDS:${PN} = "${TZ_PACKAGES}"
+require tzdata-cus.inc
-- 
2.25.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#191176): 
https://lists.openembedded.org/g/openembedded-core/message/191176
Mute This Topic: https://lists.openembedded.org/mt/102777104/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to