Subject: [BUG] Package unknown-horizons fails during build process

From: Rodrigo Morales <[email-masked]>
Date: Sun, 24 Sep 2023 02:35:39 +0000

The last 120 lines of the build log (i.e.
=/var/log/guix/drvs/d7/hlb25qf9wirgdl4w80snbadsm8fgkq-unknown-horizons-2019.1.drv.gz=)
are shown in the second code block below.

The complete build log can be downloaded at http://0x0.st/HVoh.drv.gz
[[https://web.archive.org/web/20230924023306/http://0x0.st/HVoh.drv.gz][(archive
link)]]

#+BEGIN_EXAMPLE
$ guix package -i unknown-horizons
The following package will be installed:
   unknown-horizons 2019.1

The following derivation will be built:
  /gnu/store/d7hlb25qf9wirgdl4w80snbadsm8fgkq-unknown-horizons-2019.1.drv

building /gnu/store/d7hlb25qf9wirgdl4w80snbadsm8fgkq-unknown-horizons-2019.1.drv...
100% 'check'
builder for `/gnu/store/d7hlb25qf9wirgdl4w80snbadsm8fgkq-unknown-horizons-2019.1.drv'
failed with exit code 1
build of /gnu/store/d7hlb25qf9wirgdl4w80snbadsm8fgkq-unknown-horizons-2019.1.drv
failed
View build log at
'/var/log/guix/drvs/d7/hlb25qf9wirgdl4w80snbadsm8fgkq-unknown-horizons-2019.1.drv.gz'.
guix package: error: build of
`/gnu/store/d7hlb25qf9wirgdl4w80snbadsm8fgkq-unknown-horizons-2019.1.drv'
failed
$ echo $?
1
#+END_EXAMPLE

#+BEGIN_SRC sh
zcat /var/log/guix/drvs/d7/hlb25qf9wirgdl4w80snbadsm8fgkq-unknown-horizons-2019.1.drv.gz
| tail -n 120
#+END_SRC

#+RESULTS:
#+begin_example
tests/unittests/test_timer.py .............                              [ 70%]
tests/unittests/gui/test_window_manager.py .....                         [ 72%]
tests/unittests/misc/test_paths.py ..                                    [ 73%]
tests/unittests/mp/test_run_server.py ss                                 [ 73%]
tests/unittests/mp/test_server_statistics.py ..                          [ 74%]
tests/unittests/util/test_check_updates.py ..................            [ 79%]
tests/unittests/util/test_color.py ....                                  [ 80%]
tests/unittests/util/test_platform.py ..                                 [ 81%]
tests/unittests/util/test_registry.py ..                                 [ 82%]
tests/unittests/util/test_shapes.py ...                                  [ 83%]
tests/unittests/util/test_tile_orientation.py ..........                 [ 86%]
tests/unittests/util/test_yamlcachestorage.py .                          [ 86%]
tests/unittests/world/test_component.py .                                [ 86%]
tests/unittests/world/test_ingametype_classes.py ...                     [ 87%]
tests/unittests/world/test_storage.py ..............                     [ 91%]
tests/unittests/world/test_world.py .                                    [ 92%]
tests/unittests/world/buildability/test_connectedareacache.py .          [ 92%]
tests/unittests/world/buildability/test_partialbinarycache.py .....      [ 93%]
tests/unittests/world/component/test_healthcomponent.py .....            [ 95%]
tests/unittests/world/component/test_namedcomponent.py ......            [ 97%]
tests/unittests/world/component/test_tradepostcomponent.py ..            [ 97%]
tests/unittests/world/production/test_productionline.py ...              [ 98%]
tests/unittests/world/units/collectors/test_collector.py ....            [100%]

=================================== FAILURES ===================================
____________________________ test_savegame_upgrade _____________________________

args = ()

    def wrapped(*args):
    if not manual_session and not use_fixture:
    s, p = new_session(mapgen=mapgen, human_player=human_player,
ai_players=ai_players)
    elif use_fixture:
    path = os.path.join(TEST_FIXTURES_DIR, use_fixture + '.sqlite')
    if not os.path.exists(path):
    raise Exception('Savegame {} not found'.format(path))
    s = load_session(path)

    timelimit = Timer(handler)
    timelimit.start(timeout)

    try:
    if use_fixture:
    return func(s, *args)
    elif not manual_session:
    return func(s, p, *args)
    else:
>    return func(*args)

tests/game/__init__.py:243:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/game/test_load_save.py:215: in test_savegame_upgrade
    session.run(seconds=30)
tests/game/__init__.py:140: in run
    Scheduler().tick(Scheduler().cur_tick + 1)
horizons/scheduler.py:95: in tick
    callback.callback()
horizons/util/python/callback.py:48: in __call__
    return self.callback(*self.args, **self.kwargs)
horizons/ai/pirate.py:99: in tick
    self.combat_manager.tick()
horizons/ai/aiplayer/combat/combatmanager.py:343: in tick
    self.lookout()
horizons/ai/aiplayer/combat/combatmanager.py:334: in lookout
    self.handle_casual_combat()
horizons/ai/aiplayer/combat/combatmanager.py:423: in handle_casual_combat
    rules = (filters.not_in_fleet, filters.pirate,
filters.ship_state(self.ships, self.shipStates.idle))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <horizons.ai.aiplayer.combat.unitmanager.UnitManager object at
0x7ffff0e81840>
state_dict = <DefaultWeakKeyDictionary at 0x7ffff0e82a70>
ship_states = EnumValue(<horizons.ext.enum.Enum object at
0x7ffff5b24e50>, 0, 'idle')

    def _ship_state_rule(self, state_dict, ship_states):
    """
    Rule stating that ship has to be in any of given states.
    """
>    if not isinstance(ship_states, collections.Iterable):
E    AttributeError: module 'collections' has no attribute 'Iterable'

horizons/ai/aiplayer/combat/unitmanager.py:154: AttributeError
------------------------------ Captured log call -------------------------------
WARNING  util.savegameupgrader:savegameupgrader.py:75 Discovered old
savegame file, auto-upgrading: 76 -> 77
=============================== warnings summary ===============================
horizons/extscheduler.py:72
  /tmp/guix-build-unknown-horizons-2019.1.drv-0/unknown-horizons-2019.1/horizons/extscheduler.py:72:
SyntaxWarning: "is" with a literal. Did you mean "=="?
    if obj.loops > 0 or obj.loops is -1:

tests/gui/__init__.py:148
  /tmp/guix-build-unknown-horizons-2019.1.drv-0/unknown-horizons-2019.1/tests/gui/__init__.py:148:
PytestUnknownMarkWarning: Unknown pytest.mark.gui_test - is this a
typo?  You can register custom marks to avoid this warning - for
details, see https://docs.pytest.org/en/stable/how-to/mark.html
    gui_test = pytest.mark.gui_test

tests/game/long/test_ai_long.py:30
  /tmp/guix-build-unknown-horizons-2019.1.drv-0/unknown-horizons-2019.1/tests/game/long/test_ai_long.py:30:
PytestUnknownMarkWarning: Unknown pytest.mark.long - is this a typo?
You can register custom marks to avoid this warning - for details, see
https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.long

tests/game/long/test_ai_quick.py:30
  /tmp/guix-build-unknown-horizons-2019.1.drv-0/unknown-horizons-2019.1/tests/game/long/test_ai_quick.py:30:
PytestUnknownMarkWarning: Unknown pytest.mark.long - is this a typo?
You can register custom marks to avoid this warning - for details, see
https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.long

tests/game/long/test_ai_very_long.py:30
  /tmp/guix-build-unknown-horizons-2019.1.drv-0/unknown-horizons-2019.1/tests/game/long/test_ai_very_long.py:30:
PytestUnknownMarkWarning: Unknown pytest.mark.long - is this a typo?
You can register custom marks to avoid this warning - for details, see
https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.long

tests/game/long/test_load_save_long.py:33
  /tmp/guix-build-unknown-horizons-2019.1.drv-0/unknown-horizons-2019.1/tests/game/long/test_load_save_long.py:33:
PytestUnknownMarkWarning: Unknown pytest.mark.long - is this a typo?
You can register custom marks to avoid this warning - for details, see
https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.long

horizons/util/tile_orientation.py:26
  /tmp/guix-build-unknown-horizons-2019.1.drv-0/unknown-horizons-2019.1/horizons/util/tile_orientation.py:26:
DeprecationWarning: invalid escape sequence '\ '
    """

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/game/test_load_save.py::test_savegame_upgrade - AttributeError: ...
====== 1 failed, 237 passed, 91 skipped, 2 xfailed, 7 warnings in 26.45s =======
error: in phase 'check': uncaught exception:
%exception #<&invoke-error program: "pytest" arguments: ("tests")
exit-status: 1 term-signal: #f stop-signal: #f>
phase `check' failed after 26.7 seconds
command "pytest" "tests" failed with status 1
#+end_example