summary refs log tree commit diff
path: root/pkgs/os-specific/linux/systemd/0009-Change-usr-share-zoneinfo-to-etc-zoneinfo.patch
blob: 12a9dd5a77f6df29a48bd37272cda22f6b1b80bd (plain) (blame)
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
From 4d304a321796db4de827aa39a149bea23d039214 Mon Sep 17 00:00:00 2001
From: Nikolay Amiantov <ab@fmap.me>
Date: Tue, 11 Oct 2016 13:12:08 +0300
Subject: [PATCH 09/18] Change /usr/share/zoneinfo to /etc/zoneinfo

NixOS uses this path.
---
 man/localtime.xml         | 4 ++--
 src/basic/time-util.c     | 6 +++---
 src/firstboot/firstboot.c | 2 +-
 src/nspawn/nspawn.c       | 4 ++--
 src/timedate/timedated.c  | 8 ++++----
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/man/localtime.xml b/man/localtime.xml
index 0f1652ee2e..71c4f95c2e 100644
--- a/man/localtime.xml
+++ b/man/localtime.xml
@@ -20,7 +20,7 @@
   </refnamediv>
 
   <refsynopsisdiv>
-    <para><filename>/etc/localtime</filename> -&gt; <filename>../usr/share/zoneinfo/…</filename></para>
+    <para><filename>/etc/localtime</filename> -&gt; <filename>zoneinfo/…</filename></para>
   </refsynopsisdiv>
 
   <refsect1>
@@ -30,7 +30,7 @@
     system-wide timezone of the local system that is used by
     applications for presentation to the user. It should be an
     absolute or relative symbolic link pointing to
-    <filename>/usr/share/zoneinfo/</filename>, followed by a timezone
+    <filename>/etc/zoneinfo/</filename>, followed by a timezone
     identifier such as <literal>Europe/Berlin</literal> or
     <literal>Etc/UTC</literal>. The resulting link should lead to the
     corresponding binary
diff --git a/src/basic/time-util.c b/src/basic/time-util.c
index 105584e2e7..5238f69931 100644
--- a/src/basic/time-util.c
+++ b/src/basic/time-util.c
@@ -1217,7 +1217,7 @@ int get_timezones(char ***ret) {
         n_allocated = 2;
         n_zones = 1;
 
-        f = fopen("/usr/share/zoneinfo/zone1970.tab", "re");
+        f = fopen("/etc/zoneinfo/zone1970.tab", "re");
         if (f) {
                 for (;;) {
                         _cleanup_free_ char *line = NULL;
@@ -1312,7 +1312,7 @@ bool timezone_is_valid(const char *name, int log_level) {
         if (p - name >= PATH_MAX)
                 return false;
 
-        t = strjoina("/usr/share/zoneinfo/", name);
+        t = strjoina("/etc/zoneinfo/", name);
 
         fd = open(t, O_RDONLY|O_CLOEXEC);
         if (fd < 0) {
@@ -1410,7 +1410,7 @@ int get_timezone(char **ret) {
         if (r < 0)
                 return r; /* returns EINVAL if not a symlink */
 
-        e = PATH_STARTSWITH_SET(t, "/usr/share/zoneinfo/", "../usr/share/zoneinfo/");
+        e = PATH_STARTSWITH_SET(t, "/etc/zoneinfo/", "../etc/zoneinfo/");
         if (!e)
                 return -EINVAL;
 
diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c
index 901fbf0815..b57bdd8fbe 100644
--- a/src/firstboot/firstboot.c
+++ b/src/firstboot/firstboot.c
@@ -431,7 +431,7 @@ static int process_timezone(void) {
         if (isempty(arg_timezone))
                 return 0;
 
-        e = strjoina("../usr/share/zoneinfo/", arg_timezone);
+        e = strjoina("zoneinfo/", arg_timezone);
 
         (void) mkdir_parents(etc_localtime, 0755);
         if (symlink(e, etc_localtime) < 0)
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index a97b1a4bc9..aed60439e3 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -1657,8 +1657,8 @@ static int userns_mkdir(const char *root, const char *path, mode_t mode, uid_t u
 static const char *timezone_from_path(const char *path) {
         return PATH_STARTSWITH_SET(
                         path,
-                        "../usr/share/zoneinfo/",
-                        "/usr/share/zoneinfo/");
+                        "../etc/zoneinfo/",
+                        "/etc/zoneinfo/");
 }
 
 static bool etc_writable(void) {
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
index 63865f557c..8021a8b753 100644
--- a/src/timedate/timedated.c
+++ b/src/timedate/timedated.c
@@ -264,7 +264,7 @@ static int context_read_data(Context *c) {
 
         r = get_timezone(&t);
         if (r == -EINVAL)
-                log_warning_errno(r, "/etc/localtime should be a symbolic link to a time zone data file in /usr/share/zoneinfo/.");
+                log_warning_errno(r, "/etc/localtime should be a symbolic link to a time zone data file in /etc/zoneinfo/.");
         else if (r < 0)
                 log_warning_errno(r, "Failed to get target of /etc/localtime: %m");
 
@@ -288,7 +288,7 @@ static int context_write_data_timezone(Context *c) {
 
         if (isempty(c->zone) || streq(c->zone, "UTC")) {
 
-                if (access("/usr/share/zoneinfo/UTC", F_OK) < 0) {
+                if (access("/etc/zoneinfo/UTC", F_OK) < 0) {
 
                         if (unlink("/etc/localtime") < 0 && errno != ENOENT)
                                 return -errno;
@@ -296,9 +296,9 @@ static int context_write_data_timezone(Context *c) {
                         return 0;
                 }
 
-                source = "../usr/share/zoneinfo/UTC";
+                source = "../etc/zoneinfo/UTC";
         } else {
-                p = path_join("../usr/share/zoneinfo", c->zone);
+                p = path_join("../etc/zoneinfo", c->zone);
                 if (!p)
                         return -ENOMEM;
 
-- 
2.26.2