diff --git a/.hgtags b/.hgtags index 1dc26b87945..1557113c1b5 100644 --- a/.hgtags +++ b/.hgtags @@ -478,3 +478,4 @@ e59941f7247d451fa7df9eaef3fce0f492f8420c jdk-11+4 d5c43e9f08fb9a7c74aae0d48daf17f2ad2afaef jdk-11+5 3acb379b86725c47e7f33358cb22efa8752ae532 jdk-11+6 f7363de371c9a1f668bd0a01b7df3d1ddb9cc58b jdk-11+7 +755e1b55a4dff510f9639cdb5c5e82549a7e09b3 jdk-11+8 diff --git a/make/CreateJmods.gmk b/make/CreateJmods.gmk index 0b530bb8b6b..9373499ace7 100644 --- a/make/CreateJmods.gmk +++ b/make/CreateJmods.gmk @@ -80,10 +80,15 @@ ifneq ($(MAN_DIR), ) DEPS += $(call CacheFind, $(MAN_DIR)) endif +# If a specific modules_legal dir exists for this module, only pick up files +# from there. These files were explicitly filtered or modified in -copy +# targets. For the rest, just pick up everything from the source legal dirs. LEGAL_NOTICES := \ - $(call uniq, $(SUPPORT_OUTPUTDIR)/modules_legal/java.base \ - $(call FindModuleLegalDirs, $(MODULE))) \ - # + $(SUPPORT_OUTPUTDIR)/modules_legal/common \ + $(if $(wildcard $(SUPPORT_OUTPUTDIR)/modules_legal/$(MODULE)), \ + $(wildcard $(SUPPORT_OUTPUTDIR)/modules_legal/$(MODULE)), \ + $(call FindModuleLegalSrcDirs, $(MODULE)) \ + ) LEGAL_NOTICES_PATH := $(call PathList, $(LEGAL_NOTICES)) DEPS += $(call CacheFind, $(LEGAL_NOTICES)) diff --git a/make/autoconf/flags-ldflags.m4 b/make/autoconf/flags-ldflags.m4 index 2816fca3499..c83f6cbde9f 100644 --- a/make/autoconf/flags-ldflags.m4 +++ b/make/autoconf/flags-ldflags.m4 @@ -81,7 +81,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER], elif test "x$TOOLCHAIN_TYPE" = xclang; then BASIC_LDFLAGS_JVM_ONLY="-mno-omit-leaf-frame-pointer -mstack-alignment=16 \ - -stdlib=libstdc++ -fPIC" + -stdlib=libc++ -fPIC" elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then BASIC_LDFLAGS="-Wl,-z,defs" diff --git a/make/autoconf/flags.m4 b/make/autoconf/flags.m4 index bae8503b8c5..fef76f8fbba 100644 --- a/make/autoconf/flags.m4 +++ b/make/autoconf/flags.m4 @@ -116,7 +116,7 @@ AC_DEFUN([FLAGS_SETUP_MACOSX_VERSION], # of the OS. It currently has a hard coded value. Setting this also limits # exposure to API changes in header files. Bumping this is likely to # require code changes to build. - MACOSX_VERSION_MIN=10.7.0 + MACOSX_VERSION_MIN=10.9.0 MACOSX_VERSION_MIN_NODOTS=${MACOSX_VERSION_MIN//\./} AC_SUBST(MACOSX_VERSION_MIN) @@ -241,7 +241,7 @@ AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN], test "x$OPENJDK_TARGET_CPU" != xmips && test "x$OPENJDK_TARGET_CPU" != xmipsel && test "x$OPENJDK_TARGET_CPU" != xmips64 && - test "x$OPENJDK_TARGET_CPU" != xmips64el; then + test "x$OPENJDK_TARGET_CPU" != xmips64el; then MACHINE_FLAG="-m${OPENJDK_TARGET_CPU_BITS}" fi fi @@ -325,22 +325,18 @@ AC_DEFUN([FLAGS_SETUP_TOOLCHAIN_CONTROL], if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then CC_OUT_OPTION=-Fo - EXE_OUT_OPTION=-out: LD_OUT_OPTION=-out: AR_OUT_OPTION=-out: else # The option used to specify the target .o,.a or .so file. # When compiling, how to specify the to be created object file. CC_OUT_OPTION='-o$(SPACE)' - # When linking, how to specify the to be created executable. - EXE_OUT_OPTION='-o$(SPACE)' - # When linking, how to specify the to be created dynamically linkable library. + # When linking, how to specify the output LD_OUT_OPTION='-o$(SPACE)' # When archiving, how to specify the to be create static archive for object files. AR_OUT_OPTION='rcs$(SPACE)' fi AC_SUBST(CC_OUT_OPTION) - AC_SUBST(EXE_OUT_OPTION) AC_SUBST(LD_OUT_OPTION) AC_SUBST(AR_OUT_OPTION) diff --git a/make/autoconf/spec.gmk.in b/make/autoconf/spec.gmk.in index b7a278b7244..d8934e7da18 100644 --- a/make/autoconf/spec.gmk.in +++ b/make/autoconf/spec.gmk.in @@ -395,7 +395,6 @@ COMPILER_COMMAND_FILE_FLAG:=@COMPILER_COMMAND_FILE_FLAG@ COMPILER_BINDCMD_FILE_FLAG:=@COMPILER_BINDCMD_FILE_FLAG@ CC_OUT_OPTION:=@CC_OUT_OPTION@ -EXE_OUT_OPTION:=@EXE_OUT_OPTION@ LD_OUT_OPTION:=@LD_OUT_OPTION@ AR_OUT_OPTION:=@AR_OUT_OPTION@ @@ -460,11 +459,6 @@ LD:=@FIXPATH@ @LD@ # Xcode SDK path SDKROOT:=@SDKROOT@ -# The linker on older SuSE distros (e.g. on SLES 10) complains with: -# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." -# if feeded with a version script which contains named tags. -USING_BROKEN_SUSE_LD:=@USING_BROKEN_SUSE_LD@ - # LDFLAGS used to link the jdk native libraries (C-code) LDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@ JDKLIB_LIBS:=@JDKLIB_LIBS@ diff --git a/make/autoconf/toolchain.m4 b/make/autoconf/toolchain.m4 index a95759f4768..91fabcd4f49 100644 --- a/make/autoconf/toolchain.m4 +++ b/make/autoconf/toolchain.m4 @@ -1022,24 +1022,6 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS], # This is later checked when setting flags. fi - # Check for broken SuSE 'ld' for which 'Only anonymous version tag is allowed - # in executable.' - USING_BROKEN_SUSE_LD=no - if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$TOOLCHAIN_TYPE" = xgcc; then - AC_MSG_CHECKING([for broken SuSE 'ld' which only understands anonymous version tags in executables]) - $ECHO "SUNWprivate_1.1 { local: *; };" > version-script.map - $ECHO "int main() { }" > main.c - if $CXX -Wl,-version-script=version-script.map main.c 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then - AC_MSG_RESULT(no) - USING_BROKEN_SUSE_LD=no - else - AC_MSG_RESULT(yes) - USING_BROKEN_SUSE_LD=yes - fi - $RM version-script.map main.c a.out - fi - AC_SUBST(USING_BROKEN_SUSE_LD) - # Setup hotspot lecagy names for toolchains HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE if test "x$TOOLCHAIN_TYPE" = xclang; then diff --git a/make/common/Modules.gmk b/make/common/Modules.gmk index ec4ec332542..d9e9352e118 100644 --- a/make/common/Modules.gmk +++ b/make/common/Modules.gmk @@ -394,12 +394,11 @@ ifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE)) endif LEGAL_SUBDIRS += share/legal -# Find all legal dirs for a particular module +# Find all legal src dirs for a particular module # $1 - Module to find legal dirs for -FindModuleLegalDirs = \ +FindModuleLegalSrcDirs = \ $(strip $(wildcard \ - $(addsuffix /$(strip $1), $(SUPPORT_OUTPUTDIR)/modules_legal \ - $(IMPORT_MODULES_LEGAL)) \ + $(addsuffix /$(strip $1), $(IMPORT_MODULES_LEGAL)) \ $(foreach sub, $(LEGAL_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS))) \ )) diff --git a/make/common/NativeCompilation.gmk b/make/common/NativeCompilation.gmk index 569ee1321b0..da4d24d1c4c 100644 --- a/make/common/NativeCompilation.gmk +++ b/make/common/NativeCompilation.gmk @@ -860,10 +860,48 @@ define SetupNativeCompilationBody endif endif - ifeq ($$($1_TYPE), LIBRARY) - # Generating a dynamic library. - $1_EXTRA_LDFLAGS += $$(call SET_SHARED_LIBRARY_NAME,$$($1_BASENAME)) + ifeq ($$($1_TYPE), STATIC_LIBRARY) + $1_VARDEPS := $$($1_AR) $$($1_ARFLAGS) $$($1_LIBS) \ + $$($1_EXTRA_LIBS) + $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \ + $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps) + + # Generating a static library, ie object file archive. + ifeq ($(STATIC_BUILD), true) + ifeq ($$($1_USE_MAPFILE_FOR_SYMBOLS), true) + STATIC_MAPFILE_DEP := $$($1_MAPFILE) + endif + endif + + $$($1_TARGET): $$($1_ALL_OBJS) $$($1_RES) $$($1_VARDEPS_FILE) $$(STATIC_MAPFILE_DEP) + $$(call LogInfo, Building static library $$($1_BASENAME)) + $$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \ + $$($1_AR) $$($1_ARFLAGS) $(AR_OUT_OPTION)$$($1_TARGET) $$($1_ALL_OBJS) \ + $$($1_RES)) + ifeq ($(STATIC_BUILD), true) + ifeq ($$($1_USE_MAPFILE_FOR_SYMBOLS), true) + $(CP) $$($1_MAPFILE) $$(@D)/$$(basename $$(@F)).symbols + else + $(GetSymbols) + endif + endif + else + # A shared dynamic library or an executable binary has been specified + ifeq ($$($1_TYPE), LIBRARY) + # Generating a dynamic library. + $1_EXTRA_LDFLAGS += $$(call SET_SHARED_LIBRARY_NAME,$$($1_BASENAME)) + + # Create loadmap on AIX. Helps in diagnosing some problems. + ifneq ($(COMPILER_BINDCMD_FILE_FLAG), ) + $1_EXTRA_LDFLAGS += $(COMPILER_BINDCMD_FILE_FLAG)$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).loadmap + endif + endif + ifeq ($(OPENJDK_TARGET_OS), windows) + ifeq ($$($1_EMBED_MANIFEST), true) + $1_EXTRA_LDFLAGS += -manifest:embed + endif + $1_IMPORT_LIBRARY := $$($1_OBJECT_DIR)/$$($1_NAME).lib $1_EXTRA_LDFLAGS += "-implib:$$($1_IMPORT_LIBRARY)" # To properly trigger downstream dependants of the import library, just as @@ -882,13 +920,9 @@ define SetupNativeCompilationBody $(TOUCH) $$@ endif - # Create loadmap on AIX. Helps in diagnosing some problems. - ifneq ($(COMPILER_BINDCMD_FILE_FLAG), ) - $1_EXTRA_LDFLAGS += $(COMPILER_BINDCMD_FILE_FLAG)$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).loadmap - endif - $1_VARDEPS := $$($1_LD) $$($1_SYSROOT_LDFLAGS) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) \ - $$(GLOBAL_LIBS) $$($1_LIBS) $$($1_EXTRA_LIBS) $$($1_CREATE_DEBUGINFO_CMDS) \ + $$(GLOBAL_LIBS) $$($1_LIBS) $$($1_EXTRA_LIBS) $$($1_MT) \ + $$($1_CODESIGN) $$($1_CREATE_DEBUGINFO_CMDS) $$($1_MANIFEST_VERSION) \ $$($1_STRIP_CMD) $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps) @@ -927,8 +961,8 @@ define SetupNativeCompilationBody endif endif - $$($1_TARGET): $$($1_ALL_OBJS) $$($1_RES) $$($1_REAL_MAPFILE) \ - $$($1_VARDEPS_FILE) + $$($1_TARGET): $$($1_ALL_OBJS) $$($1_RES) $$($1_MANIFEST) \ + $$($1_REAL_MAPFILE) $$($1_VARDEPS_FILE) ifneq ($$($1_OBJ_FILE_LIST), ) ifeq ($$($1_LINK_OBJS_RELATIVE), true) $$(eval $$(call ListPathsSafely, $1_ALL_OBJS_RELATIVE, $$($1_OBJ_FILE_LIST))) @@ -942,74 +976,21 @@ define SetupNativeCompilationBody ifeq ($(OPENJDK_TARGET_OS), windows) $$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \ $$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \ - $(LD_OUT_OPTION)$$@ $$($1_LD_OBJ_ARG) $$($1_RES) $$(GLOBAL_LIBS) \ - $$($1_LIBS) $$($1_EXTRA_LIBS)) \ + $(LD_OUT_OPTION)$$($1_TARGET) $$($1_LD_OBJ_ARG) $$($1_RES) $$(GLOBAL_LIBS) \ + $$($1_LIBS) $$($1_EXTRA_LIBS)) \ | $(GREP) -v "^ Creating library .*\.lib and object .*\.exp" || \ - test "$$$$?" = "1" ; \ + test "$$$$?" = "1" ; \ $$($1_CREATE_DEBUGINFO_CMDS) $$($1_STRIP_CMD) else $$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \ $$(if $$($1_LINK_OBJS_RELATIVE), $$(CD) $$(OUTPUTDIR) ; ) \ $$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \ - $(LD_OUT_OPTION)$$@ $$($1_LD_OBJ_ARG) $$($1_RES) $$(GLOBAL_LIBS) \ - $$($1_LIBS) $$($1_EXTRA_LIBS)) ; \ + $(LD_OUT_OPTION)$$($1_TARGET) $$($1_LD_OBJ_ARG) $$($1_RES) $$(GLOBAL_LIBS) \ + $$($1_LIBS) $$($1_EXTRA_LIBS)) ; \ $$($1_CREATE_DEBUGINFO_CMDS) $$($1_STRIP_CMD) endif - - endif - - ifeq ($$($1_TYPE), STATIC_LIBRARY) - $1_VARDEPS := $$($1_AR) $$($1_ARFLAGS) $$($1_LIBS) \ - $$($1_EXTRA_LIBS) - $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \ - $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps) - - # Generating a static library, ie object file archive. - ifeq ($(STATIC_BUILD), true) - ifeq ($$($1_USE_MAPFILE_FOR_SYMBOLS), true) - STATIC_MAPFILE_DEP := $$($1_MAPFILE) - endif - endif - - $$($1_TARGET): $$($1_ALL_OBJS) $$($1_RES) $$($1_VARDEPS_FILE) $$(STATIC_MAPFILE_DEP) - $$(call LogInfo, Building static library $$($1_BASENAME)) - $$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \ - $$($1_AR) $$($1_ARFLAGS) $(AR_OUT_OPTION)$$($1_TARGET) $$($1_ALL_OBJS) \ - $$($1_RES)) - ifeq ($(STATIC_BUILD), true) - ifeq ($$($1_USE_MAPFILE_FOR_SYMBOLS), true) - $(CP) $$($1_MAPFILE) $$(@D)/$$(basename $$(@F)).symbols - else - $(GetSymbols) - endif - endif - endif - - ifeq ($$($1_TYPE), EXECUTABLE) - # A executable binary has been specified, setup the target for it. - $1_VARDEPS := $$($1_LD) $$($1_SYSROOT_LDFLAGS) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) \ - $$(GLOBAL_LIBS) $$($1_LIBS) $$($1_EXTRA_LIBS) $$($1_MT) \ - $$($1_CODESIGN) $$($1_CREATE_DEBUGINFO_CMDS) $$($1_MANIFEST_VERSION) \ - $$($1_STRIP_CMD) - $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \ - $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps) - - ifeq ($(OPENJDK_TARGET_OS), windows) - ifeq ($$($1_EMBED_MANIFEST), true) - $1_EXTRA_LDFLAGS += -manifest:embed - endif - endif - - $$($1_TARGET): $$($1_ALL_OBJS) $$($1_RES) $$($1_MANIFEST) \ - $$($1_VARDEPS_FILE) - $$(call LogInfo, Linking executable $$($1_BASENAME)) - $$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \ - $$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \ - $(EXE_OUT_OPTION)$$($1_TARGET) \ - $$($1_ALL_OBJS) $$($1_RES) \ - $$(GLOBAL_LIBS) $$($1_LIBS) $$($1_EXTRA_LIBS)) ifeq ($(OPENJDK_TARGET_OS), windows) ifneq ($$($1_MANIFEST), ) $$($1_MT) -nologo -manifest $$($1_MANIFEST) -identity:"$$($1_NAME).exe, version=$$($1_MANIFEST_VERSION)" -outputresource:$$@;#1 @@ -1022,9 +1003,6 @@ define SetupNativeCompilationBody $(CODESIGN) -s openjdk_codesign $$@ endif endif - $$($1_CREATE_DEBUGINFO_CMDS) - $$($1_STRIP_CMD) - endif endef diff --git a/make/conf/jib-profiles.js b/make/conf/jib-profiles.js index 6a7b51df644..d8167268d2a 100644 --- a/make/conf/jib-profiles.js +++ b/make/conf/jib-profiles.js @@ -432,7 +432,7 @@ var getJibProfilesProfiles = function (input, common, data) { target_cpu: "x64", dependencies: ["devkit", "autoconf"], configure_args: concat(common.configure_args_64bit, "--with-zlib=system", - "--with-macosx-version-max=10.7.0"), + "--with-macosx-version-max=10.9.0"), }, "solaris-x64": { @@ -472,7 +472,7 @@ var getJibProfilesProfiles = function (input, common, data) { build_cpu: "x64", dependencies: ["devkit", "autoconf", "build_devkit", "cups"], configure_args: [ - "--openjdk-target=aarch64-linux-gnu" + "--openjdk-target=aarch64-linux-gnu", "--with-freetype=bundled", ], }, diff --git a/make/copy/Copy-java.base.gmk b/make/copy/Copy-java.base.gmk index 096f6c0e903..6d94bfc16d2 100644 --- a/make/copy/Copy-java.base.gmk +++ b/make/copy/Copy-java.base.gmk @@ -24,6 +24,7 @@ # include CopyCommon.gmk +include Modules.gmk include TextFileProcessing.gmk $(eval $(call IncludeCustomExtension, copy/Copy-java.base.gmk)) @@ -224,12 +225,27 @@ JDK_ADDITIONAL_LICENSE_INFO ?= $(wildcard $(TOPDIR)/ADDITIONAL_LICENSE_INFO) $(eval $(call SetupCopyFiles, COPY_JDK_NOTICES, \ FILES := $(JDK_LICENSE) $(JDK_NOTICE) $(JDK_ADDITIONAL_LICENSE_INFO), \ - DEST := $(LEGAL_DST_DIR), \ + DEST := $(COMMON_LEGAL_DST_DIR), \ FLATTEN := true, \ )) TARGETS += $(COPY_JDK_NOTICES) +################################################################################ +# +# Copy and filter the legal files depending on what 3rd party components are +# bundled or linked from the OS. +# +ifeq ($(USE_EXTERNAL_LIBZ), true) + LEGAL_EXCLUDES += zlib.md +endif + +$(eval $(call SetupCopyLegalFiles, COPY_LEGAL, \ + EXCLUDES := $(LEGAL_EXCLUDES), \ +)) + +TARGETS += $(COPY_LEGAL) + ################################################################################ # Optionally copy libffi.so.? into the the image diff --git a/make/copy/Copy-java.desktop.gmk b/make/copy/Copy-java.desktop.gmk index b4f28a96a26..a5e1f98302d 100644 --- a/make/copy/Copy-java.desktop.gmk +++ b/make/copy/Copy-java.desktop.gmk @@ -24,6 +24,7 @@ # include CopyCommon.gmk +include Modules.gmk $(eval $(call IncludeCustomExtension, copy/Copy-java.desktop.gmk)) @@ -48,3 +49,34 @@ $(LIB_DST_DIR)/%: $(PSFONTPROPFILE_SRC_DIR)/% TARGETS += $(PSFONTPROPFILE_TARGET_FILES) ################################################################################ +# +# Copy and filter the legal files depending on what 3rd party components are +# bundled or linked from the OS. +# +ifeq ($(USE_EXTERNAL_LIBJPEG), true) + LEGAL_EXCLUDES += jpeg.md +endif + +ifeq ($(USE_EXTERNAL_LIBGIF), true) + LEGAL_EXCLUDES += giflib.md +endif + +ifeq ($(USE_EXTERNAL_LIBPNG), true) + LEGAL_EXCLUDES += libpng.md +endif + +ifeq ($(USE_EXTERNAL_LCMS), true) + LEGAL_EXCLUDES += lcms.md +endif + +ifeq ($(FREETYPE_TO_USE), system) + LEGAL_EXCLUDES += freetype.md +endif + +$(eval $(call SetupCopyLegalFiles, COPY_LEGAL, \ + EXCLUDES := $(LEGAL_EXCLUDES), \ +)) + +TARGETS += $(COPY_LEGAL) + +################################################################################ diff --git a/make/copy/CopyCommon.gmk b/make/copy/CopyCommon.gmk index 6d4cdbaf747..6450cb169f3 100644 --- a/make/copy/CopyCommon.gmk +++ b/make/copy/CopyCommon.gmk @@ -26,6 +26,7 @@ LIB_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE) CONF_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_conf/$(MODULE) LEGAL_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_legal/$(MODULE) +COMMON_LEGAL_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_legal/common ################################################################################ # @@ -60,3 +61,24 @@ ifneq ($(wildcard $(INCLUDE_SOURCE_OS_DIR)/*), ) TARGETS += $(COPY_EXPORTED_INCLUDE_OS) endif + +################################################################################ +# Setup make rules for copying legal files. This is only needed if the files +# need to be filtered due to optional components being enabled/disabled. +# Otherwise CreateJmods.gmk will find the legal files in the original src dirs. +# +# Parameter 1 is the name of the rule. +# +# Remaining parameters are named arguments. These include: +# EXCLUDES : List of filenames to exclude from copy +SetupCopyLegalFiles = $(NamedParamsMacroTemplate) +define SetupCopyLegalFilesBody + $$(foreach f, $$(filter-out $$(addprefix %/, $$($1_EXCLUDES)), \ + $$(wildcard $$(addsuffix /*, $$(call FindModuleLegalSrcDirs, $$(MODULE))))), \ + $$(eval $$(call SetupCopyFiles, $1_$$(notdir $$f), \ + DEST := $$(LEGAL_DST_DIR), \ + FILES := $$f, \ + )) \ + $$(eval $1 += $$($1_$$(notdir $$f))) \ + ) +endef diff --git a/make/data/tzdata/VERSION b/make/data/tzdata/VERSION index 561bd27bce5..f72d1acab47 100644 --- a/make/data/tzdata/VERSION +++ b/make/data/tzdata/VERSION @@ -21,4 +21,4 @@ # or visit www.oracle.com if you need additional information or have any # questions. # -tzdata2018c +tzdata2018d diff --git a/make/data/tzdata/africa b/make/data/tzdata/africa index 92c0b43ecf0..1e96df349d0 100644 --- a/make/data/tzdata/africa +++ b/make/data/tzdata/africa @@ -138,13 +138,13 @@ Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01 # Cape Verde / Cabo Verde # +# From Paul Eggert (2018-02-16): # Shanks gives 1907 for the transition to +02. -# Perhaps the 1911-05-26 Portuguese decree -# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf -# merely made it official? +# For now, ignore that and follow the 1911-05-26 Portuguese decree +# (see Europe/Lisbon). # # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Atlantic/Cape_Verde -1:34:04 - LMT 1907 # Praia +Zone Atlantic/Cape_Verde -1:34:04 - LMT 1912 Jan 01 2:00u # Praia -2:00 - -02 1942 Sep -2:00 1:00 -01 1945 Oct 15 -2:00 - -02 1975 Nov 25 2:00 @@ -393,15 +393,34 @@ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct # See Africa/Abidjan. # Ghana -# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S + +# From Paul Eggert (2018-01-30): # Whitman says DST was observed from 1931 to "the present"; -# Shanks & Pottenger say 1936 to 1942; -# and September 1 to January 1 is given by: -# Scott Keltie J, Epstein M (eds), The Statesman's Year-Book, -# 57th ed. Macmillan, London (1920), OCLC 609408015, pp xxviii. -# For lack of better info, assume DST was observed from 1920 to 1942. -Rule Ghana 1920 1942 - Sep 1 0:00 0:20 GHST -Rule Ghana 1920 1942 - Dec 31 0:00 0 GMT +# Shanks & Pottenger say 1936 to 1942 with 20 minutes of DST, +# with transitions on 09-01 and 12-31 at 00:00. +# Page 33 of Parish GCB, Colonial Reports - Annual. No. 1066. Gold +# Coast. Report for 1919. (March 1921), OCLC 784024077 +# http://libsysdigi.library.illinois.edu/ilharvest/africana/books2011-05/5530214/5530214_1919/5530214_1919_opt.pdf +# lists the Determination of the Time Ordinance, 1919, No. 18, +# "to advance the time observed locally by the space of twenty minutes +# during the last four months of each year; the object in view being +# to extend during those months the period of daylight-time available +# for evening recreation after office hours." +# Vanessa Ogle, The Global Transformation of Time, 1870-1950 (2015), p 33, +# writes "In 1919, the Gold Coast (Ghana as of 1957) made Greenwich +# time its legal time and simultaneously legalized a summer time of +# UTC - 00:20 minutes from March to October."; a footnote lists +# the ordinance as being dated 1919-11-24. +# The Crown Colonist, Volume 12 (1942), p 176, says "the Government +# intend advancing Gold Coast time half an hour ahead of G.M.T. +# The actual date of the alteration has not yet been announced." +# These sources are incomplete and contradictory. Possibly what is +# now Ghana observed different DST regimes in different years. For +# lack of better info, use Shanks except treat the minus sign as a +# typo, and assume DST started in 1920 not 1936. +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Ghana 1920 1942 - Sep 1 0:00 0:20 - +Rule Ghana 1920 1942 - Dec 31 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Accra -0:00:52 - LMT 1918 0:00 Ghana GMT/+0020 @@ -411,13 +430,13 @@ Zone Africa/Accra -0:00:52 - LMT 1918 # Guinea-Bissau # +# From Paul Eggert (2018-02-16): # Shanks gives 1911-05-26 for the transition to WAT, # evidently confusing the date of the Portuguese decree -# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf -# with the date that it took effect, namely 1912-01-01. +# (see Europe/Lisbon) with the date that it took effect. # # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 +Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 1:00u -1:00 - -01 1975 0:00 - GMT @@ -613,9 +632,9 @@ Zone Africa/Tripoli 0:52:44 - LMT 1920 # at 2am (or 02:00) local time..." # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Mauritius 1982 only - Oct 10 0:00 1:00 S +Rule Mauritius 1982 only - Oct 10 0:00 1:00 - Rule Mauritius 1983 only - Mar 21 0:00 0 - -Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 S +Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 - Rule Mauritius 2009 only - Mar lastSun 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis @@ -1060,6 +1079,8 @@ Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis # São Tomé and Príncipe +# See Europe/Lisbon for info about the 1912 transition. + # From Steffen Thorsen (2018-01-08): # Multiple sources tell that São Tomé changed from UTC to UTC+1 as # they entered the year 2018. @@ -1068,7 +1089,7 @@ Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis # http://www.mnec.gov.st/index.php/publicacoes/documentos/file/90-decreto-lei-n-25-2017 Zone Africa/Sao_Tome 0:26:56 - LMT 1884 - -0:36:45 - LMT 1912 # Lisbon Mean Time + -0:36:45 - LMT 1912 Jan 1 00:00u # Lisbon MT 0:00 - GMT 2018 Jan 1 01:00 1:00 - WAT diff --git a/make/data/tzdata/antarctica b/make/data/tzdata/antarctica index c78ef7ed503..74ce2dcef51 100644 --- a/make/data/tzdata/antarctica +++ b/make/data/tzdata/antarctica @@ -98,7 +98,8 @@ Zone Antarctica/Casey 0 - -00 1969 8:00 - +08 2011 Oct 28 2:00 11:00 - +11 2012 Feb 21 17:00u 8:00 - +08 2016 Oct 22 - 11:00 - +11 + 11:00 - +11 2018 Mar 11 4:00 + 8:00 - +08 Zone Antarctica/Davis 0 - -00 1957 Jan 13 7:00 - +07 1964 Nov 0 - -00 1969 Feb diff --git a/make/data/tzdata/asia b/make/data/tzdata/asia index c281ece84de..d03b8ef0b49 100644 --- a/make/data/tzdata/asia +++ b/make/data/tzdata/asia @@ -92,13 +92,13 @@ Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 - Rule EUAsia 1996 max - Oct lastSun 1:00u 0 - -Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S +Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 - Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 - Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 - -Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 S +Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 - Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 - Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 - -Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 S +Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 - Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 - # Afghanistan @@ -133,7 +133,7 @@ Zone Asia/Kabul 4:36:48 - LMT 1890 # (brief) # http://www.worldtimezone.com/dst_news/dst_news_armenia03.html # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 S +Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 - Rule Armenia 2011 only - Oct lastSun 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2 @@ -159,7 +159,7 @@ Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2 # http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 S +Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 - Rule Azer 1997 2015 - Oct lastSun 5:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Baku 3:19:24 - LMT 1924 May 2 @@ -246,7 +246,7 @@ Zone Asia/Baku 3:19:24 - LMT 1924 May 2 # http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Dhaka 2009 only - Jun 19 23:00 1:00 S +Rule Dhaka 2009 only - Jun 19 23:00 1:00 - Rule Dhaka 2009 only - Dec 31 24:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -787,8 +787,9 @@ Rule Macau 1974 1977 - Oct Sun>=15 3:30 0 S Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 D Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 D Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 S +# See Europe/Lisbon for info about the 1912 transition. # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Asia/Macau 7:34:20 - LMT 1912 Jan 1 +Zone Asia/Macau 7:34:20 - LMT 1911 Dec 31 16:00u 8:00 Macau C%sT @@ -1129,61 +1130,61 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov # thirtieth day of Shahrivar. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Iran 1978 1980 - Mar 21 0:00 1:00 D -Rule Iran 1978 only - Oct 21 0:00 0 S -Rule Iran 1979 only - Sep 19 0:00 0 S -Rule Iran 1980 only - Sep 23 0:00 0 S -Rule Iran 1991 only - May 3 0:00 1:00 D -Rule Iran 1992 1995 - Mar 22 0:00 1:00 D -Rule Iran 1991 1995 - Sep 22 0:00 0 S -Rule Iran 1996 only - Mar 21 0:00 1:00 D -Rule Iran 1996 only - Sep 21 0:00 0 S -Rule Iran 1997 1999 - Mar 22 0:00 1:00 D -Rule Iran 1997 1999 - Sep 22 0:00 0 S -Rule Iran 2000 only - Mar 21 0:00 1:00 D -Rule Iran 2000 only - Sep 21 0:00 0 S -Rule Iran 2001 2003 - Mar 22 0:00 1:00 D -Rule Iran 2001 2003 - Sep 22 0:00 0 S -Rule Iran 2004 only - Mar 21 0:00 1:00 D -Rule Iran 2004 only - Sep 21 0:00 0 S -Rule Iran 2005 only - Mar 22 0:00 1:00 D -Rule Iran 2005 only - Sep 22 0:00 0 S -Rule Iran 2008 only - Mar 21 0:00 1:00 D -Rule Iran 2008 only - Sep 21 0:00 0 S -Rule Iran 2009 2011 - Mar 22 0:00 1:00 D -Rule Iran 2009 2011 - Sep 22 0:00 0 S -Rule Iran 2012 only - Mar 21 0:00 1:00 D -Rule Iran 2012 only - Sep 21 0:00 0 S -Rule Iran 2013 2015 - Mar 22 0:00 1:00 D -Rule Iran 2013 2015 - Sep 22 0:00 0 S -Rule Iran 2016 only - Mar 21 0:00 1:00 D -Rule Iran 2016 only - Sep 21 0:00 0 S -Rule Iran 2017 2019 - Mar 22 0:00 1:00 D -Rule Iran 2017 2019 - Sep 22 0:00 0 S -Rule Iran 2020 only - Mar 21 0:00 1:00 D -Rule Iran 2020 only - Sep 21 0:00 0 S -Rule Iran 2021 2023 - Mar 22 0:00 1:00 D -Rule Iran 2021 2023 - Sep 22 0:00 0 S -Rule Iran 2024 only - Mar 21 0:00 1:00 D -Rule Iran 2024 only - Sep 21 0:00 0 S -Rule Iran 2025 2027 - Mar 22 0:00 1:00 D -Rule Iran 2025 2027 - Sep 22 0:00 0 S -Rule Iran 2028 2029 - Mar 21 0:00 1:00 D -Rule Iran 2028 2029 - Sep 21 0:00 0 S -Rule Iran 2030 2031 - Mar 22 0:00 1:00 D -Rule Iran 2030 2031 - Sep 22 0:00 0 S -Rule Iran 2032 2033 - Mar 21 0:00 1:00 D -Rule Iran 2032 2033 - Sep 21 0:00 0 S -Rule Iran 2034 2035 - Mar 22 0:00 1:00 D -Rule Iran 2034 2035 - Sep 22 0:00 0 S +Rule Iran 1978 1980 - Mar 21 0:00 1:00 - +Rule Iran 1978 only - Oct 21 0:00 0 - +Rule Iran 1979 only - Sep 19 0:00 0 - +Rule Iran 1980 only - Sep 23 0:00 0 - +Rule Iran 1991 only - May 3 0:00 1:00 - +Rule Iran 1992 1995 - Mar 22 0:00 1:00 - +Rule Iran 1991 1995 - Sep 22 0:00 0 - +Rule Iran 1996 only - Mar 21 0:00 1:00 - +Rule Iran 1996 only - Sep 21 0:00 0 - +Rule Iran 1997 1999 - Mar 22 0:00 1:00 - +Rule Iran 1997 1999 - Sep 22 0:00 0 - +Rule Iran 2000 only - Mar 21 0:00 1:00 - +Rule Iran 2000 only - Sep 21 0:00 0 - +Rule Iran 2001 2003 - Mar 22 0:00 1:00 - +Rule Iran 2001 2003 - Sep 22 0:00 0 - +Rule Iran 2004 only - Mar 21 0:00 1:00 - +Rule Iran 2004 only - Sep 21 0:00 0 - +Rule Iran 2005 only - Mar 22 0:00 1:00 - +Rule Iran 2005 only - Sep 22 0:00 0 - +Rule Iran 2008 only - Mar 21 0:00 1:00 - +Rule Iran 2008 only - Sep 21 0:00 0 - +Rule Iran 2009 2011 - Mar 22 0:00 1:00 - +Rule Iran 2009 2011 - Sep 22 0:00 0 - +Rule Iran 2012 only - Mar 21 0:00 1:00 - +Rule Iran 2012 only - Sep 21 0:00 0 - +Rule Iran 2013 2015 - Mar 22 0:00 1:00 - +Rule Iran 2013 2015 - Sep 22 0:00 0 - +Rule Iran 2016 only - Mar 21 0:00 1:00 - +Rule Iran 2016 only - Sep 21 0:00 0 - +Rule Iran 2017 2019 - Mar 22 0:00 1:00 - +Rule Iran 2017 2019 - Sep 22 0:00 0 - +Rule Iran 2020 only - Mar 21 0:00 1:00 - +Rule Iran 2020 only - Sep 21 0:00 0 - +Rule Iran 2021 2023 - Mar 22 0:00 1:00 - +Rule Iran 2021 2023 - Sep 22 0:00 0 - +Rule Iran 2024 only - Mar 21 0:00 1:00 - +Rule Iran 2024 only - Sep 21 0:00 0 - +Rule Iran 2025 2027 - Mar 22 0:00 1:00 - +Rule Iran 2025 2027 - Sep 22 0:00 0 - +Rule Iran 2028 2029 - Mar 21 0:00 1:00 - +Rule Iran 2028 2029 - Sep 21 0:00 0 - +Rule Iran 2030 2031 - Mar 22 0:00 1:00 - +Rule Iran 2030 2031 - Sep 22 0:00 0 - +Rule Iran 2032 2033 - Mar 21 0:00 1:00 - +Rule Iran 2032 2033 - Sep 21 0:00 0 - +Rule Iran 2034 2035 - Mar 22 0:00 1:00 - +Rule Iran 2034 2035 - Sep 22 0:00 0 - # # The following rules are approximations starting in the year 2038. # These are the best post-2037 approximations available, given the # restrictions of a single rule using a Gregorian-based data format. # At some point this table will need to be extended, though quite # possibly Iran will change the rules first. -Rule Iran 2036 max - Mar 21 0:00 1:00 D -Rule Iran 2036 max - Sep 21 0:00 0 S +Rule Iran 2036 max - Mar 21 0:00 1:00 - +Rule Iran 2036 max - Sep 21 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Tehran 3:25:44 - LMT 1916 @@ -1219,17 +1220,17 @@ Zone Asia/Tehran 3:25:44 - LMT 1916 # https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Iraq 1982 only - May 1 0:00 1:00 D -Rule Iraq 1982 1984 - Oct 1 0:00 0 S -Rule Iraq 1983 only - Mar 31 0:00 1:00 D -Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D -Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 S -Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 D +Rule Iraq 1982 only - May 1 0:00 1:00 - +Rule Iraq 1982 1984 - Oct 1 0:00 0 - +Rule Iraq 1983 only - Mar 31 0:00 1:00 - +Rule Iraq 1984 1985 - Apr 1 0:00 1:00 - +Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 - +Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 - # IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the ':01' is a typo. # Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this. # -Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 D -Rule Iraq 1991 2007 - Oct 1 3:00s 0 S +Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 - +Rule Iraq 1991 2007 - Oct 1 3:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Baghdad 2:57:40 - LMT 1890 2:57:36 - BMT 1918 # Baghdad Mean Time? @@ -1501,8 +1502,7 @@ Rule Japan 1950 1951 - May Sat>=1 24:00 1:00 D # From Hideyuki Suzuki (1998-11-09): # 'Tokyo' usually stands for the former location of Tokyo Astronomical -# Observatory: 139 degrees 44' 40.90" E (9h 18m 58.727s), -# 35 degrees 39' 16.0" N. +# Observatory: 139° 44' 40.90" E (9h 18m 58.727s), 35° 39' 16.0" N. # This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996' # edited by National Astronomical Observatory of Japan.... # JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST). @@ -1510,10 +1510,10 @@ Rule Japan 1950 1951 - May Sat>=1 24:00 1:00 D # From Hideyuki Suzuki (1998-11-16): # The ordinance No. 51 (1886) established "standard time" in Japan, -# which stands for the time on 135 degrees E. +# which stands for the time on 135° E. # In the ordinance No. 167 (1895), "standard time" was renamed to "central # standard time". And the same ordinance also established "western standard -# time", which stands for the time on 120 degrees E.... But "western standard +# time", which stands for the time on 120° E.... But "western standard # time" was abolished in the ordinance No. 529 (1937). In the ordinance No. # 167, there is no mention regarding for what place western standard time is # standard.... @@ -1926,9 +1926,9 @@ Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk # From 2005-08-12 our GMT-offset is +6, w/o any daylight saving. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 S +Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 - Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 - -Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 S +Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 - Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 @@ -2060,7 +2060,7 @@ Zone Asia/Beirut 2:22:00 - LMT 1880 # Malaysia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 TS # one-Third Summer +Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 - Rule NBorneo 1935 1941 - Dec 14 0:00 0 - # # peninsular Malaysia @@ -2205,7 +2205,7 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé # http://zasag.mn/news/view/8969 # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Mongol 1983 1984 - Apr 1 0:00 1:00 S +Rule Mongol 1983 1984 - Apr 1 0:00 1:00 - Rule Mongol 1983 only - Oct 1 0:00 0 - # Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00, # but McDow says the 2001 switches occurred at 02:00. Also, IATA SSIM @@ -2222,13 +2222,13 @@ Rule Mongol 1983 only - Oct 1 0:00 0 - # Mongolian Government meeting has concluded today to cancel daylight # saving time adoption in Mongolia. Source: http://zasag.mn/news/view/16192 -Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 S +Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 - Rule Mongol 1984 1998 - Sep lastSun 0:00 0 - # IATA SSIM (1999-09) says Mongolia no longer observes DST. -Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S +Rule Mongol 2001 only - Apr lastSat 2:00 1:00 - Rule Mongol 2001 2006 - Sep lastSat 2:00 0 - -Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S -Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 S +Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 - +Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 - Rule Mongol 2015 2016 - Sep lastSat 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -2662,9 +2662,6 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # [Google translation]: "The Council also decided to start daylight # saving in Palestine as of one o'clock on Saturday morning, # 2016-03-26, to provide the clock 60 minutes ahead." -# -# From Paul Eggert (2016-03-12): -# Predict spring transitions on March's last Saturday at 01:00 from now on. # From Sharef Mustafa (2016-10-19): # [T]he Palestinian cabinet decision (Mar 8th 2016) published on @@ -2681,6 +2678,16 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # https://www.timeanddate.com/time/change/gaza-strip/gaza # https://www.timeanddate.com/time/change/west-bank/hebron +# From Sharef Mustafa (2018-03-16): +# Palestine summer time will start on Mar 24th 2018 by advancing the +# clock by 60 minutes as per Palestinian cabinet decision published on +# the offical website, though the decree did not specify the exact +# time of the time shift. +# http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817 +# +# From Paul Eggert (2018-03-16): +# For 2016 on, predict spring transitions on March's fourth Saturday at 01:00. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule EgyptAsia 1957 only - May 10 0:00 1:00 S Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 - @@ -2710,7 +2717,7 @@ Rule Palestine 2012 only - Sep 21 1:00 0 - Rule Palestine 2013 only - Sep Fri>=21 0:00 0 - Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 - Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S -Rule Palestine 2016 max - Mar lastSat 1:00 1:00 S +Rule Palestine 2016 max - Mar Sat>=22 1:00 1:00 S Rule Palestine 2016 max - Oct lastSat 1:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -2760,11 +2767,11 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct # http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Phil 1936 only - Nov 1 0:00 1:00 S +Rule Phil 1936 only - Nov 1 0:00 1:00 - Rule Phil 1937 only - Feb 1 0:00 0 - -Rule Phil 1954 only - Apr 12 0:00 1:00 S +Rule Phil 1954 only - Apr 12 0:00 1:00 - Rule Phil 1954 only - Jul 1 0:00 0 - -Rule Phil 1978 only - Mar 22 0:00 1:00 S +Rule Phil 1978 only - Mar 22 0:00 1:00 - Rule Phil 1978 only - Sep 21 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31 @@ -3120,9 +3127,9 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # and is the basis for the information below. # # The 1906 transition was effective July 1 and standardized Indochina to -# Phù Liễn Observatory, legally 104 deg. 17'17" east of Paris. +# Phù Liễn Observatory, legally 104° 17' 17" east of Paris. # It's unclear whether this meant legal Paris Mean Time (00:09:21) or -# the Paris Meridian (2 deg. 20'14.03" E); the former yields 07:06:30.1333... +# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333... # and the latter 07:06:29.333... so either way it rounds to 07:06:30, # which is used below even though the modern-day Phù Liễn Observatory # is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT. diff --git a/make/data/tzdata/australasia b/make/data/tzdata/australasia index f97957d3b0a..d12619907fb 100644 --- a/make/data/tzdata/australasia +++ b/make/data/tzdata/australasia @@ -219,20 +219,20 @@ Zone Australia/Broken_Hill 9:25:48 - LMT 1895 Feb # Lord Howe Island # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule LH 1981 1984 - Oct lastSun 2:00 1:00 D -Rule LH 1982 1985 - Mar Sun>=1 2:00 0 S -Rule LH 1985 only - Oct lastSun 2:00 0:30 D -Rule LH 1986 1989 - Mar Sun>=15 2:00 0 S -Rule LH 1986 only - Oct 19 2:00 0:30 D -Rule LH 1987 1999 - Oct lastSun 2:00 0:30 D -Rule LH 1990 1995 - Mar Sun>=1 2:00 0 S -Rule LH 1996 2005 - Mar lastSun 2:00 0 S -Rule LH 2000 only - Aug lastSun 2:00 0:30 D -Rule LH 2001 2007 - Oct lastSun 2:00 0:30 D -Rule LH 2006 only - Apr Sun>=1 2:00 0 S -Rule LH 2007 only - Mar lastSun 2:00 0 S -Rule LH 2008 max - Apr Sun>=1 2:00 0 S -Rule LH 2008 max - Oct Sun>=1 2:00 0:30 D +Rule LH 1981 1984 - Oct lastSun 2:00 1:00 - +Rule LH 1982 1985 - Mar Sun>=1 2:00 0 - +Rule LH 1985 only - Oct lastSun 2:00 0:30 - +Rule LH 1986 1989 - Mar Sun>=15 2:00 0 - +Rule LH 1986 only - Oct 19 2:00 0:30 - +Rule LH 1987 1999 - Oct lastSun 2:00 0:30 - +Rule LH 1990 1995 - Mar Sun>=1 2:00 0 - +Rule LH 1996 2005 - Mar lastSun 2:00 0 - +Rule LH 2000 only - Aug lastSun 2:00 0:30 - +Rule LH 2001 2007 - Oct lastSun 2:00 0:30 - +Rule LH 2006 only - Apr Sun>=1 2:00 0 - +Rule LH 2007 only - Mar lastSun 2:00 0 - +Rule LH 2008 max - Apr Sun>=1 2:00 0 - +Rule LH 2008 max - Oct Sun>=1 2:00 0:30 - Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb 10:00 - AEST 1981 Mar 10:30 LH +1030/+1130 1985 Jul @@ -390,15 +390,15 @@ Zone Indian/Cocos 6:27:40 - LMT 1900 # practice than guessing no DST. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S +Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 - Rule Fiji 1999 2000 - Feb lastSun 3:00 0 - -Rule Fiji 2009 only - Nov 29 2:00 1:00 S +Rule Fiji 2009 only - Nov 29 2:00 1:00 - Rule Fiji 2010 only - Mar lastSun 3:00 0 - -Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 S +Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 - Rule Fiji 2011 only - Mar Sun>=1 3:00 0 - Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 - Rule Fiji 2014 only - Jan Sun>=18 2:00 0 - -Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 S +Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 - Rule Fiji 2015 max - Jan Sun>=14 3:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva @@ -429,11 +429,11 @@ Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki 12:00 - +12 Zone Pacific/Enderbury -11:24:20 - LMT 1901 -12:00 - -12 1979 Oct - -11:00 - -11 1995 + -11:00 - -11 1994 Dec 31 13:00 - +13 Zone Pacific/Kiritimati -10:29:20 - LMT 1901 -10:40 - -1040 1979 Oct - -10:00 - -10 1995 + -10:00 - -10 1994 Dec 31 14:00 - +14 # N Mariana Is @@ -470,9 +470,9 @@ Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe # New Caledonia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 S +Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 - Rule NC 1978 1979 - Feb 27 0:00 0 - -Rule NC 1996 only - Dec 1 2:00s 1:00 S +Rule NC 1996 only - Dec 1 2:00s 1:00 - # Shanks & Pottenger say the following was at 2:00; go with IATA. Rule NC 1997 only - Mar 2 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -492,27 +492,28 @@ Rule NZ 1929 1933 - Mar Sun>=15 2:00 0 M Rule NZ 1934 1940 - Apr lastSun 2:00 0 M Rule NZ 1934 1940 - Sep lastSun 2:00 0:30 S Rule NZ 1946 only - Jan 1 0:00 0 S -# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no -# convenient single notation for the date and time of this transition -# so we must duplicate the Rule lines. +# Since 1957 Chatham has been 45 minutes ahead of NZ, but until 2018a +# there was no documented single notation for the date and time of this +# transition. Duplicate the Rule lines for now, to give the 2018a change +# time to percolate out. Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D -Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 D +Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 - Rule NZ 1975 only - Feb lastSun 2:00s 0 S -Rule Chatham 1975 only - Feb lastSun 2:45s 0 S +Rule Chatham 1975 only - Feb lastSun 2:45s 0 - Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D -Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 D +Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 - Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S -Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 S +Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 - Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D -Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 D +Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 - Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D -Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 D +Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 - Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S -Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 S +Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 - Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D -Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 D +Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 - Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S -Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 S +Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2 11:30 NZ NZ%sT 1946 Jan 1 @@ -536,9 +537,9 @@ Link Pacific/Auckland Antarctica/McMurdo # Cook Is # From Shanks & Pottenger: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Cook 1978 only - Nov 12 0:00 0:30 HS +Rule Cook 1978 only - Nov 12 0:00 0:30 - Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 - -Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 HS +Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua -10:30 - -1030 1978 Nov 12 @@ -679,11 +680,11 @@ Link Pacific/Pago_Pago Pacific/Midway # in US minor outlying islands # Assume the pattern instituted in 2012 will continue indefinitely. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule WS 2010 only - Sep lastSun 0:00 1 D -Rule WS 2011 only - Apr Sat>=1 4:00 0 S -Rule WS 2011 only - Sep lastSat 3:00 1 D -Rule WS 2012 max - Apr Sun>=1 4:00 0 S -Rule WS 2012 max - Sep lastSun 3:00 1 D +Rule WS 2010 only - Sep lastSun 0:00 1 - +Rule WS 2011 only - Apr Sat>=1 4:00 0 - +Rule WS 2011 only - Sep lastSat 3:00 1 - +Rule WS 2012 max - Apr Sun>=1 4:00 0 - +Rule WS 2012 max - Sep lastSun 3:00 1 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Apia 12:33:04 - LMT 1892 Jul 5 -11:26:56 - LMT 1911 @@ -723,11 +724,11 @@ Zone Pacific/Fakaofo -11:24:56 - LMT 1901 # Tonga # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Tonga 1999 only - Oct 7 2:00s 1:00 S +Rule Tonga 1999 only - Oct 7 2:00s 1:00 - Rule Tonga 2000 only - Mar 19 2:00s 0 - -Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 S +Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 - Rule Tonga 2001 2002 - Jan lastSun 2:00 0 - -Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 S +Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 - Rule Tonga 2017 only - Jan Sun>=15 3:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Tongatapu 12:19:20 - LMT 1901 @@ -804,12 +805,12 @@ Zone Pacific/Wake 11:06:28 - LMT 1901 # Vanuatu # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Vanuatu 1983 only - Sep 25 0:00 1:00 S +Rule Vanuatu 1983 only - Sep 25 0:00 1:00 - Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 - -Rule Vanuatu 1984 only - Oct 23 0:00 1:00 S -Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 S +Rule Vanuatu 1984 only - Oct 23 0:00 1:00 - +Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 - Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 - -Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 S +Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila 11:00 Vanuatu +11/+12 @@ -1108,6 +1109,13 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # South Australian time even though it's located in Western Australia. # Queensland + +# From Paul Eggert (2018-02-26): +# I lack access to the following source for Queensland DST: +# Pearce C. History of daylight saving time in Queensland. +# Queensland Hist J. 2017 Aug;23(6):389-403 +# https://search.informit.com.au/documentSummary;dn=994682348436426;res=IELHSS + # From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06): # # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ] # # [ Dec 1990 ] @@ -1534,6 +1542,12 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # "declared it the same day [throughout] the country as of Jan. 1, 1995" # as part of the competition to be first into the 21st century. +# From Kerry Shetline (2018-02-03): +# December 31 was the day that was skipped, so that the transition +# would be from Friday December 30, 1994 to Sunday January 1, 1995. +# From Paul Eggert (2018-02-04): +# One source for this is page 202 of: Bartky IR. One Time Fits All: +# The Campaigns for Global Uniformity (2007). # Kwajalein @@ -1626,7 +1640,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave: # Betty Christian told me yesterday that their local time is the same as -# Pacific Standard Time. They used to be 1/2 hour different from us here in +# Pacific Standard Time. They used to be ½ hour different from us here in # Sacramento but it was changed a couple of years ago. @@ -1665,7 +1679,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # 12 hours and 20 minutes ahead of GMT. When New Zealand adjusted its # standard time in 1940s, Tonga had the choice of subtracting from its # local time to come on the same standard time as New Zealand or of -# advancing its time to maintain the differential of 13 degrees +# advancing its time to maintain the differential of 13° # (approximately 50 minutes ahead of New Zealand time). # # Because His Majesty King Tāufaʻāhau Tupou IV, then Crown Prince diff --git a/make/data/tzdata/europe b/make/data/tzdata/europe index 1565814a3e3..176a9f81671 100644 --- a/make/data/tzdata/europe +++ b/make/data/tzdata/europe @@ -140,8 +140,8 @@ # along the towpath within a few yards of it.' # # I have a one inch to one mile map of London and my estimate of the stone's -# position is 51 degrees 28' 30" N, 0 degrees 18' 45" W. The longitude should -# be within about +-2". The Ordnance Survey grid reference is TQ172761. +# position is 51° 28' 30" N, 0° 18' 45" W. The longitude should +# be within about ±2". The Ordnance Survey grid reference is TQ172761. # # [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.] @@ -181,7 +181,7 @@ # after-hours daylight in which to pursue his research. # In 1895 he presented a paper to the Wellington Philosophical Society # that proposed a two-hour daylight-saving shift. See: -# Hudson GV. On seasonal time-adjustment in countries south of lat. 30 deg. +# Hudson GV. On seasonal time-adjustment in countries south of lat. 30°. # Transactions and Proceedings of the New Zealand Institute. 1895;28:734 # http://rsnz.natlib.govt.nz/volume/rsnz_28/rsnz_28_00_006110.html # Although some interest was expressed in New Zealand, his proposal @@ -531,11 +531,25 @@ Link Europe/London Europe/Jersey Link Europe/London Europe/Guernsey Link Europe/London Europe/Isle_of_Man -# From Paul Eggert (2018-01-19): +# From Paul Eggert (2018-02-15): +# In January 2018 we discovered that the negative SAVE values in the +# Eire rules cause problems with tests for ICU: +# https://mm.icann.org/pipermail/tz/2018-January/025825.html +# and with tests for OpenJDK: +# https://mm.icann.org/pipermail/tz/2018-January/025822.html +# +# To work around this problem, the build procedure can translate the +# following data into two forms, one with negative SAVE values and the +# other form with a traditional approximation for Irish time stamps +# after 1971-10-31 02:00 UTC; although this approximation has tm_isdst +# flags that are reversed, its UTC offsets are correct and this often +# suffices. This source file currently uses only nonnegative SAVE +# values, but this is intended to change and downstream code should +# not rely on it. +# # The following is like GB-Eire and EU, except with standard time in -# summer and negative daylight saving time in winter. -# Although currently commented out, this will need to become uncommented -# once the ICU/OpenJDK workaround is removed; see below. +# summer and negative daylight saving time in winter. It is for when +# negative SAVE values are used. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S #Rule Eire 1971 only - Oct 31 2:00u -1:00 GMT #Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST @@ -556,24 +570,12 @@ Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 0:00 1:00 IST 1947 Nov 2 2:00s 0:00 - GMT 1948 Apr 18 2:00s 0:00 GB-Eire GMT/IST 1968 Oct 27 -# From Paul Eggert (2018-01-18): -# The next line should look like this: +# The next line is for when negative SAVE values are used. # 1:00 Eire IST/GMT -# However, in January 2018 we discovered that the Eire rules cause -# problems with tests for ICU: -# https://mm.icann.org/pipermail/tz/2018-January/025825.html -# and with tests for OpenJDK: -# https://mm.icann.org/pipermail/tz/2018-January/025822.html -# To work around this problem, use a traditional approximation for -# time stamps after 1971-10-31 02:00 UTC, to give ICU and OpenJDK -# developers breathing room to fix bugs. This approximation has -# correct UTC offsets, but results in tm_isdst flags are the reverse -# of what they should be. This workaround is temporary and should be -# removed reasonably soon. +# These three lines are for when SAVE values are always nonnegative. 1:00 - IST 1971 Oct 31 2:00u 0:00 GB-Eire GMT/IST 1996 0:00 EU GMT/IST -# End of workaround for ICU and OpenJDK bugs. ############################################################################### @@ -1557,21 +1559,21 @@ Zone Europe/Budapest 1:16:20 - LMT 1890 Oct # http://www.almanak.hi.is/klukkan.html # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Iceland 1917 1919 - Feb 19 23:00 1:00 S +Rule Iceland 1917 1919 - Feb 19 23:00 1:00 - Rule Iceland 1917 only - Oct 21 1:00 0 - Rule Iceland 1918 1919 - Nov 16 1:00 0 - -Rule Iceland 1921 only - Mar 19 23:00 1:00 S +Rule Iceland 1921 only - Mar 19 23:00 1:00 - Rule Iceland 1921 only - Jun 23 1:00 0 - -Rule Iceland 1939 only - Apr 29 23:00 1:00 S +Rule Iceland 1939 only - Apr 29 23:00 1:00 - Rule Iceland 1939 only - Oct 29 2:00 0 - -Rule Iceland 1940 only - Feb 25 2:00 1:00 S +Rule Iceland 1940 only - Feb 25 2:00 1:00 - Rule Iceland 1940 1941 - Nov Sun>=2 1:00s 0 - -Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 S +Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 - # 1943-1946 - first Sunday in March until first Sunday in winter -Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 S +Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 - Rule Iceland 1942 1948 - Oct Sun>=22 1:00s 0 - # 1947-1967 - first Sunday in April until first Sunday in winter -Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 S +Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 - # 1949 and 1967 Oct transitions delayed by 1 week Rule Iceland 1949 only - Oct 30 1:00s 0 - Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 - @@ -2161,15 +2163,19 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880 1:00 EU CE%sT # Portugal -# + # From Paul Eggert (2014-08-11), after a heads-up from Stephen Colebourne: # According to a Portuguese decree (1911-05-26) # https://dre.pt/application/dir/pdf1sdip/1911/05/12500/23132313.pdf # Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00. -# Round the old offset to -0:36:45. This agrees with Willett but disagrees -# with Shanks, who says the transition occurred on 1911-05-24 at 00:00 for -# Europe/Lisbon, Atlantic/Azores, and Atlantic/Madeira. +# Round the old offset to -0:36:45. This agrees with Willett.... # +# From Michael Deckers (2018-02-15): +# article 5 [of the 1911 decree; Deckers's translation] ...: +# These dispositions shall enter into force at the instant at which, +# according to the 2nd article, the civil day January 1, 1912 begins, +# all clocks therefore having to be advanced or set back correspondingly ... + # From Rui Pedro Salgueiro (1992-11-12): # Portugal has recently (September, 27) changed timezone # (from WET to MET or CET) to harmonize with EEC. @@ -2252,7 +2258,7 @@ Rule Port 1983 only - Mar lastSun 2:00s 1:00 S # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Lisbon -0:36:45 - LMT 1884 - -0:36:45 - LMT 1912 Jan 1 # Lisbon Mean Time + -0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT 0:00 Port WE%sT 1966 Apr 3 2:00 1:00 - CET 1976 Sep 26 1:00 0:00 Port WE%sT 1983 Sep 25 1:00s @@ -2261,7 +2267,7 @@ Zone Europe/Lisbon -0:36:45 - LMT 1884 0:00 EU WE%sT # This Zone can be simplified once we assume zic %z. Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada - -1:54:32 - HMT 1912 Jan 1 # Horta Mean Time + -1:54:32 - HMT 1912 Jan 1 2:00u # Horta MT -2:00 Port -02/-01 1942 Apr 25 22:00s -2:00 Port +00 1942 Aug 15 22:00s -2:00 Port -02/-01 1943 Apr 17 22:00s @@ -2277,7 +2283,7 @@ Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada -1:00 EU -01/+00 # This Zone can be simplified once we assume zic %z. Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal - -1:07:36 - FMT 1912 Jan 1 # Funchal Mean Time + -1:07:36 - FMT 1912 Jan 1 1:00u # Funchal MT -1:00 Port -01/+00 1942 Apr 25 22:00s -1:00 Port +01 1942 Aug 15 22:00s -1:00 Port -01/+00 1943 Apr 17 22:00s @@ -2615,13 +2621,13 @@ Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr # From Vladimir Karpinsky (2014-07-08): # LMT in Moscow (before Jul 3, 1916) is 2:30:17, that was defined by Moscow -# Observatory (coordinates: 55 deg. 45'29.70", 37 deg. 34'05.30").... +# Observatory (coordinates: 55° 45' 29.70", 37° 34' 05.30").... # LMT in Moscow since Jul 3, 1916 is 2:31:01 as a result of new standard. # (The info is from the book by Byalokoz ... p. 18.) # The time in St. Petersburg as capital of Russia was defined by # Pulkov observatory, near St. Petersburg. In 1916 LMT Moscow # was synchronized with LMT St. Petersburg (+30 minutes), (Pulkov observatory -# coordinates: 59 deg. 46'18.70", 30 deg. 19'40.70") so 30 deg. 19'40.70" > +# coordinates: 59° 46' 18.70", 30° 19' 40.70") so 30° 19' 40.70" > # 2h01m18.7s = 2:01:19. LMT Moscow = LMT St.Petersburg + 30m 2:01:19 + 0:30 = # 2:31:19 ... # @@ -3450,7 +3456,7 @@ Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C. # three degrees, or twelve minutes of time, to the west of the # meridian of the Observatory of Stockholm". The law is dated 1878-05-31. # -# The observatory at that time had the meridian 18 degrees 03' 30" +# The observatory at that time had the meridian 18° 03' 30" # eastern longitude = 01:12:14 in time. Less 12 minutes gives the # national standard time as 01:00:14 ahead of GMT.... # @@ -3554,7 +3560,7 @@ Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1 # From Alois Treindl (2013-09-11): # The Federal regulations say # https://www.admin.ch/opc/de/classified-compilation/20071096/index.html -# ... the meridian for Bern mean time ... is 7 degrees 26' 22.50". +# ... the meridian for Bern mean time ... is 7° 26' 22.50". # Expressed in time, it is 0h29m45.5s. # From Pierre-Yves Berger (2013-09-11): diff --git a/make/data/tzdata/northamerica b/make/data/tzdata/northamerica index 2aa184bc6bf..bcfb662154f 100644 --- a/make/data/tzdata/northamerica +++ b/make/data/tzdata/northamerica @@ -48,7 +48,7 @@ # in New York City (1869-10). His 1870 proposal was based on Washington, DC, # but in 1872-05 he moved the proposed origin to Greenwich. -# From Paul Eggert (2016-09-21): +# From Paul Eggert (2018-03-20): # Dowd's proposal left many details unresolved, such as where to draw # lines between time zones. The key individual who made time zones # work in the US was William Frederick Allen - railway engineer, @@ -59,10 +59,9 @@ # to the General Time Convention on 1883-04-11, saying that his plan # meant "local time would be practically abolished" - a plus for # railway scheduling. By the next convention on 1883-10-11 nearly all -# railroads had agreed and it took effect on 1883-11-18 at 12:00. -# That Sunday was called the "day of two noons", as the eastern parts -# of the new zones observed noon twice. Allen witnessed the -# transition in New York City, writing: +# railroads had agreed and it took effect on 1883-11-18. That Sunday +# was called the "day of two noons", as some locations observed noon +# twice. Allen witnessed the transition in New York City, writing: # # I heard the bells of St. Paul's strike on the old time. Four # minutes later, obedient to the electrical signal from the Naval @@ -447,8 +446,7 @@ Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21 # ...according to the Census Bureau, the largest city is Beulah (although # it's commonly referred to as Beulah-Hazen, with Hazen being the next # largest city in Mercer County). Google Maps places Beulah's city hall -# at 47 degrees 15' 51" N, 101 degrees 46' 40" W, which yields an offset -# of 6h47'07". +# at 47° 15' 51" N, 101° 46' 40" W, which yields an offset of 6h47'07". Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53 -7:00 US M%sT 2010 Nov 7 2:00 @@ -481,7 +479,7 @@ Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00:04 # California, northern Idaho (Benewah, Bonner, Boundary, Clearwater, # Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, Idaho county # north of the Salmon River, and the towns of Burgdorf and Warren), -# Nevada (except West Wendover), Oregon (except the northern 3/4 of +# Nevada (except West Wendover), Oregon (except the northern ¾ of # Malheur county), and Washington # From Paul Eggert (2016-08-20): @@ -979,6 +977,13 @@ Zone America/Indiana/Vevay -5:40:16 - LMT 1883 Nov 18 12:19:44 -5:00 - EST 2006 -5:00 US E%sT +# From Paul Eggert (2018-03-20): +# The Louisville & Nashville Railroad's 1883-11-18 change occurred at +# 10:00 old local time; train were supposed to come to a standstill +# for precisely 18 minutes. See Bartky Fig. 1 (page 50). It is not +# clear how this matched civil time in Louisville, so for now continue +# to assume Louisville switched at noon new local time, like New York. +# # Part of Kentucky left its clocks alone in 1974. # This also includes Clark, Floyd, and Harrison counties in Indiana. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER @@ -3287,8 +3292,8 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr # http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647 # # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone America/Jamaica -5:07:11 - LMT 1890 # Kingston - -5:07:11 - KMT 1912 Feb # Kingston Mean Time +Zone America/Jamaica -5:07:10 - LMT 1890 # Kingston + -5:07:10 - KMT 1912 Feb # Kingston Mean Time -5:00 - EST 1974 -5:00 US E%sT 1984 -5:00 - EST @@ -3438,7 +3443,7 @@ Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Grand_Turk -4:44:32 - LMT 1890 - -5:07:11 - KMT 1912 Feb # Kingston Mean Time + -5:07:10 - KMT 1912 Feb # Kingston Mean Time -5:00 - EST 1979 -5:00 US E%sT 2015 Nov Sun>=1 2:00 -4:00 - AST 2018 Mar 11 3:00 diff --git a/make/data/tzdata/southamerica b/make/data/tzdata/southamerica index 38dd275398f..65d3c9fcef2 100644 --- a/make/data/tzdata/southamerica +++ b/make/data/tzdata/southamerica @@ -70,28 +70,28 @@ # AR was chosen because they are the ISO letters that represent Argentina. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Arg 1930 only - Dec 1 0:00 1:00 S +Rule Arg 1930 only - Dec 1 0:00 1:00 - Rule Arg 1931 only - Apr 1 0:00 0 - -Rule Arg 1931 only - Oct 15 0:00 1:00 S +Rule Arg 1931 only - Oct 15 0:00 1:00 - Rule Arg 1932 1940 - Mar 1 0:00 0 - -Rule Arg 1932 1939 - Nov 1 0:00 1:00 S -Rule Arg 1940 only - Jul 1 0:00 1:00 S +Rule Arg 1932 1939 - Nov 1 0:00 1:00 - +Rule Arg 1940 only - Jul 1 0:00 1:00 - Rule Arg 1941 only - Jun 15 0:00 0 - -Rule Arg 1941 only - Oct 15 0:00 1:00 S +Rule Arg 1941 only - Oct 15 0:00 1:00 - Rule Arg 1943 only - Aug 1 0:00 0 - -Rule Arg 1943 only - Oct 15 0:00 1:00 S +Rule Arg 1943 only - Oct 15 0:00 1:00 - Rule Arg 1946 only - Mar 1 0:00 0 - -Rule Arg 1946 only - Oct 1 0:00 1:00 S +Rule Arg 1946 only - Oct 1 0:00 1:00 - Rule Arg 1963 only - Oct 1 0:00 0 - -Rule Arg 1963 only - Dec 15 0:00 1:00 S +Rule Arg 1963 only - Dec 15 0:00 1:00 - Rule Arg 1964 1966 - Mar 1 0:00 0 - -Rule Arg 1964 1966 - Oct 15 0:00 1:00 S +Rule Arg 1964 1966 - Oct 15 0:00 1:00 - Rule Arg 1967 only - Apr 2 0:00 0 - -Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 S +Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 - Rule Arg 1968 1969 - Apr Sun>=1 0:00 0 - -Rule Arg 1974 only - Jan 23 0:00 1:00 S +Rule Arg 1974 only - Jan 23 0:00 1:00 - Rule Arg 1974 only - May 1 0:00 0 - -Rule Arg 1988 only - Dec 1 0:00 1:00 S +Rule Arg 1988 only - Dec 1 0:00 1:00 - # # From Hernan G. Otero (1995-06-26): # These corrections were contributed by InterSoft Argentina S.A., @@ -99,7 +99,7 @@ Rule Arg 1988 only - Dec 1 0:00 1:00 S # Talleres de Hidrografía Naval Argentina # (Argentine Naval Hydrography Institute) Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 - -Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S +Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 - # # From Hernan G. Otero (1995-06-26): # From this moment on, the law that mandated the daylight saving @@ -110,7 +110,7 @@ Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S # On October 3, 1999, 0:00 local, Argentina implemented daylight savings time, # which did not result in the switch of a time zone, as they stayed 9 hours # from the International Date Line. -Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 S +Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 - # From Paul Eggert (2007-12-28): # DST was set to expire on March 5, not March 3, but since it was converted # to standard time on March 3 it's more convenient for us to pretend that @@ -213,9 +213,9 @@ Rule Arg 2000 only - Mar 3 0:00 0 - # la modificación del huso horario, ya que 2009 nos encuentra con # crecimiento en la producción y distribución energética." -Rule Arg 2007 only - Dec 30 0:00 1:00 S +Rule Arg 2007 only - Dec 30 0:00 1:00 - Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 - -Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S +Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 - # From Mariano Absatz (2004-05-21): # Today it was officially published that the Province of Mendoza is changing @@ -225,12 +225,14 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S # It's Law No. 7,210. This change is due to a public power emergency, so for # now we'll assume it's for this year only. # -# From Paul Eggert (2014-08-09): +# From Paul Eggert (2018-01-31): # Hora de verano para la República Argentina # http://buenasiembra.com.ar/esoterismo/astrologia/hora-de-verano-de-la-republica-argentina-27.html # says that standard time in Argentina from 1894-10-31 # to 1920-05-01 was -4:16:48.25. Go with this more-precise value -# over Shanks & Pottenger. +# over Shanks & Pottenger. It is upward compatible with Milne, who +# says Córdoba time was -4:16:48.2. + # # From Mariano Absatz (2004-06-05): # These media articles from a major newspaper mostly cover the current state: @@ -404,9 +406,9 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S # rules...San Luis is still using "Western ARgentina Time" and it got # stuck on Summer daylight savings time even though the summer is over. -# From Paul Eggert (2013-09-05): +# From Paul Eggert (2018-01-23): # Perhaps San Luis operates on the legal fiction that it is at -04 -# with perpetual summer time, but ordinary usage typically seems to +# with perpetual daylight saving time, but ordinary usage typically seems to # just say it's at -03; see, for example, # https://es.wikipedia.org/wiki/Hora_oficial_argentina # We've documented similar situations as being plain changes to @@ -415,9 +417,6 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S # plus is that this silences a zic complaint that there's no POSIX TZ # setting for time stamps past 2038. -# From Paul Eggert (2013-02-21): -# Milne says Córdoba time was -4:16:48.2. Round to the nearest second. - # Zone NAME GMTOFF RULES FORMAT [UNTIL] # # Buenos Aires (BA), Capital Federal (CF), @@ -552,7 +551,7 @@ Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31 # San Luis (SL) Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 - -Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 S +Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 - Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May @@ -794,14 +793,14 @@ Zone America/La_Paz -4:32:36 - LMT 1890 # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Decree 20,466 (1931-10-01) # Decree 21,896 (1932-01-10) -Rule Brazil 1931 only - Oct 3 11:00 1:00 S +Rule Brazil 1931 only - Oct 3 11:00 1:00 - Rule Brazil 1932 1933 - Apr 1 0:00 0 - -Rule Brazil 1932 only - Oct 3 0:00 1:00 S +Rule Brazil 1932 only - Oct 3 0:00 1:00 - # Decree 23,195 (1933-10-10) # revoked DST. # Decree 27,496 (1949-11-24) # Decree 27,998 (1950-04-13) -Rule Brazil 1949 1952 - Dec 1 0:00 1:00 S +Rule Brazil 1949 1952 - Dec 1 0:00 1:00 - Rule Brazil 1950 only - Apr 16 1:00 0 - Rule Brazil 1951 1952 - Apr 1 0:00 0 - # Decree 32,308 (1953-02-24) @@ -813,51 +812,51 @@ Rule Brazil 1953 only - Mar 1 0:00 0 - # in SP, RJ, GB, MG, ES, due to the prolongation of the drought. # Decree 53,071 (1963-12-03) # extended the above decree to all of the national territory on 12-09. -Rule Brazil 1963 only - Dec 9 0:00 1:00 S +Rule Brazil 1963 only - Dec 9 0:00 1:00 - # Decree 53,604 (1964-02-25) # extended summer time by one day to 1964-03-01 00:00 (start of school). Rule Brazil 1964 only - Mar 1 0:00 0 - # Decree 55,639 (1965-01-27) -Rule Brazil 1965 only - Jan 31 0:00 1:00 S +Rule Brazil 1965 only - Jan 31 0:00 1:00 - Rule Brazil 1965 only - Mar 31 0:00 0 - # Decree 57,303 (1965-11-22) -Rule Brazil 1965 only - Dec 1 0:00 1:00 S +Rule Brazil 1965 only - Dec 1 0:00 1:00 - # Decree 57,843 (1966-02-18) Rule Brazil 1966 1968 - Mar 1 0:00 0 - -Rule Brazil 1966 1967 - Nov 1 0:00 1:00 S +Rule Brazil 1966 1967 - Nov 1 0:00 1:00 - # Decree 63,429 (1968-10-15) # revoked DST. # Decree 91,698 (1985-09-27) -Rule Brazil 1985 only - Nov 2 0:00 1:00 S +Rule Brazil 1985 only - Nov 2 0:00 1:00 - # Decree 92,310 (1986-01-21) # Decree 92,463 (1986-03-13) Rule Brazil 1986 only - Mar 15 0:00 0 - # Decree 93,316 (1986-10-01) -Rule Brazil 1986 only - Oct 25 0:00 1:00 S +Rule Brazil 1986 only - Oct 25 0:00 1:00 - Rule Brazil 1987 only - Feb 14 0:00 0 - # Decree 94,922 (1987-09-22) -Rule Brazil 1987 only - Oct 25 0:00 1:00 S +Rule Brazil 1987 only - Oct 25 0:00 1:00 - Rule Brazil 1988 only - Feb 7 0:00 0 - # Decree 96,676 (1988-09-12) # except for the states of AC, AM, PA, RR, RO, and AP (then a territory) -Rule Brazil 1988 only - Oct 16 0:00 1:00 S +Rule Brazil 1988 only - Oct 16 0:00 1:00 - Rule Brazil 1989 only - Jan 29 0:00 0 - # Decree 98,077 (1989-08-21) # with the same exceptions -Rule Brazil 1989 only - Oct 15 0:00 1:00 S +Rule Brazil 1989 only - Oct 15 0:00 1:00 - Rule Brazil 1990 only - Feb 11 0:00 0 - # Decree 99,530 (1990-09-17) # adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF. # Decree 99,629 (1990-10-19) adds BA, MT. -Rule Brazil 1990 only - Oct 21 0:00 1:00 S +Rule Brazil 1990 only - Oct 21 0:00 1:00 - Rule Brazil 1991 only - Feb 17 0:00 0 - # Unnumbered decree (1991-09-25) # adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF. -Rule Brazil 1991 only - Oct 20 0:00 1:00 S +Rule Brazil 1991 only - Oct 20 0:00 1:00 - Rule Brazil 1992 only - Feb 9 0:00 0 - # Unnumbered decree (1992-10-16) # adopted by same states. -Rule Brazil 1992 only - Oct 25 0:00 1:00 S +Rule Brazil 1992 only - Oct 25 0:00 1:00 - Rule Brazil 1993 only - Jan 31 0:00 0 - # Decree 942 (1993-09-28) # adopted by same states, plus AM. @@ -867,12 +866,12 @@ Rule Brazil 1993 only - Jan 31 0:00 0 - # adopted by same states, plus MT and TO. # Decree 1,674 (1995-10-13) # adds AL, SE. -Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 S +Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 - Rule Brazil 1994 1995 - Feb Sun>=15 0:00 0 - Rule Brazil 1996 only - Feb 11 0:00 0 - # Decree 2,000 (1996-09-04) # adopted by same states, minus AL, SE. -Rule Brazil 1996 only - Oct 6 0:00 1:00 S +Rule Brazil 1996 only - Oct 6 0:00 1:00 - Rule Brazil 1997 only - Feb 16 0:00 0 - # From Daniel C. Sobral (1998-02-12): # In 1997, the DS began on October 6. The stated reason was that @@ -882,19 +881,19 @@ Rule Brazil 1997 only - Feb 16 0:00 0 - # to help dealing with the shortages of electric power. # # Decree 2,317 (1997-09-04), adopted by same states. -Rule Brazil 1997 only - Oct 6 0:00 1:00 S +Rule Brazil 1997 only - Oct 6 0:00 1:00 - # Decree 2,495 # (1998-02-10) Rule Brazil 1998 only - Mar 1 0:00 0 - # Decree 2,780 (1998-09-11) # adopted by the same states as before. -Rule Brazil 1998 only - Oct 11 0:00 1:00 S +Rule Brazil 1998 only - Oct 11 0:00 1:00 - Rule Brazil 1999 only - Feb 21 0:00 0 - # Decree 3,150 # (1999-08-23) adopted by same states. # Decree 3,188 (1999-09-30) # adds SE, AL, PB, PE, RN, CE, PI, MA and RR. -Rule Brazil 1999 only - Oct 3 0:00 1:00 S +Rule Brazil 1999 only - Oct 3 0:00 1:00 - Rule Brazil 2000 only - Feb 27 0:00 0 - # Decree 3,592 (2000-09-06) # adopted by the same states as before. @@ -904,34 +903,34 @@ Rule Brazil 2000 only - Feb 27 0:00 0 - # repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00. # Decree 3,916 # (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE. -Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 S +Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 - Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 - # Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE. # 4,399 -Rule Brazil 2002 only - Nov 3 0:00 1:00 S +Rule Brazil 2002 only - Nov 3 0:00 1:00 - # Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO. # 4,844 -Rule Brazil 2003 only - Oct 19 0:00 1:00 S +Rule Brazil 2003 only - Oct 19 0:00 1:00 - # Decree 5,223 (2004-10-01) reestablishes DST in MT. # 5,223 -Rule Brazil 2004 only - Nov 2 0:00 1:00 S +Rule Brazil 2004 only - Nov 2 0:00 1:00 - # Decree 5,539 (2005-09-19), # adopted by the same states as before. -Rule Brazil 2005 only - Oct 16 0:00 1:00 S +Rule Brazil 2005 only - Oct 16 0:00 1:00 - # Decree 5,920 (2006-10-03), # adopted by the same states as before. -Rule Brazil 2006 only - Nov 5 0:00 1:00 S +Rule Brazil 2006 only - Nov 5 0:00 1:00 - Rule Brazil 2007 only - Feb 25 0:00 0 - # Decree 6,212 (2007-09-26), # adopted by the same states as before. -Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 S +Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 - # From Frederico A. C. Neves (2008-09-10): # According to this decree # http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm # [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the # 3rd Feb Sunday. There is an exception on the return date when this is # the Carnival Sunday then the return date will be the next Sunday... -Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 S +Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 - Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 - # Decree 7,584 (2011-10-13) # added Bahia. @@ -949,7 +948,7 @@ Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 - # ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html # From Steffen Thorsen (2017-12-20): # http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm -Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 S +Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 - Rule Brazil 2023 only - Feb Sun>=22 0:00 0 - Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 - Rule Brazil 2026 only - Feb Sun>=22 0:00 0 - @@ -1256,28 +1255,28 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914 # For now, assume that they will not revert. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Chile 1927 1931 - Sep 1 0:00 1:00 S +Rule Chile 1927 1931 - Sep 1 0:00 1:00 - Rule Chile 1928 1932 - Apr 1 0:00 0 - -Rule Chile 1968 only - Nov 3 4:00u 1:00 S +Rule Chile 1968 only - Nov 3 4:00u 1:00 - Rule Chile 1969 only - Mar 30 3:00u 0 - -Rule Chile 1969 only - Nov 23 4:00u 1:00 S +Rule Chile 1969 only - Nov 23 4:00u 1:00 - Rule Chile 1970 only - Mar 29 3:00u 0 - Rule Chile 1971 only - Mar 14 3:00u 0 - -Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 - Rule Chile 1972 1986 - Mar Sun>=9 3:00u 0 - -Rule Chile 1973 only - Sep 30 4:00u 1:00 S -Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1973 only - Sep 30 4:00u 1:00 - +Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 - Rule Chile 1987 only - Apr 12 3:00u 0 - Rule Chile 1988 1990 - Mar Sun>=9 3:00u 0 - -Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 S -Rule Chile 1990 only - Sep 16 4:00u 1:00 S +Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 - +Rule Chile 1990 only - Sep 16 4:00u 1:00 - Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 - -Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 - Rule Chile 1997 only - Mar 30 3:00u 0 - Rule Chile 1998 only - Mar Sun>=9 3:00u 0 - -Rule Chile 1998 only - Sep 27 4:00u 1:00 S +Rule Chile 1998 only - Sep 27 4:00u 1:00 - Rule Chile 1999 only - Apr 4 3:00u 0 - -Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 - Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 - # N.B.: the end of March 29 in Chile is March 30 in Universal time, # which is used below in specifying the transition. @@ -1285,11 +1284,11 @@ Rule Chile 2008 only - Mar 30 3:00u 0 - Rule Chile 2009 only - Mar Sun>=9 3:00u 0 - Rule Chile 2010 only - Apr Sun>=1 3:00u 0 - Rule Chile 2011 only - May Sun>=2 3:00u 0 - -Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 S +Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 - Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 - -Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 S +Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 - Rule Chile 2016 max - May Sun>=9 3:00u 0 - -Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 S +Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 - # IATA SSIM anomalies: (1992-02) says 1992-03-14; # (1996-09) says 1998-03-08. Ignore these. # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1354,7 +1353,7 @@ Zone Antarctica/Palmer 0 - -00 1965 # "A variation of fifteen minutes in the public clocks of Bogota is not rare." # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule CO 1992 only - May 3 0:00 1:00 S +Rule CO 1992 only - May 3 0:00 1:00 - Rule CO 1993 only - Apr 4 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 @@ -1414,7 +1413,7 @@ Link America/Curacao America/Kralendijk # Caribbean Netherlands # repeated. For now, assume transitions were at 00:00 local time country-wide. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Ecuador 1992 only - Nov 28 0:00 1:00 S +Rule Ecuador 1992 only - Nov 28 0:00 1:00 - Rule Ecuador 1993 only - Feb 5 0:00 0 - # # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1504,22 +1503,22 @@ Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno # the maintainers of the database to inform them we're adopting # the same policy this year and suggest recommendations for future years. # -# For now we will assume permanent summer time for the Falklands +# For now we will assume permanent -03 for the Falklands # until advised differently (to apply for 2012 and beyond, after the 2011 # experiment was apparently successful.) # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 S +Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 - Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 - -Rule Falk 1939 only - Oct 1 0:00 1:00 S -Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 S +Rule Falk 1939 only - Oct 1 0:00 1:00 - +Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 - Rule Falk 1943 only - Jan 1 0:00 0 - -Rule Falk 1983 only - Sep lastSun 0:00 1:00 S +Rule Falk 1983 only - Sep lastSun 0:00 1:00 - Rule Falk 1984 1985 - Apr lastSun 0:00 0 - -Rule Falk 1984 only - Sep 16 0:00 1:00 S -Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 S +Rule Falk 1984 only - Sep 16 0:00 1:00 - +Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 - Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 - Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 - -Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 S +Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Atlantic/Stanley -3:51:24 - LMT 1890 -3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time @@ -1554,16 +1553,16 @@ Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown # adjust their clocks at 0 hour of the given dates. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Para 1975 1988 - Oct 1 0:00 1:00 S +Rule Para 1975 1988 - Oct 1 0:00 1:00 - Rule Para 1975 1978 - Mar 1 0:00 0 - Rule Para 1979 1991 - Apr 1 0:00 0 - -Rule Para 1989 only - Oct 22 0:00 1:00 S -Rule Para 1990 only - Oct 1 0:00 1:00 S -Rule Para 1991 only - Oct 6 0:00 1:00 S +Rule Para 1989 only - Oct 22 0:00 1:00 - +Rule Para 1990 only - Oct 1 0:00 1:00 - +Rule Para 1991 only - Oct 6 0:00 1:00 - Rule Para 1992 only - Mar 1 0:00 0 - -Rule Para 1992 only - Oct 5 0:00 1:00 S +Rule Para 1992 only - Oct 5 0:00 1:00 - Rule Para 1993 only - Mar 31 0:00 0 - -Rule Para 1993 1995 - Oct 1 0:00 1:00 S +Rule Para 1993 1995 - Oct 1 0:00 1:00 - Rule Para 1994 1995 - Feb lastSun 0:00 0 - Rule Para 1996 only - Mar 1 0:00 0 - # IATA SSIM (2000-02) says 1999-10-10; ignore this for now. @@ -1581,7 +1580,7 @@ Rule Para 1996 only - Mar 1 0:00 0 - # year, the time will change on the first Sunday of October; likewise, the # clock will be set back on the first Sunday of March. # -Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 S +Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 - # IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger. Rule Para 1997 only - Feb lastSun 0:00 0 - # Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but @@ -1592,7 +1591,7 @@ Rule Para 1998 2001 - Mar Sun>=1 0:00 0 - # dst method to be from the first Sunday in September to the first Sunday in # April. Rule Para 2002 2004 - Apr Sun>=1 0:00 0 - -Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S +Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 - # # From Jesper Nørgaard Welen (2005-01-02): # There are several sources that claim that Paraguay made @@ -1601,7 +1600,7 @@ Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S # Decree 1,867 (2004-03-05) # From Carlos Raúl Perasso via Jesper Nørgaard Welen (2006-10-13) # http://www.presidencia.gov.py/decretos/D1867.pdf -Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 S +Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 - Rule Para 2005 2009 - Mar Sun>=8 0:00 0 - # From Carlos Raúl Perasso (2010-02-18): # By decree number 3958 issued yesterday @@ -1614,7 +1613,7 @@ Rule Para 2005 2009 - Mar Sun>=8 0:00 0 - # and that on the first Sunday of the month of October, it is to be set # forward 60 minutes, in all the territory of the Paraguayan Republic. # ... -Rule Para 2010 max - Oct Sun>=1 0:00 1:00 S +Rule Para 2010 max - Oct Sun>=1 0:00 1:00 - Rule Para 2010 2012 - Apr Sun>=8 0:00 0 - # # From Steffen Thorsen (2013-03-07): @@ -1647,16 +1646,16 @@ Zone America/Asuncion -3:50:40 - LMT 1890 # Shanks & Pottenger don't have this transition. Assume 1986 was like 1987. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Peru 1938 only - Jan 1 0:00 1:00 S +Rule Peru 1938 only - Jan 1 0:00 1:00 - Rule Peru 1938 only - Apr 1 0:00 0 - -Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 S +Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 - Rule Peru 1939 1940 - Mar Sun>=24 0:00 0 - -Rule Peru 1986 1987 - Jan 1 0:00 1:00 S +Rule Peru 1986 1987 - Jan 1 0:00 1:00 - Rule Peru 1986 1987 - Apr 1 0:00 0 - -Rule Peru 1990 only - Jan 1 0:00 1:00 S +Rule Peru 1990 only - Jan 1 0:00 1:00 - Rule Peru 1990 only - Apr 1 0:00 0 - # IATA is ambiguous for 1993/1995; go with Shanks & Pottenger. -Rule Peru 1994 only - Jan 1 0:00 1:00 S +Rule Peru 1994 only - Jan 1 0:00 1:00 - Rule Peru 1994 only - Apr 1 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Lima -5:08:12 - LMT 1890 @@ -1702,72 +1701,201 @@ Link America/Port_of_Spain America/Tortola # Virgin Islands (UK) # Uruguay # From Paul Eggert (1993-11-18): # Uruguay wins the prize for the strangest peacetime manipulation of the rules. -# From Shanks & Pottenger: +# +# From Tim Parenti (2018-02-20), per Jeremie Bonjour (2018-01-31) and Michael +# Deckers (2018-02-20): +# ... At least they kept good records... +# +# http://www.armada.mil.uy/ContenidosPDFs/sohma/web/almanaque/almanaque_2018.pdf#page=36 +# Page 36 of Almanaque 2018, published by the Oceanography, Hydrography, and +# Meteorology Service of the Uruguayan Navy, seems to give many transitions +# with greater clarity than we've had before. It directly references many laws +# and decrees which are, in turn, referenced below. They can be viewed in the +# public archives of the Diario Oficial (in Spanish) at +# http://www.impo.com.uy/diariooficial/ +# +# Ley No. 3920 of 1908-06-10 placed the determination of legal time under the +# auspices of the National Institute for the Prediction of Time. It is unclear +# exactly what offset was used during this period, though Ley No. 7200 of +# 1920-04-23 used the Observatory of the National Meteorological Institute in +# Montevideo (34° 54' 33" S, 56° 12' 45" W) as its reference meridian, +# retarding legal time by 15 minutes 9 seconds from 1920-04-30 24:00, +# resulting in UT-04. Assume the corresponding LMT of UT-03:44:51 (given on +# page 725 of the Proceedings of the Second Pan-American Scientific Congress, +# 1915-1916) was in use, and merely became official from 1908-06-10. +# https://www.impo.com.uy/diariooficial/1908/06/18/12 +# https://www.impo.com.uy/diariooficial/1920/04/27/9 +# +# Ley No. 7594 of 1923-06-28 specified legal time as Observatory time advanced +# by 44 minutes 51 seconds (UT-03) "from 30 September to 31 March", and by 14 +# minutes 51 seconds (UT-03:30) "the rest of the year"; a message from the +# National Council of Administration the same day, published directly below the +# law in the Diario Oficial, specified the first transition to be 1923-09-30 +# 24:00. This effectively established standard time at UT-03:30 with 30 +# minutes DST. Assume transitions at 24:00 on the specified days until Ley No. +# 7919 of 1926-03-05 ended this arrangement, repealing all "laws and other +# provisions which oppose" it, resulting in year-round UT-03:30; a Resolución +# of 1926-03-11 puts the final transition at 1926-03-31 24:00, the same as it +# would have been under the previous law. +# https://www.impo.com.uy/diariooficial/1923/07/02/2 +# https://www.impo.com.uy/diariooficial/1926/03/10/2 +# https://www.impo.com.uy/diariooficial/1926/03/18/2 +# # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -# Whitman gives 1923 Oct 1; go with Shanks & Pottenger. -Rule Uruguay 1923 only - Oct 2 0:00 0:30 HS +Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 - Rule Uruguay 1924 1926 - Apr 1 0:00 0 - -Rule Uruguay 1924 1925 - Oct 1 0:00 0:30 HS -Rule Uruguay 1933 1935 - Oct lastSun 0:00 0:30 HS -# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman. -Rule Uruguay 1934 1936 - Mar Sat>=25 23:30s 0 - -Rule Uruguay 1936 only - Nov 1 0:00 0:30 HS -Rule Uruguay 1937 1941 - Mar lastSun 0:00 0 - -# Whitman gives 1937 Oct 3; go with Shanks & Pottenger. -Rule Uruguay 1937 1940 - Oct lastSun 0:00 0:30 HS -# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13, -# and 1943 Apr 13 "to present time"; go with Shanks & Pottenger. -Rule Uruguay 1941 only - Aug 1 0:00 0:30 HS -Rule Uruguay 1942 only - Jan 1 0:00 0 - -Rule Uruguay 1942 only - Dec 14 0:00 1:00 S +# From Tim Parenti (2018-02-15): +# http://www.impo.com.uy/diariooficial/1933/10/27/6 +# +# It appears Ley No. 9122 of 1933 was never published as such in the Diario +# Oficial, but instead appeared as Document 26 in the Diario on Friday +# 1933-10-27 as a decree made Monday 1933-10-23 and filed under the Ministry of +# National Defense. It reinstituted a DST of 30 minutes (to UT-03) "from the +# last Sunday of October...until the last Saturday of March." In accordance +# with this provision, the first transition was explicitly specified in Article +# 2 of the decree as Saturday 1933-10-28 at 24:00; that is, Sunday 1933-10-29 +# at 00:00. Assume transitions at 00:00 Sunday throughout. +# +# Departing from the matter-of-fact nature of previous timekeeping laws, the +# 1933 decree "consider[s] the advantages of...the advance of legal time": +# +# "Whereas: The measure adopted by almost all nations at the time of the last +# World War still persists in North America and Europe, precisely because of +# the economic, hygienic, and social advantages derived from such an +# emergency measure... +# +# Whereas: The advance of the legal time during the summer seasons, by +# displacing social activity near sunrise, favors the citizen populations +# and especially the society that creates and works..." +# +# It further specified that "necessary measures" be taken to ensure that +# "public spectacles finish, in general, before [01:00]." +Rule Uruguay 1933 1938 - Oct lastSun 0:00 0:30 - +Rule Uruguay 1934 1941 - Mar lastSat 24:00 0 - +# From Tim Parenti (2018-02-15): +# Most of the Rules below, and their contemporaneous Zone lines, have been +# updated simply to match the Almanaque 2018. Although the document does not +# list exact transition times, midnight transitions were already present in our +# data here for all transitions through 2004-09, and this is both consistent +# with prior transitions and verified in several decrees marked below between +# 1939-09 and 2004-09, wherein the relevant text was typically of the form: +# +# "From 0 hours on [date], the legal time of the entire Republic will be... +# +# In accordance with [the preceding], on [previous date] at 24 hours, all +# clocks throughout the Republic will be [advanced/retarded] by..." +# +# It is possible that there is greater specificity to be found for the Rules +# below, but it is buried in no fewer than 40 different decrees individually +# referenced by the Almanaque for the period from 1939-09 to 2014-09. +# Four-fifths of these were promulgated less than two weeks before taking +# effect; more than half within a week and none more than 5 weeks. Only the +# handful with comments below have been checked with any thoroughness. +Rule Uruguay 1939 only - Oct 1 0:00 0:30 - +Rule Uruguay 1940 only - Oct 27 0:00 0:30 - +# From Tim Parenti (2018-02-15): +# Decreto 1145 of the Ministry of National Defense, dated 1941-07-26, specified +# UT-03 from Friday 1941-08-01 00:00, citing an "urgent...need to save fuel". +# http://www.impo.com.uy/diariooficial/1941/08/04/1 +Rule Uruguay 1941 only - Aug 1 0:00 0:30 - +# From Tim Parenti (2018-02-15): +# Decreto 1866 of the Ministry of National Defense, dated 1942-12-09, specified +# further advancement (to UT-02:30) from Sunday 1942-12-13 24:00. Since clocks +# never went back to UT-03:30 thereafter, this is modeled as advancing standard +# time by 30 minutes to UT-03, while retaining 30 minutes of DST. +# http://www.impo.com.uy/diariooficial/1942/12/16/3 +Rule Uruguay 1942 only - Dec 14 0:00 0:30 - Rule Uruguay 1943 only - Mar 14 0:00 0 - -Rule Uruguay 1959 only - May 24 0:00 1:00 S +Rule Uruguay 1959 only - May 24 0:00 0:30 - Rule Uruguay 1959 only - Nov 15 0:00 0 - -Rule Uruguay 1960 only - Jan 17 0:00 1:00 S +Rule Uruguay 1960 only - Jan 17 0:00 1:00 - Rule Uruguay 1960 only - Mar 6 0:00 0 - -Rule Uruguay 1965 1967 - Apr Sun>=1 0:00 1:00 S +Rule Uruguay 1965 only - Apr 4 0:00 1:00 - Rule Uruguay 1965 only - Sep 26 0:00 0 - -Rule Uruguay 1966 1967 - Oct 31 0:00 0 - -Rule Uruguay 1968 1970 - May 27 0:00 0:30 HS -Rule Uruguay 1968 1970 - Dec 2 0:00 0 - -Rule Uruguay 1972 only - Apr 24 0:00 1:00 S -Rule Uruguay 1972 only - Aug 15 0:00 0 - -Rule Uruguay 1974 only - Mar 10 0:00 0:30 HS -Rule Uruguay 1974 only - Dec 22 0:00 1:00 S -Rule Uruguay 1976 only - Oct 1 0:00 0 - -Rule Uruguay 1977 only - Dec 4 0:00 1:00 S -Rule Uruguay 1978 only - Apr 1 0:00 0 - -Rule Uruguay 1979 only - Oct 1 0:00 1:00 S -Rule Uruguay 1980 only - May 1 0:00 0 - -Rule Uruguay 1987 only - Dec 14 0:00 1:00 S -Rule Uruguay 1988 only - Mar 14 0:00 0 - -Rule Uruguay 1988 only - Dec 11 0:00 1:00 S -Rule Uruguay 1989 only - Mar 12 0:00 0 - -Rule Uruguay 1989 only - Oct 29 0:00 1:00 S -# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2, -# and that 1992/3's DST was from 10-25 to 03-01. Go with IATA. -Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 - -Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S -Rule Uruguay 1992 only - Oct 18 0:00 1:00 S +# From Tim Parenti (2018-02-15): +# Decreto 321/968 of 1968-05-25, citing emergency drought measures decreed the +# day before, brought clocks forward 30 minutes from Monday 1968-05-27 00:00. +# http://www.impo.com.uy/diariooficial/1968/05/30/5 +Rule Uruguay 1968 only - May 27 0:00 0:30 - +Rule Uruguay 1968 only - Dec 1 0:00 0 - +# From Tim Parenti (2018-02-15): +# Decreto 188/970 of 1970-04-23 instituted restrictions on electricity +# consumption "as a consequence of the current rainfall regime in the country". +# Articles 13 and 14 advanced clocks by an hour from Saturday 1970-04-25 00:00. +# http://www.impo.com.uy/diariooficial/1970/04/29/4 +Rule Uruguay 1970 only - Apr 25 0:00 1:00 - +Rule Uruguay 1970 only - Jun 14 0:00 0 - +Rule Uruguay 1972 only - Apr 23 0:00 1:00 - +Rule Uruguay 1972 only - Jul 16 0:00 0 - +# From Tim Parenti (2018-02-15): +# Decreto 29/974 of 1974-01-11, citing "the international rise in the price of +# oil", advanced clocks by 90 minutes (to UT-01:30). Decreto 163/974 of +# 1974-03-04 returned 60 of those minutes (to UT-02:30), and the remaining 30 +# minutes followed in Decreto 679/974 of 1974-08-29. +# http://www.impo.com.uy/diariooficial/1974/01/22/11 +# http://www.impo.com.uy/diariooficial/1974/03/14/3 +# http://www.impo.com.uy/diariooficial/1974/09/04/6 +Rule Uruguay 1974 only - Jan 13 0:00 1:30 - +Rule Uruguay 1974 only - Mar 10 0:00 0:30 - +Rule Uruguay 1974 only - Sep 1 0:00 0 - +Rule Uruguay 1974 only - Dec 22 0:00 1:00 - +Rule Uruguay 1975 only - Mar 30 0:00 0 - +Rule Uruguay 1976 only - Dec 19 0:00 1:00 - +Rule Uruguay 1977 only - Mar 6 0:00 0 - +Rule Uruguay 1977 only - Dec 4 0:00 1:00 - +Rule Uruguay 1978 1979 - Mar Sun>=1 0:00 0 - +Rule Uruguay 1978 only - Dec 17 0:00 1:00 - +Rule Uruguay 1979 only - Apr 29 0:00 1:00 - +Rule Uruguay 1980 only - Mar 16 0:00 0 - +# From Tim Parenti (2018-02-15): +# Decreto 725/987 of 1987-12-04 cited "better use of national tourist +# attractions" to advance clocks one hour from Monday 1987-12-14 00:00. +# http://www.impo.com.uy/diariooficial/1988/01/25/1 +Rule Uruguay 1987 only - Dec 14 0:00 1:00 - +Rule Uruguay 1988 only - Feb 28 0:00 0 - +Rule Uruguay 1988 only - Dec 11 0:00 1:00 - +Rule Uruguay 1989 only - Mar 5 0:00 0 - +Rule Uruguay 1989 only - Oct 29 0:00 1:00 - +Rule Uruguay 1990 only - Feb 25 0:00 0 - +# From Tim Parenti (2018-02-15), per Paul Eggert (1999-11-04): +# IATA agrees as below for 1990-10 through 1993-02. Per Almanaque 2018, the +# 1992/1993 season appears to be the first in over half a century where DST +# both began and ended pursuant to the same decree. +Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 - +Rule Uruguay 1991 1992 - Mar Sun>=1 0:00 0 - +Rule Uruguay 1992 only - Oct 18 0:00 1:00 - Rule Uruguay 1993 only - Feb 28 0:00 0 - # From Eduardo Cota (2004-09-20): # The Uruguayan government has decreed a change in the local time.... -# http://www.presidencia.gub.uy/decretos/2004091502.htm -Rule Uruguay 2004 only - Sep 19 0:00 1:00 S +# From Tim Parenti (2018-02-15): +# Decreto 328/004 of 2004-09-15. +# http://www.impo.com.uy/diariooficial/2004/09/23/documentos.pdf#page=1 +Rule Uruguay 2004 only - Sep 19 0:00 1:00 - # From Steffen Thorsen (2005-03-11): # Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to # save energy ... it was postponed two weeks.... -# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm +# From Tim Parenti (2018-02-15): +# This 2005 postponement is not in Almanaque 2018. Go with the contemporaneous +# reporting, which is confirmed by Decreto 107/005 of 2005-03-10 amending +# Decreto 328/004: +# http://www.impo.com.uy/diariooficial/2005/03/15/documentos.pdf#page=1 +# The original decree specified a transition of 2005-03-12 24:00, but the new +# one specified 2005-03-27 02:00. Rule Uruguay 2005 only - Mar 27 2:00 0 - # From Eduardo Cota (2005-09-27): -# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF -# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at -# 02:00 local time, official time in Uruguay will be at GMT -2. -Rule Uruguay 2005 only - Oct 9 2:00 1:00 S -Rule Uruguay 2006 only - Mar 12 2:00 0 - -# From Jesper Nørgaard Welen (2006-09-06): -# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF -# +# ...from 2005-10-09 at 02:00 local time, until 2006-03-12 at 02:00 local time, +# official time in Uruguay will be at GMT -2. +# From Tim Parenti (2018-02-15): +# Decreto 318/005 of 2005-09-19. +# http://www.impo.com.uy/diariooficial/2005/09/23/documentos.pdf#page=1 +Rule Uruguay 2005 only - Oct 9 2:00 1:00 - +Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 - +# From Tim Parenti (2018-02-15), per Jesper Nørgaard Welen (2006-09-06): +# Decreto 311/006 of 2006-09-04 established regular DST from the first Sunday +# of October at 02:00 through the second Sunday of March at 02:00. Almanaque +# 2018 appears to have a few typoed dates through this period; ignore them. +# http://www.impo.com.uy/diariooficial/2006/09/08/documentos.pdf#page=1 +Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 - # From Steffen Thorsen (2015-06-30): # ... it looks like they will not be using DST the coming summer: # http://www.elobservador.com.uy/gobierno-resolvio-que-no-habra-cambio-horario-verano-n656787 @@ -1777,17 +1905,19 @@ Rule Uruguay 2006 only - Mar 12 2:00 0 - # instead of out to dinner. # From Pablo Camargo (2015-07-13): # http://archivo.presidencia.gub.uy/sci/decretos/2015/06/cons_min_201.pdf -# [dated 2015-06-29; repeals Decree 311/006 dated 2006-09-04] -Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 S -Rule Uruguay 2007 2015 - Mar Sun>=8 2:00 0 - +# From Tim Parenti (2018-02-15): +# Decreto 178/015 of 2015-06-29; repeals Decreto 311/006. # This Zone can be simplified once we assume zic %z. -Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 - -3:44:44 - MMT 1920 May 1 # Montevideo MT +Zone America/Montevideo -3:44:51 - LMT 1908 Jun 10 + -3:44:51 - MMT 1920 May 1 # Montevideo MT + -4:00 - -04 1923 Oct 1 -3:30 Uruguay -0330/-03 1942 Dec 14 + -3:00 Uruguay -03/-0230 1960 -3:00 Uruguay -03/-02 1968 - -3:00 Uruguay -03/-0230 1971 + -3:00 Uruguay -03/-0230 1970 -3:00 Uruguay -03/-02 1974 + -3:00 Uruguay -03/-0130 1974 Mar 10 -3:00 Uruguay -03/-0230 1974 Dec 22 -3:00 Uruguay -03/-02 diff --git a/make/data/tzdata/zone.tab b/make/data/tzdata/zone.tab index f6d9c667734..873737e06b8 100644 --- a/make/data/tzdata/zone.tab +++ b/make/data/tzdata/zone.tab @@ -452,7 +452,7 @@ US +593249-1394338 America/Yakutat Alaska - Yakutat US +643004-1652423 America/Nome Alaska (west) US +515248-1763929 America/Adak Aleutian Islands US +211825-1575130 Pacific/Honolulu Hawaii -UY -3453-05611 America/Montevideo +UY -345433-0561245 America/Montevideo UZ +3940+06648 Asia/Samarkand Uzbekistan (west) UZ +4120+06918 Asia/Tashkent Uzbekistan (east) VA +415408+0122711 Europe/Vatican diff --git a/make/jdk/netbeans/jmx/build.properties b/make/jdk/netbeans/jmx/build.properties index bd72037301e..38509a59384 100644 --- a/make/jdk/netbeans/jmx/build.properties +++ b/make/jdk/netbeans/jmx/build.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -34,8 +34,7 @@ includes=\ javax/management/ \ org/omg/stub/javax/management/ -excludes=\ - com/sun/jmx/snmp/ +excludes= jtreg.tests=\ com/sun/jmx/ \ diff --git a/make/launcher/Launcher-jdk.pack.gmk b/make/launcher/Launcher-jdk.pack.gmk index 51047c5fe6b..1e7debfda32 100644 --- a/make/launcher/Launcher-jdk.pack.gmk +++ b/make/launcher/Launcher-jdk.pack.gmk @@ -34,6 +34,25 @@ $(eval $(call SetupBuildLauncher, pack200, \ # The order of the object files on the link command line affects the size of the resulting # binary (at least on linux) which causes the size to differ between old and new build. +# Tell the compiler not to export any functions unless declared so in +# the source code. On Windows, this is the default and cannot be changed. +# On Mac, we have always exported all symbols, probably due to oversight +# and/or misunderstanding. To emulate this, don't hide any symbols +# by default. +# Also provide an override for non-conformant libraries. +ifeq ($(TOOLCHAIN_TYPE), gcc) + CXXFLAGS_JDKEXE += -fvisibility=hidden + LDFLAGS_JDKEXE += -Wl,--exclude-libs,ALL +else ifeq ($(TOOLCHAIN_TYPE), clang) + ifneq ($(OPENJDK_TARGET_OS), macosx) + CXXFLAGS_JDKEXE += -fvisibility=hidden + endif +else ifeq ($(TOOLCHAIN_TYPE), solstudio) + CXXFLAGS_JDKEXE += -xldscope=hidden +else ifeq ($(TOOLCHAIN_TYPE), xlc) + CXXFLAGS_JDKEXE += -qvisibility=hidden +endif + UNPACKEXE_SRC := $(TOPDIR)/src/jdk.pack/share/native/common-unpack \ $(TOPDIR)/src/jdk.pack/share/native/unpack200 UNPACKEXE_CFLAGS := -I$(TOPDIR)/src/jdk.pack/share/native/common-unpack \ @@ -58,21 +77,6 @@ else endif -UNPACK_MAPFILE_DIR := $(TOPDIR)/make/mapfiles/libunpack -UNPACK_MAPFILE_PLATFORM_FILE := \ - $(UNPACK_MAPFILE_DIR)/mapfile-vers-unpack200-$(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH) - -# The linker on older SuSE distros (e.g. on SLES 10) complains with: -# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." -# if feeded with a version script which contains named tags. -ifeq ($(USING_BROKEN_SUSE_LD), yes) - UNPACK_MAPFILE := $(UNPACK_MAPFILE_DIR)/mapfile-vers-unpack200.anonymous -else ifneq ($(wildcard $(UNPACK_MAPFILE_PLATFORM_FILE)), ) - UNPACK_MAPFILE := $(UNPACK_MAPFILE_PLATFORM_FILE) -else - UNPACK_MAPFILE := $(UNPACK_MAPFILE_DIR)/mapfile-vers-unpack200 -endif - $(eval $(call SetupJdkExecutable, BUILD_UNPACKEXE, \ NAME := unpack200, \ SRC := $(UNPACKEXE_SRC), \ @@ -84,7 +88,6 @@ $(eval $(call SetupJdkExecutable, BUILD_UNPACKEXE, \ CFLAGS_solaris := -KPIC, \ CFLAGS_macosx := -fPIC, \ DISABLED_WARNINGS_gcc := unused-result implicit-fallthrough, \ - MAPFILE := $(UNPACK_MAPFILE),\ LDFLAGS := $(UNPACKEXE_ZIPOBJS) \ $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ diff --git a/make/launcher/LauncherCommon.gmk b/make/launcher/LauncherCommon.gmk index 05cf6bc4c89..d7e3fa8cd6c 100644 --- a/make/launcher/LauncherCommon.gmk +++ b/make/launcher/LauncherCommon.gmk @@ -26,11 +26,9 @@ include JdkNativeCompilation.gmk ifeq ($(OPENJDK_TARGET_OS), macosx) - DISABLE_MAPFILES := true ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN) else ifeq ($(OPENJDK_TARGET_OS), windows) - DISABLE_MAPFILES := true endif ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib/jli) @@ -42,8 +40,27 @@ else endif endif +# Tell the compiler not to export any functions unless declared so in +# the source code. On Windows, this is the default and cannot be changed. +# On Mac, we have always exported all symbols, probably due to oversight +# and/or misunderstanding. To emulate this, don't hide any symbols +# by default. +# Also provide an override for non-conformant libraries. +ifeq ($(TOOLCHAIN_TYPE), gcc) + LAUNCHER_CFLAGS += -fvisibility=hidden + LDFLAGS_JDKEXE += -Wl,--exclude-libs,ALL +else ifeq ($(TOOLCHAIN_TYPE), clang) + ifneq ($(OPENJDK_TARGET_OS), macosx) + LAUNCHER_CFLAGS += -fvisibility=hidden + endif +else ifeq ($(TOOLCHAIN_TYPE), solstudio) + LAUNCHER_CFLAGS += -xldscope=hidden +else ifeq ($(TOOLCHAIN_TYPE), xlc) + LAUNCHER_CFLAGS += -qvisibility=hidden +endif + LAUNCHER_SRC := $(TOPDIR)/src/java.base/share/native/launcher -LAUNCHER_CFLAGS := -I$(TOPDIR)/src/java.base/share/native/launcher \ +LAUNCHER_CFLAGS += -I$(TOPDIR)/src/java.base/share/native/launcher \ -I$(TOPDIR)/src/java.base/share/native/libjli \ -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli \ -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libjli \ @@ -157,23 +174,6 @@ define SetupBuildLauncherBody $1_WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib endif - # The linker on older SuSE distros (e.g. on SLES 10) complains with: - # "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." - # if feeded with a version script which contains named tags. - ifeq ($(USING_BROKEN_SUSE_LD),yes) - ifneq ($(wildcard $(TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous), ) - $1_MAPFILE := $(TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous - else - $1_MAPFILE := - endif - else - ifneq ($(wildcard $(TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU)), ) - $1_MAPFILE := $(TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU) - else - $1_MAPFILE := - endif - endif - $$(eval $$(call SetupJdkExecutable, BUILD_LAUNCHER_$1, \ NAME := $1, \ EXTRA_FILES := $(LAUNCHER_SRC)/main.c, \ @@ -194,7 +194,6 @@ define SetupBuildLauncherBody -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \ LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \ -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \ - MAPFILE := $$($1_MAPFILE), \ LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \ LIBS_unix := $$($1_LIBS_unix), \ LIBS_linux := -lpthread -ljli $(LIBDL), \ diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk index 5edc62a8ff2..adc6c5826f8 100644 --- a/make/lib/Awt2dLibraries.gmk +++ b/make/lib/Awt2dLibraries.gmk @@ -651,10 +651,11 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \ LDFLAGS := $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ - LDFLAGS_macosx := -undefined dynamic_lookup, \ LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \ LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \ - LIBS_aix := -lawt_headless,\ + LIBS_aix := -lawt_headless, \ + LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation \ + -framework CoreGraphics, \ LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ $(WIN_AWT_LIB), \ )) @@ -665,6 +666,10 @@ ifneq (, $(findstring $(OPENJDK_TARGET_OS), solaris aix)) $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT_HEADLESS) endif +ifeq ($(OPENJDK_TARGET_OS), macosx) + $(BUILD_LIBFONTMANAGER): $(call FindLib, java.desktop, awt_lwawt) +endif + ifeq ($(FREETYPE_TO_USE), bundled) $(BUILD_LIBFONTMANAGER): $(BUILD_LIBFREETYPE) endif @@ -993,6 +998,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx) -I$(TOPDIR)/src/java.base/share/native/libjava \ -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \ -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \ + DISABLED_WARNINGS_clang := deprecated-declarations, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN) \ -Wl$(COMMA)-rpath$(COMMA)@loader_path \ diff --git a/make/lib/Lib-java.desktop.gmk b/make/lib/Lib-java.desktop.gmk index 2144c8b6e04..0c682a46070 100644 --- a/make/lib/Lib-java.desktop.gmk +++ b/make/lib/Lib-java.desktop.gmk @@ -105,7 +105,8 @@ ifeq ($(OPENJDK_TARGET_OS), macosx) CFLAGS := $(CFLAGS_JDKLIB) \ $(addprefix -I, $(LIBOSXAPP_SRC)) \ -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \ - DISABLED_WARNINGS_clang := objc-method-access objc-root-class, \ + DISABLED_WARNINGS_clang := objc-method-access objc-root-class \ + deprecated-declarations, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ LIBS := \ diff --git a/make/mapfiles/launchers/mapfile-ppc64 b/make/mapfiles/launchers/mapfile-ppc64 deleted file mode 100644 index fb4ceb5cd3a..00000000000 --- a/make/mapfiles/launchers/mapfile-ppc64 +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# -# -# Specify what global symbols we export. Note that we're not really -# interested in declaring a version, simply scoping the file is sufficient. -# - -SUNWprivate_1.1 { - global: - main; # Provides basic adb symbol offsets - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; - - local: - *; -}; diff --git a/make/mapfiles/launchers/mapfile-ppc64.anonymous b/make/mapfiles/launchers/mapfile-ppc64.anonymous deleted file mode 100644 index 4fcde94d1d8..00000000000 --- a/make/mapfiles/launchers/mapfile-ppc64.anonymous +++ /dev/null @@ -1,40 +0,0 @@ -# -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# -# -# Define anonymous library interface (i.e. without a version tag) for broken SuSE ld because -# the linker on older SuSE distros (e.g. on SLES 10) complains with: -# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." -# if feeded with a version script which contains named tags. - -{ - global: - main; # Provides basic adb symbol offsets - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; - - local: - *; -}; diff --git a/make/mapfiles/launchers/mapfile-sparc b/make/mapfiles/launchers/mapfile-sparc deleted file mode 100644 index b699b6571c6..00000000000 --- a/make/mapfiles/launchers/mapfile-sparc +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# -# Specify what global symbols we export. Note that we're not really -# interested in declaring a version, simply scoping the file is sufficient. -# - -SUNWprivate_1.1 { - global: - main; # Provides basic adb symbol offsets - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; - ___Argv; # The following are private, but as they are - _start; # exported from ctr1/crtn, the clever hacker - _init; # might know about them. However note, that - _fini; # their use is strictly not supported. - _lib_version; - __cg92_used; - __xargc; - __xargv; - __fsr_init_value; - - local: - *; -}; diff --git a/make/mapfiles/launchers/mapfile-sparcv9 b/make/mapfiles/launchers/mapfile-sparcv9 deleted file mode 100644 index 59e89b38ed4..00000000000 --- a/make/mapfiles/launchers/mapfile-sparcv9 +++ /dev/null @@ -1,48 +0,0 @@ -# -# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# -# Specify what global symbols we export. Note that we're not really -# interested in declaring a version, simply scoping the file is sufficient. -# - -SUNWprivate_1.1 { - global: - main; # Provides basic adb symbol offsets - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; - ___Argv; # The following are private, but as they are - _start; # exported from ctr1/crtn, the clever hacker - _init; # might know about them. However note, that - _fini; # their use is strictly not supported. - _lib_version; - __xargc; - __xargv; - __fsr_init_value; - - local: - *; -}; diff --git a/make/mapfiles/launchers/mapfile-x86 b/make/mapfiles/launchers/mapfile-x86 deleted file mode 100644 index dcda7f94957..00000000000 --- a/make/mapfiles/launchers/mapfile-x86 +++ /dev/null @@ -1,48 +0,0 @@ -# -# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# -# -# Specify what global symbols we export. Note that we're not really -# interested in declaring a version, simply scoping the file is sufficient. -# - -SUNWprivate_1.1 { - global: - main; # Provides basic adb symbol offsets - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; - ___Argv; # The following are private, but as they are - _start; # exported from ctr1/crtn, the clever hacker - _init; # might know about them. However note, that - _fini; # their use is strictly not supported. - _lib_version; -# _mcount; - __fsr; - __fsr_init_value; - __longdouble_used; - - local: - *; -}; diff --git a/make/mapfiles/launchers/mapfile-x86.anonymous b/make/mapfiles/launchers/mapfile-x86.anonymous deleted file mode 100644 index 49032cd10df..00000000000 --- a/make/mapfiles/launchers/mapfile-x86.anonymous +++ /dev/null @@ -1,49 +0,0 @@ -# -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# -# -# Define anonymous library interface (i.e. without a version tag) for broken SuSE ld because -# the linker on older SuSE distros (e.g. on SLES 10) complains with: -# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." -# if feeded with a version script which contains named tags. - -{ - global: - main; # Provides basic adb symbol offsets - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; - ___Argv; # The following are private, but as they are - _start; # exported from ctr1/crtn, the clever hacker - _init; # might know about them. However note, that - _fini; # their use is strictly not supported. - _lib_version; -# _mcount; - __fsr; - __fsr_init_value; - __longdouble_used; - - local: - *; -}; diff --git a/make/mapfiles/launchers/mapfile-x86_64 b/make/mapfiles/launchers/mapfile-x86_64 deleted file mode 100644 index 5700d67f2a0..00000000000 --- a/make/mapfiles/launchers/mapfile-x86_64 +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# -# -# Specify what global symbols we export. Note that we're not really -# interested in declaring a version, simply scoping the file is sufficient. -# - -SUNWprivate_1.1 { - global: - main; # Provides basic adb symbol offsets - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; - - # These are needed by the c runtime in SS12u4 - ___Argv; - __xargv; - __xargc; - _start; - __longdouble_used; - _lib_version; - - local: - *; -}; diff --git a/make/mapfiles/launchers/mapfile-x86_64.anonymous b/make/mapfiles/launchers/mapfile-x86_64.anonymous deleted file mode 100644 index 4fcde94d1d8..00000000000 --- a/make/mapfiles/launchers/mapfile-x86_64.anonymous +++ /dev/null @@ -1,40 +0,0 @@ -# -# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# -# -# Define anonymous library interface (i.e. without a version tag) for broken SuSE ld because -# the linker on older SuSE distros (e.g. on SLES 10) complains with: -# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." -# if feeded with a version script which contains named tags. - -{ - global: - main; # Provides basic adb symbol offsets - environ; # Public symbols and required by Java run time - _environ; - __environ_lock; - - local: - *; -}; diff --git a/make/mapfiles/libunpack/mapfile-vers-unpack200 b/make/mapfiles/libunpack/mapfile-vers-unpack200 deleted file mode 100644 index 6b082505878..00000000000 --- a/make/mapfiles/libunpack/mapfile-vers-unpack200 +++ /dev/null @@ -1,31 +0,0 @@ -# -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# Define library interface. - -SUNWprivate_1.1 { - local: - *; -}; diff --git a/make/mapfiles/libunpack/mapfile-vers-unpack200-solaris-sparc b/make/mapfiles/libunpack/mapfile-vers-unpack200-solaris-sparc deleted file mode 100644 index d8942de5c25..00000000000 --- a/make/mapfiles/libunpack/mapfile-vers-unpack200-solaris-sparc +++ /dev/null @@ -1,42 +0,0 @@ -# -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# Define library interface. - -SUNWprivate_1.1 { - global: - # These are needed by the c runtime in SS12u4 - environ; - _environ; - __environ_lock; - ___Argv; - __xargv; - __xargc; - _start; - _lib_version; - - local: - *; -}; diff --git a/make/mapfiles/libunpack/mapfile-vers-unpack200-solaris-x86 b/make/mapfiles/libunpack/mapfile-vers-unpack200-solaris-x86 deleted file mode 100644 index 4192b939cfd..00000000000 --- a/make/mapfiles/libunpack/mapfile-vers-unpack200-solaris-x86 +++ /dev/null @@ -1,43 +0,0 @@ -# -# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# Define library interface. - -SUNWprivate_1.1 { - global: - # These are needed by the c runtime in SS12u4 - environ; - _environ; - __environ_lock; - ___Argv; - __xargv; - __xargc; - _start; - __longdouble_used; - _lib_version; - - local: - *; -}; diff --git a/make/mapfiles/libunpack/mapfile-vers-unpack200.anonymous b/make/mapfiles/libunpack/mapfile-vers-unpack200.anonymous deleted file mode 100644 index 7f3a07934bd..00000000000 --- a/make/mapfiles/libunpack/mapfile-vers-unpack200.anonymous +++ /dev/null @@ -1,34 +0,0 @@ -# -# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# Define anonymous library interface (i.e. without a version tag) for broken SuSE ld because -# the linker on older SuSE distros (e.g. on SLES 10) complains with: -# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." -# if feeded with a version script which contains named tags. - -{ - local: - *; -}; diff --git a/src/java.base/linux/classes/sun/nio/ch/EPollSelectorImpl.java b/src/java.base/linux/classes/sun/nio/ch/EPollSelectorImpl.java index f54ab1a6fec..8996b3c3a64 100644 --- a/src/java.base/linux/classes/sun/nio/ch/EPollSelectorImpl.java +++ b/src/java.base/linux/classes/sun/nio/ch/EPollSelectorImpl.java @@ -63,20 +63,14 @@ class EPollSelectorImpl extends SelectorImpl { // maps file descriptor to selection key, synchronize on selector private final Map fdToKey = new HashMap<>(); - // pending new registrations/updates, queued by implRegister and putEventOpos + // pending new registrations/updates, queued by setEventOps private final Object updateLock = new Object(); - private final Deque newKeys = new ArrayDeque<>(); private final Deque updateKeys = new ArrayDeque<>(); - private final Deque updateEvents = new ArrayDeque<>(); // interrupt triggering and clearing private final Object interruptLock = new Object(); private boolean interruptTriggered; - /** - * Package private constructor called by factory method in - * the abstract superclass Selector. - */ EPollSelectorImpl(SelectorProvider sp) throws IOException { super(sp); @@ -140,30 +134,21 @@ class EPollSelectorImpl extends SelectorImpl { } /** - * Process new registrations and changes to the interest ops. + * Process changes to the interest ops. */ private void processUpdateQueue() { assert Thread.holdsLock(this); synchronized (updateLock) { SelectionKeyImpl ski; - - // new registrations - while ((ski = newKeys.pollFirst()) != null) { - if (ski.isValid()) { - int fd = ski.channel.getFDVal(); - SelectionKeyImpl previous = fdToKey.put(fd, ski); - assert previous == null; - assert ski.registeredEvents() == 0; - } - } - - // changes to interest ops - assert updateKeys.size() == updateEvents.size(); while ((ski = updateKeys.pollFirst()) != null) { - int newEvents = updateEvents.pollFirst(); - int fd = ski.channel.getFDVal(); - if (ski.isValid() && fdToKey.containsKey(fd)) { + if (ski.isValid()) { + int fd = ski.getFDVal(); + // add to fdToKey if needed + SelectionKeyImpl previous = fdToKey.putIfAbsent(fd, ski); + assert (previous == null) || (previous == ski); + + int newEvents = ski.translateInterestOps(); int registeredEvents = ski.registeredEvents(); if (newEvents != registeredEvents) { if (newEvents == 0) { @@ -206,11 +191,11 @@ class EPollSelectorImpl extends SelectorImpl { if (ski != null) { int rOps = EPoll.getEvents(event); if (selectedKeys.contains(ski)) { - if (ski.channel.translateAndSetReadyOps(rOps, ski)) { + if (ski.translateAndUpdateReadyOps(rOps)) { numKeysUpdated++; } } else { - ski.channel.translateAndSetReadyOps(rOps, ski); + ski.translateAndSetReadyOps(rOps); if ((ski.nioReadyOps() & ski.nioInterestOps()) != 0) { selectedKeys.add(ski); numKeysUpdated++; @@ -243,20 +228,12 @@ class EPollSelectorImpl extends SelectorImpl { FileDispatcherImpl.closeIntFD(fd1); } - @Override - protected void implRegister(SelectionKeyImpl ski) { - ensureOpen(); - synchronized (updateLock) { - newKeys.addLast(ski); - } - } - @Override protected void implDereg(SelectionKeyImpl ski) throws IOException { assert !ski.isValid(); assert Thread.holdsLock(this); - int fd = ski.channel.getFDVal(); + int fd = ski.getFDVal(); if (fdToKey.remove(fd) != null) { if (ski.registeredEvents() != 0) { EPoll.ctl(epfd, EPOLL_CTL_DEL, fd, 0); @@ -268,10 +245,9 @@ class EPollSelectorImpl extends SelectorImpl { } @Override - public void putEventOps(SelectionKeyImpl ski, int events) { + public void setEventOps(SelectionKeyImpl ski) { ensureOpen(); synchronized (updateLock) { - updateEvents.addLast(events); // events first in case adding key fails updateKeys.addLast(ski); } } diff --git a/src/java.base/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java b/src/java.base/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java index 63804f01846..6215b1388e2 100644 --- a/src/java.base/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java +++ b/src/java.base/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java @@ -62,11 +62,9 @@ class KQueueSelectorImpl extends SelectorImpl { // maps file descriptor to selection key, synchronize on selector private final Map fdToKey = new HashMap<>(); - // pending new registrations/updates, queued by implRegister and putEventOps + // pending new registrations/updates, queued by setEventOps private final Object updateLock = new Object(); - private final Deque newKeys = new ArrayDeque<>(); private final Deque updateKeys = new ArrayDeque<>(); - private final Deque updateEvents = new ArrayDeque<>(); // interrupt triggering and clearing private final Object interruptLock = new Object(); @@ -138,30 +136,21 @@ class KQueueSelectorImpl extends SelectorImpl { } /** - * Process new registrations and changes to the interest ops. + * Process changes to the interest ops. */ private void processUpdateQueue() { assert Thread.holdsLock(this); synchronized (updateLock) { SelectionKeyImpl ski; - - // new registrations - while ((ski = newKeys.pollFirst()) != null) { - if (ski.isValid()) { - int fd = ski.channel.getFDVal(); - SelectionKeyImpl previous = fdToKey.put(fd, ski); - assert previous == null; - assert ski.registeredEvents() == 0; - } - } - - // changes to interest ops - assert updateKeys.size() == updateKeys.size(); while ((ski = updateKeys.pollFirst()) != null) { - int newEvents = updateEvents.pollFirst(); - int fd = ski.channel.getFDVal(); - if (ski.isValid() && fdToKey.containsKey(fd)) { + if (ski.isValid()) { + int fd = ski.getFDVal(); + // add to fdToKey if needed + SelectionKeyImpl previous = fdToKey.putIfAbsent(fd, ski); + assert (previous == null) || (previous == ski); + + int newEvents = ski.translateInterestOps(); int registeredEvents = ski.registeredEvents(); if (newEvents != registeredEvents) { @@ -227,18 +216,15 @@ class KQueueSelectorImpl extends SelectorImpl { } if (selectedKeys.contains(ski)) { - // file descriptor may be polled more than once per poll - if (ski.lastPolled != pollCount) { - if (ski.channel.translateAndSetReadyOps(rOps, ski)) { + if (ski.translateAndUpdateReadyOps(rOps)) { + // file descriptor may be polled more than once per poll + if (ski.lastPolled != pollCount) { numKeysUpdated++; ski.lastPolled = pollCount; } - } else { - // ready ops have already been set on this update - ski.channel.translateAndUpdateReadyOps(rOps, ski); } } else { - ski.channel.translateAndSetReadyOps(rOps, ski); + ski.translateAndSetReadyOps(rOps); if ((ski.nioReadyOps() & ski.nioInterestOps()) != 0) { selectedKeys.add(ski); numKeysUpdated++; @@ -272,20 +258,12 @@ class KQueueSelectorImpl extends SelectorImpl { FileDispatcherImpl.closeIntFD(fd1); } - @Override - protected void implRegister(SelectionKeyImpl ski) { - ensureOpen(); - synchronized (updateLock) { - newKeys.addLast(ski); - } - } - @Override protected void implDereg(SelectionKeyImpl ski) throws IOException { assert !ski.isValid(); assert Thread.holdsLock(this); - int fd = ski.channel.getFDVal(); + int fd = ski.getFDVal(); int registeredEvents = ski.registeredEvents(); if (fdToKey.remove(fd) != null) { if (registeredEvents != 0) { @@ -301,10 +279,9 @@ class KQueueSelectorImpl extends SelectorImpl { } @Override - public void putEventOps(SelectionKeyImpl ski, int events) { + public void setEventOps(SelectionKeyImpl ski) { ensureOpen(); synchronized (updateLock) { - updateEvents.addLast(events); // events first in case adding key fails updateKeys.addLast(ski); } } diff --git a/src/java.base/share/classes/java/lang/Class.java b/src/java.base/share/classes/java/lang/Class.java index cf34ff2d86e..ef959d6a97d 100644 --- a/src/java.base/share/classes/java/lang/Class.java +++ b/src/java.base/share/classes/java/lang/Class.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -3529,7 +3529,7 @@ public final class Class implements java.io.Serializable, if (universe == null) throw new IllegalArgumentException( getName() + " is not an enum type"); - directory = new HashMap<>(2 * universe.length); + directory = new HashMap<>((int)(universe.length / 0.75f) + 1); for (T constant : universe) { directory.put(((Enum)constant).name(), constant); } diff --git a/src/java.base/share/classes/java/lang/ClassLoader.java b/src/java.base/share/classes/java/lang/ClassLoader.java index cb6193f2b1f..a31d40a3d48 100644 --- a/src/java.base/share/classes/java/lang/ClassLoader.java +++ b/src/java.base/share/classes/java/lang/ClassLoader.java @@ -699,7 +699,7 @@ public abstract class ClassLoader { /** * Finds the class with the given binary name * in a module defined to this class loader. - * Class loader implementations that support the loading from modules + * Class loader implementations that support loading from modules * should override this method. * * @apiNote This method returns {@code null} rather than throwing @@ -1281,7 +1281,7 @@ public abstract class ClassLoader { /** * Returns a URL to a resource in a module defined to this class loader. - * Class loader implementations that support the loading from modules + * Class loader implementations that support loading from modules * should override this method. * * @apiNote This method is the basis for the {@link @@ -1417,12 +1417,12 @@ public abstract class ClassLoader { * @param name * The resource name * - * @return An enumeration of {@link java.net.URL URL} objects for - * the resource. If no resources could be found, the enumeration - * will be empty. Resources for which a {@code URL} cannot be - * constructed, are in package that is not opened unconditionally, - * or access to the resource is denied by the security manager, - * are not returned in the enumeration. + * @return An enumeration of {@link java.net.URL URL} objects for the + * resource. If no resources could be found, the enumeration will + * be empty. Resources for which a {@code URL} cannot be + * constructed, are in a package that is not opened + * unconditionally, or access to the resource is denied by the + * security manager, are not returned in the enumeration. * * @throws IOException * If I/O errors occur diff --git a/src/java.base/share/classes/java/lang/ModuleLayer.java b/src/java.base/share/classes/java/lang/ModuleLayer.java index 3dc809632c7..f4ea6553e52 100644 --- a/src/java.base/share/classes/java/lang/ModuleLayer.java +++ b/src/java.base/share/classes/java/lang/ModuleLayer.java @@ -152,7 +152,7 @@ public final class ModuleLayer { private static final ModuleLayer EMPTY_LAYER = new ModuleLayer(Configuration.empty(), List.of(), null); - // the configuration from which this ;ayer was created + // the configuration from which this layer was created private final Configuration cf; // parent layers, empty in the case of the empty layer @@ -498,7 +498,7 @@ public final class ModuleLayer { try { Loader loader = new Loader(cf.modules(), parentLoader); loader.initRemotePackageMap(cf, parents); - ModuleLayer layer = new ModuleLayer(cf, parents, mn -> loader); + ModuleLayer layer = new ModuleLayer(cf, parents, mn -> loader); return new Controller(layer); } catch (IllegalArgumentException | IllegalStateException e) { throw new LayerInstantiationException(e.getMessage()); diff --git a/src/java.base/share/classes/java/lang/SecurityManager.java b/src/java.base/share/classes/java/lang/SecurityManager.java index 35e30c06cb1..74da4daeda5 100644 --- a/src/java.base/share/classes/java/lang/SecurityManager.java +++ b/src/java.base/share/classes/java/lang/SecurityManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -235,19 +235,6 @@ public class SecurityManager { */ private boolean initialized = false; - - /** - * returns true if the current context has been granted AllPermission - */ - private boolean hasAllPermission() { - try { - checkPermission(SecurityConstants.ALL_PERMISSION); - return true; - } catch (SecurityException se) { - return false; - } - } - /** * Constructs a new SecurityManager. * @@ -1080,28 +1067,6 @@ public class SecurityManager { SecurityConstants.PROPERTY_READ_ACTION)); } - /** - * Returns {@code true} if the calling thread has {@code AllPermission}. - * - * @param window not used except to check if it is {@code null}. - * @return {@code true} if the calling thread has {@code AllPermission}. - * @exception NullPointerException if the {@code window} argument is - * {@code null}. - * @deprecated This method was originally used to check if the calling thread - * was trusted to bring up a top-level window. The method has been - * obsoleted and code should instead use {@link #checkPermission} - * to check {@code AWTPermission("showWindowWithoutWarningBanner")}. - * This method is subject to removal in a future version of Java SE. - * @see #checkPermission(java.security.Permission) checkPermission - */ - @Deprecated(since="1.8", forRemoval=true) - public boolean checkTopLevelWindow(Object window) { - if (window == null) { - throw new NullPointerException("window can't be null"); - } - return hasAllPermission(); - } - /** * Throws a SecurityException if the * calling thread is not allowed to initiate a print job request. @@ -1124,44 +1089,6 @@ public class SecurityManager { checkPermission(new RuntimePermission("queuePrintJob")); } - /** - * Throws {@code SecurityException} if the calling thread does - * not have {@code AllPermission}. - * - * @since 1.1 - * @exception SecurityException if the calling thread does not have - * {@code AllPermission} - * @deprecated This method was originally used to check if the calling - * thread could access the system clipboard. The method has been - * obsoleted and code should instead use {@link #checkPermission} - * to check {@code AWTPermission("accessClipboard")}. - * This method is subject to removal in a future version of Java SE. - * @see #checkPermission(java.security.Permission) checkPermission - */ - @Deprecated(since="1.8", forRemoval=true) - public void checkSystemClipboardAccess() { - checkPermission(SecurityConstants.ALL_PERMISSION); - } - - /** - * Throws {@code SecurityException} if the calling thread does - * not have {@code AllPermission}. - * - * @since 1.1 - * @exception SecurityException if the calling thread does not have - * {@code AllPermission} - * @deprecated This method was originally used to check if the calling - * thread could access the AWT event queue. The method has been - * obsoleted and code should instead use {@link #checkPermission} - * to check {@code AWTPermission("accessEventQueue")}. - * This method is subject to removal in a future version of Java SE. - * @see #checkPermission(java.security.Permission) checkPermission - */ - @Deprecated(since="1.8", forRemoval=true) - public void checkAwtEventQueueAccess() { - checkPermission(SecurityConstants.ALL_PERMISSION); - } - /* * We have an initial invalid bit (initially false) for the class * variables which tell if the cache is valid. If the underlying @@ -1474,35 +1401,6 @@ public class SecurityManager { checkPermission(new RuntimePermission("setFactory")); } - /** - * Throws a {@code SecurityException} if the calling thread does - * not have {@code AllPermission}. - * - * @param clazz the class that reflection is to be performed on. - * @param which type of access, PUBLIC or DECLARED. - * @throws SecurityException if the caller does not have - * {@code AllPermission} - * @throws NullPointerException if the {@code clazz} argument is - * {@code null} - * @deprecated This method was originally used to check if the calling - * thread was allowed to access members. It relied on the - * caller being at a stack depth of 4 which is error-prone and - * cannot be enforced by the runtime. The method has been - * obsoleted and code should instead use - * {@link #checkPermission} to check - * {@code RuntimePermission("accessDeclaredMembers")}. This - * method is subject to removal in a future version of Java SE. - * @since 1.1 - * @see #checkPermission(java.security.Permission) checkPermission - */ - @Deprecated(since="1.8", forRemoval=true) - public void checkMemberAccess(Class clazz, int which) { - if (clazz == null) { - throw new NullPointerException("class can't be null"); - } - checkPermission(SecurityConstants.ALL_PERMISSION); - } - /** * Determines whether the permission with the specified permission target * name should be granted or denied. diff --git a/src/java.base/share/classes/java/lang/invoke/VarHandle.java b/src/java.base/share/classes/java/lang/invoke/VarHandle.java index 1b4e1a975ff..d6eca54cc0d 100644 --- a/src/java.base/share/classes/java/lang/invoke/VarHandle.java +++ b/src/java.base/share/classes/java/lang/invoke/VarHandle.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1788,10 +1788,12 @@ public abstract class VarHandle { static final Map methodNameToAccessMode; static { - // Initial capacity of # values is sufficient to avoid resizes - // for the smallest table size (32) - methodNameToAccessMode = new HashMap<>(AccessMode.values().length); - for (AccessMode am : AccessMode.values()) { + AccessMode[] values = AccessMode.values(); + // Initial capacity of # values divided by the load factor is sufficient + // to avoid resizes for the smallest table size (64) + int initialCapacity = (int)(values.length / 0.75f) + 1; + methodNameToAccessMode = new HashMap<>(initialCapacity); + for (AccessMode am : values) { methodNameToAccessMode.put(am.methodName, am); } } diff --git a/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java b/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java index 626c5200606..cb578423cba 100644 --- a/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java +++ b/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java @@ -1742,7 +1742,7 @@ public class ModuleDescriptor throw new IllegalArgumentException("Empty target set"); if (strict) { requirePackageName(e.source()); - targets.stream().forEach(Checks::requireModuleName); + targets.forEach(Checks::requireModuleName); } return exports(e); } @@ -1878,7 +1878,7 @@ public class ModuleDescriptor throw new IllegalArgumentException("Empty target set"); if (strict) { requirePackageName(opens.source()); - targets.stream().forEach(Checks::requireModuleName); + targets.forEach(Checks::requireModuleName); } return opens(opens); } diff --git a/src/java.base/share/classes/java/lang/reflect/Proxy.java b/src/java.base/share/classes/java/lang/reflect/Proxy.java index 27d33a83d17..456527dd19b 100644 --- a/src/java.base/share/classes/java/lang/reflect/Proxy.java +++ b/src/java.base/share/classes/java/lang/reflect/Proxy.java @@ -593,8 +593,7 @@ public class Proxy implements java.io.Serializable { module.getName(), cn, loader); } if (isDebug("debug")) { - interfaces.stream() - .forEach(c -> System.out.println(toDetails(c))); + interfaces.forEach(c -> System.out.println(toDetails(c))); } } diff --git a/src/java.base/share/classes/java/net/InetAddress.java b/src/java.base/share/classes/java/net/InetAddress.java index 84a0c578f5f..044f326e6eb 100644 --- a/src/java.base/share/classes/java/net/InetAddress.java +++ b/src/java.base/share/classes/java/net/InetAddress.java @@ -290,7 +290,10 @@ class InetAddress implements java.io.Serializable { /* Used to store the name service provider */ private static transient NameService nameService = null; - /* Used to store the best available hostname */ + /** + * Used to store the best available hostname. + * Lazily initialized via a data race; safe because Strings are immutable. + */ private transient String canonicalHostName = null; /** use serialVersionUID from JDK 1.0.2 for interoperability */ @@ -622,11 +625,11 @@ class InetAddress implements java.io.Serializable { * @since 1.4 */ public String getCanonicalHostName() { - if (canonicalHostName == null) { - canonicalHostName = + String value = canonicalHostName; + if (value == null) + canonicalHostName = value = InetAddress.getHostFromNameService(this, true); - } - return canonicalHostName; + return value; } /** diff --git a/src/java.base/share/classes/java/net/URL.java b/src/java.base/share/classes/java/net/URL.java index 2917be133bd..e8af5b528cb 100644 --- a/src/java.base/share/classes/java/net/URL.java +++ b/src/java.base/share/classes/java/net/URL.java @@ -1411,7 +1411,7 @@ public final class URL implements java.io.Serializable { // Check with factory if another thread set a // factory since our last check if (!checkedWithFactory && (fac = factory) != null) { - handler2 = fac.createURLStreamHandler(protocol); + handler2 = fac.createURLStreamHandler(protocol); } if (handler2 != null) { diff --git a/src/java.base/share/classes/java/net/URLClassLoader.java b/src/java.base/share/classes/java/net/URLClassLoader.java index 4bf6666b0f3..37a05aabc35 100644 --- a/src/java.base/share/classes/java/net/URLClassLoader.java +++ b/src/java.base/share/classes/java/net/URLClassLoader.java @@ -764,7 +764,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable { path = ParseUtil.decode(path); if (path.endsWith(File.separator)) path += "-"; - p = new FilePermission(path, SecurityConstants.FILE_READ_ACTION); + p = new FilePermission(path, SecurityConstants.FILE_READ_ACTION); } else { /** * Not loading from a 'file:' URL so we want to give the class diff --git a/src/java.base/share/classes/java/net/doc-files/net-properties.html b/src/java.base/share/classes/java/net/doc-files/net-properties.html index acf653ebaed..f6f87b8edc3 100644 --- a/src/java.base/share/classes/java/net/doc-files/net-properties.html +++ b/src/java.base/share/classes/java/net/doc-files/net-properties.html @@ -1,6 +1,6 @@