kumquat-buildroot/package/tz/tz.mk
Yann E. MORIN e7e526e910 system: require a timezone to be set
Even though no timezone implicitly means UTC, systemd is not all that
happy when it does not have a timezone set. This is all fine on a RW
filesystem because systemd will create a symlink on its own (to
Etc/UTC), but not so much on a RO filesystem, causing all kind of
issues at boot time (up to the point that the system is unusable).

We fix that by requiring that the timezone is actually set. The check is
done by verifying that the timezone file is an actual file; if not set,
the test would find a directory and would thus fail.

Update the help entry accordingly.

Also fix indentation in tzdata.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Richard Braun <rbraun@sceen.net>
Cc: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Cc: Martin Bark <martin@barkynet.com>
Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-07-04 09:00:05 +02:00

37 lines
1.2 KiB
Makefile

################################################################################
#
# tz
#
################################################################################
TZ_DEPENDENCIES = host-tzdata host-tzdump
TZ_LICENSE = Public domain
TZ_LOCALTIME = $(call qstrip,$(BR2_TARGET_LOCALTIME))
define TZ_BUILD_CMDS
(cd $(HOST_DIR)/usr/share/zoneinfo/posix/; \
for i in $$(find . -type f); do \
mkdir -p $(@D)/output/$$(dirname $$i); \
$(TZDUMP) -p . -q $${i#./} | sed '1d' > $(@D)/output/$$i; \
done \
)
endef
define TZ_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0644 $(HOST_DIR)/usr/share/zoneinfo/zone.tab \
$(TARGET_DIR)/usr/share/zoneinfo/zone.tab
$(INSTALL) -D -m 0644 $(HOST_DIR)/usr/share/zoneinfo/iso3166.tab \
$(TARGET_DIR)/usr/share/zoneinfo/iso3166.tab
mkdir -p $(TARGET_DIR)/usr/share/zoneinfo/uclibc
cp -a $(@D)/output/* $(TARGET_DIR)/usr/share/zoneinfo/uclibc
if [ ! -f $(TARGET_DIR)/usr/share/zoneinfo/uclibc/$(TZ_LOCALTIME) ]; then \
printf "Error: '%s' is not a valid timezone, check your BR2_TARGET_LOCALTIME setting\n" \
"$(TZ_LOCALTIME)"; \
exit 1; \
fi
ln -sf ../usr/share/zoneinfo/uclibc/$(TZ_LOCALTIME) $(TARGET_DIR)/etc/TZ
endef
$(eval $(generic-package))