From 5b80bfd7bffd4c20d80b7c70a7130529e9a755dd Mon Sep 17 00:00:00 2001 From: ToshikazuOhiwa Date: Mon, 30 Mar 2020 09:24:26 +0900 Subject: agl-basesystem --- .../leveldb/0001-Makefile-Fix-parallel-build.patch | 34 + ...uild_detect_platform-Check-for-__SSE4_2__.patch | 37 + .../0002-makefile-build-SHARED_MEMENVLIB.patch | 43 + .../meta-oe/recipes-dbs/leveldb/leveldb_git.bb | 37 + .../meta-oe/recipes-dbs/libdbi/libdbi.inc | 17 + .../meta-oe/recipes-dbs/libdbi/libdbi_0.9.0.bb | 6 + ...FPMathLib20U1-Check-for-__DEFINED_wchar_t.patch | 33 + ...001-Support-deprecated-resolver-functions.patch | 33 + ...to-use-build-settings-from-environment-va.patch | 64 + ...__-to-control-use-of-gnu_get_libc_version.patch | 38 + .../0001-Use-long-long-instead-of-int64_t.patch | 64 + ...finition-for-the-macro-__ELF_NATIVE_CLASS.patch | 35 + .../0002-Fix-default-stack-size-to-256K.patch | 39 + .../0004-wiredtiger-Disable-strtouq-on-musl.patch | 23 + .../mongodb/mongodb/arm64-support.patch | 43 + .../mongodb/disable-hw-crc32-on-arm64-s390x.patch | 50 + .../meta-oe/recipes-dbs/mongodb/mongodb_git.bb | 73 + .../recipes-dbs/mysql/mariadb-native_5.5.64.bb | 19 + .../meta-oe/recipes-dbs/mysql/mariadb.inc | 297 + .../mariadb/0001-disable-ucontext-on-musl.patch | 28 + .../mysql/mariadb/change-cc-to-cc-version.patch | 26 + .../mariadb/configure.cmake-fix-valgrind.patch | 41 + .../mysql/mariadb/fix-a-building-failure.patch | 31 + .../mysql/mariadb/fix-cmake-module-path.patch | 29 + .../mysql/mariadb/fix-mysqlclient-r-version.patch | 160 + .../meta-oe/recipes-dbs/mysql/mariadb/install_db | 13 + .../recipes-dbs/mysql/mariadb/install_db.service | 17 + .../meta-oe/recipes-dbs/mysql/mariadb/my.cnf | 25 + .../recipes-dbs/mysql/mariadb/mysql-systemd-start | 66 + .../recipes-dbs/mysql/mariadb/mysqld.service | 25 + .../mysql/mariadb/remove-bad-path.patch | 18 + .../meta-oe/recipes-dbs/mysql/mariadb_5.5.64.bb | 27 + .../recipes-dbs/mysql/mysql-python_1.2.5.bb | 17 + ...py-of-the-timezone-library-with-IANA-rele.patch | 1164 ++++ ...e-zone-data-files-to-tzdata-release-2018f.patch | 6452 ++++++++++++++++++++ ...0001-Use-pkg-config-for-libxml2-detection.patch | 46 + .../postgresql/files/not-check-libperl.patch | 28 + .../postgresql/files/postgresql-profile | 4 + .../recipes-dbs/postgresql/files/postgresql-setup | 73 + .../recipes-dbs/postgresql/files/postgresql.init | 193 + .../recipes-dbs/postgresql/files/postgresql.pam | 4 + .../postgresql/files/postgresql.service | 27 + .../meta-oe/recipes-dbs/postgresql/postgresql.inc | 348 ++ .../recipes-dbs/postgresql/postgresql_10.5.bb | 12 + .../psqlodbc-donot-use-the-hardcode-libdir.patch | 26 + .../files/psqlodbc-fix-for-ptest-support.patch | 148 + ...bc-remove-some-checks-for-cross-compiling.patch | 118 + .../meta-oe/recipes-dbs/psqlodbc/files/run-ptest | 46 + .../meta-oe/recipes-dbs/psqlodbc/psqlodbc.inc | 50 + .../recipes-dbs/psqlodbc/psqlodbc_09.05.0300.bb | 14 + ...0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch | 194 + .../meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb | 32 + .../recipes-dbs/soci/soci/soci_libdir.patch | 28 + .../meta-oe/recipes-dbs/soci/soci_3.2.3.bb | 49 + ...c-Fix-format-not-a-string-literal-warning.patch | 32 + .../sqlite-2.8.17/mainmk_build_dynamic.patch | 32 + .../sqlite/sqlite-2.8.17/mainmk_no_tcl.patch | 20 + .../recipes-dbs/sqlite/sqlite-2.8.17/sqlite.pc | 12 + .../meta-oe/recipes-dbs/sqlite/sqlite_2.8.17.bb | 61 + 59 files changed, 10721 insertions(+) create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-Makefile-Fix-parallel-build.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-build_detect_platform-Check-for-__SSE4_2__.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0002-makefile-build-SHARED_MEMENVLIB.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_git.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi.inc create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi_0.9.0.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.64.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-disable-ucontext-on-musl.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/change-cc-to-cc-version.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/configure.cmake-fix-valgrind.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-a-building-failure.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-cmake-module-path.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-mysqlclient-r-version.patch create mode 100755 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/install_db create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/install_db.service create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/my.cnf create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mysql-systemd-start create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mysqld.service create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/remove-bad-path.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.64.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Sync-our-copy-of-the-timezone-library-with-IANA-rele.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Update-time-zone-data-files-to-tzdata-release-2018f.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql-profile create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql-setup create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.init create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.pam create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.service create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.5.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-donot-use-the-hardcode-libdir.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-fix-for-ptest-support.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-remove-some-checks-for-cross-compiling.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/run-ptest create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc.inc create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc_09.05.0300.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/soci/soci/soci_libdir.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/soci/soci_3.2.3.bb create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/0001-shell.c-Fix-format-not-a-string-literal-warning.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/mainmk_build_dynamic.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/mainmk_no_tcl.patch create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/sqlite.pc create mode 100644 external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite_2.8.17.bb (limited to 'external/meta-openembedded/meta-oe/recipes-dbs') diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-Makefile-Fix-parallel-build.patch b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-Makefile-Fix-parallel-build.patch new file mode 100644 index 00000000..3135d4d5 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-Makefile-Fix-parallel-build.patch @@ -0,0 +1,34 @@ +From c85978e77725ef233543370d24e23f853f449170 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 21 Sep 2017 17:47:02 -0700 +Subject: [PATCH] Makefile: Fix parallel build + +Sometimes mkdir $(SHARED_OUTDIR)/db races with compiler which is +creating .o file in the same directory $(SHARED_OUTDIR)/db/db_bench.o + +Fixes error like + +| mkdir out-static +| mkdir out-shared/db +| Assembler messages: +| Fatal error: can't create out-shared/db/db_bench.o: No such file or directory + +Signed-off-by: Khem Raj +--- +Upstream-Status: Submitted + + Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index f7cc7d7..51a0bcd 100644 +--- a/Makefile ++++ b/Makefile +@@ -386,6 +386,7 @@ $(STATIC_OUTDIR)/write_batch_test:db/write_batch_test.cc $(STATIC_LIBOBJECTS) $( + $(STATIC_OUTDIR)/memenv_test:$(STATIC_OUTDIR)/helpers/memenv/memenv_test.o $(STATIC_OUTDIR)/libmemenv.a $(STATIC_OUTDIR)/libleveldb.a $(TESTHARNESS) + $(XCRUN) $(CXX) $(LDFLAGS) $(STATIC_OUTDIR)/helpers/memenv/memenv_test.o $(STATIC_OUTDIR)/libmemenv.a $(STATIC_OUTDIR)/libleveldb.a $(TESTHARNESS) -o $@ $(LIBS) + ++$(SHARED_OUTDIR)/db/db_bench.o: | $(SHARED_OUTDIR)/db + $(SHARED_OUTDIR)/db_bench:$(SHARED_OUTDIR)/db/db_bench.o $(SHARED_LIBS) $(TESTUTIL) + $(XCRUN) $(CXX) $(LDFLAGS) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(SHARED_OUTDIR)/db/db_bench.o $(TESTUTIL) $(SHARED_OUTDIR)/$(SHARED_LIB3) -o $@ $(LIBS) + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-build_detect_platform-Check-for-__SSE4_2__.patch b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-build_detect_platform-Check-for-__SSE4_2__.patch new file mode 100644 index 00000000..8f93cb32 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-build_detect_platform-Check-for-__SSE4_2__.patch @@ -0,0 +1,37 @@ +From 5fd0918df2bb30e8f3edb2ee895d178edbf26f40 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 4 Sep 2017 22:38:03 -0700 +Subject: [PATCH 1/2] build_detect_platform: Check for __SSE4_2__ + +just using -msse4.2 is not enough, especially with clang +where it may accept -msse4.2 even during cross compiling +for say arm, however the difference is that builtin defines +wont be defined. + +Signed-off-by: Khem Raj +--- +Upstream-Status: Pending + + build_detect_platform | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: git/build_detect_platform +=================================================================== +--- git.orig/build_detect_platform ++++ git/build_detect_platform +@@ -224,13 +224,13 @@ EOF + rm -f $CXXOUTPUT 2>/dev/null + + # Test if gcc SSE 4.2 is supported +- $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -msse4.2 2>/dev/null </dev/null </dev/null 2>&1 + if [ "$?" = 0 ]; then + PLATFORM_SSEFLAGS="-msse4.2" + fi +- + rm -f $CXXOUTPUT 2>/dev/null + fi + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0002-makefile-build-SHARED_MEMENVLIB.patch b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0002-makefile-build-SHARED_MEMENVLIB.patch new file mode 100644 index 00000000..fc708b23 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0002-makefile-build-SHARED_MEMENVLIB.patch @@ -0,0 +1,43 @@ +From 1ed8cec1fcf666904bb3ebd29fc85e235b72d122 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 4 Sep 2017 22:40:49 -0700 +Subject: [PATCH 2/2] makefile: build SHARED_MEMENVLIB + +Signed-off-by: Khem Raj +--- +Upstream-Status: Pending + + Makefile | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index f7cc7d7..cb42278 100644 +--- a/Makefile ++++ b/Makefile +@@ -126,12 +126,12 @@ SHARED_VERSION_MINOR = 20 + SHARED_LIB1 = libleveldb.$(PLATFORM_SHARED_EXT) + SHARED_LIB2 = $(SHARED_LIB1).$(SHARED_VERSION_MAJOR) + SHARED_LIB3 = $(SHARED_LIB1).$(SHARED_VERSION_MAJOR).$(SHARED_VERSION_MINOR) +-SHARED_LIBS = $(SHARED_OUTDIR)/$(SHARED_LIB1) $(SHARED_OUTDIR)/$(SHARED_LIB2) $(SHARED_OUTDIR)/$(SHARED_LIB3) ++SHARED_LIBS = $(SHARED_OUTDIR)/$(SHARED_LIB1) $(SHARED_OUTDIR)/$(SHARED_LIB2) $(SHARED_OUTDIR)/$(SHARED_LIB3) $(SHARED_MEMENVLIB) + $(SHARED_OUTDIR)/$(SHARED_LIB1): $(SHARED_OUTDIR)/$(SHARED_LIB3) + ln -fs $(SHARED_LIB3) $(SHARED_OUTDIR)/$(SHARED_LIB1) + $(SHARED_OUTDIR)/$(SHARED_LIB2): $(SHARED_OUTDIR)/$(SHARED_LIB3) + ln -fs $(SHARED_LIB3) $(SHARED_OUTDIR)/$(SHARED_LIB2) +-SHARED_MEMENVLIB = $(SHARED_OUTDIR)/libmemenv.a ++SHARED_MEMENVLIB = $(SHARED_OUTDIR)/libmemenv.$(PLATFORM_SHARED_EXT).$(SHARED_VERSION_MAJOR).$(SHARED_VERSION_MINOR) + endif + + $(SHARED_OUTDIR)/$(SHARED_LIB3): $(SHARED_LIBOBJECTS) +@@ -294,7 +294,7 @@ endif + + $(SHARED_MEMENVLIB):$(SHARED_MEMENVOBJECTS) + rm -f $@ +- $(AR) -rs $@ $(SHARED_MEMENVOBJECTS) ++ $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$(basename $(notdir $(SHARED_MEMENVLIB))) $(SHARED_MEMENVOBJECTS) -o $(SHARED_MEMENVLIB) $(LIBS) + + $(STATIC_OUTDIR)/db_bench:db/db_bench.cc $(STATIC_LIBOBJECTS) $(TESTUTIL) + $(CXX) $(LDFLAGS) $(CXXFLAGS) db/db_bench.cc $(STATIC_LIBOBJECTS) $(TESTUTIL) -o $@ $(LIBS) +-- +2.14.1 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_git.bb b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_git.bb new file mode 100644 index 00000000..8fec89c6 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_git.bb @@ -0,0 +1,37 @@ +SUMMARY = "LevelDB is a fast key-value storage library" +DESCRIPTION = "LevelDB is a fast key-value storage library that provides an ordered mapping from string keys to string values" +HOMEPAGE = "http://leveldb.googlecode.com" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=92d1b128950b11ba8495b64938fc164d" + +SRCREV = "a53934a3ae1244679f812d998a4f16f2c7f309a6" +PV = "1.20+git${SRCPV}" + +SRC_URI = "git://github.com/google/${BPN}.git \ + file://0001-build_detect_platform-Check-for-__SSE4_2__.patch \ + file://0002-makefile-build-SHARED_MEMENVLIB.patch \ + file://0001-Makefile-Fix-parallel-build.patch \ + " + +S = "${WORKDIR}/git" + +inherit utils + +do_compile() { + # do not use oe_runmake. oe_runmake pass to make compilation arguments and override + # leveldb makefile variable CFLAGS and broke leveldb build. + CFLAGS="${CFLAGS}" make ${PARALLEL_MAKE}|| die +} + +do_install() { + install -d ${D}${libdir} ${D}${bindir} ${D}${includedir}/leveldb + oe_libinstall -C ${B}/out-shared libleveldb ${D}${libdir} + oe_libinstall -C ${S}/out-static libleveldb ${D}${libdir} + oe_libinstall -C ${S}/out-static libmemenv ${D}${libdir} + install -m 0755 ${B}/out-shared/db_bench ${D}${bindir} + install -m 0755 ${B}/out-static/*_test ${D}${bindir} + install -m 644 ${S}/include/leveldb/*.h ${D}${includedir}/leveldb/ +} + +PACKAGES =+ "${PN}-ptest" +FILES_${PN}-ptest = "${bindir}" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi.inc b/external/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi.inc new file mode 100644 index 00000000..cea2838e --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi.inc @@ -0,0 +1,17 @@ +# libdbi OE build file +# Copyright (C) 2005, Koninklijke Philips Electronics NV. All Rights Reserved +# Released under the MIT license (see packages/COPYING) + +DESCRIPTION = "Database Independent Abstraction Layer for C" +HOMEPAGE = "http://libdbi.sourceforge.net/" +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499" +SECTION = "libs" + +INC_PR = "r0" + +SRC_URI = "${SOURCEFORGE_MIRROR}/libdbi/libdbi-${PV}.tar.gz" + +inherit autotools + +EXTRA_OECONF = "--disable-docs" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi_0.9.0.bb b/external/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi_0.9.0.bb new file mode 100644 index 00000000..24eae285 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi_0.9.0.bb @@ -0,0 +1,6 @@ +require ${PN}.inc + +PR = "${INC_PR}.0" + +SRC_URI[md5sum] = "05e2ceeac4bc85fbe40de8b4b22d9ab3" +SRC_URI[sha256sum] = "dafb6cdca524c628df832b6dd0bf8fabceb103248edb21762c02d3068fca4503" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch new file mode 100644 index 00000000..4d7ac3aa --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch @@ -0,0 +1,33 @@ +From fbfceebce2121831904f2f7115252dd03b413a6d Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 19 Sep 2017 18:52:53 -0700 +Subject: [PATCH] IntelRDFPMathLib20U1: Check for __DEFINED_wchar_t + +This is defined by musl if wchar_t is already defined + +avoids errors like + +src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h:46:15: error: typedef redefinition with different types + ('int' vs 'unsigned int') +typedef int wchar_t; + +Signed-off-by: Khem Raj +--- +Upstream-Status: Pending + + src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: git/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h +=================================================================== +--- git.orig/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h ++++ git/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h +@@ -43,7 +43,7 @@ + + #if 0 // MongoDB Modification -- just `#include ` + // Fix system header issue on Sun solaris and define required type by ourselves +-#if !defined(_WCHAR_T) && !defined(_WCHAR_T_DEFINED) && !defined(__QNX__) ++#if !defined(_WCHAR_T) && !defined(_WCHAR_T_DEFINED) && !defined(__QNX__) && !defined(__DEFINED_wchar_t) + typedef int wchar_t; + #endif + #else diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch new file mode 100644 index 00000000..070411ab --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch @@ -0,0 +1,33 @@ +From 5994023a03634dfc0318976c293e7391fe6aa060 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 24 Aug 2018 12:56:22 -0700 +Subject: [PATCH 1/2] Support deprecated resolver functions + +Needed for musl libc + +Upstream-Status: Pending +Signed-off-by: Khem Raj +--- + src/mongo/util/dns_query_posix-impl.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/mongo/util/dns_query_posix-impl.h b/src/mongo/util/dns_query_posix-impl.h +index d19958010c..bbca3309ed 100644 +--- a/src/mongo/util/dns_query_posix-impl.h ++++ b/src/mongo/util/dns_query_posix-impl.h +@@ -53,6 +53,12 @@ + + #include + ++#ifndef res_ninit ++#define res_nclose(arg) ++#define res_ninit(arg) res_init() ++#define res_nsearch(sta, nam, clas, typ, ans, alen) res_search(nam, clas, typ, ans, alen) ++#endif ++ + namespace mongo { + namespace dns { + // The anonymous namespace is safe, in this header, as it is not really a header. It is only used +-- +2.18.0 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch new file mode 100644 index 00000000..a6d721ac --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch @@ -0,0 +1,64 @@ +From 53368d3f4adc09dd84234a9af31771bcd8ca2757 Mon Sep 17 00:00:00 2001 +From: Sven Ebenfeld +Date: Fri, 15 Jan 2016 22:41:28 +0100 +Subject: [PATCH] Tell scons to use build settings from environment variables + +Signed-off-by: Sven Ebenfeld +--- + SConstruct | 8 ++++++-- + src/mongo/util/SConscript | 2 ++ + 2 files changed, 8 insertions(+), 2 deletions(-) + +Index: git/SConstruct +=================================================================== +--- git.orig/SConstruct ++++ git/SConstruct +@@ -564,6 +564,7 @@ def variable_arch_converter(val): + 'amd64': 'x86_64', + 'emt64': 'x86_64', + 'x86': 'i386', ++ 'aarch64': 'arm64', + } + val = val.lower() + +@@ -652,7 +653,8 @@ env_vars.Add( + ) + + env_vars.Add('CC', +- help='Select the C compiler to use') ++ help='Select the C compiler to use', ++ default=os.getenv('CC')) + + env_vars.Add('CCFLAGS', + help='Sets flags for the C and C++ compiler', +@@ -672,7 +674,8 @@ env_vars.Add('CPPPATH', + converter=variable_shlex_converter) + + env_vars.Add('CXX', +- help='Select the C++ compiler to use') ++ help='Select the C++ compiler to use', ++ default=os.getenv('CXX')) + + env_vars.Add('CXXFLAGS', + help='Sets flags for the C++ compiler', +@@ -961,6 +964,7 @@ envDict = dict(BUILD_ROOT=buildDir, + ) + + env = Environment(variables=env_vars, **envDict) ++env.PrependENVPath('PATH', os.getenv('PATH')) + del envDict + + env.AddMethod(mongo_platform.env_os_is_wrapper, 'TargetOSIs') +Index: git/src/mongo/util/SConscript +=================================================================== +--- git.orig/src/mongo/util/SConscript ++++ git/src/mongo/util/SConscript +@@ -329,6 +329,8 @@ if env['MONGO_ALLOCATOR'] == 'tcmalloc': + 'MONGO_HAVE_GPERFTOOLS_SIZE_CLASS_STATS' + ] + ) ++ if not use_system_version_of_library('valgrind'): ++ tcmspEnv.InjectThirdPartyIncludePaths('valgrind') + + if not use_system_version_of_library('valgrind'): + # Include valgrind since tcmalloc disables itself while running under valgrind diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch new file mode 100644 index 00000000..c17ebf1e --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch @@ -0,0 +1,38 @@ +From 3eed8388b49d5d3cbc2db74fee1b017eb4b40d0a Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 2 Sep 2017 10:06:24 -0700 +Subject: [PATCH] Use __GLIBC__ to control use of gnu_get_libc_version + +Signed-off-by: Khem Raj +--- +Upstream-Status: Pending + src/mongo/util/processinfo_linux.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +Index: git/src/mongo/util/processinfo_linux.cpp +=================================================================== +--- git.orig/src/mongo/util/processinfo_linux.cpp ++++ git/src/mongo/util/processinfo_linux.cpp +@@ -44,10 +44,10 @@ + #include + #ifdef __BIONIC__ + #include +-#elif __UCLIBC__ +-#include +-#else ++#elif defined(__GLIBC__) && !defined(__UCLIBC__) + #include ++#else ++#include + #endif + + #include +@@ -503,7 +503,7 @@ void ProcessInfo::SystemInfo::collectSys + stringstream ss; + ss << "uClibc-" << __UCLIBC_MAJOR__ << "." << __UCLIBC_MINOR__ << "." << __UCLIBC_SUBLEVEL__; + bExtra.append("libcVersion", ss.str()); +-#else ++#elif defined(__GLIBC__) + bExtra.append("libcVersion", gnu_get_libc_version()); + #endif + if (!verSig.empty()) diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch new file mode 100644 index 00000000..99edad3c --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch @@ -0,0 +1,64 @@ +From a4951489d649c2b609cbb80f6cfb49fdcad8bd43 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 2 Sep 2017 10:03:37 -0700 +Subject: [PATCH] Use long long instead of int64_t + +Fixes +error: call to member function 'appendNumber' is ambiguous +since this function expects long long as parameter and not int64_t + +Signed-off-by: Khem Raj +--- +Upstream-Status: Pending + src/mongo/util/procparser.cpp | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +Index: git/src/mongo/util/procparser.cpp +=================================================================== +--- git.orig/src/mongo/util/procparser.cpp ++++ git/src/mongo/util/procparser.cpp +@@ -260,7 +260,7 @@ Status parseProcStat(const std::vector stats; ++ std::vector stats; + stats.reserve(kDiskFieldCount); + + using string_split_iterator = boost::split_iterator; +@@ -597,7 +597,7 @@ Status parseProcDiskStats(const std::vec + + StringData stringValue((*partIt).begin(), (*partIt).end()); + +- uint64_t value; ++ long long value; + + if (!parseNumberFromString(stringValue, &value).isOK()) { + value = 0; diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch new file mode 100644 index 00000000..098306f5 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch @@ -0,0 +1,35 @@ +From df7ef16afcc6ab55daa686e4f15c16e3d1280337 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 2 Sep 2017 12:42:30 -0700 +Subject: [PATCH 2/4] Add a definition for the macro __ELF_NATIVE_CLASS + +It depends on the native arch's word size. + +Signed-off-by: Khem Raj +--- + src/mongo/util/stacktrace_posix.cpp | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/mongo/util/stacktrace_posix.cpp b/src/mongo/util/stacktrace_posix.cpp +index 53ab85f56f..7c458e7ef2 100644 +--- a/src/mongo/util/stacktrace_posix.cpp ++++ b/src/mongo/util/stacktrace_posix.cpp +@@ -37,6 +37,15 @@ + #include + #include + ++#if !defined(__GLIBC__) ++#if defined __x86_64__ && !defined __ILP32__ ++# define __WORDSIZE 64 ++#else ++# define __WORDSIZE 32 ++#endif ++#define __ELF_NATIVE_CLASS __WORDSIZE ++#endif ++ + #include "mongo/base/init.h" + #include "mongo/config.h" + #include "mongo/db/jsobj.h" +-- +2.14.1 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch new file mode 100644 index 00000000..085fa50d --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch @@ -0,0 +1,39 @@ +From 98543889f7ba38c02eb7cd9822f45e27d619edd6 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 24 Aug 2018 13:07:01 -0700 +Subject: [PATCH 2/2] Fix default stack size to 256K + +On musl default stack size is ~80K which is too low +for mongodb + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +--- + .../platform/stack_locator_pthread_getattr_np.cpp | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/mongo/platform/stack_locator_pthread_getattr_np.cpp b/src/mongo/platform/stack_locator_pthread_getattr_np.cpp +index 648d26a41c..6e398f00c9 100644 +--- a/src/mongo/platform/stack_locator_pthread_getattr_np.cpp ++++ b/src/mongo/platform/stack_locator_pthread_getattr_np.cpp +@@ -35,6 +35,16 @@ + #include "mongo/util/assert_util.h" + #include "mongo/util/scopeguard.h" + ++__attribute__((constructor)) ++static void set_default_stack_size(void) ++{ ++ pthread_attr_t attr; ++ invariant(pthread_attr_init(&attr) == 0); ++ invariant(pthread_attr_setstacksize(&attr, 256*1024) == 0); ++ pthread_setattr_default_np(&attr); ++ invariant(pthread_attr_destroy(&attr) == 0); ++} ++ + namespace mongo { + + StackLocator::StackLocator() { +-- +2.18.0 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch new file mode 100644 index 00000000..a2e1f795 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch @@ -0,0 +1,23 @@ +From a1c77702926eb8546ff96b00b5b994f7478dabae Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 2 Sep 2017 13:13:15 -0700 +Subject: [PATCH 4/4] wiredtiger: Disable strtouq on musl + +Signed-off-by: Khem Raj +--- + src/third_party/wiredtiger/build_linux/wiredtiger_config.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: git/src/third_party/wiredtiger/build_linux/wiredtiger_config.h +=================================================================== +--- git.orig/src/third_party/wiredtiger/build_linux/wiredtiger_config.h ++++ git/src/third_party/wiredtiger/build_linux/wiredtiger_config.h +@@ -104,7 +104,7 @@ + #define HAVE_STRING_H 1 + + /* Define to 1 if you have the `strtouq' function. */ +-#define HAVE_STRTOUQ 1 ++/* #undef HAVE_STRTOUQ 1 */ + + /* Define to 1 if you have the `sync_file_range' function. */ + /* #undef HAVE_SYNC_FILE_RANGE */ diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch new file mode 100644 index 00000000..c0689875 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch @@ -0,0 +1,43 @@ +Add alises for arm64 which is same as aarch64 + +Signed-off-by: Khem Raj +Upstream-Status: Pending + +Index: git/SConstruct +=================================================================== +--- git.orig/SConstruct ++++ git/SConstruct +@@ -1055,6 +1055,7 @@ elif endian == "big": + processor_macros = { + 'arm' : { 'endian': 'little', 'defines': ('__arm__',) }, + 'aarch64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')}, ++ 'arm64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')}, + 'i386' : { 'endian': 'little', 'defines': ('__i386', '_M_IX86')}, + 'ppc64le' : { 'endian': 'little', 'defines': ('__powerpc64__',)}, + 's390x' : { 'endian': 'big', 'defines': ('__s390x__',)}, +Index: git/src/third_party/IntelRDFPMathLib20U1/SConscript +=================================================================== +--- git.orig/src/third_party/IntelRDFPMathLib20U1/SConscript ++++ git/src/third_party/IntelRDFPMathLib20U1/SConscript +@@ -308,7 +308,7 @@ if processor == 'i386': + elif processor == 'arm': + cpp_defines['IA32'] = '1' + cpp_defines['ia32'] = '1' +-elif processor == "aarch64": ++elif processor == "aarch64" or processor == 'arm64': + cpp_defines['efi2'] = '1' + cpp_defines['EFI2'] = '1' + # Using 64 bit little endian +Index: git/src/third_party/wiredtiger/SConscript +=================================================================== +--- git.orig/src/third_party/wiredtiger/SConscript ++++ git/src/third_party/wiredtiger/SConscript +@@ -151,7 +151,7 @@ condition_map = { + 'POSIX_HOST' : not env.TargetOSIs('windows'), + 'WINDOWS_HOST' : env.TargetOSIs('windows'), + +- 'ARM64_HOST' : env['TARGET_ARCH'] == 'aarch64', ++ 'ARM64_HOST' : env['TARGET_ARCH'] in ('aarch64', 'arm64'), + 'POWERPC_HOST' : env['TARGET_ARCH'] == 'ppc64le', + 'X86_HOST' : env['TARGET_ARCH'] == 'x86_64', + 'ZSERIES_HOST' : env['TARGET_ARCH'] == 's390x', diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch new file mode 100644 index 00000000..23d4923d --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch @@ -0,0 +1,50 @@ +imported from debian + +Upstream-Status: Pending +Index: git/src/third_party/wiredtiger/SConscript +=================================================================== +--- git.orig/src/third_party/wiredtiger/SConscript ++++ git/src/third_party/wiredtiger/SConscript +@@ -181,7 +181,9 @@ if useSnappy: + # If not available at runtime, we fall back to software in some cases. + # + # On zSeries we may disable because SLES 11 kernel doe not support the instructions. +-if not (env['TARGET_ARCH'] == 's390x' and get_option("use-s390x-crc32") == "off"): ++# Debian: disable hardware-assisted crc32 on s390x and arm64, as at least the ++# buildd's do not support the instructions. ++if env['TARGET_ARCH'] not in ('s390x', 'arm64', 'aarch64'): + env.Append(CPPDEFINES=["HAVE_CRC32_HARDWARE"]) + + wtlib = env.Library( +Index: git/src/third_party/wiredtiger/dist/filelist +=================================================================== +--- git.orig/src/third_party/wiredtiger/dist/filelist ++++ git/src/third_party/wiredtiger/dist/filelist +@@ -54,7 +54,6 @@ src/checksum/power8/crc32_wrapper.c POWE + src/checksum/software/checksum.c + src/checksum/x86/crc32-x86.c X86_HOST + src/checksum/zseries/crc32-s390x.c ZSERIES_HOST +-src/checksum/zseries/crc32le-vx.sx ZSERIES_HOST + src/config/config.c + src/config/config_api.c + src/config/config_check.c +Index: git/src/third_party/wiredtiger/src/checksum/zseries/crc32-s390x.c +=================================================================== +--- git.orig/src/third_party/wiredtiger/src/checksum/zseries/crc32-s390x.c ++++ git/src/third_party/wiredtiger/src/checksum/zseries/crc32-s390x.c +@@ -77,6 +77,7 @@ unsigned int __wt_crc32c_le(unsigned int + return crc; \ + } + ++#if defined(HAVE_CRC32_HARDWARE) + /* Main CRC-32 functions */ + DEFINE_CRC32_VX(__wt_crc32c_le_vx, __wt_crc32c_le_vgfm_16, __wt_crc32c_le) + +@@ -89,6 +90,7 @@ __wt_checksum_hw(const void *chunk, size + { + return (~__wt_crc32c_le_vx(0xffffffff, chunk, len)); + } ++#endif + + #endif + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb new file mode 100644 index 00000000..d39ab0a3 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb @@ -0,0 +1,73 @@ +SUMMARY = "mongodb" +LICENSE = "AGPL-3.0 & Apache-2.0 & Zlib" +LIC_FILES_CHKSUM = "file://GNU-AGPL-3.0.txt;md5=73f1eb20517c55bf9493b7dd6e480788 \ + file://APACHE-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" + +DEPENDS = "openssl libpcre libpcap zlib boost curl python \ + python-setuptools-native python-typing-native \ + python-pyyaml-native python-cheetah-native \ + " + +inherit scons dos2unix siteinfo pythonnative + +PV = "4.0.1+git${SRCPV}" +#v4.0.1 +SRCREV = "54f1582fc6eb01de4d4c42f26fc133e623f065fb" +SRC_URI = "git://github.com/mongodb/mongo.git;branch=v4.0 \ + file://0001-Tell-scons-to-use-build-settings-from-environment-va.patch \ + file://0001-Use-long-long-instead-of-int64_t.patch \ + file://0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch \ + file://0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch \ + file://arm64-support.patch \ + file://0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch \ + file://disable-hw-crc32-on-arm64-s390x.patch \ + file://0001-Support-deprecated-resolver-functions.patch \ + " +SRC_URI_append_libc-musl ="\ + file://0002-Fix-default-stack-size-to-256K.patch \ + file://0004-wiredtiger-Disable-strtouq-on-musl.patch \ + " +S = "${WORKDIR}/git" + +COMPATIBLE_HOST ?= '(x86_64|i.86|powerpc64|arm|aarch64).*-linux' + +COMPATIBLE_HOST_arm = "null" +COMPATIBLE_HOST_libc-musl_x86 = "null" + +PACKAGECONFIG ??= "tcmalloc" +# gperftools compilation fails for arm below v7 because of missing support of +# dmb operation. So we use system-allocator instead of tcmalloc +PACKAGECONFIG_remove_armv6 = "tcmalloc" +PACKAGECONFIG_remove_libc-musl = "tcmalloc" + +PACKAGECONFIG[tcmalloc] = "--use-system-tcmalloc,--allocator=system,gperftools," + +EXTRA_OESCONS = "--prefix=${D}${prefix} \ + LIBPATH=${STAGING_LIBDIR} \ + LINKFLAGS='${LDFLAGS}' \ + CXXFLAGS='${CXXFLAGS}' \ + TARGET_ARCH=${TARGET_ARCH} \ + --ssl \ + --disable-warnings-as-errors \ + --use-system-pcre \ + --use-system-zlib \ + --js-engine=none \ + --nostrip \ + --endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \ + --wiredtiger=${@['off','on'][d.getVar('SITEINFO_BITS') != '32']} \ + ${PACKAGECONFIG_CONFARGS} \ + mongod mongos" + +do_configure_prepend() { + # tests use hex floats, not supported in plain C++ + sed -e 's|-std=c++11|-std=gnu++11|g' -i ${S}/SConstruct +} +scons_do_compile() { + ${STAGING_BINDIR_NATIVE}/scons ${PARALLEL_MAKE} ${EXTRA_OESCONS} || \ + die "scons build execution failed." +} + +scons_do_install() { + ${STAGING_BINDIR_NATIVE}/scons install ${EXTRA_OESCONS}|| \ + die "scons install execution failed." +} diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.64.bb b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.64.bb new file mode 100644 index 00000000..4ce960d7 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.64.bb @@ -0,0 +1,19 @@ +require mariadb.inc +inherit native + +PROVIDES += "mysql5-native" +DEPENDS = "ncurses-native zlib-native bison-native" + +RDEPENDS_${PN} = "" +PACKAGES = "" +EXTRA_OEMAKE = "" + +do_install() { + oe_runmake 'DESTDIR=${D}' install + + install -d ${D}${bindir} + install -m 0755 sql/gen_lex_hash ${D}${bindir}/ + install -m 0755 extra/comp_err ${D}${bindir}/ + install -m 0755 scripts/comp_sql ${D}${bindir}/ +} + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc new file mode 100644 index 00000000..4f7784be --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc @@ -0,0 +1,297 @@ +SUMMARY = "A robust, scalable, and reliable SQL server" +HOMEPAGE = "http://mariadb.org" +SECTION = "libs" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" + +SRC_URI = "https://downloads.mariadb.org/f/${BP}/source/${BP}.tar.gz \ + file://fix-cmake-module-path.patch \ + file://remove-bad-path.patch \ + file://fix-mysqlclient-r-version.patch \ + file://my.cnf \ + file://mysqld.service \ + file://install_db.service \ + file://install_db \ + file://mysql-systemd-start \ + file://configure.cmake-fix-valgrind.patch \ + file://fix-a-building-failure.patch \ + file://change-cc-to-cc-version.patch \ + file://0001-disable-ucontext-on-musl.patch \ + " +SRC_URI[md5sum] = "03968ae08cff3038e2420921ef257550" +SRC_URI[sha256sum] = "c103f3c54741b296980d6be48b221340eebaa97c6bd95a02fd8d530a5df5c343" + +UPSTREAM_CHECK_URI = "https://github.com/MariaDB/server/releases" + +S = "${WORKDIR}/mariadb-${PV}" + +BINCONFIG_GLOB = "mysql_config" + +inherit cmake gettext binconfig update-rc.d useradd systemd + +INITSCRIPT_PACKAGES = "${PN}-server ${PN}-setupdb" +INITSCRIPT_NAME_${PN}-server = "mysqld" +INITSCRIPT_PARAMS_${PN}-server ?= "start 45 5 . stop 45 0 6 1 ." + +USERADD_PACKAGES = "${PN}-server" +USERADD_PARAM_${PN}-server = "--system --home-dir /var/mysql -g mysql --shell /bin/false mysql" +GROUPADD_PARAM_${PN}-server = "--system mysql" + +INITSCRIPT_NAME_${PN}-setupdb = "install_db" +INITSCRIPT_PARAMS_${PN}-setupdb ?= "defaults 44 44" + +SYSTEMD_PACKAGES = "${PN}-server ${PN}-setupdb" +SYSTEMD_SERVICE_${PN}-server = "mysqld.service" +SYSTEMD_AUTO_ENABLE_${PN}-server ?= "disable" + +SYSTEMD_SERVICE_${PN}-setupdb = "install_db.service" +SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable" +ALLOW_EMPTY_${PN}-setupdb ?= "1" +FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db" + +EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb" +PACKAGECONFIG_class-native = "" +PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam" +PACKAGECONFIG[valgrind] = "-DWITH_VALGRIND=TRUE,-DWITH_VALGRIND=FALSE,valgrind" +PACKAGECONFIG[libedit] = "-DLIBEDIT_INTERFACE=TRUE,-DLIBEDIT_INTERFACE=FALSE,libedit" +PACKAGECONFIG[krb5] = ", ,krb5" +PACKAGECONFIG[setupdb] = ", ,,${PN}-setupdb" + +# MariaDB doesn't link properly with gold +# https://mariadb.atlassian.net/browse/MDEV-5982 +TARGET_CFLAGS += "-fuse-ld=bfd" + +BUILD_CFLAGS += "-fuse-ld=bfd" +BUILD_CXXFLAGS += "-fuse-ld=bfd" + +EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \ + -DWITH_JEMALLOC=no \ + -DWITHOUT_TOKUDB=TRUE \ + -DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE \ + -DGROFF=FALSE \ + -DNROFF=FALSE \ + -DENABLE_DTRACE=FALSE \ + -DWITH_PIC=ON \ + -DINSTALL_LAYOUT=RPM \ + -DINSTALL_DOCDIR:PATH=${datadir}/doc/${BPN} \ + -DINSTALL_LIBDIR:PATH=${baselib} \ + -DINSTALL_PLUGINDIR:PATH=${baselib}/plugin \ + -DINSTALL_SYSCONFDIR:PATH=${sysconfdir} \ + -DMYSQL_DATADIR:PATH=/var/mysql \ + -DCAT_EXECUTABLE=`which cat` \ + -DCMAKE_AR:FILEPATH=${AR}" + +# With Ninja it fails with: +# make: *** No rule to make target `install'. Stop. +OECMAKE_GENERATOR = "Unix Makefiles" + +ARM_INSTRUCTION_SET_armv4 = "arm" +ARM_INSTRUCTION_SET_armv5 = "arm" + +do_configure_append() { + # handle distros with different values of ${libexecdir} + libexecdir2=`echo ${libexecdir} | sed -e 's+/usr/++g'` + sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysql_install_db.sh + sed -i -e "s:mysqld libexec:mysqld $libexecdir2:g" ${S}/scripts/mysql_install_db.sh + sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysqld_safe.sh +} + +do_generate_toolchain_file_append_class-native () { + # If these are set cmake will assume we're cross-compiling, which will + # result in certain things we want being disabled + sed -i "/set( CMAKE_SYSTEM_NAME/d" ${WORKDIR}/toolchain.cmake + sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake +} + +do_compile_prepend_class-target () { + # These need to be in-tree or make will think they need to be built, + # and since we're cross-compiling that is disabled + cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra + cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then + if ! [ -e ${B}/include/openssl/kssl.h ] ; then + mkdir -p ${B}/include/openssl + echo "#ifndef KSSL_H" >${B}/include/openssl/kssl.h + echo "#define KSSL_H" >>${B}/include/openssl/kssl.h + echo "#include ">>${B}/include/openssl/kssl.h + echo "#endif" >>${B}/include/openssl/kssl.h + fi + fi +} + +SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess" + +# We need to append this so it runs *after* binconfig's preprocess function +# +# We really don't care exactly what the directories were set to originally. +# plugindir is not fixed, but we don't create any plugins. +# +mariadb_sysroot_preprocess () { + sed -i -es,^pkgincludedir=.*,pkgincludedir=\'${STAGING_INCDIR}/mysql\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config + sed -i -es,^pkglibdir=.*,pkglibdir=\'${STAGING_LIBDIR}\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config +} + +do_install() { + oe_runmake 'DESTDIR=${D}' install + + install -d ${D}/${sysconfdir}/init.d + install -m 0644 ${WORKDIR}/my.cnf ${D}/${sysconfdir}/ + install -m 0755 ${WORKDIR}/install_db ${D}/${sysconfdir}/init.d/ + mv ${D}/${sysconfdir}/init.d/mysql ${D}/${sysconfdir}/init.d/mysqld + + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/mysqld.service ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/install_db.service ${D}${systemd_unitdir}/system + sed -i -e 's,@BINDIR@,${bindir},g' -e 's,@PREFIX@,${prefix},g' ${D}${systemd_unitdir}/system/mysqld.service \ + ${D}${systemd_unitdir}/system/install_db.service + + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${sysconfdir}/tmpfiles.d + echo "f /var/log/mysqld.err 0640 mysql mysql -" \ + > ${D}${sysconfdir}/tmpfiles.d/99-mysqld.conf + fi + install -d ${D}${bindir} + install -m 755 ${WORKDIR}/mysql-systemd-start ${D}${bindir} + install -d ${D}${datadir}/doc/${PN} + if [ -f ${D}${datadir}/doc/README ]; then + mv ${D}${datadir}/doc/README ${D}${datadir}/doc/${PN}/ + fi +} + +PACKAGES = "${PN}-dbg ${PN} \ + libmysqlclient-r libmysqlclient-r-dev libmysqlclient-r-staticdev \ + libmysqlclient libmysqlclient-dev libmysqlclient-staticdev \ + libmysqld libmysqld-dev ${PN}-client ${PN}-server ${PN}-setupdb ${PN}-leftovers" +CONFFILES_${PN}-server += "${sysconfdir}/my.cnf ${sysconfdir}/my.cnf.d/server.cnf" +CONFFILES_${PN}-client += "${sysconfdir}/my.cnf.d/mysql-clients.cnf" +CONFFILES_libmysqlclient += "${sysconfdir}/my.cnf.d/client.cnf" + +RPROVIDES_${PN}-dbg += "libmysqlclient-r-dbg libmysqlclient-dbg" + +FILES_${PN} = " " +RDEPENDS_${PN} = "${PN}-client ${PN}-server" +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN}-client = "perl perl-module-getopt-long perl-module-file-temp \ + perl-module-fcntl perl-module-sys-hostname perl-module-ipc-open3 \ + perl-module-exporter" +RDEPENDS_${PN}-server = "perl perl-module-getopt-long perl-module-data-dumper \ + perl-module-file-basename perl-module-file-path perl-module-sys-hostname \ + perl-module-file-copy perl-module-file-temp perl-module-posix \ + ${PN}-client libdbi-perl libdbd-mysql-perl" +RDEPENDS_${PN}-leftovers = "perl perl-module-cwd perl-module-benchmark perl-module-getopt-long \ + perl-module-posix perl-module-data-dumper perl-module-sigtrap perl-module-threads \ + perl-module-threads-shared perl-module-io-socket perl-module-sys-hostname perl-module-file-copy \ + perl-module-file-spec perl-module-file-find perl-module-file-basename perl-module-file-path \ + perl-module-constant perl-module-lib perl-module-file-temp perl-module-file-spec-functions \ + perl-module-io-socket-inet perl-module-io-select" +RDEPENDS_${PN}-setupdb = "coreutils" + +# Allow old code to link to the backward compatible library +RDEPENDS_libmysqlclient-dev = "libmysqlclient-r-dev" + +FILES_libmysqlclient = "\ + ${libdir}/libmysqlclient.so.* \ + ${sysconfdir}/my.cnf.d/client.cnf" +FILES_libmysqlclient-dev = " \ + ${includedir}/mysql/ \ + ${libdir}/libmysqlclient.so \ + ${sysconfdir}/aclocal \ + ${bindir}/mysql_config" +FILES_libmysqlclient-staticdev = "\ + ${libdir}/*.a" + +# Avoid warnings about ha_xtradb.so.0.0.0 and ha_innodb_plugin.so.0.0.0 +# which are intentionally non-PIC on 32-bit x86 (see e.g. +# storage/xtradb/plug.in in the source) +INSANE_SKIP_libmysqlclient_append_x86 = " textrel" + +FILES_libmysqlclient-r = "${libdir}/libmysqlclient_r.so.*" +FILES_libmysqlclient-r-dev = "\ + ${libdir}/libmysqlclient_r.so" +FILES_libmysqlclient-r-staticdev = "${libdir}/libmysqlclient_r.a" + +FILES_libmysqld = "\ + ${libdir}/libmysqld.so.*" +FILES_libmysqld-dev = "\ + ${libdir}/libmysqld.so" + +FILES_${PN}-client = "\ + ${bindir}/myisam_ftdump \ + ${bindir}/mysql \ + ${bindir}/mysql_client_test \ + ${bindir}/mysql_client_test_embedded \ + ${bindir}/mysql_find_rows \ + ${bindir}/mysql_fix_extensions \ + ${bindir}/mysql_waitpid \ + ${bindir}/mysqlaccess \ + ${bindir}/mysqladmin \ + ${bindir}/mysqlbug \ + ${bindir}/mysqlcheck \ + ${bindir}/mysqldump \ + ${bindir}/mysqldumpslow \ + ${bindir}/mysqlimport \ + ${bindir}/mysqlshow \ + ${bindir}/mysqlslap \ + ${bindir}/mysqltest_embedded \ + ${libexecdir}/mysqlmanager \ + ${sysconfdir}/my.cnf.d/mysql-clients.cnf" + +FILES_${PN}-server = "\ + ${bindir}/comp_err \ + ${bindir}/isamchk \ + ${bindir}/isamlog \ + ${bindir}/msql2mysql \ + ${bindir}/my_print_defaults \ + ${bindir}/myisamchk \ + ${bindir}/myisamlog \ + ${bindir}/myisampack \ + ${bindir}/mysql_convert_table_format \ + ${bindir}/mysql_fix_privilege_tables \ + ${bindir}/mysql_install_db \ + ${bindir}/mysql_secure_installation \ + ${bindir}/mysql_setpermission \ + ${bindir}/mysql-systemd-start \ + ${bindir}/mysql_tzinfo_to_sql \ + ${bindir}/mysql_upgrade \ + ${bindir}/mysql_plugin \ + ${bindir}/mysql_zap \ + ${bindir}/mysqlbinlog \ + ${bindir}/mysqld_multi \ + ${bindir}/mysqld_safe \ + ${bindir}/mysqld_safe_helper \ + ${bindir}/mysqlhotcopy \ + ${bindir}/mysqltest \ + ${bindir}/ndb_delete_all \ + ${bindir}/ndb_desc \ + ${bindir}/ndb_drop_index \ + ${bindir}/ndb_drop_table \ + ${bindir}/ndb_mgm \ + ${bindir}/ndb_restore \ + ${bindir}/ndb_select_all \ + ${bindir}/ndb_select_count \ + ${bindir}/ndb_show_tables \ + ${bindir}/ndb_waiter \ + ${bindir}/pack_isam \ + ${bindir}/perror \ + ${bindir}/replace \ + ${bindir}/resolve_stack_dump \ + ${bindir}/resolveip \ + ${libexecdir}/mysqld \ + ${sbindir}/mysqld \ + ${sbindir}/ndb_cpcd \ + ${sbindir}/ndbd \ + ${sbindir}/ndb_mgmd \ + ${libdir}/plugin/*.so \ + ${datadir}/mysql/ \ + ${localstatedir}/mysql/ \ + ${sysconfdir}/init.d/mysqld \ + ${sysconfdir}/my.cnf \ + ${sysconfdir}/my.cnf.d/server.cnf \ + ${sysconfdir}/tmpfiles.d" + +DESCRIPTION_${PN}-leftovers = "unpackaged and probably unneeded files for ${PN}" +FILES_${PN}-leftovers = "/" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-disable-ucontext-on-musl.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-disable-ucontext-on-musl.patch new file mode 100644 index 00000000..60e9199f --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-disable-ucontext-on-musl.patch @@ -0,0 +1,28 @@ +From 5bc3e7ef9700d12054e0125a126f1bb093f01ef9 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 26 Mar 2017 14:30:33 -0700 +Subject: [PATCH] disable ucontext on musl + +musl does not have *contex() APIs even though it has ucontext.h header + +Signed-off-by: Khem Raj +--- + include/my_context.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/my_context.h b/include/my_context.h +index dd44103..9b28c17 100644 +--- a/include/my_context.h ++++ b/include/my_context.h +@@ -31,7 +31,7 @@ + #define MY_CONTEXT_USE_X86_64_GCC_ASM + #elif defined(__GNUC__) && __GNUC__ >= 3 && defined(__i386__) + #define MY_CONTEXT_USE_I386_GCC_ASM +-#elif defined(HAVE_UCONTEXT_H) ++#elif defined(__GLIBC__) && defined(HAVE_UCONTEXT_H) + #define MY_CONTEXT_USE_UCONTEXT + #else + #define MY_CONTEXT_DISABLE +-- +2.12.1 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/change-cc-to-cc-version.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/change-cc-to-cc-version.patch new file mode 100644 index 00000000..02bda24f --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/change-cc-to-cc-version.patch @@ -0,0 +1,26 @@ +mariadb: replace the CC with CC_VERSION and CXX with CXX_VERSION + +mysqlbug.sh is a bug report script. It makes a report with the build information, +including gcc version. The CC is the local path of gcc, which is useless for bug +report, and the path may expose private information, so change it to CC_VERSION. + +Upstream-Status: Pending + +Signed-off-by: Yue Tao +Signed-off-by: Wenzong Fan +================================ +diff --git a/scripts/mysqlbug.sh.old b/scripts/mysqlbug.sh +index e9df210..d4b8d53 100644 +--- a/scripts/mysqlbug.sh.old ++++ b/scripts/mysqlbug.sh +@@ -24,8 +24,8 @@ VERSION="@VERSION@@MYSQL_SERVER_SUFFIX@" + COMPILATION_COMMENT="@COMPILATION_COMMENT@" + BUGmysql="maria-developers@lists.launchpad.net" + # This is set by configure +-COMP_CALL_INFO="CC='@SAVE_CC@' CFLAGS='@SAVE_CFLAGS@' CXX='@SAVE_CXX@' CXXFLAGS='@SAVE_CXXFLAGS@' LDFLAGS='@SAVE_LDFLAGS@' ASFLAGS='@SAVE_ASFLAGS@'" +-COMP_RUN_INFO="CC='@CC@' CFLAGS='@CFLAGS@' CXX='@CXX@' CXXFLAGS='@CXXFLAGS@' LDFLAGS='@LDFLAGS@' ASFLAGS='@ASFLAGS@'" ++COMP_CALL_INFO="CC='@CC_VERSION@' CFLAGS='@SAVE_CFLAGS@' CXX='@CXX_VERSION@' CXXFLAGS='@SAVE_CXXFLAGS@' LDFLAGS='@SAVE_LDFLAGS@' ASFLAGS='@SAVE_ASFLAGS@'" ++COMP_RUN_INFO="CC='@CC_VERSION@' CFLAGS='@CFLAGS@' CXX='@CXX_VERSION@' CXXFLAGS='@CXXFLAGS@' LDFLAGS='@LDFLAGS@' ASFLAGS='@ASFLAGS@'" + CONFIGURE_LINE="@CONF_COMMAND@" + + LIBC_INFO="" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/configure.cmake-fix-valgrind.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/configure.cmake-fix-valgrind.patch new file mode 100644 index 00000000..e97def60 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/configure.cmake-fix-valgrind.patch @@ -0,0 +1,41 @@ +From 5effba0d7d47071a3f1bca56823190d5a95bb1a6 Mon Sep 17 00:00:00 2001 +From: Jackie Huang +Date: Wed, 12 Nov 2014 03:09:10 -0500 +Subject: [PATCH] configure.cmake: fix valgrind + +Check valgrind headers only if WITH_VALGRIND is set. + +mariadb uses two macros for valgrind compilations: +HAVE_valgrind - valgrind is installed and can be set by configure option -DWITH_VALGRIND +HAVE_VALGRIND - valgrind debug libraries is installed, set by auto check + +We would like to set them both by the configure option so that we can use +PACKAGECONFIG to decide if valgrind is needed or not. + +Upstream-Status: Inappropriate [oe specific] + +Signed-off-by: Jackie Huang +--- + configure.cmake | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.cmake b/configure.cmake +index 0bd7bbe..51a098f 100644 +--- a/configure.cmake ++++ b/configure.cmake +@@ -1047,10 +1047,10 @@ MARK_AS_ADVANCED(WITH_ATOMIC_LOCKS MY_ATOMIC_MODE_RWLOCK MY_ATOMIC_MODE_DUMMY) + + IF(WITH_VALGRIND) + SET(HAVE_valgrind 1) ++ CHECK_INCLUDE_FILES("valgrind/memcheck.h;valgrind/valgrind.h" ++ HAVE_VALGRIND) + ENDIF() + +-CHECK_INCLUDE_FILES("valgrind/memcheck.h;valgrind/valgrind.h" +- HAVE_VALGRIND) + + #-------------------------------------------------------------------- + # Check for IPv6 support +-- +2.0.0 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-a-building-failure.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-a-building-failure.patch new file mode 100644 index 00000000..0c4e1023 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-a-building-failure.patch @@ -0,0 +1,31 @@ +[PATCH] fix a building failure + +Upstream-Status: Inappropriate [configuration] + +building failed since native does not generate import_executables.cmake +In fact, our building system will export the needed commands + +Signed-off-by: Roy Li +--- + CMakeLists.txt | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c1ce1c5..83b3a7e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -350,11 +350,6 @@ MYSQL_CHECK_READLINE() + + CHECK_JEMALLOC() + +-IF(CMAKE_CROSSCOMPILING) +- SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build") +- INCLUDE(${IMPORT_EXECUTABLES}) +-ENDIF() +- + # + # Setup maintainer mode options by the end. Platform checks are + # not run with the warning options as to not perturb fragile checks +-- +1.9.1 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-cmake-module-path.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-cmake-module-path.patch new file mode 100644 index 00000000..8d9f558d --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-cmake-module-path.patch @@ -0,0 +1,29 @@ +Avoid CMAKE_MODULE_PATH being overwritten + +OE-Core's setting of CMAKE_MODULE_PATH stomps on MariaDB's value unless +we set it after setting the project name. + +Signed-off-by: Paul Eggleton + +Upstream-Status: Inappropriate [working around OE-Core bug] + +--- mariadb/CMakeLists.txt 2014-07-17 11:01:07.676353047 +0100 ++++ mariadb/CMakeLists.txt 2014-07-17 11:01:31.299353107 +0100 +@@ -28,8 +28,6 @@ + + MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}") + +-SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) +- + # Distinguish between community and non-community builds, with the + # default being a community build. This does not impact the feature + # set that will be compiled in; it's merely provided as a hint to +@@ -77,6 +75,8 @@ + ENDIF() + PROJECT(${MYSQL_PROJECT_NAME}) + ++SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) ++ + IF(BUILD_CONFIG) + INCLUDE( + ${CMAKE_SOURCE_DIR}/cmake/build_configurations/${BUILD_CONFIG}.cmake) diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-mysqlclient-r-version.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-mysqlclient-r-version.patch new file mode 100644 index 00000000..a519e429 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-mysqlclient-r-version.patch @@ -0,0 +1,160 @@ +From 6db2a606196fb38a6d106dc409eee1cb9a40a440 Mon Sep 17 00:00:00 2001 +From: Tor Didriksen +Date: Mon, 24 Jun 2013 17:15:35 +0200 +Subject: [PATCH] Bug#16809055 MYSQL 5.6 AND 5.7 STILL USE LIBMYSQLCLIENT.SO.18 + +With this patch, the libmysql/ directory contains: +libmysqlclient.a +libmysqlclient_r.a -> libmysqlclient.a +libmysqlclient_r.so -> libmysqlclient.so* +libmysqlclient_r.so.18 -> libmysqlclient.so.18* +libmysqlclient_r.so.18.1.0 -> libmysqlclient.so.18.1.0* +libmysqlclient.so -> libmysqlclient.so.18* +libmysqlclient.so.18 -> libmysqlclient.so.18.1.0* +libmysqlclient.so.18.1.0* + +This fixes libmysqlclient_r symlinks pointing to the unversioned +libmysqlclient.so symlink (leading to package QA errors since the +libmysqlclient-r package ends up depending on libmysqlclient-dev). + +Borrowed from MySQL 5.6 tree at https://github.com/percona/mysql/ + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton + +--- + cmake/install_macros.cmake | 25 +++++++++++++++---------- + libmysql/CMakeLists.txt | 34 +++++++++++++++++++++++++++------- + 2 files changed, 42 insertions(+), 17 deletions(-) + +diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake +index b8efdf8..a0d0e68 100644 +--- a/cmake/install_macros.cmake ++++ b/cmake/install_macros.cmake +@@ -1,4 +1,4 @@ +-# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. ++# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + # + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by +@@ -167,28 +167,33 @@ ENDFUNCTION() + + + # Install symbolic link to CMake target. +-# the link is created in the same directory as target +-# and extension will be the same as for target file. +-MACRO(INSTALL_SYMLINK linkname target destination component) ++# We do 'cd path; ln -s target_name link_name' ++# We also add an INSTALL target for "${path}/${link_name}" ++MACRO(INSTALL_SYMLINK target target_name link_name destination component) + IF(UNIX) + GET_TARGET_PROPERTY(location ${target} LOCATION) + GET_FILENAME_COMPONENT(path ${location} PATH) +- GET_FILENAME_COMPONENT(name ${location} NAME) +- SET(output ${path}/${linkname}) ++ MESSAGE(STATUS "target ${target}") ++ MESSAGE(STATUS "link_name ${link_name}") ++ MESSAGE(STATUS "target_name ${target_name}") ++ MESSAGE(STATUS "path ${path}") ++ MESSAGE(STATUS "") ++ ++ SET(output ${path}/${link_name}) + ADD_CUSTOM_COMMAND( + OUTPUT ${output} + COMMAND ${CMAKE_COMMAND} ARGS -E remove -f ${output} + COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink +- ${name} +- ${linkname} ++ ${target_name} ++ ${link_name} + WORKING_DIRECTORY ${path} + DEPENDS ${target} + ) + +- ADD_CUSTOM_TARGET(symlink_${linkname} ++ ADD_CUSTOM_TARGET(symlink_${link_name} + ALL + DEPENDS ${output}) +- SET_TARGET_PROPERTIES(symlink_${linkname} PROPERTIES CLEAN_DIRECT_OUTPUT 1) ++ SET_TARGET_PROPERTIES(symlink_${link_name} PROPERTIES CLEAN_DIRECT_OUTPUT 1) + IF(CMAKE_GENERATOR MATCHES "Xcode") + # For Xcode, replace project config with install config + STRING(REPLACE "${CMAKE_CFG_INTDIR}" +diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt +index be5760f..96286ff 100644 +--- a/libmysql/CMakeLists.txt ++++ b/libmysql/CMakeLists.txt +@@ -433,6 +433,12 @@ IF(MSVC) + INSTALL_DEBUG_TARGET(clientlib DESTINATION ${INSTALL_LIBDIR}/debug) + ENDIF() + ++MACRO(GET_TARGET_NAME target out_name) ++ GET_TARGET_PROPERTY(location ${target} LOCATION) ++ GET_FILENAME_COMPONENT(name ${location} NAME) ++ SET(${out_name} ${name}) ++ENDMACRO() ++ + IF(UNIX) + MACRO(GET_VERSIONED_LIBNAME LIBNAME EXTENSION VERSION OUTNAME) + SET(DOT_VERSION ".${VERSION}") +@@ -445,7 +451,13 @@ IF(UNIX) + SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION}) + ENDIF() + ENDMACRO() +- INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR} Development) ++ENDIF() ++ ++IF(UNIX) ++ GET_TARGET_NAME(mysqlclient lib_name) ++ INSTALL_SYMLINK(mysqlclient ++ ${lib_name} ${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a ++ ${INSTALL_LIBDIR} Development) + ENDIF() + + IF(NOT DISABLE_SHARED) +@@ -456,10 +468,9 @@ IF(NOT DISABLE_SHARED) + # libtool compatability + IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE) + SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}") +- ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX") +- SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0") + ELSE() +- SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0") ++ SET(OS_SHARED_LIB_VERSION ++ "${SHARED_LIB_MAJOR_VERSION}.${SHARED_LIB_MINOR_VERSION}.0") + ENDIF() + # Name of shared library is mysqlclient on Unix + SET_TARGET_PROPERTIES(libmysql PROPERTIES +@@ -482,8 +493,13 @@ IF(NOT DISABLE_SHARED) + "${CMAKE_SHARED_LIBRARY_SUFFIX}" + "" + linkname) +- INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries) +- SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}") ++ GET_TARGET_NAME(libmysql lib_name) ++ GET_FILENAME_COMPONENT(lib_name_we ${lib_name} NAME_WE) ++ INSTALL_SYMLINK(libmysql ++ ${lib_name} ${linkname} ++ ${INSTALL_LIBDIR} SharedLibraries) ++ SET(OS_SHARED_LIB_SYMLINKS ++ "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}") + LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS) + FOREACH(ver ${OS_SHARED_LIB_SYMLINKS}) + GET_VERSIONED_LIBNAME( +@@ -491,7 +507,11 @@ IF(NOT DISABLE_SHARED) + "${CMAKE_SHARED_LIBRARY_SUFFIX}" + "${ver}" + linkname) +- INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries) ++ GET_VERSIONED_LIBNAME( ++ ${lib_name_we} "${CMAKE_SHARED_LIBRARY_SUFFIX}" "${ver}" lib_name_ver) ++ INSTALL_SYMLINK(libmysql ++ ${lib_name_ver} ${linkname} ++ ${INSTALL_LIBDIR} SharedLibraries) + ENDFOREACH() + ENDIF() + ENDIF() +-- +2.0.3 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/install_db b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/install_db new file mode 100755 index 00000000..512a7da7 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/install_db @@ -0,0 +1,13 @@ +#! /bin/sh +case "$1" in + start) + echo "Starting to install database for mariadb" + /usr/bin/mysql-systemd-start pre + echo "done." + ;; + *) + echo "Usage: /etc/init.d/install_db start" + exit 1 +esac + +exit 0 diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/install_db.service b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/install_db.service new file mode 100644 index 00000000..c8369f56 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/install_db.service @@ -0,0 +1,17 @@ +# +# Simple install MySQL database service file +# It shoulb be done before mysqld.service + +[Unit] +Description=Install MySQL Community Server Database +After=network.target +After=syslog.target +Before=mysqld.service + +[Install] +WantedBy=multi-user.target + +[Service] +Type=oneshot +ExecStart=@BINDIR@/mysql-systemd-start pre + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/my.cnf b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/my.cnf new file mode 100644 index 00000000..dc4c172e --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/my.cnf @@ -0,0 +1,25 @@ +[client] +#password = password +port = 3306 +socket = /var/lib/mysql/mysql.sock + +[mysqld_safe] + +[mysqld] +user = mysql +port = 3306 +socket = /var/lib/mysql/mysql.sock +pid-file = /var/lib/mysql/mysqld.pid +log-error = /var/log/mysqld.err +basedir = /usr +datadir = /var/lib/mysql +skip-external-locking +skip-networking +ignore-builtin-innodb +default-storage-engine = myisam +bind-address = localhost + +# +# include all files from the config directory +# +!includedir /etc/my.cnf.d diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mysql-systemd-start b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mysql-systemd-start new file mode 100644 index 00000000..189c0202 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mysql-systemd-start @@ -0,0 +1,66 @@ +#! /bin/sh +# +# Needed argument: pre | post +# +# pre mode : try to run mysql_install_db and fix perms and SELinux contexts +# post mode : ping server until answer is received +# + +get_option () { + local section=$1 + local option=$2 + local default=$3 + ret=$(/usr/bin/my_print_defaults $section | grep '^--'${option}'=' | cut -d= -f2-) + [ -z $ret ] && ret=$default + echo $ret +} + +install_db () { + # Note: something different than datadir=/var/lib/mysql requires SELinux policy changes (in enforcing mode) + datadir=$(get_option mysqld datadir "/var/lib/mysql") + + # Restore log, dir, perms and SELinux contexts + [ -d "$datadir" ] || install -d -m 0755 -omysql -gmysql "$datadir" || exit 1 + log=/var/log/mysqld.log + [ -e $log ] || touch $log + chmod 0640 $log + chown mysql:mysql $log || exit 1 + if [ -x /usr/sbin/restorecon ]; then + /usr/sbin/restorecon "$datadir" + /usr/sbin/restorecon $log + fi + + # If special mysql dir is in place, skip db install + [ -d "$datadir/mysql" ] && exit 0 + + # Create initial db + /usr/bin/mysql_install_db --rpm --datadir="$datadir" --user=mysql + exit 0 +} + +pinger () { + # Wait for ping to answer to signal startup completed, + # might take a while in case of e.g. crash recovery + # MySQL systemd service will timeout script if no answer + datadir=$(get_option mysqld datadir "/var/lib/mysql") + socket=$(get_option mysqld socket "$datadir/mysql.sock") + case $socket in + /*) adminsocket="$socket" ;; + *) adminsocket="$datadir/$socket" ;; + esac + + while /bin/true ; do + sleep 1 + mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping >/dev/null 2>&1 && break + done + exit 0 +} + +# main +case $1 in + "pre") install_db ;; + "post") pinger ;; +esac + +exit 0 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mysqld.service b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mysqld.service new file mode 100644 index 00000000..d8836170 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mysqld.service @@ -0,0 +1,25 @@ +[Unit] +Description=MariaDB database server +After=syslog.target +After=network.target + +[Service] +PIDFile=/var/lib/mysql/mysqld.pid +Type=simple +User=mysql +Group=mysql + +# Execute post scripts as root +PermissionsStartOnly=true + +# Start main service +ExecStart=@BINDIR@/mysqld_safe --basedir=@PREFIX@ + +# Don't signal startup success before a ping works +ExecStartPost=@BINDIR@/mysql-systemd-start post + +TimeoutSec=300 +PrivateTmp=true + +[Install] +WantedBy=multi-user.target diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/remove-bad-path.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/remove-bad-path.patch new file mode 100644 index 00000000..ff26b0b8 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/remove-bad-path.patch @@ -0,0 +1,18 @@ +Remove host path from include directories + +Naturally this breaks cross-compilation if present. + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton + +--- mariadb-5.5.38/storage/tokudb/ft-index/CMakeLists.txt 2014-07-17 14:37:04.529327998 +0100 ++++ mariadb-5.5.38/storage/tokudb/ft-index/CMakeLists.txt 2014-07-17 14:43:56.991337895 +0100 +@@ -39,7 +39,6 @@ + + ## default includes and libraries + include_directories(SYSTEM +- /usr/local/include + ${ZLIB_INCLUDE_DIRS} + ) + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.64.bb b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.64.bb new file mode 100644 index 00000000..d7895732 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.64.bb @@ -0,0 +1,27 @@ +require mariadb.inc + +EXTRA_OECMAKE += "-DSTACK_DIRECTION=-1" + +DEPENDS += "mariadb-native ncurses zlib readline libaio libevent" + +PROVIDES += "mysql5 libmysqlclient" + +RPROVIDES_${PN} += "mysql5" +RREPLACES_${PN} += "mysql5" +RCONFLICTS_${PN} += "mysql5" + +RPROVIDES_${PN}-dbg += "mysql5-dbg" +RREPLACES_${PN}-dbg += "mysql5-dbg" +RCONFLICTS_${PN}-dbg += "mysql5-dbg" + +RPROVIDES_${PN}-leftovers += "mysql5-leftovers" +RREPLACES_${PN}-leftovers += "mysql5-leftovers" +RCONFLICTS_${PN}-leftovers += "mysql5-leftovers" + +RPROVIDES_${PN}-client += "mysql5-client" +RREPLACES_${PN}-client += "mysql5-client" +RCONFLICTS_${PN}-client += "mysql5-client" + +RPROVIDES_${PN}-server += "mysql5-server" +RREPLACES_${PN}-server += "mysql5-server" +RCONFLICTS_${PN}-server += "mysql5-server" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb new file mode 100644 index 00000000..ac0df4f0 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb @@ -0,0 +1,17 @@ +SUMMARY = "Python interface to MySQL" +HOMEPAGE = "https://github.com/farcepest/MySQLdb1" +SECTION = "devel/python" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://GPL-2.0;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +DEPENDS = "mysql5" + +SRCNAME = "MySQL-python" + +SRC_URI = "https://pypi.python.org/packages/source/M/${SRCNAME}/${SRCNAME}-${PV}.zip" +SRC_URI[md5sum] = "654f75b302db6ed8dc5a898c625e030c" +SRC_URI[sha256sum] = "811040b647e5d5686f84db415efd697e6250008b112b6909ba77ac059e140c74" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit setuptools diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Sync-our-copy-of-the-timezone-library-with-IANA-rele.patch b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Sync-our-copy-of-the-timezone-library-with-IANA-rele.patch new file mode 100644 index 00000000..6d8c46e7 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Sync-our-copy-of-the-timezone-library-with-IANA-rele.patch @@ -0,0 +1,1164 @@ +From 12bfb778ce688fc662a6cb35f6298734fcf4856f Mon Sep 17 00:00:00 2001 +From: Tom Lane +Date: Fri, 19 Oct 2018 19:36:34 -0400 +Subject: [PATCH] Sync our copy of the timezone library with IANA release + tzcode2018f. + +About half of this is purely cosmetic changes to reduce the diff between +our code and theirs, like inserting "const" markers where they have them. + +The other half is tracking actual code changes in zic.c and localtime.c. +I don't think any of these represent near-term compatibility hazards, but +it seems best to stay up to date. + +I also fixed longstanding bugs in our code for producing the +known_abbrevs.txt list, which by chance hadn't been exposed before, +but which resulted in some garbage output after applying the upstream +changes in zic.c. Notably, because upstream removed their old phony +transitions at the Big Bang, it's now necessary to cope with TZif files +containing no DST transition times at all. + +Upstream-Status: Backport +Signed-off-by: Armin Kuster + +--- + src/timezone/README | 2 +- + src/timezone/localtime.c | 126 ++++++++++++------ + src/timezone/pgtz.h | 10 +- + src/timezone/private.h | 3 + + src/timezone/strftime.c | 10 +- + src/timezone/tzfile.h | 7 +- + src/timezone/zic.c | 330 ++++++++++++++++++++++++++--------------------- + 7 files changed, 291 insertions(+), 197 deletions(-) + +Index: postgresql-10.5/src/timezone/README +=================================================================== +--- postgresql-10.5.orig/src/timezone/README ++++ postgresql-10.5/src/timezone/README +@@ -55,7 +55,7 @@ match properly on the old version. + Time Zone code + ============== + +-The code in this directory is currently synced with tzcode release 2018e. ++The code in this directory is currently synced with tzcode release 2018f. + There are many cosmetic (and not so cosmetic) differences from the + original tzcode library, but diffs in the upstream version should usually + be propagated to our version. Here are some notes about that. +Index: postgresql-10.5/src/timezone/localtime.c +=================================================================== +--- postgresql-10.5.orig/src/timezone/localtime.c ++++ postgresql-10.5/src/timezone/localtime.c +@@ -1,3 +1,5 @@ ++/* Convert timestamp from pg_time_t to struct pg_tm. */ ++ + /* + * This file is in the public domain, so clarified as of + * 1996-06-05 by Arthur David Olson. +@@ -117,7 +119,7 @@ init_ttinfo(struct ttinfo *s, int32 gmto + } + + static int32 +-detzcode(const char *codep) ++detzcode(const char *const codep) + { + int32 result; + int i; +@@ -143,7 +145,7 @@ detzcode(const char *codep) + } + + static int64 +-detzcode64(const char *codep) ++detzcode64(const char *const codep) + { + uint64 result; + int i; +@@ -258,8 +260,13 @@ tzloadbody(char const *name, char *canon + int32 charcnt = detzcode(up->tzhead.tzh_charcnt); + char const *p = up->buf + tzheadsize; + ++ /* ++ * Although tzfile(5) currently requires typecnt to be nonzero, ++ * support future formats that may allow zero typecnt in files that ++ * have a TZ string and no transitions. ++ */ + if (!(0 <= leapcnt && leapcnt < TZ_MAX_LEAPS +- && 0 < typecnt && typecnt < TZ_MAX_TYPES ++ && 0 <= typecnt && typecnt < TZ_MAX_TYPES + && 0 <= timecnt && timecnt < TZ_MAX_TIMES + && 0 <= charcnt && charcnt < TZ_MAX_CHARS + && (ttisstdcnt == typecnt || ttisstdcnt == 0) +@@ -416,8 +423,7 @@ tzloadbody(char const *name, char *canon + struct state *ts = &lsp->u.st; + + up->buf[nread - 1] = '\0'; +- if (tzparse(&up->buf[1], ts, false) +- && ts->typecnt == 2) ++ if (tzparse(&up->buf[1], ts, false)) + { + /* + * Attempt to reuse existing abbreviations. Without this, +@@ -430,7 +436,7 @@ tzloadbody(char const *name, char *canon + int gotabbr = 0; + int charcnt = sp->charcnt; + +- for (i = 0; i < 2; i++) ++ for (i = 0; i < ts->typecnt; i++) + { + char *tsabbr = ts->chars + ts->ttis[i].tt_abbrind; + int j; +@@ -455,7 +461,7 @@ tzloadbody(char const *name, char *canon + } + } + } +- if (gotabbr == 2) ++ if (gotabbr == ts->typecnt) + { + sp->charcnt = charcnt; + +@@ -470,7 +476,8 @@ tzloadbody(char const *name, char *canon + sp->timecnt--; + + for (i = 0; i < ts->timecnt; i++) +- if (sp->ats[sp->timecnt - 1] < ts->ats[i]) ++ if (sp->timecnt == 0 ++ || sp->ats[sp->timecnt - 1] < ts->ats[i]) + break; + while (i < ts->timecnt + && sp->timecnt < TZ_MAX_TIMES) +@@ -481,11 +488,13 @@ tzloadbody(char const *name, char *canon + sp->timecnt++; + i++; + } +- sp->ttis[sp->typecnt++] = ts->ttis[0]; +- sp->ttis[sp->typecnt++] = ts->ttis[1]; ++ for (i = 0; i < ts->typecnt; i++) ++ sp->ttis[sp->typecnt++] = ts->ttis[i]; + } + } + } ++ if (sp->typecnt == 0) ++ return EINVAL; + if (sp->timecnt > 1) + { + for (i = 1; i < sp->timecnt; ++i) +@@ -507,6 +516,18 @@ tzloadbody(char const *name, char *canon + } + + /* ++ * Infer sp->defaulttype from the data. Although this default type is ++ * always zero for data from recent tzdb releases, things are trickier for ++ * data from tzdb 2018e or earlier. ++ * ++ * The first set of heuristics work around bugs in 32-bit data generated ++ * by tzdb 2013c or earlier. The workaround is for zones like ++ * Australia/Macquarie where timestamps before the first transition have a ++ * time type that is not the earliest standard-time type. See: ++ * https://mm.icann.org/pipermail/tz/2013-May/019368.html ++ */ ++ ++ /* + * If type 0 is unused in transitions, it's the type to use for early + * times. + */ +@@ -529,6 +550,11 @@ tzloadbody(char const *name, char *canon + } + + /* ++ * The next heuristics are for data generated by tzdb 2018e or earlier, ++ * for zones like EST5EDT where the first transition is to DST. ++ */ ++ ++ /* + * If no result yet, find the first standard type. If there is none, punt + * to type zero. + */ +@@ -542,7 +568,14 @@ tzloadbody(char const *name, char *canon + break; + } + } ++ ++ /* ++ * A simple 'sp->defaulttype = 0;' would suffice here if we didn't have to ++ * worry about 2018e-or-earlier data. Even simpler would be to remove the ++ * defaulttype member and just use 0 in its place. ++ */ + sp->defaulttype = i; ++ + return 0; + } + +@@ -601,10 +634,11 @@ static const int year_lengths[2] = { + }; + + /* +- * Given a pointer into a time zone string, scan until a character that is not +- * a valid character in a zone name is found. Return a pointer to that +- * character. ++ * Given a pointer into a timezone string, scan until a character that is not ++ * a valid character in a time zone abbreviation is found. ++ * Return a pointer to that character. + */ ++ + static const char * + getzname(const char *strp) + { +@@ -617,15 +651,17 @@ getzname(const char *strp) + } + + /* +- * Given a pointer into an extended time zone string, scan until the ending +- * delimiter of the zone name is located. Return a pointer to the delimiter. ++ * Given a pointer into an extended timezone string, scan until the ending ++ * delimiter of the time zone abbreviation is located. ++ * Return a pointer to the delimiter. + * + * As with getzname above, the legal character set is actually quite + * restricted, with other characters producing undefined results. + * We don't do any checking here; checking is done later in common-case code. + */ ++ + static const char * +-getqzname(const char *strp, int delim) ++getqzname(const char *strp, const int delim) + { + int c; + +@@ -635,13 +671,14 @@ getqzname(const char *strp, int delim) + } + + /* +- * Given a pointer into a time zone string, extract a number from that string. ++ * Given a pointer into a timezone string, extract a number from that string. + * Check that the number is within a specified range; if it is not, return + * NULL. + * Otherwise, return a pointer to the first character not part of the number. + */ ++ + static const char * +-getnum(const char *strp, int *nump, int min, int max) ++getnum(const char *strp, int *const nump, const int min, const int max) + { + char c; + int num; +@@ -663,14 +700,15 @@ getnum(const char *strp, int *nump, int + } + + /* +- * Given a pointer into a time zone string, extract a number of seconds, ++ * Given a pointer into a timezone string, extract a number of seconds, + * in hh[:mm[:ss]] form, from the string. + * If any error occurs, return NULL. + * Otherwise, return a pointer to the first character not part of the number + * of seconds. + */ ++ + static const char * +-getsecs(const char *strp, int32 *secsp) ++getsecs(const char *strp, int32 *const secsp) + { + int num; + +@@ -704,13 +742,14 @@ getsecs(const char *strp, int32 *secsp) + } + + /* +- * Given a pointer into a time zone string, extract an offset, in ++ * Given a pointer into a timezone string, extract an offset, in + * [+-]hh[:mm[:ss]] form, from the string. + * If any error occurs, return NULL. + * Otherwise, return a pointer to the first character not part of the time. + */ ++ + static const char * +-getoffset(const char *strp, int32 *offsetp) ++getoffset(const char *strp, int32 *const offsetp) + { + bool neg = false; + +@@ -730,13 +769,14 @@ getoffset(const char *strp, int32 *offse + } + + /* +- * Given a pointer into a time zone string, extract a rule in the form ++ * Given a pointer into a timezone string, extract a rule in the form + * date[/time]. See POSIX section 8 for the format of "date" and "time". + * If a valid rule is not found, return NULL. + * Otherwise, return a pointer to the first character not part of the rule. + */ ++ + static const char * +-getrule(const char *strp, struct rule *rulep) ++getrule(const char *strp, struct rule *const rulep) + { + if (*strp == 'J') + { +@@ -795,9 +835,10 @@ getrule(const char *strp, struct rule *r + * Given a year, a rule, and the offset from UT at the time that rule takes + * effect, calculate the year-relative time that rule takes effect. + */ ++ + static int32 +-transtime(int year, const struct rule *rulep, +- int32 offset) ++transtime(const int year, const struct rule *const rulep, ++ const int32 offset) + { + bool leapyear; + int32 value; +@@ -981,7 +1022,7 @@ tzparse(const char *name, struct state * + { + dstname = name; + name = getzname(name); +- dstlen = name - dstname; /* length of DST zone name */ ++ dstlen = name - dstname; /* length of DST abbr. */ + } + if (!dstlen) + return false; +@@ -1023,8 +1064,8 @@ tzparse(const char *name, struct state * + /* + * Two transitions per year, from EPOCH_YEAR forward. + */ +- init_ttinfo(&sp->ttis[0], -dstoffset, true, stdlen + 1); +- init_ttinfo(&sp->ttis[1], -stdoffset, false, 0); ++ init_ttinfo(&sp->ttis[0], -stdoffset, false, 0); ++ init_ttinfo(&sp->ttis[1], -dstoffset, true, stdlen + 1); + sp->defaulttype = 0; + timecnt = 0; + janfirst = 0; +@@ -1073,19 +1114,15 @@ tzparse(const char *name, struct state * + if (!increment_overflow_time + (&sp->ats[timecnt], + janoffset + starttime)) +- sp->types[timecnt++] = reversed; +- else if (janoffset) +- sp->defaulttype = reversed; ++ sp->types[timecnt++] = !reversed; + sp->ats[timecnt] = janfirst; + if (!increment_overflow_time + (&sp->ats[timecnt], + janoffset + endtime)) + { +- sp->types[timecnt++] = !reversed; ++ sp->types[timecnt++] = reversed; + yearlim = year + YEARSPERREPEAT + 1; + } +- else if (janoffset) +- sp->defaulttype = !reversed; + } + if (increment_overflow_time + (&janfirst, janoffset + yearsecs)) +@@ -1094,7 +1131,10 @@ tzparse(const char *name, struct state * + } + sp->timecnt = timecnt; + if (!timecnt) ++ { ++ sp->ttis[0] = sp->ttis[1]; + sp->typecnt = 1; /* Perpetual DST. */ ++ } + else if (YEARSPERREPEAT < year - yearbeg) + sp->goback = sp->goahead = true; + } +@@ -1163,7 +1203,6 @@ tzparse(const char *name, struct state * + * otherwise, add the standard time offset to the + * transition time. + */ +- + /* + * Transitions from DST to DDST will effectively disappear + * since POSIX provides for only one DST offset. +@@ -1217,7 +1256,7 @@ tzparse(const char *name, struct state * + } + + static void +-gmtload(struct state *sp) ++gmtload(struct state *const sp) + { + if (tzload(gmt, NULL, sp, true) != 0) + tzparse(gmt, sp, true); +@@ -1232,7 +1271,7 @@ gmtload(struct state *sp) + */ + static struct pg_tm * + localsub(struct state const *sp, pg_time_t const *timep, +- struct pg_tm *tmp) ++ struct pg_tm *const tmp) + { + const struct ttinfo *ttisp; + int i; +@@ -1300,6 +1339,11 @@ localsub(struct state const *sp, pg_time + } + ttisp = &sp->ttis[i]; + ++ /* ++ * To get (wrong) behavior that's compatible with System V Release 2.0 ++ * you'd replace the statement below with t += ttisp->tt_gmtoff; ++ * timesub(&t, 0L, sp, tmp); ++ */ + result = timesub(&t, ttisp->tt_gmtoff, sp, tmp); + if (result) + { +@@ -1322,8 +1366,10 @@ pg_localtime(const pg_time_t *timep, con + * + * Except we have a private "struct state" for GMT, so no sp is passed in. + */ ++ + static struct pg_tm * +-gmtsub(pg_time_t const *timep, int32 offset, struct pg_tm *tmp) ++gmtsub(pg_time_t const *timep, int32 offset, ++ struct pg_tm *tmp) + { + struct pg_tm *result; + +@@ -1337,6 +1383,7 @@ gmtsub(pg_time_t const *timep, int32 off + gmt_is_set = true; + gmtload(gmtptr); + } ++ + result = timesub(timep, offset, gmtptr, tmp); + + /* +@@ -1361,6 +1408,7 @@ pg_gmtime(const pg_time_t *timep) + * Return the number of leap years through the end of the given year + * where, to make the math easy, the answer for year zero is defined as zero. + */ ++ + static int + leaps_thru_end_of_nonneg(int y) + { +Index: postgresql-10.5/src/timezone/pgtz.h +=================================================================== +--- postgresql-10.5.orig/src/timezone/pgtz.h ++++ postgresql-10.5/src/timezone/pgtz.h +@@ -49,10 +49,16 @@ struct state + pg_time_t ats[TZ_MAX_TIMES]; + unsigned char types[TZ_MAX_TIMES]; + struct ttinfo ttis[TZ_MAX_TYPES]; +- char chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, 3 /* sizeof gmt */ ), ++ char chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, 4 /* sizeof gmt */ ), + (2 * (TZ_STRLEN_MAX + 1)))]; + struct lsinfo lsis[TZ_MAX_LEAPS]; +- int defaulttype; /* for early times or if no transitions */ ++ ++ /* ++ * The time type to use for early times or if no transitions. It is always ++ * zero for recent tzdb releases. It might be nonzero for data from tzdb ++ * 2018e or earlier. ++ */ ++ int defaulttype; + }; + + +Index: postgresql-10.5/src/timezone/private.h +=================================================================== +--- postgresql-10.5.orig/src/timezone/private.h ++++ postgresql-10.5/src/timezone/private.h +@@ -1,4 +1,7 @@ ++/* Private header for tzdb code. */ ++ + #ifndef PRIVATE_H ++ + #define PRIVATE_H + + /* +Index: postgresql-10.5/src/timezone/strftime.c +=================================================================== +--- postgresql-10.5.orig/src/timezone/strftime.c ++++ postgresql-10.5/src/timezone/strftime.c +@@ -1,4 +1,4 @@ +-/* Convert a broken-down timestamp to a string. */ ++/* Convert a broken-down timestamp to a string. */ + + /* + * Copyright 1989 The Regents of the University of California. +@@ -115,7 +115,7 @@ static char *_add(const char *, char *, + static char *_conv(int, const char *, char *, const char *); + static char *_fmt(const char *, const struct pg_tm *, char *, const char *, + enum warn *); +-static char *_yconv(int, int, bool, bool, char *, const char *); ++static char *_yconv(int, int, bool, bool, char *, char const *); + + + size_t +@@ -441,7 +441,8 @@ _fmt(const char *format, const struct pg + + /* + * C99 and later say that %Z must be replaced by the empty +- * string if the time zone is not determinable. ++ * string if the time zone abbreviation is not ++ * determinable. + */ + continue; + case 'z': +@@ -519,6 +520,7 @@ _add(const char *str, char *pt, const ch + * same output as %Y, and that %Y contains at least 4 bytes, + * with more only if necessary. + */ ++ + static char * + _yconv(int a, int b, bool convert_top, bool convert_yy, + char *pt, const char *ptlim) +@@ -526,7 +528,7 @@ _yconv(int a, int b, bool convert_top, b + int lead; + int trail; + +-#define DIVISOR 100 ++#define DIVISOR 100 + trail = a % DIVISOR + b % DIVISOR; + lead = a / DIVISOR + b / DIVISOR + trail / DIVISOR; + trail %= DIVISOR; +Index: postgresql-10.5/src/timezone/tzfile.h +=================================================================== +--- postgresql-10.5.orig/src/timezone/tzfile.h ++++ postgresql-10.5/src/timezone/tzfile.h +@@ -1,4 +1,7 @@ ++/* Layout and location of TZif files. */ ++ + #ifndef TZFILE_H ++ + #define TZFILE_H + + /* +@@ -21,14 +24,14 @@ + * Information about time zone files. + */ + +-#define TZDEFAULT "localtime" ++#define TZDEFAULT "/etc/localtime" + #define TZDEFRULES "posixrules" + + /* + * Each file begins with. . . + */ + +-#define TZ_MAGIC "TZif" ++#define TZ_MAGIC "TZif" + + struct tzhead + { +Index: postgresql-10.5/src/timezone/zic.c +=================================================================== +--- postgresql-10.5.orig/src/timezone/zic.c ++++ postgresql-10.5/src/timezone/zic.c +@@ -1,3 +1,5 @@ ++/* Compile .zi time zone data into TZif binary files. */ ++ + /* + * This file is in the public domain, so clarified as of + * 2006-07-17 by Arthur David Olson. +@@ -130,8 +132,7 @@ static void adjleap(void); + static void associate(void); + static void dolink(const char *, const char *, bool); + static char **getfields(char *buf); +-static zic_t gethms(const char *string, const char *errstring, +- bool); ++static zic_t gethms(const char *string, const char *errstring); + static zic_t getstdoff(char *, bool *); + static void infile(const char *filename); + static void inleap(char **fields, int nfields); +@@ -162,7 +163,7 @@ enum + PERCENT_Z_LEN_BOUND = sizeof "+995959" - 1}; + + /* If true, work around a bug in Qt 5.6.1 and earlier, which mishandles +- tz binary files whose POSIX-TZ-style strings contain '<'; see ++ TZif files whose POSIX-TZ-style strings contain '<'; see + QTBUG-53071 . This + workaround will no longer be needed when Qt 5.6.1 and earlier are + obsolete, say in the year 2021. */ +@@ -211,7 +212,7 @@ static int typecnt; + #define ZF_RULE 3 + #define ZF_FORMAT 4 + #define ZF_TILYEAR 5 +-#define ZF_TILMONTH 6 ++#define ZF_TILMONTH 6 + #define ZF_TILDAY 7 + #define ZF_TILTIME 8 + #define ZONE_MINFIELDS 5 +@@ -224,12 +225,12 @@ static int typecnt; + #define ZFC_GMTOFF 0 + #define ZFC_RULE 1 + #define ZFC_FORMAT 2 +-#define ZFC_TILYEAR 3 ++#define ZFC_TILYEAR 3 + #define ZFC_TILMONTH 4 + #define ZFC_TILDAY 5 +-#define ZFC_TILTIME 6 +-#define ZONEC_MINFIELDS 3 +-#define ZONEC_MAXFIELDS 7 ++#define ZFC_TILTIME 6 ++#define ZONEC_MINFIELDS 3 ++#define ZONEC_MAXFIELDS 7 + + /* + * Which files are which on a Rule line. +@@ -244,7 +245,7 @@ static int typecnt; + #define RF_TOD 7 + #define RF_STDOFF 8 + #define RF_ABBRVAR 9 +-#define RULE_FIELDS 10 ++#define RULE_FIELDS 10 + + /* + * Which fields are which on a Link line. +@@ -252,7 +253,7 @@ static int typecnt; + + #define LF_FROM 1 + #define LF_TO 2 +-#define LINK_FIELDS 3 ++#define LINK_FIELDS 3 + + /* + * Which fields are which on a Leap line. +@@ -264,7 +265,7 @@ static int typecnt; + #define LP_TIME 4 + #define LP_CORR 5 + #define LP_ROLL 6 +-#define LEAP_FIELDS 7 ++#define LEAP_FIELDS 7 + + /* + * Year synonyms. +@@ -998,48 +999,6 @@ dolink(char const *fromfield, char const + static zic_t const min_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE); + static zic_t const max_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE); + +-/* +- * Estimated time of the Big Bang, in seconds since the POSIX epoch. +- * rounded downward to the negation of a power of two that is +- * comfortably outside the error bounds. +- * +- * For the time of the Big Bang, see: +- * +- * Ade PAR, Aghanim N, Armitage-Caplan C et al. Planck 2013 results. +- * I. Overview of products and scientific results. +- * arXiv:1303.5062 2013-03-20 20:10:01 UTC +- * [PDF] +- * +- * Page 36, Table 9, row Age/Gyr, column Planck+WP+highL+BAO 68% limits +- * gives the value 13.798 plus-or-minus 0.037 billion years. +- * Multiplying this by 1000000000 and then by 31557600 (the number of +- * seconds in an astronomical year) gives a value that is comfortably +- * less than 2**59, so BIG_BANG is - 2**59. +- * +- * BIG_BANG is approximate, and may change in future versions. +- * Please do not rely on its exact value. +- */ +- +-#ifndef BIG_BANG +-#define BIG_BANG (- (((zic_t) 1) << 59)) +-#endif +- +-/* If true, work around GNOME bug 730332 +- +- by refusing to output time stamps before BIG_BANG. +- Such time stamps are physically suspect anyway. +- +- The GNOME bug is scheduled to be fixed in GNOME 3.22, and if so +- this workaround will no longer be needed when GNOME 3.21 and +- earlier are obsolete, say in the year 2021. */ +-enum +-{ +-WORK_AROUND_GNOME_BUG_730332 = true}; +- +-static const zic_t early_time = (WORK_AROUND_GNOME_BUG_730332 +- ? BIG_BANG +- : MINVAL(zic_t, TIME_T_BITS_IN_FILE)); +- + /* Return true if NAME is a directory. */ + static bool + itsdir(char const *name) +@@ -1281,8 +1240,9 @@ infile(const char *name) + * A null string maps to zero. + * Call error with errstring and return zero on errors. + */ ++ + static zic_t +-gethms(char const *string, char const *errstring, bool signable) ++gethms(char const *string, char const *errstring) + { + /* PG: make hh be int not zic_t to avoid sscanf portability issues */ + int hh; +@@ -1299,9 +1259,7 @@ gethms(char const *string, char const *e + + if (string == NULL || *string == '\0') + return 0; +- if (!signable) +- sign = 1; +- else if (*string == '-') ++ if (*string == '-') + { + sign = -1; + ++string; +@@ -1384,7 +1342,7 @@ getstdoff(char *field, bool *isdst) + break; + } + } +- stdoff = gethms(field, _("invalid saved time"), true); ++ stdoff = gethms(field, _("invalid saved time")); + *isdst = dst < 0 ? stdoff != 0 : dst; + return stdoff; + } +@@ -1399,10 +1357,29 @@ inrule(char **fields, int nfields) + error(_("wrong number of fields on Rule line")); + return; + } +- if (*fields[RF_NAME] == '\0') ++ switch (*fields[RF_NAME]) + { +- error(_("nameless rule")); +- return; ++ case '\0': ++ case ' ': ++ case '\f': ++ case '\n': ++ case '\r': ++ case '\t': ++ case '\v': ++ case '+': ++ case '-': ++ case '0': ++ case '1': ++ case '2': ++ case '3': ++ case '4': ++ case '5': ++ case '6': ++ case '7': ++ case '8': ++ case '9': ++ error(_("Invalid rule name \"%s\""), fields[RF_NAME]); ++ return; + } + r.r_filename = filename; + r.r_linenum = linenum; +@@ -1507,7 +1484,7 @@ inzsub(char **fields, int nfields, bool + } + z.z_filename = filename; + z.z_linenum = linenum; +- z.z_gmtoff = gethms(fields[i_gmtoff], _("invalid UT offset"), true); ++ z.z_gmtoff = gethms(fields[i_gmtoff], _("invalid UT offset")); + if ((cp = strchr(fields[i_format], '%')) != NULL) + { + if ((*++cp != 's' && *cp != 'z') || strchr(cp, '%') +@@ -1649,7 +1626,7 @@ inleap(char **fields, int nfields) + return; + } + t = dayoff * SECSPERDAY; +- tod = gethms(fields[LP_TIME], _("invalid time of day"), false); ++ tod = gethms(fields[LP_TIME], _("invalid time of day")); + cp = fields[LP_CORR]; + { + bool positive; +@@ -1757,7 +1734,7 @@ rulesub(struct rule *rp, const char *loy + break; + } + } +- rp->r_tod = gethms(dp, _("invalid time of day"), false); ++ rp->r_tod = gethms(dp, _("invalid time of day")); + free(dp); + + /* +@@ -1942,7 +1919,43 @@ is32(const zic_t x) + } + + static void +-writezone(const char *const name, const char *const string, char version) ++swaptypes(int i, int j) ++{ ++ { ++ zic_t t = gmtoffs[i]; ++ ++ gmtoffs[i] = gmtoffs[j]; ++ gmtoffs[j] = t; ++ } ++ { ++ char t = isdsts[i]; ++ ++ isdsts[i] = isdsts[j]; ++ isdsts[j] = t; ++ } ++ { ++ unsigned char t = abbrinds[i]; ++ ++ abbrinds[i] = abbrinds[j]; ++ abbrinds[j] = t; ++ } ++ { ++ bool t = ttisstds[i]; ++ ++ ttisstds[i] = ttisstds[j]; ++ ttisstds[j] = t; ++ } ++ { ++ bool t = ttisgmts[i]; ++ ++ ttisgmts[i] = ttisgmts[j]; ++ ttisgmts[j] = t; ++ } ++} ++ ++static void ++writezone(const char *const name, const char *const string, char version, ++ int defaulttype) + { + FILE *fp; + ptrdiff_t i, +@@ -1977,14 +1990,12 @@ writezone(const char *const name, const + + toi = 0; + fromi = 0; +- while (fromi < timecnt && attypes[fromi].at < early_time) +- ++fromi; + for (; fromi < timecnt; ++fromi) + { +- if (toi > 1 && ((attypes[fromi].at + +- gmtoffs[attypes[toi - 1].type]) <= +- (attypes[toi - 1].at + +- gmtoffs[attypes[toi - 2].type]))) ++ if (toi != 0 && ((attypes[fromi].at + ++ gmtoffs[attypes[toi - 1].type]) <= ++ (attypes[toi - 1].at + gmtoffs[toi == 1 ? 0 ++ : attypes[toi - 2].type]))) + { + attypes[toi - 1].type = + attypes[fromi].type; +@@ -2019,8 +2030,8 @@ writezone(const char *const name, const + } + + /* +- * Work around QTBUG-53071 for time stamps less than y2038_boundary - 1, +- * by inserting a no-op transition at time y2038_boundary - 1. This works ++ * Work around QTBUG-53071 for timestamps less than y2038_boundary - 1, by ++ * inserting a no-op transition at time y2038_boundary - 1. This works + * only for timestamps before the boundary, which should be good enough in + * practice as QTBUG-53071 should be long-dead by 2038. + */ +@@ -2116,7 +2127,8 @@ writezone(const char *const name, const + int thisleapi, + thisleapcnt, + thisleaplim; +- int writetype[TZ_MAX_TYPES]; ++ int old0; ++ char omittype[TZ_MAX_TYPES]; + int typemap[TZ_MAX_TYPES]; + int thistypecnt; + char thischars[TZ_MAX_CHARS]; +@@ -2144,28 +2156,19 @@ writezone(const char *const name, const + error(_("too many transition times")); + thistimelim = thistimei + thistimecnt; + thisleaplim = thisleapi + thisleapcnt; +- for (i = 0; i < typecnt; ++i) +- writetype[i] = thistimecnt == timecnt; +- if (thistimecnt == 0) +- { +- /* +- * No transition times fall in the current (32- or 64-bit) window. +- */ +- if (typecnt != 0) +- writetype[typecnt - 1] = true; +- } +- else +- { +- for (i = thistimei - 1; i < thistimelim; ++i) +- if (i >= 0) +- writetype[types[i]] = true; ++ memset(omittype, true, typecnt); ++ omittype[defaulttype] = false; ++ for (i = thistimei; i < thistimelim; i++) ++ omittype[types[i]] = false; ++ ++ /* ++ * Reorder types to make DEFAULTTYPE type 0. Use TYPEMAP to swap OLD0 ++ * and DEFAULTTYPE so that DEFAULTTYPE appears as type 0 in the output ++ * instead of OLD0. TYPEMAP also omits unused types. ++ */ ++ old0 = strlen(omittype); ++ swaptypes(old0, defaulttype); + +- /* +- * For America/Godthab and Antarctica/Palmer +- */ +- if (thistimei == 0) +- writetype[0] = true; +- } + #ifndef LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH + + /* +@@ -2187,8 +2190,8 @@ writezone(const char *const name, const + mrudst = types[i]; + else + mrustd = types[i]; +- for (i = 0; i < typecnt; ++i) +- if (writetype[i]) ++ for (i = old0; i < typecnt; i++) ++ if (!omittype[i]) + { + if (isdsts[i]) + hidst = i; +@@ -2205,7 +2208,7 @@ writezone(const char *const name, const + ttisstds[mrudst], + ttisgmts[mrudst]); + isdsts[mrudst] = 1; +- writetype[type] = true; ++ omittype[type] = false; + } + if (histd >= 0 && mrustd >= 0 && histd != mrustd && + gmtoffs[histd] != gmtoffs[mrustd]) +@@ -2217,22 +2220,26 @@ writezone(const char *const name, const + ttisstds[mrustd], + ttisgmts[mrustd]); + isdsts[mrustd] = 0; +- writetype[type] = true; ++ omittype[type] = false; + } + } + #endif /* !defined + * LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH */ + thistypecnt = 0; +- for (i = 0; i < typecnt; ++i) +- typemap[i] = writetype[i] ? thistypecnt++ : -1; ++ for (i = old0; i < typecnt; i++) ++ if (!omittype[i]) ++ typemap[i == old0 ? defaulttype ++ : i == defaulttype ? old0 : i] ++ = thistypecnt++; ++ + for (i = 0; i < sizeof indmap / sizeof indmap[0]; ++i) + indmap[i] = -1; + thischarcnt = 0; +- for (i = 0; i < typecnt; ++i) ++ for (i = old0; i < typecnt; i++) + { + char *thisabbr; + +- if (!writetype[i]) ++ if (omittype[i]) + continue; + if (indmap[abbrinds[i]] >= 0) + continue; +@@ -2267,23 +2274,16 @@ writezone(const char *const name, const + DO(tzh_typecnt); + DO(tzh_charcnt); + #undef DO +- for (i = thistimei; i < thistimelim; ++i) +- if (pass == 1) + +- /* +- * Output an INT32_MIN "transition" if appropriate; see above. +- */ +- puttzcode(((ats[i] < PG_INT32_MIN) ? +- PG_INT32_MIN : ats[i]), fp); +- else ++ /* PG: print current timezone abbreviations if requested */ ++ if (print_abbrevs && pass == 2) ++ { ++ /* Print "type" data for periods ending after print_cutoff */ ++ for (i = thistimei; i < thistimelim; ++i) + { +- puttzcode64(ats[i], fp); +- +- /* Print current timezone abbreviations if requested */ +- if (print_abbrevs && +- (i == thistimelim - 1 || ats[i + 1] > print_cutoff)) ++ if (i == thistimelim - 1 || ats[i + 1] > print_cutoff) + { +- unsigned char tm = typemap[types[i]]; ++ unsigned char tm = types[i]; + char *thisabbrev = &thischars[indmap[abbrinds[tm]]]; + + /* filter out assorted junk entries */ +@@ -2295,6 +2295,32 @@ writezone(const char *const name, const + isdsts[tm] ? "\tD" : ""); + } + } ++ /* Print the default type if we have no transitions at all */ ++ if (thistimei >= thistimelim) ++ { ++ unsigned char tm = defaulttype; ++ char *thisabbrev = &thischars[indmap[abbrinds[tm]]]; ++ ++ /* filter out assorted junk entries */ ++ if (strcmp(thisabbrev, GRANDPARENTED) != 0 && ++ strcmp(thisabbrev, "zzz") != 0) ++ fprintf(stdout, "%s\t" INT64_FORMAT "%s\n", ++ thisabbrev, ++ gmtoffs[tm], ++ isdsts[tm] ? "\tD" : ""); ++ } ++ } ++ ++ for (i = thistimei; i < thistimelim; ++i) ++ if (pass == 1) ++ ++ /* ++ * Output an INT32_MIN "transition" if appropriate; see above. ++ */ ++ puttzcode(((ats[i] < PG_INT32_MIN) ? ++ PG_INT32_MIN : ats[i]), fp); ++ else ++ puttzcode64(ats[i], fp); + for (i = thistimei; i < thistimelim; ++i) + { + unsigned char uc; +@@ -2302,8 +2328,8 @@ writezone(const char *const name, const + uc = typemap[types[i]]; + fwrite(&uc, sizeof uc, 1, fp); + } +- for (i = 0; i < typecnt; ++i) +- if (writetype[i]) ++ for (i = old0; i < typecnt; i++) ++ if (!omittype[i]) + { + puttzcode(gmtoffs[i], fp); + putc(isdsts[i], fp); +@@ -2346,12 +2372,13 @@ writezone(const char *const name, const + puttzcode64(todo, fp); + puttzcode(corr[i], fp); + } +- for (i = 0; i < typecnt; ++i) +- if (writetype[i]) ++ for (i = old0; i < typecnt; i++) ++ if (!omittype[i]) + putc(ttisstds[i], fp); +- for (i = 0; i < typecnt; ++i) +- if (writetype[i]) ++ for (i = old0; i < typecnt; i++) ++ if (!omittype[i]) + putc(ttisgmts[i], fp); ++ swaptypes(old0, defaulttype); + } + fprintf(fp, "\n%s\n", string); + close_file(fp, directory, name); +@@ -2757,6 +2784,7 @@ outzone(const struct zone *zpfirst, ptrd + zic_t one = 1; + zic_t y2038_boundary = one << 31; + zic_t max_year0; ++ int defaulttype = -1; + + max_abbr_len = 2 + max_format_len + max_abbrvar_len; + max_envvar_len = 2 * max_abbr_len + 5 * 9; +@@ -2880,9 +2908,9 @@ outzone(const struct zone *zpfirst, ptrd + */ + stdoff = 0; + zp = &zpfirst[i]; +- usestart = i > 0 && (zp - 1)->z_untiltime > early_time; ++ usestart = i > 0 && (zp - 1)->z_untiltime > min_time; + useuntil = i < (zonecount - 1); +- if (useuntil && zp->z_untiltime <= early_time) ++ if (useuntil && zp->z_untiltime <= min_time) + continue; + gmtoff = zp->z_gmtoff; + eat(zp->z_filename, zp->z_linenum); +@@ -2901,7 +2929,7 @@ outzone(const struct zone *zpfirst, ptrd + usestart = false; + } + else +- addtt(early_time, type); ++ defaulttype = type; + } + else + for (year = min_year; year <= max_year; ++year) +@@ -3032,6 +3060,8 @@ outzone(const struct zone *zpfirst, ptrd + offset = oadd(zp->z_gmtoff, rp->r_stdoff); + type = addtype(offset, ab, rp->r_isdst, + rp->r_todisstd, rp->r_todisgmt); ++ if (defaulttype < 0 && !rp->r_isdst) ++ defaulttype = type; + if (rp->r_hiyear == ZIC_MAX + && !(0 <= lastatmax + && ktime < attypes[lastatmax].at)) +@@ -3050,11 +3080,15 @@ outzone(const struct zone *zpfirst, ptrd + if (*startbuf == '\0') + error(_("cannot determine time zone abbreviation to use just after until time")); + else +- addtt(starttime, +- addtype(startoff, startbuf, +- startoff != zp->z_gmtoff, +- startttisstd, +- startttisgmt)); ++ { ++ bool isdst = startoff != zp->z_gmtoff; ++ ++ type = addtype(startoff, startbuf, isdst, ++ startttisstd, startttisgmt); ++ if (defaulttype < 0 && !isdst) ++ defaulttype = type; ++ addtt(starttime, type); ++ } + } + + /* +@@ -3071,6 +3105,8 @@ outzone(const struct zone *zpfirst, ptrd + starttime = tadd(starttime, -gmtoff); + } + } ++ if (defaulttype < 0) ++ defaulttype = 0; + if (0 <= lastatmax) + attypes[lastatmax].dontmerge = true; + if (do_extend) +@@ -3100,7 +3136,7 @@ outzone(const struct zone *zpfirst, ptrd + attypes[timecnt - 1].dontmerge = true; + } + } +- writezone(zpfirst->z_name, envvar, version); ++ writezone(zpfirst->z_name, envvar, version, defaulttype); + free(startbuf); + free(ab); + free(envvar); +@@ -3109,21 +3145,6 @@ outzone(const struct zone *zpfirst, ptrd + static void + addtt(zic_t starttime, int type) + { +- if (starttime <= early_time +- || (timecnt == 1 && attypes[0].at < early_time)) +- { +- gmtoffs[0] = gmtoffs[type]; +- isdsts[0] = isdsts[type]; +- ttisstds[0] = ttisstds[type]; +- ttisgmts[0] = ttisgmts[type]; +- if (abbrinds[type] != 0) +- strcpy(chars, &chars[abbrinds[type]]); +- abbrinds[0] = 0; +- charcnt = strlen(chars) + 1; +- typecnt = 1; +- timecnt = 0; +- type = 0; +- } + attypes = growalloc(attypes, sizeof *attypes, timecnt, &timecnt_alloc); + attypes[timecnt].at = starttime; + attypes[timecnt].dontmerge = false; +@@ -3361,7 +3382,7 @@ is_alpha(char a) + } + + /* If A is an uppercase character in the C locale, return its lowercase +- * counterpart. Otherwise, return A. */ ++ counterpart. Otherwise, return A. */ + static char + lowerit(char a) + { +@@ -3628,6 +3649,18 @@ rpytime(const struct rule *rp, zic_t wan + dayoff = 0; + m = TM_JANUARY; + y = EPOCH_YEAR; ++ if (y < wantedy) ++ { ++ wantedy -= y; ++ dayoff = (wantedy / YEARSPERREPEAT) * (SECSPERREPEAT / SECSPERDAY); ++ wantedy %= YEARSPERREPEAT; ++ wantedy += y; ++ } ++ else if (wantedy < 0) ++ { ++ dayoff = (wantedy / YEARSPERREPEAT) * (SECSPERREPEAT / SECSPERDAY); ++ wantedy %= YEARSPERREPEAT; ++ } + while (wantedy != y) + { + if (wantedy > y) +@@ -3706,7 +3739,6 @@ will not work with pre-2004 versions of + if (dayoff > max_time / SECSPERDAY) + return max_time; + t = (zic_t) dayoff * SECSPERDAY; +- + return tadd(t, rp->r_tod); + } + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Update-time-zone-data-files-to-tzdata-release-2018f.patch b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Update-time-zone-data-files-to-tzdata-release-2018f.patch new file mode 100644 index 00000000..41e763c5 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Update-time-zone-data-files-to-tzdata-release-2018f.patch @@ -0,0 +1,6452 @@ +From 13877d30f2ec93f6043937f76af207dcc614a4e7 Mon Sep 17 00:00:00 2001 +From: Tom Lane +Date: Fri, 19 Oct 2018 17:01:34 -0400 +Subject: [PATCH] Update time zone data files to tzdata release 2018f. + +DST law changes in Chile, Fiji, and Russia (Volgograd). +Historical corrections for China, Japan, Macau, and North Korea. + +Note: like the previous tzdata update, this involves a depressingly +large amount of semantically-meaningless churn in tzdata.zi. That +is a consequence of upstream's data compression method assigning +unstable abbreviations to DST rulesets. I complained about that +to them last time, and this version now uses an assignment method +that pays some heed to not changing abbreviations unnecessarily. +So hopefully, that'll be better going forward. + +Upstream-Status: Backport +Signed-off-by: Armin Kuster + +--- + src/timezone/data/tzdata.zi | 5273 +++++++++++++++++++------------------- + src/timezone/known_abbrevs.txt | 1 + + src/timezone/tznames/America.txt | 3 + + src/timezone/tznames/Asia.txt | 4 + + src/timezone/tznames/Default | 3 + + src/timezone/tznames/Pacific.txt | 3 + + 6 files changed, 2660 insertions(+), 2627 deletions(-) + +diff --git a/src/timezone/data/tzdata.zi b/src/timezone/data/tzdata.zi +index c470112..6d98902 100644 +--- a/src/timezone/data/tzdata.zi ++++ b/src/timezone/data/tzdata.zi +@@ -1,36 +1,36 @@ +-# version 2018e ++# version 2018f + # This zic input file is in the public domain. +-R A 1916 o - Jun 14 23s 1 S +-R A 1916 1919 - O Sun>=1 23s 0 - +-R A 1917 o - Mar 24 23s 1 S +-R A 1918 o - Mar 9 23s 1 S +-R A 1919 o - Mar 1 23s 1 S +-R A 1920 o - F 14 23s 1 S +-R A 1920 o - O 23 23s 0 - +-R A 1921 o - Mar 14 23s 1 S +-R A 1921 o - Jun 21 23s 0 - +-R A 1939 o - S 11 23s 1 S +-R A 1939 o - N 19 1 0 - +-R A 1944 1945 - Ap M>=1 2 1 S +-R A 1944 o - O 8 2 0 - +-R A 1945 o - S 16 1 0 - +-R A 1971 o - Ap 25 23s 1 S +-R A 1971 o - S 26 23s 0 - +-R A 1977 o - May 6 0 1 S +-R A 1977 o - O 21 0 0 - +-R A 1978 o - Mar 24 1 1 S +-R A 1978 o - S 22 3 0 - +-R A 1980 o - Ap 25 0 1 S +-R A 1980 o - O 31 2 0 - ++R d 1916 o - Jun 14 23s 1 S ++R d 1916 1919 - O Sun>=1 23s 0 - ++R d 1917 o - Mar 24 23s 1 S ++R d 1918 o - Mar 9 23s 1 S ++R d 1919 o - Mar 1 23s 1 S ++R d 1920 o - F 14 23s 1 S ++R d 1920 o - O 23 23s 0 - ++R d 1921 o - Mar 14 23s 1 S ++R d 1921 o - Jun 21 23s 0 - ++R d 1939 o - S 11 23s 1 S ++R d 1939 o - N 19 1 0 - ++R d 1944 1945 - Ap M>=1 2 1 S ++R d 1944 o - O 8 2 0 - ++R d 1945 o - S 16 1 0 - ++R d 1971 o - Ap 25 23s 1 S ++R d 1971 o - S 26 23s 0 - ++R d 1977 o - May 6 0 1 S ++R d 1977 o - O 21 0 0 - ++R d 1978 o - Mar 24 1 1 S ++R d 1978 o - S 22 3 0 - ++R d 1980 o - Ap 25 0 1 S ++R d 1980 o - O 31 2 0 - + Z Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:1 + 0:9:21 - PMT 1911 Mar 11 +-0 A WE%sT 1940 F 25 2 +-1 A CE%sT 1946 O 7 ++0 d WE%sT 1940 F 25 2 ++1 d CE%sT 1946 O 7 + 0 - WET 1956 Ja 29 + 1 - CET 1963 Ap 14 +-0 A WE%sT 1977 O 21 +-1 A CE%sT 1979 O 26 +-0 A WE%sT 1981 May ++0 d WE%sT 1977 O 21 ++1 d CE%sT 1979 O 26 ++0 d WE%sT 1981 May + 1 - CET + Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u + -2 - -02 1942 S +@@ -52,44 +52,44 @@ Li Africa/Abidjan Africa/Lome + Li Africa/Abidjan Africa/Nouakchott + Li Africa/Abidjan Africa/Ouagadougou + Li Africa/Abidjan Atlantic/St_Helena +-R B 1940 o - Jul 15 0 1 S +-R B 1940 o - O 1 0 0 - +-R B 1941 o - Ap 15 0 1 S +-R B 1941 o - S 16 0 0 - +-R B 1942 1944 - Ap 1 0 1 S +-R B 1942 o - O 27 0 0 - +-R B 1943 1945 - N 1 0 0 - +-R B 1945 o - Ap 16 0 1 S +-R B 1957 o - May 10 0 1 S +-R B 1957 1958 - O 1 0 0 - +-R B 1958 o - May 1 0 1 S +-R B 1959 1981 - May 1 1 1 S +-R B 1959 1965 - S 30 3 0 - +-R B 1966 1994 - O 1 3 0 - +-R B 1982 o - Jul 25 1 1 S +-R B 1983 o - Jul 12 1 1 S +-R B 1984 1988 - May 1 1 1 S +-R B 1989 o - May 6 1 1 S +-R B 1990 1994 - May 1 1 1 S +-R B 1995 2010 - Ap lastF 0s 1 S +-R B 1995 2005 - S lastTh 24 0 - +-R B 2006 o - S 21 24 0 - +-R B 2007 o - S Th>=1 24 0 - +-R B 2008 o - Au lastTh 24 0 - +-R B 2009 o - Au 20 24 0 - +-R B 2010 o - Au 10 24 0 - +-R B 2010 o - S 9 24 1 S +-R B 2010 o - S lastTh 24 0 - +-R B 2014 o - May 15 24 1 S +-R B 2014 o - Jun 26 24 0 - +-R B 2014 o - Jul 31 24 1 S +-R B 2014 o - S lastTh 24 0 - ++R K 1940 o - Jul 15 0 1 S ++R K 1940 o - O 1 0 0 - ++R K 1941 o - Ap 15 0 1 S ++R K 1941 o - S 16 0 0 - ++R K 1942 1944 - Ap 1 0 1 S ++R K 1942 o - O 27 0 0 - ++R K 1943 1945 - N 1 0 0 - ++R K 1945 o - Ap 16 0 1 S ++R K 1957 o - May 10 0 1 S ++R K 1957 1958 - O 1 0 0 - ++R K 1958 o - May 1 0 1 S ++R K 1959 1981 - May 1 1 1 S ++R K 1959 1965 - S 30 3 0 - ++R K 1966 1994 - O 1 3 0 - ++R K 1982 o - Jul 25 1 1 S ++R K 1983 o - Jul 12 1 1 S ++R K 1984 1988 - May 1 1 1 S ++R K 1989 o - May 6 1 1 S ++R K 1990 1994 - May 1 1 1 S ++R K 1995 2010 - Ap lastF 0s 1 S ++R K 1995 2005 - S lastTh 24 0 - ++R K 2006 o - S 21 24 0 - ++R K 2007 o - S Th>=1 24 0 - ++R K 2008 o - Au lastTh 24 0 - ++R K 2009 o - Au 20 24 0 - ++R K 2010 o - Au 10 24 0 - ++R K 2010 o - S 9 24 1 S ++R K 2010 o - S lastTh 24 0 - ++R K 2014 o - May 15 24 1 S ++R K 2014 o - Jun 26 24 0 - ++R K 2014 o - Jul 31 24 1 S ++R K 2014 o - S lastTh 24 0 - + Z Africa/Cairo 2:5:9 - LMT 1900 O +-2 B EE%sT +-R C 1920 1942 - S 1 0 0:20 - +-R C 1920 1942 - D 31 0 0 - ++2 K EE%sT ++R GH 1920 1942 - S 1 0 0:20 - ++R GH 1920 1942 - D 31 0 0 - + Z Africa/Accra -0:0:52 - LMT 1918 +-0 C GMT/+0020 ++0 GH GMT/+0020 + Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u + -1 - -01 1975 + 0 - GMT +@@ -111,99 +111,99 @@ Z Africa/Monrovia -0:43:8 - LMT 1882 + -0:43:8 - MMT 1919 Mar + -0:44:30 - MMT 1972 Ja 7 + 0 - GMT +-R D 1951 o - O 14 2 1 S +-R D 1952 o - Ja 1 0 0 - +-R D 1953 o - O 9 2 1 S +-R D 1954 o - Ja 1 0 0 - +-R D 1955 o - S 30 0 1 S +-R D 1956 o - Ja 1 0 0 - +-R D 1982 1984 - Ap 1 0 1 S +-R D 1982 1985 - O 1 0 0 - +-R D 1985 o - Ap 6 0 1 S +-R D 1986 o - Ap 4 0 1 S +-R D 1986 o - O 3 0 0 - +-R D 1987 1989 - Ap 1 0 1 S +-R D 1987 1989 - O 1 0 0 - +-R D 1997 o - Ap 4 0 1 S +-R D 1997 o - O 4 0 0 - +-R D 2013 o - Mar lastF 1 1 S +-R D 2013 o - O lastF 2 0 - ++R L 1951 o - O 14 2 1 S ++R L 1952 o - Ja 1 0 0 - ++R L 1953 o - O 9 2 1 S ++R L 1954 o - Ja 1 0 0 - ++R L 1955 o - S 30 0 1 S ++R L 1956 o - Ja 1 0 0 - ++R L 1982 1984 - Ap 1 0 1 S ++R L 1982 1985 - O 1 0 0 - ++R L 1985 o - Ap 6 0 1 S ++R L 1986 o - Ap 4 0 1 S ++R L 1986 o - O 3 0 0 - ++R L 1987 1989 - Ap 1 0 1 S ++R L 1987 1989 - O 1 0 0 - ++R L 1997 o - Ap 4 0 1 S ++R L 1997 o - O 4 0 0 - ++R L 2013 o - Mar lastF 1 1 S ++R L 2013 o - O lastF 2 0 - + Z Africa/Tripoli 0:52:44 - LMT 1920 +-1 D CE%sT 1959 ++1 L CE%sT 1959 + 2 - EET 1982 +-1 D CE%sT 1990 May 4 ++1 L CE%sT 1990 May 4 + 2 - EET 1996 S 30 +-1 D CE%sT 1997 O 4 ++1 L CE%sT 1997 O 4 + 2 - EET 2012 N 10 2 +-1 D CE%sT 2013 O 25 2 ++1 L CE%sT 2013 O 25 2 + 2 - EET +-R E 1982 o - O 10 0 1 - +-R E 1983 o - Mar 21 0 0 - +-R E 2008 o - O lastSun 2 1 - +-R E 2009 o - Mar lastSun 2 0 - ++R MU 1982 o - O 10 0 1 - ++R MU 1983 o - Mar 21 0 0 - ++R MU 2008 o - O lastSun 2 1 - ++R MU 2009 o - Mar lastSun 2 0 - + Z Indian/Mauritius 3:50 - LMT 1907 +-4 E +04/+05 +-R F 1939 o - S 12 0 1 S +-R F 1939 o - N 19 0 0 - +-R F 1940 o - F 25 0 1 S +-R F 1945 o - N 18 0 0 - +-R F 1950 o - Jun 11 0 1 S +-R F 1950 o - O 29 0 0 - +-R F 1967 o - Jun 3 12 1 S +-R F 1967 o - O 1 0 0 - +-R F 1974 o - Jun 24 0 1 S +-R F 1974 o - S 1 0 0 - +-R F 1976 1977 - May 1 0 1 S +-R F 1976 o - Au 1 0 0 - +-R F 1977 o - S 28 0 0 - +-R F 1978 o - Jun 1 0 1 S +-R F 1978 o - Au 4 0 0 - +-R F 2008 o - Jun 1 0 1 S +-R F 2008 o - S 1 0 0 - +-R F 2009 o - Jun 1 0 1 S +-R F 2009 o - Au 21 0 0 - +-R F 2010 o - May 2 0 1 S +-R F 2010 o - Au 8 0 0 - +-R F 2011 o - Ap 3 0 1 S +-R F 2011 o - Jul 31 0 0 - +-R F 2012 2013 - Ap lastSun 2 1 S +-R F 2012 o - Jul 20 3 0 - +-R F 2012 o - Au 20 2 1 S +-R F 2012 o - S 30 3 0 - +-R F 2013 o - Jul 7 3 0 - +-R F 2013 o - Au 10 2 1 S +-R F 2013 ma - O lastSun 3 0 - +-R F 2014 2021 - Mar lastSun 2 1 S +-R F 2014 o - Jun 28 3 0 - +-R F 2014 o - Au 2 2 1 S +-R F 2015 o - Jun 14 3 0 - +-R F 2015 o - Jul 19 2 1 S +-R F 2016 o - Jun 5 3 0 - +-R F 2016 o - Jul 10 2 1 S +-R F 2017 o - May 21 3 0 - +-R F 2017 o - Jul 2 2 1 S +-R F 2018 o - May 13 3 0 - +-R F 2018 o - Jun 17 2 1 S +-R F 2019 o - May 5 3 0 - +-R F 2019 o - Jun 9 2 1 S +-R F 2020 o - Ap 19 3 0 - +-R F 2020 o - May 24 2 1 S +-R F 2021 o - Ap 11 3 0 - +-R F 2021 o - May 16 2 1 S +-R F 2022 o - May 8 2 1 S +-R F 2023 o - Ap 23 2 1 S +-R F 2024 o - Ap 14 2 1 S +-R F 2025 o - Ap 6 2 1 S +-R F 2026 ma - Mar lastSun 2 1 S +-R F 2036 o - O 19 3 0 - +-R F 2037 o - O 4 3 0 - ++4 MU +04/+05 ++R M 1939 o - S 12 0 1 S ++R M 1939 o - N 19 0 0 - ++R M 1940 o - F 25 0 1 S ++R M 1945 o - N 18 0 0 - ++R M 1950 o - Jun 11 0 1 S ++R M 1950 o - O 29 0 0 - ++R M 1967 o - Jun 3 12 1 S ++R M 1967 o - O 1 0 0 - ++R M 1974 o - Jun 24 0 1 S ++R M 1974 o - S 1 0 0 - ++R M 1976 1977 - May 1 0 1 S ++R M 1976 o - Au 1 0 0 - ++R M 1977 o - S 28 0 0 - ++R M 1978 o - Jun 1 0 1 S ++R M 1978 o - Au 4 0 0 - ++R M 2008 o - Jun 1 0 1 S ++R M 2008 o - S 1 0 0 - ++R M 2009 o - Jun 1 0 1 S ++R M 2009 o - Au 21 0 0 - ++R M 2010 o - May 2 0 1 S ++R M 2010 o - Au 8 0 0 - ++R M 2011 o - Ap 3 0 1 S ++R M 2011 o - Jul 31 0 0 - ++R M 2012 2013 - Ap lastSun 2 1 S ++R M 2012 o - Jul 20 3 0 - ++R M 2012 o - Au 20 2 1 S ++R M 2012 o - S 30 3 0 - ++R M 2013 o - Jul 7 3 0 - ++R M 2013 o - Au 10 2 1 S ++R M 2013 ma - O lastSun 3 0 - ++R M 2014 2021 - Mar lastSun 2 1 S ++R M 2014 o - Jun 28 3 0 - ++R M 2014 o - Au 2 2 1 S ++R M 2015 o - Jun 14 3 0 - ++R M 2015 o - Jul 19 2 1 S ++R M 2016 o - Jun 5 3 0 - ++R M 2016 o - Jul 10 2 1 S ++R M 2017 o - May 21 3 0 - ++R M 2017 o - Jul 2 2 1 S ++R M 2018 o - May 13 3 0 - ++R M 2018 o - Jun 17 2 1 S ++R M 2019 o - May 5 3 0 - ++R M 2019 o - Jun 9 2 1 S ++R M 2020 o - Ap 19 3 0 - ++R M 2020 o - May 24 2 1 S ++R M 2021 o - Ap 11 3 0 - ++R M 2021 o - May 16 2 1 S ++R M 2022 o - May 8 2 1 S ++R M 2023 o - Ap 23 2 1 S ++R M 2024 o - Ap 14 2 1 S ++R M 2025 o - Ap 6 2 1 S ++R M 2026 ma - Mar lastSun 2 1 S ++R M 2036 o - O 19 3 0 - ++R M 2037 o - O 4 3 0 - + Z Africa/Casablanca -0:30:20 - LMT 1913 O 26 +-0 F WE%sT 1984 Mar 16 ++0 M WE%sT 1984 Mar 16 + 1 - CET 1986 +-0 F WE%sT ++0 M WE%sT + Z Africa/El_Aaiun -0:52:48 - LMT 1934 + -1 - -01 1976 Ap 14 +-0 F WE%sT ++0 M WE%sT + Z Africa/Maputo 2:10:20 - LMT 1903 Mar + 2 - CAT + Li Africa/Maputo Africa/Blantyre +@@ -213,15 +213,15 @@ Li Africa/Maputo Africa/Harare + Li Africa/Maputo Africa/Kigali + Li Africa/Maputo Africa/Lubumbashi + Li Africa/Maputo Africa/Lusaka +-R G 1994 o - Mar 21 0 -1 WAT +-R G 1994 2017 - S Sun>=1 2 0 CAT +-R G 1995 2017 - Ap Sun>=1 2 -1 WAT ++R NA 1994 o - Mar 21 0 -1 WAT ++R NA 1994 2017 - S Sun>=1 2 0 CAT ++R NA 1995 2017 - Ap Sun>=1 2 -1 WAT + Z Africa/Windhoek 1:8:24 - LMT 1892 F 8 + 1:30 - +0130 1903 Mar + 2 - SAST 1942 S 20 2 + 2 1 SAST 1943 Mar 21 2 + 2 - SAST 1990 Mar 21 +-2 G %s ++2 NA %s + Z Africa/Lagos 0:13:36 - LMT 1919 S + 1 - WAT + Li Africa/Lagos Africa/Bangui +@@ -241,52 +241,52 @@ Z Africa/Sao_Tome 0:26:56 - LMT 1884 + 1 - WAT + Z Indian/Mahe 3:41:48 - LMT 1906 Jun + 4 - +04 +-R H 1942 1943 - S Sun>=15 2 1 - +-R H 1943 1944 - Mar Sun>=15 2 0 - ++R SA 1942 1943 - S Sun>=15 2 1 - ++R SA 1943 1944 - Mar Sun>=15 2 0 - + Z Africa/Johannesburg 1:52 - LMT 1892 F 8 + 1:30 - SAST 1903 Mar +-2 H SAST ++2 SA SAST + Li Africa/Johannesburg Africa/Maseru + Li Africa/Johannesburg Africa/Mbabane +-R I 1970 o - May 1 0 1 S +-R I 1970 1985 - O 15 0 0 - +-R I 1971 o - Ap 30 0 1 S +-R I 1972 1985 - Ap lastSun 0 1 S ++R SD 1970 o - May 1 0 1 S ++R SD 1970 1985 - O 15 0 0 - ++R SD 1971 o - Ap 30 0 1 S ++R SD 1972 1985 - Ap lastSun 0 1 S + Z Africa/Khartoum 2:10:8 - LMT 1931 +-2 I CA%sT 2000 Ja 15 12 ++2 SD CA%sT 2000 Ja 15 12 + 3 - EAT 2017 N + 2 - CAT + Z Africa/Juba 2:6:28 - LMT 1931 +-2 I CA%sT 2000 Ja 15 12 ++2 SD CA%sT 2000 Ja 15 12 + 3 - EAT +-R J 1939 o - Ap 15 23s 1 S +-R J 1939 o - N 18 23s 0 - +-R J 1940 o - F 25 23s 1 S +-R J 1941 o - O 6 0 0 - +-R J 1942 o - Mar 9 0 1 S +-R J 1942 o - N 2 3 0 - +-R J 1943 o - Mar 29 2 1 S +-R J 1943 o - Ap 17 2 0 - +-R J 1943 o - Ap 25 2 1 S +-R J 1943 o - O 4 2 0 - +-R J 1944 1945 - Ap M>=1 2 1 S +-R J 1944 o - O 8 0 0 - +-R J 1945 o - S 16 0 0 - +-R J 1977 o - Ap 30 0s 1 S +-R J 1977 o - S 24 0s 0 - +-R J 1978 o - May 1 0s 1 S +-R J 1978 o - O 1 0s 0 - +-R J 1988 o - Jun 1 0s 1 S +-R J 1988 1990 - S lastSun 0s 0 - +-R J 1989 o - Mar 26 0s 1 S +-R J 1990 o - May 1 0s 1 S +-R J 2005 o - May 1 0s 1 S +-R J 2005 o - S 30 1s 0 - +-R J 2006 2008 - Mar lastSun 2s 1 S +-R J 2006 2008 - O lastSun 2s 0 - ++R n 1939 o - Ap 15 23s 1 S ++R n 1939 o - N 18 23s 0 - ++R n 1940 o - F 25 23s 1 S ++R n 1941 o - O 6 0 0 - ++R n 1942 o - Mar 9 0 1 S ++R n 1942 o - N 2 3 0 - ++R n 1943 o - Mar 29 2 1 S ++R n 1943 o - Ap 17 2 0 - ++R n 1943 o - Ap 25 2 1 S ++R n 1943 o - O 4 2 0 - ++R n 1944 1945 - Ap M>=1 2 1 S ++R n 1944 o - O 8 0 0 - ++R n 1945 o - S 16 0 0 - ++R n 1977 o - Ap 30 0s 1 S ++R n 1977 o - S 24 0s 0 - ++R n 1978 o - May 1 0s 1 S ++R n 1978 o - O 1 0s 0 - ++R n 1988 o - Jun 1 0s 1 S ++R n 1988 1990 - S lastSun 0s 0 - ++R n 1989 o - Mar 26 0s 1 S ++R n 1990 o - May 1 0s 1 S ++R n 2005 o - May 1 0s 1 S ++R n 2005 o - S 30 1s 0 - ++R n 2006 2008 - Mar lastSun 2s 1 S ++R n 2006 2008 - O lastSun 2s 0 - + Z Africa/Tunis 0:40:44 - LMT 1881 May 12 + 0:9:21 - PMT 1911 Mar 11 +-1 J CE%sT ++1 n CE%sT + Z Antarctica/Casey 0 - -00 1969 + 8 - +08 2009 O 18 2 + 11 - +11 2010 Mar 5 2 +@@ -314,10 +314,10 @@ Z Antarctica/DumontDUrville 0 - -00 1947 + 10 - +10 + Z Antarctica/Syowa 0 - -00 1957 Ja 29 + 3 - +03 +-R K 2005 ma - Mar lastSun 1u 2 +02 +-R K 2004 ma - O lastSun 1u 0 +00 ++R Tr 2005 ma - Mar lastSun 1u 2 +02 ++R Tr 2004 ma - O lastSun 1u 0 +00 + Z Antarctica/Troll 0 - -00 2005 F 12 +-0 K %s ++0 Tr %s + Z Antarctica/Vostok 0 - -00 1957 D 16 + 6 - +06 + Z Antarctica/Rothera 0 - -00 1976 D +@@ -325,33 +325,33 @@ Z Antarctica/Rothera 0 - -00 1976 D + Z Asia/Kabul 4:36:48 - LMT 1890 + 4 - +04 1945 + 4:30 - +0430 +-R L 2011 o - Mar lastSun 2s 1 - +-R L 2011 o - O lastSun 2s 0 - ++R AM 2011 o - Mar lastSun 2s 1 - ++R AM 2011 o - O lastSun 2s 0 - + Z Asia/Yerevan 2:58 - LMT 1924 May 2 + 3 - +03 1957 Mar +-4 M +04/+05 1991 Mar 31 2s +-3 M +03/+04 1995 S 24 2s ++4 R +04/+05 1991 Mar 31 2s ++3 R +03/+04 1995 S 24 2s + 4 - +04 1997 +-4 M +04/+05 2011 +-4 L +04/+05 +-R N 1997 2015 - Mar lastSun 4 1 - +-R N 1997 2015 - O lastSun 5 0 - ++4 R +04/+05 2011 ++4 AM +04/+05 ++R AZ 1997 2015 - Mar lastSun 4 1 - ++R AZ 1997 2015 - O lastSun 5 0 - + Z Asia/Baku 3:19:24 - LMT 1924 May 2 + 3 - +03 1957 Mar +-4 M +04/+05 1991 Mar 31 2s +-3 M +03/+04 1992 S lastSun 2s ++4 R +04/+05 1991 Mar 31 2s ++3 R +03/+04 1992 S lastSun 2s + 4 - +04 1996 +-4 O +04/+05 1997 +-4 N +04/+05 +-R P 2009 o - Jun 19 23 1 - +-R P 2009 o - D 31 24 0 - ++4 E +04/+05 1997 ++4 AZ +04/+05 ++R BD 2009 o - Jun 19 23 1 - ++R BD 2009 o - D 31 24 0 - + Z Asia/Dhaka 6:1:40 - LMT 1890 + 5:53:20 - HMT 1941 O + 6:30 - +0630 1942 May 15 + 5:30 - +0530 1942 S + 6:30 - +0630 1951 S 30 + 6 - +06 2009 +-6 P +06/+07 ++6 BD +06/+07 + Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15 + 5:30 - +0530 1987 O + 6 - +06 +@@ -366,103 +366,127 @@ Z Asia/Yangon 6:24:47 - LMT 1880 + 6:30 - +0630 1942 May + 9 - +09 1945 May 3 + 6:30 - +0630 +-R Q 1940 o - Jun 3 0 1 D +-R Q 1940 1941 - O 1 0 0 S +-R Q 1941 o - Mar 16 0 1 D +-R R 1986 o - May 4 0 1 D +-R R 1986 1991 - S Sun>=11 0 0 S +-R R 1987 1991 - Ap Sun>=10 0 1 D ++R Sh 1940 o - Jun 1 0 1 D ++R Sh 1940 o - O 12 24 0 S ++R Sh 1941 o - Mar 15 0 1 D ++R Sh 1941 o - N 1 24 0 S ++R Sh 1942 o - Ja 31 0 1 D ++R Sh 1945 o - S 1 24 0 S ++R Sh 1946 o - May 15 0 1 D ++R Sh 1946 o - S 30 24 0 S ++R Sh 1947 o - Ap 15 0 1 D ++R Sh 1947 o - O 31 24 0 S ++R Sh 1948 1949 - May 1 0 1 D ++R Sh 1948 1949 - S 30 24 0 S ++R CN 1986 o - May 4 2 1 D ++R CN 1986 1991 - S Sun>=11 2 0 S ++R CN 1987 1991 - Ap Sun>=11 2 1 D + Z Asia/Shanghai 8:5:43 - LMT 1901 +-8 Q C%sT 1949 +-8 R C%sT ++8 Sh C%sT 1949 May 28 ++8 CN C%sT + Z Asia/Urumqi 5:50:20 - LMT 1928 + 6 - +06 +-R S 1941 o - Ap 1 3:30 1 S +-R S 1941 o - S 30 3:30 0 - +-R S 1946 o - Ap 20 3:30 1 S +-R S 1946 o - D 1 3:30 0 - +-R S 1947 o - Ap 13 3:30 1 S +-R S 1947 o - D 30 3:30 0 - +-R S 1948 o - May 2 3:30 1 S +-R S 1948 1951 - O lastSun 3:30 0 - +-R S 1952 o - O 25 3:30 0 - +-R S 1949 1953 - Ap Sun>=1 3:30 1 S +-R S 1953 o - N 1 3:30 0 - +-R S 1954 1964 - Mar Sun>=18 3:30 1 S +-R S 1954 o - O 31 3:30 0 - +-R S 1955 1964 - N Sun>=1 3:30 0 - +-R S 1965 1976 - Ap Sun>=16 3:30 1 S +-R S 1965 1976 - O Sun>=16 3:30 0 - +-R S 1973 o - D 30 3:30 1 S +-R S 1979 o - May Sun>=8 3:30 1 S +-R S 1979 o - O Sun>=16 3:30 0 - ++R HK 1941 o - Ap 1 3:30 1 S ++R HK 1941 o - S 30 3:30 0 - ++R HK 1946 o - Ap 20 3:30 1 S ++R HK 1946 o - D 1 3:30 0 - ++R HK 1947 o - Ap 13 3:30 1 S ++R HK 1947 o - D 30 3:30 0 - ++R HK 1948 o - May 2 3:30 1 S ++R HK 1948 1951 - O lastSun 3:30 0 - ++R HK 1952 o - O 25 3:30 0 - ++R HK 1949 1953 - Ap Sun>=1 3:30 1 S ++R HK 1953 o - N 1 3:30 0 - ++R HK 1954 1964 - Mar Sun>=18 3:30 1 S ++R HK 1954 o - O 31 3:30 0 - ++R HK 1955 1964 - N Sun>=1 3:30 0 - ++R HK 1965 1976 - Ap Sun>=16 3:30 1 S ++R HK 1965 1976 - O Sun>=16 3:30 0 - ++R HK 1973 o - D 30 3:30 1 S ++R HK 1979 o - May Sun>=8 3:30 1 S ++R HK 1979 o - O Sun>=16 3:30 0 - + Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 30 +-8 S HK%sT 1941 D 25 ++8 HK HK%sT 1941 D 25 + 9 - JST 1945 S 15 +-8 S HK%sT +-R T 1946 o - May 15 0 1 D +-R T 1946 o - O 1 0 0 S +-R T 1947 o - Ap 15 0 1 D +-R T 1947 o - N 1 0 0 S +-R T 1948 1951 - May 1 0 1 D +-R T 1948 1951 - O 1 0 0 S +-R T 1952 o - Mar 1 0 1 D +-R T 1952 1954 - N 1 0 0 S +-R T 1953 1959 - Ap 1 0 1 D +-R T 1955 1961 - O 1 0 0 S +-R T 1960 1961 - Jun 1 0 1 D +-R T 1974 1975 - Ap 1 0 1 D +-R T 1974 1975 - O 1 0 0 S +-R T 1979 o - Jul 1 0 1 D +-R T 1979 o - O 1 0 0 S ++8 HK HK%sT ++R f 1946 o - May 15 0 1 D ++R f 1946 o - O 1 0 0 S ++R f 1947 o - Ap 15 0 1 D ++R f 1947 o - N 1 0 0 S ++R f 1948 1951 - May 1 0 1 D ++R f 1948 1951 - O 1 0 0 S ++R f 1952 o - Mar 1 0 1 D ++R f 1952 1954 - N 1 0 0 S ++R f 1953 1959 - Ap 1 0 1 D ++R f 1955 1961 - O 1 0 0 S ++R f 1960 1961 - Jun 1 0 1 D ++R f 1974 1975 - Ap 1 0 1 D ++R f 1974 1975 - O 1 0 0 S ++R f 1979 o - Jul 1 0 1 D ++R f 1979 o - O 1 0 0 S + Z Asia/Taipei 8:6 - LMT 1896 + 8 - CST 1937 O + 9 - JST 1945 S 21 1 +-8 T C%sT +-R U 1961 1962 - Mar Sun>=16 3:30 1 D +-R U 1961 1964 - N Sun>=1 3:30 0 S +-R U 1963 o - Mar Sun>=16 0 1 D +-R U 1964 o - Mar Sun>=16 3:30 1 D +-R U 1965 o - Mar Sun>=16 0 1 D +-R U 1965 o - O 31 0 0 S +-R U 1966 1971 - Ap Sun>=16 3:30 1 D +-R U 1966 1971 - O Sun>=16 3:30 0 S +-R U 1972 1974 - Ap Sun>=15 0 1 D +-R U 1972 1973 - O Sun>=15 0 0 S +-R U 1974 1977 - O Sun>=15 3:30 0 S +-R U 1975 1977 - Ap Sun>=15 3:30 1 D +-R U 1978 1980 - Ap Sun>=15 0 1 D +-R U 1978 1980 - O Sun>=15 0 0 S +-Z Asia/Macau 7:34:20 - LMT 1911 D 31 16u +-8 U C%sT +-R V 1975 o - Ap 13 0 1 S +-R V 1975 o - O 12 0 0 - +-R V 1976 o - May 15 0 1 S +-R V 1976 o - O 11 0 0 - +-R V 1977 1980 - Ap Sun>=1 0 1 S +-R V 1977 o - S 25 0 0 - +-R V 1978 o - O 2 0 0 - +-R V 1979 1997 - S lastSun 0 0 - +-R V 1981 1998 - Mar lastSun 0 1 S ++8 f C%sT ++R _ 1942 1943 - Ap 30 23 1 - ++R _ 1942 o - N 17 23 0 - ++R _ 1943 o - S 30 23 0 S ++R _ 1946 o - Ap 30 23s 1 D ++R _ 1946 o - S 30 23s 0 S ++R _ 1947 o - Ap 19 23s 1 D ++R _ 1947 o - N 30 23s 0 S ++R _ 1948 o - May 2 23s 1 D ++R _ 1948 o - O 31 23s 0 S ++R _ 1949 1950 - Ap Sat>=1 23s 1 D ++R _ 1949 1950 - O lastSat 23s 0 S ++R _ 1951 o - Mar 31 23s 1 D ++R _ 1951 o - O 28 23s 0 S ++R _ 1952 1953 - Ap Sat>=1 23s 1 D ++R _ 1952 o - N 1 23s 0 S ++R _ 1953 1954 - O lastSat 23s 0 S ++R _ 1954 1956 - Mar Sat>=17 23s 1 D ++R _ 1955 o - N 5 23s 0 S ++R _ 1956 1964 - N Sun>=1 3:30 0 S ++R _ 1957 1964 - Mar Sun>=18 3:30 1 D ++R _ 1965 1973 - Ap Sun>=16 3:30 1 D ++R _ 1965 1966 - O Sun>=16 2:30 0 S ++R _ 1967 1976 - O Sun>=16 3:30 0 S ++R _ 1973 o - D 30 3:30 1 D ++R _ 1975 1976 - Ap Sun>=16 3:30 1 D ++R _ 1979 o - May 13 3:30 1 D ++R _ 1979 o - O Sun>=16 3:30 0 S ++Z Asia/Macau 7:34:10 - LMT 1904 O 30 ++8 - CST 1941 D 21 23 ++9 _ +09/+10 1945 S 30 24 ++8 _ C%sT ++R CY 1975 o - Ap 13 0 1 S ++R CY 1975 o - O 12 0 0 - ++R CY 1976 o - May 15 0 1 S ++R CY 1976 o - O 11 0 0 - ++R CY 1977 1980 - Ap Sun>=1 0 1 S ++R CY 1977 o - S 25 0 0 - ++R CY 1978 o - O 2 0 0 - ++R CY 1979 1997 - S lastSun 0 0 - ++R CY 1981 1998 - Mar lastSun 0 1 S + Z Asia/Nicosia 2:13:28 - LMT 1921 N 14 +-2 V EE%sT 1998 S +-2 O EE%sT ++2 CY EE%sT 1998 S ++2 E EE%sT + Z Asia/Famagusta 2:15:48 - LMT 1921 N 14 +-2 V EE%sT 1998 S +-2 O EE%sT 2016 S 8 ++2 CY EE%sT 1998 S ++2 E EE%sT 2016 S 8 + 3 - +03 2017 O 29 1u +-2 O EE%sT ++2 E EE%sT + Li Asia/Nicosia Europe/Nicosia + Z Asia/Tbilisi 2:59:11 - LMT 1880 + 2:59:11 - TBMT 1924 May 2 + 3 - +03 1957 Mar +-4 M +04/+05 1991 Mar 31 2s +-3 M +03/+04 1992 +-3 W +03/+04 1994 S lastSun +-4 W +04/+05 1996 O lastSun ++4 R +04/+05 1991 Mar 31 2s ++3 R +03/+04 1992 ++3 e +03/+04 1994 S lastSun ++4 e +04/+05 1996 O lastSun + 4 1 +05 1997 Mar lastSun +-4 W +04/+05 2004 Jun 27 +-3 M +03/+04 2005 Mar lastSun 2 ++4 e +04/+05 2004 Jun 27 ++3 R +03/+04 2005 Mar lastSun 2 + 4 - +04 + Z Asia/Dili 8:22:20 - LMT 1912 + 8 - +08 1942 F 21 23 +@@ -504,72 +528,72 @@ Z Asia/Jayapura 9:22:48 - LMT 1932 N + 9 - +09 1944 S + 9:30 - +0930 1964 + 9 - WIT +-R X 1978 1980 - Mar 21 0 1 - +-R X 1978 o - O 21 0 0 - +-R X 1979 o - S 19 0 0 - +-R X 1980 o - S 23 0 0 - +-R X 1991 o - May 3 0 1 - +-R X 1992 1995 - Mar 22 0 1 - +-R X 1991 1995 - S 22 0 0 - +-R X 1996 o - Mar 21 0 1 - +-R X 1996 o - S 21 0 0 - +-R X 1997 1999 - Mar 22 0 1 - +-R X 1997 1999 - S 22 0 0 - +-R X 2000 o - Mar 21 0 1 - +-R X 2000 o - S 21 0 0 - +-R X 2001 2003 - Mar 22 0 1 - +-R X 2001 2003 - S 22 0 0 - +-R X 2004 o - Mar 21 0 1 - +-R X 2004 o - S 21 0 0 - +-R X 2005 o - Mar 22 0 1 - +-R X 2005 o - S 22 0 0 - +-R X 2008 o - Mar 21 0 1 - +-R X 2008 o - S 21 0 0 - +-R X 2009 2011 - Mar 22 0 1 - +-R X 2009 2011 - S 22 0 0 - +-R X 2012 o - Mar 21 0 1 - +-R X 2012 o - S 21 0 0 - +-R X 2013 2015 - Mar 22 0 1 - +-R X 2013 2015 - S 22 0 0 - +-R X 2016 o - Mar 21 0 1 - +-R X 2016 o - S 21 0 0 - +-R X 2017 2019 - Mar 22 0 1 - +-R X 2017 2019 - S 22 0 0 - +-R X 2020 o - Mar 21 0 1 - +-R X 2020 o - S 21 0 0 - +-R X 2021 2023 - Mar 22 0 1 - +-R X 2021 2023 - S 22 0 0 - +-R X 2024 o - Mar 21 0 1 - +-R X 2024 o - S 21 0 0 - +-R X 2025 2027 - Mar 22 0 1 - +-R X 2025 2027 - S 22 0 0 - +-R X 2028 2029 - Mar 21 0 1 - +-R X 2028 2029 - S 21 0 0 - +-R X 2030 2031 - Mar 22 0 1 - +-R X 2030 2031 - S 22 0 0 - +-R X 2032 2033 - Mar 21 0 1 - +-R X 2032 2033 - S 21 0 0 - +-R X 2034 2035 - Mar 22 0 1 - +-R X 2034 2035 - S 22 0 0 - +-R X 2036 ma - Mar 21 0 1 - +-R X 2036 ma - S 21 0 0 - ++R i 1978 1980 - Mar 21 0 1 - ++R i 1978 o - O 21 0 0 - ++R i 1979 o - S 19 0 0 - ++R i 1980 o - S 23 0 0 - ++R i 1991 o - May 3 0 1 - ++R i 1992 1995 - Mar 22 0 1 - ++R i 1991 1995 - S 22 0 0 - ++R i 1996 o - Mar 21 0 1 - ++R i 1996 o - S 21 0 0 - ++R i 1997 1999 - Mar 22 0 1 - ++R i 1997 1999 - S 22 0 0 - ++R i 2000 o - Mar 21 0 1 - ++R i 2000 o - S 21 0 0 - ++R i 2001 2003 - Mar 22 0 1 - ++R i 2001 2003 - S 22 0 0 - ++R i 2004 o - Mar 21 0 1 - ++R i 2004 o - S 21 0 0 - ++R i 2005 o - Mar 22 0 1 - ++R i 2005 o - S 22 0 0 - ++R i 2008 o - Mar 21 0 1 - ++R i 2008 o - S 21 0 0 - ++R i 2009 2011 - Mar 22 0 1 - ++R i 2009 2011 - S 22 0 0 - ++R i 2012 o - Mar 21 0 1 - ++R i 2012 o - S 21 0 0 - ++R i 2013 2015 - Mar 22 0 1 - ++R i 2013 2015 - S 22 0 0 - ++R i 2016 o - Mar 21 0 1 - ++R i 2016 o - S 21 0 0 - ++R i 2017 2019 - Mar 22 0 1 - ++R i 2017 2019 - S 22 0 0 - ++R i 2020 o - Mar 21 0 1 - ++R i 2020 o - S 21 0 0 - ++R i 2021 2023 - Mar 22 0 1 - ++R i 2021 2023 - S 22 0 0 - ++R i 2024 o - Mar 21 0 1 - ++R i 2024 o - S 21 0 0 - ++R i 2025 2027 - Mar 22 0 1 - ++R i 2025 2027 - S 22 0 0 - ++R i 2028 2029 - Mar 21 0 1 - ++R i 2028 2029 - S 21 0 0 - ++R i 2030 2031 - Mar 22 0 1 - ++R i 2030 2031 - S 22 0 0 - ++R i 2032 2033 - Mar 21 0 1 - ++R i 2032 2033 - S 21 0 0 - ++R i 2034 2035 - Mar 22 0 1 - ++R i 2034 2035 - S 22 0 0 - ++R i 2036 ma - Mar 21 0 1 - ++R i 2036 ma - S 21 0 0 - + Z Asia/Tehran 3:25:44 - LMT 1916 + 3:25:44 - TMT 1946 + 3:30 - +0330 1977 N +-4 X +04/+05 1979 +-3:30 X +0330/+0430 +-R Y 1982 o - May 1 0 1 - +-R Y 1982 1984 - O 1 0 0 - +-R Y 1983 o - Mar 31 0 1 - +-R Y 1984 1985 - Ap 1 0 1 - +-R Y 1985 1990 - S lastSun 1s 0 - +-R Y 1986 1990 - Mar lastSun 1s 1 - +-R Y 1991 2007 - Ap 1 3s 1 - +-R Y 1991 2007 - O 1 3s 0 - ++4 i +04/+05 1979 ++3:30 i +0330/+0430 ++R IQ 1982 o - May 1 0 1 - ++R IQ 1982 1984 - O 1 0 0 - ++R IQ 1983 o - Mar 31 0 1 - ++R IQ 1984 1985 - Ap 1 0 1 - ++R IQ 1985 1990 - S lastSun 1s 0 - ++R IQ 1986 1990 - Mar lastSun 1s 1 - ++R IQ 1991 2007 - Ap 1 3s 1 - ++R IQ 1991 2007 - O 1 3s 0 - + Z Asia/Baghdad 2:57:40 - LMT 1890 + 2:57:36 - BMT 1918 + 3 - +03 1982 May +-3 Y +03/+04 ++3 IQ +03/+04 + R Z 1940 o - Jun 1 0 1 D + R Z 1942 1944 - N 1 0 0 S + R Z 1943 o - Ap 1 2 1 D +@@ -659,163 +683,163 @@ R Z 2013 ma - O lastSun 2 0 S + Z Asia/Jerusalem 2:20:54 - LMT 1880 + 2:20:40 - JMT 1918 + 2 Z I%sT +-R a 1948 o - May Sat>=1 24 1 D +-R a 1948 1951 - S Sun>=9 0 0 S +-R a 1949 o - Ap Sat>=1 24 1 D +-R a 1950 1951 - May Sat>=1 24 1 D ++R JP 1948 o - May Sat>=1 24 1 D ++R JP 1948 1951 - S Sat>=8 25 0 S ++R JP 1949 o - Ap Sat>=1 24 1 D ++R JP 1950 1951 - May Sat>=1 24 1 D + Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u +-9 a J%sT +-R b 1973 o - Jun 6 0 1 S +-R b 1973 1975 - O 1 0 0 - +-R b 1974 1977 - May 1 0 1 S +-R b 1976 o - N 1 0 0 - +-R b 1977 o - O 1 0 0 - +-R b 1978 o - Ap 30 0 1 S +-R b 1978 o - S 30 0 0 - +-R b 1985 o - Ap 1 0 1 S +-R b 1985 o - O 1 0 0 - +-R b 1986 1988 - Ap F>=1 0 1 S +-R b 1986 1990 - O F>=1 0 0 - +-R b 1989 o - May 8 0 1 S +-R b 1990 o - Ap 27 0 1 S +-R b 1991 o - Ap 17 0 1 S +-R b 1991 o - S 27 0 0 - +-R b 1992 o - Ap 10 0 1 S +-R b 1992 1993 - O F>=1 0 0 - +-R b 1993 1998 - Ap F>=1 0 1 S +-R b 1994 o - S F>=15 0 0 - +-R b 1995 1998 - S F>=15 0s 0 - +-R b 1999 o - Jul 1 0s 1 S +-R b 1999 2002 - S lastF 0s 0 - +-R b 2000 2001 - Mar lastTh 0s 1 S +-R b 2002 2012 - Mar lastTh 24 1 S +-R b 2003 o - O 24 0s 0 - +-R b 2004 o - O 15 0s 0 - +-R b 2005 o - S lastF 0s 0 - +-R b 2006 2011 - O lastF 0s 0 - +-R b 2013 o - D 20 0 0 - +-R b 2014 ma - Mar lastTh 24 1 S +-R b 2014 ma - O lastF 0s 0 - ++9 JP J%sT ++R J 1973 o - Jun 6 0 1 S ++R J 1973 1975 - O 1 0 0 - ++R J 1974 1977 - May 1 0 1 S ++R J 1976 o - N 1 0 0 - ++R J 1977 o - O 1 0 0 - ++R J 1978 o - Ap 30 0 1 S ++R J 1978 o - S 30 0 0 - ++R J 1985 o - Ap 1 0 1 S ++R J 1985 o - O 1 0 0 - ++R J 1986 1988 - Ap F>=1 0 1 S ++R J 1986 1990 - O F>=1 0 0 - ++R J 1989 o - May 8 0 1 S ++R J 1990 o - Ap 27 0 1 S ++R J 1991 o - Ap 17 0 1 S ++R J 1991 o - S 27 0 0 - ++R J 1992 o - Ap 10 0 1 S ++R J 1992 1993 - O F>=1 0 0 - ++R J 1993 1998 - Ap F>=1 0 1 S ++R J 1994 o - S F>=15 0 0 - ++R J 1995 1998 - S F>=15 0s 0 - ++R J 1999 o - Jul 1 0s 1 S ++R J 1999 2002 - S lastF 0s 0 - ++R J 2000 2001 - Mar lastTh 0s 1 S ++R J 2002 2012 - Mar lastTh 24 1 S ++R J 2003 o - O 24 0s 0 - ++R J 2004 o - O 15 0s 0 - ++R J 2005 o - S lastF 0s 0 - ++R J 2006 2011 - O lastF 0s 0 - ++R J 2013 o - D 20 0 0 - ++R J 2014 ma - Mar lastTh 24 1 S ++R J 2014 ma - O lastF 0s 0 - + Z Asia/Amman 2:23:44 - LMT 1931 +-2 b EE%sT ++2 J EE%sT + Z Asia/Almaty 5:7:48 - LMT 1924 May 2 + 5 - +05 1930 Jun 21 +-6 M +06/+07 1991 Mar 31 2s +-5 M +05/+06 1992 Ja 19 2s +-6 M +06/+07 2004 O 31 2s ++6 R +06/+07 1991 Mar 31 2s ++5 R +05/+06 1992 Ja 19 2s ++6 R +06/+07 2004 O 31 2s + 6 - +06 + Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 + 4 - +04 1930 Jun 21 + 5 - +05 1981 Ap + 5 1 +06 1981 O + 6 - +06 1982 Ap +-5 M +05/+06 1991 Mar 31 2s +-4 M +04/+05 1991 S 29 2s +-5 M +05/+06 1992 Ja 19 2s +-6 M +06/+07 1992 Mar 29 2s +-5 M +05/+06 2004 O 31 2s ++5 R +05/+06 1991 Mar 31 2s ++4 R +04/+05 1991 S 29 2s ++5 R +05/+06 1992 Ja 19 2s ++6 R +06/+07 1992 Mar 29 2s ++5 R +05/+06 2004 O 31 2s + 6 - +06 + Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2 + 4 - +04 1930 Jun 21 + 5 - +05 1981 Ap + 5 1 +06 1981 O + 6 - +06 1982 Ap +-5 M +05/+06 1991 Mar 31 2s +-4 M +04/+05 1992 Ja 19 2s +-5 M +05/+06 2004 O 31 2s ++5 R +05/+06 1991 Mar 31 2s ++4 R +04/+05 1992 Ja 19 2s ++5 R +05/+06 2004 O 31 2s + 5 - +05 + Z Asia/Aqtau 3:21:4 - LMT 1924 May 2 + 4 - +04 1930 Jun 21 + 5 - +05 1981 O + 6 - +06 1982 Ap +-5 M +05/+06 1991 Mar 31 2s +-4 M +04/+05 1992 Ja 19 2s +-5 M +05/+06 1994 S 25 2s +-4 M +04/+05 2004 O 31 2s ++5 R +05/+06 1991 Mar 31 2s ++4 R +04/+05 1992 Ja 19 2s ++5 R +05/+06 1994 S 25 2s ++4 R +04/+05 2004 O 31 2s + 5 - +05 + Z Asia/Atyrau 3:27:44 - LMT 1924 May 2 + 3 - +03 1930 Jun 21 + 5 - +05 1981 O + 6 - +06 1982 Ap +-5 M +05/+06 1991 Mar 31 2s +-4 M +04/+05 1992 Ja 19 2s +-5 M +05/+06 1999 Mar 28 2s +-4 M +04/+05 2004 O 31 2s ++5 R +05/+06 1991 Mar 31 2s ++4 R +04/+05 1992 Ja 19 2s ++5 R +05/+06 1999 Mar 28 2s ++4 R +04/+05 2004 O 31 2s + 5 - +05 + Z Asia/Oral 3:25:24 - LMT 1924 May 2 + 3 - +03 1930 Jun 21 + 5 - +05 1981 Ap + 5 1 +06 1981 O + 6 - +06 1982 Ap +-5 M +05/+06 1989 Mar 26 2s +-4 M +04/+05 1992 Ja 19 2s +-5 M +05/+06 1992 Mar 29 2s +-4 M +04/+05 2004 O 31 2s ++5 R +05/+06 1989 Mar 26 2s ++4 R +04/+05 1992 Ja 19 2s ++5 R +05/+06 1992 Mar 29 2s ++4 R +04/+05 2004 O 31 2s + 5 - +05 +-R c 1992 1996 - Ap Sun>=7 0s 1 - +-R c 1992 1996 - S lastSun 0 0 - +-R c 1997 2005 - Mar lastSun 2:30 1 - +-R c 1997 2004 - O lastSun 2:30 0 - ++R KG 1992 1996 - Ap Sun>=7 0s 1 - ++R KG 1992 1996 - S lastSun 0 0 - ++R KG 1997 2005 - Mar lastSun 2:30 1 - ++R KG 1997 2004 - O lastSun 2:30 0 - + Z Asia/Bishkek 4:58:24 - LMT 1924 May 2 + 5 - +05 1930 Jun 21 +-6 M +06/+07 1991 Mar 31 2s +-5 M +05/+06 1991 Au 31 2 +-5 c +05/+06 2005 Au 12 ++6 R +06/+07 1991 Mar 31 2s ++5 R +05/+06 1991 Au 31 2 ++5 KG +05/+06 2005 Au 12 + 6 - +06 +-R d 1948 o - Jun 1 0 1 D +-R d 1948 o - S 13 0 0 S +-R d 1949 o - Ap 3 0 1 D +-R d 1949 1951 - S Sun>=8 0 0 S +-R d 1950 o - Ap 1 0 1 D +-R d 1951 o - May 6 0 1 D +-R d 1955 o - May 5 0 1 D +-R d 1955 o - S 9 0 0 S +-R d 1956 o - May 20 0 1 D +-R d 1956 o - S 30 0 0 S +-R d 1957 1960 - May Sun>=1 0 1 D +-R d 1957 1960 - S Sun>=18 0 0 S +-R d 1987 1988 - May Sun>=8 2 1 D +-R d 1987 1988 - O Sun>=8 3 0 S ++R KR 1948 o - Jun 1 0 1 D ++R KR 1948 o - S 13 0 0 S ++R KR 1949 o - Ap 3 0 1 D ++R KR 1949 1951 - S Sun>=8 0 0 S ++R KR 1950 o - Ap 1 0 1 D ++R KR 1951 o - May 6 0 1 D ++R KR 1955 o - May 5 0 1 D ++R KR 1955 o - S 9 0 0 S ++R KR 1956 o - May 20 0 1 D ++R KR 1956 o - S 30 0 0 S ++R KR 1957 1960 - May Sun>=1 0 1 D ++R KR 1957 1960 - S Sun>=18 0 0 S ++R KR 1987 1988 - May Sun>=8 2 1 D ++R KR 1987 1988 - O Sun>=8 3 0 S + Z Asia/Seoul 8:27:52 - LMT 1908 Ap + 8:30 - KST 1912 + 9 - JST 1945 S 8 + 9 - KST 1954 Mar 21 +-8:30 d K%sT 1961 Au 10 +-9 d K%sT ++8:30 KR K%sT 1961 Au 10 ++9 KR K%sT + Z Asia/Pyongyang 8:23 - LMT 1908 Ap + 8:30 - KST 1912 + 9 - JST 1945 Au 24 + 9 - KST 2015 Au 15 +-8:30 - KST 2018 May 5 ++8:30 - KST 2018 May 4 23:30 + 9 - KST +-R e 1920 o - Mar 28 0 1 S +-R e 1920 o - O 25 0 0 - +-R e 1921 o - Ap 3 0 1 S +-R e 1921 o - O 3 0 0 - +-R e 1922 o - Mar 26 0 1 S +-R e 1922 o - O 8 0 0 - +-R e 1923 o - Ap 22 0 1 S +-R e 1923 o - S 16 0 0 - +-R e 1957 1961 - May 1 0 1 S +-R e 1957 1961 - O 1 0 0 - +-R e 1972 o - Jun 22 0 1 S +-R e 1972 1977 - O 1 0 0 - +-R e 1973 1977 - May 1 0 1 S +-R e 1978 o - Ap 30 0 1 S +-R e 1978 o - S 30 0 0 - +-R e 1984 1987 - May 1 0 1 S +-R e 1984 1991 - O 16 0 0 - +-R e 1988 o - Jun 1 0 1 S +-R e 1989 o - May 10 0 1 S +-R e 1990 1992 - May 1 0 1 S +-R e 1992 o - O 4 0 0 - +-R e 1993 ma - Mar lastSun 0 1 S +-R e 1993 1998 - S lastSun 0 0 - +-R e 1999 ma - O lastSun 0 0 - ++R l 1920 o - Mar 28 0 1 S ++R l 1920 o - O 25 0 0 - ++R l 1921 o - Ap 3 0 1 S ++R l 1921 o - O 3 0 0 - ++R l 1922 o - Mar 26 0 1 S ++R l 1922 o - O 8 0 0 - ++R l 1923 o - Ap 22 0 1 S ++R l 1923 o - S 16 0 0 - ++R l 1957 1961 - May 1 0 1 S ++R l 1957 1961 - O 1 0 0 - ++R l 1972 o - Jun 22 0 1 S ++R l 1972 1977 - O 1 0 0 - ++R l 1973 1977 - May 1 0 1 S ++R l 1978 o - Ap 30 0 1 S ++R l 1978 o - S 30 0 0 - ++R l 1984 1987 - May 1 0 1 S ++R l 1984 1991 - O 16 0 0 - ++R l 1988 o - Jun 1 0 1 S ++R l 1989 o - May 10 0 1 S ++R l 1990 1992 - May 1 0 1 S ++R l 1992 o - O 4 0 0 - ++R l 1993 ma - Mar lastSun 0 1 S ++R l 1993 1998 - S lastSun 0 0 - ++R l 1999 ma - O lastSun 0 0 - + Z Asia/Beirut 2:22 - LMT 1880 +-2 e EE%sT +-R f 1935 1941 - S 14 0 0:20 - +-R f 1935 1941 - D 14 0 0 - ++2 l EE%sT ++R NB 1935 1941 - S 14 0 0:20 - ++R NB 1935 1941 - D 14 0 0 - + Z Asia/Kuala_Lumpur 6:46:46 - LMT 1901 + 6:55:25 - SMT 1905 Jun + 7 - +07 1933 +@@ -827,98 +851,98 @@ Z Asia/Kuala_Lumpur 6:46:46 - LMT 1901 + 8 - +08 + Z Asia/Kuching 7:21:20 - LMT 1926 Mar + 7:30 - +0730 1933 +-8 f +08/+0820 1942 F 16 ++8 NB +08/+0820 1942 F 16 + 9 - +09 1945 S 12 + 8 - +08 + Z Indian/Maldives 4:54 - LMT 1880 + 4:54 - MMT 1960 + 5 - +05 +-R g 1983 1984 - Ap 1 0 1 - +-R g 1983 o - O 1 0 0 - +-R g 1985 1998 - Mar lastSun 0 1 - +-R g 1984 1998 - S lastSun 0 0 - +-R g 2001 o - Ap lastSat 2 1 - +-R g 2001 2006 - S lastSat 2 0 - +-R g 2002 2006 - Mar lastSat 2 1 - +-R g 2015 2016 - Mar lastSat 2 1 - +-R g 2015 2016 - S lastSat 0 0 - ++R X 1983 1984 - Ap 1 0 1 - ++R X 1983 o - O 1 0 0 - ++R X 1985 1998 - Mar lastSun 0 1 - ++R X 1984 1998 - S lastSun 0 0 - ++R X 2001 o - Ap lastSat 2 1 - ++R X 2001 2006 - S lastSat 2 0 - ++R X 2002 2006 - Mar lastSat 2 1 - ++R X 2015 2016 - Mar lastSat 2 1 - ++R X 2015 2016 - S lastSat 0 0 - + Z Asia/Hovd 6:6:36 - LMT 1905 Au + 6 - +06 1978 +-7 g +07/+08 ++7 X +07/+08 + Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au + 7 - +07 1978 +-8 g +08/+09 ++8 X +08/+09 + Z Asia/Choibalsan 7:38 - LMT 1905 Au + 7 - +07 1978 + 8 - +08 1983 Ap +-9 g +09/+10 2008 Mar 31 +-8 g +08/+09 ++9 X +09/+10 2008 Mar 31 ++8 X +08/+09 + Z Asia/Kathmandu 5:41:16 - LMT 1920 + 5:30 - +0530 1986 + 5:45 - +0545 +-R h 2002 o - Ap Sun>=2 0 1 S +-R h 2002 o - O Sun>=2 0 0 - +-R h 2008 o - Jun 1 0 1 S +-R h 2008 2009 - N 1 0 0 - +-R h 2009 o - Ap 15 0 1 S ++R PK 2002 o - Ap Sun>=2 0 1 S ++R PK 2002 o - O Sun>=2 0 0 - ++R PK 2008 o - Jun 1 0 1 S ++R PK 2008 2009 - N 1 0 0 - ++R PK 2009 o - Ap 15 0 1 S + Z Asia/Karachi 4:28:12 - LMT 1907 + 5:30 - +0530 1942 S + 5:30 1 +0630 1945 O 15 + 5:30 - +0530 1951 S 30 + 5 - +05 1971 Mar 26 +-5 h PK%sT +-R i 1999 2005 - Ap F>=15 0 1 S +-R i 1999 2003 - O F>=15 0 0 - +-R i 2004 o - O 1 1 0 - +-R i 2005 o - O 4 2 0 - +-R i 2006 2007 - Ap 1 0 1 S +-R i 2006 o - S 22 0 0 - +-R i 2007 o - S Th>=8 2 0 - +-R i 2008 2009 - Mar lastF 0 1 S +-R i 2008 o - S 1 0 0 - +-R i 2009 o - S F>=1 1 0 - +-R i 2010 o - Mar 26 0 1 S +-R i 2010 o - Au 11 0 0 - +-R i 2011 o - Ap 1 0:1 1 S +-R i 2011 o - Au 1 0 0 - +-R i 2011 o - Au 30 0 1 S +-R i 2011 o - S 30 0 0 - +-R i 2012 2014 - Mar lastTh 24 1 S +-R i 2012 o - S 21 1 0 - +-R i 2013 o - S F>=21 0 0 - +-R i 2014 2015 - O F>=21 0 0 - +-R i 2015 o - Mar lastF 24 1 S +-R i 2016 ma - Mar Sat>=22 1 1 S +-R i 2016 ma - O lastSat 1 0 - ++5 PK PK%sT ++R P 1999 2005 - Ap F>=15 0 1 S ++R P 1999 2003 - O F>=15 0 0 - ++R P 2004 o - O 1 1 0 - ++R P 2005 o - O 4 2 0 - ++R P 2006 2007 - Ap 1 0 1 S ++R P 2006 o - S 22 0 0 - ++R P 2007 o - S Th>=8 2 0 - ++R P 2008 2009 - Mar lastF 0 1 S ++R P 2008 o - S 1 0 0 - ++R P 2009 o - S F>=1 1 0 - ++R P 2010 o - Mar 26 0 1 S ++R P 2010 o - Au 11 0 0 - ++R P 2011 o - Ap 1 0:1 1 S ++R P 2011 o - Au 1 0 0 - ++R P 2011 o - Au 30 0 1 S ++R P 2011 o - S 30 0 0 - ++R P 2012 2014 - Mar lastTh 24 1 S ++R P 2012 o - S 21 1 0 - ++R P 2013 o - S F>=21 0 0 - ++R P 2014 2015 - O F>=21 0 0 - ++R P 2015 o - Mar lastF 24 1 S ++R P 2016 ma - Mar Sat>=22 1 1 S ++R P 2016 ma - O lastSat 1 0 - + Z Asia/Gaza 2:17:52 - LMT 1900 O + 2 Z EET/EEST 1948 May 15 +-2 B EE%sT 1967 Jun 5 ++2 K EE%sT 1967 Jun 5 + 2 Z I%sT 1996 +-2 b EE%sT 1999 +-2 i EE%sT 2008 Au 29 ++2 J EE%sT 1999 ++2 P EE%sT 2008 Au 29 + 2 - EET 2008 S +-2 i EE%sT 2010 ++2 P EE%sT 2010 + 2 - EET 2010 Mar 27 0:1 +-2 i EE%sT 2011 Au ++2 P EE%sT 2011 Au + 2 - EET 2012 +-2 i EE%sT ++2 P EE%sT + Z Asia/Hebron 2:20:23 - LMT 1900 O + 2 Z EET/EEST 1948 May 15 +-2 B EE%sT 1967 Jun 5 ++2 K EE%sT 1967 Jun 5 + 2 Z I%sT 1996 +-2 b EE%sT 1999 +-2 i EE%sT +-R j 1936 o - N 1 0 1 - +-R j 1937 o - F 1 0 0 - +-R j 1954 o - Ap 12 0 1 - +-R j 1954 o - Jul 1 0 0 - +-R j 1978 o - Mar 22 0 1 - +-R j 1978 o - S 21 0 0 - ++2 J EE%sT 1999 ++2 P EE%sT ++R PH 1936 o - N 1 0 1 D ++R PH 1937 o - F 1 0 0 S ++R PH 1954 o - Ap 12 0 1 D ++R PH 1954 o - Jul 1 0 0 S ++R PH 1978 o - Mar 22 0 1 D ++R PH 1978 o - S 21 0 0 S + Z Asia/Manila -15:56 - LMT 1844 D 31 + 8:4 - LMT 1899 May 11 +-8 j +08/+09 1942 May +-9 - +09 1944 N +-8 j +08/+09 ++8 PH P%sT 1942 May ++9 - JST 1944 N ++8 PH P%sT + Z Asia/Qatar 3:26:8 - LMT 1920 + 4 - +04 1972 Jun + 3 - +03 +@@ -945,52 +969,52 @@ Z Asia/Colombo 5:19:24 - LMT 1880 + 6:30 - +0630 1996 O 26 0:30 + 6 - +06 2006 Ap 15 0:30 + 5:30 - +0530 +-R k 1920 1923 - Ap Sun>=15 2 1 S +-R k 1920 1923 - O Sun>=1 2 0 - +-R k 1962 o - Ap 29 2 1 S +-R k 1962 o - O 1 2 0 - +-R k 1963 1965 - May 1 2 1 S +-R k 1963 o - S 30 2 0 - +-R k 1964 o - O 1 2 0 - +-R k 1965 o - S 30 2 0 - +-R k 1966 o - Ap 24 2 1 S +-R k 1966 1976 - O 1 2 0 - +-R k 1967 1978 - May 1 2 1 S +-R k 1977 1978 - S 1 2 0 - +-R k 1983 1984 - Ap 9 2 1 S +-R k 1983 1984 - O 1 2 0 - +-R k 1986 o - F 16 2 1 S +-R k 1986 o - O 9 2 0 - +-R k 1987 o - Mar 1 2 1 S +-R k 1987 1988 - O 31 2 0 - +-R k 1988 o - Mar 15 2 1 S +-R k 1989 o - Mar 31 2 1 S +-R k 1989 o - O 1 2 0 - +-R k 1990 o - Ap 1 2 1 S +-R k 1990 o - S 30 2 0 - +-R k 1991 o - Ap 1 0 1 S +-R k 1991 1992 - O 1 0 0 - +-R k 1992 o - Ap 8 0 1 S +-R k 1993 o - Mar 26 0 1 S +-R k 1993 o - S 25 0 0 - +-R k 1994 1996 - Ap 1 0 1 S +-R k 1994 2005 - O 1 0 0 - +-R k 1997 1998 - Mar lastM 0 1 S +-R k 1999 2006 - Ap 1 0 1 S +-R k 2006 o - S 22 0 0 - +-R k 2007 o - Mar lastF 0 1 S +-R k 2007 o - N F>=1 0 0 - +-R k 2008 o - Ap F>=1 0 1 S +-R k 2008 o - N 1 0 0 - +-R k 2009 o - Mar lastF 0 1 S +-R k 2010 2011 - Ap F>=1 0 1 S +-R k 2012 ma - Mar lastF 0 1 S +-R k 2009 ma - O lastF 0 0 - ++R S 1920 1923 - Ap Sun>=15 2 1 S ++R S 1920 1923 - O Sun>=1 2 0 - ++R S 1962 o - Ap 29 2 1 S ++R S 1962 o - O 1 2 0 - ++R S 1963 1965 - May 1 2 1 S ++R S 1963 o - S 30 2 0 - ++R S 1964 o - O 1 2 0 - ++R S 1965 o - S 30 2 0 - ++R S 1966 o - Ap 24 2 1 S ++R S 1966 1976 - O 1 2 0 - ++R S 1967 1978 - May 1 2 1 S ++R S 1977 1978 - S 1 2 0 - ++R S 1983 1984 - Ap 9 2 1 S ++R S 1983 1984 - O 1 2 0 - ++R S 1986 o - F 16 2 1 S ++R S 1986 o - O 9 2 0 - ++R S 1987 o - Mar 1 2 1 S ++R S 1987 1988 - O 31 2 0 - ++R S 1988 o - Mar 15 2 1 S ++R S 1989 o - Mar 31 2 1 S ++R S 1989 o - O 1 2 0 - ++R S 1990 o - Ap 1 2 1 S ++R S 1990 o - S 30 2 0 - ++R S 1991 o - Ap 1 0 1 S ++R S 1991 1992 - O 1 0 0 - ++R S 1992 o - Ap 8 0 1 S ++R S 1993 o - Mar 26 0 1 S ++R S 1993 o - S 25 0 0 - ++R S 1994 1996 - Ap 1 0 1 S ++R S 1994 2005 - O 1 0 0 - ++R S 1997 1998 - Mar lastM 0 1 S ++R S 1999 2006 - Ap 1 0 1 S ++R S 2006 o - S 22 0 0 - ++R S 2007 o - Mar lastF 0 1 S ++R S 2007 o - N F>=1 0 0 - ++R S 2008 o - Ap F>=1 0 1 S ++R S 2008 o - N 1 0 0 - ++R S 2009 o - Mar lastF 0 1 S ++R S 2010 2011 - Ap F>=1 0 1 S ++R S 2012 ma - Mar lastF 0 1 S ++R S 2009 ma - O lastF 0 0 - + Z Asia/Damascus 2:25:12 - LMT 1920 +-2 k EE%sT ++2 S EE%sT + Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2 + 5 - +05 1930 Jun 21 +-6 M +06/+07 1991 Mar 31 2s ++6 R +06/+07 1991 Mar 31 2s + 5 1 +05/+06 1991 S 9 2s + 5 - +05 + Z Asia/Bangkok 6:42:4 - LMT 1880 +@@ -1000,8 +1024,8 @@ Li Asia/Bangkok Asia/Phnom_Penh + Li Asia/Bangkok Asia/Vientiane + Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2 + 4 - +04 1930 Jun 21 +-5 M +05/+06 1991 Mar 31 2 +-4 M +04/+05 1992 Ja 19 2 ++5 R +05/+06 1991 Mar 31 2 ++4 R +04/+05 1992 Ja 19 2 + 5 - +05 + Z Asia/Dubai 3:41:12 - LMT 1920 + 4 - +04 +@@ -1011,12 +1035,12 @@ Z Asia/Samarkand 4:27:53 - LMT 1924 May 2 + 5 - +05 1981 Ap + 5 1 +06 1981 O + 6 - +06 1982 Ap +-5 M +05/+06 1992 ++5 R +05/+06 1992 + 5 - +05 + Z Asia/Tashkent 4:37:11 - LMT 1924 May 2 + 5 - +05 1930 Jun 21 +-6 M +06/+07 1991 Mar 31 2 +-5 M +05/+06 1992 ++6 R +06/+07 1991 Mar 31 2 ++5 R +05/+06 1992 + 5 - +05 + Z Asia/Ho_Chi_Minh 7:6:40 - LMT 1906 Jul + 7:6:30 - PLMT 1911 May +@@ -1028,176 +1052,176 @@ Z Asia/Ho_Chi_Minh 7:6:40 - LMT 1906 Jul + 7 - +07 1959 D 31 23 + 8 - +08 1975 Jun 13 + 7 - +07 +-R l 1917 o - Ja 1 0:1 1 D +-R l 1917 o - Mar 25 2 0 S +-R l 1942 o - Ja 1 2 1 D +-R l 1942 o - Mar 29 2 0 S +-R l 1942 o - S 27 2 1 D +-R l 1943 1944 - Mar lastSun 2 0 S +-R l 1943 o - O 3 2 1 D ++R AU 1917 o - Ja 1 0:1 1 D ++R AU 1917 o - Mar 25 2 0 S ++R AU 1942 o - Ja 1 2 1 D ++R AU 1942 o - Mar 29 2 0 S ++R AU 1942 o - S 27 2 1 D ++R AU 1943 1944 - Mar lastSun 2 0 S ++R AU 1943 o - O 3 2 1 D + Z Australia/Darwin 8:43:20 - LMT 1895 F + 9 - ACST 1899 May +-9:30 l AC%sT +-R m 1974 o - O lastSun 2s 1 D +-R m 1975 o - Mar Sun>=1 2s 0 S +-R m 1983 o - O lastSun 2s 1 D +-R m 1984 o - Mar Sun>=1 2s 0 S +-R m 1991 o - N 17 2s 1 D +-R m 1992 o - Mar Sun>=1 2s 0 S +-R m 2006 o - D 3 2s 1 D +-R m 2007 2009 - Mar lastSun 2s 0 S +-R m 2007 2008 - O lastSun 2s 1 D ++9:30 AU AC%sT ++R AW 1974 o - O lastSun 2s 1 D ++R AW 1975 o - Mar Sun>=1 2s 0 S ++R AW 1983 o - O lastSun 2s 1 D ++R AW 1984 o - Mar Sun>=1 2s 0 S ++R AW 1991 o - N 17 2s 1 D ++R AW 1992 o - Mar Sun>=1 2s 0 S ++R AW 2006 o - D 3 2s 1 D ++R AW 2007 2009 - Mar lastSun 2s 0 S ++R AW 2007 2008 - O lastSun 2s 1 D + Z Australia/Perth 7:43:24 - LMT 1895 D +-8 l AW%sT 1943 Jul +-8 m AW%sT ++8 AU AW%sT 1943 Jul ++8 AW AW%sT + Z Australia/Eucla 8:35:28 - LMT 1895 D +-8:45 l +0845/+0945 1943 Jul +-8:45 m +0845/+0945 +-R n 1971 o - O lastSun 2s 1 D +-R n 1972 o - F lastSun 2s 0 S +-R n 1989 1991 - O lastSun 2s 1 D +-R n 1990 1992 - Mar Sun>=1 2s 0 S +-R o 1992 1993 - O lastSun 2s 1 D +-R o 1993 1994 - Mar Sun>=1 2s 0 S ++8:45 AU +0845/+0945 1943 Jul ++8:45 AW +0845/+0945 ++R AQ 1971 o - O lastSun 2s 1 D ++R AQ 1972 o - F lastSun 2s 0 S ++R AQ 1989 1991 - O lastSun 2s 1 D ++R AQ 1990 1992 - Mar Sun>=1 2s 0 S ++R Ho 1992 1993 - O lastSun 2s 1 D ++R Ho 1993 1994 - Mar Sun>=1 2s 0 S + Z Australia/Brisbane 10:12:8 - LMT 1895 +-10 l AE%sT 1971 +-10 n AE%sT ++10 AU AE%sT 1971 ++10 AQ AE%sT + Z Australia/Lindeman 9:55:56 - LMT 1895 +-10 l AE%sT 1971 +-10 n AE%sT 1992 Jul +-10 o AE%sT +-R p 1971 1985 - O lastSun 2s 1 D +-R p 1986 o - O 19 2s 1 D +-R p 1987 2007 - O lastSun 2s 1 D +-R p 1972 o - F 27 2s 0 S +-R p 1973 1985 - Mar Sun>=1 2s 0 S +-R p 1986 1990 - Mar Sun>=15 2s 0 S +-R p 1991 o - Mar 3 2s 0 S +-R p 1992 o - Mar 22 2s 0 S +-R p 1993 o - Mar 7 2s 0 S +-R p 1994 o - Mar 20 2s 0 S +-R p 1995 2005 - Mar lastSun 2s 0 S +-R p 2006 o - Ap 2 2s 0 S +-R p 2007 o - Mar lastSun 2s 0 S +-R p 2008 ma - Ap Sun>=1 2s 0 S +-R p 2008 ma - O Sun>=1 2s 1 D ++10 AU AE%sT 1971 ++10 AQ AE%sT 1992 Jul ++10 Ho AE%sT ++R AS 1971 1985 - O lastSun 2s 1 D ++R AS 1986 o - O 19 2s 1 D ++R AS 1987 2007 - O lastSun 2s 1 D ++R AS 1972 o - F 27 2s 0 S ++R AS 1973 1985 - Mar Sun>=1 2s 0 S ++R AS 1986 1990 - Mar Sun>=15 2s 0 S ++R AS 1991 o - Mar 3 2s 0 S ++R AS 1992 o - Mar 22 2s 0 S ++R AS 1993 o - Mar 7 2s 0 S ++R AS 1994 o - Mar 20 2s 0 S ++R AS 1995 2005 - Mar lastSun 2s 0 S ++R AS 2006 o - Ap 2 2s 0 S ++R AS 2007 o - Mar lastSun 2s 0 S ++R AS 2008 ma - Ap Sun>=1 2s 0 S ++R AS 2008 ma - O Sun>=1 2s 1 D + Z Australia/Adelaide 9:14:20 - LMT 1895 F + 9 - ACST 1899 May +-9:30 l AC%sT 1971 +-9:30 p AC%sT +-R q 1967 o - O Sun>=1 2s 1 D +-R q 1968 o - Mar lastSun 2s 0 S +-R q 1968 1985 - O lastSun 2s 1 D +-R q 1969 1971 - Mar Sun>=8 2s 0 S +-R q 1972 o - F lastSun 2s 0 S +-R q 1973 1981 - Mar Sun>=1 2s 0 S +-R q 1982 1983 - Mar lastSun 2s 0 S +-R q 1984 1986 - Mar Sun>=1 2s 0 S +-R q 1986 o - O Sun>=15 2s 1 D +-R q 1987 1990 - Mar Sun>=15 2s 0 S +-R q 1987 o - O Sun>=22 2s 1 D +-R q 1988 1990 - O lastSun 2s 1 D +-R q 1991 1999 - O Sun>=1 2s 1 D +-R q 1991 2005 - Mar lastSun 2s 0 S +-R q 2000 o - Au lastSun 2s 1 D +-R q 2001 ma - O Sun>=1 2s 1 D +-R q 2006 o - Ap Sun>=1 2s 0 S +-R q 2007 o - Mar lastSun 2s 0 S +-R q 2008 ma - Ap Sun>=1 2s 0 S ++9:30 AU AC%sT 1971 ++9:30 AS AC%sT ++R AT 1967 o - O Sun>=1 2s 1 D ++R AT 1968 o - Mar lastSun 2s 0 S ++R AT 1968 1985 - O lastSun 2s 1 D ++R AT 1969 1971 - Mar Sun>=8 2s 0 S ++R AT 1972 o - F lastSun 2s 0 S ++R AT 1973 1981 - Mar Sun>=1 2s 0 S ++R AT 1982 1983 - Mar lastSun 2s 0 S ++R AT 1984 1986 - Mar Sun>=1 2s 0 S ++R AT 1986 o - O Sun>=15 2s 1 D ++R AT 1987 1990 - Mar Sun>=15 2s 0 S ++R AT 1987 o - O Sun>=22 2s 1 D ++R AT 1988 1990 - O lastSun 2s 1 D ++R AT 1991 1999 - O Sun>=1 2s 1 D ++R AT 1991 2005 - Mar lastSun 2s 0 S ++R AT 2000 o - Au lastSun 2s 1 D ++R AT 2001 ma - O Sun>=1 2s 1 D ++R AT 2006 o - Ap Sun>=1 2s 0 S ++R AT 2007 o - Mar lastSun 2s 0 S ++R AT 2008 ma - Ap Sun>=1 2s 0 S + Z Australia/Hobart 9:49:16 - LMT 1895 S + 10 - AEST 1916 O 1 2 + 10 1 AEDT 1917 F +-10 l AE%sT 1967 +-10 q AE%sT ++10 AU AE%sT 1967 ++10 AT AE%sT + Z Australia/Currie 9:35:28 - LMT 1895 S + 10 - AEST 1916 O 1 2 + 10 1 AEDT 1917 F +-10 l AE%sT 1971 Jul +-10 q AE%sT +-R r 1971 1985 - O lastSun 2s 1 D +-R r 1972 o - F lastSun 2s 0 S +-R r 1973 1985 - Mar Sun>=1 2s 0 S +-R r 1986 1990 - Mar Sun>=15 2s 0 S +-R r 1986 1987 - O Sun>=15 2s 1 D +-R r 1988 1999 - O lastSun 2s 1 D +-R r 1991 1994 - Mar Sun>=1 2s 0 S +-R r 1995 2005 - Mar lastSun 2s 0 S +-R r 2000 o - Au lastSun 2s 1 D +-R r 2001 2007 - O lastSun 2s 1 D +-R r 2006 o - Ap Sun>=1 2s 0 S +-R r 2007 o - Mar lastSun 2s 0 S +-R r 2008 ma - Ap Sun>=1 2s 0 S +-R r 2008 ma - O Sun>=1 2s 1 D ++10 AU AE%sT 1971 Jul ++10 AT AE%sT ++R AV 1971 1985 - O lastSun 2s 1 D ++R AV 1972 o - F lastSun 2s 0 S ++R AV 1973 1985 - Mar Sun>=1 2s 0 S ++R AV 1986 1990 - Mar Sun>=15 2s 0 S ++R AV 1986 1987 - O Sun>=15 2s 1 D ++R AV 1988 1999 - O lastSun 2s 1 D ++R AV 1991 1994 - Mar Sun>=1 2s 0 S ++R AV 1995 2005 - Mar lastSun 2s 0 S ++R AV 2000 o - Au lastSun 2s 1 D ++R AV 2001 2007 - O lastSun 2s 1 D ++R AV 2006 o - Ap Sun>=1 2s 0 S ++R AV 2007 o - Mar lastSun 2s 0 S ++R AV 2008 ma - Ap Sun>=1 2s 0 S ++R AV 2008 ma - O Sun>=1 2s 1 D + Z Australia/Melbourne 9:39:52 - LMT 1895 F +-10 l AE%sT 1971 +-10 r AE%sT +-R s 1971 1985 - O lastSun 2s 1 D +-R s 1972 o - F 27 2s 0 S +-R s 1973 1981 - Mar Sun>=1 2s 0 S +-R s 1982 o - Ap Sun>=1 2s 0 S +-R s 1983 1985 - Mar Sun>=1 2s 0 S +-R s 1986 1989 - Mar Sun>=15 2s 0 S +-R s 1986 o - O 19 2s 1 D +-R s 1987 1999 - O lastSun 2s 1 D +-R s 1990 1995 - Mar Sun>=1 2s 0 S +-R s 1996 2005 - Mar lastSun 2s 0 S +-R s 2000 o - Au lastSun 2s 1 D +-R s 2001 2007 - O lastSun 2s 1 D +-R s 2006 o - Ap Sun>=1 2s 0 S +-R s 2007 o - Mar lastSun 2s 0 S +-R s 2008 ma - Ap Sun>=1 2s 0 S +-R s 2008 ma - O Sun>=1 2s 1 D ++10 AU AE%sT 1971 ++10 AV AE%sT ++R AN 1971 1985 - O lastSun 2s 1 D ++R AN 1972 o - F 27 2s 0 S ++R AN 1973 1981 - Mar Sun>=1 2s 0 S ++R AN 1982 o - Ap Sun>=1 2s 0 S ++R AN 1983 1985 - Mar Sun>=1 2s 0 S ++R AN 1986 1989 - Mar Sun>=15 2s 0 S ++R AN 1986 o - O 19 2s 1 D ++R AN 1987 1999 - O lastSun 2s 1 D ++R AN 1990 1995 - Mar Sun>=1 2s 0 S ++R AN 1996 2005 - Mar lastSun 2s 0 S ++R AN 2000 o - Au lastSun 2s 1 D ++R AN 2001 2007 - O lastSun 2s 1 D ++R AN 2006 o - Ap Sun>=1 2s 0 S ++R AN 2007 o - Mar lastSun 2s 0 S ++R AN 2008 ma - Ap Sun>=1 2s 0 S ++R AN 2008 ma - O Sun>=1 2s 1 D + Z Australia/Sydney 10:4:52 - LMT 1895 F +-10 l AE%sT 1971 +-10 s AE%sT ++10 AU AE%sT 1971 ++10 AN AE%sT + Z Australia/Broken_Hill 9:25:48 - LMT 1895 F + 10 - AEST 1896 Au 23 + 9 - ACST 1899 May +-9:30 l AC%sT 1971 +-9:30 s AC%sT 2000 +-9:30 p AC%sT +-R t 1981 1984 - O lastSun 2 1 - +-R t 1982 1985 - Mar Sun>=1 2 0 - +-R t 1985 o - O lastSun 2 0:30 - +-R t 1986 1989 - Mar Sun>=15 2 0 - +-R t 1986 o - O 19 2 0:30 - +-R t 1987 1999 - O lastSun 2 0:30 - +-R t 1990 1995 - Mar Sun>=1 2 0 - +-R t 1996 2005 - Mar lastSun 2 0 - +-R t 2000 o - Au lastSun 2 0:30 - +-R t 2001 2007 - O lastSun 2 0:30 - +-R t 2006 o - Ap Sun>=1 2 0 - +-R t 2007 o - Mar lastSun 2 0 - +-R t 2008 ma - Ap Sun>=1 2 0 - +-R t 2008 ma - O Sun>=1 2 0:30 - ++9:30 AU AC%sT 1971 ++9:30 AN AC%sT 2000 ++9:30 AS AC%sT ++R LH 1981 1984 - O lastSun 2 1 - ++R LH 1982 1985 - Mar Sun>=1 2 0 - ++R LH 1985 o - O lastSun 2 0:30 - ++R LH 1986 1989 - Mar Sun>=15 2 0 - ++R LH 1986 o - O 19 2 0:30 - ++R LH 1987 1999 - O lastSun 2 0:30 - ++R LH 1990 1995 - Mar Sun>=1 2 0 - ++R LH 1996 2005 - Mar lastSun 2 0 - ++R LH 2000 o - Au lastSun 2 0:30 - ++R LH 2001 2007 - O lastSun 2 0:30 - ++R LH 2006 o - Ap Sun>=1 2 0 - ++R LH 2007 o - Mar lastSun 2 0 - ++R LH 2008 ma - Ap Sun>=1 2 0 - ++R LH 2008 ma - O Sun>=1 2 0:30 - + Z Australia/Lord_Howe 10:36:20 - LMT 1895 F + 10 - AEST 1981 Mar +-10:30 t +1030/+1130 1985 Jul +-10:30 t +1030/+11 ++10:30 LH +1030/+1130 1985 Jul ++10:30 LH +1030/+11 + Z Antarctica/Macquarie 0 - -00 1899 N + 10 - AEST 1916 O 1 2 + 10 1 AEDT 1917 F +-10 l AE%sT 1919 Ap 1 0s ++10 AU AE%sT 1919 Ap 1 0s + 0 - -00 1948 Mar 25 +-10 l AE%sT 1967 +-10 q AE%sT 2010 Ap 4 3 ++10 AU AE%sT 1967 ++10 AT AE%sT 2010 Ap 4 3 + 11 - +11 + Z Indian/Christmas 7:2:52 - LMT 1895 F + 7 - +07 + Z Indian/Cocos 6:27:40 - LMT 1900 + 6:30 - +0630 +-R u 1998 1999 - N Sun>=1 2 1 - +-R u 1999 2000 - F lastSun 3 0 - +-R u 2009 o - N 29 2 1 - +-R u 2010 o - Mar lastSun 3 0 - +-R u 2010 2013 - O Sun>=21 2 1 - +-R u 2011 o - Mar Sun>=1 3 0 - +-R u 2012 2013 - Ja Sun>=18 3 0 - +-R u 2014 o - Ja Sun>=18 2 0 - +-R u 2014 ma - N Sun>=1 2 1 - +-R u 2015 ma - Ja Sun>=14 3 0 - ++R FJ 1998 1999 - N Sun>=1 2 1 - ++R FJ 1999 2000 - F lastSun 3 0 - ++R FJ 2009 o - N 29 2 1 - ++R FJ 2010 o - Mar lastSun 3 0 - ++R FJ 2010 2013 - O Sun>=21 2 1 - ++R FJ 2011 o - Mar Sun>=1 3 0 - ++R FJ 2012 2013 - Ja Sun>=18 3 0 - ++R FJ 2014 o - Ja Sun>=18 2 0 - ++R FJ 2014 ma - N Sun>=1 2 1 - ++R FJ 2015 ma - Ja Sun>=13 3 0 - + Z Pacific/Fiji 11:55:44 - LMT 1915 O 26 +-12 u +12/+13 ++12 FJ +12/+13 + Z Pacific/Gambier -8:59:48 - LMT 1912 O + -9 - -09 + Z Pacific/Marquesas -9:18 - LMT 1912 O +@@ -1239,50 +1263,50 @@ Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15 + 9 - +09 1944 Au 15 + 11:30 - +1130 1979 May + 12 - +12 +-R v 1977 1978 - D Sun>=1 0 1 - +-R v 1978 1979 - F 27 0 0 - +-R v 1996 o - D 1 2s 1 - +-R v 1997 o - Mar 2 2s 0 - ++R NC 1977 1978 - D Sun>=1 0 1 - ++R NC 1978 1979 - F 27 0 0 - ++R NC 1996 o - D 1 2s 1 - ++R NC 1997 o - Mar 2 2s 0 - + Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13 +-11 v +11/+12 +-R w 1927 o - N 6 2 1 S +-R w 1928 o - Mar 4 2 0 M +-R w 1928 1933 - O Sun>=8 2 0:30 S +-R w 1929 1933 - Mar Sun>=15 2 0 M +-R w 1934 1940 - Ap lastSun 2 0 M +-R w 1934 1940 - S lastSun 2 0:30 S +-R w 1946 o - Ja 1 0 0 S +-R w 1974 o - N Sun>=1 2s 1 D +-R x 1974 o - N Sun>=1 2:45s 1 - +-R w 1975 o - F lastSun 2s 0 S +-R x 1975 o - F lastSun 2:45s 0 - +-R w 1975 1988 - O lastSun 2s 1 D +-R x 1975 1988 - O lastSun 2:45s 1 - +-R w 1976 1989 - Mar Sun>=1 2s 0 S +-R x 1976 1989 - Mar Sun>=1 2:45s 0 - +-R w 1989 o - O Sun>=8 2s 1 D +-R x 1989 o - O Sun>=8 2:45s 1 - +-R w 1990 2006 - O Sun>=1 2s 1 D +-R x 1990 2006 - O Sun>=1 2:45s 1 - +-R w 1990 2007 - Mar Sun>=15 2s 0 S +-R x 1990 2007 - Mar Sun>=15 2:45s 0 - +-R w 2007 ma - S lastSun 2s 1 D +-R x 2007 ma - S lastSun 2:45s 1 - +-R w 2008 ma - Ap Sun>=1 2s 0 S +-R x 2008 ma - Ap Sun>=1 2:45s 0 - ++11 NC +11/+12 ++R NZ 1927 o - N 6 2 1 S ++R NZ 1928 o - Mar 4 2 0 M ++R NZ 1928 1933 - O Sun>=8 2 0:30 S ++R NZ 1929 1933 - Mar Sun>=15 2 0 M ++R NZ 1934 1940 - Ap lastSun 2 0 M ++R NZ 1934 1940 - S lastSun 2 0:30 S ++R NZ 1946 o - Ja 1 0 0 S ++R NZ 1974 o - N Sun>=1 2s 1 D ++R k 1974 o - N Sun>=1 2:45s 1 - ++R NZ 1975 o - F lastSun 2s 0 S ++R k 1975 o - F lastSun 2:45s 0 - ++R NZ 1975 1988 - O lastSun 2s 1 D ++R k 1975 1988 - O lastSun 2:45s 1 - ++R NZ 1976 1989 - Mar Sun>=1 2s 0 S ++R k 1976 1989 - Mar Sun>=1 2:45s 0 - ++R NZ 1989 o - O Sun>=8 2s 1 D ++R k 1989 o - O Sun>=8 2:45s 1 - ++R NZ 1990 2006 - O Sun>=1 2s 1 D ++R k 1990 2006 - O Sun>=1 2:45s 1 - ++R NZ 1990 2007 - Mar Sun>=15 2s 0 S ++R k 1990 2007 - Mar Sun>=15 2:45s 0 - ++R NZ 2007 ma - S lastSun 2s 1 D ++R k 2007 ma - S lastSun 2:45s 1 - ++R NZ 2008 ma - Ap Sun>=1 2s 0 S ++R k 2008 ma - Ap Sun>=1 2:45s 0 - + Z Pacific/Auckland 11:39:4 - LMT 1868 N 2 +-11:30 w NZ%sT 1946 +-12 w NZ%sT ++11:30 NZ NZ%sT 1946 ++12 NZ NZ%sT + Z Pacific/Chatham 12:13:48 - LMT 1868 N 2 + 12:15 - +1215 1946 +-12:45 x +1245/+1345 ++12:45 k +1245/+1345 + Li Pacific/Auckland Antarctica/McMurdo +-R y 1978 o - N 12 0 0:30 - +-R y 1979 1991 - Mar Sun>=1 0 0 - +-R y 1979 1990 - O lastSun 0 0:30 - ++R CK 1978 o - N 12 0 0:30 - ++R CK 1979 1991 - Mar Sun>=1 0 0 - ++R CK 1979 1990 - O lastSun 0 0:30 - + Z Pacific/Rarotonga -10:39:4 - LMT 1901 + -10:30 - -1030 1978 N 12 +--10 y -10/-0930 ++-10 CK -10/-0930 + Z Pacific/Niue -11:19:40 - LMT 1901 + -11:20 - -1120 1951 + -11:30 - -1130 1978 O +@@ -1311,570 +1335,570 @@ Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5 + -11:22:48 - LMT 1911 + -11 - SST + Li Pacific/Pago_Pago Pacific/Midway +-R z 2010 o - S lastSun 0 1 - +-R z 2011 o - Ap Sat>=1 4 0 - +-R z 2011 o - S lastSat 3 1 - +-R z 2012 ma - Ap Sun>=1 4 0 - +-R z 2012 ma - S lastSun 3 1 - ++R WS 2010 o - S lastSun 0 1 - ++R WS 2011 o - Ap Sat>=1 4 0 - ++R WS 2011 o - S lastSat 3 1 - ++R WS 2012 ma - Ap Sun>=1 4 0 - ++R WS 2012 ma - S lastSun 3 1 - + Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5 + -11:26:56 - LMT 1911 + -11:30 - -1130 1950 +--11 z -11/-10 2011 D 29 24 +-13 z +13/+14 ++-11 WS -11/-10 2011 D 29 24 ++13 WS +13/+14 + Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O + 11 - +11 + Z Pacific/Fakaofo -11:24:56 - LMT 1901 + -11 - -11 2011 D 30 + 13 - +13 +-R ! 1999 o - O 7 2s 1 - +-R ! 2000 o - Mar 19 2s 0 - +-R ! 2000 2001 - N Sun>=1 2 1 - +-R ! 2001 2002 - Ja lastSun 2 0 - +-R ! 2016 o - N Sun>=1 2 1 - +-R ! 2017 o - Ja Sun>=15 3 0 - ++R TO 1999 o - O 7 2s 1 - ++R TO 2000 o - Mar 19 2s 0 - ++R TO 2000 2001 - N Sun>=1 2 1 - ++R TO 2001 2002 - Ja lastSun 2 0 - ++R TO 2016 o - N Sun>=1 2 1 - ++R TO 2017 o - Ja Sun>=15 3 0 - + Z Pacific/Tongatapu 12:19:20 - LMT 1901 + 12:20 - +1220 1941 + 13 - +13 1999 +-13 ! +13/+14 ++13 TO +13/+14 + Z Pacific/Funafuti 11:56:52 - LMT 1901 + 12 - +12 + Z Pacific/Wake 11:6:28 - LMT 1901 + 12 - +12 +-R $ 1983 o - S 25 0 1 - +-R $ 1984 1991 - Mar Sun>=23 0 0 - +-R $ 1984 o - O 23 0 1 - +-R $ 1985 1991 - S Sun>=23 0 1 - +-R $ 1992 1993 - Ja Sun>=23 0 0 - +-R $ 1992 o - O Sun>=23 0 1 - ++R VU 1983 o - S 25 0 1 - ++R VU 1984 1991 - Mar Sun>=23 0 0 - ++R VU 1984 o - O 23 0 1 - ++R VU 1985 1991 - S Sun>=23 0 1 - ++R VU 1992 1993 - Ja Sun>=23 0 0 - ++R VU 1992 o - O Sun>=23 0 1 - + Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13 +-11 $ +11/+12 ++11 VU +11/+12 + Z Pacific/Wallis 12:15:20 - LMT 1901 + 12 - +12 +-R % 1916 o - May 21 2s 1 BST +-R % 1916 o - O 1 2s 0 GMT +-R % 1917 o - Ap 8 2s 1 BST +-R % 1917 o - S 17 2s 0 GMT +-R % 1918 o - Mar 24 2s 1 BST +-R % 1918 o - S 30 2s 0 GMT +-R % 1919 o - Mar 30 2s 1 BST +-R % 1919 o - S 29 2s 0 GMT +-R % 1920 o - Mar 28 2s 1 BST +-R % 1920 o - O 25 2s 0 GMT +-R % 1921 o - Ap 3 2s 1 BST +-R % 1921 o - O 3 2s 0 GMT +-R % 1922 o - Mar 26 2s 1 BST +-R % 1922 o - O 8 2s 0 GMT +-R % 1923 o - Ap Sun>=16 2s 1 BST +-R % 1923 1924 - S Sun>=16 2s 0 GMT +-R % 1924 o - Ap Sun>=9 2s 1 BST +-R % 1925 1926 - Ap Sun>=16 2s 1 BST +-R % 1925 1938 - O Sun>=2 2s 0 GMT +-R % 1927 o - Ap Sun>=9 2s 1 BST +-R % 1928 1929 - Ap Sun>=16 2s 1 BST +-R % 1930 o - Ap Sun>=9 2s 1 BST +-R % 1931 1932 - Ap Sun>=16 2s 1 BST +-R % 1933 o - Ap Sun>=9 2s 1 BST +-R % 1934 o - Ap Sun>=16 2s 1 BST +-R % 1935 o - Ap Sun>=9 2s 1 BST +-R % 1936 1937 - Ap Sun>=16 2s 1 BST +-R % 1938 o - Ap Sun>=9 2s 1 BST +-R % 1939 o - Ap Sun>=16 2s 1 BST +-R % 1939 o - N Sun>=16 2s 0 GMT +-R % 1940 o - F Sun>=23 2s 1 BST +-R % 1941 o - May Sun>=2 1s 2 BDST +-R % 1941 1943 - Au Sun>=9 1s 1 BST +-R % 1942 1944 - Ap Sun>=2 1s 2 BDST +-R % 1944 o - S Sun>=16 1s 1 BST +-R % 1945 o - Ap M>=2 1s 2 BDST +-R % 1945 o - Jul Sun>=9 1s 1 BST +-R % 1945 1946 - O Sun>=2 2s 0 GMT +-R % 1946 o - Ap Sun>=9 2s 1 BST +-R % 1947 o - Mar 16 2s 1 BST +-R % 1947 o - Ap 13 1s 2 BDST +-R % 1947 o - Au 10 1s 1 BST +-R % 1947 o - N 2 2s 0 GMT +-R % 1948 o - Mar 14 2s 1 BST +-R % 1948 o - O 31 2s 0 GMT +-R % 1949 o - Ap 3 2s 1 BST +-R % 1949 o - O 30 2s 0 GMT +-R % 1950 1952 - Ap Sun>=14 2s 1 BST +-R % 1950 1952 - O Sun>=21 2s 0 GMT +-R % 1953 o - Ap Sun>=16 2s 1 BST +-R % 1953 1960 - O Sun>=2 2s 0 GMT +-R % 1954 o - Ap Sun>=9 2s 1 BST +-R % 1955 1956 - Ap Sun>=16 2s 1 BST +-R % 1957 o - Ap Sun>=9 2s 1 BST +-R % 1958 1959 - Ap Sun>=16 2s 1 BST +-R % 1960 o - Ap Sun>=9 2s 1 BST +-R % 1961 1963 - Mar lastSun 2s 1 BST +-R % 1961 1968 - O Sun>=23 2s 0 GMT +-R % 1964 1967 - Mar Sun>=19 2s 1 BST +-R % 1968 o - F 18 2s 1 BST +-R % 1972 1980 - Mar Sun>=16 2s 1 BST +-R % 1972 1980 - O Sun>=23 2s 0 GMT +-R % 1981 1995 - Mar lastSun 1u 1 BST +-R % 1981 1989 - O Sun>=23 1u 0 GMT +-R % 1990 1995 - O Sun>=22 1u 0 GMT ++R G 1916 o - May 21 2s 1 BST ++R G 1916 o - O 1 2s 0 GMT ++R G 1917 o - Ap 8 2s 1 BST ++R G 1917 o - S 17 2s 0 GMT ++R G 1918 o - Mar 24 2s 1 BST ++R G 1918 o - S 30 2s 0 GMT ++R G 1919 o - Mar 30 2s 1 BST ++R G 1919 o - S 29 2s 0 GMT ++R G 1920 o - Mar 28 2s 1 BST ++R G 1920 o - O 25 2s 0 GMT ++R G 1921 o - Ap 3 2s 1 BST ++R G 1921 o - O 3 2s 0 GMT ++R G 1922 o - Mar 26 2s 1 BST ++R G 1922 o - O 8 2s 0 GMT ++R G 1923 o - Ap Sun>=16 2s 1 BST ++R G 1923 1924 - S Sun>=16 2s 0 GMT ++R G 1924 o - Ap Sun>=9 2s 1 BST ++R G 1925 1926 - Ap Sun>=16 2s 1 BST ++R G 1925 1938 - O Sun>=2 2s 0 GMT ++R G 1927 o - Ap Sun>=9 2s 1 BST ++R G 1928 1929 - Ap Sun>=16 2s 1 BST ++R G 1930 o - Ap Sun>=9 2s 1 BST ++R G 1931 1932 - Ap Sun>=16 2s 1 BST ++R G 1933 o - Ap Sun>=9 2s 1 BST ++R G 1934 o - Ap Sun>=16 2s 1 BST ++R G 1935 o - Ap Sun>=9 2s 1 BST ++R G 1936 1937 - Ap Sun>=16 2s 1 BST ++R G 1938 o - Ap Sun>=9 2s 1 BST ++R G 1939 o - Ap Sun>=16 2s 1 BST ++R G 1939 o - N Sun>=16 2s 0 GMT ++R G 1940 o - F Sun>=23 2s 1 BST ++R G 1941 o - May Sun>=2 1s 2 BDST ++R G 1941 1943 - Au Sun>=9 1s 1 BST ++R G 1942 1944 - Ap Sun>=2 1s 2 BDST ++R G 1944 o - S Sun>=16 1s 1 BST ++R G 1945 o - Ap M>=2 1s 2 BDST ++R G 1945 o - Jul Sun>=9 1s 1 BST ++R G 1945 1946 - O Sun>=2 2s 0 GMT ++R G 1946 o - Ap Sun>=9 2s 1 BST ++R G 1947 o - Mar 16 2s 1 BST ++R G 1947 o - Ap 13 1s 2 BDST ++R G 1947 o - Au 10 1s 1 BST ++R G 1947 o - N 2 2s 0 GMT ++R G 1948 o - Mar 14 2s 1 BST ++R G 1948 o - O 31 2s 0 GMT ++R G 1949 o - Ap 3 2s 1 BST ++R G 1949 o - O 30 2s 0 GMT ++R G 1950 1952 - Ap Sun>=14 2s 1 BST ++R G 1950 1952 - O Sun>=21 2s 0 GMT ++R G 1953 o - Ap Sun>=16 2s 1 BST ++R G 1953 1960 - O Sun>=2 2s 0 GMT ++R G 1954 o - Ap Sun>=9 2s 1 BST ++R G 1955 1956 - Ap Sun>=16 2s 1 BST ++R G 1957 o - Ap Sun>=9 2s 1 BST ++R G 1958 1959 - Ap Sun>=16 2s 1 BST ++R G 1960 o - Ap Sun>=9 2s 1 BST ++R G 1961 1963 - Mar lastSun 2s 1 BST ++R G 1961 1968 - O Sun>=23 2s 0 GMT ++R G 1964 1967 - Mar Sun>=19 2s 1 BST ++R G 1968 o - F 18 2s 1 BST ++R G 1972 1980 - Mar Sun>=16 2s 1 BST ++R G 1972 1980 - O Sun>=23 2s 0 GMT ++R G 1981 1995 - Mar lastSun 1u 1 BST ++R G 1981 1989 - O Sun>=23 1u 0 GMT ++R G 1990 1995 - O Sun>=22 1u 0 GMT + Z Europe/London -0:1:15 - LMT 1847 D 1 0s +-0 % %s 1968 O 27 ++0 G %s 1968 O 27 + 1 - BST 1971 O 31 2u +-0 % %s 1996 +-0 O GMT/BST ++0 G %s 1996 ++0 E GMT/BST + Li Europe/London Europe/Jersey + Li Europe/London Europe/Guernsey + Li Europe/London Europe/Isle_of_Man +-R & 1971 o - O 31 2u -1 - +-R & 1972 1980 - Mar Sun>=16 2u 0 - +-R & 1972 1980 - O Sun>=23 2u -1 - +-R & 1981 ma - Mar lastSun 1u 0 - +-R & 1981 1989 - O Sun>=23 1u -1 - +-R & 1990 1995 - O Sun>=22 1u -1 - +-R & 1996 ma - O lastSun 1u -1 - ++R IE 1971 o - O 31 2u -1 - ++R IE 1972 1980 - Mar Sun>=16 2u 0 - ++R IE 1972 1980 - O Sun>=23 2u -1 - ++R IE 1981 ma - Mar lastSun 1u 0 - ++R IE 1981 1989 - O Sun>=23 1u -1 - ++R IE 1990 1995 - O Sun>=22 1u -1 - ++R IE 1996 ma - O lastSun 1u -1 - + Z Europe/Dublin -0:25 - LMT 1880 Au 2 + -0:25:21 - DMT 1916 May 21 2s + -0:25:21 1 IST 1916 O 1 2s +-0 % %s 1921 D 6 +-0 % GMT/IST 1940 F 25 2s ++0 G %s 1921 D 6 ++0 G GMT/IST 1940 F 25 2s + 0 1 IST 1946 O 6 2s + 0 - GMT 1947 Mar 16 2s + 0 1 IST 1947 N 2 2s + 0 - GMT 1948 Ap 18 2s +-0 % GMT/IST 1968 O 27 +-1 & IST/GMT +-R O 1977 1980 - Ap Sun>=1 1u 1 S +-R O 1977 o - S lastSun 1u 0 - +-R O 1978 o - O 1 1u 0 - +-R O 1979 1995 - S lastSun 1u 0 - +-R O 1981 ma - Mar lastSun 1u 1 S +-R O 1996 ma - O lastSun 1u 0 - +-R ' 1977 1980 - Ap Sun>=1 1s 1 S +-R ' 1977 o - S lastSun 1s 0 - +-R ' 1978 o - O 1 1s 0 - +-R ' 1979 1995 - S lastSun 1s 0 - +-R ' 1981 ma - Mar lastSun 1s 1 S +-R ' 1996 ma - O lastSun 1s 0 - +-R ( 1916 o - Ap 30 23 1 S +-R ( 1916 o - O 1 1 0 - +-R ( 1917 1918 - Ap M>=15 2s 1 S +-R ( 1917 1918 - S M>=15 2s 0 - +-R ( 1940 o - Ap 1 2s 1 S +-R ( 1942 o - N 2 2s 0 - +-R ( 1943 o - Mar 29 2s 1 S +-R ( 1943 o - O 4 2s 0 - +-R ( 1944 1945 - Ap M>=1 2s 1 S +-R ( 1944 o - O 2 2s 0 - +-R ( 1945 o - S 16 2s 0 - +-R ( 1977 1980 - Ap Sun>=1 2s 1 S +-R ( 1977 o - S lastSun 2s 0 - +-R ( 1978 o - O 1 2s 0 - +-R ( 1979 1995 - S lastSun 2s 0 - +-R ( 1981 ma - Mar lastSun 2s 1 S +-R ( 1996 ma - O lastSun 2s 0 - +-R W 1977 1980 - Ap Sun>=1 0 1 S +-R W 1977 o - S lastSun 0 0 - +-R W 1978 o - O 1 0 0 - +-R W 1979 1995 - S lastSun 0 0 - +-R W 1981 ma - Mar lastSun 0 1 S +-R W 1996 ma - O lastSun 0 0 - +-R M 1917 o - Jul 1 23 1 MST +-R M 1917 o - D 28 0 0 MMT +-R M 1918 o - May 31 22 2 MDST +-R M 1918 o - S 16 1 1 MST +-R M 1919 o - May 31 23 2 MDST +-R M 1919 o - Jul 1 0u 1 MSD +-R M 1919 o - Au 16 0 0 MSK +-R M 1921 o - F 14 23 1 MSD +-R M 1921 o - Mar 20 23 2 +05 +-R M 1921 o - S 1 0 1 MSD +-R M 1921 o - O 1 0 0 - +-R M 1981 1984 - Ap 1 0 1 S +-R M 1981 1983 - O 1 0 0 - +-R M 1984 1995 - S lastSun 2s 0 - +-R M 1985 2010 - Mar lastSun 2s 1 S +-R M 1996 2010 - O lastSun 2s 0 - +-Z WET 0 O WE%sT +-Z CET 1 ( CE%sT +-Z MET 1 ( ME%sT +-Z EET 2 O EE%sT +-R ) 1940 o - Jun 16 0 1 S +-R ) 1942 o - N 2 3 0 - +-R ) 1943 o - Mar 29 2 1 S +-R ) 1943 o - Ap 10 3 0 - +-R ) 1974 o - May 4 0 1 S +-R ) 1974 o - O 2 0 0 - +-R ) 1975 o - May 1 0 1 S +-R ) 1975 o - O 2 0 0 - +-R ) 1976 o - May 2 0 1 S +-R ) 1976 o - O 3 0 0 - +-R ) 1977 o - May 8 0 1 S +-R ) 1977 o - O 2 0 0 - +-R ) 1978 o - May 6 0 1 S +-R ) 1978 o - O 1 0 0 - +-R ) 1979 o - May 5 0 1 S +-R ) 1979 o - S 30 0 0 - +-R ) 1980 o - May 3 0 1 S +-R ) 1980 o - O 4 0 0 - +-R ) 1981 o - Ap 26 0 1 S +-R ) 1981 o - S 27 0 0 - +-R ) 1982 o - May 2 0 1 S +-R ) 1982 o - O 3 0 0 - +-R ) 1983 o - Ap 18 0 1 S +-R ) 1983 o - O 1 0 0 - +-R ) 1984 o - Ap 1 0 1 S ++0 G GMT/IST 1968 O 27 ++1 IE IST/GMT ++R E 1977 1980 - Ap Sun>=1 1u 1 S ++R E 1977 o - S lastSun 1u 0 - ++R E 1978 o - O 1 1u 0 - ++R E 1979 1995 - S lastSun 1u 0 - ++R E 1981 ma - Mar lastSun 1u 1 S ++R E 1996 ma - O lastSun 1u 0 - ++R W- 1977 1980 - Ap Sun>=1 1s 1 S ++R W- 1977 o - S lastSun 1s 0 - ++R W- 1978 o - O 1 1s 0 - ++R W- 1979 1995 - S lastSun 1s 0 - ++R W- 1981 ma - Mar lastSun 1s 1 S ++R W- 1996 ma - O lastSun 1s 0 - ++R c 1916 o - Ap 30 23 1 S ++R c 1916 o - O 1 1 0 - ++R c 1917 1918 - Ap M>=15 2s 1 S ++R c 1917 1918 - S M>=15 2s 0 - ++R c 1940 o - Ap 1 2s 1 S ++R c 1942 o - N 2 2s 0 - ++R c 1943 o - Mar 29 2s 1 S ++R c 1943 o - O 4 2s 0 - ++R c 1944 1945 - Ap M>=1 2s 1 S ++R c 1944 o - O 2 2s 0 - ++R c 1945 o - S 16 2s 0 - ++R c 1977 1980 - Ap Sun>=1 2s 1 S ++R c 1977 o - S lastSun 2s 0 - ++R c 1978 o - O 1 2s 0 - ++R c 1979 1995 - S lastSun 2s 0 - ++R c 1981 ma - Mar lastSun 2s 1 S ++R c 1996 ma - O lastSun 2s 0 - ++R e 1977 1980 - Ap Sun>=1 0 1 S ++R e 1977 o - S lastSun 0 0 - ++R e 1978 o - O 1 0 0 - ++R e 1979 1995 - S lastSun 0 0 - ++R e 1981 ma - Mar lastSun 0 1 S ++R e 1996 ma - O lastSun 0 0 - ++R R 1917 o - Jul 1 23 1 MST ++R R 1917 o - D 28 0 0 MMT ++R R 1918 o - May 31 22 2 MDST ++R R 1918 o - S 16 1 1 MST ++R R 1919 o - May 31 23 2 MDST ++R R 1919 o - Jul 1 0u 1 MSD ++R R 1919 o - Au 16 0 0 MSK ++R R 1921 o - F 14 23 1 MSD ++R R 1921 o - Mar 20 23 2 +05 ++R R 1921 o - S 1 0 1 MSD ++R R 1921 o - O 1 0 0 - ++R R 1981 1984 - Ap 1 0 1 S ++R R 1981 1983 - O 1 0 0 - ++R R 1984 1995 - S lastSun 2s 0 - ++R R 1985 2010 - Mar lastSun 2s 1 S ++R R 1996 2010 - O lastSun 2s 0 - ++Z WET 0 E WE%sT ++Z CET 1 c CE%sT ++Z MET 1 c ME%sT ++Z EET 2 E EE%sT ++R q 1940 o - Jun 16 0 1 S ++R q 1942 o - N 2 3 0 - ++R q 1943 o - Mar 29 2 1 S ++R q 1943 o - Ap 10 3 0 - ++R q 1974 o - May 4 0 1 S ++R q 1974 o - O 2 0 0 - ++R q 1975 o - May 1 0 1 S ++R q 1975 o - O 2 0 0 - ++R q 1976 o - May 2 0 1 S ++R q 1976 o - O 3 0 0 - ++R q 1977 o - May 8 0 1 S ++R q 1977 o - O 2 0 0 - ++R q 1978 o - May 6 0 1 S ++R q 1978 o - O 1 0 0 - ++R q 1979 o - May 5 0 1 S ++R q 1979 o - S 30 0 0 - ++R q 1980 o - May 3 0 1 S ++R q 1980 o - O 4 0 0 - ++R q 1981 o - Ap 26 0 1 S ++R q 1981 o - S 27 0 0 - ++R q 1982 o - May 2 0 1 S ++R q 1982 o - O 3 0 0 - ++R q 1983 o - Ap 18 0 1 S ++R q 1983 o - O 1 0 0 - ++R q 1984 o - Ap 1 0 1 S + Z Europe/Tirane 1:19:20 - LMT 1914 + 1 - CET 1940 Jun 16 +-1 ) CE%sT 1984 Jul +-1 O CE%sT ++1 q CE%sT 1984 Jul ++1 E CE%sT + Z Europe/Andorra 0:6:4 - LMT 1901 + 0 - WET 1946 S 30 + 1 - CET 1985 Mar 31 2 +-1 O CE%sT +-R * 1920 o - Ap 5 2s 1 S +-R * 1920 o - S 13 2s 0 - +-R * 1946 o - Ap 14 2s 1 S +-R * 1946 1948 - O Sun>=1 2s 0 - +-R * 1947 o - Ap 6 2s 1 S +-R * 1948 o - Ap 18 2s 1 S +-R * 1980 o - Ap 6 0 1 S +-R * 1980 o - S 28 0 0 - ++1 E CE%sT ++R a 1920 o - Ap 5 2s 1 S ++R a 1920 o - S 13 2s 0 - ++R a 1946 o - Ap 14 2s 1 S ++R a 1946 1948 - O Sun>=1 2s 0 - ++R a 1947 o - Ap 6 2s 1 S ++R a 1948 o - Ap 18 2s 1 S ++R a 1980 o - Ap 6 0 1 S ++R a 1980 o - S 28 0 0 - + Z Europe/Vienna 1:5:21 - LMT 1893 Ap +-1 ( CE%sT 1920 +-1 * CE%sT 1940 Ap 1 2s +-1 ( CE%sT 1945 Ap 2 2s ++1 c CE%sT 1920 ++1 a CE%sT 1940 Ap 1 2s ++1 c CE%sT 1945 Ap 2 2s + 1 1 CEST 1945 Ap 12 2s + 1 - CET 1946 +-1 * CE%sT 1981 +-1 O CE%sT ++1 a CE%sT 1981 ++1 E CE%sT + Z Europe/Minsk 1:50:16 - LMT 1880 + 1:50 - MMT 1924 May 2 + 2 - EET 1930 Jun 21 + 3 - MSK 1941 Jun 28 +-1 ( CE%sT 1944 Jul 3 +-3 M MSK/MSD 1990 ++1 c CE%sT 1944 Jul 3 ++3 R MSK/MSD 1990 + 3 - MSK 1991 Mar 31 2s +-2 M EE%sT 2011 Mar 27 2s ++2 R EE%sT 2011 Mar 27 2s + 3 - +03 +-R + 1918 o - Mar 9 0s 1 S +-R + 1918 1919 - O Sat>=1 23s 0 - +-R + 1919 o - Mar 1 23s 1 S +-R + 1920 o - F 14 23s 1 S +-R + 1920 o - O 23 23s 0 - +-R + 1921 o - Mar 14 23s 1 S +-R + 1921 o - O 25 23s 0 - +-R + 1922 o - Mar 25 23s 1 S +-R + 1922 1927 - O Sat>=1 23s 0 - +-R + 1923 o - Ap 21 23s 1 S +-R + 1924 o - Mar 29 23s 1 S +-R + 1925 o - Ap 4 23s 1 S +-R + 1926 o - Ap 17 23s 1 S +-R + 1927 o - Ap 9 23s 1 S +-R + 1928 o - Ap 14 23s 1 S +-R + 1928 1938 - O Sun>=2 2s 0 - +-R + 1929 o - Ap 21 2s 1 S +-R + 1930 o - Ap 13 2s 1 S +-R + 1931 o - Ap 19 2s 1 S +-R + 1932 o - Ap 3 2s 1 S +-R + 1933 o - Mar 26 2s 1 S +-R + 1934 o - Ap 8 2s 1 S +-R + 1935 o - Mar 31 2s 1 S +-R + 1936 o - Ap 19 2s 1 S +-R + 1937 o - Ap 4 2s 1 S +-R + 1938 o - Mar 27 2s 1 S +-R + 1939 o - Ap 16 2s 1 S +-R + 1939 o - N 19 2s 0 - +-R + 1940 o - F 25 2s 1 S +-R + 1944 o - S 17 2s 0 - +-R + 1945 o - Ap 2 2s 1 S +-R + 1945 o - S 16 2s 0 - +-R + 1946 o - May 19 2s 1 S +-R + 1946 o - O 7 2s 0 - ++R b 1918 o - Mar 9 0s 1 S ++R b 1918 1919 - O Sat>=1 23s 0 - ++R b 1919 o - Mar 1 23s 1 S ++R b 1920 o - F 14 23s 1 S ++R b 1920 o - O 23 23s 0 - ++R b 1921 o - Mar 14 23s 1 S ++R b 1921 o - O 25 23s 0 - ++R b 1922 o - Mar 25 23s 1 S ++R b 1922 1927 - O Sat>=1 23s 0 - ++R b 1923 o - Ap 21 23s 1 S ++R b 1924 o - Mar 29 23s 1 S ++R b 1925 o - Ap 4 23s 1 S ++R b 1926 o - Ap 17 23s 1 S ++R b 1927 o - Ap 9 23s 1 S ++R b 1928 o - Ap 14 23s 1 S ++R b 1928 1938 - O Sun>=2 2s 0 - ++R b 1929 o - Ap 21 2s 1 S ++R b 1930 o - Ap 13 2s 1 S ++R b 1931 o - Ap 19 2s 1 S ++R b 1932 o - Ap 3 2s 1 S ++R b 1933 o - Mar 26 2s 1 S ++R b 1934 o - Ap 8 2s 1 S ++R b 1935 o - Mar 31 2s 1 S ++R b 1936 o - Ap 19 2s 1 S ++R b 1937 o - Ap 4 2s 1 S ++R b 1938 o - Mar 27 2s 1 S ++R b 1939 o - Ap 16 2s 1 S ++R b 1939 o - N 19 2s 0 - ++R b 1940 o - F 25 2s 1 S ++R b 1944 o - S 17 2s 0 - ++R b 1945 o - Ap 2 2s 1 S ++R b 1945 o - S 16 2s 0 - ++R b 1946 o - May 19 2s 1 S ++R b 1946 o - O 7 2s 0 - + Z Europe/Brussels 0:17:30 - LMT 1880 + 0:17:30 - BMT 1892 May 1 12 + 0 - WET 1914 N 8 + 1 - CET 1916 May +-1 ( CE%sT 1918 N 11 11u +-0 + WE%sT 1940 May 20 2s +-1 ( CE%sT 1944 S 3 +-1 + CE%sT 1977 +-1 O CE%sT +-R , 1979 o - Mar 31 23 1 S +-R , 1979 o - O 1 1 0 - +-R , 1980 1982 - Ap Sat>=1 23 1 S +-R , 1980 o - S 29 1 0 - +-R , 1981 o - S 27 2 0 - ++1 c CE%sT 1918 N 11 11u ++0 b WE%sT 1940 May 20 2s ++1 c CE%sT 1944 S 3 ++1 b CE%sT 1977 ++1 E CE%sT ++R BG 1979 o - Mar 31 23 1 S ++R BG 1979 o - O 1 1 0 - ++R BG 1980 1982 - Ap Sat>=1 23 1 S ++R BG 1980 o - S 29 1 0 - ++R BG 1981 o - S 27 2 0 - + Z Europe/Sofia 1:33:16 - LMT 1880 + 1:56:56 - IMT 1894 N 30 + 2 - EET 1942 N 2 3 +-1 ( CE%sT 1945 ++1 c CE%sT 1945 + 1 - CET 1945 Ap 2 3 + 2 - EET 1979 Mar 31 23 +-2 , EE%sT 1982 S 26 3 +-2 ( EE%sT 1991 +-2 W EE%sT 1997 +-2 O EE%sT +-R . 1945 o - Ap M>=1 2s 1 S +-R . 1945 o - O 1 2s 0 - +-R . 1946 o - May 6 2s 1 S +-R . 1946 1949 - O Sun>=1 2s 0 - +-R . 1947 1948 - Ap Sun>=15 2s 1 S +-R . 1949 o - Ap 9 2s 1 S ++2 BG EE%sT 1982 S 26 3 ++2 c EE%sT 1991 ++2 e EE%sT 1997 ++2 E EE%sT ++R CZ 1945 o - Ap M>=1 2s 1 S ++R CZ 1945 o - O 1 2s 0 - ++R CZ 1946 o - May 6 2s 1 S ++R CZ 1946 1949 - O Sun>=1 2s 0 - ++R CZ 1947 1948 - Ap Sun>=15 2s 1 S ++R CZ 1949 o - Ap 9 2s 1 S + Z Europe/Prague 0:57:44 - LMT 1850 + 0:57:44 - PMT 1891 O +-1 ( CE%sT 1945 May 9 +-1 . CE%sT 1946 D 1 3 ++1 c CE%sT 1945 May 9 ++1 CZ CE%sT 1946 D 1 3 + 1 -1 GMT 1947 F 23 2 +-1 . CE%sT 1979 +-1 O CE%sT +-R / 1916 o - May 14 23 1 S +-R / 1916 o - S 30 23 0 - +-R / 1940 o - May 15 0 1 S +-R / 1945 o - Ap 2 2s 1 S +-R / 1945 o - Au 15 2s 0 - +-R / 1946 o - May 1 2s 1 S +-R / 1946 o - S 1 2s 0 - +-R / 1947 o - May 4 2s 1 S +-R / 1947 o - Au 10 2s 0 - +-R / 1948 o - May 9 2s 1 S +-R / 1948 o - Au 8 2s 0 - ++1 CZ CE%sT 1979 ++1 E CE%sT ++R D 1916 o - May 14 23 1 S ++R D 1916 o - S 30 23 0 - ++R D 1940 o - May 15 0 1 S ++R D 1945 o - Ap 2 2s 1 S ++R D 1945 o - Au 15 2s 0 - ++R D 1946 o - May 1 2s 1 S ++R D 1946 o - S 1 2s 0 - ++R D 1947 o - May 4 2s 1 S ++R D 1947 o - Au 10 2s 0 - ++R D 1948 o - May 9 2s 1 S ++R D 1948 o - Au 8 2s 0 - + Z Europe/Copenhagen 0:50:20 - LMT 1890 + 0:50:20 - CMT 1894 +-1 / CE%sT 1942 N 2 2s +-1 ( CE%sT 1945 Ap 2 2 +-1 / CE%sT 1980 +-1 O CE%sT ++1 D CE%sT 1942 N 2 2s ++1 c CE%sT 1945 Ap 2 2 ++1 D CE%sT 1980 ++1 E CE%sT + Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11 + 0 - WET 1981 +-0 O WE%sT +-R : 1991 1992 - Mar lastSun 2 1 D +-R : 1991 1992 - S lastSun 2 0 S +-R : 1993 2006 - Ap Sun>=1 2 1 D +-R : 1993 2006 - O lastSun 2 0 S +-R : 2007 ma - Mar Sun>=8 2 1 D +-R : 2007 ma - N Sun>=1 2 0 S ++0 E WE%sT ++R Th 1991 1992 - Mar lastSun 2 1 D ++R Th 1991 1992 - S lastSun 2 0 S ++R Th 1993 2006 - Ap Sun>=1 2 1 D ++R Th 1993 2006 - O lastSun 2 0 S ++R Th 2007 ma - Mar Sun>=8 2 1 D ++R Th 2007 ma - N Sun>=1 2 0 S + Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 + -3 - -03 1980 Ap 6 2 +--3 O -03/-02 1996 ++-3 E -03/-02 1996 + 0 - GMT + Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 + -2 - -02 1980 Ap 6 2 +--2 ( -02/-01 1981 Mar 29 +--1 O -01/+00 ++-2 c -02/-01 1981 Mar 29 ++-1 E -01/+00 + Z America/Godthab -3:26:56 - LMT 1916 Jul 28 + -3 - -03 1980 Ap 6 2 +--3 O -03/-02 ++-3 E -03/-02 + Z America/Thule -4:35:8 - LMT 1916 Jul 28 +--4 : A%sT ++-4 Th A%sT + Z Europe/Tallinn 1:39 - LMT 1880 + 1:39 - TMT 1918 F +-1 ( CE%sT 1919 Jul ++1 c CE%sT 1919 Jul + 1:39 - TMT 1921 May + 2 - EET 1940 Au 6 + 3 - MSK 1941 S 15 +-1 ( CE%sT 1944 S 22 +-3 M MSK/MSD 1989 Mar 26 2s ++1 c CE%sT 1944 S 22 ++3 R MSK/MSD 1989 Mar 26 2s + 2 1 EEST 1989 S 24 2s +-2 ( EE%sT 1998 S 22 +-2 O EE%sT 1999 O 31 4 ++2 c EE%sT 1998 S 22 ++2 E EE%sT 1999 O 31 4 + 2 - EET 2002 F 21 +-2 O EE%sT +-R ; 1942 o - Ap 2 24 1 S +-R ; 1942 o - O 4 1 0 - +-R ; 1981 1982 - Mar lastSun 2 1 S +-R ; 1981 1982 - S lastSun 3 0 - ++2 E EE%sT ++R FI 1942 o - Ap 2 24 1 S ++R FI 1942 o - O 4 1 0 - ++R FI 1981 1982 - Mar lastSun 2 1 S ++R FI 1981 1982 - S lastSun 3 0 - + Z Europe/Helsinki 1:39:49 - LMT 1878 May 31 + 1:39:49 - HMT 1921 May +-2 ; EE%sT 1983 +-2 O EE%sT ++2 FI EE%sT 1983 ++2 E EE%sT + Li Europe/Helsinki Europe/Mariehamn +-R < 1916 o - Jun 14 23s 1 S +-R < 1916 1919 - O Sun>=1 23s 0 - +-R < 1917 o - Mar 24 23s 1 S +-R < 1918 o - Mar 9 23s 1 S +-R < 1919 o - Mar 1 23s 1 S +-R < 1920 o - F 14 23s 1 S +-R < 1920 o - O 23 23s 0 - +-R < 1921 o - Mar 14 23s 1 S +-R < 1921 o - O 25 23s 0 - +-R < 1922 o - Mar 25 23s 1 S +-R < 1922 1938 - O Sat>=1 23s 0 - +-R < 1923 o - May 26 23s 1 S +-R < 1924 o - Mar 29 23s 1 S +-R < 1925 o - Ap 4 23s 1 S +-R < 1926 o - Ap 17 23s 1 S +-R < 1927 o - Ap 9 23s 1 S +-R < 1928 o - Ap 14 23s 1 S +-R < 1929 o - Ap 20 23s 1 S +-R < 1930 o - Ap 12 23s 1 S +-R < 1931 o - Ap 18 23s 1 S +-R < 1932 o - Ap 2 23s 1 S +-R < 1933 o - Mar 25 23s 1 S +-R < 1934 o - Ap 7 23s 1 S +-R < 1935 o - Mar 30 23s 1 S +-R < 1936 o - Ap 18 23s 1 S +-R < 1937 o - Ap 3 23s 1 S +-R < 1938 o - Mar 26 23s 1 S +-R < 1939 o - Ap 15 23s 1 S +-R < 1939 o - N 18 23s 0 - +-R < 1940 o - F 25 2 1 S +-R < 1941 o - May 5 0 2 M +-R < 1941 o - O 6 0 1 S +-R < 1942 o - Mar 9 0 2 M +-R < 1942 o - N 2 3 1 S +-R < 1943 o - Mar 29 2 2 M +-R < 1943 o - O 4 3 1 S +-R < 1944 o - Ap 3 2 2 M +-R < 1944 o - O 8 1 1 S +-R < 1945 o - Ap 2 2 2 M +-R < 1945 o - S 16 3 0 - +-R < 1976 o - Mar 28 1 1 S +-R < 1976 o - S 26 1 0 - ++R F 1916 o - Jun 14 23s 1 S ++R F 1916 1919 - O Sun>=1 23s 0 - ++R F 1917 o - Mar 24 23s 1 S ++R F 1918 o - Mar 9 23s 1 S ++R F 1919 o - Mar 1 23s 1 S ++R F 1920 o - F 14 23s 1 S ++R F 1920 o - O 23 23s 0 - ++R F 1921 o - Mar 14 23s 1 S ++R F 1921 o - O 25 23s 0 - ++R F 1922 o - Mar 25 23s 1 S ++R F 1922 1938 - O Sat>=1 23s 0 - ++R F 1923 o - May 26 23s 1 S ++R F 1924 o - Mar 29 23s 1 S ++R F 1925 o - Ap 4 23s 1 S ++R F 1926 o - Ap 17 23s 1 S ++R F 1927 o - Ap 9 23s 1 S ++R F 1928 o - Ap 14 23s 1 S ++R F 1929 o - Ap 20 23s 1 S ++R F 1930 o - Ap 12 23s 1 S ++R F 1931 o - Ap 18 23s 1 S ++R F 1932 o - Ap 2 23s 1 S ++R F 1933 o - Mar 25 23s 1 S ++R F 1934 o - Ap 7 23s 1 S ++R F 1935 o - Mar 30 23s 1 S ++R F 1936 o - Ap 18 23s 1 S ++R F 1937 o - Ap 3 23s 1 S ++R F 1938 o - Mar 26 23s 1 S ++R F 1939 o - Ap 15 23s 1 S ++R F 1939 o - N 18 23s 0 - ++R F 1940 o - F 25 2 1 S ++R F 1941 o - May 5 0 2 M ++R F 1941 o - O 6 0 1 S ++R F 1942 o - Mar 9 0 2 M ++R F 1942 o - N 2 3 1 S ++R F 1943 o - Mar 29 2 2 M ++R F 1943 o - O 4 3 1 S ++R F 1944 o - Ap 3 2 2 M ++R F 1944 o - O 8 1 1 S ++R F 1945 o - Ap 2 2 2 M ++R F 1945 o - S 16 3 0 - ++R F 1976 o - Mar 28 1 1 S ++R F 1976 o - S 26 1 0 - + Z Europe/Paris 0:9:21 - LMT 1891 Mar 15 0:1 + 0:9:21 - PMT 1911 Mar 11 0:1 +-0 < WE%sT 1940 Jun 14 23 +-1 ( CE%sT 1944 Au 25 +-0 < WE%sT 1945 S 16 3 +-1 < CE%sT 1977 +-1 O CE%sT +-R = 1946 o - Ap 14 2s 1 S +-R = 1946 o - O 7 2s 0 - +-R = 1947 1949 - O Sun>=1 2s 0 - +-R = 1947 o - Ap 6 3s 1 S +-R = 1947 o - May 11 2s 2 M +-R = 1947 o - Jun 29 3 1 S +-R = 1948 o - Ap 18 2s 1 S +-R = 1949 o - Ap 10 2s 1 S +-R > 1945 o - May 24 2 2 M +-R > 1945 o - S 24 3 1 S +-R > 1945 o - N 18 2s 0 - ++0 F WE%sT 1940 Jun 14 23 ++1 c CE%sT 1944 Au 25 ++0 F WE%sT 1945 S 16 3 ++1 F CE%sT 1977 ++1 E CE%sT ++R DE 1946 o - Ap 14 2s 1 S ++R DE 1946 o - O 7 2s 0 - ++R DE 1947 1949 - O Sun>=1 2s 0 - ++R DE 1947 o - Ap 6 3s 1 S ++R DE 1947 o - May 11 2s 2 M ++R DE 1947 o - Jun 29 3 1 S ++R DE 1948 o - Ap 18 2s 1 S ++R DE 1949 o - Ap 10 2s 1 S ++R So 1945 o - May 24 2 2 M ++R So 1945 o - S 24 3 1 S ++R So 1945 o - N 18 2s 0 - + Z Europe/Berlin 0:53:28 - LMT 1893 Ap +-1 ( CE%sT 1945 May 24 2 +-1 > CE%sT 1946 +-1 = CE%sT 1980 +-1 O CE%sT ++1 c CE%sT 1945 May 24 2 ++1 So CE%sT 1946 ++1 DE CE%sT 1980 ++1 E CE%sT + Li Europe/Zurich Europe/Busingen + Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2 0s +-0 % %s 1957 Ap 14 2 ++0 G %s 1957 Ap 14 2 + 1 - CET 1982 +-1 O CE%sT +-R ? 1932 o - Jul 7 0 1 S +-R ? 1932 o - S 1 0 0 - +-R ? 1941 o - Ap 7 0 1 S +-R ? 1942 o - N 2 3 0 - +-R ? 1943 o - Mar 30 0 1 S +-R ? 1943 o - O 4 0 0 - +-R ? 1952 o - Jul 1 0 1 S +-R ? 1952 o - N 2 0 0 - +-R ? 1975 o - Ap 12 0s 1 S +-R ? 1975 o - N 26 0s 0 - +-R ? 1976 o - Ap 11 2s 1 S +-R ? 1976 o - O 10 2s 0 - +-R ? 1977 1978 - Ap Sun>=1 2s 1 S +-R ? 1977 o - S 26 2s 0 - +-R ? 1978 o - S 24 4 0 - +-R ? 1979 o - Ap 1 9 1 S +-R ? 1979 o - S 29 2 0 - +-R ? 1980 o - Ap 1 0 1 S +-R ? 1980 o - S 28 0 0 - ++1 E CE%sT ++R g 1932 o - Jul 7 0 1 S ++R g 1932 o - S 1 0 0 - ++R g 1941 o - Ap 7 0 1 S ++R g 1942 o - N 2 3 0 - ++R g 1943 o - Mar 30 0 1 S ++R g 1943 o - O 4 0 0 - ++R g 1952 o - Jul 1 0 1 S ++R g 1952 o - N 2 0 0 - ++R g 1975 o - Ap 12 0s 1 S ++R g 1975 o - N 26 0s 0 - ++R g 1976 o - Ap 11 2s 1 S ++R g 1976 o - O 10 2s 0 - ++R g 1977 1978 - Ap Sun>=1 2s 1 S ++R g 1977 o - S 26 2s 0 - ++R g 1978 o - S 24 4 0 - ++R g 1979 o - Ap 1 9 1 S ++R g 1979 o - S 29 2 0 - ++R g 1980 o - Ap 1 0 1 S ++R g 1980 o - S 28 0 0 - + Z Europe/Athens 1:34:52 - LMT 1895 S 14 + 1:34:52 - AMT 1916 Jul 28 0:1 +-2 ? EE%sT 1941 Ap 30 +-1 ? CE%sT 1944 Ap 4 +-2 ? EE%sT 1981 +-2 O EE%sT +-R @ 1918 o - Ap 1 3 1 S +-R @ 1918 o - S 16 3 0 - +-R @ 1919 o - Ap 15 3 1 S +-R @ 1919 o - N 24 3 0 - +-R @ 1945 o - May 1 23 1 S +-R @ 1945 o - N 1 0 0 - +-R @ 1946 o - Mar 31 2s 1 S +-R @ 1946 1949 - O Sun>=1 2s 0 - +-R @ 1947 1949 - Ap Sun>=4 2s 1 S +-R @ 1950 o - Ap 17 2s 1 S +-R @ 1950 o - O 23 2s 0 - +-R @ 1954 1955 - May 23 0 1 S +-R @ 1954 1955 - O 3 0 0 - +-R @ 1956 o - Jun Sun>=1 0 1 S +-R @ 1956 o - S lastSun 0 0 - +-R @ 1957 o - Jun Sun>=1 1 1 S +-R @ 1957 o - S lastSun 3 0 - +-R @ 1980 o - Ap 6 1 1 S ++2 g EE%sT 1941 Ap 30 ++1 g CE%sT 1944 Ap 4 ++2 g EE%sT 1981 ++2 E EE%sT ++R h 1918 o - Ap 1 3 1 S ++R h 1918 o - S 16 3 0 - ++R h 1919 o - Ap 15 3 1 S ++R h 1919 o - N 24 3 0 - ++R h 1945 o - May 1 23 1 S ++R h 1945 o - N 1 0 0 - ++R h 1946 o - Mar 31 2s 1 S ++R h 1946 1949 - O Sun>=1 2s 0 - ++R h 1947 1949 - Ap Sun>=4 2s 1 S ++R h 1950 o - Ap 17 2s 1 S ++R h 1950 o - O 23 2s 0 - ++R h 1954 1955 - May 23 0 1 S ++R h 1954 1955 - O 3 0 0 - ++R h 1956 o - Jun Sun>=1 0 1 S ++R h 1956 o - S lastSun 0 0 - ++R h 1957 o - Jun Sun>=1 1 1 S ++R h 1957 o - S lastSun 3 0 - ++R h 1980 o - Ap 6 1 1 S + Z Europe/Budapest 1:16:20 - LMT 1890 O +-1 ( CE%sT 1918 +-1 @ CE%sT 1941 Ap 8 +-1 ( CE%sT 1945 +-1 @ CE%sT 1980 S 28 2s +-1 O CE%sT +-R [ 1917 1919 - F 19 23 1 - +-R [ 1917 o - O 21 1 0 - +-R [ 1918 1919 - N 16 1 0 - +-R [ 1921 o - Mar 19 23 1 - +-R [ 1921 o - Jun 23 1 0 - +-R [ 1939 o - Ap 29 23 1 - +-R [ 1939 o - O 29 2 0 - +-R [ 1940 o - F 25 2 1 - +-R [ 1940 1941 - N Sun>=2 1s 0 - +-R [ 1941 1942 - Mar Sun>=2 1s 1 - +-R [ 1943 1946 - Mar Sun>=1 1s 1 - +-R [ 1942 1948 - O Sun>=22 1s 0 - +-R [ 1947 1967 - Ap Sun>=1 1s 1 - +-R [ 1949 o - O 30 1s 0 - +-R [ 1950 1966 - O Sun>=22 1s 0 - +-R [ 1967 o - O 29 1s 0 - ++1 c CE%sT 1918 ++1 h CE%sT 1941 Ap 8 ++1 c CE%sT 1945 ++1 h CE%sT 1980 S 28 2s ++1 E CE%sT ++R w 1917 1919 - F 19 23 1 - ++R w 1917 o - O 21 1 0 - ++R w 1918 1919 - N 16 1 0 - ++R w 1921 o - Mar 19 23 1 - ++R w 1921 o - Jun 23 1 0 - ++R w 1939 o - Ap 29 23 1 - ++R w 1939 o - O 29 2 0 - ++R w 1940 o - F 25 2 1 - ++R w 1940 1941 - N Sun>=2 1s 0 - ++R w 1941 1942 - Mar Sun>=2 1s 1 - ++R w 1943 1946 - Mar Sun>=1 1s 1 - ++R w 1942 1948 - O Sun>=22 1s 0 - ++R w 1947 1967 - Ap Sun>=1 1s 1 - ++R w 1949 o - O 30 1s 0 - ++R w 1950 1966 - O Sun>=22 1s 0 - ++R w 1967 o - O 29 1s 0 - + Z Atlantic/Reykjavik -1:28 - LMT 1908 +--1 [ -01/+00 1968 Ap 7 1s ++-1 w -01/+00 1968 Ap 7 1s + 0 - GMT +-R \ 1916 o - Jun 3 24 1 S +-R \ 1916 1917 - S 30 24 0 - +-R \ 1917 o - Mar 31 24 1 S +-R \ 1918 o - Mar 9 24 1 S +-R \ 1918 o - O 6 24 0 - +-R \ 1919 o - Mar 1 24 1 S +-R \ 1919 o - O 4 24 0 - +-R \ 1920 o - Mar 20 24 1 S +-R \ 1920 o - S 18 24 0 - +-R \ 1940 o - Jun 14 24 1 S +-R \ 1942 o - N 2 2s 0 - +-R \ 1943 o - Mar 29 2s 1 S +-R \ 1943 o - O 4 2s 0 - +-R \ 1944 o - Ap 2 2s 1 S +-R \ 1944 o - S 17 2s 0 - +-R \ 1945 o - Ap 2 2 1 S +-R \ 1945 o - S 15 1 0 - +-R \ 1946 o - Mar 17 2s 1 S +-R \ 1946 o - O 6 2s 0 - +-R \ 1947 o - Mar 16 0s 1 S +-R \ 1947 o - O 5 0s 0 - +-R \ 1948 o - F 29 2s 1 S +-R \ 1948 o - O 3 2s 0 - +-R \ 1966 1968 - May Sun>=22 0s 1 S +-R \ 1966 o - S 24 24 0 - +-R \ 1967 1969 - S Sun>=22 0s 0 - +-R \ 1969 o - Jun 1 0s 1 S +-R \ 1970 o - May 31 0s 1 S +-R \ 1970 o - S lastSun 0s 0 - +-R \ 1971 1972 - May Sun>=22 0s 1 S +-R \ 1971 o - S lastSun 0s 0 - +-R \ 1972 o - O 1 0s 0 - +-R \ 1973 o - Jun 3 0s 1 S +-R \ 1973 1974 - S lastSun 0s 0 - +-R \ 1974 o - May 26 0s 1 S +-R \ 1975 o - Jun 1 0s 1 S +-R \ 1975 1977 - S lastSun 0s 0 - +-R \ 1976 o - May 30 0s 1 S +-R \ 1977 1979 - May Sun>=22 0s 1 S +-R \ 1978 o - O 1 0s 0 - +-R \ 1979 o - S 30 0s 0 - ++R I 1916 o - Jun 3 24 1 S ++R I 1916 1917 - S 30 24 0 - ++R I 1917 o - Mar 31 24 1 S ++R I 1918 o - Mar 9 24 1 S ++R I 1918 o - O 6 24 0 - ++R I 1919 o - Mar 1 24 1 S ++R I 1919 o - O 4 24 0 - ++R I 1920 o - Mar 20 24 1 S ++R I 1920 o - S 18 24 0 - ++R I 1940 o - Jun 14 24 1 S ++R I 1942 o - N 2 2s 0 - ++R I 1943 o - Mar 29 2s 1 S ++R I 1943 o - O 4 2s 0 - ++R I 1944 o - Ap 2 2s 1 S ++R I 1944 o - S 17 2s 0 - ++R I 1945 o - Ap 2 2 1 S ++R I 1945 o - S 15 1 0 - ++R I 1946 o - Mar 17 2s 1 S ++R I 1946 o - O 6 2s 0 - ++R I 1947 o - Mar 16 0s 1 S ++R I 1947 o - O 5 0s 0 - ++R I 1948 o - F 29 2s 1 S ++R I 1948 o - O 3 2s 0 - ++R I 1966 1968 - May Sun>=22 0s 1 S ++R I 1966 o - S 24 24 0 - ++R I 1967 1969 - S Sun>=22 0s 0 - ++R I 1969 o - Jun 1 0s 1 S ++R I 1970 o - May 31 0s 1 S ++R I 1970 o - S lastSun 0s 0 - ++R I 1971 1972 - May Sun>=22 0s 1 S ++R I 1971 o - S lastSun 0s 0 - ++R I 1972 o - O 1 0s 0 - ++R I 1973 o - Jun 3 0s 1 S ++R I 1973 1974 - S lastSun 0s 0 - ++R I 1974 o - May 26 0s 1 S ++R I 1975 o - Jun 1 0s 1 S ++R I 1975 1977 - S lastSun 0s 0 - ++R I 1976 o - May 30 0s 1 S ++R I 1977 1979 - May Sun>=22 0s 1 S ++R I 1978 o - O 1 0s 0 - ++R I 1979 o - S 30 0s 0 - + Z Europe/Rome 0:49:56 - LMT 1866 S 22 + 0:49:56 - RMT 1893 O 31 23:49:56 +-1 \ CE%sT 1943 S 10 +-1 ( CE%sT 1944 Jun 4 +-1 \ CE%sT 1980 +-1 O CE%sT ++1 I CE%sT 1943 S 10 ++1 c CE%sT 1944 Jun 4 ++1 I CE%sT 1980 ++1 E CE%sT + Li Europe/Rome Europe/Vatican + Li Europe/Rome Europe/San_Marino +-R ] 1989 1996 - Mar lastSun 2s 1 S +-R ] 1989 1996 - S lastSun 2s 0 - ++R LV 1989 1996 - Mar lastSun 2s 1 S ++R LV 1989 1996 - S lastSun 2s 0 - + Z Europe/Riga 1:36:34 - LMT 1880 + 1:36:34 - RMT 1918 Ap 15 2 + 1:36:34 1 LST 1918 S 16 3 +@@ -1883,13 +1907,13 @@ Z Europe/Riga 1:36:34 - LMT 1880 + 1:36:34 - RMT 1926 May 11 + 2 - EET 1940 Au 5 + 3 - MSK 1941 Jul +-1 ( CE%sT 1944 O 13 +-3 M MSK/MSD 1989 Mar lastSun 2s ++1 c CE%sT 1944 O 13 ++3 R MSK/MSD 1989 Mar lastSun 2s + 2 1 EEST 1989 S lastSun 2s +-2 ] EE%sT 1997 Ja 21 +-2 O EE%sT 2000 F 29 ++2 LV EE%sT 1997 Ja 21 ++2 E EE%sT 2000 F 29 + 2 - EET 2001 Ja 2 +-2 O EE%sT ++2 E EE%sT + Li Europe/Zurich Europe/Vaduz + Z Europe/Vilnius 1:41:16 - LMT 1880 + 1:24 - WMT 1917 +@@ -1898,783 +1922,776 @@ Z Europe/Vilnius 1:41:16 - LMT 1880 + 2 - EET 1920 O 9 + 1 - CET 1940 Au 3 + 3 - MSK 1941 Jun 24 +-1 ( CE%sT 1944 Au +-3 M MSK/MSD 1989 Mar 26 2s +-2 M EE%sT 1991 S 29 2s +-2 ( EE%sT 1998 ++1 c CE%sT 1944 Au ++3 R MSK/MSD 1989 Mar 26 2s ++2 R EE%sT 1991 S 29 2s ++2 c EE%sT 1998 + 2 - EET 1998 Mar 29 1u +-1 O CE%sT 1999 O 31 1u ++1 E CE%sT 1999 O 31 1u + 2 - EET 2003 +-2 O EE%sT +-R ^ 1916 o - May 14 23 1 S +-R ^ 1916 o - O 1 1 0 - +-R ^ 1917 o - Ap 28 23 1 S +-R ^ 1917 o - S 17 1 0 - +-R ^ 1918 o - Ap M>=15 2s 1 S +-R ^ 1918 o - S M>=15 2s 0 - +-R ^ 1919 o - Mar 1 23 1 S +-R ^ 1919 o - O 5 3 0 - +-R ^ 1920 o - F 14 23 1 S +-R ^ 1920 o - O 24 2 0 - +-R ^ 1921 o - Mar 14 23 1 S +-R ^ 1921 o - O 26 2 0 - +-R ^ 1922 o - Mar 25 23 1 S +-R ^ 1922 o - O Sun>=2 1 0 - +-R ^ 1923 o - Ap 21 23 1 S +-R ^ 1923 o - O Sun>=2 2 0 - +-R ^ 1924 o - Mar 29 23 1 S +-R ^ 1924 1928 - O Sun>=2 1 0 - +-R ^ 1925 o - Ap 5 23 1 S +-R ^ 1926 o - Ap 17 23 1 S +-R ^ 1927 o - Ap 9 23 1 S +-R ^ 1928 o - Ap 14 23 1 S +-R ^ 1929 o - Ap 20 23 1 S ++2 E EE%sT ++R LX 1916 o - May 14 23 1 S ++R LX 1916 o - O 1 1 0 - ++R LX 1917 o - Ap 28 23 1 S ++R LX 1917 o - S 17 1 0 - ++R LX 1918 o - Ap M>=15 2s 1 S ++R LX 1918 o - S M>=15 2s 0 - ++R LX 1919 o - Mar 1 23 1 S ++R LX 1919 o - O 5 3 0 - ++R LX 1920 o - F 14 23 1 S ++R LX 1920 o - O 24 2 0 - ++R LX 1921 o - Mar 14 23 1 S ++R LX 1921 o - O 26 2 0 - ++R LX 1922 o - Mar 25 23 1 S ++R LX 1922 o - O Sun>=2 1 0 - ++R LX 1923 o - Ap 21 23 1 S ++R LX 1923 o - O Sun>=2 2 0 - ++R LX 1924 o - Mar 29 23 1 S ++R LX 1924 1928 - O Sun>=2 1 0 - ++R LX 1925 o - Ap 5 23 1 S ++R LX 1926 o - Ap 17 23 1 S ++R LX 1927 o - Ap 9 23 1 S ++R LX 1928 o - Ap 14 23 1 S ++R LX 1929 o - Ap 20 23 1 S + Z Europe/Luxembourg 0:24:36 - LMT 1904 Jun +-1 ^ CE%sT 1918 N 25 +-0 ^ WE%sT 1929 O 6 2s +-0 + WE%sT 1940 May 14 3 +-1 ( WE%sT 1944 S 18 3 +-1 + CE%sT 1977 +-1 O CE%sT +-R _ 1973 o - Mar 31 0s 1 S +-R _ 1973 o - S 29 0s 0 - +-R _ 1974 o - Ap 21 0s 1 S +-R _ 1974 o - S 16 0s 0 - +-R _ 1975 1979 - Ap Sun>=15 2 1 S +-R _ 1975 1980 - S Sun>=15 2 0 - +-R _ 1980 o - Mar 31 2 1 S ++1 LX CE%sT 1918 N 25 ++0 LX WE%sT 1929 O 6 2s ++0 b WE%sT 1940 May 14 3 ++1 c WE%sT 1944 S 18 3 ++1 b CE%sT 1977 ++1 E CE%sT ++R MT 1973 o - Mar 31 0s 1 S ++R MT 1973 o - S 29 0s 0 - ++R MT 1974 o - Ap 21 0s 1 S ++R MT 1974 o - S 16 0s 0 - ++R MT 1975 1979 - Ap Sun>=15 2 1 S ++R MT 1975 1980 - S Sun>=15 2 0 - ++R MT 1980 o - Mar 31 2 1 S + Z Europe/Malta 0:58:4 - LMT 1893 N 2 0s +-1 \ CE%sT 1973 Mar 31 +-1 _ CE%sT 1981 +-1 O CE%sT +-R ` 1997 ma - Mar lastSun 2 1 S +-R ` 1997 ma - O lastSun 3 0 - ++1 I CE%sT 1973 Mar 31 ++1 MT CE%sT 1981 ++1 E CE%sT ++R MD 1997 ma - Mar lastSun 2 1 S ++R MD 1997 ma - O lastSun 3 0 - + Z Europe/Chisinau 1:55:20 - LMT 1880 + 1:55 - CMT 1918 F 15 + 1:44:24 - BMT 1931 Jul 24 +-2 { EE%sT 1940 Au 15 ++2 z EE%sT 1940 Au 15 + 2 1 EEST 1941 Jul 17 +-1 ( CE%sT 1944 Au 24 +-3 M MSK/MSD 1990 May 6 2 +-2 M EE%sT 1992 +-2 W EE%sT 1997 +-2 ` EE%sT ++1 c CE%sT 1944 Au 24 ++3 R MSK/MSD 1990 May 6 2 ++2 R EE%sT 1992 ++2 e EE%sT 1997 ++2 MD EE%sT + Z Europe/Monaco 0:29:32 - LMT 1891 Mar 15 + 0:9:21 - PMT 1911 Mar 11 +-0 < WE%sT 1945 S 16 3 +-1 < CE%sT 1977 +-1 O CE%sT +-R | 1916 o - May 1 0 1 NST +-R | 1916 o - O 1 0 0 AMT +-R | 1917 o - Ap 16 2s 1 NST +-R | 1917 o - S 17 2s 0 AMT +-R | 1918 1921 - Ap M>=1 2s 1 NST +-R | 1918 1921 - S lastM 2s 0 AMT +-R | 1922 o - Mar lastSun 2s 1 NST +-R | 1922 1936 - O Sun>=2 2s 0 AMT +-R | 1923 o - Jun F>=1 2s 1 NST +-R | 1924 o - Mar lastSun 2s 1 NST +-R | 1925 o - Jun F>=1 2s 1 NST +-R | 1926 1931 - May 15 2s 1 NST +-R | 1932 o - May 22 2s 1 NST +-R | 1933 1936 - May 15 2s 1 NST +-R | 1937 o - May 22 2s 1 NST +-R | 1937 o - Jul 1 0 1 S +-R | 1937 1939 - O Sun>=2 2s 0 - +-R | 1938 1939 - May 15 2s 1 S +-R | 1945 o - Ap 2 2s 1 S +-R | 1945 o - S 16 2s 0 - ++0 F WE%sT 1945 S 16 3 ++1 F CE%sT 1977 ++1 E CE%sT ++R N 1916 o - May 1 0 1 NST ++R N 1916 o - O 1 0 0 AMT ++R N 1917 o - Ap 16 2s 1 NST ++R N 1917 o - S 17 2s 0 AMT ++R N 1918 1921 - Ap M>=1 2s 1 NST ++R N 1918 1921 - S lastM 2s 0 AMT ++R N 1922 o - Mar lastSun 2s 1 NST ++R N 1922 1936 - O Sun>=2 2s 0 AMT ++R N 1923 o - Jun F>=1 2s 1 NST ++R N 1924 o - Mar lastSun 2s 1 NST ++R N 1925 o - Jun F>=1 2s 1 NST ++R N 1926 1931 - May 15 2s 1 NST ++R N 1932 o - May 22 2s 1 NST ++R N 1933 1936 - May 15 2s 1 NST ++R N 1937 o - May 22 2s 1 NST ++R N 1937 o - Jul 1 0 1 S ++R N 1937 1939 - O Sun>=2 2s 0 - ++R N 1938 1939 - May 15 2s 1 S ++R N 1945 o - Ap 2 2s 1 S ++R N 1945 o - S 16 2s 0 - + Z Europe/Amsterdam 0:19:32 - LMT 1835 +-0:19:32 | %s 1937 Jul +-0:20 | +0020/+0120 1940 May 16 +-1 ( CE%sT 1945 Ap 2 2 +-1 | CE%sT 1977 +-1 O CE%sT +-R } 1916 o - May 22 1 1 S +-R } 1916 o - S 30 0 0 - +-R } 1945 o - Ap 2 2s 1 S +-R } 1945 o - O 1 2s 0 - +-R } 1959 1964 - Mar Sun>=15 2s 1 S +-R } 1959 1965 - S Sun>=15 2s 0 - +-R } 1965 o - Ap 25 2s 1 S ++0:19:32 N %s 1937 Jul ++0:20 N +0020/+0120 1940 May 16 ++1 c CE%sT 1945 Ap 2 2 ++1 N CE%sT 1977 ++1 E CE%sT ++R NO 1916 o - May 22 1 1 S ++R NO 1916 o - S 30 0 0 - ++R NO 1945 o - Ap 2 2s 1 S ++R NO 1945 o - O 1 2s 0 - ++R NO 1959 1964 - Mar Sun>=15 2s 1 S ++R NO 1959 1965 - S Sun>=15 2s 0 - ++R NO 1965 o - Ap 25 2s 1 S + Z Europe/Oslo 0:43 - LMT 1895 +-1 } CE%sT 1940 Au 10 23 +-1 ( CE%sT 1945 Ap 2 2 +-1 } CE%sT 1980 +-1 O CE%sT ++1 NO CE%sT 1940 Au 10 23 ++1 c CE%sT 1945 Ap 2 2 ++1 NO CE%sT 1980 ++1 E CE%sT + Li Europe/Oslo Arctic/Longyearbyen +-R ~ 1918 1919 - S 16 2s 0 - +-R ~ 1919 o - Ap 15 2s 1 S +-R ~ 1944 o - Ap 3 2s 1 S +-R ~ 1944 o - O 4 2 0 - +-R ~ 1945 o - Ap 29 0 1 S +-R ~ 1945 o - N 1 0 0 - +-R ~ 1946 o - Ap 14 0s 1 S +-R ~ 1946 o - O 7 2s 0 - +-R ~ 1947 o - May 4 2s 1 S +-R ~ 1947 1949 - O Sun>=1 2s 0 - +-R ~ 1948 o - Ap 18 2s 1 S +-R ~ 1949 o - Ap 10 2s 1 S +-R ~ 1957 o - Jun 2 1s 1 S +-R ~ 1957 1958 - S lastSun 1s 0 - +-R ~ 1958 o - Mar 30 1s 1 S +-R ~ 1959 o - May 31 1s 1 S +-R ~ 1959 1961 - O Sun>=1 1s 0 - +-R ~ 1960 o - Ap 3 1s 1 S +-R ~ 1961 1964 - May lastSun 1s 1 S +-R ~ 1962 1964 - S lastSun 1s 0 - ++R O 1918 1919 - S 16 2s 0 - ++R O 1919 o - Ap 15 2s 1 S ++R O 1944 o - Ap 3 2s 1 S ++R O 1944 o - O 4 2 0 - ++R O 1945 o - Ap 29 0 1 S ++R O 1945 o - N 1 0 0 - ++R O 1946 o - Ap 14 0s 1 S ++R O 1946 o - O 7 2s 0 - ++R O 1947 o - May 4 2s 1 S ++R O 1947 1949 - O Sun>=1 2s 0 - ++R O 1948 o - Ap 18 2s 1 S ++R O 1949 o - Ap 10 2s 1 S ++R O 1957 o - Jun 2 1s 1 S ++R O 1957 1958 - S lastSun 1s 0 - ++R O 1958 o - Mar 30 1s 1 S ++R O 1959 o - May 31 1s 1 S ++R O 1959 1961 - O Sun>=1 1s 0 - ++R O 1960 o - Ap 3 1s 1 S ++R O 1961 1964 - May lastSun 1s 1 S ++R O 1962 1964 - S lastSun 1s 0 - + Z Europe/Warsaw 1:24 - LMT 1880 + 1:24 - WMT 1915 Au 5 +-1 ( CE%sT 1918 S 16 3 +-2 ~ EE%sT 1922 Jun +-1 ~ CE%sT 1940 Jun 23 2 +-1 ( CE%sT 1944 O +-1 ~ CE%sT 1977 +-1 ' CE%sT 1988 +-1 O CE%sT +-R AA 1916 o - Jun 17 23 1 S +-R AA 1916 o - N 1 1 0 - +-R AA 1917 o - F 28 23s 1 S +-R AA 1917 1921 - O 14 23s 0 - +-R AA 1918 o - Mar 1 23s 1 S +-R AA 1919 o - F 28 23s 1 S +-R AA 1920 o - F 29 23s 1 S +-R AA 1921 o - F 28 23s 1 S +-R AA 1924 o - Ap 16 23s 1 S +-R AA 1924 o - O 14 23s 0 - +-R AA 1926 o - Ap 17 23s 1 S +-R AA 1926 1929 - O Sat>=1 23s 0 - +-R AA 1927 o - Ap 9 23s 1 S +-R AA 1928 o - Ap 14 23s 1 S +-R AA 1929 o - Ap 20 23s 1 S +-R AA 1931 o - Ap 18 23s 1 S +-R AA 1931 1932 - O Sat>=1 23s 0 - +-R AA 1932 o - Ap 2 23s 1 S +-R AA 1934 o - Ap 7 23s 1 S +-R AA 1934 1938 - O Sat>=1 23s 0 - +-R AA 1935 o - Mar 30 23s 1 S +-R AA 1936 o - Ap 18 23s 1 S +-R AA 1937 o - Ap 3 23s 1 S +-R AA 1938 o - Mar 26 23s 1 S +-R AA 1939 o - Ap 15 23s 1 S +-R AA 1939 o - N 18 23s 0 - +-R AA 1940 o - F 24 23s 1 S +-R AA 1940 1941 - O 5 23s 0 - +-R AA 1941 o - Ap 5 23s 1 S +-R AA 1942 1945 - Mar Sat>=8 23s 1 S +-R AA 1942 o - Ap 25 22s 2 M +-R AA 1942 o - Au 15 22s 1 S +-R AA 1942 1945 - O Sat>=24 23s 0 - +-R AA 1943 o - Ap 17 22s 2 M +-R AA 1943 1945 - Au Sat>=25 22s 1 S +-R AA 1944 1945 - Ap Sat>=21 22s 2 M +-R AA 1946 o - Ap Sat>=1 23s 1 S +-R AA 1946 o - O Sat>=1 23s 0 - +-R AA 1947 1949 - Ap Sun>=1 2s 1 S +-R AA 1947 1949 - O Sun>=1 2s 0 - +-R AA 1951 1965 - Ap Sun>=1 2s 1 S +-R AA 1951 1965 - O Sun>=1 2s 0 - +-R AA 1977 o - Mar 27 0s 1 S +-R AA 1977 o - S 25 0s 0 - +-R AA 1978 1979 - Ap Sun>=1 0s 1 S +-R AA 1978 o - O 1 0s 0 - +-R AA 1979 1982 - S lastSun 1s 0 - +-R AA 1980 o - Mar lastSun 0s 1 S +-R AA 1981 1982 - Mar lastSun 1s 1 S +-R AA 1983 o - Mar lastSun 2s 1 S ++1 c CE%sT 1918 S 16 3 ++2 O EE%sT 1922 Jun ++1 O CE%sT 1940 Jun 23 2 ++1 c CE%sT 1944 O ++1 O CE%sT 1977 ++1 W- CE%sT 1988 ++1 E CE%sT ++R p 1916 o - Jun 17 23 1 S ++R p 1916 o - N 1 1 0 - ++R p 1917 o - F 28 23s 1 S ++R p 1917 1921 - O 14 23s 0 - ++R p 1918 o - Mar 1 23s 1 S ++R p 1919 o - F 28 23s 1 S ++R p 1920 o - F 29 23s 1 S ++R p 1921 o - F 28 23s 1 S ++R p 1924 o - Ap 16 23s 1 S ++R p 1924 o - O 14 23s 0 - ++R p 1926 o - Ap 17 23s 1 S ++R p 1926 1929 - O Sat>=1 23s 0 - ++R p 1927 o - Ap 9 23s 1 S ++R p 1928 o - Ap 14 23s 1 S ++R p 1929 o - Ap 20 23s 1 S ++R p 1931 o - Ap 18 23s 1 S ++R p 1931 1932 - O Sat>=1 23s 0 - ++R p 1932 o - Ap 2 23s 1 S ++R p 1934 o - Ap 7 23s 1 S ++R p 1934 1938 - O Sat>=1 23s 0 - ++R p 1935 o - Mar 30 23s 1 S ++R p 1936 o - Ap 18 23s 1 S ++R p 1937 o - Ap 3 23s 1 S ++R p 1938 o - Mar 26 23s 1 S ++R p 1939 o - Ap 15 23s 1 S ++R p 1939 o - N 18 23s 0 - ++R p 1940 o - F 24 23s 1 S ++R p 1940 1941 - O 5 23s 0 - ++R p 1941 o - Ap 5 23s 1 S ++R p 1942 1945 - Mar Sat>=8 23s 1 S ++R p 1942 o - Ap 25 22s 2 M ++R p 1942 o - Au 15 22s 1 S ++R p 1942 1945 - O Sat>=24 23s 0 - ++R p 1943 o - Ap 17 22s 2 M ++R p 1943 1945 - Au Sat>=25 22s 1 S ++R p 1944 1945 - Ap Sat>=21 22s 2 M ++R p 1946 o - Ap Sat>=1 23s 1 S ++R p 1946 o - O Sat>=1 23s 0 - ++R p 1947 1949 - Ap Sun>=1 2s 1 S ++R p 1947 1949 - O Sun>=1 2s 0 - ++R p 1951 1965 - Ap Sun>=1 2s 1 S ++R p 1951 1965 - O Sun>=1 2s 0 - ++R p 1977 o - Mar 27 0s 1 S ++R p 1977 o - S 25 0s 0 - ++R p 1978 1979 - Ap Sun>=1 0s 1 S ++R p 1978 o - O 1 0s 0 - ++R p 1979 1982 - S lastSun 1s 0 - ++R p 1980 o - Mar lastSun 0s 1 S ++R p 1981 1982 - Mar lastSun 1s 1 S ++R p 1983 o - Mar lastSun 2s 1 S + Z Europe/Lisbon -0:36:45 - LMT 1884 + -0:36:45 - LMT 1912 Ja 1 0u +-0 AA WE%sT 1966 Ap 3 2 ++0 p WE%sT 1966 Ap 3 2 + 1 - CET 1976 S 26 1 +-0 AA WE%sT 1983 S 25 1s +-0 ' WE%sT 1992 S 27 1s +-1 O CE%sT 1996 Mar 31 1u +-0 O WE%sT ++0 p WE%sT 1983 S 25 1s ++0 W- WE%sT 1992 S 27 1s ++1 E CE%sT 1996 Mar 31 1u ++0 E WE%sT + Z Atlantic/Azores -1:42:40 - LMT 1884 + -1:54:32 - HMT 1912 Ja 1 2u +--2 AA -02/-01 1942 Ap 25 22s +--2 AA +00 1942 Au 15 22s +--2 AA -02/-01 1943 Ap 17 22s +--2 AA +00 1943 Au 28 22s +--2 AA -02/-01 1944 Ap 22 22s +--2 AA +00 1944 Au 26 22s +--2 AA -02/-01 1945 Ap 21 22s +--2 AA +00 1945 Au 25 22s +--2 AA -02/-01 1966 Ap 3 2 +--1 AA -01/+00 1983 S 25 1s +--1 ' -01/+00 1992 S 27 1s +-0 O WE%sT 1993 Mar 28 1u +--1 O -01/+00 ++-2 p -02/-01 1942 Ap 25 22s ++-2 p +00 1942 Au 15 22s ++-2 p -02/-01 1943 Ap 17 22s ++-2 p +00 1943 Au 28 22s ++-2 p -02/-01 1944 Ap 22 22s ++-2 p +00 1944 Au 26 22s ++-2 p -02/-01 1945 Ap 21 22s ++-2 p +00 1945 Au 25 22s ++-2 p -02/-01 1966 Ap 3 2 ++-1 p -01/+00 1983 S 25 1s ++-1 W- -01/+00 1992 S 27 1s ++0 E WE%sT 1993 Mar 28 1u ++-1 E -01/+00 + Z Atlantic/Madeira -1:7:36 - LMT 1884 + -1:7:36 - FMT 1912 Ja 1 1u +--1 AA -01/+00 1942 Ap 25 22s +--1 AA +01 1942 Au 15 22s +--1 AA -01/+00 1943 Ap 17 22s +--1 AA +01 1943 Au 28 22s +--1 AA -01/+00 1944 Ap 22 22s +--1 AA +01 1944 Au 26 22s +--1 AA -01/+00 1945 Ap 21 22s +--1 AA +01 1945 Au 25 22s +--1 AA -01/+00 1966 Ap 3 2 +-0 AA WE%sT 1983 S 25 1s +-0 O WE%sT +-R { 1932 o - May 21 0s 1 S +-R { 1932 1939 - O Sun>=1 0s 0 - +-R { 1933 1939 - Ap Sun>=2 0s 1 S +-R { 1979 o - May 27 0 1 S +-R { 1979 o - S lastSun 0 0 - +-R { 1980 o - Ap 5 23 1 S +-R { 1980 o - S lastSun 1 0 - +-R { 1991 1993 - Mar lastSun 0s 1 S +-R { 1991 1993 - S lastSun 0s 0 - ++-1 p -01/+00 1942 Ap 25 22s ++-1 p +01 1942 Au 15 22s ++-1 p -01/+00 1943 Ap 17 22s ++-1 p +01 1943 Au 28 22s ++-1 p -01/+00 1944 Ap 22 22s ++-1 p +01 1944 Au 26 22s ++-1 p -01/+00 1945 Ap 21 22s ++-1 p +01 1945 Au 25 22s ++-1 p -01/+00 1966 Ap 3 2 ++0 p WE%sT 1983 S 25 1s ++0 E WE%sT ++R z 1932 o - May 21 0s 1 S ++R z 1932 1939 - O Sun>=1 0s 0 - ++R z 1933 1939 - Ap Sun>=2 0s 1 S ++R z 1979 o - May 27 0 1 S ++R z 1979 o - S lastSun 0 0 - ++R z 1980 o - Ap 5 23 1 S ++R z 1980 o - S lastSun 1 0 - ++R z 1991 1993 - Mar lastSun 0s 1 S ++R z 1991 1993 - S lastSun 0s 0 - + Z Europe/Bucharest 1:44:24 - LMT 1891 O + 1:44:24 - BMT 1931 Jul 24 +-2 { EE%sT 1981 Mar 29 2s +-2 ( EE%sT 1991 +-2 { EE%sT 1994 +-2 W EE%sT 1997 +-2 O EE%sT ++2 z EE%sT 1981 Mar 29 2s ++2 c EE%sT 1991 ++2 z EE%sT 1994 ++2 e EE%sT 1997 ++2 E EE%sT + Z Europe/Kaliningrad 1:22 - LMT 1893 Ap +-1 ( CE%sT 1945 +-2 ~ CE%sT 1946 +-3 M MSK/MSD 1989 Mar 26 2s +-2 M EE%sT 2011 Mar 27 2s ++1 c CE%sT 1945 ++2 O CE%sT 1946 ++3 R MSK/MSD 1989 Mar 26 2s ++2 R EE%sT 2011 Mar 27 2s + 3 - +03 2014 O 26 2s + 2 - EET + Z Europe/Moscow 2:30:17 - LMT 1880 + 2:30:17 - MMT 1916 Jul 3 +-2:31:19 M %s 1919 Jul 1 0u +-3 M %s 1921 O +-3 M MSK/MSD 1922 O ++2:31:19 R %s 1919 Jul 1 0u ++3 R %s 1921 O ++3 R MSK/MSD 1922 O + 2 - EET 1930 Jun 21 +-3 M MSK/MSD 1991 Mar 31 2s +-2 M EE%sT 1992 Ja 19 2s +-3 M MSK/MSD 2011 Mar 27 2s ++3 R MSK/MSD 1991 Mar 31 2s ++2 R EE%sT 1992 Ja 19 2s ++3 R MSK/MSD 2011 Mar 27 2s + 4 - MSK 2014 O 26 2s + 3 - MSK + Z Europe/Simferopol 2:16:24 - LMT 1880 + 2:16 - SMT 1924 May 2 + 2 - EET 1930 Jun 21 + 3 - MSK 1941 N +-1 ( CE%sT 1944 Ap 13 +-3 M MSK/MSD 1990 ++1 c CE%sT 1944 Ap 13 ++3 R MSK/MSD 1990 + 3 - MSK 1990 Jul 1 2 + 2 - EET 1992 +-2 W EE%sT 1994 May +-3 W MSK/MSD 1996 Mar 31 0s ++2 e EE%sT 1994 May ++3 e MSK/MSD 1996 Mar 31 0s + 3 1 MSD 1996 O 27 3s +-3 M MSK/MSD 1997 ++3 R MSK/MSD 1997 + 3 - MSK 1997 Mar lastSun 1u +-2 O EE%sT 2014 Mar 30 2 ++2 E EE%sT 2014 Mar 30 2 + 4 - MSK 2014 O 26 2s + 3 - MSK + Z Europe/Astrakhan 3:12:12 - LMT 1924 May + 3 - +03 1930 Jun 21 +-4 M +04/+05 1989 Mar 26 2s +-3 M +03/+04 1991 Mar 31 2s ++4 R +04/+05 1989 Mar 26 2s ++3 R +03/+04 1991 Mar 31 2s + 4 - +04 1992 Mar 29 2s +-3 M +03/+04 2011 Mar 27 2s ++3 R +03/+04 2011 Mar 27 2s + 4 - +04 2014 O 26 2s + 3 - +03 2016 Mar 27 2s + 4 - +04 + Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3 + 3 - +03 1930 Jun 21 + 4 - +04 1961 N 11 +-4 M +04/+05 1988 Mar 27 2s +-3 M +03/+04 1991 Mar 31 2s ++4 R +04/+05 1988 Mar 27 2s ++3 R +03/+04 1991 Mar 31 2s + 4 - +04 1992 Mar 29 2s +-3 M +03/+04 2011 Mar 27 2s ++3 R +03/+04 2011 Mar 27 2s + 4 - +04 2014 O 26 2s +-3 - +03 ++3 - +03 2018 O 28 2s ++4 - +04 + Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u + 3 - +03 1930 Jun 21 +-4 M +04/+05 1988 Mar 27 2s +-3 M +03/+04 1991 Mar 31 2s ++4 R +04/+05 1988 Mar 27 2s ++3 R +03/+04 1991 Mar 31 2s + 4 - +04 1992 Mar 29 2s +-3 M +03/+04 2011 Mar 27 2s ++3 R +03/+04 2011 Mar 27 2s + 4 - +04 2014 O 26 2s + 3 - +03 2016 D 4 2s + 4 - +04 + Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u + 3 - +03 1930 Jun 21 +-4 M +04/+05 1989 Mar 26 2s +-3 M +03/+04 1991 Mar 31 2s ++4 R +04/+05 1989 Mar 26 2s ++3 R +03/+04 1991 Mar 31 2s + 4 - +04 1992 Mar 29 2s +-3 M +03/+04 2011 Mar 27 2s ++3 R +03/+04 2011 Mar 27 2s + 4 - +04 2014 O 26 2s + 3 - +03 + Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u + 3 - +03 1930 Jun 21 + 4 - +04 1935 Ja 27 +-4 M +04/+05 1989 Mar 26 2s +-3 M +03/+04 1991 Mar 31 2s +-2 M +02/+03 1991 S 29 2s ++4 R +04/+05 1989 Mar 26 2s ++3 R +03/+04 1991 Mar 31 2s ++2 R +02/+03 1991 S 29 2s + 3 - +03 1991 O 20 3 +-4 M +04/+05 2010 Mar 28 2s +-3 M +03/+04 2011 Mar 27 2s ++4 R +04/+05 2010 Mar 28 2s ++3 R +03/+04 2011 Mar 27 2s + 4 - +04 + Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u + 3 - +03 1930 Jun 21 +-4 M +04/+05 1989 Mar 26 2s +-3 M +03/+04 1991 Mar 31 2s +-2 M +02/+03 1992 Ja 19 2s +-3 M +03/+04 2011 Mar 27 2s ++4 R +04/+05 1989 Mar 26 2s ++3 R +03/+04 1991 Mar 31 2s ++2 R +02/+03 1992 Ja 19 2s ++3 R +03/+04 2011 Mar 27 2s + 4 - +04 2014 O 26 2s + 3 - +03 2016 Mar 27 2s + 4 - +04 + Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3 + 3:45:5 - PMT 1919 Jul 15 4 + 4 - +04 1930 Jun 21 +-5 M +05/+06 1991 Mar 31 2s +-4 M +04/+05 1992 Ja 19 2s +-5 M +05/+06 2011 Mar 27 2s ++5 R +05/+06 1991 Mar 31 2s ++4 R +04/+05 1992 Ja 19 2s ++5 R +05/+06 2011 Mar 27 2s + 6 - +06 2014 O 26 2s + 5 - +05 + Z Asia/Omsk 4:53:30 - LMT 1919 N 14 + 5 - +05 1930 Jun 21 +-6 M +06/+07 1991 Mar 31 2s +-5 M +05/+06 1992 Ja 19 2s +-6 M +06/+07 2011 Mar 27 2s ++6 R +06/+07 1991 Mar 31 2s ++5 R +05/+06 1992 Ja 19 2s ++6 R +06/+07 2011 Mar 27 2s + 7 - +07 2014 O 26 2s + 6 - +06 + Z Asia/Barnaul 5:35 - LMT 1919 D 10 + 6 - +06 1930 Jun 21 +-7 M +07/+08 1991 Mar 31 2s +-6 M +06/+07 1992 Ja 19 2s +-7 M +07/+08 1995 May 28 +-6 M +06/+07 2011 Mar 27 2s ++7 R +07/+08 1991 Mar 31 2s ++6 R +06/+07 1992 Ja 19 2s ++7 R +07/+08 1995 May 28 ++6 R +06/+07 2011 Mar 27 2s + 7 - +07 2014 O 26 2s + 6 - +06 2016 Mar 27 2s + 7 - +07 + Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6 + 6 - +06 1930 Jun 21 +-7 M +07/+08 1991 Mar 31 2s +-6 M +06/+07 1992 Ja 19 2s +-7 M +07/+08 1993 May 23 +-6 M +06/+07 2011 Mar 27 2s ++7 R +07/+08 1991 Mar 31 2s ++6 R +06/+07 1992 Ja 19 2s ++7 R +07/+08 1993 May 23 ++6 R +06/+07 2011 Mar 27 2s + 7 - +07 2014 O 26 2s + 6 - +06 2016 Jul 24 2s + 7 - +07 + Z Asia/Tomsk 5:39:51 - LMT 1919 D 22 + 6 - +06 1930 Jun 21 +-7 M +07/+08 1991 Mar 31 2s +-6 M +06/+07 1992 Ja 19 2s +-7 M +07/+08 2002 May 1 3 +-6 M +06/+07 2011 Mar 27 2s ++7 R +07/+08 1991 Mar 31 2s ++6 R +06/+07 1992 Ja 19 2s ++7 R +07/+08 2002 May 1 3 ++6 R +06/+07 2011 Mar 27 2s + 7 - +07 2014 O 26 2s + 6 - +06 2016 May 29 2s + 7 - +07 + Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May + 6 - +06 1930 Jun 21 +-7 M +07/+08 1991 Mar 31 2s +-6 M +06/+07 1992 Ja 19 2s +-7 M +07/+08 2010 Mar 28 2s +-6 M +06/+07 2011 Mar 27 2s ++7 R +07/+08 1991 Mar 31 2s ++6 R +06/+07 1992 Ja 19 2s ++7 R +07/+08 2010 Mar 28 2s ++6 R +06/+07 2011 Mar 27 2s + 7 - +07 + Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6 + 6 - +06 1930 Jun 21 +-7 M +07/+08 1991 Mar 31 2s +-6 M +06/+07 1992 Ja 19 2s +-7 M +07/+08 2011 Mar 27 2s ++7 R +07/+08 1991 Mar 31 2s ++6 R +06/+07 1992 Ja 19 2s ++7 R +07/+08 2011 Mar 27 2s + 8 - +08 2014 O 26 2s + 7 - +07 + Z Asia/Irkutsk 6:57:5 - LMT 1880 + 6:57:5 - IMT 1920 Ja 25 + 7 - +07 1930 Jun 21 +-8 M +08/+09 1991 Mar 31 2s +-7 M +07/+08 1992 Ja 19 2s +-8 M +08/+09 2011 Mar 27 2s ++8 R +08/+09 1991 Mar 31 2s ++7 R +07/+08 1992 Ja 19 2s ++8 R +08/+09 2011 Mar 27 2s + 9 - +09 2014 O 26 2s + 8 - +08 + Z Asia/Chita 7:33:52 - LMT 1919 D 15 + 8 - +08 1930 Jun 21 +-9 M +09/+10 1991 Mar 31 2s +-8 M +08/+09 1992 Ja 19 2s +-9 M +09/+10 2011 Mar 27 2s ++9 R +09/+10 1991 Mar 31 2s ++8 R +08/+09 1992 Ja 19 2s ++9 R +09/+10 2011 Mar 27 2s + 10 - +10 2014 O 26 2s + 8 - +08 2016 Mar 27 2 + 9 - +09 + Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15 + 8 - +08 1930 Jun 21 +-9 M +09/+10 1991 Mar 31 2s +-8 M +08/+09 1992 Ja 19 2s +-9 M +09/+10 2011 Mar 27 2s ++9 R +09/+10 1991 Mar 31 2s ++8 R +08/+09 1992 Ja 19 2s ++9 R +09/+10 2011 Mar 27 2s + 10 - +10 2014 O 26 2s + 9 - +09 + Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15 + 9 - +09 1930 Jun 21 +-10 M +10/+11 1991 Mar 31 2s +-9 M +09/+10 1992 Ja 19 2s +-10 M +10/+11 2011 Mar 27 2s ++10 R +10/+11 1991 Mar 31 2s ++9 R +09/+10 1992 Ja 19 2s ++10 R +10/+11 2011 Mar 27 2s + 11 - +11 2014 O 26 2s + 10 - +10 + Z Asia/Khandyga 9:2:13 - LMT 1919 D 15 + 8 - +08 1930 Jun 21 +-9 M +09/+10 1991 Mar 31 2s +-8 M +08/+09 1992 Ja 19 2s +-9 M +09/+10 2004 +-10 M +10/+11 2011 Mar 27 2s ++9 R +09/+10 1991 Mar 31 2s ++8 R +08/+09 1992 Ja 19 2s ++9 R +09/+10 2004 ++10 R +10/+11 2011 Mar 27 2s + 11 - +11 2011 S 13 0s + 10 - +10 2014 O 26 2s + 9 - +09 + Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23 + 9 - +09 1945 Au 25 +-11 M +11/+12 1991 Mar 31 2s +-10 M +10/+11 1992 Ja 19 2s +-11 M +11/+12 1997 Mar lastSun 2s +-10 M +10/+11 2011 Mar 27 2s ++11 R +11/+12 1991 Mar 31 2s ++10 R +10/+11 1992 Ja 19 2s ++11 R +11/+12 1997 Mar lastSun 2s ++10 R +10/+11 2011 Mar 27 2s + 11 - +11 2014 O 26 2s + 10 - +10 2016 Mar 27 2s + 11 - +11 + Z Asia/Magadan 10:3:12 - LMT 1924 May 2 + 10 - +10 1930 Jun 21 +-11 M +11/+12 1991 Mar 31 2s +-10 M +10/+11 1992 Ja 19 2s +-11 M +11/+12 2011 Mar 27 2s ++11 R +11/+12 1991 Mar 31 2s ++10 R +10/+11 1992 Ja 19 2s ++11 R +11/+12 2011 Mar 27 2s + 12 - +12 2014 O 26 2s + 10 - +10 2016 Ap 24 2s + 11 - +11 + Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 + 10 - +10 1930 Jun 21 +-11 M +11/+12 1991 Mar 31 2s +-10 M +10/+11 1992 Ja 19 2s +-11 M +11/+12 2011 Mar 27 2s ++11 R +11/+12 1991 Mar 31 2s ++10 R +10/+11 1992 Ja 19 2s ++11 R +11/+12 2011 Mar 27 2s + 12 - +12 2014 O 26 2s + 11 - +11 + Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15 + 8 - +08 1930 Jun 21 +-9 M +09/+10 1981 Ap +-11 M +11/+12 1991 Mar 31 2s +-10 M +10/+11 1992 Ja 19 2s +-11 M +11/+12 2011 Mar 27 2s ++9 R +09/+10 1981 Ap ++11 R +11/+12 1991 Mar 31 2s ++10 R +10/+11 1992 Ja 19 2s ++11 R +11/+12 2011 Mar 27 2s + 12 - +12 2011 S 13 0s + 11 - +11 2014 O 26 2s + 10 - +10 + Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10 + 11 - +11 1930 Jun 21 +-12 M +12/+13 1991 Mar 31 2s +-11 M +11/+12 1992 Ja 19 2s +-12 M +12/+13 2010 Mar 28 2s +-11 M +11/+12 2011 Mar 27 2s ++12 R +12/+13 1991 Mar 31 2s ++11 R +11/+12 1992 Ja 19 2s ++12 R +12/+13 2010 Mar 28 2s ++11 R +11/+12 2011 Mar 27 2s + 12 - +12 + Z Asia/Anadyr 11:49:56 - LMT 1924 May 2 + 12 - +12 1930 Jun 21 +-13 M +13/+14 1982 Ap 1 0s +-12 M +12/+13 1991 Mar 31 2s +-11 M +11/+12 1992 Ja 19 2s +-12 M +12/+13 2010 Mar 28 2s +-11 M +11/+12 2011 Mar 27 2s ++13 R +13/+14 1982 Ap 1 0s ++12 R +12/+13 1991 Mar 31 2s ++11 R +11/+12 1992 Ja 19 2s ++12 R +12/+13 2010 Mar 28 2s ++11 R +11/+12 2011 Mar 27 2s + 12 - +12 + Z Europe/Belgrade 1:22 - LMT 1884 + 1 - CET 1941 Ap 18 23 +-1 ( CE%sT 1945 ++1 c CE%sT 1945 + 1 - CET 1945 May 8 2s + 1 1 CEST 1945 S 16 2s + 1 - CET 1982 N 27 +-1 O CE%sT ++1 E CE%sT + Li Europe/Belgrade Europe/Ljubljana + Li Europe/Belgrade Europe/Podgorica + Li Europe/Belgrade Europe/Sarajevo + Li Europe/Belgrade Europe/Skopje + Li Europe/Belgrade Europe/Zagreb + Li Europe/Prague Europe/Bratislava +-R AB 1918 o - Ap 15 23 1 S +-R AB 1918 1919 - O 6 24s 0 - +-R AB 1919 o - Ap 6 23 1 S +-R AB 1924 o - Ap 16 23 1 S +-R AB 1924 o - O 4 24s 0 - +-R AB 1926 o - Ap 17 23 1 S +-R AB 1926 1929 - O Sat>=1 24s 0 - +-R AB 1927 o - Ap 9 23 1 S +-R AB 1928 o - Ap 15 0 1 S +-R AB 1929 o - Ap 20 23 1 S +-R AB 1937 o - Jun 16 23 1 S +-R AB 1937 o - O 2 24s 0 - +-R AB 1938 o - Ap 2 23 1 S +-R AB 1938 o - Ap 30 23 2 M +-R AB 1938 o - O 2 24 1 S +-R AB 1939 o - O 7 24s 0 - +-R AB 1942 o - May 2 23 1 S +-R AB 1942 o - S 1 1 0 - +-R AB 1943 1946 - Ap Sat>=13 23 1 S +-R AB 1943 1944 - O Sun>=1 1 0 - +-R AB 1945 1946 - S lastSun 1 0 - +-R AB 1949 o - Ap 30 23 1 S +-R AB 1949 o - O 2 1 0 - +-R AB 1974 1975 - Ap Sat>=12 23 1 S +-R AB 1974 1975 - O Sun>=1 1 0 - +-R AB 1976 o - Mar 27 23 1 S +-R AB 1976 1977 - S lastSun 1 0 - +-R AB 1977 o - Ap 2 23 1 S +-R AB 1978 o - Ap 2 2s 1 S +-R AB 1978 o - O 1 2s 0 - +-R AC 1967 o - Jun 3 12 1 S +-R AC 1967 o - O 1 0 0 - +-R AC 1974 o - Jun 24 0 1 S +-R AC 1974 o - S 1 0 0 - +-R AC 1976 1977 - May 1 0 1 S +-R AC 1976 o - Au 1 0 0 - +-R AC 1977 o - S 28 0 0 - +-R AC 1978 o - Jun 1 0 1 S +-R AC 1978 o - Au 4 0 0 - ++R s 1918 o - Ap 15 23 1 S ++R s 1918 1919 - O 6 24s 0 - ++R s 1919 o - Ap 6 23 1 S ++R s 1924 o - Ap 16 23 1 S ++R s 1924 o - O 4 24s 0 - ++R s 1926 o - Ap 17 23 1 S ++R s 1926 1929 - O Sat>=1 24s 0 - ++R s 1927 o - Ap 9 23 1 S ++R s 1928 o - Ap 15 0 1 S ++R s 1929 o - Ap 20 23 1 S ++R s 1937 o - Jun 16 23 1 S ++R s 1937 o - O 2 24s 0 - ++R s 1938 o - Ap 2 23 1 S ++R s 1938 o - Ap 30 23 2 M ++R s 1938 o - O 2 24 1 S ++R s 1939 o - O 7 24s 0 - ++R s 1942 o - May 2 23 1 S ++R s 1942 o - S 1 1 0 - ++R s 1943 1946 - Ap Sat>=13 23 1 S ++R s 1943 1944 - O Sun>=1 1 0 - ++R s 1945 1946 - S lastSun 1 0 - ++R s 1949 o - Ap 30 23 1 S ++R s 1949 o - O 2 1 0 - ++R s 1974 1975 - Ap Sat>=12 23 1 S ++R s 1974 1975 - O Sun>=1 1 0 - ++R s 1976 o - Mar 27 23 1 S ++R s 1976 1977 - S lastSun 1 0 - ++R s 1977 o - Ap 2 23 1 S ++R s 1978 o - Ap 2 2s 1 S ++R s 1978 o - O 1 2s 0 - + Z Europe/Madrid -0:14:44 - LMT 1900 D 31 23:45:16 +-0 AB WE%sT 1940 Mar 16 23 +-1 AB CE%sT 1979 +-1 O CE%sT ++0 s WE%sT 1940 Mar 16 23 ++1 s CE%sT 1979 ++1 E CE%sT + Z Africa/Ceuta -0:21:16 - LMT 1900 D 31 23:38:44 + 0 - WET 1918 May 6 23 + 0 1 WEST 1918 O 7 23 + 0 - WET 1924 +-0 AB WE%sT 1929 +-0 AC WE%sT 1984 Mar 16 ++0 s WE%sT 1929 ++0 - WET 1967 ++0 M WE%sT 1984 Mar 16 + 1 - CET 1986 +-1 O CE%sT ++1 E CE%sT + Z Atlantic/Canary -1:1:36 - LMT 1922 Mar + -1 - -01 1946 S 30 1 + 0 - WET 1980 Ap 6 0s + 0 1 WEST 1980 S 28 1u +-0 O WE%sT ++0 E WE%sT + Z Europe/Stockholm 1:12:12 - LMT 1879 + 1:0:14 - SET 1900 + 1 - CET 1916 May 14 23 + 1 1 CEST 1916 O 1 1 + 1 - CET 1980 +-1 O CE%sT +-R AD 1941 1942 - May M>=1 1 1 S +-R AD 1941 1942 - O M>=1 2 0 - ++1 E CE%sT ++R CH 1941 1942 - May M>=1 1 1 S ++R CH 1941 1942 - O M>=1 2 0 - + Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16 + 0:29:46 - BMT 1894 Jun +-1 AD CE%sT 1981 +-1 O CE%sT +-R AE 1916 o - May 1 0 1 S +-R AE 1916 o - O 1 0 0 - +-R AE 1920 o - Mar 28 0 1 S +-R AE 1920 o - O 25 0 0 - +-R AE 1921 o - Ap 3 0 1 S +-R AE 1921 o - O 3 0 0 - +-R AE 1922 o - Mar 26 0 1 S +-R AE 1922 o - O 8 0 0 - +-R AE 1924 o - May 13 0 1 S +-R AE 1924 1925 - O 1 0 0 - +-R AE 1925 o - May 1 0 1 S +-R AE 1940 o - Jun 30 0 1 S +-R AE 1940 o - O 5 0 0 - +-R AE 1940 o - D 1 0 1 S +-R AE 1941 o - S 21 0 0 - +-R AE 1942 o - Ap 1 0 1 S +-R AE 1942 o - N 1 0 0 - +-R AE 1945 o - Ap 2 0 1 S +-R AE 1945 o - O 8 0 0 - +-R AE 1946 o - Jun 1 0 1 S +-R AE 1946 o - O 1 0 0 - +-R AE 1947 1948 - Ap Sun>=16 0 1 S +-R AE 1947 1950 - O Sun>=2 0 0 - +-R AE 1949 o - Ap 10 0 1 S +-R AE 1950 o - Ap 19 0 1 S +-R AE 1951 o - Ap 22 0 1 S +-R AE 1951 o - O 8 0 0 - +-R AE 1962 o - Jul 15 0 1 S +-R AE 1962 o - O 8 0 0 - +-R AE 1964 o - May 15 0 1 S +-R AE 1964 o - O 1 0 0 - +-R AE 1970 1972 - May Sun>=2 0 1 S +-R AE 1970 1972 - O Sun>=2 0 0 - +-R AE 1973 o - Jun 3 1 1 S +-R AE 1973 o - N 4 3 0 - +-R AE 1974 o - Mar 31 2 1 S +-R AE 1974 o - N 3 5 0 - +-R AE 1975 o - Mar 30 0 1 S +-R AE 1975 1976 - O lastSun 0 0 - +-R AE 1976 o - Jun 1 0 1 S +-R AE 1977 1978 - Ap Sun>=1 0 1 S +-R AE 1977 o - O 16 0 0 - +-R AE 1979 1980 - Ap Sun>=1 3 1 S +-R AE 1979 1982 - O M>=11 0 0 - +-R AE 1981 1982 - Mar lastSun 3 1 S +-R AE 1983 o - Jul 31 0 1 S +-R AE 1983 o - O 2 0 0 - +-R AE 1985 o - Ap 20 0 1 S +-R AE 1985 o - S 28 0 0 - +-R AE 1986 1993 - Mar lastSun 1s 1 S +-R AE 1986 1995 - S lastSun 1s 0 - +-R AE 1994 o - Mar 20 1s 1 S +-R AE 1995 2006 - Mar lastSun 1s 1 S +-R AE 1996 2006 - O lastSun 1s 0 - ++1 CH CE%sT 1981 ++1 E CE%sT ++R T 1916 o - May 1 0 1 S ++R T 1916 o - O 1 0 0 - ++R T 1920 o - Mar 28 0 1 S ++R T 1920 o - O 25 0 0 - ++R T 1921 o - Ap 3 0 1 S ++R T 1921 o - O 3 0 0 - ++R T 1922 o - Mar 26 0 1 S ++R T 1922 o - O 8 0 0 - ++R T 1924 o - May 13 0 1 S ++R T 1924 1925 - O 1 0 0 - ++R T 1925 o - May 1 0 1 S ++R T 1940 o - Jun 30 0 1 S ++R T 1940 o - O 5 0 0 - ++R T 1940 o - D 1 0 1 S ++R T 1941 o - S 21 0 0 - ++R T 1942 o - Ap 1 0 1 S ++R T 1942 o - N 1 0 0 - ++R T 1945 o - Ap 2 0 1 S ++R T 1945 o - O 8 0 0 - ++R T 1946 o - Jun 1 0 1 S ++R T 1946 o - O 1 0 0 - ++R T 1947 1948 - Ap Sun>=16 0 1 S ++R T 1947 1950 - O Sun>=2 0 0 - ++R T 1949 o - Ap 10 0 1 S ++R T 1950 o - Ap 19 0 1 S ++R T 1951 o - Ap 22 0 1 S ++R T 1951 o - O 8 0 0 - ++R T 1962 o - Jul 15 0 1 S ++R T 1962 o - O 8 0 0 - ++R T 1964 o - May 15 0 1 S ++R T 1964 o - O 1 0 0 - ++R T 1970 1972 - May Sun>=2 0 1 S ++R T 1970 1972 - O Sun>=2 0 0 - ++R T 1973 o - Jun 3 1 1 S ++R T 1973 o - N 4 3 0 - ++R T 1974 o - Mar 31 2 1 S ++R T 1974 o - N 3 5 0 - ++R T 1975 o - Mar 30 0 1 S ++R T 1975 1976 - O lastSun 0 0 - ++R T 1976 o - Jun 1 0 1 S ++R T 1977 1978 - Ap Sun>=1 0 1 S ++R T 1977 o - O 16 0 0 - ++R T 1979 1980 - Ap Sun>=1 3 1 S ++R T 1979 1982 - O M>=11 0 0 - ++R T 1981 1982 - Mar lastSun 3 1 S ++R T 1983 o - Jul 31 0 1 S ++R T 1983 o - O 2 0 0 - ++R T 1985 o - Ap 20 0 1 S ++R T 1985 o - S 28 0 0 - ++R T 1986 1993 - Mar lastSun 1s 1 S ++R T 1986 1995 - S lastSun 1s 0 - ++R T 1994 o - Mar 20 1s 1 S ++R T 1995 2006 - Mar lastSun 1s 1 S ++R T 1996 2006 - O lastSun 1s 0 - + Z Europe/Istanbul 1:55:52 - LMT 1880 + 1:56:56 - IMT 1910 O +-2 AE EE%sT 1978 O 15 +-3 AE +03/+04 1985 Ap 20 +-2 AE EE%sT 2007 +-2 O EE%sT 2011 Mar 27 1u ++2 T EE%sT 1978 O 15 ++3 T +03/+04 1985 Ap 20 ++2 T EE%sT 2007 ++2 E EE%sT 2011 Mar 27 1u + 2 - EET 2011 Mar 28 1u +-2 O EE%sT 2014 Mar 30 1u ++2 E EE%sT 2014 Mar 30 1u + 2 - EET 2014 Mar 31 1u +-2 O EE%sT 2015 O 25 1u ++2 E EE%sT 2015 O 25 1u + 2 1 EEST 2015 N 8 1u +-2 O EE%sT 2016 S 7 ++2 E EE%sT 2016 S 7 + 3 - +03 + Li Europe/Istanbul Asia/Istanbul + Z Europe/Kiev 2:2:4 - LMT 1880 + 2:2:4 - KMT 1924 May 2 + 2 - EET 1930 Jun 21 + 3 - MSK 1941 S 20 +-1 ( CE%sT 1943 N 6 +-3 M MSK/MSD 1990 Jul 1 2 ++1 c CE%sT 1943 N 6 ++3 R MSK/MSD 1990 Jul 1 2 + 2 1 EEST 1991 S 29 3 +-2 W EE%sT 1995 +-2 O EE%sT ++2 e EE%sT 1995 ++2 E EE%sT + Z Europe/Uzhgorod 1:29:12 - LMT 1890 O + 1 - CET 1940 +-1 ( CE%sT 1944 O ++1 c CE%sT 1944 O + 1 1 CEST 1944 O 26 + 1 - CET 1945 Jun 29 +-3 M MSK/MSD 1990 ++3 R MSK/MSD 1990 + 3 - MSK 1990 Jul 1 2 + 1 - CET 1991 Mar 31 3 + 2 - EET 1992 +-2 W EE%sT 1995 +-2 O EE%sT ++2 e EE%sT 1995 ++2 E EE%sT + Z Europe/Zaporozhye 2:20:40 - LMT 1880 + 2:20 - +0220 1924 May 2 + 2 - EET 1930 Jun 21 + 3 - MSK 1941 Au 25 +-1 ( CE%sT 1943 O 25 +-3 M MSK/MSD 1991 Mar 31 2 +-2 W EE%sT 1995 +-2 O EE%sT +-R AF 1918 1919 - Mar lastSun 2 1 D +-R AF 1918 1919 - O lastSun 2 0 S +-R AF 1942 o - F 9 2 1 W +-R AF 1945 o - Au 14 23u 1 P +-R AF 1945 o - S lastSun 2 0 S +-R AF 1967 2006 - O lastSun 2 0 S +-R AF 1967 1973 - Ap lastSun 2 1 D +-R AF 1974 o - Ja 6 2 1 D +-R AF 1975 o - F 23 2 1 D +-R AF 1976 1986 - Ap lastSun 2 1 D +-R AF 1987 2006 - Ap Sun>=1 2 1 D +-R AF 2007 ma - Mar Sun>=8 2 1 D +-R AF 2007 ma - N Sun>=1 2 0 S ++1 c CE%sT 1943 O 25 ++3 R MSK/MSD 1991 Mar 31 2 ++2 e EE%sT 1995 ++2 E EE%sT ++R u 1918 1919 - Mar lastSun 2 1 D ++R u 1918 1919 - O lastSun 2 0 S ++R u 1942 o - F 9 2 1 W ++R u 1945 o - Au 14 23u 1 P ++R u 1945 o - S lastSun 2 0 S ++R u 1967 2006 - O lastSun 2 0 S ++R u 1967 1973 - Ap lastSun 2 1 D ++R u 1974 o - Ja 6 2 1 D ++R u 1975 o - F 23 2 1 D ++R u 1976 1986 - Ap lastSun 2 1 D ++R u 1987 2006 - Ap Sun>=1 2 1 D ++R u 2007 ma - Mar Sun>=8 2 1 D ++R u 2007 ma - N Sun>=1 2 0 S + Z EST -5 - EST + Z MST -7 - MST + Z HST -10 - HST +-Z EST5EDT -5 AF E%sT +-Z CST6CDT -6 AF C%sT +-Z MST7MDT -7 AF M%sT +-Z PST8PDT -8 AF P%sT +-R AG 1920 o - Mar lastSun 2 1 D +-R AG 1920 o - O lastSun 2 0 S +-R AG 1921 1966 - Ap lastSun 2 1 D +-R AG 1921 1954 - S lastSun 2 0 S +-R AG 1955 1966 - O lastSun 2 0 S ++Z EST5EDT -5 u E%sT ++Z CST6CDT -6 u C%sT ++Z MST7MDT -7 u M%sT ++Z PST8PDT -8 u P%sT ++R NY 1920 o - Mar lastSun 2 1 D ++R NY 1920 o - O lastSun 2 0 S ++R NY 1921 1966 - Ap lastSun 2 1 D ++R NY 1921 1954 - S lastSun 2 0 S ++R NY 1955 1966 - O lastSun 2 0 S + Z America/New_York -4:56:2 - LMT 1883 N 18 12:3:58 +--5 AF E%sT 1920 +--5 AG E%sT 1942 +--5 AF E%sT 1946 +--5 AG E%sT 1967 +--5 AF E%sT +-R AH 1920 o - Jun 13 2 1 D +-R AH 1920 1921 - O lastSun 2 0 S +-R AH 1921 o - Mar lastSun 2 1 D +-R AH 1922 1966 - Ap lastSun 2 1 D +-R AH 1922 1954 - S lastSun 2 0 S +-R AH 1955 1966 - O lastSun 2 0 S ++-5 u E%sT 1920 ++-5 NY E%sT 1942 ++-5 u E%sT 1946 ++-5 NY E%sT 1967 ++-5 u E%sT ++R Ch 1920 o - Jun 13 2 1 D ++R Ch 1920 1921 - O lastSun 2 0 S ++R Ch 1921 o - Mar lastSun 2 1 D ++R Ch 1922 1966 - Ap lastSun 2 1 D ++R Ch 1922 1954 - S lastSun 2 0 S ++R Ch 1955 1966 - O lastSun 2 0 S + Z America/Chicago -5:50:36 - LMT 1883 N 18 12:9:24 +--6 AF C%sT 1920 +--6 AH C%sT 1936 Mar 1 2 ++-6 u C%sT 1920 ++-6 Ch C%sT 1936 Mar 1 2 + -5 - EST 1936 N 15 2 +--6 AH C%sT 1942 +--6 AF C%sT 1946 +--6 AH C%sT 1967 +--6 AF C%sT ++-6 Ch C%sT 1942 ++-6 u C%sT 1946 ++-6 Ch C%sT 1967 ++-6 u C%sT + Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 12:14:48 +--7 AF M%sT 1992 O 25 2 +--6 AF C%sT ++-7 u M%sT 1992 O 25 2 ++-6 u C%sT + Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 12:14:21 +--7 AF M%sT 2003 O 26 2 +--6 AF C%sT ++-7 u M%sT 2003 O 26 2 ++-6 u C%sT + Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 12:12:53 +--7 AF M%sT 2010 N 7 2 +--6 AF C%sT +-R AI 1920 1921 - Mar lastSun 2 1 D +-R AI 1920 o - O lastSun 2 0 S +-R AI 1921 o - May 22 2 0 S +-R AI 1965 1966 - Ap lastSun 2 1 D +-R AI 1965 1966 - O lastSun 2 0 S ++-7 u M%sT 2010 N 7 2 ++-6 u C%sT ++R De 1920 1921 - Mar lastSun 2 1 D ++R De 1920 o - O lastSun 2 0 S ++R De 1921 o - May 22 2 0 S ++R De 1965 1966 - Ap lastSun 2 1 D ++R De 1965 1966 - O lastSun 2 0 S + Z America/Denver -6:59:56 - LMT 1883 N 18 12:0:4 +--7 AF M%sT 1920 +--7 AI M%sT 1942 +--7 AF M%sT 1946 +--7 AI M%sT 1967 +--7 AF M%sT +-R AJ 1948 o - Mar 14 2:1 1 D +-R AJ 1949 o - Ja 1 2 0 S +-R AJ 1950 1966 - Ap lastSun 1 1 D +-R AJ 1950 1961 - S lastSun 2 0 S +-R AJ 1962 1966 - O lastSun 2 0 S ++-7 u M%sT 1920 ++-7 De M%sT 1942 ++-7 u M%sT 1946 ++-7 De M%sT 1967 ++-7 u M%sT ++R CA 1948 o - Mar 14 2:1 1 D ++R CA 1949 o - Ja 1 2 0 S ++R CA 1950 1966 - Ap lastSun 1 1 D ++R CA 1950 1961 - S lastSun 2 0 S ++R CA 1962 1966 - O lastSun 2 0 S + Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 12:7:2 +--8 AF P%sT 1946 +--8 AJ P%sT 1967 +--8 AF P%sT ++-8 u P%sT 1946 ++-8 CA P%sT 1967 ++-8 u P%sT + Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32 + -8:57:41 - LMT 1900 Au 20 12 + -8 - PST 1942 +--8 AF P%sT 1946 ++-8 u P%sT 1946 + -8 - PST 1969 +--8 AF P%sT 1980 Ap 27 2 +--9 AF Y%sT 1980 O 26 2 +--8 AF P%sT 1983 O 30 2 +--9 AF Y%sT 1983 N 30 +--9 AF AK%sT ++-8 u P%sT 1980 Ap 27 2 ++-9 u Y%sT 1980 O 26 2 ++-8 u P%sT 1983 O 30 2 ++-9 u Y%sT 1983 N 30 ++-9 u AK%sT + Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30 + -9:1:13 - LMT 1900 Au 20 12 + -8 - PST 1942 +--8 AF P%sT 1946 ++-8 u P%sT 1946 + -8 - PST 1969 +--8 AF P%sT 1983 O 30 2 +--9 AF Y%sT 1983 N 30 +--9 AF AK%sT ++-8 u P%sT 1983 O 30 2 ++-9 u Y%sT 1983 N 30 ++-9 u AK%sT + Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55 + -8:46:18 - LMT 1900 Au 20 12 + -8 - PST 1942 +--8 AF P%sT 1946 ++-8 u P%sT 1946 + -8 - PST 1969 +--8 AF P%sT 1983 O 30 2 ++-8 u P%sT 1983 O 30 2 + -8 - PST 2015 N 1 2 +--9 AF AK%sT ++-9 u AK%sT + Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18 + -9:18:55 - LMT 1900 Au 20 12 + -9 - YST 1942 +--9 AF Y%sT 1946 ++-9 u Y%sT 1946 + -9 - YST 1969 +--9 AF Y%sT 1983 N 30 +--9 AF AK%sT ++-9 u Y%sT 1983 N 30 ++-9 u AK%sT + Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37 + -9:59:36 - LMT 1900 Au 20 12 + -10 - AST 1942 +--10 AF A%sT 1967 Ap ++-10 u A%sT 1967 Ap + -10 - AHST 1969 +--10 AF AH%sT 1983 O 30 2 +--9 AF Y%sT 1983 N 30 +--9 AF AK%sT ++-10 u AH%sT 1983 O 30 2 ++-9 u Y%sT 1983 N 30 ++-9 u AK%sT + Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35 + -11:1:38 - LMT 1900 Au 20 12 + -11 - NST 1942 +--11 AF N%sT 1946 ++-11 u N%sT 1946 + -11 - NST 1967 Ap + -11 - BST 1969 +--11 AF B%sT 1983 O 30 2 +--9 AF Y%sT 1983 N 30 +--9 AF AK%sT ++-11 u B%sT 1983 O 30 2 ++-9 u Y%sT 1983 N 30 ++-9 u AK%sT + Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35 + -11:46:38 - LMT 1900 Au 20 12 + -11 - NST 1942 +--11 AF N%sT 1946 ++-11 u N%sT 1946 + -11 - NST 1967 Ap + -11 - BST 1969 +--11 AF B%sT 1983 O 30 2 +--10 AF AH%sT 1983 N 30 +--10 AF H%sT ++-11 u B%sT 1983 O 30 2 ++-10 u AH%sT 1983 N 30 ++-10 u H%sT + Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12 + -10:30 - HST 1933 Ap 30 2 + -10:30 1 HDT 1933 May 21 12 +@@ -2683,531 +2700,531 @@ Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12 + -10:30 - HST 1947 Jun 8 2 + -10 - HST + Z America/Phoenix -7:28:18 - LMT 1883 N 18 11:31:42 +--7 AF M%sT 1944 Ja 1 0:1 ++-7 u M%sT 1944 Ja 1 0:1 + -7 - MST 1944 Ap 1 0:1 +--7 AF M%sT 1944 O 1 0:1 ++-7 u M%sT 1944 O 1 0:1 + -7 - MST 1967 +--7 AF M%sT 1968 Mar 21 ++-7 u M%sT 1968 Mar 21 + -7 - MST + Z America/Boise -7:44:49 - LMT 1883 N 18 12:15:11 +--8 AF P%sT 1923 May 13 2 +--7 AF M%sT 1974 ++-8 u P%sT 1923 May 13 2 ++-7 u M%sT 1974 + -7 - MST 1974 F 3 2 +--7 AF M%sT +-R AK 1941 o - Jun 22 2 1 D +-R AK 1941 1954 - S lastSun 2 0 S +-R AK 1946 1954 - Ap lastSun 2 1 D ++-7 u M%sT ++R In 1941 o - Jun 22 2 1 D ++R In 1941 1954 - S lastSun 2 0 S ++R In 1946 1954 - Ap lastSun 2 1 D + Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 12:15:22 +--6 AF C%sT 1920 +--6 AK C%sT 1942 +--6 AF C%sT 1946 +--6 AK C%sT 1955 Ap 24 2 ++-6 u C%sT 1920 ++-6 In C%sT 1942 ++-6 u C%sT 1946 ++-6 In C%sT 1955 Ap 24 2 + -5 - EST 1957 S 29 2 + -6 - CST 1958 Ap 27 2 + -5 - EST 1969 +--5 AF E%sT 1971 ++-5 u E%sT 1971 + -5 - EST 2006 +--5 AF E%sT +-R AL 1951 o - Ap lastSun 2 1 D +-R AL 1951 o - S lastSun 2 0 S +-R AL 1954 1960 - Ap lastSun 2 1 D +-R AL 1954 1960 - S lastSun 2 0 S ++-5 u E%sT ++R Ma 1951 o - Ap lastSun 2 1 D ++R Ma 1951 o - S lastSun 2 0 S ++R Ma 1954 1960 - Ap lastSun 2 1 D ++R Ma 1954 1960 - S lastSun 2 0 S + Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 12:14:37 +--6 AF C%sT 1951 +--6 AL C%sT 1961 Ap 30 2 ++-6 u C%sT 1951 ++-6 Ma C%sT 1961 Ap 30 2 + -5 - EST 1969 +--5 AF E%sT 1974 Ja 6 2 ++-5 u E%sT 1974 Ja 6 2 + -6 1 CDT 1974 O 27 2 +--5 AF E%sT 1976 ++-5 u E%sT 1976 + -5 - EST 2006 +--5 AF E%sT +-R AM 1946 o - Ap lastSun 2 1 D +-R AM 1946 o - S lastSun 2 0 S +-R AM 1953 1954 - Ap lastSun 2 1 D +-R AM 1953 1959 - S lastSun 2 0 S +-R AM 1955 o - May 1 0 1 D +-R AM 1956 1963 - Ap lastSun 2 1 D +-R AM 1960 o - O lastSun 2 0 S +-R AM 1961 o - S lastSun 2 0 S +-R AM 1962 1963 - O lastSun 2 0 S ++-5 u E%sT ++R V 1946 o - Ap lastSun 2 1 D ++R V 1946 o - S lastSun 2 0 S ++R V 1953 1954 - Ap lastSun 2 1 D ++R V 1953 1959 - S lastSun 2 0 S ++R V 1955 o - May 1 0 1 D ++R V 1956 1963 - Ap lastSun 2 1 D ++R V 1960 o - O lastSun 2 0 S ++R V 1961 o - S lastSun 2 0 S ++R V 1962 1963 - O lastSun 2 0 S + Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 12:9:53 +--6 AF C%sT 1946 +--6 AM C%sT 1964 Ap 26 2 ++-6 u C%sT 1946 ++-6 V C%sT 1964 Ap 26 2 + -5 - EST 1969 +--5 AF E%sT 1971 ++-5 u E%sT 1971 + -5 - EST 2006 Ap 2 2 +--6 AF C%sT 2007 N 4 2 +--5 AF E%sT +-R AN 1946 o - Ap lastSun 2 1 D +-R AN 1946 o - S lastSun 2 0 S +-R AN 1953 1954 - Ap lastSun 2 1 D +-R AN 1953 1959 - S lastSun 2 0 S +-R AN 1955 o - May 1 0 1 D +-R AN 1956 1963 - Ap lastSun 2 1 D +-R AN 1960 o - O lastSun 2 0 S +-R AN 1961 o - S lastSun 2 0 S +-R AN 1962 1963 - O lastSun 2 0 S ++-6 u C%sT 2007 N 4 2 ++-5 u E%sT ++R Pe 1946 o - Ap lastSun 2 1 D ++R Pe 1946 o - S lastSun 2 0 S ++R Pe 1953 1954 - Ap lastSun 2 1 D ++R Pe 1953 1959 - S lastSun 2 0 S ++R Pe 1955 o - May 1 0 1 D ++R Pe 1956 1963 - Ap lastSun 2 1 D ++R Pe 1960 o - O lastSun 2 0 S ++R Pe 1961 o - S lastSun 2 0 S ++R Pe 1962 1963 - O lastSun 2 0 S + Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 12:12:57 +--6 AF C%sT 1946 +--6 AN C%sT 1964 Ap 26 2 ++-6 u C%sT 1946 ++-6 Pe C%sT 1964 Ap 26 2 + -5 - EST 1969 +--5 AF E%sT 1971 ++-5 u E%sT 1971 + -5 - EST 2006 Ap 2 2 +--6 AF C%sT +-R AO 1955 o - May 1 0 1 D +-R AO 1955 1960 - S lastSun 2 0 S +-R AO 1956 1964 - Ap lastSun 2 1 D +-R AO 1961 1964 - O lastSun 2 0 S ++-6 u C%sT ++R Pi 1955 o - May 1 0 1 D ++R Pi 1955 1960 - S lastSun 2 0 S ++R Pi 1956 1964 - Ap lastSun 2 1 D ++R Pi 1961 1964 - O lastSun 2 0 S + Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 12:10:53 +--6 AF C%sT 1955 +--6 AO C%sT 1965 Ap 25 2 ++-6 u C%sT 1955 ++-6 Pi C%sT 1965 Ap 25 2 + -5 - EST 1966 O 30 2 +--6 AF C%sT 1977 O 30 2 ++-6 u C%sT 1977 O 30 2 + -5 - EST 2006 Ap 2 2 +--6 AF C%sT 2007 N 4 2 +--5 AF E%sT +-R AP 1947 1961 - Ap lastSun 2 1 D +-R AP 1947 1954 - S lastSun 2 0 S +-R AP 1955 1956 - O lastSun 2 0 S +-R AP 1957 1958 - S lastSun 2 0 S +-R AP 1959 1961 - O lastSun 2 0 S ++-6 u C%sT 2007 N 4 2 ++-5 u E%sT ++R St 1947 1961 - Ap lastSun 2 1 D ++R St 1947 1954 - S lastSun 2 0 S ++R St 1955 1956 - O lastSun 2 0 S ++R St 1957 1958 - S lastSun 2 0 S ++R St 1959 1961 - O lastSun 2 0 S + Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 12:13:30 +--6 AF C%sT 1947 +--6 AP C%sT 1962 Ap 29 2 ++-6 u C%sT 1947 ++-6 St C%sT 1962 Ap 29 2 + -5 - EST 1963 O 27 2 +--6 AF C%sT 1991 O 27 2 ++-6 u C%sT 1991 O 27 2 + -5 - EST 2006 Ap 2 2 +--6 AF C%sT +-R AQ 1946 1960 - Ap lastSun 2 1 D +-R AQ 1946 1954 - S lastSun 2 0 S +-R AQ 1955 1956 - O lastSun 2 0 S +-R AQ 1957 1960 - S lastSun 2 0 S ++-6 u C%sT ++R Pu 1946 1960 - Ap lastSun 2 1 D ++R Pu 1946 1954 - S lastSun 2 0 S ++R Pu 1955 1956 - O lastSun 2 0 S ++R Pu 1957 1960 - S lastSun 2 0 S + Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 12:13:35 +--6 AF C%sT 1946 +--6 AQ C%sT 1961 Ap 30 2 ++-6 u C%sT 1946 ++-6 Pu C%sT 1961 Ap 30 2 + -5 - EST 1969 +--5 AF E%sT 1971 ++-5 u E%sT 1971 + -5 - EST 2006 Ap 2 2 +--6 AF C%sT 2007 Mar 11 2 +--5 AF E%sT ++-6 u C%sT 2007 Mar 11 2 ++-5 u E%sT + Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 12:19:44 +--6 AF C%sT 1954 Ap 25 2 ++-6 u C%sT 1954 Ap 25 2 + -5 - EST 1969 +--5 AF E%sT 1973 ++-5 u E%sT 1973 + -5 - EST 2006 +--5 AF E%sT +-R AR 1921 o - May 1 2 1 D +-R AR 1921 o - S 1 2 0 S +-R AR 1941 1961 - Ap lastSun 2 1 D +-R AR 1941 o - S lastSun 2 0 S +-R AR 1946 o - Jun 2 2 0 S +-R AR 1950 1955 - S lastSun 2 0 S +-R AR 1956 1960 - O lastSun 2 0 S ++-5 u E%sT ++R v 1921 o - May 1 2 1 D ++R v 1921 o - S 1 2 0 S ++R v 1941 1961 - Ap lastSun 2 1 D ++R v 1941 o - S lastSun 2 0 S ++R v 1946 o - Jun 2 2 0 S ++R v 1950 1955 - S lastSun 2 0 S ++R v 1956 1960 - O lastSun 2 0 S + Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 12:16:58 +--6 AF C%sT 1921 +--6 AR C%sT 1942 +--6 AF C%sT 1946 +--6 AR C%sT 1961 Jul 23 2 ++-6 u C%sT 1921 ++-6 v C%sT 1942 ++-6 u C%sT 1946 ++-6 v C%sT 1961 Jul 23 2 + -5 - EST 1968 +--5 AF E%sT 1974 Ja 6 2 ++-5 u E%sT 1974 Ja 6 2 + -6 1 CDT 1974 O 27 2 +--5 AF E%sT ++-5 u E%sT + Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 12:20:36 +--6 AF C%sT 1946 ++-6 u C%sT 1946 + -6 - CST 1968 +--6 AF C%sT 2000 O 29 2 +--5 AF E%sT +-R AS 1948 o - Ap lastSun 2 1 D +-R AS 1948 o - S lastSun 2 0 S ++-6 u C%sT 2000 O 29 2 ++-5 u E%sT ++R Dt 1948 o - Ap lastSun 2 1 D ++R Dt 1948 o - S lastSun 2 0 S + Z America/Detroit -5:32:11 - LMT 1905 + -6 - CST 1915 May 15 2 + -5 - EST 1942 +--5 AF E%sT 1946 +--5 AS E%sT 1973 +--5 AF E%sT 1975 ++-5 u E%sT 1946 ++-5 Dt E%sT 1973 ++-5 u E%sT 1975 + -5 - EST 1975 Ap 27 2 +--5 AF E%sT +-R AT 1946 o - Ap lastSun 2 1 D +-R AT 1946 o - S lastSun 2 0 S +-R AT 1966 o - Ap lastSun 2 1 D +-R AT 1966 o - O lastSun 2 0 S ++-5 u E%sT ++R Me 1946 o - Ap lastSun 2 1 D ++R Me 1946 o - S lastSun 2 0 S ++R Me 1966 o - Ap lastSun 2 1 D ++R Me 1966 o - O lastSun 2 0 S + Z America/Menominee -5:50:27 - LMT 1885 S 18 12 +--6 AF C%sT 1946 +--6 AT C%sT 1969 Ap 27 2 ++-6 u C%sT 1946 ++-6 Me C%sT 1969 Ap 27 2 + -5 - EST 1973 Ap 29 2 +--6 AF C%sT +-R AU 1918 o - Ap 14 2 1 D +-R AU 1918 o - O 27 2 0 S +-R AU 1942 o - F 9 2 1 W +-R AU 1945 o - Au 14 23u 1 P +-R AU 1945 o - S 30 2 0 S +-R AU 1974 1986 - Ap lastSun 2 1 D +-R AU 1974 2006 - O lastSun 2 0 S +-R AU 1987 2006 - Ap Sun>=1 2 1 D +-R AU 2007 ma - Mar Sun>=8 2 1 D +-R AU 2007 ma - N Sun>=1 2 0 S +-R AV 1917 o - Ap 8 2 1 D +-R AV 1917 o - S 17 2 0 S +-R AV 1919 o - May 5 23 1 D +-R AV 1919 o - Au 12 23 0 S +-R AV 1920 1935 - May Sun>=1 23 1 D +-R AV 1920 1935 - O lastSun 23 0 S +-R AV 1936 1941 - May M>=9 0 1 D +-R AV 1936 1941 - O M>=2 0 0 S +-R AV 1946 1950 - May Sun>=8 2 1 D +-R AV 1946 1950 - O Sun>=2 2 0 S +-R AV 1951 1986 - Ap lastSun 2 1 D +-R AV 1951 1959 - S lastSun 2 0 S +-R AV 1960 1986 - O lastSun 2 0 S +-R AV 1987 o - Ap Sun>=1 0:1 1 D +-R AV 1987 2006 - O lastSun 0:1 0 S +-R AV 1988 o - Ap Sun>=1 0:1 2 DD +-R AV 1989 2006 - Ap Sun>=1 0:1 1 D +-R AV 2007 2011 - Mar Sun>=8 0:1 1 D +-R AV 2007 2010 - N Sun>=1 0:1 0 S ++-6 u C%sT ++R C 1918 o - Ap 14 2 1 D ++R C 1918 o - O 27 2 0 S ++R C 1942 o - F 9 2 1 W ++R C 1945 o - Au 14 23u 1 P ++R C 1945 o - S 30 2 0 S ++R C 1974 1986 - Ap lastSun 2 1 D ++R C 1974 2006 - O lastSun 2 0 S ++R C 1987 2006 - Ap Sun>=1 2 1 D ++R C 2007 ma - Mar Sun>=8 2 1 D ++R C 2007 ma - N Sun>=1 2 0 S ++R j 1917 o - Ap 8 2 1 D ++R j 1917 o - S 17 2 0 S ++R j 1919 o - May 5 23 1 D ++R j 1919 o - Au 12 23 0 S ++R j 1920 1935 - May Sun>=1 23 1 D ++R j 1920 1935 - O lastSun 23 0 S ++R j 1936 1941 - May M>=9 0 1 D ++R j 1936 1941 - O M>=2 0 0 S ++R j 1946 1950 - May Sun>=8 2 1 D ++R j 1946 1950 - O Sun>=2 2 0 S ++R j 1951 1986 - Ap lastSun 2 1 D ++R j 1951 1959 - S lastSun 2 0 S ++R j 1960 1986 - O lastSun 2 0 S ++R j 1987 o - Ap Sun>=1 0:1 1 D ++R j 1987 2006 - O lastSun 0:1 0 S ++R j 1988 o - Ap Sun>=1 0:1 2 DD ++R j 1989 2006 - Ap Sun>=1 0:1 1 D ++R j 2007 2011 - Mar Sun>=8 0:1 1 D ++R j 2007 2010 - N Sun>=1 0:1 0 S + Z America/St_Johns -3:30:52 - LMT 1884 +--3:30:52 AV N%sT 1918 +--3:30:52 AU N%sT 1919 +--3:30:52 AV N%sT 1935 Mar 30 +--3:30 AV N%sT 1942 May 11 +--3:30 AU N%sT 1946 +--3:30 AV N%sT 2011 N +--3:30 AU N%sT ++-3:30:52 j N%sT 1918 ++-3:30:52 C N%sT 1919 ++-3:30:52 j N%sT 1935 Mar 30 ++-3:30 j N%sT 1942 May 11 ++-3:30 C N%sT 1946 ++-3:30 j N%sT 2011 N ++-3:30 C N%sT + Z America/Goose_Bay -4:1:40 - LMT 1884 + -3:30:52 - NST 1918 +--3:30:52 AU N%sT 1919 ++-3:30:52 C N%sT 1919 + -3:30:52 - NST 1935 Mar 30 + -3:30 - NST 1936 +--3:30 AV N%sT 1942 May 11 +--3:30 AU N%sT 1946 +--3:30 AV N%sT 1966 Mar 15 2 +--4 AV A%sT 2011 N +--4 AU A%sT +-R AW 1916 o - Ap 1 0 1 D +-R AW 1916 o - O 1 0 0 S +-R AW 1920 o - May 9 0 1 D +-R AW 1920 o - Au 29 0 0 S +-R AW 1921 o - May 6 0 1 D +-R AW 1921 1922 - S 5 0 0 S +-R AW 1922 o - Ap 30 0 1 D +-R AW 1923 1925 - May Sun>=1 0 1 D +-R AW 1923 o - S 4 0 0 S +-R AW 1924 o - S 15 0 0 S +-R AW 1925 o - S 28 0 0 S +-R AW 1926 o - May 16 0 1 D +-R AW 1926 o - S 13 0 0 S +-R AW 1927 o - May 1 0 1 D +-R AW 1927 o - S 26 0 0 S +-R AW 1928 1931 - May Sun>=8 0 1 D +-R AW 1928 o - S 9 0 0 S +-R AW 1929 o - S 3 0 0 S +-R AW 1930 o - S 15 0 0 S +-R AW 1931 1932 - S M>=24 0 0 S +-R AW 1932 o - May 1 0 1 D +-R AW 1933 o - Ap 30 0 1 D +-R AW 1933 o - O 2 0 0 S +-R AW 1934 o - May 20 0 1 D +-R AW 1934 o - S 16 0 0 S +-R AW 1935 o - Jun 2 0 1 D +-R AW 1935 o - S 30 0 0 S +-R AW 1936 o - Jun 1 0 1 D +-R AW 1936 o - S 14 0 0 S +-R AW 1937 1938 - May Sun>=1 0 1 D +-R AW 1937 1941 - S M>=24 0 0 S +-R AW 1939 o - May 28 0 1 D +-R AW 1940 1941 - May Sun>=1 0 1 D +-R AW 1946 1949 - Ap lastSun 2 1 D +-R AW 1946 1949 - S lastSun 2 0 S +-R AW 1951 1954 - Ap lastSun 2 1 D +-R AW 1951 1954 - S lastSun 2 0 S +-R AW 1956 1959 - Ap lastSun 2 1 D +-R AW 1956 1959 - S lastSun 2 0 S +-R AW 1962 1973 - Ap lastSun 2 1 D +-R AW 1962 1973 - O lastSun 2 0 S ++-3:30 j N%sT 1942 May 11 ++-3:30 C N%sT 1946 ++-3:30 j N%sT 1966 Mar 15 2 ++-4 j A%sT 2011 N ++-4 C A%sT ++R H 1916 o - Ap 1 0 1 D ++R H 1916 o - O 1 0 0 S ++R H 1920 o - May 9 0 1 D ++R H 1920 o - Au 29 0 0 S ++R H 1921 o - May 6 0 1 D ++R H 1921 1922 - S 5 0 0 S ++R H 1922 o - Ap 30 0 1 D ++R H 1923 1925 - May Sun>=1 0 1 D ++R H 1923 o - S 4 0 0 S ++R H 1924 o - S 15 0 0 S ++R H 1925 o - S 28 0 0 S ++R H 1926 o - May 16 0 1 D ++R H 1926 o - S 13 0 0 S ++R H 1927 o - May 1 0 1 D ++R H 1927 o - S 26 0 0 S ++R H 1928 1931 - May Sun>=8 0 1 D ++R H 1928 o - S 9 0 0 S ++R H 1929 o - S 3 0 0 S ++R H 1930 o - S 15 0 0 S ++R H 1931 1932 - S M>=24 0 0 S ++R H 1932 o - May 1 0 1 D ++R H 1933 o - Ap 30 0 1 D ++R H 1933 o - O 2 0 0 S ++R H 1934 o - May 20 0 1 D ++R H 1934 o - S 16 0 0 S ++R H 1935 o - Jun 2 0 1 D ++R H 1935 o - S 30 0 0 S ++R H 1936 o - Jun 1 0 1 D ++R H 1936 o - S 14 0 0 S ++R H 1937 1938 - May Sun>=1 0 1 D ++R H 1937 1941 - S M>=24 0 0 S ++R H 1939 o - May 28 0 1 D ++R H 1940 1941 - May Sun>=1 0 1 D ++R H 1946 1949 - Ap lastSun 2 1 D ++R H 1946 1949 - S lastSun 2 0 S ++R H 1951 1954 - Ap lastSun 2 1 D ++R H 1951 1954 - S lastSun 2 0 S ++R H 1956 1959 - Ap lastSun 2 1 D ++R H 1956 1959 - S lastSun 2 0 S ++R H 1962 1973 - Ap lastSun 2 1 D ++R H 1962 1973 - O lastSun 2 0 S + Z America/Halifax -4:14:24 - LMT 1902 Jun 15 +--4 AW A%sT 1918 +--4 AU A%sT 1919 +--4 AW A%sT 1942 F 9 2s +--4 AU A%sT 1946 +--4 AW A%sT 1974 +--4 AU A%sT ++-4 H A%sT 1918 ++-4 C A%sT 1919 ++-4 H A%sT 1942 F 9 2s ++-4 C A%sT 1946 ++-4 H A%sT 1974 ++-4 C A%sT + Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 +--4 AU A%sT 1953 +--4 AW A%sT 1954 ++-4 C A%sT 1953 ++-4 H A%sT 1954 + -4 - AST 1972 +--4 AW A%sT 1974 +--4 AU A%sT +-R AX 1933 1935 - Jun Sun>=8 1 1 D +-R AX 1933 1935 - S Sun>=8 1 0 S +-R AX 1936 1938 - Jun Sun>=1 1 1 D +-R AX 1936 1938 - S Sun>=1 1 0 S +-R AX 1939 o - May 27 1 1 D +-R AX 1939 1941 - S Sat>=21 1 0 S +-R AX 1940 o - May 19 1 1 D +-R AX 1941 o - May 4 1 1 D +-R AX 1946 1972 - Ap lastSun 2 1 D +-R AX 1946 1956 - S lastSun 2 0 S +-R AX 1957 1972 - O lastSun 2 0 S +-R AX 1993 2006 - Ap Sun>=1 0:1 1 D +-R AX 1993 2006 - O lastSun 0:1 0 S ++-4 H A%sT 1974 ++-4 C A%sT ++R o 1933 1935 - Jun Sun>=8 1 1 D ++R o 1933 1935 - S Sun>=8 1 0 S ++R o 1936 1938 - Jun Sun>=1 1 1 D ++R o 1936 1938 - S Sun>=1 1 0 S ++R o 1939 o - May 27 1 1 D ++R o 1939 1941 - S Sat>=21 1 0 S ++R o 1940 o - May 19 1 1 D ++R o 1941 o - May 4 1 1 D ++R o 1946 1972 - Ap lastSun 2 1 D ++R o 1946 1956 - S lastSun 2 0 S ++R o 1957 1972 - O lastSun 2 0 S ++R o 1993 2006 - Ap Sun>=1 0:1 1 D ++R o 1993 2006 - O lastSun 0:1 0 S + Z America/Moncton -4:19:8 - LMT 1883 D 9 + -5 - EST 1902 Jun 15 +--4 AU A%sT 1933 +--4 AX A%sT 1942 +--4 AU A%sT 1946 +--4 AX A%sT 1973 +--4 AU A%sT 1993 +--4 AX A%sT 2007 +--4 AU A%sT ++-4 C A%sT 1933 ++-4 o A%sT 1942 ++-4 C A%sT 1946 ++-4 o A%sT 1973 ++-4 C A%sT 1993 ++-4 o A%sT 2007 ++-4 C A%sT + Z America/Blanc-Sablon -3:48:28 - LMT 1884 +--4 AU A%sT 1970 ++-4 C A%sT 1970 + -4 - AST +-R AY 1919 o - Mar 30 23:30 1 D +-R AY 1919 o - O 26 0 0 S +-R AY 1920 o - May 2 2 1 D +-R AY 1920 o - S 26 0 0 S +-R AY 1921 o - May 15 2 1 D +-R AY 1921 o - S 15 2 0 S +-R AY 1922 1923 - May Sun>=8 2 1 D +-R AY 1922 1926 - S Sun>=15 2 0 S +-R AY 1924 1927 - May Sun>=1 2 1 D +-R AY 1927 1932 - S lastSun 2 0 S +-R AY 1928 1931 - Ap lastSun 2 1 D +-R AY 1932 o - May 1 2 1 D +-R AY 1933 1940 - Ap lastSun 2 1 D +-R AY 1933 o - O 1 2 0 S +-R AY 1934 1939 - S lastSun 2 0 S +-R AY 1945 1946 - S lastSun 2 0 S +-R AY 1946 o - Ap lastSun 2 1 D +-R AY 1947 1949 - Ap lastSun 0 1 D +-R AY 1947 1948 - S lastSun 0 0 S +-R AY 1949 o - N lastSun 0 0 S +-R AY 1950 1973 - Ap lastSun 2 1 D +-R AY 1950 o - N lastSun 2 0 S +-R AY 1951 1956 - S lastSun 2 0 S +-R AY 1957 1973 - O lastSun 2 0 S ++R t 1919 o - Mar 30 23:30 1 D ++R t 1919 o - O 26 0 0 S ++R t 1920 o - May 2 2 1 D ++R t 1920 o - S 26 0 0 S ++R t 1921 o - May 15 2 1 D ++R t 1921 o - S 15 2 0 S ++R t 1922 1923 - May Sun>=8 2 1 D ++R t 1922 1926 - S Sun>=15 2 0 S ++R t 1924 1927 - May Sun>=1 2 1 D ++R t 1927 1932 - S lastSun 2 0 S ++R t 1928 1931 - Ap lastSun 2 1 D ++R t 1932 o - May 1 2 1 D ++R t 1933 1940 - Ap lastSun 2 1 D ++R t 1933 o - O 1 2 0 S ++R t 1934 1939 - S lastSun 2 0 S ++R t 1945 1946 - S lastSun 2 0 S ++R t 1946 o - Ap lastSun 2 1 D ++R t 1947 1949 - Ap lastSun 0 1 D ++R t 1947 1948 - S lastSun 0 0 S ++R t 1949 o - N lastSun 0 0 S ++R t 1950 1973 - Ap lastSun 2 1 D ++R t 1950 o - N lastSun 2 0 S ++R t 1951 1956 - S lastSun 2 0 S ++R t 1957 1973 - O lastSun 2 0 S + Z America/Toronto -5:17:32 - LMT 1895 +--5 AU E%sT 1919 +--5 AY E%sT 1942 F 9 2s +--5 AU E%sT 1946 +--5 AY E%sT 1974 +--5 AU E%sT ++-5 C E%sT 1919 ++-5 t E%sT 1942 F 9 2s ++-5 C E%sT 1946 ++-5 t E%sT 1974 ++-5 C E%sT + Z America/Thunder_Bay -5:57 - LMT 1895 + -6 - CST 1910 + -5 - EST 1942 +--5 AU E%sT 1970 +--5 AY E%sT 1973 ++-5 C E%sT 1970 ++-5 t E%sT 1973 + -5 - EST 1974 +--5 AU E%sT ++-5 C E%sT + Z America/Nipigon -5:53:4 - LMT 1895 +--5 AU E%sT 1940 S 29 ++-5 C E%sT 1940 S 29 + -5 1 EDT 1942 F 9 2s +--5 AU E%sT ++-5 C E%sT + Z America/Rainy_River -6:18:16 - LMT 1895 +--6 AU C%sT 1940 S 29 ++-6 C C%sT 1940 S 29 + -6 1 CDT 1942 F 9 2s +--6 AU C%sT ++-6 C C%sT + Z America/Atikokan -6:6:28 - LMT 1895 +--6 AU C%sT 1940 S 29 ++-6 C C%sT 1940 S 29 + -6 1 CDT 1942 F 9 2s +--6 AU C%sT 1945 S 30 2 ++-6 C C%sT 1945 S 30 2 + -5 - EST +-R AZ 1916 o - Ap 23 0 1 D +-R AZ 1916 o - S 17 0 0 S +-R AZ 1918 o - Ap 14 2 1 D +-R AZ 1918 o - O 27 2 0 S +-R AZ 1937 o - May 16 2 1 D +-R AZ 1937 o - S 26 2 0 S +-R AZ 1942 o - F 9 2 1 W +-R AZ 1945 o - Au 14 23u 1 P +-R AZ 1945 o - S lastSun 2 0 S +-R AZ 1946 o - May 12 2 1 D +-R AZ 1946 o - O 13 2 0 S +-R AZ 1947 1949 - Ap lastSun 2 1 D +-R AZ 1947 1949 - S lastSun 2 0 S +-R AZ 1950 o - May 1 2 1 D +-R AZ 1950 o - S 30 2 0 S +-R AZ 1951 1960 - Ap lastSun 2 1 D +-R AZ 1951 1958 - S lastSun 2 0 S +-R AZ 1959 o - O lastSun 2 0 S +-R AZ 1960 o - S lastSun 2 0 S +-R AZ 1963 o - Ap lastSun 2 1 D +-R AZ 1963 o - S 22 2 0 S +-R AZ 1966 1986 - Ap lastSun 2s 1 D +-R AZ 1966 2005 - O lastSun 2s 0 S +-R AZ 1987 2005 - Ap Sun>=1 2s 1 D ++R W 1916 o - Ap 23 0 1 D ++R W 1916 o - S 17 0 0 S ++R W 1918 o - Ap 14 2 1 D ++R W 1918 o - O 27 2 0 S ++R W 1937 o - May 16 2 1 D ++R W 1937 o - S 26 2 0 S ++R W 1942 o - F 9 2 1 W ++R W 1945 o - Au 14 23u 1 P ++R W 1945 o - S lastSun 2 0 S ++R W 1946 o - May 12 2 1 D ++R W 1946 o - O 13 2 0 S ++R W 1947 1949 - Ap lastSun 2 1 D ++R W 1947 1949 - S lastSun 2 0 S ++R W 1950 o - May 1 2 1 D ++R W 1950 o - S 30 2 0 S ++R W 1951 1960 - Ap lastSun 2 1 D ++R W 1951 1958 - S lastSun 2 0 S ++R W 1959 o - O lastSun 2 0 S ++R W 1960 o - S lastSun 2 0 S ++R W 1963 o - Ap lastSun 2 1 D ++R W 1963 o - S 22 2 0 S ++R W 1966 1986 - Ap lastSun 2s 1 D ++R W 1966 2005 - O lastSun 2s 0 S ++R W 1987 2005 - Ap Sun>=1 2s 1 D + Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16 +--6 AZ C%sT 2006 +--6 AU C%sT +-R Aa 1918 o - Ap 14 2 1 D +-R Aa 1918 o - O 27 2 0 S +-R Aa 1930 1934 - May Sun>=1 0 1 D +-R Aa 1930 1934 - O Sun>=1 0 0 S +-R Aa 1937 1941 - Ap Sun>=8 0 1 D +-R Aa 1937 o - O Sun>=8 0 0 S +-R Aa 1938 o - O Sun>=1 0 0 S +-R Aa 1939 1941 - O Sun>=8 0 0 S +-R Aa 1942 o - F 9 2 1 W +-R Aa 1945 o - Au 14 23u 1 P +-R Aa 1945 o - S lastSun 2 0 S +-R Aa 1946 o - Ap Sun>=8 2 1 D +-R Aa 1946 o - O Sun>=8 2 0 S +-R Aa 1947 1957 - Ap lastSun 2 1 D +-R Aa 1947 1957 - S lastSun 2 0 S +-R Aa 1959 o - Ap lastSun 2 1 D +-R Aa 1959 o - O lastSun 2 0 S +-R Ab 1957 o - Ap lastSun 2 1 D +-R Ab 1957 o - O lastSun 2 0 S +-R Ab 1959 1961 - Ap lastSun 2 1 D +-R Ab 1959 o - O lastSun 2 0 S +-R Ab 1960 1961 - S lastSun 2 0 S ++-6 W C%sT 2006 ++-6 C C%sT ++R r 1918 o - Ap 14 2 1 D ++R r 1918 o - O 27 2 0 S ++R r 1930 1934 - May Sun>=1 0 1 D ++R r 1930 1934 - O Sun>=1 0 0 S ++R r 1937 1941 - Ap Sun>=8 0 1 D ++R r 1937 o - O Sun>=8 0 0 S ++R r 1938 o - O Sun>=1 0 0 S ++R r 1939 1941 - O Sun>=8 0 0 S ++R r 1942 o - F 9 2 1 W ++R r 1945 o - Au 14 23u 1 P ++R r 1945 o - S lastSun 2 0 S ++R r 1946 o - Ap Sun>=8 2 1 D ++R r 1946 o - O Sun>=8 2 0 S ++R r 1947 1957 - Ap lastSun 2 1 D ++R r 1947 1957 - S lastSun 2 0 S ++R r 1959 o - Ap lastSun 2 1 D ++R r 1959 o - O lastSun 2 0 S ++R Sw 1957 o - Ap lastSun 2 1 D ++R Sw 1957 o - O lastSun 2 0 S ++R Sw 1959 1961 - Ap lastSun 2 1 D ++R Sw 1959 o - O lastSun 2 0 S ++R Sw 1960 1961 - S lastSun 2 0 S + Z America/Regina -6:58:36 - LMT 1905 S +--7 Aa M%sT 1960 Ap lastSun 2 ++-7 r M%sT 1960 Ap lastSun 2 + -6 - CST + Z America/Swift_Current -7:11:20 - LMT 1905 S +--7 AU M%sT 1946 Ap lastSun 2 +--7 Aa M%sT 1950 +--7 Ab M%sT 1972 Ap lastSun 2 ++-7 C M%sT 1946 Ap lastSun 2 ++-7 r M%sT 1950 ++-7 Sw M%sT 1972 Ap lastSun 2 + -6 - CST +-R Ac 1918 1919 - Ap Sun>=8 2 1 D +-R Ac 1918 o - O 27 2 0 S +-R Ac 1919 o - May 27 2 0 S +-R Ac 1920 1923 - Ap lastSun 2 1 D +-R Ac 1920 o - O lastSun 2 0 S +-R Ac 1921 1923 - S lastSun 2 0 S +-R Ac 1942 o - F 9 2 1 W +-R Ac 1945 o - Au 14 23u 1 P +-R Ac 1945 o - S lastSun 2 0 S +-R Ac 1947 o - Ap lastSun 2 1 D +-R Ac 1947 o - S lastSun 2 0 S +-R Ac 1967 o - Ap lastSun 2 1 D +-R Ac 1967 o - O lastSun 2 0 S +-R Ac 1969 o - Ap lastSun 2 1 D +-R Ac 1969 o - O lastSun 2 0 S +-R Ac 1972 1986 - Ap lastSun 2 1 D +-R Ac 1972 2006 - O lastSun 2 0 S ++R Ed 1918 1919 - Ap Sun>=8 2 1 D ++R Ed 1918 o - O 27 2 0 S ++R Ed 1919 o - May 27 2 0 S ++R Ed 1920 1923 - Ap lastSun 2 1 D ++R Ed 1920 o - O lastSun 2 0 S ++R Ed 1921 1923 - S lastSun 2 0 S ++R Ed 1942 o - F 9 2 1 W ++R Ed 1945 o - Au 14 23u 1 P ++R Ed 1945 o - S lastSun 2 0 S ++R Ed 1947 o - Ap lastSun 2 1 D ++R Ed 1947 o - S lastSun 2 0 S ++R Ed 1967 o - Ap lastSun 2 1 D ++R Ed 1967 o - O lastSun 2 0 S ++R Ed 1969 o - Ap lastSun 2 1 D ++R Ed 1969 o - O lastSun 2 0 S ++R Ed 1972 1986 - Ap lastSun 2 1 D ++R Ed 1972 2006 - O lastSun 2 0 S + Z America/Edmonton -7:33:52 - LMT 1906 S +--7 Ac M%sT 1987 +--7 AU M%sT +-R Ad 1918 o - Ap 14 2 1 D +-R Ad 1918 o - O 27 2 0 S +-R Ad 1942 o - F 9 2 1 W +-R Ad 1945 o - Au 14 23u 1 P +-R Ad 1945 o - S 30 2 0 S +-R Ad 1946 1986 - Ap lastSun 2 1 D +-R Ad 1946 o - O 13 2 0 S +-R Ad 1947 1961 - S lastSun 2 0 S +-R Ad 1962 2006 - O lastSun 2 0 S ++-7 Ed M%sT 1987 ++-7 C M%sT ++R Va 1918 o - Ap 14 2 1 D ++R Va 1918 o - O 27 2 0 S ++R Va 1942 o - F 9 2 1 W ++R Va 1945 o - Au 14 23u 1 P ++R Va 1945 o - S 30 2 0 S ++R Va 1946 1986 - Ap lastSun 2 1 D ++R Va 1946 o - O 13 2 0 S ++R Va 1947 1961 - S lastSun 2 0 S ++R Va 1962 2006 - O lastSun 2 0 S + Z America/Vancouver -8:12:28 - LMT 1884 +--8 Ad P%sT 1987 +--8 AU P%sT ++-8 Va P%sT 1987 ++-8 C P%sT + Z America/Dawson_Creek -8:0:56 - LMT 1884 +--8 AU P%sT 1947 +--8 Ad P%sT 1972 Au 30 2 ++-8 C P%sT 1947 ++-8 Va P%sT 1972 Au 30 2 + -7 - MST + Z America/Fort_Nelson -8:10:47 - LMT 1884 +--8 Ad P%sT 1946 ++-8 Va P%sT 1946 + -8 - PST 1947 +--8 Ad P%sT 1987 +--8 AU P%sT 2015 Mar 8 2 ++-8 Va P%sT 1987 ++-8 C P%sT 2015 Mar 8 2 + -7 - MST + Z America/Creston -7:46:4 - LMT 1884 + -7 - MST 1916 O + -8 - PST 1918 Jun 2 + -7 - MST +-R Ae 1918 o - Ap 14 2 1 D +-R Ae 1918 o - O 27 2 0 S +-R Ae 1919 o - May 25 2 1 D +-R Ae 1919 o - N 1 0 0 S +-R Ae 1942 o - F 9 2 1 W +-R Ae 1945 o - Au 14 23u 1 P +-R Ae 1945 o - S 30 2 0 S +-R Ae 1965 o - Ap lastSun 0 2 DD +-R Ae 1965 o - O lastSun 2 0 S +-R Ae 1980 1986 - Ap lastSun 2 1 D +-R Ae 1980 2006 - O lastSun 2 0 S +-R Ae 1987 2006 - Ap Sun>=1 2 1 D ++R Y 1918 o - Ap 14 2 1 D ++R Y 1918 o - O 27 2 0 S ++R Y 1919 o - May 25 2 1 D ++R Y 1919 o - N 1 0 0 S ++R Y 1942 o - F 9 2 1 W ++R Y 1945 o - Au 14 23u 1 P ++R Y 1945 o - S 30 2 0 S ++R Y 1965 o - Ap lastSun 0 2 DD ++R Y 1965 o - O lastSun 2 0 S ++R Y 1980 1986 - Ap lastSun 2 1 D ++R Y 1980 2006 - O lastSun 2 0 S ++R Y 1987 2006 - Ap Sun>=1 2 1 D + Z America/Pangnirtung 0 - -00 1921 +--4 Ae A%sT 1995 Ap Sun>=1 2 +--5 AU E%sT 1999 O 31 2 +--6 AU C%sT 2000 O 29 2 +--5 AU E%sT ++-4 Y A%sT 1995 Ap Sun>=1 2 ++-5 C E%sT 1999 O 31 2 ++-6 C C%sT 2000 O 29 2 ++-5 C E%sT + Z America/Iqaluit 0 - -00 1942 Au +--5 Ae E%sT 1999 O 31 2 +--6 AU C%sT 2000 O 29 2 +--5 AU E%sT ++-5 Y E%sT 1999 O 31 2 ++-6 C C%sT 2000 O 29 2 ++-5 C E%sT + Z America/Resolute 0 - -00 1947 Au 31 +--6 Ae C%sT 2000 O 29 2 ++-6 Y C%sT 2000 O 29 2 + -5 - EST 2001 Ap 1 3 +--6 AU C%sT 2006 O 29 2 ++-6 C C%sT 2006 O 29 2 + -5 - EST 2007 Mar 11 3 +--6 AU C%sT ++-6 C C%sT + Z America/Rankin_Inlet 0 - -00 1957 +--6 Ae C%sT 2000 O 29 2 ++-6 Y C%sT 2000 O 29 2 + -5 - EST 2001 Ap 1 3 +--6 AU C%sT ++-6 C C%sT + Z America/Cambridge_Bay 0 - -00 1920 +--7 Ae M%sT 1999 O 31 2 +--6 AU C%sT 2000 O 29 2 ++-7 Y M%sT 1999 O 31 2 ++-6 C C%sT 2000 O 29 2 + -5 - EST 2000 N 5 + -6 - CST 2001 Ap 1 3 +--7 AU M%sT ++-7 C M%sT + Z America/Yellowknife 0 - -00 1935 +--7 Ae M%sT 1980 +--7 AU M%sT ++-7 Y M%sT 1980 ++-7 C M%sT + Z America/Inuvik 0 - -00 1953 +--8 Ae P%sT 1979 Ap lastSun 2 +--7 Ae M%sT 1980 +--7 AU M%sT ++-8 Y P%sT 1979 Ap lastSun 2 ++-7 Y M%sT 1980 ++-7 C M%sT + Z America/Whitehorse -9:0:12 - LMT 1900 Au 20 +--9 Ae Y%sT 1967 May 28 +--8 Ae P%sT 1980 +--8 AU P%sT ++-9 Y Y%sT 1967 May 28 ++-8 Y P%sT 1980 ++-8 C P%sT + Z America/Dawson -9:17:40 - LMT 1900 Au 20 +--9 Ae Y%sT 1973 O 28 +--8 Ae P%sT 1980 +--8 AU P%sT +-R Af 1939 o - F 5 0 1 D +-R Af 1939 o - Jun 25 0 0 S +-R Af 1940 o - D 9 0 1 D +-R Af 1941 o - Ap 1 0 0 S +-R Af 1943 o - D 16 0 1 W +-R Af 1944 o - May 1 0 0 S +-R Af 1950 o - F 12 0 1 D +-R Af 1950 o - Jul 30 0 0 S +-R Af 1996 2000 - Ap Sun>=1 2 1 D +-R Af 1996 2000 - O lastSun 2 0 S +-R Af 2001 o - May Sun>=1 2 1 D +-R Af 2001 o - S lastSun 2 0 S +-R Af 2002 ma - Ap Sun>=1 2 1 D +-R Af 2002 ma - O lastSun 2 0 S ++-9 Y Y%sT 1973 O 28 ++-8 Y P%sT 1980 ++-8 C P%sT ++R m 1939 o - F 5 0 1 D ++R m 1939 o - Jun 25 0 0 S ++R m 1940 o - D 9 0 1 D ++R m 1941 o - Ap 1 0 0 S ++R m 1943 o - D 16 0 1 W ++R m 1944 o - May 1 0 0 S ++R m 1950 o - F 12 0 1 D ++R m 1950 o - Jul 30 0 0 S ++R m 1996 2000 - Ap Sun>=1 2 1 D ++R m 1996 2000 - O lastSun 2 0 S ++R m 2001 o - May Sun>=1 2 1 D ++R m 2001 o - S lastSun 2 0 S ++R m 2002 ma - Ap Sun>=1 2 1 D ++R m 2002 ma - O lastSun 2 0 S + Z America/Cancun -5:47:4 - LMT 1922 Ja 1 0:12:56 + -6 - CST 1981 D 23 +--5 Af E%sT 1998 Au 2 2 +--6 Af C%sT 2015 F 1 2 ++-5 m E%sT 1998 Au 2 2 ++-6 m C%sT 2015 F 1 2 + -5 - EST + Z America/Merida -5:58:28 - LMT 1922 Ja 1 0:1:32 + -6 - CST 1981 D 23 + -5 - EST 1982 D 2 +--6 Af C%sT ++-6 m C%sT + Z America/Matamoros -6:40 - LMT 1921 D 31 23:20 + -6 - CST 1988 +--6 AF C%sT 1989 +--6 Af C%sT 2010 +--6 AF C%sT ++-6 u C%sT 1989 ++-6 m C%sT 2010 ++-6 u C%sT + Z America/Monterrey -6:41:16 - LMT 1921 D 31 23:18:44 + -6 - CST 1988 +--6 AF C%sT 1989 +--6 Af C%sT ++-6 u C%sT 1989 ++-6 m C%sT + Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 0:23:24 + -7 - MST 1927 Jun 10 23 + -6 - CST 1930 N 15 + -7 - MST 1931 May 1 23 + -6 - CST 1931 O + -7 - MST 1932 Ap +--6 Af C%sT 2001 S 30 2 ++-6 m C%sT 2001 S 30 2 + -6 - CST 2002 F 20 +--6 Af C%sT ++-6 m C%sT + Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 0:2:20 + -7 - MST 1927 Jun 10 23 + -6 - CST 1930 N 15 +@@ -3215,10 +3232,10 @@ Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 0:2:20 + -6 - CST 1931 O + -7 - MST 1932 Ap + -6 - CST 1996 +--6 Af C%sT 1998 ++-6 m C%sT 1998 + -6 - CST 1998 Ap Sun>=1 3 +--7 Af M%sT 2010 +--7 AF M%sT ++-7 m M%sT 2010 ++-7 u M%sT + Z America/Chihuahua -7:4:20 - LMT 1921 D 31 23:55:40 + -7 - MST 1927 Jun 10 23 + -6 - CST 1930 N 15 +@@ -3226,9 +3243,9 @@ Z America/Chihuahua -7:4:20 - LMT 1921 D 31 23:55:40 + -6 - CST 1931 O + -7 - MST 1932 Ap + -6 - CST 1996 +--6 Af C%sT 1998 ++-6 m C%sT 1998 + -6 - CST 1998 Ap Sun>=1 3 +--7 Af M%sT ++-7 m M%sT + Z America/Hermosillo -7:23:52 - LMT 1921 D 31 23:36:8 + -7 - MST 1927 Jun 10 23 + -6 - CST 1930 N 15 +@@ -3238,7 +3255,7 @@ Z America/Hermosillo -7:23:52 - LMT 1921 D 31 23:36:8 + -6 - CST 1942 Ap 24 + -7 - MST 1949 Ja 14 + -8 - PST 1970 +--7 Af M%sT 1999 ++-7 m M%sT 1999 + -7 - MST + Z America/Mazatlan -7:5:40 - LMT 1921 D 31 23:54:20 + -7 - MST 1927 Jun 10 23 +@@ -3249,7 +3266,7 @@ Z America/Mazatlan -7:5:40 - LMT 1921 D 31 23:54:20 + -6 - CST 1942 Ap 24 + -7 - MST 1949 Ja 14 + -8 - PST 1970 +--7 Af M%sT ++-7 m M%sT + Z America/Bahia_Banderas -7:1 - LMT 1921 D 31 23:59 + -7 - MST 1927 Jun 10 23 + -6 - CST 1930 N 15 +@@ -3259,8 +3276,8 @@ Z America/Bahia_Banderas -7:1 - LMT 1921 D 31 23:59 + -6 - CST 1942 Ap 24 + -7 - MST 1949 Ja 14 + -8 - PST 1970 +--7 Af M%sT 2010 Ap 4 2 +--6 Af C%sT ++-7 m M%sT 2010 Ap 4 2 ++-6 m C%sT + Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 0:11:56 + -7 - MST 1924 + -8 - PST 1927 Jun 10 23 +@@ -3273,315 +3290,315 @@ Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 0:11:56 + -8 - PST 1948 Ap 5 + -8 1 PDT 1949 Ja 14 + -8 - PST 1954 +--8 AJ P%sT 1961 ++-8 CA P%sT 1961 + -8 - PST 1976 +--8 AF P%sT 1996 +--8 Af P%sT 2001 +--8 AF P%sT 2002 F 20 +--8 Af P%sT 2010 +--8 AF P%sT +-R Ag 1964 1975 - O lastSun 2 0 S +-R Ag 1964 1975 - Ap lastSun 2 1 D ++-8 u P%sT 1996 ++-8 m P%sT 2001 ++-8 u P%sT 2002 F 20 ++-8 m P%sT 2010 ++-8 u P%sT ++R BS 1964 1975 - O lastSun 2 0 S ++R BS 1964 1975 - Ap lastSun 2 1 D + Z America/Nassau -5:9:30 - LMT 1912 Mar 2 +--5 Ag E%sT 1976 +--5 AF E%sT +-R Ah 1977 o - Jun 12 2 1 D +-R Ah 1977 1978 - O Sun>=1 2 0 S +-R Ah 1978 1980 - Ap Sun>=15 2 1 D +-R Ah 1979 o - S 30 2 0 S +-R Ah 1980 o - S 25 2 0 S ++-5 BS E%sT 1976 ++-5 u E%sT ++R BB 1977 o - Jun 12 2 1 D ++R BB 1977 1978 - O Sun>=1 2 0 S ++R BB 1978 1980 - Ap Sun>=15 2 1 D ++R BB 1979 o - S 30 2 0 S ++R BB 1980 o - S 25 2 0 S + Z America/Barbados -3:58:29 - LMT 1924 + -3:58:29 - BMT 1932 +--4 Ah A%sT +-R Ai 1918 1942 - O Sun>=2 0 0:30 -0530 +-R Ai 1919 1943 - F Sun>=9 0 0 CST +-R Ai 1973 o - D 5 0 1 CDT +-R Ai 1974 o - F 9 0 0 CST +-R Ai 1982 o - D 18 0 1 CDT +-R Ai 1983 o - F 12 0 0 CST ++-4 BB A%sT ++R BZ 1918 1942 - O Sun>=2 0 0:30 -0530 ++R BZ 1919 1943 - F Sun>=9 0 0 CST ++R BZ 1973 o - D 5 0 1 CDT ++R BZ 1974 o - F 9 0 0 CST ++R BZ 1982 o - D 18 0 1 CDT ++R BZ 1983 o - F 12 0 0 CST + Z America/Belize -5:52:48 - LMT 1912 Ap +--6 Ai %s ++-6 BZ %s + Z Atlantic/Bermuda -4:19:18 - LMT 1930 Ja 1 2 + -4 - AST 1974 Ap 28 2 +--4 AU A%sT 1976 +--4 AF A%sT +-R Aj 1979 1980 - F lastSun 0 1 D +-R Aj 1979 1980 - Jun Sun>=1 0 0 S +-R Aj 1991 1992 - Ja Sat>=15 0 1 D +-R Aj 1991 o - Jul 1 0 0 S +-R Aj 1992 o - Mar 15 0 0 S ++-4 C A%sT 1976 ++-4 u A%sT ++R CR 1979 1980 - F lastSun 0 1 D ++R CR 1979 1980 - Jun Sun>=1 0 0 S ++R CR 1991 1992 - Ja Sat>=15 0 1 D ++R CR 1991 o - Jul 1 0 0 S ++R CR 1992 o - Mar 15 0 0 S + Z America/Costa_Rica -5:36:13 - LMT 1890 + -5:36:13 - SJMT 1921 Ja 15 +--6 Aj C%sT +-R Ak 1928 o - Jun 10 0 1 D +-R Ak 1928 o - O 10 0 0 S +-R Ak 1940 1942 - Jun Sun>=1 0 1 D +-R Ak 1940 1942 - S Sun>=1 0 0 S +-R Ak 1945 1946 - Jun Sun>=1 0 1 D +-R Ak 1945 1946 - S Sun>=1 0 0 S +-R Ak 1965 o - Jun 1 0 1 D +-R Ak 1965 o - S 30 0 0 S +-R Ak 1966 o - May 29 0 1 D +-R Ak 1966 o - O 2 0 0 S +-R Ak 1967 o - Ap 8 0 1 D +-R Ak 1967 1968 - S Sun>=8 0 0 S +-R Ak 1968 o - Ap 14 0 1 D +-R Ak 1969 1977 - Ap lastSun 0 1 D +-R Ak 1969 1971 - O lastSun 0 0 S +-R Ak 1972 1974 - O 8 0 0 S +-R Ak 1975 1977 - O lastSun 0 0 S +-R Ak 1978 o - May 7 0 1 D +-R Ak 1978 1990 - O Sun>=8 0 0 S +-R Ak 1979 1980 - Mar Sun>=15 0 1 D +-R Ak 1981 1985 - May Sun>=5 0 1 D +-R Ak 1986 1989 - Mar Sun>=14 0 1 D +-R Ak 1990 1997 - Ap Sun>=1 0 1 D +-R Ak 1991 1995 - O Sun>=8 0s 0 S +-R Ak 1996 o - O 6 0s 0 S +-R Ak 1997 o - O 12 0s 0 S +-R Ak 1998 1999 - Mar lastSun 0s 1 D +-R Ak 1998 2003 - O lastSun 0s 0 S +-R Ak 2000 2003 - Ap Sun>=1 0s 1 D +-R Ak 2004 o - Mar lastSun 0s 1 D +-R Ak 2006 2010 - O lastSun 0s 0 S +-R Ak 2007 o - Mar Sun>=8 0s 1 D +-R Ak 2008 o - Mar Sun>=15 0s 1 D +-R Ak 2009 2010 - Mar Sun>=8 0s 1 D +-R Ak 2011 o - Mar Sun>=15 0s 1 D +-R Ak 2011 o - N 13 0s 0 S +-R Ak 2012 o - Ap 1 0s 1 D +-R Ak 2012 ma - N Sun>=1 0s 0 S +-R Ak 2013 ma - Mar Sun>=8 0s 1 D ++-6 CR C%sT ++R Q 1928 o - Jun 10 0 1 D ++R Q 1928 o - O 10 0 0 S ++R Q 1940 1942 - Jun Sun>=1 0 1 D ++R Q 1940 1942 - S Sun>=1 0 0 S ++R Q 1945 1946 - Jun Sun>=1 0 1 D ++R Q 1945 1946 - S Sun>=1 0 0 S ++R Q 1965 o - Jun 1 0 1 D ++R Q 1965 o - S 30 0 0 S ++R Q 1966 o - May 29 0 1 D ++R Q 1966 o - O 2 0 0 S ++R Q 1967 o - Ap 8 0 1 D ++R Q 1967 1968 - S Sun>=8 0 0 S ++R Q 1968 o - Ap 14 0 1 D ++R Q 1969 1977 - Ap lastSun 0 1 D ++R Q 1969 1971 - O lastSun 0 0 S ++R Q 1972 1974 - O 8 0 0 S ++R Q 1975 1977 - O lastSun 0 0 S ++R Q 1978 o - May 7 0 1 D ++R Q 1978 1990 - O Sun>=8 0 0 S ++R Q 1979 1980 - Mar Sun>=15 0 1 D ++R Q 1981 1985 - May Sun>=5 0 1 D ++R Q 1986 1989 - Mar Sun>=14 0 1 D ++R Q 1990 1997 - Ap Sun>=1 0 1 D ++R Q 1991 1995 - O Sun>=8 0s 0 S ++R Q 1996 o - O 6 0s 0 S ++R Q 1997 o - O 12 0s 0 S ++R Q 1998 1999 - Mar lastSun 0s 1 D ++R Q 1998 2003 - O lastSun 0s 0 S ++R Q 2000 2003 - Ap Sun>=1 0s 1 D ++R Q 2004 o - Mar lastSun 0s 1 D ++R Q 2006 2010 - O lastSun 0s 0 S ++R Q 2007 o - Mar Sun>=8 0s 1 D ++R Q 2008 o - Mar Sun>=15 0s 1 D ++R Q 2009 2010 - Mar Sun>=8 0s 1 D ++R Q 2011 o - Mar Sun>=15 0s 1 D ++R Q 2011 o - N 13 0s 0 S ++R Q 2012 o - Ap 1 0s 1 D ++R Q 2012 ma - N Sun>=1 0s 0 S ++R Q 2013 ma - Mar Sun>=8 0s 1 D + Z America/Havana -5:29:28 - LMT 1890 + -5:29:36 - HMT 1925 Jul 19 12 +--5 Ak C%sT +-R Al 1966 o - O 30 0 1 EDT +-R Al 1967 o - F 28 0 0 EST +-R Al 1969 1973 - O lastSun 0 0:30 -0430 +-R Al 1970 o - F 21 0 0 EST +-R Al 1971 o - Ja 20 0 0 EST +-R Al 1972 1974 - Ja 21 0 0 EST ++-5 Q C%sT ++R DO 1966 o - O 30 0 1 EDT ++R DO 1967 o - F 28 0 0 EST ++R DO 1969 1973 - O lastSun 0 0:30 -0430 ++R DO 1970 o - F 21 0 0 EST ++R DO 1971 o - Ja 20 0 0 EST ++R DO 1972 1974 - Ja 21 0 0 EST + Z America/Santo_Domingo -4:39:36 - LMT 1890 + -4:40 - SDMT 1933 Ap 1 12 +--5 Al %s 1974 O 27 ++-5 DO %s 1974 O 27 + -4 - AST 2000 O 29 2 +--5 AF E%sT 2000 D 3 1 ++-5 u E%sT 2000 D 3 1 + -4 - AST +-R Am 1987 1988 - May Sun>=1 0 1 D +-R Am 1987 1988 - S lastSun 0 0 S ++R SV 1987 1988 - May Sun>=1 0 1 D ++R SV 1987 1988 - S lastSun 0 0 S + Z America/El_Salvador -5:56:48 - LMT 1921 +--6 Am C%sT +-R An 1973 o - N 25 0 1 D +-R An 1974 o - F 24 0 0 S +-R An 1983 o - May 21 0 1 D +-R An 1983 o - S 22 0 0 S +-R An 1991 o - Mar 23 0 1 D +-R An 1991 o - S 7 0 0 S +-R An 2006 o - Ap 30 0 1 D +-R An 2006 o - O 1 0 0 S ++-6 SV C%sT ++R GT 1973 o - N 25 0 1 D ++R GT 1974 o - F 24 0 0 S ++R GT 1983 o - May 21 0 1 D ++R GT 1983 o - S 22 0 0 S ++R GT 1991 o - Mar 23 0 1 D ++R GT 1991 o - S 7 0 0 S ++R GT 2006 o - Ap 30 0 1 D ++R GT 2006 o - O 1 0 0 S + Z America/Guatemala -6:2:4 - LMT 1918 O 5 +--6 An C%sT +-R Ao 1983 o - May 8 0 1 D +-R Ao 1984 1987 - Ap lastSun 0 1 D +-R Ao 1983 1987 - O lastSun 0 0 S +-R Ao 1988 1997 - Ap Sun>=1 1s 1 D +-R Ao 1988 1997 - O lastSun 1s 0 S +-R Ao 2005 2006 - Ap Sun>=1 0 1 D +-R Ao 2005 2006 - O lastSun 0 0 S +-R Ao 2012 2015 - Mar Sun>=8 2 1 D +-R Ao 2012 2015 - N Sun>=1 2 0 S +-R Ao 2017 ma - Mar Sun>=8 2 1 D +-R Ao 2017 ma - N Sun>=1 2 0 S ++-6 GT C%sT ++R HT 1983 o - May 8 0 1 D ++R HT 1984 1987 - Ap lastSun 0 1 D ++R HT 1983 1987 - O lastSun 0 0 S ++R HT 1988 1997 - Ap Sun>=1 1s 1 D ++R HT 1988 1997 - O lastSun 1s 0 S ++R HT 2005 2006 - Ap Sun>=1 0 1 D ++R HT 2005 2006 - O lastSun 0 0 S ++R HT 2012 2015 - Mar Sun>=8 2 1 D ++R HT 2012 2015 - N Sun>=1 2 0 S ++R HT 2017 ma - Mar Sun>=8 2 1 D ++R HT 2017 ma - N Sun>=1 2 0 S + Z America/Port-au-Prince -4:49:20 - LMT 1890 + -4:49 - PPMT 1917 Ja 24 12 +--5 Ao E%sT +-R Ap 1987 1988 - May Sun>=1 0 1 D +-R Ap 1987 1988 - S lastSun 0 0 S +-R Ap 2006 o - May Sun>=1 0 1 D +-R Ap 2006 o - Au M>=1 0 0 S ++-5 HT E%sT ++R HN 1987 1988 - May Sun>=1 0 1 D ++R HN 1987 1988 - S lastSun 0 0 S ++R HN 2006 o - May Sun>=1 0 1 D ++R HN 2006 o - Au M>=1 0 0 S + Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap +--6 Ap C%sT ++-6 HN C%sT + Z America/Jamaica -5:7:10 - LMT 1890 + -5:7:10 - KMT 1912 F + -5 - EST 1974 +--5 AF E%sT 1984 ++-5 u E%sT 1984 + -5 - EST + Z America/Martinique -4:4:20 - LMT 1890 + -4:4:20 - FFMT 1911 May + -4 - AST 1980 Ap 6 + -4 1 ADT 1980 S 28 + -4 - AST +-R Aq 1979 1980 - Mar Sun>=16 0 1 D +-R Aq 1979 1980 - Jun M>=23 0 0 S +-R Aq 2005 o - Ap 10 0 1 D +-R Aq 2005 o - O Sun>=1 0 0 S +-R Aq 2006 o - Ap 30 2 1 D +-R Aq 2006 o - O Sun>=1 1 0 S ++R NI 1979 1980 - Mar Sun>=16 0 1 D ++R NI 1979 1980 - Jun M>=23 0 0 S ++R NI 2005 o - Ap 10 0 1 D ++R NI 2005 o - O Sun>=1 0 0 S ++R NI 2006 o - Ap 30 2 1 D ++R NI 2006 o - O Sun>=1 1 0 S + Z America/Managua -5:45:8 - LMT 1890 + -5:45:12 - MMT 1934 Jun 23 + -6 - CST 1973 May + -5 - EST 1975 F 16 +--6 Aq C%sT 1992 Ja 1 4 ++-6 NI C%sT 1992 Ja 1 4 + -5 - EST 1992 S 24 + -6 - CST 1993 + -5 - EST 1997 +--6 Aq C%sT ++-6 NI C%sT + Z America/Panama -5:18:8 - LMT 1890 + -5:19:36 - CMT 1908 Ap 22 + -5 - EST + Li America/Panama America/Cayman + Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12 + -4 - AST 1942 May 3 +--4 AF A%sT 1946 ++-4 u A%sT 1946 + -4 - AST + Z America/Miquelon -3:44:40 - LMT 1911 May 15 + -4 - AST 1980 May + -3 - -03 1987 +--3 AU -03/-02 ++-3 C -03/-02 + Z America/Grand_Turk -4:44:32 - LMT 1890 + -5:7:10 - KMT 1912 F + -5 - EST 1979 +--5 AF E%sT 2015 N Sun>=1 2 ++-5 u E%sT 2015 N Sun>=1 2 + -4 - AST 2018 Mar 11 3 +--5 AF E%sT +-R Ar 1930 o - D 1 0 1 - +-R Ar 1931 o - Ap 1 0 0 - +-R Ar 1931 o - O 15 0 1 - +-R Ar 1932 1940 - Mar 1 0 0 - +-R Ar 1932 1939 - N 1 0 1 - +-R Ar 1940 o - Jul 1 0 1 - +-R Ar 1941 o - Jun 15 0 0 - +-R Ar 1941 o - O 15 0 1 - +-R Ar 1943 o - Au 1 0 0 - +-R Ar 1943 o - O 15 0 1 - +-R Ar 1946 o - Mar 1 0 0 - +-R Ar 1946 o - O 1 0 1 - +-R Ar 1963 o - O 1 0 0 - +-R Ar 1963 o - D 15 0 1 - +-R Ar 1964 1966 - Mar 1 0 0 - +-R Ar 1964 1966 - O 15 0 1 - +-R Ar 1967 o - Ap 2 0 0 - +-R Ar 1967 1968 - O Sun>=1 0 1 - +-R Ar 1968 1969 - Ap Sun>=1 0 0 - +-R Ar 1974 o - Ja 23 0 1 - +-R Ar 1974 o - May 1 0 0 - +-R Ar 1988 o - D 1 0 1 - +-R Ar 1989 1993 - Mar Sun>=1 0 0 - +-R Ar 1989 1992 - O Sun>=15 0 1 - +-R Ar 1999 o - O Sun>=1 0 1 - +-R Ar 2000 o - Mar 3 0 0 - +-R Ar 2007 o - D 30 0 1 - +-R Ar 2008 2009 - Mar Sun>=15 0 0 - +-R Ar 2008 o - O Sun>=15 0 1 - ++-5 u E%sT ++R A 1930 o - D 1 0 1 - ++R A 1931 o - Ap 1 0 0 - ++R A 1931 o - O 15 0 1 - ++R A 1932 1940 - Mar 1 0 0 - ++R A 1932 1939 - N 1 0 1 - ++R A 1940 o - Jul 1 0 1 - ++R A 1941 o - Jun 15 0 0 - ++R A 1941 o - O 15 0 1 - ++R A 1943 o - Au 1 0 0 - ++R A 1943 o - O 15 0 1 - ++R A 1946 o - Mar 1 0 0 - ++R A 1946 o - O 1 0 1 - ++R A 1963 o - O 1 0 0 - ++R A 1963 o - D 15 0 1 - ++R A 1964 1966 - Mar 1 0 0 - ++R A 1964 1966 - O 15 0 1 - ++R A 1967 o - Ap 2 0 0 - ++R A 1967 1968 - O Sun>=1 0 1 - ++R A 1968 1969 - Ap Sun>=1 0 0 - ++R A 1974 o - Ja 23 0 1 - ++R A 1974 o - May 1 0 0 - ++R A 1988 o - D 1 0 1 - ++R A 1989 1993 - Mar Sun>=1 0 0 - ++R A 1989 1992 - O Sun>=15 0 1 - ++R A 1999 o - O Sun>=1 0 1 - ++R A 2000 o - Mar 3 0 0 - ++R A 2007 o - D 30 0 1 - ++R A 2008 2009 - Mar Sun>=15 0 0 - ++R A 2008 o - O Sun>=15 0 1 - + Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 +--3 Ar -03/-02 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 ++-3 A -03/-02 + Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1991 Mar 3 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1991 Mar 3 + -4 - -04 1991 O 20 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 +--3 Ar -03/-02 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 ++-3 A -03/-02 + Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1991 Mar 3 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1991 Mar 3 + -4 - -04 1991 O 20 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 +--3 Ar -03/-02 2008 O 18 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 ++-3 A -03/-02 2008 O 18 + -3 - -03 + Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1991 Mar 3 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1991 Mar 3 + -4 - -04 1991 O 20 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 + -3 - -03 2004 Jun + -4 - -04 2004 Jun 13 +--3 Ar -03/-02 ++-3 A -03/-02 + Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1991 Mar ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1991 Mar + -4 - -04 1991 May 7 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 + -3 - -03 2004 Jun + -4 - -04 2004 Jun 20 +--3 Ar -03/-02 2008 O 18 ++-3 A -03/-02 2008 O 18 + -3 - -03 + Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1991 Mar ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1991 Mar + -4 - -04 1991 May 7 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 + -3 - -03 2004 May 31 + -4 - -04 2004 Jul 25 +--3 Ar -03/-02 2008 O 18 ++-3 A -03/-02 2008 O 18 + -3 - -03 + Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1990 Mar 4 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1990 Mar 4 + -4 - -04 1990 O 28 + -4 1 -03 1991 Mar 17 + -4 - -04 1991 O 6 + -3 1 -02 1992 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 +--3 Ar -03/-02 2008 O 18 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 ++-3 A -03/-02 2008 O 18 + -3 - -03 + Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1991 Mar 3 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1991 Mar 3 + -4 - -04 1991 O 20 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 + -3 - -03 2004 Jun + -4 - -04 2004 Jun 20 +--3 Ar -03/-02 2008 O 18 ++-3 A -03/-02 2008 O 18 + -3 - -03 + Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1990 Mar 4 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1990 Mar 4 + -4 - -04 1990 O 15 + -4 1 -03 1991 Mar + -4 - -04 1991 O 15 + -4 1 -03 1992 Mar + -4 - -04 1992 O 18 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 + -3 - -03 2004 May 23 + -4 - -04 2004 S 26 +--3 Ar -03/-02 2008 O 18 ++-3 A -03/-02 2008 O 18 + -3 - -03 +-R As 2008 2009 - Mar Sun>=8 0 0 - +-R As 2007 2008 - O Sun>=8 0 1 - ++R Sa 2008 2009 - Mar Sun>=8 0 0 - ++R Sa 2007 2008 - O Sun>=8 0 1 - + Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1990 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1990 + -3 1 -02 1990 Mar 14 + -4 - -04 1990 O 15 + -4 1 -03 1991 Mar +@@ -3590,286 +3607,288 @@ Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31 + -4 1 -03 2000 Mar 3 + -3 - -03 2004 May 31 + -4 - -04 2004 Jul 25 +--3 Ar -03/-02 2008 Ja 21 +--4 As -04/-03 2009 O 11 ++-3 A -03/-02 2008 Ja 21 ++-4 Sa -04/-03 2009 O 11 + -3 - -03 + Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 + -3 - -03 2004 Jun + -4 - -04 2004 Jun 20 +--3 Ar -03/-02 2008 O 18 ++-3 A -03/-02 2008 O 18 + -3 - -03 + Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31 + -4:16:48 - CMT 1920 May + -4 - -04 1930 D +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1999 O 3 +--4 Ar -04/-03 2000 Mar 3 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1999 O 3 ++-4 A -04/-03 2000 Mar 3 + -3 - -03 2004 May 30 + -4 - -04 2004 Jun 20 +--3 Ar -03/-02 2008 O 18 ++-3 A -03/-02 2008 O 18 + -3 - -03 + Li America/Curacao America/Aruba + Z America/La_Paz -4:32:36 - LMT 1890 + -4:32:36 - CMT 1931 O 15 + -4:32:36 1 BST 1932 Mar 21 + -4 - -04 +-R At 1931 o - O 3 11 1 - +-R At 1932 1933 - Ap 1 0 0 - +-R At 1932 o - O 3 0 1 - +-R At 1949 1952 - D 1 0 1 - +-R At 1950 o - Ap 16 1 0 - +-R At 1951 1952 - Ap 1 0 0 - +-R At 1953 o - Mar 1 0 0 - +-R At 1963 o - D 9 0 1 - +-R At 1964 o - Mar 1 0 0 - +-R At 1965 o - Ja 31 0 1 - +-R At 1965 o - Mar 31 0 0 - +-R At 1965 o - D 1 0 1 - +-R At 1966 1968 - Mar 1 0 0 - +-R At 1966 1967 - N 1 0 1 - +-R At 1985 o - N 2 0 1 - +-R At 1986 o - Mar 15 0 0 - +-R At 1986 o - O 25 0 1 - +-R At 1987 o - F 14 0 0 - +-R At 1987 o - O 25 0 1 - +-R At 1988 o - F 7 0 0 - +-R At 1988 o - O 16 0 1 - +-R At 1989 o - Ja 29 0 0 - +-R At 1989 o - O 15 0 1 - +-R At 1990 o - F 11 0 0 - +-R At 1990 o - O 21 0 1 - +-R At 1991 o - F 17 0 0 - +-R At 1991 o - O 20 0 1 - +-R At 1992 o - F 9 0 0 - +-R At 1992 o - O 25 0 1 - +-R At 1993 o - Ja 31 0 0 - +-R At 1993 1995 - O Sun>=11 0 1 - +-R At 1994 1995 - F Sun>=15 0 0 - +-R At 1996 o - F 11 0 0 - +-R At 1996 o - O 6 0 1 - +-R At 1997 o - F 16 0 0 - +-R At 1997 o - O 6 0 1 - +-R At 1998 o - Mar 1 0 0 - +-R At 1998 o - O 11 0 1 - +-R At 1999 o - F 21 0 0 - +-R At 1999 o - O 3 0 1 - +-R At 2000 o - F 27 0 0 - +-R At 2000 2001 - O Sun>=8 0 1 - +-R At 2001 2006 - F Sun>=15 0 0 - +-R At 2002 o - N 3 0 1 - +-R At 2003 o - O 19 0 1 - +-R At 2004 o - N 2 0 1 - +-R At 2005 o - O 16 0 1 - +-R At 2006 o - N 5 0 1 - +-R At 2007 o - F 25 0 0 - +-R At 2007 o - O Sun>=8 0 1 - +-R At 2008 2017 - O Sun>=15 0 1 - +-R At 2008 2011 - F Sun>=15 0 0 - +-R At 2012 o - F Sun>=22 0 0 - +-R At 2013 2014 - F Sun>=15 0 0 - +-R At 2015 o - F Sun>=22 0 0 - +-R At 2016 2022 - F Sun>=15 0 0 - +-R At 2018 ma - N Sun>=1 0 1 - +-R At 2023 o - F Sun>=22 0 0 - +-R At 2024 2025 - F Sun>=15 0 0 - +-R At 2026 o - F Sun>=22 0 0 - +-R At 2027 2033 - F Sun>=15 0 0 - +-R At 2034 o - F Sun>=22 0 0 - +-R At 2035 2036 - F Sun>=15 0 0 - +-R At 2037 o - F Sun>=22 0 0 - +-R At 2038 ma - F Sun>=15 0 0 - ++R B 1931 o - O 3 11 1 - ++R B 1932 1933 - Ap 1 0 0 - ++R B 1932 o - O 3 0 1 - ++R B 1949 1952 - D 1 0 1 - ++R B 1950 o - Ap 16 1 0 - ++R B 1951 1952 - Ap 1 0 0 - ++R B 1953 o - Mar 1 0 0 - ++R B 1963 o - D 9 0 1 - ++R B 1964 o - Mar 1 0 0 - ++R B 1965 o - Ja 31 0 1 - ++R B 1965 o - Mar 31 0 0 - ++R B 1965 o - D 1 0 1 - ++R B 1966 1968 - Mar 1 0 0 - ++R B 1966 1967 - N 1 0 1 - ++R B 1985 o - N 2 0 1 - ++R B 1986 o - Mar 15 0 0 - ++R B 1986 o - O 25 0 1 - ++R B 1987 o - F 14 0 0 - ++R B 1987 o - O 25 0 1 - ++R B 1988 o - F 7 0 0 - ++R B 1988 o - O 16 0 1 - ++R B 1989 o - Ja 29 0 0 - ++R B 1989 o - O 15 0 1 - ++R B 1990 o - F 11 0 0 - ++R B 1990 o - O 21 0 1 - ++R B 1991 o - F 17 0 0 - ++R B 1991 o - O 20 0 1 - ++R B 1992 o - F 9 0 0 - ++R B 1992 o - O 25 0 1 - ++R B 1993 o - Ja 31 0 0 - ++R B 1993 1995 - O Sun>=11 0 1 - ++R B 1994 1995 - F Sun>=15 0 0 - ++R B 1996 o - F 11 0 0 - ++R B 1996 o - O 6 0 1 - ++R B 1997 o - F 16 0 0 - ++R B 1997 o - O 6 0 1 - ++R B 1998 o - Mar 1 0 0 - ++R B 1998 o - O 11 0 1 - ++R B 1999 o - F 21 0 0 - ++R B 1999 o - O 3 0 1 - ++R B 2000 o - F 27 0 0 - ++R B 2000 2001 - O Sun>=8 0 1 - ++R B 2001 2006 - F Sun>=15 0 0 - ++R B 2002 o - N 3 0 1 - ++R B 2003 o - O 19 0 1 - ++R B 2004 o - N 2 0 1 - ++R B 2005 o - O 16 0 1 - ++R B 2006 o - N 5 0 1 - ++R B 2007 o - F 25 0 0 - ++R B 2007 o - O Sun>=8 0 1 - ++R B 2008 2017 - O Sun>=15 0 1 - ++R B 2008 2011 - F Sun>=15 0 0 - ++R B 2012 o - F Sun>=22 0 0 - ++R B 2013 2014 - F Sun>=15 0 0 - ++R B 2015 o - F Sun>=22 0 0 - ++R B 2016 2022 - F Sun>=15 0 0 - ++R B 2018 ma - N Sun>=1 0 1 - ++R B 2023 o - F Sun>=22 0 0 - ++R B 2024 2025 - F Sun>=15 0 0 - ++R B 2026 o - F Sun>=22 0 0 - ++R B 2027 2033 - F Sun>=15 0 0 - ++R B 2034 o - F Sun>=22 0 0 - ++R B 2035 2036 - F Sun>=15 0 0 - ++R B 2037 o - F Sun>=22 0 0 - ++R B 2038 ma - F Sun>=15 0 0 - + Z America/Noronha -2:9:40 - LMT 1914 +--2 At -02/-01 1990 S 17 ++-2 B -02/-01 1990 S 17 + -2 - -02 1999 S 30 +--2 At -02/-01 2000 O 15 ++-2 B -02/-01 2000 O 15 + -2 - -02 2001 S 13 +--2 At -02/-01 2002 O ++-2 B -02/-01 2002 O + -2 - -02 + Z America/Belem -3:13:56 - LMT 1914 +--3 At -03/-02 1988 S 12 ++-3 B -03/-02 1988 S 12 + -3 - -03 + Z America/Santarem -3:38:48 - LMT 1914 +--4 At -04/-03 1988 S 12 ++-4 B -04/-03 1988 S 12 + -4 - -04 2008 Jun 24 + -3 - -03 + Z America/Fortaleza -2:34 - LMT 1914 +--3 At -03/-02 1990 S 17 ++-3 B -03/-02 1990 S 17 + -3 - -03 1999 S 30 +--3 At -03/-02 2000 O 22 ++-3 B -03/-02 2000 O 22 + -3 - -03 2001 S 13 +--3 At -03/-02 2002 O ++-3 B -03/-02 2002 O + -3 - -03 + Z America/Recife -2:19:36 - LMT 1914 +--3 At -03/-02 1990 S 17 ++-3 B -03/-02 1990 S 17 + -3 - -03 1999 S 30 +--3 At -03/-02 2000 O 15 ++-3 B -03/-02 2000 O 15 + -3 - -03 2001 S 13 +--3 At -03/-02 2002 O ++-3 B -03/-02 2002 O + -3 - -03 + Z America/Araguaina -3:12:48 - LMT 1914 +--3 At -03/-02 1990 S 17 ++-3 B -03/-02 1990 S 17 + -3 - -03 1995 S 14 +--3 At -03/-02 2003 S 24 ++-3 B -03/-02 2003 S 24 + -3 - -03 2012 O 21 +--3 At -03/-02 2013 S ++-3 B -03/-02 2013 S + -3 - -03 + Z America/Maceio -2:22:52 - LMT 1914 +--3 At -03/-02 1990 S 17 ++-3 B -03/-02 1990 S 17 + -3 - -03 1995 O 13 +--3 At -03/-02 1996 S 4 ++-3 B -03/-02 1996 S 4 + -3 - -03 1999 S 30 +--3 At -03/-02 2000 O 22 ++-3 B -03/-02 2000 O 22 + -3 - -03 2001 S 13 +--3 At -03/-02 2002 O ++-3 B -03/-02 2002 O + -3 - -03 + Z America/Bahia -2:34:4 - LMT 1914 +--3 At -03/-02 2003 S 24 ++-3 B -03/-02 2003 S 24 + -3 - -03 2011 O 16 +--3 At -03/-02 2012 O 21 ++-3 B -03/-02 2012 O 21 + -3 - -03 + Z America/Sao_Paulo -3:6:28 - LMT 1914 +--3 At -03/-02 1963 O 23 ++-3 B -03/-02 1963 O 23 + -3 1 -02 1964 +--3 At -03/-02 ++-3 B -03/-02 + Z America/Campo_Grande -3:38:28 - LMT 1914 +--4 At -04/-03 ++-4 B -04/-03 + Z America/Cuiaba -3:44:20 - LMT 1914 +--4 At -04/-03 2003 S 24 ++-4 B -04/-03 2003 S 24 + -4 - -04 2004 O +--4 At -04/-03 ++-4 B -04/-03 + Z America/Porto_Velho -4:15:36 - LMT 1914 +--4 At -04/-03 1988 S 12 ++-4 B -04/-03 1988 S 12 + -4 - -04 + Z America/Boa_Vista -4:2:40 - LMT 1914 +--4 At -04/-03 1988 S 12 ++-4 B -04/-03 1988 S 12 + -4 - -04 1999 S 30 +--4 At -04/-03 2000 O 15 ++-4 B -04/-03 2000 O 15 + -4 - -04 + Z America/Manaus -4:0:4 - LMT 1914 +--4 At -04/-03 1988 S 12 ++-4 B -04/-03 1988 S 12 + -4 - -04 1993 S 28 +--4 At -04/-03 1994 S 22 ++-4 B -04/-03 1994 S 22 + -4 - -04 + Z America/Eirunepe -4:39:28 - LMT 1914 +--5 At -05/-04 1988 S 12 ++-5 B -05/-04 1988 S 12 + -5 - -05 1993 S 28 +--5 At -05/-04 1994 S 22 ++-5 B -05/-04 1994 S 22 + -5 - -05 2008 Jun 24 + -4 - -04 2013 N 10 + -5 - -05 + Z America/Rio_Branco -4:31:12 - LMT 1914 +--5 At -05/-04 1988 S 12 ++-5 B -05/-04 1988 S 12 + -5 - -05 2008 Jun 24 + -4 - -04 2013 N 10 + -5 - -05 +-R Au 1927 1931 - S 1 0 1 - +-R Au 1928 1932 - Ap 1 0 0 - +-R Au 1968 o - N 3 4u 1 - +-R Au 1969 o - Mar 30 3u 0 - +-R Au 1969 o - N 23 4u 1 - +-R Au 1970 o - Mar 29 3u 0 - +-R Au 1971 o - Mar 14 3u 0 - +-R Au 1970 1972 - O Sun>=9 4u 1 - +-R Au 1972 1986 - Mar Sun>=9 3u 0 - +-R Au 1973 o - S 30 4u 1 - +-R Au 1974 1987 - O Sun>=9 4u 1 - +-R Au 1987 o - Ap 12 3u 0 - +-R Au 1988 1990 - Mar Sun>=9 3u 0 - +-R Au 1988 1989 - O Sun>=9 4u 1 - +-R Au 1990 o - S 16 4u 1 - +-R Au 1991 1996 - Mar Sun>=9 3u 0 - +-R Au 1991 1997 - O Sun>=9 4u 1 - +-R Au 1997 o - Mar 30 3u 0 - +-R Au 1998 o - Mar Sun>=9 3u 0 - +-R Au 1998 o - S 27 4u 1 - +-R Au 1999 o - Ap 4 3u 0 - +-R Au 1999 2010 - O Sun>=9 4u 1 - +-R Au 2000 2007 - Mar Sun>=9 3u 0 - +-R Au 2008 o - Mar 30 3u 0 - +-R Au 2009 o - Mar Sun>=9 3u 0 - +-R Au 2010 o - Ap Sun>=1 3u 0 - +-R Au 2011 o - May Sun>=2 3u 0 - +-R Au 2011 o - Au Sun>=16 4u 1 - +-R Au 2012 2014 - Ap Sun>=23 3u 0 - +-R Au 2012 2014 - S Sun>=2 4u 1 - +-R Au 2016 ma - May Sun>=9 3u 0 - +-R Au 2016 ma - Au Sun>=9 4u 1 - ++R x 1927 1931 - S 1 0 1 - ++R x 1928 1932 - Ap 1 0 0 - ++R x 1968 o - N 3 4u 1 - ++R x 1969 o - Mar 30 3u 0 - ++R x 1969 o - N 23 4u 1 - ++R x 1970 o - Mar 29 3u 0 - ++R x 1971 o - Mar 14 3u 0 - ++R x 1970 1972 - O Sun>=9 4u 1 - ++R x 1972 1986 - Mar Sun>=9 3u 0 - ++R x 1973 o - S 30 4u 1 - ++R x 1974 1987 - O Sun>=9 4u 1 - ++R x 1987 o - Ap 12 3u 0 - ++R x 1988 1990 - Mar Sun>=9 3u 0 - ++R x 1988 1989 - O Sun>=9 4u 1 - ++R x 1990 o - S 16 4u 1 - ++R x 1991 1996 - Mar Sun>=9 3u 0 - ++R x 1991 1997 - O Sun>=9 4u 1 - ++R x 1997 o - Mar 30 3u 0 - ++R x 1998 o - Mar Sun>=9 3u 0 - ++R x 1998 o - S 27 4u 1 - ++R x 1999 o - Ap 4 3u 0 - ++R x 1999 2010 - O Sun>=9 4u 1 - ++R x 2000 2007 - Mar Sun>=9 3u 0 - ++R x 2008 o - Mar 30 3u 0 - ++R x 2009 o - Mar Sun>=9 3u 0 - ++R x 2010 o - Ap Sun>=1 3u 0 - ++R x 2011 o - May Sun>=2 3u 0 - ++R x 2011 o - Au Sun>=16 4u 1 - ++R x 2012 2014 - Ap Sun>=23 3u 0 - ++R x 2012 2014 - S Sun>=2 4u 1 - ++R x 2016 2018 - May Sun>=9 3u 0 - ++R x 2016 2018 - Au Sun>=9 4u 1 - ++R x 2019 ma - Ap Sun>=2 3u 0 - ++R x 2019 ma - S Sun>=2 4u 1 - + Z America/Santiago -4:42:46 - LMT 1890 + -4:42:46 - SMT 1910 Ja 10 + -5 - -05 1916 Jul + -4:42:46 - SMT 1918 S 10 + -4 - -04 1919 Jul + -4:42:46 - SMT 1927 S +--5 Au -05/-04 1932 S ++-5 x -05/-04 1932 S + -4 - -04 1942 Jun + -5 - -05 1942 Au + -4 - -04 1946 Jul 15 + -4 1 -03 1946 S + -4 - -04 1947 Ap + -5 - -05 1947 May 21 23 +--4 Au -04/-03 ++-4 x -04/-03 + Z America/Punta_Arenas -4:43:40 - LMT 1890 + -4:42:46 - SMT 1910 Ja 10 + -5 - -05 1916 Jul + -4:42:46 - SMT 1918 S 10 + -4 - -04 1919 Jul + -4:42:46 - SMT 1927 S +--5 Au -05/-04 1932 S ++-5 x -05/-04 1932 S + -4 - -04 1942 Jun + -5 - -05 1942 Au + -4 - -04 1947 Ap + -5 - -05 1947 May 21 23 +--4 Au -04/-03 2016 D 4 ++-4 x -04/-03 2016 D 4 + -3 - -03 + Z Pacific/Easter -7:17:28 - LMT 1890 + -7:17:28 - EMT 1932 S +--7 Au -07/-06 1982 Mar 14 3u +--6 Au -06/-05 ++-7 x -07/-06 1982 Mar 14 3u ++-6 x -06/-05 + Z Antarctica/Palmer 0 - -00 1965 +--4 Ar -04/-03 1969 O 5 +--3 Ar -03/-02 1982 May +--4 Au -04/-03 2016 D 4 ++-4 A -04/-03 1969 O 5 ++-3 A -03/-02 1982 May ++-4 x -04/-03 2016 D 4 + -3 - -03 +-R Av 1992 o - May 3 0 1 - +-R Av 1993 o - Ap 4 0 0 - ++R CO 1992 o - May 3 0 1 - ++R CO 1993 o - Ap 4 0 0 - + Z America/Bogota -4:56:16 - LMT 1884 Mar 13 + -4:56:16 - BMT 1914 N 23 +--5 Av -05/-04 ++-5 CO -05/-04 + Z America/Curacao -4:35:47 - LMT 1912 F 12 + -4:30 - -0430 1965 + -4 - AST + Li America/Curacao America/Lower_Princes + Li America/Curacao America/Kralendijk +-R Aw 1992 o - N 28 0 1 - +-R Aw 1993 o - F 5 0 0 - ++R EC 1992 o - N 28 0 1 - ++R EC 1993 o - F 5 0 0 - + Z America/Guayaquil -5:19:20 - LMT 1890 + -5:14 - QMT 1931 +--5 Aw -05/-04 ++-5 EC -05/-04 + Z Pacific/Galapagos -5:58:24 - LMT 1931 + -5 - -05 1986 +--6 Aw -06/-05 +-R Ax 1937 1938 - S lastSun 0 1 - +-R Ax 1938 1942 - Mar Sun>=19 0 0 - +-R Ax 1939 o - O 1 0 1 - +-R Ax 1940 1942 - S lastSun 0 1 - +-R Ax 1943 o - Ja 1 0 0 - +-R Ax 1983 o - S lastSun 0 1 - +-R Ax 1984 1985 - Ap lastSun 0 0 - +-R Ax 1984 o - S 16 0 1 - +-R Ax 1985 2000 - S Sun>=9 0 1 - +-R Ax 1986 2000 - Ap Sun>=16 0 0 - +-R Ax 2001 2010 - Ap Sun>=15 2 0 - +-R Ax 2001 2010 - S Sun>=1 2 1 - ++-6 EC -06/-05 ++R FK 1937 1938 - S lastSun 0 1 - ++R FK 1938 1942 - Mar Sun>=19 0 0 - ++R FK 1939 o - O 1 0 1 - ++R FK 1940 1942 - S lastSun 0 1 - ++R FK 1943 o - Ja 1 0 0 - ++R FK 1983 o - S lastSun 0 1 - ++R FK 1984 1985 - Ap lastSun 0 0 - ++R FK 1984 o - S 16 0 1 - ++R FK 1985 2000 - S Sun>=9 0 1 - ++R FK 1986 2000 - Ap Sun>=16 0 0 - ++R FK 2001 2010 - Ap Sun>=15 2 0 - ++R FK 2001 2010 - S Sun>=1 2 1 - + Z Atlantic/Stanley -3:51:24 - LMT 1890 + -3:51:24 - SMT 1912 Mar 12 +--4 Ax -04/-03 1983 May +--3 Ax -03/-02 1985 S 15 +--4 Ax -04/-03 2010 S 5 2 ++-4 FK -04/-03 1983 May ++-3 FK -03/-02 1985 S 15 ++-4 FK -04/-03 2010 S 5 2 + -3 - -03 + Z America/Cayenne -3:29:20 - LMT 1911 Jul + -4 - -04 1967 O +@@ -3878,46 +3897,46 @@ Z America/Guyana -3:52:40 - LMT 1915 Mar + -3:45 - -0345 1975 Jul 31 + -3 - -03 1991 + -4 - -04 +-R Ay 1975 1988 - O 1 0 1 - +-R Ay 1975 1978 - Mar 1 0 0 - +-R Ay 1979 1991 - Ap 1 0 0 - +-R Ay 1989 o - O 22 0 1 - +-R Ay 1990 o - O 1 0 1 - +-R Ay 1991 o - O 6 0 1 - +-R Ay 1992 o - Mar 1 0 0 - +-R Ay 1992 o - O 5 0 1 - +-R Ay 1993 o - Mar 31 0 0 - +-R Ay 1993 1995 - O 1 0 1 - +-R Ay 1994 1995 - F lastSun 0 0 - +-R Ay 1996 o - Mar 1 0 0 - +-R Ay 1996 2001 - O Sun>=1 0 1 - +-R Ay 1997 o - F lastSun 0 0 - +-R Ay 1998 2001 - Mar Sun>=1 0 0 - +-R Ay 2002 2004 - Ap Sun>=1 0 0 - +-R Ay 2002 2003 - S Sun>=1 0 1 - +-R Ay 2004 2009 - O Sun>=15 0 1 - +-R Ay 2005 2009 - Mar Sun>=8 0 0 - +-R Ay 2010 ma - O Sun>=1 0 1 - +-R Ay 2010 2012 - Ap Sun>=8 0 0 - +-R Ay 2013 ma - Mar Sun>=22 0 0 - ++R y 1975 1988 - O 1 0 1 - ++R y 1975 1978 - Mar 1 0 0 - ++R y 1979 1991 - Ap 1 0 0 - ++R y 1989 o - O 22 0 1 - ++R y 1990 o - O 1 0 1 - ++R y 1991 o - O 6 0 1 - ++R y 1992 o - Mar 1 0 0 - ++R y 1992 o - O 5 0 1 - ++R y 1993 o - Mar 31 0 0 - ++R y 1993 1995 - O 1 0 1 - ++R y 1994 1995 - F lastSun 0 0 - ++R y 1996 o - Mar 1 0 0 - ++R y 1996 2001 - O Sun>=1 0 1 - ++R y 1997 o - F lastSun 0 0 - ++R y 1998 2001 - Mar Sun>=1 0 0 - ++R y 2002 2004 - Ap Sun>=1 0 0 - ++R y 2002 2003 - S Sun>=1 0 1 - ++R y 2004 2009 - O Sun>=15 0 1 - ++R y 2005 2009 - Mar Sun>=8 0 0 - ++R y 2010 ma - O Sun>=1 0 1 - ++R y 2010 2012 - Ap Sun>=8 0 0 - ++R y 2013 ma - Mar Sun>=22 0 0 - + Z America/Asuncion -3:50:40 - LMT 1890 + -3:50:40 - AMT 1931 O 10 + -4 - -04 1972 O + -3 - -03 1974 Ap +--4 Ay -04/-03 +-R Az 1938 o - Ja 1 0 1 - +-R Az 1938 o - Ap 1 0 0 - +-R Az 1938 1939 - S lastSun 0 1 - +-R Az 1939 1940 - Mar Sun>=24 0 0 - +-R Az 1986 1987 - Ja 1 0 1 - +-R Az 1986 1987 - Ap 1 0 0 - +-R Az 1990 o - Ja 1 0 1 - +-R Az 1990 o - Ap 1 0 0 - +-R Az 1994 o - Ja 1 0 1 - +-R Az 1994 o - Ap 1 0 0 - ++-4 y -04/-03 ++R PE 1938 o - Ja 1 0 1 - ++R PE 1938 o - Ap 1 0 0 - ++R PE 1938 1939 - S lastSun 0 1 - ++R PE 1939 1940 - Mar Sun>=24 0 0 - ++R PE 1986 1987 - Ja 1 0 1 - ++R PE 1986 1987 - Ap 1 0 0 - ++R PE 1990 o - Ja 1 0 1 - ++R PE 1990 o - Ap 1 0 0 - ++R PE 1994 o - Ja 1 0 1 - ++R PE 1994 o - Ap 1 0 0 - + Z America/Lima -5:8:12 - LMT 1890 + -5:8:36 - LMT 1908 Jul 28 +--5 Az -05/-04 ++-5 PE -05/-04 + Z Atlantic/South_Georgia -2:26:8 - LMT 1890 + -2 - -02 + Z America/Paramaribo -3:40:40 - LMT 1911 +@@ -3940,65 +3959,65 @@ Li America/Port_of_Spain America/St_Lucia + Li America/Port_of_Spain America/St_Thomas + Li America/Port_of_Spain America/St_Vincent + Li America/Port_of_Spain America/Tortola +-R A! 1923 1925 - O 1 0 0:30 - +-R A! 1924 1926 - Ap 1 0 0 - +-R A! 1933 1938 - O lastSun 0 0:30 - +-R A! 1934 1941 - Mar lastSat 24 0 - +-R A! 1939 o - O 1 0 0:30 - +-R A! 1940 o - O 27 0 0:30 - +-R A! 1941 o - Au 1 0 0:30 - +-R A! 1942 o - D 14 0 0:30 - +-R A! 1943 o - Mar 14 0 0 - +-R A! 1959 o - May 24 0 0:30 - +-R A! 1959 o - N 15 0 0 - +-R A! 1960 o - Ja 17 0 1 - +-R A! 1960 o - Mar 6 0 0 - +-R A! 1965 o - Ap 4 0 1 - +-R A! 1965 o - S 26 0 0 - +-R A! 1968 o - May 27 0 0:30 - +-R A! 1968 o - D 1 0 0 - +-R A! 1970 o - Ap 25 0 1 - +-R A! 1970 o - Jun 14 0 0 - +-R A! 1972 o - Ap 23 0 1 - +-R A! 1972 o - Jul 16 0 0 - +-R A! 1974 o - Ja 13 0 1:30 - +-R A! 1974 o - Mar 10 0 0:30 - +-R A! 1974 o - S 1 0 0 - +-R A! 1974 o - D 22 0 1 - +-R A! 1975 o - Mar 30 0 0 - +-R A! 1976 o - D 19 0 1 - +-R A! 1977 o - Mar 6 0 0 - +-R A! 1977 o - D 4 0 1 - +-R A! 1978 1979 - Mar Sun>=1 0 0 - +-R A! 1978 o - D 17 0 1 - +-R A! 1979 o - Ap 29 0 1 - +-R A! 1980 o - Mar 16 0 0 - +-R A! 1987 o - D 14 0 1 - +-R A! 1988 o - F 28 0 0 - +-R A! 1988 o - D 11 0 1 - +-R A! 1989 o - Mar 5 0 0 - +-R A! 1989 o - O 29 0 1 - +-R A! 1990 o - F 25 0 0 - +-R A! 1990 1991 - O Sun>=21 0 1 - +-R A! 1991 1992 - Mar Sun>=1 0 0 - +-R A! 1992 o - O 18 0 1 - +-R A! 1993 o - F 28 0 0 - +-R A! 2004 o - S 19 0 1 - +-R A! 2005 o - Mar 27 2 0 - +-R A! 2005 o - O 9 2 1 - +-R A! 2006 2015 - Mar Sun>=8 2 0 - +-R A! 2006 2014 - O Sun>=1 2 1 - ++R U 1923 1925 - O 1 0 0:30 - ++R U 1924 1926 - Ap 1 0 0 - ++R U 1933 1938 - O lastSun 0 0:30 - ++R U 1934 1941 - Mar lastSat 24 0 - ++R U 1939 o - O 1 0 0:30 - ++R U 1940 o - O 27 0 0:30 - ++R U 1941 o - Au 1 0 0:30 - ++R U 1942 o - D 14 0 0:30 - ++R U 1943 o - Mar 14 0 0 - ++R U 1959 o - May 24 0 0:30 - ++R U 1959 o - N 15 0 0 - ++R U 1960 o - Ja 17 0 1 - ++R U 1960 o - Mar 6 0 0 - ++R U 1965 o - Ap 4 0 1 - ++R U 1965 o - S 26 0 0 - ++R U 1968 o - May 27 0 0:30 - ++R U 1968 o - D 1 0 0 - ++R U 1970 o - Ap 25 0 1 - ++R U 1970 o - Jun 14 0 0 - ++R U 1972 o - Ap 23 0 1 - ++R U 1972 o - Jul 16 0 0 - ++R U 1974 o - Ja 13 0 1:30 - ++R U 1974 o - Mar 10 0 0:30 - ++R U 1974 o - S 1 0 0 - ++R U 1974 o - D 22 0 1 - ++R U 1975 o - Mar 30 0 0 - ++R U 1976 o - D 19 0 1 - ++R U 1977 o - Mar 6 0 0 - ++R U 1977 o - D 4 0 1 - ++R U 1978 1979 - Mar Sun>=1 0 0 - ++R U 1978 o - D 17 0 1 - ++R U 1979 o - Ap 29 0 1 - ++R U 1980 o - Mar 16 0 0 - ++R U 1987 o - D 14 0 1 - ++R U 1988 o - F 28 0 0 - ++R U 1988 o - D 11 0 1 - ++R U 1989 o - Mar 5 0 0 - ++R U 1989 o - O 29 0 1 - ++R U 1990 o - F 25 0 0 - ++R U 1990 1991 - O Sun>=21 0 1 - ++R U 1991 1992 - Mar Sun>=1 0 0 - ++R U 1992 o - O 18 0 1 - ++R U 1993 o - F 28 0 0 - ++R U 2004 o - S 19 0 1 - ++R U 2005 o - Mar 27 2 0 - ++R U 2005 o - O 9 2 1 - ++R U 2006 2015 - Mar Sun>=8 2 0 - ++R U 2006 2014 - O Sun>=1 2 1 - + Z America/Montevideo -3:44:51 - LMT 1908 Jun 10 + -3:44:51 - MMT 1920 May + -4 - -04 1923 O +--3:30 A! -0330/-03 1942 D 14 +--3 A! -03/-0230 1960 +--3 A! -03/-02 1968 +--3 A! -03/-0230 1970 +--3 A! -03/-02 1974 +--3 A! -03/-0130 1974 Mar 10 +--3 A! -03/-0230 1974 D 22 +--3 A! -03/-02 ++-3:30 U -0330/-03 1942 D 14 ++-3 U -03/-0230 1960 ++-3 U -03/-02 1968 ++-3 U -03/-0230 1970 ++-3 U -03/-02 1974 ++-3 U -03/-0130 1974 Mar 10 ++-3 U -03/-0230 1974 D 22 ++-3 U -03/-02 + Z America/Caracas -4:27:44 - LMT 1890 + -4:27:40 - CMT 1912 F 12 + -4:30 - -0430 1965 +diff --git a/src/timezone/known_abbrevs.txt b/src/timezone/known_abbrevs.txt +index 67d2f0b..2ae443a 100644 +--- a/src/timezone/known_abbrevs.txt ++++ b/src/timezone/known_abbrevs.txt +@@ -92,6 +92,7 @@ NZST 43200 + PDT -25200 D + PKT 18000 + PST -28800 ++PST 28800 + SAST 7200 + SST -39600 + UCT 0 +diff --git a/src/timezone/tznames/America.txt b/src/timezone/tznames/America.txt +index 1c5eb1f..2594c37 100644 +--- a/src/timezone/tznames/America.txt ++++ b/src/timezone/tznames/America.txt +@@ -237,6 +237,9 @@ PDT -25200 D # Pacific Daylight Time + PET -18000 # Peru Time (obsolete) + PMDT -7200 D # Pierre & Miquelon Daylight Time (obsolete) + PMST -10800 # Pierre & Miquelon Standard Time (obsolete) ++# CONFLICT! PST is not unique ++# Other timezones: ++# - PST: Philippine Standard Time + PST -28800 # Pacific Standard Time + # (America/Dawson) + # (America/Los_Angeles) +diff --git a/src/timezone/tznames/Asia.txt b/src/timezone/tznames/Asia.txt +index e1fa931..1133339 100644 +--- a/src/timezone/tznames/Asia.txt ++++ b/src/timezone/tznames/Asia.txt +@@ -158,6 +158,10 @@ PKT 18000 # Pakistan Time + # (Asia/Karachi) + PKST 21600 D # Pakistan Summer Time + # (Asia/Karachi) ++# CONFLICT! PST is not unique ++# Other timezones: ++# - PST: Pacific Standard Time (America) ++PST 28800 # Philippine Standard Time + QYZT 21600 # Kizilorda Time (obsolete) + SAKST Asia/Sakhalin # Sakhalin Summer Time (obsolete) + SAKT Asia/Sakhalin # Sakhalin Time (obsolete) +diff --git a/src/timezone/tznames/Default b/src/timezone/tznames/Default +index 3826096..1532413 100644 +--- a/src/timezone/tznames/Default ++++ b/src/timezone/tznames/Default +@@ -181,6 +181,9 @@ PDT -25200 D # Pacific Daylight Time + # (America/Whitehorse) + PMDT -7200 D # Pierre & Miquelon Daylight Time (obsolete) + PMST -10800 # Pierre & Miquelon Standard Time (obsolete) ++# CONFLICT! PST is not unique ++# Other timezones: ++# - PST: Philippine Standard Time + PST -28800 # Pacific Standard Time + # (America/Dawson) + # (America/Los_Angeles) +diff --git a/src/timezone/tznames/Pacific.txt b/src/timezone/tznames/Pacific.txt +index c86248b..c30008c 100644 +--- a/src/timezone/tznames/Pacific.txt ++++ b/src/timezone/tznames/Pacific.txt +@@ -52,6 +52,9 @@ NZST 43200 # New Zealand Standard Time + PGT 36000 # Papua New Guinea Time (obsolete) + PHOT Pacific/Enderbury # Phoenix Islands Time (Kiribati) (obsolete) + PONT 39600 # Ponape Time (Micronesia) (obsolete) ++# CONFLICT! PST is not unique ++# Other timezones: ++# - PST: Philippine Standard Time + PST -28800 # Pacific Standard Time + # (America/Dawson) + # (America/Los_Angeles) +-- +2.7.4 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch new file mode 100644 index 00000000..f14da06d --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch @@ -0,0 +1,46 @@ +From d3ee8c8df5808b63e86f40831f2ba62cbb33d291 Mon Sep 17 00:00:00 2001 +From: Changqing Li +Date: Wed, 8 Aug 2018 09:18:27 +0800 +Subject: [PATCH] postgresql: Use pkg-config for libxml2 detection. + +Upstream-Status: Inappropriate [configuration] + +xml2-config does not work. Use pkgconfig to set CPPFLAGS and LIBS. + +Signed-off-by: Philip Balister + +upate to version 10.4 +Signed-off-by: Changqing Li +--- + configure.in | 15 ++------------- + 1 file changed, 2 insertions(+), 13 deletions(-) + +diff --git a/configure.in b/configure.in +index d9fe56e..3e2cd3a 100644 +--- a/configure.in ++++ b/configure.in +@@ -816,19 +816,8 @@ PGAC_ARG_BOOL(with, libxml, no, [build with XML support], + [AC_DEFINE([USE_LIBXML], 1, [Define to 1 to build with XML support. (--with-libxml)])]) + + if test "$with_libxml" = yes ; then +- PGAC_PATH_PROGS(XML2_CONFIG, xml2-config) +- if test -n "$XML2_CONFIG"; then +- for pgac_option in `$XML2_CONFIG --cflags`; do +- case $pgac_option in +- -I*|-D*) CPPFLAGS="$CPPFLAGS $pgac_option";; +- esac +- done +- for pgac_option in `$XML2_CONFIG --libs`; do +- case $pgac_option in +- -L*) LDFLAGS="$LDFLAGS $pgac_option";; +- esac +- done +- fi ++ CPPFLAGS="$CPPFLAGS `pkg-config --short-errors --print-errors --cflags "libxml-2.0" 2>&1`" ++ LIBS="`pkg-config --short-errors --print-errors --libs "libxml-2.0" 2>&1` $LIBS" + fi + + AC_SUBST(with_libxml) +-- +2.7.4 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch new file mode 100644 index 00000000..97151094 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch @@ -0,0 +1,28 @@ +[PATCH] not check libperl under cross compiling + +Upstream-Status: Inappropriate [configuration] + +libperl ldflags returned by PGAC_CHECK_PERL_EMBED_LDFLAGS are native, +can not be used to check target library. + +postpresql has the dependency on perl, so not need to check libperl +again, like in postgresql-9.2.4 + +Signed-off-by: Roy Li +--- + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: postgresql-9.4.15/configure.in +=================================================================== +--- postgresql-9.4.15.orig/configure.in ++++ postgresql-9.4.15/configure.in +@@ -1879,7 +1879,7 @@ if test "$with_tcl" = yes; then + fi + + # check for +-if test "$with_perl" = yes; then ++if test "$with_perl" = yes && test "$cross_compiling" = no; then + ac_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -I$perl_archlibexp/CORE" + AC_CHECK_HEADER(perl.h, [], [AC_MSG_ERROR([header file is required for Perl])], diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql-profile b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql-profile new file mode 100644 index 00000000..1c931f37 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql-profile @@ -0,0 +1,4 @@ +[ -f /etc/profile ] && source /etc/profile + +PGDATA=/var/lib/postgresql/data +export PGDATA diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql-setup b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql-setup new file mode 100644 index 00000000..75bb01e0 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql-setup @@ -0,0 +1,73 @@ +#!/bin/sh +# +# postgresql-setup Initialization operation for PostgreSQL + +# For SELinux we need to use 'runuser' not 'su' +if [ -x /sbin/runuser ] +then + SU=runuser +else + SU=su +fi + +PGENGINE=/usr/bin +PGDATA=/var/lib/postgresql/data +PGLOG=/var/lib/postgresql/pgstartup.log +script_result=0 + +initdb(){ + if [ -f "$PGDATA/PG_VERSION" ] + then + echo -n "Data directory is not empty!" + echo -n " [FAILED] " + echo + script_result=1 + else + echo -n "Initializing database: " + if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ] + then + mkdir -p "$PGDATA" || exit 1 + chown postgres:postgres "$PGDATA" + chmod go-rwx "$PGDATA" + fi + # Clean up SELinux tagging for PGDATA + [ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA" + + # Make sure the startup-time log file is OK, too + if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ] + then + touch "$PGLOG" || exit 1 + chown postgres:postgres "$PGLOG" + chmod go-rwx "$PGLOG" + [ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG" + fi + + # Initialize the database + $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null + + # Create directory for postmaster log + mkdir "$PGDATA/pg_log" + chown postgres:postgres "$PGDATA/pg_log" + chmod go-rwx "$PGDATA/pg_log" + + if [ -f "$PGDATA/PG_VERSION" ] + then + echo -n " [ OK ] " + else + echo -n " [FAILED] " + script_result=1 + fi + echo + fi +} + +case "$1" in + initdb) + initdb + ;; + *) + echo "Usage: $0 initdb" + exit 2 +esac + +exit $script_result diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.init b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.init new file mode 100644 index 00000000..4a4f0cd1 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.init @@ -0,0 +1,193 @@ +#!/bin/sh +# +# postgresql This is the init script for starting up the PostgreSQL +# server. +# +# chkconfig: - 64 36 +# description: PostgreSQL database server. +# processname: postmaster +# pidfile: /var/run/postmaster.PORT.pid + +# This script is slightly unusual in that the name of the daemon (postmaster) +# is not the same as the name of the subsystem (postgresql) + +# PGVERSION is the full package version, e.g., 8.4.0 +# Note: the specfile inserts the correct value during package build +PGVERSION=9.2.4 +# PGMAJORVERSION is major version, e.g., 8.4 (this should match PG_VERSION) +PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'` + +# Source function library. +. /etc/init.d/functions + +# Find the name of the script +NAME=`basename $0` +if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ] +then + NAME=${NAME:3} +fi + +# For SELinux we need to use 'runuser' not 'su' +if [ -x /sbin/runuser ] +then + SU=runuser +else + SU=su +fi + + +# Set defaults for configuration variables +PGENGINE=/usr/bin +PGPORT=5432 +PGDATA=/var/lib/postgresql/data +PGLOG=/var/lib/postgresql/pgstartup.log +# Value to set as postmaster process's oom_adj +PG_OOM_ADJ=-17 + +# Override defaults from /etc/sysconfig/postgresql if file is present +[ -f /etc/default/postgresql/${NAME} ] && . /etc/default/postgresql/${NAME} + +export PGDATA +export PGPORT + +lockfile="/var/lock/subsys/${NAME}" +pidfile="/var/run/postmaster.${PGPORT}.pid" + +script_result=0 + +start(){ + [ -x "$PGENGINE/postmaster" ] || exit 5 + + PSQL_START=$"Starting ${NAME} service: " + + # Make sure startup-time log file is valid + if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ] + then + touch "$PGLOG" || exit 4 + chown postgres:postgres "$PGLOG" + chmod go-rwx "$PGLOG" + [ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG" + fi + + # Check for the PGDATA structure + if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ] + then + # Check version of existing PGDATA + if [ x`cat "$PGDATA/PG_VERSION"` != x"$PGMAJORVERSION" ] + then + SYSDOCDIR="(Your System's documentation directory)" + if [ -d "/usr/doc/postgresql-$PGVERSION" ] + then + SYSDOCDIR=/usr/doc + fi + if [ -d "/usr/share/doc/postgresql-$PGVERSION" ] + then + SYSDOCDIR=/usr/share/doc + fi + if [ -d "/usr/doc/packages/postgresql-$PGVERSION" ] + then + SYSDOCDIR=/usr/doc/packages + fi + if [ -d "/usr/share/doc/packages/postgresql-$PGVERSION" ] + then + SYSDOCDIR=/usr/share/doc/packages + fi + echo + echo $"An old version of the database format was found." + echo $"You need to upgrade the data format before using PostgreSQL." + echo $"See $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information." + exit 1 + fi + else + # No existing PGDATA! Warn the user to initdb it. + echo + echo "$PGDATA is missing. Use \"postgresql-setup initdb\" to initialize the cluster first." + echo -n " [FAILED] " + echo + exit 1 + fi + + echo -n "$PSQL_START" + test x"$PG_OOM_ADJ" != x && echo "$PG_OOM_ADJ" > /proc/self/oom_score_adj + $SU -l postgres -c "$PGENGINE/postmaster -p '$PGPORT' -D '$PGDATA' ${PGOPTS} &" >> "$PGLOG" 2>&1 < /dev/null + sleep 2 + pid=`head -n 1 "$PGDATA/postmaster.pid" 2>/dev/null` + if [ "x$pid" != x ] + then + echo -n " [ OK ]" + touch "$lockfile" + echo $pid > "$pidfile" + echo + else + echo -n " [FAILED]" + echo + script_result=1 + fi +} + +stop(){ + echo -n $"Stopping ${NAME} service: " + if [ -e "$lockfile" ] + then + $SU -l postgres -c "$PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast" > /dev/null 2>&1 < /dev/null + ret=$? + if [ $ret -eq 0 ] + then + echo -n " [ OK ] " + rm -f "$pidfile" + rm -f "$lockfile" + else + echo -n " [FAILED] " + script_result=1 + fi + else + # not running; per LSB standards this is "ok" + echo -n " [ OK ] " + fi + echo +} + +restart(){ + stop + start +} + +condrestart(){ + [ -e "$lockfile" ] && restart || : +} + +reload(){ + $SU -l postgres -c "$PGENGINE/pg_ctl reload -D '$PGDATA' -s" > /dev/null 2>&1 < /dev/null +} + + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status postmaster + script_result=$? + ;; + restart) + restart + ;; + condrestart|try-restart) + condrestart + ;; + reload) + reload + ;; + force-reload) + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac + +exit $script_result diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.pam b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.pam new file mode 100644 index 00000000..0b6fdc5f --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.pam @@ -0,0 +1,4 @@ +#%PAM-1.0 +auth include common-auth +account include common-account +password include common-password diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.service b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.service new file mode 100644 index 00000000..4ec959e8 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.service @@ -0,0 +1,27 @@ +[Unit] +Description=PostgreSQL database server +After=network.target + +[Service] +Type=forking +User=postgres +Group=postgres + +# Port number for server to listen on +Environment=PGPORT=5432 + +# Location of database directory +Environment=PGDATA=/var/lib/postgresql/data + +# Disable OOM kill on the postmaster +OOMScoreAdjust=-17 + +ExecStart=@BINDIR@/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300 +ExecStop=@BINDIR@/pg_ctl stop -D ${PGDATA} -s -m fast +ExecReload=@BINDIR@/pg_ctl reload -D ${PGDATA} -s + +# Give a reasonable amount of time for the server to start up/shut down +TimeoutSec=300 + +[Install] +WantedBy=multi-user.target diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc new file mode 100644 index 00000000..dc852245 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc @@ -0,0 +1,348 @@ +SUMMARY = "PostgreSQL is a powerful, open source relational database system." +DESCRIPTION = "\ + PostgreSQL is an advanced Object-Relational database management system \ + (DBMS) that supports almost all SQL constructs (including \ + transactions, subselects and user-defined types and functions). The \ + postgresql package includes the client programs and libraries that \ + you'll need to access a PostgreSQL DBMS server. These PostgreSQL \ + client programs are programs that directly manipulate the internal \ + structure of PostgreSQL databases on a PostgreSQL server. These client \ + programs can be located on the same machine with the PostgreSQL \ + server, or may be on a remote machine which accesses a PostgreSQL \ + server over a network connection. This package contains the docs \ + in HTML for the whole package, as well as command-line utilities for \ + managing PostgreSQL databases on a PostgreSQL server. \ + \ + If you want to manipulate a PostgreSQL database on a local or remote \ + PostgreSQL server, you need this package. You also need to install \ + this package if you're installing the postgresql-server package. \ +" +HOMEPAGE = "http://www.postgresql.com" +LICENSE = "BSD" +DEPENDS = "libnsl2 zlib readline tzcode-native" + +ARM_INSTRUCTION_SET = "arm" + +SRC_URI = "http://ftp.postgresql.org/pub/source/v${PV}/${BP}.tar.bz2 \ + file://postgresql.init \ + file://postgresql-profile \ + file://postgresql.pam \ + file://postgresql-setup \ + file://postgresql.service \ + file://0001-Use-pkg-config-for-libxml2-detection.patch \ +" + +LEAD_SONAME = "libpq.so" + +# LDFLAGS for shared libraries +export LDFLAGS_SL = "${LDFLAGS}" + +inherit autotools pkgconfig perlnative pythonnative useradd update-rc.d systemd gettext + +CFLAGS += "-I${STAGING_INCDIR}/${PYTHON_DIR} -I${STAGING_INCDIR}/tcl8.6" + +SYSTEMD_SERVICE_${PN} = "postgresql.service" +SYSTEMD_AUTO_ENABLE_${PN} = "disable" + +DEPENDS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-systemctl-native', '', d)}" +pkg_postinst_${PN} () { + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd sysvinit', 'true', 'false', d)}; then + if [ -n "$D" ]; then + OPTS="--root=$D" + fi + systemctl $OPTS mask postgresql-server.service + fi +} + +enable_pam = "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" +PACKAGECONFIG ??= "${enable_pam} openssl python uuid libxml tcl nls libxml perl" +PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam," +PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl," +PACKAGECONFIG[python] = "--with-python,--without-python,python,python" +PACKAGECONFIG[uuid] = "--with-uuid=e2fs,--without-uuid,util-linux," +PACKAGECONFIG[tcl] = "--with-tcl --with-tclconfig=${STAGING_BINDIR_CROSS},--without-tcl,tcl tcl-native," +PACKAGECONFIG[nls] = "--enable-nls,--disable-nls,," +PACKAGECONFIG[libxml] = "--with-libxml,--without-libxml,libxml2,libxml2" +PACKAGECONFIG[perl] = "--with-perl,--without-perl,perl,perl" + +EXTRA_OECONF += "--enable-thread-safety --disable-rpath \ + --datadir=${datadir}/${BPN} \ + --sysconfdir=${sysconfdir}/${BPN} \ +" +EXTRA_OECONF_sh4 += "--disable-spinlocks" +EXTRA_OECONF_aarch64 += "--disable-spinlocks" + +PACKAGES_DYNAMIC += "^${PN}-plperl \ + ^${PN}-pltcl \ + ^${PN}-plpython \ +" + +python populate_packages_prepend() { + + def fill_more(name): + if name is None or name.strip() == "": + return + + fpack=d.getVar('PACKAGES', False) or "" + fpack="${PN}-" + name + " " + fpack + d.setVar('PACKAGES', fpack) + + conf=(d.getVar('PACKAGECONFIG') or "").split() + pack=d.getVar('PACKAGES', False) or "" + bb.debug(1, "PACKAGECONFIG=%s" % conf) + bb.debug(1, "PACKAGES1=%s" % pack ) + + if "perl" in conf : + fill_more("plperl") + + if "tcl" in conf: + fill_more("pltcl") + + if "python" in conf: + fill_more("plpython") + + pack=d.getVar('PACKAGES') or "" + bb.debug(1, "PACKAGES2=%s" % pack) + +} + +do_configure() { + # do_configure + autotools_do_configure + + # do_configure_append + # workaround perl package related bugs + sed -i -e "s:-L/usr/local/lib:-L=/usr/local/lib:g" \ + ${B}/src/Makefile.global + LIBPNA="\${STAGING_LIBDIR_NATIVE}/perl-native" + LIBNA="\${STAGING_LIBDIR_NATIVE}" + BLIBNA="\${STAGING_BASE_LIBDIR_NATIVE}" + sed -i -e "/^perl_archlibexp/s:${LIBPNA}:${STAGING_LIBDIR}:g" \ + ${B}/src/Makefile.global + sed -i -e "/^perl_privlibexp/s:${LIBPNA}:${STAGING_LIBDIR}:g" \ + ${B}/src/Makefile.global + # remove the rpath, replace with correct lib path + sed -i \ + -e "/^perl_embed_ldflags/s:-Wl,-rpath,${LIBNA}::g" \ + -e "/^perl_embed_ldflags/s:-Wl,-rpath,${BLIBNA}::g" \ + -e "/^perl_embed_ldflags/s:-Wl,-rpath-link,${LIBNA}::g" \ + -e "/^perl_embed_ldflags/s:-Wl,-rpath-link,${BLIBNA}::g" \ + -e "/^perl_embed_ldflags/s:${LIBPNA}:${STAGING_LIBDIR}:g" \ + -e "/^perl_embed_ldflags/s:${LIBNA}:${STAGING_LIBDIR}:g" \ + -e "/^perl_embed_ldflags/s:${BLIBNA}:${STAGING_BASELIBDIR}:g" \ + -e "/^TCLSH/s:=.*:= ${bindir}/tclsh:g" \ + ${B}/src/Makefile.global + + if ${@bb.utils.contains('PACKAGECONFIG', 'perl', 'true', 'false', d)}; then + # workaround perl package's libperl.so problem + # we are using perlnative so this perl should have same version + perl_version=`perl -v 2>/dev/null | \ + sed -n 's/This is perl.*v[a-z ]*\([0-9]\.[0-9][0-9.]*\).*$/\1/p'` + if [ ! -h "${STAGING_LIBDIR}/perl/$perl_version/CORE/libperl.so" -a \ + ! -h "${STAGING_LIBDIR}/libperl.so" ]; then + ln -sf ../../../libperl.so.5 \ + ${STAGING_LIBDIR}/perl/$perl_version/CORE/libperl.so + fi + fi +} + +do_compile_append() { + oe_runmake -C contrib all +} + +# server needs to configure user and group +usernum = "28" +groupnum = "28" +USERADD_PACKAGES = "${PN}" +USERADD_PARAM_${PN} = "-M -g postgres -o -r -d ${localstatedir}/lib/${BPN} \ + -s /bin/sh -c 'PostgreSQL Server' -u ${usernum} postgres" +GROUPADD_PARAM_${PN} = "-g ${groupnum} -o -r postgres" + +INITSCRIPT_PACKAGES = "${PN}" +INITSCRIPT_NAME = "${BPN}-server" +INITSCRIPT_PARAMS = "start 64 . stop 36 0 1 2 3 4 5 6 ." + +do_install_append() { + # install contrib + oe_runmake DESTDIR=${D} -C contrib install + # install tutorial + install -d -m 0755 ${D}${libdir}/${BPN}/tutorial + install ${B}/src/tutorial/* ${D}${libdir}/${BPN}/tutorial + + # install COPYRIGHT README HISTORY + install -d -m 0755 ${D}${docdir}/${BPN} + for i in ${B}/COPYRIGHT ${B}/README ${B}/HISTORY ${B}/doc/KNOWN_BUGS ${B}/doc/MISSING_FEATURES ${B}/doc/README* ${B}/doc/bug.template; do + [ -f $i ] && install $i ${D}${docdir}/${BPN} + done + + # install dirs and server init + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/${BPN}.init ${D}${sysconfdir}/init.d/${BPN}-server + sed -i -e "s/^PGVERSION=.*$/PGVERSION=${PV}/g" ${D}${sysconfdir}/init.d/${BPN}-server + install -m 0755 ${WORKDIR}/${BPN}-setup ${D}${bindir}/${BPN}-setup + install -d -m 700 ${D}${localstatedir}/lib/${BPN}/data + install -d -m 700 ${D}${localstatedir}/lib/${BPN}/backups + install -m 644 ${WORKDIR}/${BPN}-profile ${D}${localstatedir}/lib/${BPN}/.profile + chown -R postgres:postgres ${D}${localstatedir}/lib/${BPN} + # multiple server config directory + install -d -m 700 ${D}${sysconfdir}/default/${BPN} + + if [ "${@d.getVar('enable_pam')}" = "pam" ]; then + install -d ${D}${sysconfdir}/pam.d + install -m 644 ${WORKDIR}/postgresql.pam ${D}${sysconfdir}/pam.d/postgresql + fi + + # Install systemd unit files + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/postgresql.service ${D}${systemd_unitdir}/system + sed -i -e 's,@BINDIR@,${bindir},g' \ + ${D}${systemd_unitdir}/system/postgresql.service +} + +SSTATE_SCAN_FILES += "Makefile.global" +SSTATE_SCAN_FILES_remove = "*_config" + +PACKAGES =+ "${PN}-client ${PN}-server-dev ${PN}-timezone \ + libecpg-compat libecpg-compat-dev \ + libecpg libecpg-dev libecpg-staticdev libecpg-doc \ + libpq libpq-dev libpq-staticdev \ + libpgtypes libpgtypes-staticdev libpgtypes-dev \ + ${PN}-contrib \ +" + +RPROVIDES_${PN}-dbg += "libecpg-compat-dbg \ + libecpg-dbg \ + libpq-dbg \ + libpgtypes-dbg \ + ${PN}-contrib-dbg \ + ${PN}-pltcl-dbg \ + ${PN}-plpython-dbg \ + ${PN}-plperl-dbg \ + " + +FILES_${PN} += "${sysconfdir}/init.d/${BPN}-server \ + ${localstatedir}/lib/${BPN}/data ${localstatedir}/lib/${BPN}/backups \ + ${localstatedir}/lib/${BPN}/.profile ${sysconfdir}/default/${BPN} \ + ${libdir}/${BPN}/dict_snowball.so ${libdir}/${BPN}/plpgsql.so \ + ${libdir}/${BPN}/euc2004_sjis2004.so \ + ${libdir}/${BPN}/libpqwalreceiver.so \ + ${libdir}/${BPN}/*_and_*.so \ + ${@'${sysconfdir}/pam.d/postgresql' \ + if 'pam' == d.getVar('enable_pam') \ + else ''} \ +" + +FILES_${PN}-client = "${bindir}/clusterdb \ + ${bindir}/createdb \ + ${bindir}/createlang \ + ${bindir}/createuser \ + ${bindir}/dropdb \ + ${bindir}/droplang \ + ${bindir}/dropuser \ + ${bindir}/pg_dump \ + ${bindir}/pg_dumpall \ + ${bindir}/pg_restore \ + ${bindir}/psql \ + ${bindir}/reindexdb \ + ${bindir}/vacuumdb \ + ${bindir}/vacuumlo \ + ${datadir}/${BPN}/psqlrc.sample \ +" +FILES_${PN}-client-doc = "${mandir}/man1/clusterdb.* \ + ${mandir}/man1/createdb.* ${mandir}/man1/createlang.* \ + ${mandir}/man1/createuser.* ${mandir}/man1/dropdb.* \ + ${mandir}/man1/droplang.* ${mandir}/man1/dropuser.* \ + ${mandir}/man1/pg_dump.* ${mandir}/man1/pg_dumpall.* \ + ${mandir}/man1/pg_restore.* ${mandir}/man1/psql.* \ + ${mandir}/man1/reindexdb.* ${mandir}/man1/vacuumdb.* \ + ${mandir}/man7/* \ +" +FILES_${PN}-doc += "${docdir}/${BPN}/html ${libdir}/${BPN}/tutorial/ \ + ${mandir}/man1/initdb.* ${mandir}/man1/pg_controldata.* \ + ${mandir}/man1/pg_ctl.* ${mandir}/man1/pg_resetxlog.* \ + ${mandir}/man1/postgres.* ${mandir}/man1/postmaster.* \ +" +FILES_${PN}-timezone = "${datadir}/${BPN}/timezone \ + ${datadir}/${BPN}/timezonesets \ +" +RDEPENDS_${PN} += "${PN}-timezone" +FILES_${PN}-server-dev = "${includedir}/${BPN}/server" + +FILES_libecpg = "${libdir}/libecpg*${SOLIBS}" +FILES_libecpg-dev = "${libdir}/libecpg*${SOLIBSDEV} \ + ${libdir}/libpgtypes*${SOLIBSDEV} \ + ${includedir}/ecpg*.h ${includedir}/${BPN}/ecpg*.h \ + ${includedir}/pgtypes*.h ${includedir}/${BPN}/informix \ + ${includedir}/sql3types.h ${includedir}/sqlca.h \ +" +FILES_libecpg-doc = "${mandir}/man1/ecpg.*" +FILES_libecpg-staticdev = "${libdir}/libecpg*.a" +SECTION_libecpg-staticdev = "devel" +RDEPENDS_libecpg-staticdev = "libecpg-dev (= ${EXTENDPKGV})" + +FILES_libpq = "${libdir}/libpq*${SOLIBS}" +FILES_libpq-dev = "${libdir}/libpq*${SOLIBSDEV} \ + ${includedir} \ +" +FILES_libpq-staticdev = "${libdir}/libpq*.a ${libdir}/libpgport.a" +SECTION_libpq-staticdev = "devel" +RDEPENDS_libpq-staticdev = "libpq-dev (= ${EXTENDPKGV})" + +FILES_libecpg-compat = "${libdir}/libecpg_compat*${SOLIBS}" +FILES_libecpg-compat-dev = "${libdir}/libecpg_compat*${SOLIBS}" +FILES_libpgtypes = "${libdir}/libpgtypes*${SOLIBS}" +FILES_libpgtypes-staticdev = "${libdir}/libpgtypes*.a" +FILES_libpgtypes-dev = "${libdir}/libpgtypes*${SOLIBS} ${includedir}/pgtypes*.h" + +FILES_${PN}-contrib = " ${bindir}/oid2name ${bindir}/pg_standby \ + ${bindir}/pgbench ${bindir}/vacuumlo \ + ${S}/contrib/spi/*.example \ + ${libdir}/${BPN}/_int.so ${libdir}/${BPN}/adminpack.so \ + ${libdir}/${BPN}/autoinc.so ${libdir}/${BPN}/auto_explain.so \ + ${libdir}/${BPN}/auth_delay.so ${libdir}/${BPN}/btree_gin.so \ + ${libdir}/${BPN}/btree_gist.so ${libdir}/${BPN}/.so \ + ${libdir}/${BPN}/chkpass.so ${libdir}/${BPN}/citext.so \ + ${libdir}/${BPN}/cube.so ${libdir}/${BPN}/dblink.so \ + ${libdir}/${BPN}/dict_int.so ${libdir}/${BPN}/dict_xsyn.so \ + ${libdir}/${BPN}/dummy_seclabel.so ${libdir}/${BPN}/earthdistance.so \ + ${libdir}/${BPN}/file_fdw.so ${libdir}/${BPN}/fuzzystrmatch.so \ + ${libdir}/${BPN}/hstore.so ${libdir}/${BPN}/insert_username.so \ + ${libdir}/${BPN}/isn.so ${libdir}/${BPN}/lo.so \ + ${libdir}/${BPN}/ltree.so ${libdir}/${BPN}/moddatetime.so \ + ${libdir}/${BPN}/pageinspect.so ${libdir}/${BPN}/pg_buffercache.so \ + ${libdir}/${BPN}/pg_freespacemap.so ${libdir}/${BPN}/pg_trgm.so \ + ${libdir}/${BPN}/pgcrypto.so ${libdir}/${BPN}/pgrowlocks.so \ + ${libdir}/${BPN}/pgstattuple.so ${libdir}/${BPN}/pg_stat_statements.so \ + ${libdir}/${BPN}/refint.so ${libdir}/${BPN}/seg.so \ + ${libdir}/${BPN}/sslinfo.so \ + ${libdir}/${BPN}/tablefunc.so \ + ${libdir}/${BPN}/test_parser.so ${libdir}/${BPN}/timetravel.so \ + ${libdir}/${BPN}/tsearch2.so ${libdir}/${BPN}/uuid-ossp.so \ + ${libdir}/${BPN}/pgxml.so ${libdir}/${BPN}/passwordcheck.so \ + ${libdir}/${BPN}/pg_upgrade_support.so ${libdir}/${BPN}/.so \ + ${libdir}/${BPN}/unaccent.so \ +" +DESCRIPTION_${PN}-contrib = "The postgresql-contrib package contains \ + contributed packages that are included in the PostgreSQL distribution." + +FILES_${PN}-pltcl = "${libdir}/${BPN}/pltcl.so ${bindir}/pltcl_delmod \ + ${binddir}/pltcl_listmod ${bindir}/pltcl_loadmod \ + ${datadir}/${BPN}/unknown.pltcl" +SUMMARY_${PN}-pltcl = "The Tcl procedural language for PostgreSQL" +DESCRIPTION_${PN}-pltcl = "PostgreSQL is an advanced Object-Relational \ + database management system. The postgresql-pltcl package contains the PL/Tcl \ + procedural language for the backend." + +FILES_${PN}-plperl = "${libdir}/${BPN}/plperl.so" +SUMMARY_${PN}-plperl = "The Perl procedural language for PostgreSQL" +DESCRIPTION_${PN}-plperl = "PostgreSQL is an advanced Object-Relational \ + database management system. The postgresql-plperl package contains the \ + PL/Perl procedural language for the backend." + +# In version 8, it will be plpython.so +# In version 9, it might be plpython{2,3}.so depending on python2 or 3 +FILES_${PN}-plpython = "${libdir}/${BPN}/plpython*.so" +SUMMARY_${PN}-plpython = "The Python procedural language for PostgreSQL" +DESCRIPTION_${PN}-plpython = "PostgreSQL is an advanced Object-Relational \ + database management system. The postgresql-plpython package contains \ + the PL/Python procedural language for the backend." diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.5.bb b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.5.bb new file mode 100644 index 00000000..1a02f154 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.5.bb @@ -0,0 +1,12 @@ +require postgresql.inc + +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=6dc95e63aa4d72502ff8193dfe2ddd38" + +SRC_URI += "\ + file://not-check-libperl.patch \ + file://0001-Update-time-zone-data-files-to-tzdata-release-2018f.patch \ + file://0001-Sync-our-copy-of-the-timezone-library-with-IANA-rele.patch \ +" + +SRC_URI[md5sum] = "a5fe5fdff2d6c28f65601398be0950df" +SRC_URI[sha256sum] = "6c8e616c91a45142b85c0aeb1f29ebba4a361309e86469e0fb4617b6a73c4011" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-donot-use-the-hardcode-libdir.patch b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-donot-use-the-hardcode-libdir.patch new file mode 100644 index 00000000..7eda0387 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-donot-use-the-hardcode-libdir.patch @@ -0,0 +1,26 @@ +[PATCH] do not use the hardcode libdir + +Upstream-status: Pending + +Signed-off-by: Roy.Li +Signed-off-by: Jackie Huang +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 9b88d4c..df5ad7a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -140,7 +140,7 @@ if test "$with_libpq" != yes; then + if test -d "$with_libpq"; then + PATH="$PATH:$with_libpq/bin" + CPPFLAGS="$CPPFLAGS -I$with_libpq/include" +- LDFLAGS="$LDFLAGS -L$with_libpq/lib" ++ LDFLAGS="$LDFLAGS -L$with_libpq/${base_libdir}" + else + if test -x "$with_libpq"; then + PG_CONFIG=$with_libpq +-- +2.8.1 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-fix-for-ptest-support.patch b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-fix-for-ptest-support.patch new file mode 100644 index 00000000..a8f14e76 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-fix-for-ptest-support.patch @@ -0,0 +1,148 @@ +Subject: [PATCH] psqlodbc: fixes for ptest support + +* Fix the LIBODBC since we don't use ODBC_CONFIG. +* Fix the path for driver. +* Add the default info of postgresql server. +* Fix the output format for ptest. +* Fix the results and exe dir. + +Upstream-Status: Inappropriate [OE ptest specific] + +Signed-off-by: Jackie Huang +--- + test/Makefile.in | 2 +- + test/odbcini-gen.sh | 8 ++++---- + test/runsuite.c | 26 +++++++++++++------------- + 3 files changed, 18 insertions(+), 18 deletions(-) + +diff --git a/test/Makefile.in b/test/Makefile.in +index 8710616..fcb470e 100644 +--- a/test/Makefile.in ++++ b/test/Makefile.in +@@ -18,7 +18,7 @@ CFLAGS = @CFLAGS@ + ODBC_CONFIG = @ODBC_CONFIG@ + PROVE = @PROVE@ + +-LIBODBC := $(shell $(ODBC_CONFIG) --libs) ++LIBODBC = -lodbc + + all: $(TESTBINS) runsuite reset-db + +diff --git a/test/odbcini-gen.sh b/test/odbcini-gen.sh +index d2c2c87..6068d9d 100755 +--- a/test/odbcini-gen.sh ++++ b/test/odbcini-gen.sh +@@ -6,7 +6,7 @@ + outini=odbc.ini + outinstini=odbcinst.ini + +-drvr=../.libs/psqlodbcw ++drvr=@LIBDIR@/psqlodbca + driver=${drvr}.so + if test ! -e $driver ; then + driver=${drvr}.dll +@@ -33,10 +33,10 @@ Driver = psqlodbc test driver + Trace = No + TraceFile = + Database = contrib_regression +-Servername = +-Username = ++Servername = localhost ++Username = postgres + Password = +-Port = ++Port = 5432 + ReadOnly = No + RowVersioning = No + ShowSystemTables = No +diff --git a/test/runsuite.c b/test/runsuite.c +index 583cf35..fd2a90e 100644 +--- a/test/runsuite.c ++++ b/test/runsuite.c +@@ -51,7 +51,7 @@ bailout(const char *fmt, ...) + + /* Given a test program's name, get the test name */ + void +-parse_argument(const char *in, char *testname, char *binname) ++parse_argument(const char *in, char *testname, char *binname, const char *inputdir) + { + const char *basename; + #ifdef WIN32 +@@ -65,7 +65,7 @@ parse_argument(const char *in, char *testname, char *binname) + if (strchr(in, DIR_SEP) == NULL) + { + strcpy(testname, in); +- sprintf(binname, "exe%c%s-test", DIR_SEP, in); ++ sprintf(binname, "%s%cexe%c%s-test", inputdir, DIR_SEP, DIR_SEP, in); + return; + } + +@@ -127,7 +127,7 @@ int main(int argc, char **argv) + failures = 0; + for (i = 1, j = 1; i <= numtests; i++, j++) + { +- parse_argument(argv[j], testname, binname); ++ parse_argument(argv[j], testname, binname, inputdir); + if (runtest(binname, testname, i, inputdir) != 0) + failures++; + } +@@ -157,29 +157,29 @@ runtest(const char *binname, const char *testname, int testno, const char *input + #ifndef WIN32 + snprintf(cmdline, sizeof(cmdline), + "ODBCSYSINI=. ODBCINSTINI=./odbcinst.ini ODBCINI=./odbc.ini " +- "%s > results/%s.out", +- binname, testname); ++ "%s > %s/results/%s.out", ++ binname, inputdir, testname); + #else + snprintf(cmdline, sizeof(cmdline), +- "%s > results\\%s.out", +- binname, testname); ++ "%s > %s/results\\%s.out", ++ binname, inputdir, testname); + #endif + rc = system(cmdline); + + diff = rundiff(testname, inputdir); + if (rc != 0) + { +- printf("not ok %d - %s test returned %d\n", testno, testname, rc); ++ printf("FAIL: %d - %s\n\ttest returned %d\n", testno, testname, rc); + ret = 1; + } + else if (diff != 0) + { +- printf("not ok %d - %s test output differs\n", testno, testname); ++ printf("FAIL: %d - %s\n\ttest output differs\n", testno, testname); + ret = 1; + } + else + { +- printf("ok %d - %s\n", testno, testname); ++ printf("PASS: %d - %s\n", testno, testname); + ret = 0; + } + fflush(stdout); +@@ -196,7 +196,7 @@ rundiff(const char *testname, const char *inputdir) + char *result; + size_t result_len; + +- snprintf(filename, sizeof(filename), "results/%s.out", testname); ++ snprintf(filename, sizeof(filename), "%s/results/%s.out", inputdir, testname); + result = slurpfile(filename, &result_len); + + outputno = 0; +@@ -244,8 +244,8 @@ rundiff(const char *testname, const char *inputdir) + * files and print the smallest diff? + */ + snprintf(cmdline, sizeof(cmdline), +- "diff -c %s/expected/%s.out results/%s.out >> regression.diffs", +- inputdir, testname, testname); ++ "diff -c %s/expected/%s.out %s/results/%s.out >> regression.diffs", ++ inputdir, testname, inputdir, testname); + if (system(cmdline) == -1) + printf("# diff failed\n"); + +-- +2.8.2 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-remove-some-checks-for-cross-compiling.patch b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-remove-some-checks-for-cross-compiling.patch new file mode 100644 index 00000000..1d988182 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/psqlodbc-remove-some-checks-for-cross-compiling.patch @@ -0,0 +1,118 @@ +Subject: [PATCH] remove some checks for cross-compiling + +some lib check is not suitable for +cross-compiling, so remove them. + +Upstream-Status: Inappropriate [not a real bug,just for cross-compiling] + +Signed-off-by: Song.Li +Signed-off-by: Kai Kang +Signed-off-by: Jackie Huang +--- + configure.ac | 66 +++++++----------------------------------------------------- + 1 file changed, 7 insertions(+), 59 deletions(-) + +diff --git a/configure.ac b/configure.ac +index df5ad7a..b72bd4c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -46,57 +46,19 @@ AC_ARG_WITH(iodbc, [ --with-iodbc[[=DIR]] [[default=no]] DIR is the iODBC bas + if test "$with_iodbc" != no; then + with_unixodbc=no + AC_DEFINE(WITH_IODBC, 1, [Define to 1 to build with iODBC support]) +- if test "$with_iodbc" = yes; then +- AC_PATH_PROGS(ODBC_CONFIG, iodbc-config) +- else +- ODBC_CONFIG=$with_iodbc +- fi +- if test ! -x "${ODBC_CONFIG}/bin/iodbc-config"; then +- if test ! -x "${ODBC_CONFIG}"; then +- AC_MSG_ERROR([iodbc-config not found (required for iODBC build)]) +- fi +- else +- ODBC_CONFIG=${ODBC_CONFIG}/bin/iodbc-config +- fi + fi + + if test "$with_unixodbc" != no; then + AC_DEFINE(WITH_UNIXODBC, 1, + [Define to 1 to build with unixODBC support]) +- if test "$with_unixodbc" = yes; then +- AC_PATH_PROGS(ODBC_CONFIG, odbc_config) +- else +- ODBC_CONFIG=$with_unixodbc +- fi +- if test ! -x "${ODBC_CONFIG}/bin/odbc_config"; then +- if test ! -x "${ODBC_CONFIG}"; then +- AC_MSG_ERROR([odbc_config not found (required for unixODBC build)]) +- fi +- else +- ODBC_CONFIG=${ODBC_CONFIG}/bin/odbc_config +- fi + fi + + # + # ODBC include and library + # +- +-if test "$ODBC_CONFIG" != ""; then +- if test "$with_iodbc" != no; then +- ODBC_INCLUDE=`${ODBC_CONFIG} --cflags` +- CPPFLAGS="$CPPFLAGS ${ODBC_INCLUDE}" +- # Linking libiodoc is rather problematic +- [ODBC_LIBDIR=`${ODBC_CONFIG} --libs | sed -e "s/^\(-L\|.*[ \t]-L\)\([^ \n\r\f\t]*\).*$/-L\2/"`] +- LDFLAGS="$LDFLAGS ${ODBC_LIBDIR}" +- else +- ODBC_INCLUDE=`${ODBC_CONFIG} --include-prefix` +- CPPFLAGS="$CPPFLAGS -I${ODBC_INCLUDE}" +- # Linking libodoc is rather problematic +- ODBC_LIBDIR=`${ODBC_CONFIG} --lib-prefix` +- LDFLAGS="$LDFLAGS -L${ODBC_LIBDIR}" +- fi +- AC_MSG_NOTICE([using $ODBC_INCLUDE $ODBC_LIBDIR]) +-fi ++ODBC_LIBS="-lodbcinst" ++LIBS="$LIBS ${ODBC_LIBS}" ++AC_MSG_NOTICE([using $ODBC_INCLUDE $ODBC_LIBS]) + + # + # SQLCOLATTRIBUTE_SQLLEN check +@@ -176,18 +138,10 @@ PGAC_ARG_BOOL(enable, pthreads, yes, + # Find libpq headers and libraries + # + +-if test -z "$PG_CONFIG"; then +- AC_PATH_PROGS(PG_CONFIG, pg_config) +-fi +- +-if test -n "$PG_CONFIG"; then +- pg_includedir=`"$PG_CONFIG" --includedir` +- pg_libdir=`"$PG_CONFIG" --libdir` +- CPPFLAGS="$CPPFLAGS -I$pg_includedir" +- LDFLAGS="$LDFLAGS -L$pg_libdir" +-fi +- +- ++pg_includedir="" ++pg_libdir="" ++CPPFLAGS="$CPPFLAGS" ++LDFLAGS="$LDFLAGS" + + # 1. Programs + +@@ -211,12 +165,6 @@ if test "$with_iodbc" != no; then + [AC_MSG_ERROR([iODBC library "iodbcinst" not found])]) + fi + +-if test "$enable_pthreads" = yes; then +- AC_CHECK_LIB(pthreads, pthread_create, +- [], +- [AC_CHECK_LIB(pthread, pthread_create)]) +-fi +- + AC_CHECK_LIB(pq, PQsetSingleRowMode, [], + [AC_MSG_ERROR([libpq library version >= 9.2 is required])]) + +-- +2.8.1 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/run-ptest b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/run-ptest new file mode 100644 index 00000000..6b41c636 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/files/run-ptest @@ -0,0 +1,46 @@ +#!/bin/sh + +BASEDIR="$(dirname $(readlink -f $0))" + +# init and start postgresql server for testing +PGDATA="/var/lib/postgresql/data" +if [ -f "${PGDATA}/PG_VERSION" ]; then + echo "Data directory is not empty! Skip initdb." +else + echo "Initializing database: " + chown -R postgres:postgres ${PGDATA} + su -l postgres -c "/usr/bin/initdb --pgdata='$PGDATA'" +fi + +SYSV_INIT="/etc/init.d/postgresql-server" +if [ -e ${SYSV_INIT} ]; then + RESTART_POSTGRESQL="${SYSV_INIT} restart" + STOP_POSTGRESQL="${SYSV_INIT} stop" +else + RESTART_POSTGRESQL="systemctl restart postgresql" + STOP_POSTGRESQL="systemctl stop postgresql" +fi + +${RESTART_POSTGRESQL} || echo "Failed to restart postgresql, skip the tests." + +if [ ! -d ${BASEDIR}/results ]; then + mkdir ${BASEDIR}/results +fi + +# Generate odbc config files and reset db +${BASEDIR}/odbcini-gen.sh || echo "FAIL: Generate odbc config files" +ODBCSYSINI=. ODBCINSTINI=./odbcinst.ini ODBCINI=./odbc.ini \ + ${BASEDIR}/reset-db < ${BASEDIR}/sampletables.sql \ + || echo "FAIL: reset db with sample tables" + +# Run the actual tests +TESTS= +for i in `ls ${BASEDIR}/exe/*-test`; do + TESTS="$TESTS $(basename ${i%-test})" +done + +${BASEDIR}/runsuite ${TESTS} --inputdir=${BASEDIR} + +# Cleanup +${STOP_POSTGRESQL} +rm -f regression.diffs odbcinst.ini odbc.ini diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc.inc b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc.inc new file mode 100644 index 00000000..5337b456 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc.inc @@ -0,0 +1,50 @@ +SUMMARY = "ODBC driver for PostgreSQL" +DESCRIPTION = "\ + This package provides a driver that allows ODBC-enabled applications to \ + access PostgreSQL databases. ODBC is an abstraction layer that allows \ + applications written for that layer to access databases in a manner \ + that is relatively independent of the particular database management \ + system. \ + . \ + You need to install this package if you want to use an application that \ + provides database access through ODBC and you want that application to \ + access a PostgreSQL database. This package would need to be installed \ + on the same machine as that client application; the PostgreSQL database \ + server can be on a different machine and does not need any additional \ + software to accept ODBC clients. \ +" +SECTION = "libs" +HOMEPAGE = "http://psqlodbc.projects.postgresql.org/" + +DEPENDS += "postgresql unixodbc" + +EXTRA_OECONF = "\ + ac_cv_lib_ltdl_lt_dlopen=no \ + ac_cv_lib_pq_PQconnectdb=yes \ + --with-unixodbc=yes \ + --with-libpq=${STAGING_LIBDIR}/.. \ + --enable-pthreads \ + --disable-unicode \ + LIBS="-lpthread" \ +" + +inherit autotools pkgconfig ptest + +do_compile_ptest() { + oe_runmake -C ${B}/test +} + +do_install_ptest() { + install -d ${D}${PTEST_PATH} + cp -a --no-preserve=ownership ${B}/test/exe ${S}/test/expected ${D}${PTEST_PATH} + install -m 0755 ${B}/test/reset-db ${D}${PTEST_PATH} + install -m 0755 ${B}/test/runsuite ${D}${PTEST_PATH} + install -m 0755 ${S}/test/odbcini-gen.sh ${D}${PTEST_PATH} + install -m 0755 ${S}/test/sampletables.sql ${D}${PTEST_PATH} + sed -i -e 's|@LIBDIR@|${libdir}|' ${D}${PTEST_PATH}/odbcini-gen.sh +} + +FILES_${PN} += "${libdir}" + +# The tests need a local PostgreSQL server running +RDEPENDS_${PN}-ptest = "postgresql" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc_09.05.0300.bb b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc_09.05.0300.bb new file mode 100644 index 00000000..6e1c8ab4 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc_09.05.0300.bb @@ -0,0 +1,14 @@ +require ${PN}.inc + +LICENSE = "LGPLv2" +LIC_FILES_CHKSUM = "file://license.txt;md5=6db3822fc7512e83087ba798da013692" + +SRC_URI = "http://ftp.postgresql.org/pub/odbc/versions/src/${BPN}-${PV}.tar.gz \ + file://psqlodbc-remove-some-checks-for-cross-compiling.patch \ + file://psqlodbc-donot-use-the-hardcode-libdir.patch \ + file://psqlodbc-fix-for-ptest-support.patch \ + file://run-ptest \ +" + +SRC_URI[md5sum] = "4c6e0b22187d7bb1c998ffac89e50f6b" +SRC_URI[sha256sum] = "9521f328bf28aaaf5c8488dc89792b614f9d6271742c0baf9bb41c97537764a8" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch new file mode 100644 index 00000000..be498974 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch @@ -0,0 +1,194 @@ +From 8d65d70b54d1d306a0a0b00e036bc8ddd39d8ec1 Mon Sep 17 00:00:00 2001 +From: "przemyslaw.skibinski@percona.com" +Date: Fri, 20 Apr 2018 13:28:05 -0700 +Subject: [PATCH] Fix GitHub issue #3716: gcc-8 warnings + +Summary: +Fix the following gcc-8 warnings: +- conflicting C language linkage declaration [-Werror] +- writing to an object with no trivial copy-assignment [-Werror=class-memaccess] +- array subscript -1 is below array bounds [-Werror=array-bounds] + +Solves https://github.com/facebook/rocksdb/issues/3716 +Closes https://github.com/facebook/rocksdb/pull/3736 + +Differential Revision: D7684161 + +Pulled By: yiwu-arbug + +fbshipit-source-id: 47c0423d26b74add251f1d3595211eee1e41e54a +--- +Signed-off-by: Khem Raj +Upstream-Status: Backport [https://github.com/facebook/rocksdb/commit/dee95a1afc6c63515e7d94dec33acdb79638b6d7.patch] + + db/c.cc | 77 ++++++++++++++------------------------- + memtable/inlineskiplist.h | 12 +++--- + 2 files changed, 33 insertions(+), 56 deletions(-) + +diff --git a/db/c.cc b/db/c.cc +index 064103ed4..0d485d096 100644 +--- a/db/c.cc ++++ b/db/c.cc +@@ -1388,23 +1388,24 @@ void rocksdb_writebatch_put_log_data( + b->rep.PutLogData(Slice(blob, len)); + } + ++class H : public WriteBatch::Handler { ++ public: ++ void* state_; ++ void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen); ++ void (*deleted_)(void*, const char* k, size_t klen); ++ virtual void Put(const Slice& key, const Slice& value) override { ++ (*put_)(state_, key.data(), key.size(), value.data(), value.size()); ++ } ++ virtual void Delete(const Slice& key) override { ++ (*deleted_)(state_, key.data(), key.size()); ++ } ++}; ++ + void rocksdb_writebatch_iterate( + rocksdb_writebatch_t* b, + void* state, + void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen), + void (*deleted)(void*, const char* k, size_t klen)) { +- class H : public WriteBatch::Handler { +- public: +- void* state_; +- void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen); +- void (*deleted_)(void*, const char* k, size_t klen); +- virtual void Put(const Slice& key, const Slice& value) override { +- (*put_)(state_, key.data(), key.size(), value.data(), value.size()); +- } +- virtual void Delete(const Slice& key) override { +- (*deleted_)(state_, key.data(), key.size()); +- } +- }; + H handler; + handler.state_ = state; + handler.put_ = put; +@@ -1649,18 +1650,6 @@ void rocksdb_writebatch_wi_iterate( + void* state, + void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen), + void (*deleted)(void*, const char* k, size_t klen)) { +- class H : public WriteBatch::Handler { +- public: +- void* state_; +- void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen); +- void (*deleted_)(void*, const char* k, size_t klen); +- virtual void Put(const Slice& key, const Slice& value) override { +- (*put_)(state_, key.data(), key.size(), value.data(), value.size()); +- } +- virtual void Delete(const Slice& key) override { +- (*deleted_)(state_, key.data(), key.size()); +- } +- }; + H handler; + handler.state_ = state; + handler.put_ = put; +@@ -3109,20 +3098,21 @@ void rocksdb_slicetransform_destroy(rocksdb_slicetransform_t* st) { + delete st; + } + ++struct Wrapper : public rocksdb_slicetransform_t { ++ const SliceTransform* rep_; ++ ~Wrapper() { delete rep_; } ++ const char* Name() const override { return rep_->Name(); } ++ Slice Transform(const Slice& src) const override { ++ return rep_->Transform(src); ++ } ++ bool InDomain(const Slice& src) const override { ++ return rep_->InDomain(src); ++ } ++ bool InRange(const Slice& src) const override { return rep_->InRange(src); } ++ static void DoNothing(void*) { } ++}; ++ + rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t prefixLen) { +- struct Wrapper : public rocksdb_slicetransform_t { +- const SliceTransform* rep_; +- ~Wrapper() { delete rep_; } +- const char* Name() const override { return rep_->Name(); } +- Slice Transform(const Slice& src) const override { +- return rep_->Transform(src); +- } +- bool InDomain(const Slice& src) const override { +- return rep_->InDomain(src); +- } +- bool InRange(const Slice& src) const override { return rep_->InRange(src); } +- static void DoNothing(void*) { } +- }; + Wrapper* wrapper = new Wrapper; + wrapper->rep_ = rocksdb::NewFixedPrefixTransform(prefixLen); + wrapper->state_ = nullptr; +@@ -3131,19 +3121,6 @@ rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t pref + } + + rocksdb_slicetransform_t* rocksdb_slicetransform_create_noop() { +- struct Wrapper : public rocksdb_slicetransform_t { +- const SliceTransform* rep_; +- ~Wrapper() { delete rep_; } +- const char* Name() const override { return rep_->Name(); } +- Slice Transform(const Slice& src) const override { +- return rep_->Transform(src); +- } +- bool InDomain(const Slice& src) const override { +- return rep_->InDomain(src); +- } +- bool InRange(const Slice& src) const override { return rep_->InRange(src); } +- static void DoNothing(void*) { } +- }; + Wrapper* wrapper = new Wrapper; + wrapper->rep_ = rocksdb::NewNoopTransform(); + wrapper->state_ = nullptr; +diff --git a/memtable/inlineskiplist.h b/memtable/inlineskiplist.h +index 702a7336d..eadda1dc1 100644 +--- a/memtable/inlineskiplist.h ++++ b/memtable/inlineskiplist.h +@@ -280,7 +280,7 @@ struct InlineSkipList::Node { + // next_[0]. This is used for passing data from AllocateKey to Insert. + void StashHeight(const int height) { + assert(sizeof(int) <= sizeof(next_[0])); +- memcpy(&next_[0], &height, sizeof(int)); ++ memcpy(static_cast(&next_[0]), &height, sizeof(int)); + } + + // Retrieves the value passed to StashHeight. Undefined after a call +@@ -300,30 +300,30 @@ struct InlineSkipList::Node { + assert(n >= 0); + // Use an 'acquire load' so that we observe a fully initialized + // version of the returned Node. +- return (next_[-n].load(std::memory_order_acquire)); ++ return ((&next_[0] - n)->load(std::memory_order_acquire)); + } + + void SetNext(int n, Node* x) { + assert(n >= 0); + // Use a 'release store' so that anybody who reads through this + // pointer observes a fully initialized version of the inserted node. +- next_[-n].store(x, std::memory_order_release); ++ (&next_[0] - n)->store(x, std::memory_order_release); + } + + bool CASNext(int n, Node* expected, Node* x) { + assert(n >= 0); +- return next_[-n].compare_exchange_strong(expected, x); ++ return (&next_[0] - n)->compare_exchange_strong(expected, x); + } + + // No-barrier variants that can be safely used in a few locations. + Node* NoBarrier_Next(int n) { + assert(n >= 0); +- return next_[-n].load(std::memory_order_relaxed); ++ return (&next_[0] - n)->load(std::memory_order_relaxed); + } + + void NoBarrier_SetNext(int n, Node* x) { + assert(n >= 0); +- next_[-n].store(x, std::memory_order_relaxed); ++ (&next_[0] - n)->store(x, std::memory_order_relaxed); + } + + // Insert node after prev on specific level. +-- +2.17.0 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb new file mode 100644 index 00000000..594d1a9c --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb @@ -0,0 +1,32 @@ +SUMMARY = "RocksDB an embeddable, persistent key-value store" +DESCRIPTION = "RocksDB is library that provides an embeddable, persistent key-value store for fast storage." +HOMEPAGE = "http://rocksdb.org/" +LICENSE = "(Apache-2.0 | GPL-2.0) & BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.Apache;md5=3b83ef96387f14655fc854ddc3c6bd57 \ + file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.leveldb;md5=fb04ff57a14f308f2eed4a9b87d45837" + +SRCREV = "c60df9d9e7629fe208a9b848293a5599f83d5e77" +SRCBRANCH = "5.13.fb" +PV = "5.13.1" + +SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH} \ + file://0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch \ + " + +S = "${WORKDIR}/git" + +inherit cmake + +PACKAGECONFIG ??= "bzip2 zlib lz4" +PACKAGECONFIG[bzip2] = "-DWITH_BZ2=ON,-DWITH_BZ2=OFF,bzip2" +PACKAGECONFIG[lz4] = "-DWITH_LZ4=ON,-DWITH_LZ4=OFF,lz4" +PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib" +PACKAGECONFIG[lite] = "-DROCKSDB_LITE=ON,-DROCKSDB_LITE=OFF" + +# Tools and tests currently don't compile on armv5 so we disable them +EXTRA_OECMAKE = "\ + -DPORTABLE=ON \ + -DWITH_TESTS=OFF \ + -DWITH_TOOLS=OFF \ +" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/soci/soci/soci_libdir.patch b/external/meta-openembedded/meta-oe/recipes-dbs/soci/soci/soci_libdir.patch new file mode 100644 index 00000000..00a1a5c8 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/soci/soci/soci_libdir.patch @@ -0,0 +1,28 @@ +Define SOCI_LIBDIR only if its not passed via environemnt. In OE we +want to set it per our choice since we use 'lib' for 64bit unless we +are using multilib + +-Khem + +Index: soci-3.2.2/CMakeLists.txt +=================================================================== +--- soci-3.2.2.orig/CMakeLists.txt ++++ soci-3.2.2/CMakeLists.txt +@@ -69,11 +69,12 @@ include(SociDependencies) + ############################################################################### + # Installation + ############################################################################### +- +-if(APPLE OR CMAKE_SIZEOF_VOID_P EQUAL 4) +- set(SOCI_LIBDIR "lib") +-else() +- set(SOCI_LIBDIR "lib64") ++if(NOT DEFINED SOCI_LIBDIR) ++ if(APPLE OR CMAKE_SIZEOF_VOID_P EQUAL 4) ++ set(SOCI_LIBDIR "lib") ++ else() ++ set(SOCI_LIBDIR "lib") ++ endif() + endif() + + set(BINDIR "bin" CACHE PATH "The directory to install binaries into.") diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/soci/soci_3.2.3.bb b/external/meta-openembedded/meta-oe/recipes-dbs/soci/soci_3.2.3.bb new file mode 100644 index 00000000..3f22d381 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/soci/soci_3.2.3.bb @@ -0,0 +1,49 @@ +# Copyright (C) 2015 Khem Raj +# Released under the MIT license (see COPYING.MIT for the terms) + +DESCRIPTION = "The C++ Database Access Library" +HOMEPAGE = "http://soci.sourceforge.net" +LICENSE = "BSL-1.0" +LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c" +SECTION = "libs" +DEPENDS = "boost" + + +SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}/${BP}/${BP}.tar.gz \ + file://soci_libdir.patch \ + " +SRC_URI[md5sum] = "acfbccf176cd20e06833a8037a2d3699" +SRC_URI[sha256sum] = "2c659db0f4f7b424bbcffe195c03c293a1dbf676189a27b077fb2aab4d53a610" + +TESTCONFIG = '-DSOCI_TEST_EMPTY_CONNSTR="dummy" -DSOCI_TEST_SQLITE3_CONNSTR="test.db" \ + -DSOCI_TEST_POSTGRESQL_CONNSTR:STRING="dbname=soci_test" \ + -DSOCI_TEST_MYSQL_CONNSTR:STRING="db=soci_test user=oe password=oe"' + +OBASEDIR ?= "/opt/oracle" +OINCDIR = "rdbms/public" +OLIBDIR = "lib" + +PACKAGECONFIG[sqlite3] = "-DSOCI_SQLITE3=ON,-DSOCI_SQLITE3=OFF,sqlite3," +PACKAGECONFIG[mysql] = "-DSOCI_MYSQL=ON,-DSOCI_MYSQL=OFF,mariadb," +PACKAGECONFIG[postgresql] = "-DSOCI_POSTGRESQL=ON,-DSOCI_POSTGRESQL=OFF,postgresql," +PACKAGECONFIG[odbc] = "-DSOCI_ODBC=ON,-DSOCI_ODBC=OFF,," +PACKAGECONFIG[empty] = "-DSOCI_EMPTY=ON,-DSOCI_EMPTY=OFF,," +PACKAGECONFIG[oracle] = "-DWITH_ORACLE=ON --with-oracle-include=${OINCDIR} --with-oracle-lib=${OLIBDIR},-DWITH_ORACLE=OFF,," +PACKAGECONFIG[ptest] = "${TESTCONFIG},,," + +# enable your backend by default we enable 'empty' +PACKAGECONFIG ??= "empty" + +# Take the flags added by PACKAGECONFIG and pass them to cmake. +EXTRA_OECMAKE = "${EXTRA_OECONF} -DSOCI_LIBDIR=${libdir}" +DISABLE_STATIC = "" + +inherit dos2unix cmake + +PACKAGES += "${PN}-sqlite3 ${PN}-mysql ${PN}-postgresql ${PN}-odbc ${PN}-oracle" + +FILES_${PN}-sqlite3 = "${libdir}/lib${BPN}_sqlite3.so.*" +FILES_${PN}-mysql = "${libdir}/lib${BPN}_mysql.so.*" +FILES_${PN}-postgresql = "${libdir}/lib${BPN}_postgresql.so.*" +FILES_${PN}-odbc = "${libdir}/lib${BPN}_odbc.so.*" +FILES_${PN}-oracle = "${libdir}/lib${BPN}_oracle.so.*" diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/0001-shell.c-Fix-format-not-a-string-literal-warning.patch b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/0001-shell.c-Fix-format-not-a-string-literal-warning.patch new file mode 100644 index 00000000..c5d7c0c8 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/0001-shell.c-Fix-format-not-a-string-literal-warning.patch @@ -0,0 +1,32 @@ +From 443980ddc82fb40e2e1f9544f2be169bd23dd246 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 17 Jun 2017 16:49:24 -0700 +Subject: [PATCH] shell.c: Fix format not a string literal warning + +src/shell.c:695:20: error: format not a string literal and no format arguments [-Werror=format-security] +| fprintf(stderr,zHelp); +| ^~~~~ + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +--- + src/shell.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shell.c b/src/shell.c +index bb46c49..3c6fe0f 100644 +--- a/src/shell.c ++++ b/src/shell.c +@@ -692,7 +692,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){ + }else + + if( c=='h' && strncmp(azArg[0], "help", n)==0 ){ +- fprintf(stderr,zHelp); ++ fprintf(stderr, "%s", zHelp); + }else + + if( c=='i' && strncmp(azArg[0], "indices", n)==0 && nArg>1 ){ +-- +2.13.1 + diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/mainmk_build_dynamic.patch b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/mainmk_build_dynamic.patch new file mode 100644 index 00000000..914422f1 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/mainmk_build_dynamic.patch @@ -0,0 +1,32 @@ +diff -urN sqlite-2.8.17.orig/main.mk sqlite-2.8.17/main.mk +--- sqlite-2.8.17.orig/main.mk 2005-04-23 22:43:23.000000000 +0000 ++++ sqlite-2.8.17/main.mk 2009-04-02 20:10:36.000000000 +0000 +@@ -139,7 +139,7 @@ + # This is the default Makefile target. The objects listed here + # are what get build when you type just "make" with no arguments. + # +-all: sqlite.h config.h libsqlite.a sqlite$(EXE) ++all: sqlite.h config.h libsqlite.so sqlite$(EXE) + + # Generate the file "last_change" which contains the date of change + # of the most recently modified source code file +@@ -148,13 +148,12 @@ + cat $(SRC) | grep '$$Id: ' | sort +4 | tail -1 \ + | awk '{print $$5,$$6}' >last_change + +-libsqlite.a: $(LIBOBJ) +- $(AR) libsqlite.a $(LIBOBJ) +- $(RANLIB) libsqlite.a +- +-sqlite$(EXE): $(TOP)/src/shell.c libsqlite.a sqlite.h +- $(TCCX) $(READLINE_FLAGS) -o sqlite$(EXE) $(TOP)/src/shell.c \ +- libsqlite.a $(LIBREADLINE) $(THREADLIB) ++libsqlite.so: $(LIBOBJ) ++ $(CC) $(LDFLAGS) -shared -o libsqlite.so -Wl,-soname,libsqlite.so.0 $(LIBOBJ) ++ ++sqlite$(EXE): $(TOP)/src/shell.c libsqlite.so sqlite.h ++ $(TCCX) $(LDFLAGS) $(READLINE_FLAGS) -o sqlite$(EXE) $(TOP)/src/shell.c \ ++ -lsqlite $(LIBREADLINE) $(THREADLIB) + + sqlite_analyzer$(EXE): $(TOP)/src/tclsqlite.c libsqlite.a $(TESTSRC) \ + $(TOP)/tool/spaceanal.tcl diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/mainmk_no_tcl.patch b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/mainmk_no_tcl.patch new file mode 100644 index 00000000..b84b6486 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/mainmk_no_tcl.patch @@ -0,0 +1,20 @@ +diff -bur sqlite-2.8.17~orig/main.mk sqlite-2.8.17/main.mk +--- sqlite-2.8.17~orig/main.mk 2006-02-13 04:09:33.000000000 -0600 ++++ sqlite-2.8.17/main.mk 2006-02-13 04:15:42.000000000 -0600 +@@ -58,7 +58,7 @@ + expr.o func.o hash.o insert.o \ + main.o opcodes.o os.o pager.o parse.o pragma.o printf.o random.o \ + select.o table.o tokenize.o trigger.o update.o util.o \ +- vacuum.o vdbe.o vdbeaux.o where.o tclsqlite.o ++ vacuum.o vdbe.o vdbeaux.o where.o + + # All of the source code files. + # +@@ -91,7 +91,6 @@ + $(TOP)/src/sqlite.h.in \ + $(TOP)/src/sqliteInt.h \ + $(TOP)/src/table.c \ +- $(TOP)/src/tclsqlite.c \ + $(TOP)/src/tokenize.c \ + $(TOP)/src/trigger.c \ + $(TOP)/src/update.c \ diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/sqlite.pc b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/sqlite.pc new file mode 100644 index 00000000..6bc742ee --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite-2.8.17/sqlite.pc @@ -0,0 +1,12 @@ +# Package Information for pkg-config + +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: SQLite +Description: SQL database engine +Version: 2.8.17 +Libs: -L${libdir} -lsqlite +Cflags: -I${includedir} diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite_2.8.17.bb b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite_2.8.17.bb new file mode 100644 index 00000000..501c0e3e --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-dbs/sqlite/sqlite_2.8.17.bb @@ -0,0 +1,61 @@ +SUMMARY = "An Embeddable SQL Database Engine" +HOMEPAGE = "http://www.sqlite.org/" +SECTION = "libs" +DEPENDS = "readline ncurses" +LICENSE = "PD" +LIC_FILES_CHKSUM = "file://src/main.c;beginline=1;endline=10;md5=e98469a8efa024a38ad5b2e4b92f4a96" + +PR = "r7" + +SRC_URI = "http://www.hwaci.com/sw/sqlite/sqlite-${PV}.tar.gz \ + file://mainmk_build_dynamic.patch \ + file://mainmk_no_tcl.patch \ + file://sqlite.pc \ + file://0001-shell.c-Fix-format-not-a-string-literal-warning.patch \ + " + +SOURCES = "attach.o auth.o btree.o btree_rb.o build.o copy.o date.o delete.o \ + expr.o func.o hash.o insert.o main.o opcodes.o os.o pager.o \ + parse.o pragma.o printf.o random.o select.o table.o tokenize.o \ + trigger.o update.o util.o vacuum.o vdbe.o vdbeaux.o where.o" + +inherit autotools pkgconfig + +do_configure() { + echo "main.mk is patched, no need to configure" + # make pkgconfig.bbclass pick this up + cp ${WORKDIR}/sqlite.pc ${S} +} + +do_compile() { + oe_runmake -f ${S}/Makefile.linux-gcc \ + TOP="${S}" \ + BCC="${BUILD_CC}" \ + TCC="${CC}" \ + OPTS="-fPIC -D'INTPTR_TYPE=int'" \ + TCL_FLAGS= LIBTCL= \ + READLINE_FLAGS="-DHAVE_READLINE=1 -I${STAGING_INCDIR}" \ + LIBREADLINE="-L. -L${STAGING_LIBDIR} -lreadline -lncurses" +} + +do_install() { + install -d ${D}${libdir} ${D}${bindir} + install sqlite ${D}${bindir} + install -m 0755 libsqlite.so ${D}${libdir}/libsqlite.so.0.8.6 + ln -sf libsqlite.so.0.8.6 ${D}${libdir}/libsqlite.so + ln -sf libsqlite.so.0.8.6 ${D}${libdir}/libsqlite.so.0 + ln -sf libsqlite.so.0.8.6 ${D}${libdir}/libsqlite.so.0.8 + install -d ${D}${includedir} + install -m 0644 sqlite.h ${D}${includedir}/sqlite.h + install -d ${D}${libdir}/pkgconfig + install -m 0644 ${S}/sqlite.pc ${D}${libdir}/pkgconfig/sqlite.pc +} + +PACKAGES += "${PN}-bin" +FILES_${PN}-bin = "${bindir}/*" +FILES_${PN} = "${libdir}/*.so.*" + +SRC_URI[md5sum] = "838dbac20b56d2c4292e98848505a05b" +SRC_URI[sha256sum] = "3f35ebfb67867fb5b583a03e480f900206af637efe7179b32294a6a0cf806f37" + +BBCLASSEXTEND = "native" -- cgit 1.2.3-korg