Bug 2280403 - tzdata: build with -b fat to include 32-bit timezone data
Summary: tzdata: build with -b fat to include 32-bit timezone data
Keywords:
Status: CLOSED ERRATA
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:
TreeView+ depends on / blocked
 
Reported: 2024-05-14 21:03 UTC by Miro Hrončok
Modified: 2024-06-07 13:48 UTC (History)
13 users (show)

Fixed In Version: tzdata-2024a-8.fc41
Clone Of:
Environment:
Last Closed: 2024-06-07 13:48:18 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github stub42 pytz issues 48 0 None open Support for "zic -b slim" tzfiles (default format since tz 2020b) 2024-05-15 05:30:15 UTC

Description Miro Hrončok 2024-05-14 21:03:37 UTC
Recently, babel started to FTBFS due to tests failures in Fedora Rawhide.

The change is visible at https://koschei.fedoraproject.org/build/17900193

I bisected the change to tzdata-2024a-5.fc41 -> tzdata-2024a-6.fc41.

I can reproducibly upgrade/downgrade tzdata in mock to observe (or not) the test failures

Considering that update should not change anything wrt the actual data, as it only introduced a new (disabled) bcond: https://src.fedoraproject.org/rpms/tzdata/c/7c34d534e3ca270e440539abdcb2390b3468d1ed?branch=rawhide I did not expect this to cause test failures in babel.

Is it possible that there is some kind of regression in this build?

To reproduce, build babel-2.15.0-1.fc41 with tzdata-2024a-6.fc41.

The test failures look like this:

=================================== FAILURES ===================================
________________ [doctest] babel.dates._ensure_datetime_tzinfo _________________
165     If the datetime is tz-naive to begin with, UTC is attached.
166 
167     If a tzinfo is passed in, the datetime is normalized to that timezone.
168 
169     >>> from datetime import datetime
170     >>> _get_tz_name(_ensure_datetime_tzinfo(datetime(2015, 1, 1)))
171     'UTC'
172 
173     >>> tz = get_timezone("Europe/Stockholm")
174     >>> _ensure_datetime_tzinfo(datetime(2015, 1, 1, 13, 15, tzinfo=UTC), tzinfo=tz).hour
Expected:
    14
Got:
    13
/builddir/build/BUILD/babel-2.15.0/babel/dates.py:174: DocTestFailure
____________________ [doctest] babel.dates.format_datetime _____________________
694 Return a date formatted according to the given pattern.
695 
696     >>> from datetime import datetime
697     >>> dt = datetime(2007, 4, 1, 15, 30)
698     >>> format_datetime(dt, locale='en_US')
699     u'Apr 1, 2007, 3:30:00\u202fPM'
700 
701     For any pattern requiring the display of the timezone:
702 
703     >>> format_datetime(dt, 'full', tzinfo=get_timezone('Europe/Paris'),
Expected:
    'dimanche 1 avril 2007, 17:30:00 heure d’été d’Europe centrale'
Got:
    'dimanche 1 avril 2007, 15:30:00 heure normale d’Europe centrale'
/builddir/build/BUILD/babel-2.15.0/babel/dates.py:703: DocTestFailure
______________________ [doctest] babel.dates.format_time _______________________
747     >>> format_time(t, "hh 'o''clock' a", locale='en')
748     u"03 o'clock PM"
749 
750     For any pattern requiring the display of the time-zone a
751     timezone has to be specified explicitly:
752 
753     >>> t = datetime(2007, 4, 1, 15, 30)
754     >>> tzinfo = get_timezone('Europe/Paris')
755     >>> t = _localize(tzinfo, t)
756     >>> format_time(t, format='full', tzinfo=tzinfo, locale='fr_FR')
Expected:
    '15:30:00 heure d’été d’Europe centrale'
Got:
    '15:30:00 heure normale d’Europe centrale'
/builddir/build/BUILD/babel-2.15.0/babel/dates.py:756: DocTestFailure
____________________ [doctest] babel.dates.get_timezone_gmt ____________________
398     >>> dt = datetime(2007, 4, 1, 15, 30)
399     >>> get_timezone_gmt(dt, locale='en')
400     u'GMT+00:00'
401     >>> get_timezone_gmt(dt, locale='en', return_z=True)
402     'Z'
403     >>> get_timezone_gmt(dt, locale='en', width='iso8601_short')
404     u'+00'
405     >>> tz = get_timezone('America/Los_Angeles')
406     >>> dt = _localize(tz, datetime(2007, 4, 1, 15, 30))
407     >>> get_timezone_gmt(dt, locale='en')
Expected:
    u'GMT-07:00'
Got:
    'GMT+00:00'
/builddir/build/BUILD/babel-2.15.0/babel/dates.py:407: DocTestFailure
___________________ [doctest] babel.support.Format.datetime ____________________
089 Return a date and time formatted according to the given pattern.
090 
091         >>> from datetime import datetime
092         >>> from babel.dates import get_timezone
093         >>> fmt = Format('en_US', tzinfo=get_timezone('US/Eastern'))
094         >>> fmt.datetime(datetime(2007, 4, 1, 15, 30))
Expected:
    u'Apr 1, 2007, 11:30:00 AM'
Got:
    'Apr 1, 2007, 3:30:00\u202fPM'
/builddir/build/BUILD/babel-2.15.0/babel/support.py:94: DocTestFailure
_____________________ [doctest] babel.support.Format.time ______________________
104 Return a time formatted according to the given pattern.
105 
106         >>> from datetime import datetime
107         >>> from babel.dates import get_timezone
108         >>> fmt = Format('en_US', tzinfo=get_timezone('US/Eastern'))
109         >>> fmt.time(datetime(2007, 4, 1, 15, 30))
Expected:
    u'11:30:00 AM'
Got:
    '3:30:00\u202fPM'
/builddir/build/BUILD/babel-2.15.0/babel/support.py:109: DocTestFailure
__________________ test_format_interval_in_tz[pytz.timezone] ___________________
timezone_getter = <function timezone at 0x3ff9338a340>
    def test_format_interval_in_tz(timezone_getter):
        t1 = TEST_DT.replace(tzinfo=UTC)
        t2 = t1 + datetime.timedelta(minutes=18)
        hki_tz = timezone_getter("Europe/Helsinki")
>       assert dates.format_interval(t1, t2, "Hmv", tzinfo=hki_tz, locale="fi") == "13.46\u201314.04 aikavyöhyke: Suomi"
E       AssertionError: assert '11.46–12.04 ...yöhyke: Suomi' == '13.46–14.04 ...yöhyke: Suomi'
E         - 13.46–14.04 aikavyöhyke: Suomi
E         ?  ^     ^
E         + 11.46–12.04 aikavyöhyke: Suomi
E         ?  ^     ^
tests/test_date_intervals.py:37: AssertionError
_____________________ test_get_timezone_gmt[pytz.timezone] _____________________
timezone_getter = <function timezone at 0x3ff9338a340>
    def test_get_timezone_gmt(timezone_getter):
        dt = datetime(2007, 4, 1, 15, 30)
        assert dates.get_timezone_gmt(dt, locale='en') == 'GMT+00:00'
        assert dates.get_timezone_gmt(dt, locale='en', return_z=True) == 'Z'
        assert dates.get_timezone_gmt(dt, locale='en', width='iso8601_short') == '+00'
        tz = timezone_getter('America/Los_Angeles')
        dt = _localize(tz, datetime(2007, 4, 1, 15, 30))
>       assert dates.get_timezone_gmt(dt, locale='en') == 'GMT-07:00'
E       AssertionError: assert 'GMT+00:00' == 'GMT-07:00'
E         - GMT-07:00
E         ?    ^ ^
E         + GMT+00:00
E         ?    ^ ^
tests/test_dates.py:454: AssertionError
_____________________ test_format_datetime[pytz.timezone] ______________________
timezone_getter = <function timezone at 0x3ff9338a340>
    def test_format_datetime(timezone_getter):
        dt = datetime(2007, 4, 1, 15, 30)
        assert (dates.format_datetime(dt, locale='en_US') ==
                'Apr 1, 2007, 3:30:00\u202fPM')
    
        full = dates.format_datetime(
            dt, 'full',
            tzinfo=timezone_getter('Europe/Paris'),
            locale='fr_FR',
        )
>       assert full == (
            'dimanche 1 avril 2007, 17:30:00 heure '
            'd’été d’Europe centrale'
        )
E       AssertionError: assert 'dimanche 1 a...rope centrale' == 'dimanche 1 a...rope centrale'
E         - dimanche 1 avril 2007, 17:30:00 heure d’été d’Europe centrale
E         ?                         ^             ^^^^^
E         + dimanche 1 avril 2007, 15:30:00 heure normale d’Europe centrale
E         ?                         ^             ^^^^^^^
tests/test_dates.py:574: AssertionError
_______________________ test_format_time[pytz.timezone] ________________________
timezone_getter = <function timezone at 0x3ff9338a340>
    def test_format_time(timezone_getter):
        t = time(15, 30)
        assert dates.format_time(t, locale='en_US') == '3:30:00\u202fPM'
        assert dates.format_time(t, format='short', locale='de_DE') == '15:30'
    
        assert (dates.format_time(t, "hh 'o''clock' a", locale='en') ==
                "03 o'clock PM")
    
        paris = timezone_getter('Europe/Paris')
        eastern = timezone_getter('US/Eastern')
    
        t = _localize(paris, datetime(2007, 4, 1, 15, 30))
        fr = dates.format_time(t, format='full', tzinfo=paris, locale='fr_FR')
>       assert fr == '15:30:00 heure d’été d’Europe centrale'
E       AssertionError: assert '15:30:00 heu...rope centrale' == '15:30:00 heu...rope centrale'
E         - 15:30:00 heure d’été d’Europe centrale
E         ?                ^^^^^
E         + 15:30:00 heure normale d’Europe centrale
E         ?                ^^^^^^^
tests/test_dates.py:599: AssertionError
_____________________ test_format_skeleton[pytz.timezone] ______________________
timezone_getter = <function timezone at 0x3ff9338a340>
    def test_format_skeleton(timezone_getter):
        dt = datetime(2007, 4, 1, 15, 30)
        assert (dates.format_skeleton('yMEd', dt, locale='en_US') == 'Sun, 4/1/2007')
        assert (dates.format_skeleton('yMEd', dt, locale='th') == 'อา. 1/4/2007')
    
        assert (dates.format_skeleton('EHm', dt, locale='en') == 'Sun 15:30')
>       assert (dates.format_skeleton('EHm', dt, tzinfo=timezone_getter('Asia/Bangkok'), locale='th') == 'อา. 22:30 น.')
E       AssertionError: assert 'อา. 15:30 น.' == 'อา. 22:30 น.'
E         - อา. 22:30 น.
E         ?     ^^
E         + อา. 15:30 น.
E         ?     ^^
tests/test_dates.py:619: AssertionError
________________ TestFormat.test_format_datetime[pytz.timezone] ________________
self = <tests.test_support.TestFormat object at 0x3ff91a62360>
timezone_getter = <function timezone at 0x3ff9338a340>
    def test_format_datetime(self, timezone_getter):
        when = datetime.datetime(2007, 4, 1, 15, 30)
        fmt = support.Format('en_US', tzinfo=timezone_getter('US/Eastern'))
>       assert fmt.datetime(when) == 'Apr 1, 2007, 11:30:00\u202fAM'
E       AssertionError: assert 'Apr 1, 2007, 3:30:00\u202fPM' == 'Apr 1, 2007,...30:00\u202fAM'
E         - Apr 1, 2007, 11:30:00 AM
E         ?              ^^       ^
E         + Apr 1, 2007, 3:30:00 PM
E         ?              ^       ^
tests/test_support.py:304: AssertionError
__________________ TestFormat.test_format_time[pytz.timezone] __________________
self = <tests.test_support.TestFormat object at 0x3ff928640e0>
timezone_getter = <function timezone at 0x3ff9338a340>
    def test_format_time(self, timezone_getter):
        when = datetime.datetime(2007, 4, 1, 15, 30)
        fmt = support.Format('en_US', tzinfo=timezone_getter('US/Eastern'))
>       assert fmt.time(when) == '11:30:00\u202fAM'
E       AssertionError: assert '3:30:00\u202fPM' == '11:30:00\u202fAM'
E         - 11:30:00 AM
E         ? ^^       ^
E         + 3:30:00 PM
E         ? ^       ^
tests/test_support.py:309: AssertionError

Comment 1 Miro Hrončok 2024-05-14 21:06:40 UTC
The data differs.

tzdata-2024a-5.fc41 was built on ppc64le https://koji.fedoraproject.org/koji/taskinfo?taskID=116113083
tzdata-2024a-6.fc41 was built on s390x https://koji.fedoraproject.org/koji/taskinfo?taskID=117679406

Perhaps that is related?

$ rpmdiff tzdata-2024a-5.fc41.noarch.rpm tzdata-2024a-6.fc41.noarch.rpm 
removed     PROVIDES tzdata = 2024a-5.fc41
added       PROVIDES tzdata = 2024a-6.fc41
..........T /usr/share/doc/tzdata
..........T /usr/share/licenses/tzdata
..........T /usr/share/zoneinfo
..........T /usr/share/zoneinfo/Africa
S.5.......T /usr/share/zoneinfo/Africa/Abidjan
S.5.......T /usr/share/zoneinfo/Africa/Accra
S.5.......T /usr/share/zoneinfo/Africa/Addis_Ababa
S.5.......T /usr/share/zoneinfo/Africa/Algiers
S.5.......T /usr/share/zoneinfo/Africa/Asmara
...a very long snip...
S.5.......T /usr/share/zoneinfo/right/UCT
..........T /usr/share/zoneinfo/right/US
S.5.......T /usr/share/zoneinfo/right/US/Alaska
S.5.......T /usr/share/zoneinfo/right/US/Aleutian
S.5.......T /usr/share/zoneinfo/right/US/Arizona
S.5.......T /usr/share/zoneinfo/right/US/Central
S.5.......T /usr/share/zoneinfo/right/US/East-Indiana
S.5.......T /usr/share/zoneinfo/right/US/Eastern
S.5.......T /usr/share/zoneinfo/right/US/Hawaii
S.5.......T /usr/share/zoneinfo/right/US/Indiana-Starke
S.5.......T /usr/share/zoneinfo/right/US/Michigan
S.5.......T /usr/share/zoneinfo/right/US/Mountain
S.5.......T /usr/share/zoneinfo/right/US/Pacific
S.5.......T /usr/share/zoneinfo/right/US/Samoa
S.5.......T /usr/share/zoneinfo/right/UTC
S.5.......T /usr/share/zoneinfo/right/Universal
S.5.......T /usr/share/zoneinfo/right/W-SU
S.5.......T /usr/share/zoneinfo/right/WET
S.5.......T /usr/share/zoneinfo/right/Zulu
..........T /usr/share/zoneinfo/tzdata.zi

Comment 2 Miro Hrončok 2024-05-14 21:10:12 UTC
$ hexdump tzdata-2024a-5/usr/share/zoneinfo/UTC
0000000 5a54 6669 0032 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0100 0000 0400 0000 0000
0000030 0000 5455 0043 5a54 6669 0032 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
0000050 0000 0000 0000 0000 0000 0000 0100 0000
0000060 0400 0000 0000 0000 5455 0043 550a 4354
0000070 0a30                                   
0000072

$ hexdump tzdata-2024a-6/usr/share/zoneinfo/UTC
0000000 5a54 6669 0032 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0100 0000 0100 0000 0000
0000030 0000 5400 695a 3266 0000 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
0000050 0000 0000 0000 0000 0000 0001 0000 0004
0000060 0000 0000 5500 4354 0a00 5455 3043 000a
000006f


I do not understand those files, but should they be this different?

Comment 3 Miro Hrončok 2024-05-14 21:27:39 UTC
Building tzdata-2024a-6.fc41 on all architectures produces the same results, so the architecture of the builder is not what matters here.

Comment 4 Miro Hrončok 2024-05-14 21:38:52 UTC
Building tzdata-2024a-5.fc41 today in rawhide makes the content identical to tzdata-2024a-6.fc41 (sans the timestamps). Meaning the change in spec indeed did not cause the difference.

Comment 5 Miro Hrončok 2024-05-14 21:44:45 UTC
The buildroot difference between tzdata-2024a-5.fc41 and tzdata-2024a-6.fc41 builds:

-ansible-srpm-macros-1-14.fc40
+ansible-srpm-macros-1-15.fc41

-binutils-2.42.50-6.fc41
-binutils-gold-2.42.50-6.fc41
+binutils-2.42.50-11.fc41
+binutils-gold-2.42.50-11.fc41

-debugedit-5.0-14.fc40
+debugedit-5.0-15.fc41

-default-fonts-core-sans-4.0-12.fc40
+default-fonts-core-sans-4.0-13.fc41

-ed-1.20.1-1.fc41
+ed-1.20.2-1.fc41

-elfutils-0.191-5.fc41
-elfutils-debuginfod-client-0.191-5.fc41
-elfutils-default-yama-scope-0.191-5.fc41
-elfutils-libelf-0.191-5.fc41
-elfutils-libs-0.191-5.fc41
+elfutils-0.191-7.fc41
+elfutils-debuginfod-client-0.191-7.fc41
+elfutils-default-yama-scope-0.191-7.fc41
+elfutils-libelf-0.191-7.fc41
+elfutils-libs-0.191-7.fc41

-fedora-release-41-0.6
-fedora-release-common-41-0.6
-fedora-release-identity-basic-41-0.6
+fedora-release-41-0.10
+fedora-release-common-41-0.10
+fedora-release-identity-basic-41-0.10

-filesystem-3.18-8.fc40
+filesystem-3.18-9.fc41

-fontconfig-2.15.0-4.fc40
+fontconfig-2.15.0-5.fc41

-forge-srpm-macros-0.3.0-1.fc41
+forge-srpm-macros-0.3.1-1.fc41

-gdb-minimal-14.2-1.fc41
+gdb-minimal-14.2-7.fc41

-glib2-2.80.0-1.fc41
-glibc-2.39.9000-10.fc41
-glibc-common-2.39.9000-10.fc41
-glibc-gconv-extra-2.39.9000-10.fc41
-glibc-minimal-langpack-2.39.9000-10.fc41
+glib2-2.80.2-1.fc41
+glibc-2.39.9000-18.fc41
+glibc-common-2.39.9000-18.fc41
+glibc-gconv-extra-2.39.9000-18.fc41
+glibc-minimal-langpack-2.39.9000-18.fc41

-gnutls-3.8.5-1.fc41
+gnutls-3.8.5-2.fc41

-go-srpm-macros-3.5.0-1.fc41
+go-srpm-macros-3.6.0-1.fc41

-grep-3.11-7.fc40
+grep-3.11-8.fc41

-java-21-openjdk-1:21.0.2.0.13-3.fc41
-java-21-openjdk-devel-1:21.0.2.0.13-3.fc41
-java-21-openjdk-headless-1:21.0.2.0.13-3.fc41
+java-21-openjdk-1:21.0.3.0.9-1.fc41
+java-21-openjdk-devel-1:21.0.3.0.9-1.fc41
+java-21-openjdk-headless-1:21.0.3.0.9-1.fc41

-libarchive-3.7.2-3.fc41
+libarchive-3.7.4-1.fc41

-libblkid-2.40-13.fc41
+libblkid-2.40.1-1.fc41

-libcap-ng-0.8.4-4.fc40
+libcap-ng-0.8.5-1.fc41

-libevent-2.1.12-12.fc40
+libevent-2.1.12-13.fc41

-libfdisk-2.40-13.fc41
+libfdisk-2.40.1-1.fc41

-libgcc-14.0.1-0.13.fc41
-libgomp-14.0.1-0.13.fc41
+libgcc-14.1.1-1.fc41
+libgomp-14.1.1-1.fc41

-libmount-2.40-13.fc41
+libmount-2.40.1-1.fc41

-librtas-2.0.5-2.fc41

-libsmartcols-2.40-13.fc41
+libsmartcols-2.40.1-1.fc41

-libstdc++-14.0.1-0.13.fc41
+libstdc++-14.1.1-1.fc41

-libuuid-2.40-13.fc41
+libuuid-2.40.1-1.fc41

-libxcb-1.16.1-1.fc41
+libxcb-1.17.0-1.fc41

-lksctp-tools-1.0.19-6.fc40
+lksctp-tools-1.0.19-8.fc41

-mpfr-4.2.1-3.fc40
+mpfr-4.2.1-4.fc41

-pam-1.6.0-2.fc41
-pam-libs-1.6.0-2.fc41
+pam-1.6.1-1.fc41
+pam-libs-1.6.1-1.fc41

-pcre2-10.43-1.fc41
-pcre2-syntax-10.43-1.fc41
+pcre2-10.43-2.fc41
+pcre2-syntax-10.43-2.fc41

-perl-AutoLoader-5.74-506.fc40
+perl-AutoLoader-5.74-507.fc41

-perl-B-1.88-506.fc40
+perl-B-1.88-507.fc41

-perl-Class-Struct-0.68-506.fc40
+perl-Class-Struct-0.68-507.fc41

-perl-DynaLoader-1.54-506.fc40
+perl-DynaLoader-1.54-507.fc41

-perl-Errno-1.37-506.fc40
+perl-Errno-1.37-507.fc41

-perl-Fcntl-1.15-506.fc40
+perl-Fcntl-1.15-507.fc41

-perl-File-Basename-2.86-506.fc40
+perl-File-Basename-2.86-507.fc41

-perl-File-stat-1.13-506.fc40
+perl-File-stat-1.13-507.fc41

-perl-FileHandle-2.05-506.fc40
+perl-FileHandle-2.05-507.fc41

-perl-Getopt-Std-1.13-506.fc40
+perl-Getopt-Std-1.13-507.fc41

-perl-IO-1.52-506.fc40
+perl-IO-1.52-507.fc41

-perl-IPC-Open3-1.22-506.fc40
+perl-IPC-Open3-1.22-507.fc41

-perl-POSIX-2.13-506.fc40
+perl-POSIX-2.13-507.fc41

-perl-SelectSaver-1.02-506.fc40
+perl-SelectSaver-1.02-507.fc41

-perl-Socket-4:2.037-5.fc40
+perl-Socket-4:2.038-1.fc41

-perl-Symbol-1.09-506.fc40
+perl-Symbol-1.09-507.fc41

-perl-base-2.27-506.fc40
+perl-base-2.27-507.fc41

-perl-if-0.61.000-506.fc40
+perl-if-0.61.000-507.fc41

-perl-interpreter-4:5.38.2-506.fc40
+perl-interpreter-4:5.38.2-507.fc41

-perl-libs-4:5.38.2-506.fc40
+perl-libs-4:5.38.2-507.fc41

-perl-locale-1.10-506.fc40
+perl-locale-1.10-507.fc41

-perl-mro-1.28-506.fc40
+perl-mro-1.28-507.fc41

-perl-overload-1.37-506.fc40
+perl-overload-1.37-507.fc41

-perl-overloading-0.02-506.fc40
+perl-overloading-0.02-507.fc41

-perl-vars-1.05-506.fc40
+perl-vars-1.05-507.fc41

-python3-3.12.2-3.fc41
-python3-libs-3.12.2-3.fc41
+python3-3.12.3-2.fc41
+python3-libs-3.12.3-2.fc41

-redhat-rpm-config-287-1.fc41
+redhat-rpm-config-288-1.fc41

-rpm-4.19.1.1-1.fc40
-rpm-build-4.19.1.1-1.fc40
-rpm-build-libs-4.19.1.1-1.fc40
-rpm-libs-4.19.1.1-1.fc40
+rpm-4.19.1.1-2.fc41
+rpm-build-4.19.1.1-2.fc41
+rpm-build-libs-4.19.1.1-2.fc41
+rpm-libs-4.19.1.1-2.fc41

-sqlite-libs-3.45.2-1.fc41
+sqlite-libs-3.45.3-1.fc41

-systemd-libs-255.4-1.fc41
+systemd-libs-256~rc1^20240509git1781de1-2.fc41

-tzdata-2024a-4.fc41
-tzdata-java-2024a-4.fc41
+tzdata-2024a-5.fc41
+tzdata-java-2024a-5.fc41

-util-linux-2.40-13.fc41
-util-linux-core-2.40-13.fc41
+util-linux-2.40.1-1.fc41
+util-linux-core-2.40.1-1.fc41

Comment 6 Miro Hrončok 2024-05-14 21:54:02 UTC
It is glibc.

-glibc-2.39.9000-10.fc41
-glibc-common-2.39.9000-10.fc41
-glibc-gconv-extra-2.39.9000-10.fc41
-glibc-minimal-langpack-2.39.9000-10.fc41
+glibc-2.39.9000-18.fc41
+glibc-common-2.39.9000-18.fc41
+glibc-gconv-extra-2.39.9000-18.fc41
+glibc-minimal-langpack-2.39.9000-18.fc41

When I downgrade to glibc-2.39.9000-10.fc41 and build tzdata, it's "normal" again.

Comment 7 Miro Hrončok 2024-05-14 22:22:46 UTC
I am building tzdata-2024a-7 with glibc-2.39.9000-10 to avoid getting this into the compose.

That should solve the problem for now, but the next rebuild of tzdata will have the same problem.

I am assigning this bugzilla to glibc.

Comment 8 Fedora Update System 2024-05-14 22:27:43 UTC
FEDORA-2024-d26f7abaa8 (tzdata-2024a-7.fc41) has been submitted as an update to Fedora 41.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-d26f7abaa8

Comment 9 Fedora Update System 2024-05-14 22:28:13 UTC
FEDORA-2024-f40a461f41 (tzdata-2024a-7.eln136) has been submitted as an update to Fedora ELN.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-f40a461f41

Comment 10 Fedora Update System 2024-05-14 22:32:12 UTC
FEDORA-2024-f40a461f41 (tzdata-2024a-7.eln136) has been pushed to the Fedora ELN stable repository.
If problem still persists, please make note of it in this bug report.

Comment 11 Fedora Update System 2024-05-14 23:56:09 UTC
FEDORA-2024-d26f7abaa8 (tzdata-2024a-7.fc41) has been pushed to the Fedora 41 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 12 Florian Weimer 2024-05-15 05:30:16 UTC
This is a pytz limitation:

  Support for "zic -b slim" tzfiles (default format since tz 2020b)
  <https://github.com/stub42/pytz/issues/48>

I expect we actually want to switch to the slim format for Fedora 41.

Patsy, could you file a system-wide Fedora change proposal for that? Until that is approved, I think we need to build tzdata with ZFLAGS="-b fat". From the upstream Makefile:

# To shrink the size of installed TZif files,
# append "-r @N" to omit data before N-seconds-after-the-Epoch.
# To grow the files and work around bugs in older applications,
# possibly at the expense of introducing bugs in newer ones,
# append "-b fat"; see ZIC_BLOAT_DEFAULT above.
# See the zic man page for more about -b and -r.
ZFLAGS=

I'll submit an upstream NEWS file update for glibc.

Comment 13 Miro Hrončok 2024-05-15 07:53:07 UTC
Thanks!



Upstream pytz bundles their own tzdata, so they don't need to care (I guess).


In Fedora, we unbundle it: https://src.fedoraproject.org/rpms/pytz/blob/rawhide/f/pytz-zoneinfo.patch


So perhaps when the F41 change is implemented, a tzdata-fat subpackage could be created (installing to e.g. /usr/share/zoneinfo-fat) and Fedora's pytz patch could be adapted.

Comment 14 Florian Weimer 2024-05-15 09:27:59 UTC
(In reply to Miro Hrončok from comment #13)
> Upstream pytz bundles their own tzdata, so they don't need to care (I guess).

There are already upstream bug reports about pytz's inability to handle future dates. I expect it impacts Y2038 testing in other software. Fixing pytz shouldn't be too hard, maybe a ten-line change.

Comment 15 Patsy Griffin 2024-05-20 04:06:37 UTC
Thanks for reporting this!  I am working on updating tzdata to use ZFLAGS="-b fat".


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