Bug 2118259 - Ruby started to fail with tzdata-2022b-1.fc38
Summary: Ruby started to fail with tzdata-2022b-1.fc38
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: tzdata
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Patsy Griffin
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 2120354
TreeView+ depends on / blocked
 
Reported: 2022-08-15 09:02 UTC by Vít Ondruch
Modified: 2022-08-22 16:38 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 2120354 (view as bug list)
Environment:
Last Closed: 2022-08-16 08:13:38 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github ruby spec issues 936 0 None open Failures with tzdata-2022b 2022-08-16 08:13:37 UTC

Description Vít Ondruch 2022-08-15 09:02:32 UTC
Description of problem:
Ruby build started to fail recently [1] with following errors:

~~~
1)
Time.local timezone changes correctly adjusts the timezone change to 'CEST' on 'Europe/Amsterdam' FAILED
Expected [0, 0, 0, 16, 5, 1940, 4, 137, true, "WEST"] == [0, 40, 1, 16, 5, 1940, 4, 137, true, "CEST"]
to be truthy but was false
/builddir/build/BUILD/ruby-3.1.2/spec/ruby/core/time/shared/local.rb:13:in `block (5 levels) in <top (required)>'
/builddir/build/BUILD/ruby-3.1.2/spec/ruby/core/time/shared/local.rb:12:in `block (4 levels) in <top (required)>'
/builddir/build/BUILD/ruby-3.1.2/spec/ruby/core/time/local_spec.rb:5:in `<top (required)>'
2)
Time.mktime timezone changes correctly adjusts the timezone change to 'CEST' on 'Europe/Amsterdam' FAILED
Expected [0, 0, 0, 16, 5, 1940, 4, 137, true, "WEST"] == [0, 40, 1, 16, 5, 1940, 4, 137, true, "CEST"]
to be truthy but was false
/builddir/build/BUILD/ruby-3.1.2/spec/ruby/core/time/shared/local.rb:13:in `block (5 levels) in <top (required)>'
/builddir/build/BUILD/ruby-3.1.2/spec/ruby/core/time/shared/local.rb:12:in `block (4 levels) in <top (required)>'
/builddir/build/BUILD/ruby-3.1.2/spec/ruby/core/time/mktime_spec.rb:5:in `<top (required)>'
3)
Time.new timezone changes correctly adjusts the timezone change to 'CEST' on 'Europe/Amsterdam' FAILED
Expected [0, 0, 0, 16, 5, 1940, 4, 137, true, "WEST"] == [0, 40, 1, 16, 5, 1940, 4, 137, true, "CEST"]
to be truthy but was false
/builddir/build/BUILD/ruby-3.1.2/spec/ruby/core/time/shared/local.rb:13:in `block (5 levels) in <top (required)>'
/builddir/build/BUILD/ruby-3.1.2/spec/ruby/core/time/shared/local.rb:12:in `block (4 levels) in <top (required)>'
/builddir/build/BUILD/ruby-3.1.2/spec/ruby/core/time/new_spec.rb:11:in `<top (required)>'
Finished in 73.148502 seconds
3817 files, 30898 examples, 133657 expectations, 3 failures, 0 errors, 0 tagged
~~~

From the dependency changes, the most probable cause is the change of tzdata from 2022a-4.fc37 to 2022b-1.fc38. Any clue what changed?


Version-Release number of selected component (if applicable):
tzdata-2022b-1.fc38


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:
Several Ruby test cases fails.


Expected results:
Ruby test suite keeps working.


Additional info:
This is the test source:

https://github.com/ruby/spec/blob/8059e5955fc92fc28cd12910c9f371361e7170e8/core/time/shared/local.rb#L10-L17

The "Time.local timezone changes correctly adjusts the timezone change to 'CEST' on 'Europe/Amsterdam'" test case should be reproducible with something like:

~~~
$ ruby -e "p Time.local(1940, 5, 16).to_a"
[0, 0, 0, 16, 5, 1940, 4, 137, true, "CEST"]
~~~




[1] https://koschei.fedoraproject.org/build/13524242

Comment 1 Patsy Griffin 2022-08-15 14:53:18 UTC

Thank you for reporting this!

I'm sorry to hear that this is impacting your package.

If you review the NEWS file for this update, you will see that the upstream project has continued their effort to move zones that are the same since 1970 to backzone:

From the upstream NEWS file:
    "Finish moving to 'backzone' the location-based zones whose
    timestamps since 1970 are duplicates; adjust links accordingly.
    This change ordinarily affects only pre-1970 timestamps, and with
    the new PACKRATLIST option it does not affect any timestamps.
    In this round the affected zones are Antarctica/Vostok,
    Asia/Brunei, Asia/Kuala_Lumpur, Atlantic/Reykjavik,
    Europe/Amsterdam, Europe/Copenhagen, Europe/Luxembourg,
    Europe/Monaco, Europe/Oslo, Europe/Stockholm, Indian/Christmas,
    Indian/Cocos, Indian/Kerguelen, Indian/Mahe, Indian/Reunion,
    Pacific/Chuuk, Pacific/Funafuti, Pacific/Majuro, Pacific/Pohnpei,
    Pacific/Wake and Pacific/Wallis, and the affected links are
    Arctic/Longyearbyen, Atlantic/Jan_Mayen, Iceland, Pacific/Ponape,
    Pacific/Truk, and Pacific/Yap."

Comment 2 Patsy Griffin 2022-08-15 21:21:22 UTC
Just for clarity, this is expected per the upstream changes.

Please update the ruby test suite to match the changed timezone data.

Any pre-1970 timestamps used in testsuites may need adjusting.

Again, I apologize that this is impacting your package.

Comment 3 Vít Ondruch 2022-08-16 08:13:38 UTC
Thx for explanation, although I don't really have a clue what does it mean except that this is expected ;) Nevertheless I have reported this against upstream.

Comment 4 Andrew John Hughes 2022-08-16 17:47:42 UTC
FWIW, OpenJDK are still considering how to adapt (or not) to these changes: https://bugs.openjdk.org/browse/JDK-8292223

Should OpenJDK got the way of using PACKRATDATA=backzone PACKRATLIST=zone.tab or Stephen's globaltz (https://github.com/JodaOrg/global-tz) we may have to make changes to the RHEL tzdata package in a similar way, at least for the files that are fed to the Java compiler there.

Comment 5 Patsy Griffin 2022-08-16 19:07:54 UTC
 We currently build the java portion of tzdata with rearguard.  If you need additional modification for the java files, I'm open to discussing them.


Note You need to log in before you can comment on or make changes to this bug.