* Take the extra bits in do_install from meta-openembedded * and add pkg_postinst script (adapted from Gentoo). * Default to 'Universal' timezone, present in the base package * and allow override using DEFAULT_TIMEZONE variable. * /etc/localtime and /etc/timezone are purposedly not packaged. * Bump PR
Signed-off-by: Andrea Adami <[email protected]> --- meta/recipes-extended/tzdata/tzdata_2011n.bb | 55 +++++++++++++++++++++++++- 1 files changed, 53 insertions(+), 2 deletions(-) diff --git a/meta/recipes-extended/tzdata/tzdata_2011n.bb b/meta/recipes-extended/tzdata/tzdata_2011n.bb index de9281a..862a196 100644 --- a/meta/recipes-extended/tzdata/tzdata_2011n.bb +++ b/meta/recipes-extended/tzdata/tzdata_2011n.bb @@ -5,7 +5,7 @@ LICENSE = "PD" LIC_FILES_CHKSUM = "file://asia;beginline=2;endline=3;md5=06468c0e84ef4d4c97045a4a29b08234" DEPENDS = "tzcode-native" -PR = "r0" +PR = "r1" RCONFLICTS= "timezones timezone-africa timezone-america timezone-antarctica \ timezone-arctic timezone-asia timezone-atlantic \ @@ -19,6 +19,8 @@ SRC_URI[tzdata.sha256sum] = "a343e542486b2b8ebdeca474eed79f1c04f69420ca943c2b9bd S = "${WORKDIR}" +DEFAULT_TIMEZONE ?= "Universal" + TZONES= "africa antarctica asia australasia europe northamerica southamerica \ factory solar87 solar88 solar89 etcetera backward systemv \ " @@ -41,7 +43,56 @@ do_install () { # libc is removing zoneinfo files from package cp -pP "${S}/zone.tab" ${D}${datadir}/zoneinfo cp -pP "${S}/iso3166.tab" ${D}${datadir}/zoneinfo - chown -R root:root ${D} + + # Install defaults + install -d ${D}${sysconfdir} + echo ${DEFAULT_TIMEZONE} > ${D}${sysconfdir}/timezone + cp -pP ${S}/${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ${D}${sysconfdir}/localtime + + chown -R root:root ${D} +} + +pkg_postinst_${PN} () { + +# code taken from Gentoo's tzdata ebuild + + etc_lt="${sysconfdir}/localtime" + src="${sysconfdir}/timezone" + + if [[ -e ${src} ]] ; then + tz=$(sed -e 's:#.*::' -e 's:[[:space:]]*::g' -e '/^$/d' "${src}") + else + tz="FUBAR" + fi + + [[ -z ${tz} ]] && return 0 + + if [[ ${tz} == "FUBAR" ]] ; then + echo "You do not have TIMEZONE set in ${src}." + + if [[ ! -e ${etc_lt} ]] ; then + # if /etc/localtime is a symlink somewhere, assume they + # know what they're doing and they're managing it themselves + if [[ ! -L ${etc_lt} ]] ; then + cp -f "${datadir}/zoneinfo/Universal" "${etc_lt}" + echo "Setting ${etc_lt} to Universal." + else + echo "Assuming your ${etc_lt} symlink is what you want; skipping update." + fi + else + echo "Skipping auto-update of ${etc_lt}." + fi + return 0 + fi + + if [[ ! -e "${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" + fi + echo "Updating ${etc_lt} with ${datadir}/zoneinfo/${tz}" + [[ -L ${etc_lt} ]] && rm -f "${etc_lt}" + cp -f "${datadir}/zoneinfo/${tz}" "${etc_lt}" } # Packages primarily organized by directory with a major city -- 1.7.3.4 _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
