From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out-no.shaw.ca (smtp-out-no.shaw.ca [64.59.134.13]) by sourceware.org (Postfix) with ESMTPS id 491D739A2814 for ; Thu, 10 Jun 2021 02:36:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 491D739A2814 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=SystematicSw.ab.ca Authentication-Results: sourceware.org; spf=none smtp.mailfrom=systematicsw.ab.ca Received: from [192.168.1.104] ([68.147.0.90]) by shaw.ca with ESMTP id rAYql6snAMrQqrAYrld23O; Wed, 09 Jun 2021 20:36:50 -0600 X-Authority-Analysis: v=2.4 cv=Nv6yz+RJ c=1 sm=1 tr=0 ts=60c17ac2 a=T+ovY1NZ+FAi/xYICV7Bgg==:117 a=T+ovY1NZ+FAi/xYICV7Bgg==:17 a=IkcTkHD0fZMA:10 a=8AHkEIZyAAAA:8 a=w_pzkKWiAAAA:8 a=yMhMjlubAAAA:8 a=uZvujYp8AAAA:8 a=CCpqsmhAAAAA:8 a=ML6A-KbsBGLG3DIr0_UA:9 a=QEXdDO2ut3YA:10 a=otTE43H4AhkA:10 a=AomDDAB-fV4A:10 a=sRI3_1zDfAgwuvI8zelB:22 a=SLzB8X_8jTLwj6mN0q5r:22 a=ul9cdbp4aOFLsgKbc677:22 Reply-To: cygwin@cygwin.com To: cygwin@cygwin.com References: From: Brian Inglis Organization: Systematic Software Subject: Re: Python for Windows reports wrong local time when run under Cygwin on Europe/Moscow TZ Message-ID: <02d5b40f-aa35-f56c-5c5c-b10780355e91@SystematicSw.ab.ca> Date: Wed, 9 Jun 2021 20:36:48 -0600 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-CA Content-Transfer-Encoding: 8bit X-CMAE-Envelope: MS4xfGJmAAOlubBZ5HvkCN7yG/B55RFvgGtlwTVm8e6ZiVz5Xd/xALqtyPlp4vZv+ztOWwcnj1oM0Qu2AmA68zpmG8micfXpRmPhf0y6wZoFlUjYz5G2pfC0 gvlOcmIZ9oht9r5FBevIlfWorE15/2jkx3Rh2/Th5btOQEJ+0tgvrUZBm6fGaRzwmck2uATxzFScgDIRhv5TkpDogb/hTEiKPvo= X-Spam-Status: No, score=-3487.8 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jun 2021 02:36:53 -0000 On 2021-06-09 16:31, Keith Thompson via Cygwin wrote: > [Sorry if the threading is messed up. I don't subscribe, so I'm > constructing this message from the web interface. It should at least > show up under the correct subject.] > > Brian Inglis wrote: >> On 2021-06-08 14:03, Mike Kaganski via Cygwin wrote: >>> On 08.06.2021 16:04, L A Walsh wrote: >>>> You might ask on a python list if anyone else has experienced >>>> something similar with python or any other program. I'm fairly sure >>>> that neither MS nor cygwin design their OS with python in mind and >>>> that it is python that is interacting funny when running under some >>>> merge of both. Have you asked the python people about this problem? >>>> What did they suggest? >>> >>> FTR: filed https://bugs.python.org/issue44352. >> >> See Keith Thompson subthread and my reply with suggested fix: >> >> https://cygwin.com/pipermail/cygwin/2021-June/248692.html >> >> Windows does not recognize zoneinfo time zone identifiers in TZ only >> base format POSIX TZ strings with three alphabetic character identifiers: >> >> https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset?view=msvc-160 >> >> That assumes US switch date "rules": for all years up to current, or >> just DST, and whether pre- or post-2007 is unstated! >> >> Otherwise it defaults to regional settings, used by Cygwin to map to >> zoneinfo time zone identifiers, so if Python for Windows could clear TZ >> before it is read by MSVCRT, it should DTRT. >> >> Windows does not recognize expanded POSIX TZ format strings with <> >> quoted alphanumeric characters, "-", "+", and start and end dates/times: >> >> https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#bottom >> >> which make them usable outside of the US. > > Summary: IMHO Cygwin should adapt its default TZ setting to work > with Windows. > > The suggestion is to modify Python for Windows so it can deal with > the TZ format used by Cygwin. I haven't used Python for Windows, but > as far as I know it's unrelated to Cygwin; rather it, like Cygwin, is > intended to work on top of Windows. I'm not convinced it's appropriate > to ask Python for Windows to make a change purely for the sake of > interoperating with Cygwin, which many PfW users presumably aren't > even using. > > I've run into another application that has problems with Cygwin's > settings of $TZ. It was a internal test application that isn't > going to change its timezone handling just for this problem. > > The ideal solution would be for Windows to recognize TZ values like > "America/Los_Angeles", but that's not likely to happen any time soon. > > My suggestion, since Cygwin is supposed to interoperate with Windows, > is one of the following: > > - Cygwin should avoid setting TZ to a value that Windows doesn't recognize > (if I set TZ=PST8PDT, everything seems to work correctly); OR > > - Cygwin shouldn't set TZ at all by default. (I've updated my > $HOME/.bash_profile on Cygwin to unset TZ, and Cygwin commands seem > to work correctly with TZ unset); OR > > - Cygwin, when invoking a non-Cygwin executable, should first either > unset TZ or translate it to a format that Windows will recognize. > I have no idea how difficult that would be. Impossible to set Windows TZ usefully as it obeys unstated US DST rules (like posixrules, perhaps 2007+?), and may have limits on hour offset magnitudes. MS libraries are stuck at POSIX 1996 and C 99 subset compatibility, but non-standard-conformant including which headers contain definitions: https://docs.microsoft.com/en-us/cpp/c-runtime-library/compatibility?view=msvc-160 It may be possible to unset TZ when running non-Cygwin programs (possibly behind a CYGWIN env var setting e.g. winnotz) by adding TZ= to conv_envvars, and writing new helper functions env_tz_to_posix to call tzset and env_tz_to_win32 to remove TZ in: https://sourceware.org/git/?p=newlib-cygwin.git;f=winsup/cygwin/environ.cc;a=blob What is the opinion on this from both Windows users and Cygwin patchers? [I am one of those folks who like maximum POSIX/Linux compatibility from my environment and scripts, so maintain files/sym-/links like /run, /etc/timezone, /etc/localtime from local 0p_/zp_ postinstall scripts.] -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. [Data in binary units and prefixes, physical quantities in SI.]