On Tue, Jun 01, 2010 at 11:25:11PM +0200, Remy Bohmer wrote: > From: Bart vdr. Meulen <bartvdrmeu...@gmail.com> > > Add an alternative source for the timezone info. This option can be used when > using toolchains in which the timezone info is incorrect/does not work or is > not available at all > > The option build's the timezone database from the tzdata source files on the > host and installs the selected zoneinfos to the target. > > Signed-off-by: Bart vdr. Meulen <bartvdrmeu...@gmail.com> > Signed-off-by: Remy Bohmer <li...@bohmer.net> > --- > rules/host-tz-database.in | 4 ++ > rules/host-tz-database.make | 100 > +++++++++++++++++++++++++++++++++++++++++++ > rules/pre/Rules.make | 4 +- > rules/timezone.in | 14 +++++- > rules/timezone.make | 8 +++- > scripts/make_zoneinfo.sh | 15 ++++--- > 6 files changed, 134 insertions(+), 11 deletions(-) > create mode 100644 rules/host-tz-database.in > create mode 100644 rules/host-tz-database.make > > diff --git a/rules/host-tz-database.in b/rules/host-tz-database.in > new file mode 100644 > index 0000000..c1e0252 > --- /dev/null > +++ b/rules/host-tz-database.in > @@ -0,0 +1,4 @@ > +## SECTION=hosttools_noprompt > + > +config HOST_TZDATABASE > + tristate > diff --git a/rules/host-tz-database.make b/rules/host-tz-database.make > new file mode 100644 > index 0000000..dc12fe6 > --- /dev/null > +++ b/rules/host-tz-database.make > @@ -0,0 +1,100 @@ > +# -*-makefile-*- > +# > +# Copyright (C) 2010 by Bart vdr. Meulen <bartvdrmeu...@gmail.com> > +# > +# See CREDITS for details about who has contributed to this project. > +# > +# For further information about the PTXdist project and license conditions > +# see the README file. > +# > + > +# > +# We provide this package > +# > +HOST_PACKAGES-$(PTXCONF_HOST_TZDATABASE) += host-tz-database > + > +# > +# Paths and names > +# > +TZCODE_VERSION := 2010f > +TZCODE := tzcode$(TZCODE_VERSION) > +TZCODE_SUFFIX := tar.gz > +TZCODE_URL := \ > +ftp://elsie.nci.nih.gov/pub/$(TZCODE).$(TZCODE_SUFFIX) \ > +ftp://munnari.oz.au/pub/oldtz/$(TZCODE).$(TZCODE_SUFFIX) > +TZCODE_SOURCE := $(SRCDIR)/$(TZCODE).$(TZCODE_SUFFIX) > + > +TZDATA_VERSION := 2010h > +TZDATA := tzdata$(TZDATA_VERSION) > +TZDATA_SUFFIX := tar.gz > +TZDATA_URL := \ > +ftp://elsie.nci.nih.gov/pub/$(TZDATA).$(TZDATA_SUFFIX) \ > +ftp://munnari.oz.au/pub/oldtz/$(TZDATA).$(TZDATA_SUFFIX) > +TZDATA_SOURCE := $(SRCDIR)/$(TZDATA).$(TZDATA_SUFFIX) > + > + > +HOST_TZDATABASE := tz-database > +HOST_TZDATABASE_DIR := $(HOST_BUILDDIR)/$(HOST_TZDATABASE) > + > +# > ---------------------------------------------------------------------------- > +# Get > +# > ---------------------------------------------------------------------------- > +$(TZCODE_SOURCE): > + @$(call get, TZCODE) > + > +$(TZDATA_SOURCE): > + @$(call get, TZDATA) > + > +$(STATEDIR)/host-tz-database.get: $(TZCODE_SOURCE) $(TZDATA_SOURCE) > + @$(call targetinfo) > + @$(call touch) > + > +# > ---------------------------------------------------------------------------- > +# Extract > +# > ---------------------------------------------------------------------------- > + > +$(STATEDIR)/host-tz-database.extract: > + @$(call targetinfo) > + @$(call clean, $(HOST_TZDATABASE_DIR)) > + @$(call extract, TZCODE, $(HOST_TZDATABASE_DIR)) > + @$(call extract, TZDATA, $(HOST_TZDATABASE_DIR)) > + @$(call touch) > + > +# > ---------------------------------------------------------------------------- > +# Prepare > +# > ---------------------------------------------------------------------------- > + > +HOST_TZDATABASE_PATH := PATH=$(HOST_PATH) > +HOST_TZDATABASE_ENV := $(HOST_ENV) > + > +$(STATEDIR)/host-tz-database.prepare: > + @$(call targetinfo, $@) > + @$(call touch, $@) > + > +# > ---------------------------------------------------------------------------- > +# Compile > +# > ---------------------------------------------------------------------------- > + > +$(STATEDIR)/host-tz-database.compile: > + @$(call targetinfo) > + cd $(HOST_TZDATABASE_DIR) && $(HOST_TZDATABASE_PATH) \ > + $(MAKE) posix_only > TZDIR=$(PTXDIST_SYSROOT_HOST)/usr/share/zoneinfo > + @$(call touch) > + > +# > ---------------------------------------------------------------------------- > +# Install > +# > ---------------------------------------------------------------------------- > + > +$(STATEDIR)/host-tz-database.install: > + $(call targetinfo) > + $(call touch) > + > +# > ---------------------------------------------------------------------------- > +# Clean > +# > ---------------------------------------------------------------------------- > + > +#$(STATEDIR)/host-tz-database.clean: > +# @$(call targetinfo) > +# @$(call clean_pkg, HOST_TZDATABASE) > + > +# vim: syntax=make > diff --git a/rules/pre/Rules.make b/rules/pre/Rules.make > index 8ffc6fd..1fd3707 100644 > --- a/rules/pre/Rules.make > +++ b/rules/pre/Rules.make > @@ -386,10 +386,12 @@ add_locale = > \ > add_zoneinfo = \ > ZONEINFO_NAME=$(strip $(1)); \ > PREF=$(strip $(2)); \ > + SYSROOT=$(strip $(3)); \ > ${CROSS_ENV_CC} $(CROSS_ENV_STRIP) \ > $(SCRIPTSDIR)/make_zoneinfo.sh \ > -n $$ZONEINFO_NAME \ > - -p $$PREF > + -p $$PREF \ > + -s $$SYSROOT > > # > # extract > diff --git a/rules/timezone.in b/rules/timezone.in > index 9d27789..8e15194 100644 > --- a/rules/timezone.in > +++ b/rules/timezone.in > @@ -1,13 +1,13 @@ > ## SECTION=core > > -comment "Time zone support doesn't work with OSELAS.Toolchain-1.1.0" > -comment "and prio versions, hence marked as broken for now" > +# comment "Time zone support doesn't work with OSELAS.Toolchain-1.1.0" > +# comment "and prio versions, hence marked as broken for now" > > menuconfig TIMEZONE > tristate > prompt "Timezone Files " > depends on GLIBC > - depends on BROKEN > + select HOST_TZDATABASE if TIMEZONE_LOCAL_DATABASE > help > installs timezone files > > @@ -23,6 +23,14 @@ config GLIBC_LOCALTIME_LINK > Where should /etc/localtime point to. > (e.g. /usr/share/zoneinfo/Europe/Berlin) > > +config TIMEZONE_LOCAL_DATABASE > + bool > + prompt "Use local build timezone database" > + depends on TIMEZONE > + help > + Don't use the timezone info provide by the toolchain > + but a locally build from source > + > config TIMEZONE_AFRICA > bool > prompt "Africa" > diff --git a/rules/timezone.make b/rules/timezone.make > index f9c5f2e..6da0dc0 100644 > --- a/rules/timezone.make > +++ b/rules/timezone.make > @@ -137,9 +137,15 @@ $(STATEDIR)/timezone.targetinstall: > @$(call install_fixup, timezone,DEPENDS,) > @$(call install_fixup, timezone,DESCRIPTION,missing) > > +ifdef PTXCONF_TIMEZONE_LOCAL_DATABASE > @for target in $(TIMEZONE-y); do \ > - $(call add_zoneinfo, $$target, $(TIMEZONE_DIR)); \ > + $(call add_zoneinfo, $$target, $(TIMEZONE_DIR), > $(PTXDIST_SYSROOT_HOST)/usr); \ > done > +else > + @for target in $(TIMEZONE-y); do \ > + $(call add_zoneinfo, $$target, $(TIMEZONE_DIR), ""); \ > + done > +endif > > @$(call install_copy, timezone, 0, 0, 0755, /usr/share/zoneinfo) > @for d in `find ${TIMEZONE_DIR}/zoneinfo/ -type d | awk -v > FS="zoneinfo/" '{print $$2}'`; do \
/etc/localtime fails to install because it's an absolute link. This was already broken but never registered because the packages was marked as broken. Can you please include the fix anyways? @$(call install_link, timezone, ..$(PTXCONF_GLIBC_LOCALTIME_LINK), /etc/localtime) Other than that the series compiles without problems. We'e almost ready to merge it. mol > diff --git a/scripts/make_zoneinfo.sh b/scripts/make_zoneinfo.sh > index ad33675..c583aab 100755 > --- a/scripts/make_zoneinfo.sh > +++ b/scripts/make_zoneinfo.sh > @@ -21,24 +21,27 @@ usage() { > } > > add_zoneinfo() { > - local PREF ZONEINFO_NAME > - while getopts "n:p:" opt; do > + local PREF ZONEINFO_NAME SYSROOT_USR > + while getopts "n:p:s:" opt; do > case "${opt}" in > n) > - ZONEINFO_NAME="${OPTARG}" > + ZONEINFO_NAME="${OPTARG}" > ;; > p) > PREF="${OPTARG}" > ;; > + s) > + SYSROOT_USR="${OPTARG}" > + ;; > *) > usage > ;; > esac > done > > - SYSROOT_USR=`ptxd_get_sysroot_usr` > - [ ! -d ${SYSROOT_USR} ] && { echo "Toolchain sysroot dir not found"; > exit 1; } > - [ ! -d ${SYSROOT_USR}/share/zoneinfo ] && { echo "Zoneinfo dir not > found"; exit 1; } > + [ -z ${SYSROOT_USR} ] && SYSROOT_USR=`ptxd_get_sysroot_usr` > + [ ! -d ${SYSROOT_USR} ] && { echo "Toolchain sysroot dir > (${SYSROOT_USR}) not found"; exit 1; } > + [ ! -d ${SYSROOT_USR}/share/zoneinfo ] && { echo "Zoneinfo dir > (${SYSROOT_USR}) not found"; exit 1; } > > if [ ! -d ${PREF}/zoneinfo ]; then > mkdir -p ${PREF}/zoneinfo > -- > 1.7.0.4 > > > -- > ptxdist mailing list > ptxdist@pengutronix.de > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | -- ptxdist mailing list ptxdist@pengutronix.de