[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1031028: tzdata: FTBFS (undeclared build-dependency on tzdata)



Hi,

thanks for reporting this build failure.

On Fri, 2023-02-10 at 16:49 +0100, Santiago Vila wrote:
> Package: src:tzdata
> Version: 2022g-4
> Severity: important
> Tags: ftbfs
> 
> Dear maintainer:
> 
> During a rebuild of all packages in bookworm, your package failed to build:
> 
> --------------------------------------------------------------------------------
> [...]
>   debian/rules binary-indep
> dh binary-indep
>     dh_update_autotools_config -i
>     dh_autoreconf -i
>     dh_auto_configure -i
>     debian/rules override_dh_auto_build-indep
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> # Generate a tzdata.zi file
> /usr/bin/make AWK=gawk BACKWARD="backward" PACKRATDATA=backzone VERSION_DEPS= tzdata.zi
> make[2]: Entering directory '/<<PKGBUILDDIR>>'
> gawk \
> 	  -v DATAFORM=`expr main.zi : '\(.*\).zi'` \
> 	  -v PACKRATDATA='backzone' \
> 	  -v PACKRATLIST='' \
> 	  -f ziguard.awk \
> 	  africa antarctica asia australasia europe northamerica southamerica etcetera factory backward backzone >main.zi.out
> mv main.zi.out main.zi
> version=`sed 1q version` && \
> 	  LC_ALL=C gawk \
> 	    -v dataform='main' \
> 	    -v deps='ziguard.awk africa antarctica asia australasia europe northamerica southamerica etcetera factory backward backzone  zishrink.awk' \
> 	    -v redo='posix_right' \
> 	    -v version="$version" \
> 	    -f zishrink.awk \
> 	    main.zi >tzdata.zi.out
> mv tzdata.zi.out tzdata.zi
> make[2]: Leaving directory '/<<PKGBUILDDIR>>'
> # Generate the leapseconds file
> /usr/bin/make AWK=gawk PACKRATDATA=backzone leapseconds
> make[2]: Entering directory '/<<PKGBUILDDIR>>'
> make[2]: 'leapseconds' is up to date.
> make[2]: Leaving directory '/<<PKGBUILDDIR>>'
> # Build the timezone data
> /usr/sbin/zic -d /<<PKGBUILDDIR>>/tzgen -L /dev/null tzdata.zi ; \
> mkdir "/<<PKGBUILDDIR>>/tzgen/posix"; \
> find "/<<PKGBUILDDIR>>/tzgen" -mindepth 1 -maxdepth 1 ! -name posix -printf "%P\n" | while read -r tz; do \
> 	ln -sr "/<<PKGBUILDDIR>>/tzgen/$tz" "/<<PKGBUILDDIR>>/tzgen/posix/$tz"; \
> done; \
> /usr/sbin/zic -d /<<PKGBUILDDIR>>/tzgen/right -L leapseconds tzdata.zi ; \
> 
> warning: "leapseconds", line 83: "#expires" is obsolescent; use "Expires"
> # Replace hardlinks by symlinks
> grep '^L ' /<<PKGBUILDDIR>>/tzdata.zi | while read L target name ; do \
> 	ln -srf /<<PKGBUILDDIR>>/tzgen/$target /<<PKGBUILDDIR>>/tzgen/$name ; \
> 	ln -srf /<<PKGBUILDDIR>>/tzgen/posix/$target /<<PKGBUILDDIR>>/tzgen/posix/$name ; \
> 	ln -srf /<<PKGBUILDDIR>>/tzgen/right/$target /<<PKGBUILDDIR>>/tzgen/right/$name ; \
> done
> # Generate a posixrules file
> ln -s America/New_York /<<PKGBUILDDIR>>/tzgen/posixrules
> debian/generate_debconf_templates -d "/<<PKGBUILDDIR>>/tzgen" > debian/tzdata.templates
> debconf-updatepo
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
>     debian/rules override_dh_auto_test
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> debian/test_timezone_conversions -z "/<<PKGBUILDDIR>>/tzgen"
> INFO: Selectable timezones in debian/tzdata.templates: 503
> INFO: Available timezones in /<<PKGBUILDDIR>>/tzgen: 1241
> INFO: Available conversion targets in debian/tzdata.config: 89
> TZPATH="/<<PKGBUILDDIR>>/tzgen" debian/tests/python
> test_2022g (__main__.TestZoneinfo.test_2022g)
> Test new zone America/Ciudad_Juarez from 2022g release. ... ERROR
> test_available_timezones_count (__main__.TestZoneinfo.test_available_timezones_count)
> Test available_timezones() count to be reasonable. ... FAIL
> test_daylight_saving_transition (__main__.TestZoneinfo.test_daylight_saving_transition)
> Test daylight saving time transition from Python documentation. ... ERROR
> test_localtime (__main__.TestZoneinfo.test_localtime)
> Test 'localtime' timezone. ... ERROR
> test_timezones (__main__.TestZoneinfo.test_timezones)
> Test all zones to load, have a name, and have a reasonable offset. ... ok
> 
> ======================================================================
> ERROR: test_2022g (__main__.TestZoneinfo.test_2022g)
> Test new zone America/Ciudad_Juarez from 2022g release.
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>    File "/usr/lib/python3.11/zoneinfo/_common.py", line 12, in load_tzdata
>      return resources.files(package_name).joinpath(resource_name).open("rb")
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/resources/_common.py", line 22, in files
>      return from_package(get_package(package))
>                          ^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/resources/_common.py", line 53, in get_package
>      resolved = resolve(package)
>                 ^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/resources/_common.py", line 44, in resolve
>      return cand if isinstance(cand, types.ModuleType) else importlib.import_module(cand)
>                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
>      return _bootstrap._gcd_import(name[level:], package, level)
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
>    File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
>    File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked
>    File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
>    File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
>    File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
>    File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked
>    File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
>    File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
>    File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
>    File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
> ModuleNotFoundError: No module named 'tzdata'
> 
> During handling of the above exception, another exception occurred:
> 
> Traceback (most recent call last):
>    File "/<<PKGBUILDDIR>>/debian/tests/python", line 83, in test_2022g
>      tzinfo = zoneinfo.ZoneInfo("America/Ciudad_Juarez")
>               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/zoneinfo/_common.py", line 24, in load_tzdata
>      raise ZoneInfoNotFoundError(f"No time zone found with key {key}")
> zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key America/Ciudad_Juarez'
> 
> ======================================================================
> ERROR: test_daylight_saving_transition (__main__.TestZoneinfo.test_daylight_saving_transition)
> Test daylight saving time transition from Python documentation.
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>    File "/usr/lib/python3.11/zoneinfo/_common.py", line 12, in load_tzdata
>      return resources.files(package_name).joinpath(resource_name).open("rb")
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/resources/_common.py", line 22, in files
>      return from_package(get_package(package))
>                          ^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/resources/_common.py", line 53, in get_package
>      resolved = resolve(package)
>                 ^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/resources/_common.py", line 44, in resolve
>      return cand if isinstance(cand, types.ModuleType) else importlib.import_module(cand)
>                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
>      return _bootstrap._gcd_import(name[level:], package, level)
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
>    File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
>    File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked
>    File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
>    File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
>    File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
>    File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked
>    File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
>    File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
>    File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
>    File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
> ModuleNotFoundError: No module named 'tzdata'
> 
> During handling of the above exception, another exception occurred:
> 
> Traceback (most recent call last):
>    File "/<<PKGBUILDDIR>>/debian/tests/python", line 32, in test_daylight_saving_transition
>      tzinfo = zoneinfo.ZoneInfo("America/Los_Angeles")
>               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/zoneinfo/_common.py", line 24, in load_tzdata
>      raise ZoneInfoNotFoundError(f"No time zone found with key {key}")
> zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key America/Los_Angeles'
> 
> ======================================================================
> ERROR: test_localtime (__main__.TestZoneinfo.test_localtime)
> Test 'localtime' timezone.
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>    File "/usr/lib/python3.11/zoneinfo/_common.py", line 12, in load_tzdata
>      return resources.files(package_name).joinpath(resource_name).open("rb")
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/resources/_common.py", line 22, in files
>      return from_package(get_package(package))
>                          ^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/resources/_common.py", line 53, in get_package
>      resolved = resolve(package)
>                 ^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/resources/_common.py", line 44, in resolve
>      return cand if isinstance(cand, types.ModuleType) else importlib.import_module(cand)
>                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
>      return _bootstrap._gcd_import(name[level:], package, level)
>             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
>    File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
>    File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked
>    File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
>    File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
>    File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
>    File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
> ModuleNotFoundError: No module named 'tzdata'
> 
> During handling of the above exception, another exception occurred:
> 
> Traceback (most recent call last):
>    File "/<<PKGBUILDDIR>>/debian/tests/python", line 56, in test_localtime
>      tzinfo = zoneinfo.ZoneInfo("localtime")
>               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    File "/usr/lib/python3.11/zoneinfo/_common.py", line 24, in load_tzdata
>      raise ZoneInfoNotFoundError(f"No time zone found with key {key}")
> zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key localtime'
> 
> ======================================================================
> FAIL: test_available_timezones_count (__main__.TestZoneinfo.test_available_timezones_count)
> Test available_timezones() count to be reasonable.
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>    File "/<<PKGBUILDDIR>>/debian/tests/python", line 27, in test_available_timezones_count
>      self.assertGreaterEqual(zones, 598, "less zones than 2022g-3")
> AssertionError: 0 not greater than or equal to 598 : less zones than 2022g-3
> 
> ----------------------------------------------------------------------
> Ran 5 tests in 0.009s
> 
> FAILED (failures=1, errors=3)
> make[1]: *** [debian/rules:41: override_dh_auto_test] Error 1
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
> make: *** [debian/rules:8: binary-indep] Error 2
> dpkg-buildpackage: error: debian/rules binary-indep subprocess returned exit status 2
> --------------------------------------------------------------------------------
> 
> Note: I have to report this as "important" only because Sebastian Ramacher asked bugs
> like this not to be RC.
> 
> However, I believe there is something inherently dangerous in the fact that the test suite
> for this package relies on the installed (i.e. previous) version of itself instead of
> the version actually being built.
>
> It could happen, for example, that the package being built and the previous version
> may differ in some datail which the test suite considers an error, making the build
> to fail, and requiring a "bootstrap" (i.e. "cheating") for the new version to be
> in the archive again.
> 
> In other words: In this case I'm more concerned about the fact that such
> build-dependency exists at all than the fact that it's declared or not.

The test suite executed during build is not meant to run against an
potentially installed tzdata, but to run against the built files. I
scratched my head why Python tries to load the system installed tzdata
files despite TZPATH set to the correct path. After reading the
documentation again, the reason is clear: The environment variable is
called PYTHONTZPATH.

Let me fix that.

-- 
Benjamin Drung
Debian & Ubuntu Developer


Reply to: