Fedora Account System
Red Hat Associate
Red Hat Customer
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
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
$ 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?
Building tzdata-2024a-6.fc41 on all architectures produces the same results, so the architecture of the builder is not what matters here.
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.
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
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.
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.
FEDORA-2024-d26f7abaa8 (tzdata-2024a-7.fc41) has been submitted as an update to Fedora 41. https://bodhi.fedoraproject.org/updates/FEDORA-2024-d26f7abaa8
FEDORA-2024-f40a461f41 (tzdata-2024a-7.eln136) has been submitted as an update to Fedora ELN. https://bodhi.fedoraproject.org/updates/FEDORA-2024-f40a461f41
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.
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.
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.
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.
(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.
Thanks for reporting this! I am working on updating tzdata to use ZFLAGS="-b fat".