summaryrefslogtreecommitdiffstats
path: root/build
blob: 0fe2c04330daa6cb4624b45e9f6729d4acce8803 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/make -f

include ../source.mk

tables = \
	africa \
	antarctica \
	asia \
	australasia \
	europe \
	northamerica \
	southamerica \
	etcetera \
	factory

nop:
	@:

build:
	for t in $(tables); do \
		/usr/sbin/zic -d tzdata-$${t}.data/usr/share/zoneinfo \
			-L /dev/null -y yearistype.sh \
			src/$${t} || exit $?; \
	done
	touch $@

install: build
	# Install tzdata files.
	mkdir -p tzdata.data/usr/share/zoneinfo/Etc
	mv tzdata-etcetera.data/usr/share/zoneinfo/Etc/UTC \
		tzdata.data/usr/share/zoneinfo/Etc
	cp src/iso3166.tab src/zone.tab tzdata.data/usr/share/zoneinfo
	ln -sf Universal tzdata.data/usr/share/zoneinfo/posixrules
	mkdir -p tzdata.data/etc
	ln -sf /usr/share/zoneinfo/Universal tzdata.data/etc/localtime
	ln -sf . tzdata.data/usr/share/zoneinfo/posix
	# Install time zones.
	for t in $(tables); do \
		grep '^Link' src/$${t} | while read type dest src etc; do \
			if [ x"$${dest}" = x'Etc/UTC' ]; then \
				p='tzdata'; \
			else \
				p="tzdata-$${t}"; \
			fi; \
			rm -f "$${p}.data/usr/share/zoneinfo/$${src}"; \
			link="$${src}" up=''; \
			while [ "$${link#*/}" != "$${link}" ] && \
			      [ "$${link%%/*}" = "$${dest%%/*}" ]; do \
				link="$${link#*/}"; \
				dest="$${dest#*/}"; \
			done; \
			while [ "$${link#*/}" != "$${link}" ]; do \
				link="$${link#*/}"; \
				up="../$${up}"; \
			done; \
			src="$${p}.data/usr/share/zoneinfo/$${src}"; \
			ln -sf "$${up}$${dest}" "$${src}"; \
		done; \
	done
	# Install links listed in the "backward" table into the relevant time
	# zone data package.
	grep '^Link' src/backward | while read type dest src etc; do \
		if [ x"$${dest}" = x'Etc/UTC' ]; then \
			p='tzdata'; \
		else \
			p="tzdata-$$(cd src &&  grep -l \
				"^Zone[ 	][ 	]*$${dest}[ 	].*$$" \
				$(tables))"; \
		fi; \
		link="$${src}" up=''; \
		while [ "$${link#*/}" != "$${link}" ] && \
		      [ "$${link%%/*}" = "$${dest%%/*}" ]; do \
			link="$${link#*/}"; \
			dest="$${dest#*/}"; \
		done; \
		while [ "$${link#*/}" != "$${link}" ]; do \
			link="$${link#*/}"; \
			up="../$${up}"; \
		done; \
		src="$${p}.data/usr/share/zoneinfo/$${src}"; \
		mkdir -p "$${src%/*}"; \
		ln -sf "$${up}$${dest}" "$${src}"; \
	done