diff --git a/0001-Positive-leap-second-on-2016-12-31.patch b/0001-Positive-leap-second-on-2016-12-31.patch deleted file mode 100644 index 1f60c2e..0000000 --- a/0001-Positive-leap-second-on-2016-12-31.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 6d5fc7fed0690f22574a9b795575e2bb7962716c Mon Sep 17 00:00:00 2001 -From: Tim Parenti -Date: Mon, 18 Jul 2016 23:10:36 -0400 -Subject: [PATCH] Positive leap second on 2016-12-31 - -* leap-seconds.list: Per IERS Bulletin C52 (2016-07-06), a -positive leap second will be inserted into the UTC time scale at the end -of 2016-12-31. Update file from NIST, retrieved from -. ---- - leap-seconds.list | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) - -diff --git a/leap-seconds.list b/leap-seconds.list -index 7552796..22fa785 100644 ---- a/leap-seconds.list -+++ b/leap-seconds.list -@@ -143,7 +143,7 @@ - # Boulder, Colorado - # Judah.Levine@nist.gov - # --# Last Update of leap second values: 5 January 2015 -+# Last Update of leap second values: 8 July 2016 - # - # The following line shows this last update date in NTP timestamp - # format. This is the date on which the most recent change to -@@ -151,7 +151,7 @@ - # be identified by the unique pair of characters in the first two - # columns as shown below. - # --#$ 3629404800 -+#$ 3676924800 - # - # The NTP timestamps are in units of seconds since the NTP epoch, - # which is 1 January 1900, 00:00:00. The Modified Julian Day number -@@ -199,10 +199,10 @@ - # current -- the update time stamp, the data and the name of the file - # will not change. - # --# Updated through IERS Bulletin C51 --# File expires on: 28 December 2016 -+# Updated through IERS Bulletin C52 -+# File expires on: 28 June 2017 - # --#@ 3691872000 -+#@ 3707596800 - # - 2272060800 10 # 1 Jan 1972 - 2287785600 11 # 1 Jul 1972 -@@ -231,6 +231,7 @@ - 3439756800 34 # 1 Jan 2009 - 3550089600 35 # 1 Jul 2012 - 3644697600 36 # 1 Jul 2015 -+3692217600 37 # 1 Jan 2017 - # - # the following special comment contains the - # hash value of the data in this file computed -@@ -246,4 +247,4 @@ - # the hash line is also ignored in the - # computation. - # --#h afc03691 8ff53838 42080ba1 cdd22f1 48192c10 -+#h dacf2c42 2c4765d6 3c797af8 2cf630eb 699c8c67 --- -2.6.6 - diff --git a/timezone-2016g-absolute-TZDEFAULT.patch b/timezone-2016g-absolute-TZDEFAULT.patch new file mode 100644 index 0000000..3f808e8 --- /dev/null +++ b/timezone-2016g-absolute-TZDEFAULT.patch @@ -0,0 +1,107 @@ +From df9991a2186d4236ba1e97e6638fa53b578bc6d7 Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Thu, 6 Oct 2016 11:47:17 -0700 +Subject: [PATCH] Do not assume TZDEFAULT is relative. + +Problem reported by Andreas Stieger in: +http://mm.icann.org/pipermail/tz/2016-October/024280.html +* NEWS: Document this. +* zic.c (relname): New function. +(dolink): Use it. +--- + zic.c | 65 ++++++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 44 insertions(+), 21 deletions(-) + +--- + +Fixes: https://bugzilla.suse.com/show_bug.cgi?id=1003324 + +diff --git a/zic.c b/zic.c +index 2505c11..eba223c 100644 +--- a/zic.c ++++ b/zic.c +@@ -764,6 +764,44 @@ namecheck(const char *name) + return componentcheck(name, component, cp); + } + ++/* Create symlink contents suitable for symlinking FROM to TO, as a ++ freshly allocated string. FROM should be a relative file name, and ++ is relative to the global variable DIRECTORY. TO can be either ++ relative or absolute. */ ++static char * ++relname(char const *from, char const *to) ++{ ++ size_t i, taillen, dotdotetcsize; ++ size_t dir_len = 0, dotdots = 0, linksize = SIZE_MAX; ++ char const *f = from; ++ char *result = NULL; ++ if (*to == '/') { ++ /* Make F absolute too. */ ++ size_t len = strlen(directory); ++ bool needslash = len && directory[len - 1] != '/'; ++ linksize = len + needslash + strlen(from) + 1; ++ f = result = emalloc(linksize); ++ strcpy(result, directory); ++ result[len] = '/'; ++ strcpy(result + len + needslash, from); ++ } ++ for (i = 0; f[i] && f[i] == to[i]; i++) ++ if (f[i] == '/') ++ dir_len = i + 1; ++ for (; f[i]; i++) ++ dotdots += f[i] == '/' && f[i - 1] != '/'; ++ taillen = i - dir_len; ++ dotdotetcsize = 3 * dotdots + taillen + 1; ++ if (dotdotetcsize <= linksize) { ++ if (!result) ++ result = emalloc(dotdotetcsize); ++ for (i = 0; i < dotdots; i++) ++ memcpy(result + 3 * i, "../", 3); ++ memmove(result + 3 * dotdots, f + dir_len, taillen + 1); ++ } ++ return result; ++} ++ + static void + dolink(char const *fromfield, char const *tofield, bool staysymlink) + { +@@ -800,30 +838,15 @@ dolink(char const *fromfield, char const *tofield, bool staysymlink) + link_errno = link(fromfield, tofield) == 0 ? 0 : errno; + } + if (link_errno != 0) { +- const char *s = fromfield; +- const char *t; +- char *p; +- size_t dotdots = 0; +- char *symlinkcontents; +- int symlink_errno; +- +- do +- t = s; +- while ((s = strchr(s, '/')) +- && strncmp(fromfield, tofield, ++s - fromfield) == 0); +- +- for (s = tofield + (t - fromfield); *s; s++) +- dotdots += *s == '/'; +- symlinkcontents = emalloc(3 * dotdots + strlen(t) + 1); +- for (p = symlinkcontents; dotdots-- != 0; p += 3) +- memcpy(p, "../", 3); +- strcpy(p, t); +- symlink_errno = symlink(symlinkcontents, tofield) == 0 ? 0 : errno; ++ bool absolute = *fromfield == '/'; ++ char *linkalloc = absolute ? NULL : relname(fromfield, tofield); ++ char const *contents = absolute ? fromfield : linkalloc; ++ int symlink_errno = symlink(contents, tofield) == 0 ? 0 : errno; + if (symlink_errno == ENOENT && !todirs_made) { + mkdirs(tofield, true); +- symlink_errno = symlink(symlinkcontents, tofield) == 0 ? 0 : errno; ++ symlink_errno = symlink(contents, tofield) == 0 ? 0 : errno; + } +- free(symlinkcontents); ++ free(linkalloc); + if (symlink_errno == 0) { + if (link_errno != ENOTSUP) + warning(_("symbolic link used because hard link failed: %s"), +-- +2.10.1 + diff --git a/timezone-java.changes b/timezone-java.changes index 610f8e6..12f2d3c 100644 --- a/timezone-java.changes +++ b/timezone-java.changes @@ -1,3 +1,38 @@ +------------------------------------------------------------------- +Thu Oct 6 19:14:45 UTC 2016 - astieger@suse.com + +- timezone update 2016g: + * Turkey will remain on UTC+03 after 2016-10-30 bsc#997830 + * New leap second 2016-12-31 23:59:60 UTC + Remove 0001-Positive-leap-second-on-2016-12-31.patch + * Corrections for past DST transitions + * Antarcica and nautical time zones now use numeric time zone + abbreviations instead of obsolete alphanumeric ones + * Renamed Asia/Rangoon to Asia/Yangon + * The following change was previously patched in the package + and is now upstream: + + If the installed localtime and/or posixrules files are + symbolic links, zic now keeps them symbolic links when + updating them, for compatibility with platforms like + openSUSE where other programs configure these files as + symlinks. + + zic now avoids hard linking to symbolic links, avoids + some unnecessary mkdir and stat system calls, and uses + shorter file names internally. + + Drop the patches: + tzcode-link.diff + tzcode-revert-01-8c9cb9580.patch + tzcode-revert-02-301f794f3.patch + tzcode-revert-03-39fd078a6.patch + tzcode-symlink.patch + tzcode-zic.diff + tzcode-fromname.patch + + Upstream changes did not account for TZDEFAULT being an + absolute path. Prevent broken symlinks (bsc#1003324), + add timezone-2016g-absolute-TZDEFAULT.patch + * zdump has a new -i option to generate transitions in a + more-compact but still human-readable format. (experimental) + ------------------------------------------------------------------- Mon Aug 8 17:29:14 UTC 2016 - astieger@suse.com diff --git a/timezone-java.keyring b/timezone-java.keyring new file mode 100644 index 0000000..9a73162 --- /dev/null +++ b/timezone-java.keyring @@ -0,0 +1,58 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: SKS 1.1.5 +Comment: Hostname: pgp.mit.edu + +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 +oi8buNcby4U= +=w6kQ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/timezone-java.spec b/timezone-java.spec index fde4bed..c602bb4 100644 --- a/timezone-java.spec +++ b/timezone-java.spec @@ -25,26 +25,17 @@ License: BSD-3-Clause and SUSE-Public-Domain Group: System/Base # COMMON-BEGIN # COMMON-BEGIN -Version: 2016f +Version: 2016g Release: 0 -Source: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz -Source1: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz -Source2: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz.asc -Source3: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz.asc -# http://sks.mrball.net/pks/lookup?op=get&search=0xED97E90E62AA7E34 -Source4: timezone.keyring -Patch100: tzcode-revert-01-8c9cb9580.patch -Patch101: tzcode-revert-02-301f794f3.patch -Patch102: tzcode-revert-03-39fd078a6.patch +Source: https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz +Source1: https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz +Source2: https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz.asc +Source3: https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz.asc +Source4: %{name}.keyring +Source5: %{name}.changes Patch0: tzdata-china.diff -Patch1: tzcode-zic.diff -# PATCH-FIX-OPENSUSE bnc#845530 -Patch2: tzcode-fromname.patch Patch3: iso3166-uk.diff -Patch4: tzcode-link.diff -Patch5: tzcode-symlink.patch -# PATCH-FIX-UPSTREAM 0001-Positive-leap-second-on-2016-12-31.patch bsc#988184 -Patch6: 0001-Positive-leap-second-on-2016-12-31.patch +Patch4: timezone-2016g-absolute-TZDEFAULT.patch # COMMON-END # COMMON-END Url: http://www.gnu.org/software/libc/libc.html @@ -64,19 +55,9 @@ package is intended for Java Virtual Machine based on OpenJDK. %setup -c -a 1 # COMMON-PREP-BEGIN # COMMON-PREP-BEGIN -%patch100 -p1 -R -%patch101 -p1 -R -%patch102 -p1 -R %patch0 -p1 -%patch1 -p1 -%patch2 -p1 %patch3 -p1 -%if 0%{?suse_version} < 1220 %patch4 -p1 -%else -%patch5 -p1 -%endif -%patch6 -p1 sed -ri 's@/usr/local/etc/zoneinfo@%{_datadir}/zoneinfo@g' *.[1358] # COMMON-PREP-END # COMMON-PREP-END diff --git a/timezone.changes b/timezone.changes index 610f8e6..12f2d3c 100644 --- a/timezone.changes +++ b/timezone.changes @@ -1,3 +1,38 @@ +------------------------------------------------------------------- +Thu Oct 6 19:14:45 UTC 2016 - astieger@suse.com + +- timezone update 2016g: + * Turkey will remain on UTC+03 after 2016-10-30 bsc#997830 + * New leap second 2016-12-31 23:59:60 UTC + Remove 0001-Positive-leap-second-on-2016-12-31.patch + * Corrections for past DST transitions + * Antarcica and nautical time zones now use numeric time zone + abbreviations instead of obsolete alphanumeric ones + * Renamed Asia/Rangoon to Asia/Yangon + * The following change was previously patched in the package + and is now upstream: + + If the installed localtime and/or posixrules files are + symbolic links, zic now keeps them symbolic links when + updating them, for compatibility with platforms like + openSUSE where other programs configure these files as + symlinks. + + zic now avoids hard linking to symbolic links, avoids + some unnecessary mkdir and stat system calls, and uses + shorter file names internally. + + Drop the patches: + tzcode-link.diff + tzcode-revert-01-8c9cb9580.patch + tzcode-revert-02-301f794f3.patch + tzcode-revert-03-39fd078a6.patch + tzcode-symlink.patch + tzcode-zic.diff + tzcode-fromname.patch + + Upstream changes did not account for TZDEFAULT being an + absolute path. Prevent broken symlinks (bsc#1003324), + add timezone-2016g-absolute-TZDEFAULT.patch + * zdump has a new -i option to generate transitions in a + more-compact but still human-readable format. (experimental) + ------------------------------------------------------------------- Mon Aug 8 17:29:14 UTC 2016 - astieger@suse.com diff --git a/timezone.keyring b/timezone.keyring index cc0ae78..9a73162 100644 --- a/timezone.keyring +++ b/timezone.keyring @@ -1,28 +1,58 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: SKS 1.1.5+ -Comment: Hostname: keys2.kfwebs.net +Version: SKS 1.1.5 +Comment: Hostname: pgp.mit.edu -mQENBFd7yYMBCADFWTwWRdWOZnZQG5cu6ZSJj47tyrXbSvwRinr2kGw7zP83YLFYLFt9HqzV -jeN1DXgWYaTPzrqg5ZK6h5YVoS+XLTMIAmMhgglXUtxuZ1bI97Qi48SVHQTtCBuOH/lVuqp1 -AVroqW/iK9hzNrmXm+NNZ5OwhVo1kOlnp/B8/425DgCg9Xwt8dueYtlrmTpFn+so/MbfsXgf -6+r4Bip5/bYebz9IKRoH4zvX7SHYkXmC47UozuKKSIkh6Fc7gFnGtyDR7fy2wb9TR181PqPg -/anRBFpEegez4g0Nkglh5w8+l3pG/RFEAW7HBt3ee7+hMuNj23uoIH4KivBgMM6V0foBABEB -AAG0IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+iQE4BBMBAgAiBQJXe8mDAhsD -BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAEPbY3RK1BjLtyB/90UnWXhNJLawcsjErp -ufHSwrM+vCXcn7X9pXqPfGY7fPxGwaClWUK2q6PG80NaNrncDihhc/NV3Avput7mrWw0o2GL -LHeDnqdGoddytXG3aO1uOkXOx4590p+Y7mtaD3AMCctQrm8n/6M2OEEHessxcJc4VpCznOXU -A/6mrom+VJvqkSaZEznMZmiZe5rA8zWp2GWKl1K0KJHtUZyDV4qlOtD+pNOm29yGJT0uCUuH -YFTx5PEcwuLnvJYosx33e82iPSKztb+9TchuAt7GiG05H8EQv4/+Yl6uBPFN1DUPezFpfqUo -jLh+J+2Sjt3zvLiS7nB/0nVzC94bnkYD2ujPuQENBFd7yYMBCACicN4ZgrhjxJAQ88wD/Ifn -Jh7c5O0xo8C9K4WLI/cPjo9Utybw+/C0wl2hDtx5no68U5Bw68n973SxGqZpNiJK201VwLHC -DpuDB1UPdmhgF58mDbchDoTEBbYxOJSLzy7eVcuISzm59Ui0vXRMT4dxoh808MxGk5dx7IaH -jwHc/DgEOk9tzk2pWY7mTe9xGfzTjU1KlrmAzL5vNz1IoVbBDRKuGUXLL6soY5BQQXyS874C -Pxk02QfIV+QLgET3is9Gw6J7wxQCxJwp53aHYxk/Uvp/VhoJJXNADVisH1IlL2ZJs8TfPTcp -xhSfU8+TNMcYwKdxnJ9fsl8pPBGayIY7ABEBAAGJAR8EGAECAAkFAld7yYMCGwwACgkQBD22 -N0StQYxQDAgAsqemuGs020uYbP4fchwVy3bVgfQyVnobZhkg6z4vb9Wvw3f37sFBFsjPylMZ -doUuX2jpmVPZgYK4ENV8gJKsm6ocneit07kAdZRGxeP5Lkt2kAhrZ6/2YSKZkiMFH+0WN7Ch -1ITsLoxe++9WxIQGI66RgTxfnlLnbuEXhIO8Qjepa1LcI/k+Yh9gLdRgtan9VAg0C4r40Cip -Yzuf9mKImYIPlJpGKIb7SAQDIAcmOkWK8cbCL7XRsd0ZjTrBbPxlmB2nB9+g4L3dCe0TmRq4 -SFM/8RjpqdxqdFknCMo4r9EaoagG0wbUKybbYHXiFD2bJ8ShriUwkp8vrInbj7cIww== -=+hBC +mQINBEyAcmQBEADAAyH2xoTu7ppG5D3a8FMZEon74dCvc4+q1XA2J2tBy2pwaTqfhpxxdGA9 +Jj50UJ3PD4bSUEgN8tLZ0san47l5XTAFLi2456ciSl5m8sKaHlGdt9XmAAtmXqeZVIYX/UFS +96fDzf4xhEmm/y7LbYEPQdUdxu47xA5KhTYp5bltF3WYDz1Ygd7gx07Auwp7iw7eNvnoDTAl +KAl8KYDZzbDNCQGEbpY3efZIvPdeI+FWQN4W+kghy+P6au6PrIIhYraeua7XDdb2LS1en3Ss +mE3QjqfRqI/A2ue8JMwsvXe/WK38Ezs6x74iTaqI3AFH6ilAhDqpMnd/msSESNFt76DiO1ZK +QMr9amVPknjfPmJISqdhgB1DlEdw34sROf6V8mZw0xfqT6PKE46LcFefzs0kbg4GORf8vjG2 +Sf1tk5eU8MBiyN/bZ03bKNjNYMpODDQQwuP84kYLkX2wBxxMAhBxwbDVZudzxDZJ1C2VXujC +OJVxq2kljBM9ETYuUGqd75AW2LXrLw6+MuIsHFAYAgRr7+KcwDgBAfwhPBYX34nSSiHlmLC+ +KaHLeCLF5ZI2vKm3HEeCTtlOg7xZEONgwzL+fdKo+D6SoC8RRxJKs8a3sVfI4t6CnrQzvJbB +n6gxdgCu5i29J1QCYrCYvql2UyFPAK+do99/1jOXT4m2836j1wARAQABtCBQYXVsIEVnZ2Vy +dCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PokCHAQQAQIABgUCVi604AAKCRDNVPzj2WS++xxpD/4h +ZPbOUfcFLwePuSD3tqKrcmAq0vmyND1aNSOht0OlUbnHtsWxJmThEVEF25VfPbWhD+DZjRj8 +hkQNzgkdeLJXJNj8JqS/MedrVa3j3wzHAnSt6fIQ8VvLmZDYg2gCpZrlU/y15ObyOrPkgOCC +6MC2PFwHnEpAfR0d6AdbZ+ZeLqbvkB/tkMsqroNMSlPtgq8AWCKX++WJTBpSw0o/iZjNkq7j +W/BWgEVn51oTH8mgS2QN7mxltlaGG3x0AINjKcawfTX+lPksdZ5h9Fy+2QD9MoeAoEKsrS1z +FYSVAVwrVAGwvAvz7sFxYzAh0Z+IO80Vwvm8VWfKrKr+483dzR7MzqfQyuCfMwEWg+hQ8r26 +qCRbe5KgNozVLsV3f1Sj5PwwnT5KE7jgikYHGk+kSti1V/PiiKfCn9VAHvDad4P+o11R7aH4 +PaoZYb0M+S7FmKaQfeWcpymHLmpfG8JA7MCsQY0U7ix2jYHIjRZZgolYJ8T2JFf4VlzhiwsM +wFNycPqNmGHF4da1dm248ugKqLFls2aVdb9mTlFYrUQOtLN/FizELEv8dXt4A1bjoK9pO1ZF +wffgfP5afmFjHMSX6Z3KcXGmXZ1tYQocco7S4J4PyERGFhTyT7skXIzuml59+2G4WxGiatJI +3hhxaN0237vot5sIVDl1TpCMLr/02+qKfYkCPgQTAQIAKAUCTIByZAIbAwUJEswDAAYLCQgH +AwIGFQgCCQoLBBYCAwECHgECF4AACgkQ7ZfpDmKqfjRRGw/+Ij03dhYfYl/gXVRiuzV1gGrb +Hk+tnfrI/C7fAeoFzQ5tVgVinShaPkZo0HTPf18x6IDEdAiO8Mqo1yp0CtHmzGMCJ50o4Grg +fjlr6g/+vtEOKbhleszN2XpJvpwM2QgGvn/laTLUu8PH9aRWTs7qJJZKKKAb4sxYc92FehPu +6FOD0dDiyhlDAq4lOV2mdBpzQbiojoZzQLMQwjpgCTK2572eK9EOEQySUThXrSIz6ASenp4N +YTFHs9tuJQvXk9gZDdPSl3bp+47dGxlxEWLpBIM7zIONw4ks4azgT8nvDZxA5IZHtvqBlJLB +ObYY0Le61Wp0y3TlBDh2qdK8eYL426W4scEMSuig5gb8OAtQiBW6k2sGUxxeiv8ovWu8YAZg +KJfuoWI+uRnMEddruY8JsoM54KaKvZikkKs2bg1ndtLVzHpJ6qFZC7QVjeHUh6/BmgvdjWPZ +YFTtN+KA9CWX3GQKKgN3uu988yznD7LnB98T4EUH1HA/GnfBqMV1gpzTvPc4qVQinCmIkEFp +83zl+G5fCjJJ3W7ivzCnYo4KhKLpFUm97okTKR2LW3xZzEW4cLSWO387MTK3CzDOx5qe6s4a +91ZuZM/j/TQdTLDaqNn83kA4Hq48UHXYxcIh+Nd8k/3w6lFuoK0wrOFiywjLx+0ur5jmmbec +BGHc1xdhAFG5Ag0ETIByZAEQAKaF678T9wyH4wjTrV1Pz3cDEoSnV/0ZUrOT37p1dcGyj/IX +q1x670HRVahAmk0sZpYc25PF9D5GPYHFWlNjuPU96rDndXB3hedmBRhLdC4bAXjI4DV+bmdV +e+q/IMnlZRaVlm9EiMCVAR6w13sReu7qXkW9r3RwY2AzXskp/tAe4BRKr1Zmbvi2nbnQ6epE +C42rRbx0B1EhjbIQZ5JHGk24iPT7LdBgnNmos5wYjzwNlkMQD5T0Ydzhk7J+UxwA5m46mOhR +DC2rFV/A0gm5TLy8DXjv/Esc4gYnYai6SQqnUEVh5LuV8YCJBnijs+Tiw71x1icmn6xGI45E +ugJOgec+rLypYgpVp4x0HI5T88qBRYCkxH3Kg8Qo+EWNA9A4LRQ9DX8njona0gf0s03tocK8 +kBN66UoqqPtHBnc4eMgBymCflK12eKfd2YYxnyg9cZazWA5VslvTxpm76hbg5oiAEH/Vg/8M +xHyAnPhfrgwyPrmJEcVBafdspJnYQxBYNco2LFPIhlOvWh8r4at+s+M3Lb26oUTczlgdW1Sf +3SDA77BMRnF0FQyE+7AzV79MBN4ykiqaezQxtaF1Fy/tvkhffSo8u+dwG0EgJh+te38gTcIS +Vr0GIPplLz6YhjrbHrPRF1CN5UuL9DBGjxuN35RLNVEfta6RUFlR6NctTjvrABEBAAGJAiUE +GAECAA8FAkyAcmQCGwwFCRLMAwAACgkQ7ZfpDmKqfjSrHA/+KzAKvTxRhA9MWNLxIyJ7S5uJ +16gsT3oCjZrBKGEhKMOGX4O0GA6VOEryO7QRCCYah3oxSG38IAnNeiwJXgU9Bzkk85UGbPEd +7HGF/VSeHCQwWou6jqUDTSDvn9YhNTdG0KXPM74aC+xr2Zow1O2mhXihgWKD0Dw+0LYPnUOs +Q0KOFxHXXYHmRrS1OZPU59BLvc+TRhIhafSHKLwbXK+6ckkxBx6h8z5ccpG0Qs4bFhdFYnFr +EieDLoGmnE2YLhdV6swJ9VNCS6pLiEohT3fm7aXm15tZOIyzMZhHRSAPblXxQ0ZSWjq8oRrc +YNFxc4W1URpAkBCOYJoXvQfD5L3lqAl8TCqDUzYxhH/tJhbDdHrqHH767jaDaTB1+Talp/2A +MKwcXNOdiklGxbmHVG6YGl6g8Lrbsu9NZEI4yLlHzuikthJWgz+3vZhVGyNlt+HNIoF6CjDL +2omu5cEq4RDHM44QqPk6l7O0pUvN1mT4B+S1b08RKpqm/ff015E37HNV/piIvJlxGAYz8PSf +uGCB1thMYqlmgdhd9/BabGFbGGYHA6U4/T5zqU+f6xHy1SsAQZ1MSKlLwekBIT+4/cLRGqCH +jnV0q5H/T6a7t5mPkbzSrOLSo4puj+IToNjYyYIDBWzhlA19avOa+rvUjmHtD3sFN7cXWtkG +oi8buNcby4U= +=w6kQ -----END PGP PUBLIC KEY BLOCK----- diff --git a/timezone.spec b/timezone.spec index d301761..6616e92 100644 --- a/timezone.spec +++ b/timezone.spec @@ -23,26 +23,17 @@ Group: System/Base Url: http://www.iana.org/time-zones PreReq: filesystem, coreutils # COMMON-BEGIN -Version: 2016f +Version: 2016g Release: 0 -Source: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz -Source1: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz -Source2: ftp://ftp.iana.org/tz/releases/tzdata%{version}.tar.gz.asc -Source3: ftp://ftp.iana.org/tz/releases/tzcode%{version}.tar.gz.asc -# http://sks.mrball.net/pks/lookup?op=get&search=0xED97E90E62AA7E34 -Source4: timezone.keyring -Patch100: tzcode-revert-01-8c9cb9580.patch -Patch101: tzcode-revert-02-301f794f3.patch -Patch102: tzcode-revert-03-39fd078a6.patch +Source: https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz +Source1: https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz +Source2: https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz.asc +Source3: https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz.asc +Source4: %{name}.keyring +Source5: %{name}.changes Patch0: tzdata-china.diff -Patch1: tzcode-zic.diff -# PATCH-FIX-OPENSUSE bnc#845530 -Patch2: tzcode-fromname.patch Patch3: iso3166-uk.diff -Patch4: tzcode-link.diff -Patch5: tzcode-symlink.patch -# PATCH-FIX-UPSTREAM 0001-Positive-leap-second-on-2016-12-31.patch bsc#988184 -Patch6: 0001-Positive-leap-second-on-2016-12-31.patch +Patch4: timezone-2016g-absolute-TZDEFAULT.patch # COMMON-END BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -58,19 +49,9 @@ can select an appropriate time zone for your system with YaST. %prep %setup -q -c -a 1 # COMMON-PREP-BEGIN -%patch100 -p1 -R -%patch101 -p1 -R -%patch102 -p1 -R %patch0 -p1 -%patch1 -p1 -%patch2 -p1 %patch3 -p1 -%if 0%{?suse_version} < 1220 %patch4 -p1 -%else -%patch5 -p1 -%endif -%patch6 -p1 sed -ri 's@/usr/local/etc/zoneinfo@%{_datadir}/zoneinfo@g' *.[1358] # COMMON-PREP-END diff --git a/tzcode-fromname.patch b/tzcode-fromname.patch deleted file mode 100644 index f9d913d..0000000 --- a/tzcode-fromname.patch +++ /dev/null @@ -1,27 +0,0 @@ -Index: timezone-2016b/zic.c -=================================================================== ---- timezone-2016b.orig/zic.c -+++ timezone-2016b/zic.c -@@ -768,7 +768,7 @@ dolink(char const *fromfield, char const - - result = link(fromname, toname); - if (result != 0) { -- const char *s = fromfield; -+ const char *s = fromname; - const char *t; - char *p; - size_t dotdots = 0; -@@ -777,10 +777,10 @@ dolink(char const *fromfield, char const - do - t = s; - while ((s = strchr(s, '/')) -- && ! strncmp (fromfield, tofield, -- ++s - fromfield)); -+ && ! strncmp (fromname, tofield, -+ ++s - fromname)); - -- for (s = tofield + (t - fromfield); *s; s++) -+ for (s = tofield + (t - fromname); *s; s++) - dotdots += *s == '/'; - symlinkcontents - = emalloc(3 * dotdots + strlen(t) + 1); diff --git a/tzcode-link.diff b/tzcode-link.diff deleted file mode 100644 index e5ac3f2..0000000 --- a/tzcode-link.diff +++ /dev/null @@ -1,54 +0,0 @@ -This patch is used on openSUSE versions older than 12.2. -Back then, /etc/localtime was either a hard link to a zone -file in /usr/share/zoneinfo or a copy of it. - -By default, zic tries the following approaches to create -/etc/localtime: - - 1. Hard link - 2. Symbolic link - 3. File copy - -This patch changes the order to: - - 1. Hard link - 2. File copy - 3. Symbolic link - -Index: timezone-2015f/zic.c -=================================================================== ---- timezone-2015f.orig/zic.c -+++ timezone-2015f/zic.c -@@ -738,6 +738,23 @@ relname(char const *dir, char const *bas - } - } - -+static int -+copy(fromname, toname) -+const char * const fromname; -+const char * const toname; -+{ -+ if (!fork()) { -+ execl("/bin/cp", "cp", fromname, toname, (char*) NULL); -+ _exit(1); -+ } -+ int s; -+ if (wait(&s) < 0) -+ return -1; -+ if (!WIFEXITED(s)) -+ return -1; -+ return -WEXITSTATUS(s); -+} -+ - static void - dolink(char const *fromfield, char const *tofield) - { -@@ -767,6 +784,8 @@ dolink(char const *fromfield, char const - exit(EXIT_FAILURE); - - result = link(fromname, toname); -+ if (result != 0) -+ result = copy(fromname, toname); - if (result != 0) { - const char *s = fromname; - const char *t; diff --git a/tzcode-revert-01-8c9cb9580.patch b/tzcode-revert-01-8c9cb9580.patch deleted file mode 100644 index 809499b..0000000 --- a/tzcode-revert-01-8c9cb9580.patch +++ /dev/null @@ -1,60 +0,0 @@ -commit 8c9cb958078b470e352a58f7f2d756544051e59b -Author: Paul Eggert -Date: Fri Feb 26 12:36:17 2016 -0800 - - Fix asctime_r warning with MS-Windows - - Problem reported by Ian Abbott in: - http://mm.icann.org/pipermail/tz/2016-February/023291.html - * Makefile (CFLAGS): Add comment about new -D option. - * private.h (HAVE_DECL_ASCTIME_R): New macro. - (asctime_r): Depend on this, not on HAVE_POSIX_DECLS. - -diff --git a/Makefile b/Makefile -index 20c2c98..5e2fb52 100644 ---- a/Makefile -+++ b/Makefile -@@ -106,6 +106,7 @@ LDLIBS= - - # Add the following to the end of the "CFLAGS=" line as needed. - # -DBIG_BANG=-9999999LL if the Big Bang occurred at time -9999999 (see zic.c) -+# -DHAVE_DECL_ASCTIME_R=0 if does not declare asctime_r - # -DHAVE_DIRECT_H if mkdir needs (MS-Windows) - # -DHAVE_DOS_FILE_NAMES if file names have drive specifiers etc. (MS-DOS) - # -DHAVE_GETTEXT=1 if 'gettext' works (GNU, Linux, Solaris); also see LDLIBS -diff --git a/private.h b/private.h -index e23764d..941e91b 100644 ---- a/private.h -+++ b/private.h -@@ -22,6 +22,10 @@ - ** You can override these in your C compiler options, e.g. '-DHAVE_GETTEXT=1'. - */ - -+#ifndef HAVE_DECL_ASCTIME_R -+#define HAVE_DECL_ASCTIME_R 1 -+#endif -+ - #ifndef HAVE_GETTEXT - #define HAVE_GETTEXT 0 - #endif /* !defined HAVE_GETTEXT */ -@@ -386,17 +390,11 @@ time_t time(time_t *); - void tzset(void); - #endif - --/* --** Some time.h implementations don't declare asctime_r. --** Others might define it as a macro. --** Fix the former without affecting the latter. --** Similarly for timezone, daylight, and altzone. --*/ -+#if !HAVE_DECL_ASCTIME_R && !defined asctime_r -+extern char *asctime_r(struct tm const *restrict, char *restrict); -+#endif - - #if !HAVE_POSIX_DECLS --# ifndef asctime_r --extern char * asctime_r(struct tm const *restrict, char *restrict); --# endif - # ifdef USG_COMPAT - # ifndef timezone - extern long timezone; diff --git a/tzcode-revert-02-301f794f3.patch b/tzcode-revert-02-301f794f3.patch deleted file mode 100644 index b621070..0000000 --- a/tzcode-revert-02-301f794f3.patch +++ /dev/null @@ -1,96 +0,0 @@ -commit 301f794f33d145b08fbf7f5247c8663d404fabb5 -Author: Paul Eggert -Date: Fri Feb 26 08:58:45 2016 -0800 - - Fix tzname redefinition in MS-Windows - - Problem reported by Ian Abbott in: - http://mm.icann.org/pipermail/tz/2016-February/023289.html - * localtime.c (tzname): Don’t define if HAVE_POSIX_DECLS, - as causes the Microsoft compiler to complain that tzname - is redeclared without dllimport. - * localtime.c, private.h (altzone): Do define even if - HAVE_POSIX_DECLS, since this is not a POSIX-specified variable. - -diff --git a/localtime.c b/localtime.c -index e3bc763..276ce34 100644 ---- a/localtime.c -+++ b/localtime.c -@@ -178,11 +178,6 @@ static struct state gmtmem; - static char lcl_TZname[TZ_STRLEN_MAX + 1]; - static int lcl_is_set; - --char * tzname[2] = { -- (char *) wildabbr, -- (char *) wildabbr --}; -- - /* - ** Section 4.12.3 of X3.159-1989 requires that - ** Except for the strftime function, these functions [asctime, -@@ -193,10 +188,16 @@ char * tzname[2] = { - - static struct tm tm; - --#ifdef USG_COMPAT -+#if !HAVE_POSIX_DECLS -+char * tzname[2] = { -+ (char *) wildabbr, -+ (char *) wildabbr -+}; -+# ifdef USG_COMPAT - long timezone; - int daylight; --#endif /* defined USG_COMPAT */ -+# endif -+#endif - - #ifdef ALTZONE - long altzone; -diff --git a/private.h b/private.h -index 6080e71..e23764d 100644 ---- a/private.h -+++ b/private.h -@@ -386,8 +386,6 @@ time_t time(time_t *); - void tzset(void); - #endif - --#if !HAVE_POSIX_DECLS -- - /* - ** Some time.h implementations don't declare asctime_r. - ** Others might define it as a macro. -@@ -395,24 +393,24 @@ void tzset(void); - ** Similarly for timezone, daylight, and altzone. - */ - --#ifndef asctime_r -+#if !HAVE_POSIX_DECLS -+# ifndef asctime_r - extern char * asctime_r(struct tm const *restrict, char *restrict); --#endif -- --#ifdef USG_COMPAT --# ifndef timezone --extern long timezone; - # endif --# ifndef daylight -+# ifdef USG_COMPAT -+# ifndef timezone -+extern long timezone; -+# endif -+# ifndef daylight - extern int daylight; -+# endif - # endif - #endif -+ - #if defined ALTZONE && !defined altzone - extern long altzone; - #endif - --#endif -- - /* - ** The STD_INSPIRED functions are similar, but most also need - ** declarations if time_tz is defined. diff --git a/tzcode-revert-03-39fd078a6.patch b/tzcode-revert-03-39fd078a6.patch deleted file mode 100644 index 0cccaa2..0000000 --- a/tzcode-revert-03-39fd078a6.patch +++ /dev/null @@ -1,319 +0,0 @@ -commit 39fd078a694fa762de5ae7efceca1dbfb7be94b3 -Author: Paul Eggert -Date: Fri Feb 26 03:33:54 2016 -0800 - - Port better to MS-Windows - - Problems reported by Ian Abbott in: - http://mm.icann.org/pipermail/tz/2016-February/023286.html - http://mm.icann.org/pipermail/tz/2016-February/023287.html - * Makefile (CFLAGS): Add comment about new -D options. - * date.c (environ, optarg, optind, tzname): - * private.h (asctime_r, timezone, daylight, altzone): - * strftime.c (tzname): - * zdump.c (environ, getopt, optarg, optind, tzname): - * zic.c (getopt, link, optarg, optind): - Do not declare if HAVE_POSIX_DECLS, to avoid collisions with - system declarations, which is a problem with MS-Windows - and tzname and the dllimport attribute. - * date.c, zdump.c (tzname): Do not specify size, as POSIX doesn’t. - * private.h (HAVE_POSIX_DECLS): Default to 1. - (ENOTSUP): Default to EINVAL. - * zic.c: If HAVE_DIRECT_H, include direct.h and io.h and - define a mkdir macro, for MS-Windows. - (link, symlink): Set errno to ENOTSUP in the substitutes. - (dolink): Don’t complain merely because link and/or - symlink is not supported. Be a bit more economical and robust - about checking for directories and existing destinations. - Report errno-related string on link failures. - (itsdir): Work correctly even if a directory has a timestamp that - is out of time_t range, so that stat fails with errno == - EOVERFLOW. - (writezone): Don’t remove files we can’t stat. - -diff --git a/Makefile b/Makefile -index 568f7f6..20c2c98 100644 ---- a/Makefile -+++ b/Makefile -@@ -106,6 +106,7 @@ LDLIBS= - - # Add the following to the end of the "CFLAGS=" line as needed. - # -DBIG_BANG=-9999999LL if the Big Bang occurred at time -9999999 (see zic.c) -+# -DHAVE_DIRECT_H if mkdir needs (MS-Windows) - # -DHAVE_DOS_FILE_NAMES if file names have drive specifiers etc. (MS-DOS) - # -DHAVE_GETTEXT=1 if 'gettext' works (GNU, Linux, Solaris); also see LDLIBS - # -DHAVE_INCOMPATIBLE_CTIME_R=1 if your system's time.h declares -@@ -116,6 +117,8 @@ LDLIBS= - # -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz - # This defaults to 1 if a working localtime_rz seems to be available. - # localtime_rz can make zdump significantly faster, but is nonstandard. -+# -DHAVE_POSIX_DECLS=0 if your system's include files do not declare -+# functions like 'link' or variables like 'tzname' required by POSIX - # -DHAVE_STDINT_H=1 if you have a pre-C99 compiler with "stdint.h" - # -DHAVE_STRFTIME_L=1 if declares locale_t and strftime_l - # This defaults to 0 if _POSIX_VERSION < 200809, 1 otherwise. -diff --git a/date.c b/date.c -index 824e57d..4c11f61 100644 ---- a/date.c -+++ b/date.c -@@ -42,10 +42,12 @@ - #define SECSPERMIN 60 - #endif /* !defined SECSPERMIN */ - -+#if !HAVE_POSIX_DECLS - extern char ** environ; - extern char * optarg; - extern int optind; --extern char * tzname[2]; -+extern char * tzname[]; -+#endif - - static int retval = EXIT_SUCCESS; - -diff --git a/private.h b/private.h -index 1c176e6..6080e71 100644 ---- a/private.h -+++ b/private.h -@@ -34,6 +34,10 @@ - #define HAVE_LINK 1 - #endif /* !defined HAVE_LINK */ - -+#ifndef HAVE_POSIX_DECLS -+#define HAVE_POSIX_DECLS 1 -+#endif -+ - #ifndef HAVE_STRDUP - #define HAVE_STRDUP 1 - #endif -@@ -106,6 +110,9 @@ - #ifndef ENAMETOOLONG - # define ENAMETOOLONG EINVAL - #endif -+#ifndef ENOTSUP -+# define ENOTSUP EINVAL -+#endif - #ifndef EOVERFLOW - # define EOVERFLOW EINVAL - #endif -@@ -379,6 +386,8 @@ time_t time(time_t *); - void tzset(void); - #endif - -+#if !HAVE_POSIX_DECLS -+ - /* - ** Some time.h implementations don't declare asctime_r. - ** Others might define it as a macro. -@@ -402,6 +411,8 @@ extern int daylight; - extern long altzone; - #endif - -+#endif -+ - /* - ** The STD_INSPIRED functions are similar, but most also need - ** declarations if time_tz is defined. -diff --git a/strftime.c b/strftime.c -index 7a139bd..f75f9fd 100644 ---- a/strftime.c -+++ b/strftime.c -@@ -106,7 +106,9 @@ static char * _fmt(const char *, const struct tm *, char *, const char *, - int *); - static char * _yconv(int, int, bool, bool, char *, char const *); - -+#if !HAVE_POSIX_DECLS - extern char * tzname[]; -+#endif - - #ifndef YEAR_2000_NAME - #define YEAR_2000_NAME "CHECK_STRFTIME_FORMATS_FOR_TWO_DIGIT_YEARS" -diff --git a/zdump.c b/zdump.c -index 063a263..64d90f6 100644 ---- a/zdump.c -+++ b/zdump.c -@@ -238,12 +238,14 @@ enum { SECSPER400YEARS_FITS = SECSPERLYEAR <= INTMAX_MAX / 400 }; - # define timezone_t char ** - #endif - -+#if !HAVE_POSIX_DECLS - extern char ** environ; - extern int getopt(int argc, char * const argv[], - const char * options); - extern char * optarg; - extern int optind; --extern char * tzname[2]; -+extern char * tzname[]; -+#endif - - /* The minimum and maximum finite time values. */ - enum { atime_shift = CHAR_BIT * sizeof (time_t) - 2 }; -diff --git a/zic.c b/zic.c -index 78ab870..0ec3359 100644 ---- a/zic.c -+++ b/zic.c -@@ -22,6 +22,13 @@ typedef int_fast64_t zic_t; - #define ZIC_MAX_ABBR_LEN_WO_WARN 6 - #endif /* !defined ZIC_MAX_ABBR_LEN_WO_WARN */ - -+#ifdef HAVE_DIRECT_H -+# include -+# include -+# undef mkdir -+# define mkdir(name, mode) _mkdir(name) -+#endif -+ - #if HAVE_SYS_STAT_H - #include - #endif -@@ -87,17 +94,19 @@ struct zone { - zic_t z_untiltime; - }; - -+#if !HAVE_POSIX_DECLS - extern int getopt(int argc, char * const argv[], - const char * options); - extern int link(const char * fromname, const char * toname); - extern char * optarg; - extern int optind; -+#endif - - #if ! HAVE_LINK --# define link(from, to) (-1) -+# define link(from, to) (errno = ENOTSUP, -1) - #endif - #if ! HAVE_SYMLINK --# define symlink(from, to) (-1) -+# define symlink(from, to) (errno = ENOTSUP, -1) - #endif - - static void addtt(zic_t starttime, int type); -@@ -758,41 +767,47 @@ dolink(char const *fromfield, char const *tofield) - progname, fromname, e); - exit(EXIT_FAILURE); - } -- if (itsdir(toname) <= 0) -- remove(toname); - if (link(fromname, toname) != 0) { -- int result; -+ int link_errno = errno; -+ bool retry_if_link_supported = false; - -- if (! mkdirs(toname)) -- exit(EXIT_FAILURE); -- -- result = link(fromname, toname); -- if (result != 0) { -- const char *s = fromfield; -- const char *t; -- char *p; -- size_t dotdots = 0; -- register char * symlinkcontents = NULL; -- -- do -- t = s; -- while ((s = strchr(s, '/')) -- && ! strncmp (fromfield, tofield, -- ++s - fromfield)); -- -- for (s = tofield + (t - fromfield); *s; s++) -- dotdots += *s == '/'; -- symlinkcontents -- = emalloc(3 * dotdots + strlen(t) + 1); -- for (p = symlinkcontents; dotdots-- != 0; p += 3) -- memcpy(p, "../", 3); -- strcpy(p, t); -- result = symlink(symlinkcontents, toname); -- if (result == 0) --warning(_("hard link failed, symbolic link used")); -- free(symlinkcontents); -- } -- if (result != 0) { -+ if (link_errno == ENOENT || link_errno == ENOTSUP) { -+ if (! mkdirs(toname)) -+ exit(EXIT_FAILURE); -+ retry_if_link_supported = true; -+ } -+ if ((link_errno == EEXIST || link_errno == ENOTSUP) -+ && itsdir(toname) == 0 -+ && (remove(toname) == 0 || errno == ENOENT)) -+ retry_if_link_supported = true; -+ if (retry_if_link_supported && link_errno != ENOTSUP) -+ link_errno = link(fromname, toname) == 0 ? 0 : errno; -+ if (link_errno != 0) { -+ const char *s = fromfield; -+ const char *t; -+ char *p; -+ size_t dotdots = 0; -+ char *symlinkcontents; -+ int symlink_result; -+ -+ do -+ t = s; -+ while ((s = strchr(s, '/')) -+ && strncmp(fromfield, tofield, ++s - fromfield) == 0); -+ -+ for (s = tofield + (t - fromfield); *s; s++) -+ dotdots += *s == '/'; -+ symlinkcontents = emalloc(3 * dotdots + strlen(t) + 1); -+ for (p = symlinkcontents; dotdots-- != 0; p += 3) -+ memcpy(p, "../", 3); -+ strcpy(p, t); -+ symlink_result = symlink(symlinkcontents, toname); -+ free(symlinkcontents); -+ if (symlink_result == 0) { -+ if (link_errno != ENOTSUP) -+ warning(_("symbolic link used because hard link failed: %s"), -+ strerror (link_errno)); -+ } else { - FILE *fp, *tp; - int c; - fp = fopen(fromname, "rb"); -@@ -815,8 +830,11 @@ warning(_("hard link failed, symbolic link used")); - putc(c, tp); - close_file(fp, fromname); - close_file(tp, toname); -- warning(_("link failed, copy used")); -- } -+ if (link_errno != ENOTSUP) -+ warning(_("copy used because hard link failed: %s"), -+ strerror (link_errno)); -+ } -+ } - } - free(fromname); - free(toname); -@@ -863,18 +881,17 @@ itsdir(char const *name) - { - struct stat st; - int res = stat(name, &st); -- if (res != 0) -- return res; - #ifdef S_ISDIR -- return S_ISDIR(st.st_mode) != 0; --#else -- { -+ if (res == 0) -+ return S_ISDIR(st.st_mode) != 0; -+#endif -+ if (res == 0 || errno == EOVERFLOW) { - char *nameslashdot = relname(name, "."); -- res = stat(nameslashdot, &st); -+ bool dir = stat(nameslashdot, &st) == 0 || errno == EOVERFLOW; - free(nameslashdot); -- return res == 0; -+ return dir; - } --#endif -+ return -1; - } - - /* -@@ -1685,7 +1702,7 @@ writezone(const char *const name, const char *const string, char version) - /* - ** Remove old file, if any, to snap links. - */ -- if (itsdir(fullname) <= 0 && remove(fullname) != 0 && errno != ENOENT) { -+ if (itsdir(fullname) == 0 && remove(fullname) != 0 && errno != ENOENT) { - const char *e = strerror(errno); - - fprintf(stderr, _("%s: Can't remove %s: %s\n"), diff --git a/tzcode-symlink.patch b/tzcode-symlink.patch deleted file mode 100644 index d13624f..0000000 --- a/tzcode-symlink.patch +++ /dev/null @@ -1,89 +0,0 @@ -This patch is used on openSUSE 12.2 or newer. Nowadays, -/etc/localtime is by default a symbolic link to a zone -file in /usr/share/zoneinfo. - -By default, zic tries the following approaches to create -/etc/localtime: - - 1. Hard link - 2. Symbolic link - 3. File copy - -This patch changes the logic slightly: keep using symbolic -links if /etc/localtime is already one. If it isn't, use -the default order as listed above. - -Index: timezone-2015f/zic.c -=================================================================== ---- timezone-2015f.orig/zic.c -+++ timezone-2015f/zic.c -@@ -105,7 +105,7 @@ static int addtype(zic_t, char const *, - static void leapadd(zic_t, bool, int, int); - static void adjleap(void); - static void associate(void); --static void dolink(const char * fromfield, const char * tofield); -+static void dolink(const char * fromfield, const char * tofield, int defaultsymlink); - static char ** getfields(char * buf); - static zic_t gethms(const char * string, const char * errstring, - bool); -@@ -633,7 +633,7 @@ _("%s: More than one -L option specified - */ - for (i = 0; i < nlinks; ++i) { - eat(links[i].l_filename, links[i].l_linenum); -- dolink(links[i].l_from, links[i].l_to); -+ dolink(links[i].l_from, links[i].l_to, false); - if (noise) - for (j = 0; j < nlinks; ++j) - if (strcmp(links[i].l_to, -@@ -642,11 +642,11 @@ _("%s: More than one -L option specified - } - if (lcltime != NULL) { - eat(_("command line"), 1); -- dolink(lcltime, TZDEFAULT); -+ dolink(lcltime, TZDEFAULT, true); - } - if (psxrules != NULL) { - eat(_("command line"), 1); -- dolink(psxrules, TZDEFRULES); -+ dolink(psxrules, TZDEFRULES, false); - } - if (warnings && (ferror(stderr) || fclose(stderr) != 0)) - return EXIT_FAILURE; -@@ -739,14 +739,17 @@ relname(char const *dir, char const *bas - } - - static void --dolink(char const *fromfield, char const *tofield) -+dolink(char const *fromfield, char const *tofield, int defaultsymlink) - { -+ struct stat st; - register char * fromname; - register char * toname; - register int fromisdir; - - fromname = relname(directory, fromfield); - toname = relname(directory, tofield); -+ if (lstat(fromname, &st) == 0 && S_ISLNK(st.st_mode)) -+ defaultsymlink = true; - /* - ** We get to be careful here since - ** there's a fair chance of root running us. -@@ -760,14 +763,14 @@ dolink(char const *fromfield, char const - } - if (itsdir(toname) <= 0) - remove(toname); -- if (link(fromname, toname) != 0) { -+ if (defaultsymlink || link(fromname, toname) != 0) { - int result; - - if (! mkdirs(toname)) - exit(EXIT_FAILURE); -- -- result = link(fromname, toname); -- if (result != 0) { -+ if (!defaultsymlink) -+ result = link(fromname, toname); -+ if ((defaultsymlink || (!defaultsymlink && result != 0))) { - const char *s = fromname; - const char *t; - char *p; diff --git a/tzcode-zic.diff b/tzcode-zic.diff deleted file mode 100644 index 625cef2..0000000 --- a/tzcode-zic.diff +++ /dev/null @@ -1,15 +0,0 @@ -Index: timezone-2016b/zic.c -=================================================================== ---- timezone-2016b.orig/zic.c -+++ timezone-2016b/zic.c -@@ -788,8 +788,10 @@ dolink(char const *fromfield, char const - memcpy(p, "../", 3); - strcpy(p, t); - result = symlink(symlinkcontents, toname); -+#if 0 - if (result == 0) - warning(_("hard link failed, symbolic link used")); -+#endif - free(symlinkcontents); - } - if (result != 0) { diff --git a/tzcode2016f.tar.gz b/tzcode2016f.tar.gz deleted file mode 100644 index 6f5d849..0000000 --- a/tzcode2016f.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72325f384490a310eeb2ea0fab7e6f011a5be19adab2ff9d83bf9d1993b066ed -size 194905 diff --git a/tzcode2016f.tar.gz.asc b/tzcode2016f.tar.gz.asc deleted file mode 100644 index 65dd4b8..0000000 --- a/tzcode2016f.tar.gz.asc +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1 - -iQEcBAABAgAGBQJXe8puAAoJEAQ9tjdErUGMYo8IAKif54YlyHHNdLSWzAseY1jf -80hiZG4bIDVNXD5qNAN5sIf7FexBNS9h/KB3H2xJ+47UZHfBqEIRSdNM3+1cFhPg -EZShIc8PKPkjS3/pxdR+7Sz/JWGDq1FyNCnBNoyRhKAcDWH3rsa2L7Q3hvkZ7Xcg -8DlhCcixLSX/rhJEs7k61FcGXivUkrht8trrvoTTBkoFpGUqt+x+cNan0z0qyiqF -PLQq7YJAjstGRsli97+P72WdJDRY6JL716slICKO5IYDki9xmpcBuj4l0bAxR+6c -PiZWlePe1TTyT0+shefy0eZmq1F7seTmkpAL7bhPR3E4ATYZfJfsMm6b/5seBFs= -=62wb ------END PGP SIGNATURE----- diff --git a/tzcode2016g.tar.gz b/tzcode2016g.tar.gz new file mode 100644 index 0000000..ee715aa --- /dev/null +++ b/tzcode2016g.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ff90b47ad7986140a513b5287b1851c40f80fd44fd636db5cc5b46d06f9fa2b +size 203362 diff --git a/tzcode2016g.tar.gz.asc b/tzcode2016g.tar.gz.asc new file mode 100644 index 0000000..417fd62 --- /dev/null +++ b/tzcode2016g.tar.gz.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQIcBAABAgAGBQJX2CTkAAoJEO2X6Q5iqn40/dsQAKZVDkj6jZNmdcS3qfArD30Z +U9K7AwLUlugG6WuwMzPYPp2zMNhdM3pVdfSrtgNPjGBJY4kISIiSnNx8CuvNUxlf +u+gnsPkr2qfEMEhjEKS9K4yeBi12Bo3WX7lxFJDSqXfQM389EIQufLdcpggQVnoZ +mbUCSGS3P+C+JCZBr3ltc6dZVo3OofduZR6rZauyKdHLsFo3UZgo3HZ1AgADU5KB +b+8JUAUMssOFr9dp61mF1WBlhHrg7+SubCZe5a4QggON73prhCQWtNFH/de76Ep0 +vpjn9y8dbzjSGEuMGxRRH7aBN1XYOiTyBEO3rXYA5J93I7C0IXRD3hALCpqJH/+F +dw3lzEOHi7drX/WPS2eHYaHV6GtXs8BpU39lzPiyQ89ZwFDI+ed+IFx0F2nhGI4a +YnncsPwHtodhK5AnTifDA9F95MuAZiILBlMLklaFicbtVuptM/pHgSRKKbkjptfR +3M8XmCgw/1zOAyMvc0D7X5YBspKacXDnMNX4jGDtdKoDiUAEjNf2w4RXV9fYg7Wa +5RgcqqhAcSW1SpyUcHo+po6oXTELaBh7+QGPKqsdG8ntbaywqYNT6oJqkLtYzyVj +sraRd7+f0EXdgrYTi6rZim/v6VudEqGGBRVfenXzQPCwtaNY1/+UW+Ruo/Yqlo9k +Cs4QYazop8GmeH74lAIx +=+WWr +-----END PGP SIGNATURE----- diff --git a/tzdata2016f.tar.gz b/tzdata2016f.tar.gz deleted file mode 100644 index 4d48ada..0000000 --- a/tzdata2016f.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ed8c951008d12f1db55a11e96fc055718c6571233327d9de16a7f8475e2502b0 -size 313286 diff --git a/tzdata2016f.tar.gz.asc b/tzdata2016f.tar.gz.asc deleted file mode 100644 index 1805a0e..0000000 --- a/tzdata2016f.tar.gz.asc +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1 - -iQEcBAABAgAGBQJXe8p1AAoJEAQ9tjdErUGMmc0H/i837mGKBIJLmS1xtr64uaT+ -LLLvI1gFTGJsqTaCya7aAVFlN/STM07otvYdkBDwQ6uIgjm8qAL33lGdi9IpTPp2 -YOj03QkWpyPRFtM1A9EcsVkKOfezGSiY7WQiOEk7R05lH1SRBlZ+eXVQl9fhadrj -qCRkcCasVIDQWMKCOhSch1HyUuR+Z1Ujomi7Z4d0AyQbMKhB1yGxYKCVGzN8KaOK -AFr0Dd44p72dqgPdC/V7G0xjTNOpuM1zt8SdJuOE2EASRraIvnnQctmKlbYI8l8L -ANvy9xl+p8VkuZi7yuSoqVSLYTQDE8pAMsfg0DZpAbnjV1G07FxekBMdNzdr5/E= -=7jGR ------END PGP SIGNATURE----- diff --git a/tzdata2016g.tar.gz b/tzdata2016g.tar.gz new file mode 100644 index 0000000..592ab3b --- /dev/null +++ b/tzdata2016g.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c7137b2bc47323b0de47b77786bacf81ed503d4b2c693ff8ada2fbd1281ebd1 +size 316669 diff --git a/tzdata2016g.tar.gz.asc b/tzdata2016g.tar.gz.asc new file mode 100644 index 0000000..674f325 --- /dev/null +++ b/tzdata2016g.tar.gz.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQIcBAABAgAGBQJX2CTkAAoJEO2X6Q5iqn40i8IP/jtQ8PYjBG3NJV5uvRGzbV60 +n1vdVJDMU9SkRpiT1G8p/cjr4mszUnm+qsZNZGg1wZknBuQdnglAMwA2lj8Llv5N +gAlGj/JDEsNESfOC+9wD+NtZK+aUxJzHSXl4xzhzCMjBKaPOytcLKuGscMrpcGFH +2IDyjdjHOfDNG5PAxu0wjkMsKFUt95wmuWzPu1x48EqCF5c2zhanQI3mrugnmLwm +MAnq69E+z1q/5WLOzZEfRGXm98BpS90PC89fWwiKdKciHvTVFO9XLz9pknaeRP4N +uNcGoF0zEB+unAKoQmMI248sQZ1DzQGRC/niZ9SG70xHSdtBQF19B4oNoh27h3jz +j2ZF262PZCL6J5SoEISqXRFkiZbRFR79uwUA5LQRyFWu4gg63wk85+gx8BjxwbPP +bUVtV4IBRScFdVC7Li3Xw5PF8cwfQRf0JAxTdtwSgY9tC2pEjomCkb9mzSMDz78w +CSFl6yNuL44atUmHK0XFCNIJnyoG0hNrIWwOx/zmlYnaX9Iqm6H9LmXaUcV3rg0N +uKaTWuvZQzgxRwbrq0NxH8O/B1LWmdOls4ZGoMboVpTracg6APATXJIaQjm+RKjH +EGtDiihPYP/WbrCg823uVPNHCbyoMcFrZB34ujjO89ObH8BsLJKmnUeQUCw74mok +D92yWr5OAzGJYJFpgUNr +=WYLD +-----END PGP SIGNATURE-----