Hi !
Yesterday i tried this patch for zoneinfo files on OSELAS.Toolchain-1.1.0:
http://trac.cross-lfs.org/browser/branches/clfs-sysroot/patches/glibc-2.5-cross_hacks-2.patch
I succesfully builded a ARMv4 Toolchain on fedora.
The following patch adds support to ptxdist that timezone files are copied and
a link to /etc/localtime can be set. please review and add if possible to
svn.
Index: ptxdist-1.svn/rules/glibc.in
===================================================================
--- ptxdist-1.svn.orig/rules/glibc.in
+++ ptxdist-1.svn/rules/glibc.in
@@ -222,18 +222,27 @@ endmenu
# -----
comment "Timezone Files"
- depends on GLIBC && BROKEN
+ depends on GLIBC
-comment "glibc zoneinfo is BROKEN"
- depends on GLIBC && !BROKEN
+comment "glibc zoneinfo"
+ depends on GLIBC
config GLIBC_ZONEINFO
bool
prompt "Install zoneinfo files"
- depends on GLIBC && BROKEN
+ depends on GLIBC
help
FIXME: This item needs to be documented
+config GLIBC_LOCALTIME_LINK
+ prompt "Link of /etc/localtime"
+ depends on GLIBC_ZONEINFO
+ default "/usr/share/zoneinfo/Europe/Vienna"
+ string
+ help
+ Where should /etc/localtime point to.
+ (e.g. /usr/share/zoneinfo/Europe/Vienna)
+
config GLIBC_ZONEINFO_AFRICA
bool
prompt "Africa"
@@ -524,3 +533,4 @@ config GLIBC_ZONEINFO_UNIVERSAL
prompt "Universal"
depends on GLIBC_ZONEINFO
+
Index: ptxdist-1.svn/rules/glibc.make
===================================================================
--- ptxdist-1.svn.orig/rules/glibc.make
+++ ptxdist-1.svn/rules/glibc.make
@@ -19,6 +19,67 @@ GLIBC_VERSION := 1.0
GLIBC := glibc-$(GLIBC_VERSION)
GLIBC_DIR := $(BUILDDIR)/glibc
LOCALE_GENERATE_DIR := $(GLIBC_DIR)-gen
+
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_AFRICA) := "Afrika"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ATLANTIC) += "Atlantic"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_EUROPE) += "Europe"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_EST5EDT) += "EST5EDT"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_CANADA) += "Canada"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_FACTORY) += "Factory"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_GMT0) += "GMT-0"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ICELAND) += "Iceland"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_JAPAN) += "Japan"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_MST7MDT) += "MST7MDT"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_NAVAJO) += "Navajo"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_WSU) += "W-SU"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_AMERICA) += "America"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_AUSTRALIA) += "Australia"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_CHILE) += "Chile"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_EGYPT) += "Egypt"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_GB) += "GB"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_GMT0) += "GMT0"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_INDIAN) += "Indian"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_KWAJALEIN) += "Kwajalein"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_MEXICO) += "Mexico"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_PRC) += "PRC"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ROC) += "ROC"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_UCT) += "UCT"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_WET) += "WET"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ANTARCTICA) += "Antarctica"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_BRAZIL) += "Brazil"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_CUBA) += "Cuba"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_EIRE) += "Eire"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_IRAN) += "Iran"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_LIBYA) += "Libya"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_MIDEAST) += "Mideast"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_PST8PDT) += "PST8PDT"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ROK) += "ROK"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_US) += "US"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ZULU) += "Zulu"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ARCTIC) += "Arctic"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_CET) += "CET"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_EET) += "EET"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ETC) += "Etc"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_GMT) += "GMT"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_HST) += "HST"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ISRAEL) += "Israel"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_MET) += "MET"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_NZ) += "NZ"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_PACIFIC) += "Pacific"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_SINGAPORE) += "Singapore"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_UTC) += "UTC"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_ASIA) += "Asia"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_CST6CDT) += "CST6CDT"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_EST) += "EST"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_GMT0) += "GMT+0"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_HONGKONG) += "Hongkong"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_JAMAICA) += "Jamaica"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_MST) += "MST"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_NZ_CHAT) += "NZ-CHAT"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_SYSTEMV) += "SystemV"
+GLIBC_ZONEFILES-$(PTXCONF_GLIBC_ZONEINFO_UNIVERSAL) += "Universal"
+GLIBC_ZONEDIR:=$(GLIBC_DIR)/usr/share
+
# ----------------------------------------------------------------------------
# Get
# ----------------------------------------------------------------------------
@@ -181,13 +242,24 @@ ifdef PTXCONF_LOCALES
@$(call install_copy_toolchain_usr, glibc, share/locale/locale.alias,,n)
endif
-# Zonefiles are BROKEN
-# @$(call install_copy, glibc, 0, 0, 0755, /usr/share/zoneinfo)
-# @for target in $(GLIBC_ZONEFILES-y); do \
-# $(call install_copy, glibc, 0, 0, 0644, \
-# $(GLIBC_ZONEDIR)/zoneinfo/$$target, \
-# /usr/share/zoneinfo/$$target) \
-# done;
+ @for target in $(GLIBC_ZONEFILES-y); do \
+ $(call add_zoneinfo, $$target, $(GLIBC_ZONEDIR)); \
+ done
+
+ifdef PTXCONF_GLIBC_ZONEINFO
+ @$(call install_copy, glibc, 0, 0, 0755, /usr/share/zoneinfo)
+ for dir in `find $(GLIBC_ZONEDIR)/zoneinfo/* -type d`; do \
+ dest=`basename $$dir`; \
+ $(call install_copy, glibc, 0, 0, 0755,
/usr/share/zoneinfo/$$dest); \
+ for file in `find $(GLIBC_ZONEDIR)/zoneinfo/$$dest -type f`; do \
+ fdest=`basename $$file`; \
+ $(call install_copy, glibc, 0, 0, 0655,
$(GLIBC_ZONEDIR)/zoneinfo/$$dest/$$fdest,
/usr/share/zoneinfo/$$dest/$$fdest,n);
\
+ done \
+ done
+ifdef PTXCONF_GLIBC_LOCALTIME_LINK
+ @$(call install_link, glibc,
$(PTXCONF_GLIBC_LOCALTIME_LINK), /etc/localtime)
+endif
+endif
@$(call install_finish, glibc)
@$(call touch, $@)
@@ -198,5 +270,6 @@ endif
glibc_clean:
-rm -rf $(STATEDIR)/glibc*
+ -rm -rf $(GLIBC_ZONEDIR)
# vim: syntax=make
Index: ptxdist-1.svn/scripts/make_zoneinfo.sh
===================================================================
--- /dev/null
+++ ptxdist-1.svn/scripts/make_zoneinfo.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+if test -z "${PTXDIST_TOPDIR}"; then
+ echo PTXDIST_TOPDIR is unset
+ exit
+fi
+
+. ${PTXDIST_TOPDIR}/scripts/ptxdist_vars.sh
+. ${SCRIPTSDIR}/libptxdist.sh
+. ${SCRIPTSDIR}/install_copy_toolchain.sh
+
+usage() {
+ echo
+ echo "usage: $0 <args>"
+ echo
+ echo " Arguments:"
+ echo
+ echo " -n name zoneinfoe name"
+ echo " -p prefix prefix dir"
+ exit 1
+}
+
+add_zoneinfo() {
+ local PREF ZONEINFO_NAME
+ while getopts "n:p:" opt; do
+ case "${opt}" in
+ n)
+ ZONEINFO_NAME="${OPTARG}"
+ ;;
+ p)
+ PREF="${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; }
+
+ if [ ! -d ${PREF}/zoneinfo ]; then
+ mkdir -p ${PREF}/zoneinfo
+ [ $? -ne 0 ] && { echo "Could not create temporary zoneinfo
directory
${PREF}/usr/share/zoneinfo"; exit 1; }
+ fi
+
+ if [ -d ${SYSROOT_USR}/share/zoneinfo/${ZONEINFO_NAME} ]; then
+ mkdir -p ${PREF}/zoneinfo/${ZONEINFO_NAME}
+ [ $? -ne 0 ] && { echo "Could not create temporary zoneinfo
directory
${PREF}/zoneinfo/${ZONEINFO_NAME}"; exit 1; }
+ cp ${SYSROOT_USR}/share/zoneinfo/${ZONEINFO_NAME}/*
${PREF}/zoneinfo/${ZONEINFO_NAME}
+ [ $? -ne 0 ] && { echo "Could not create temporary zoneinfo
files
${PREF}/zoneinfo${ZONEINFO_NAME}"; exit 1; }
+ else
+ cp ${SYSROOT_USR}/share/zoneinfo/${ZONEINFO_NAME}
${PREF}/zoneinfo${ZONEINFO_NAME}
+ [ $? -ne 0 ] && { echo "Could not create temporary zoneinfo
file
${PREF}/zoneinfo/${ZONEINFO_NAME}"; exit 1; }
+ fi
+}
+
+add_zoneinfo "[EMAIL PROTECTED]"
+exit 0
Index: ptxdist-1.svn/rules/pre/Rules.make
===================================================================
--- ptxdist-1.svn.orig/rules/pre/Rules.make
+++ ptxdist-1.svn/rules/pre/Rules.make
@@ -404,6 +404,24 @@ add_locale =
\
-p $$PREF \
-n $$LOCALE_NAME
+
+#
+# add_zoneinfo
+#
+# add zoneinfo support to glibc-archive
+#
+# $1: zoneinfoname: zoneinfoname (i.E. Europe)
+# $2: prefix; installation prefix for glibc-archive
+#
+#
+add_zoneinfo = \
+ ZONEINFO_NAME=$(strip $(1)); \
+ PREF=$(strip $(2)); \
+ ${CROSS_ENV_CC} $(CROSS_ENV_STRIP) \
+ $(SCRIPTSDIR)/make_zoneinfo.sh \
+ -n $$ZONEINFO_NAME \
+ -p $$PREF
+
#
# extract
#
Index: ptxdist-1.svn/scripts/install_copy_toolchain.sh
===================================================================
--- ptxdist-1.svn.orig/scripts/install_copy_toolchain.sh
+++ ptxdist-1.svn/scripts/install_copy_toolchain.sh
@@ -335,4 +335,4 @@ ptxd_install_copy_toolchain() {
#
# FIXME: ugly hack to use this script as library as well
#
-[ `basename $0` != "make_locale.sh" ] && ptxd_install_copy_toolchain "[EMAIL
PROTECTED]"
+[ `basename $0` != "make_locale.sh" ] && [ `basename
$0` != "make_zoneinfo.sh" ] && ptxd_install_copy_toolchain "[EMAIL PROTECTED]"
thanks, regards
--
mfg
Manfred Gruber
Software Engineering
--
ptxdist mailing list
[email protected]