Spoons / rmm

An Open Source RimWorld mod package manager and sorting tool.
GNU General Public License v3.0
24 stars 7 forks source link

Input on weird steam errors #12

Open Ant-V opened 1 year ago

Ant-V commented 1 year ago

Description Weird Steam py error not fixed by last commit. I'm getting the following lines and it enters the python debugger:

Downloaded item 2868392160 to "/var/folders/3z/7qtx91l9737bzsmnxkrxphmm0000gn/T/rmm-fmwd9v2j/Library/Application Support/Steam/steamapps/workshop/content/294100/2868392160" (2310657 bytes) > /opt/homebrew/lib/python3.10/site-packages/rmm/steam.py(107)download()
-> if util.platform() == "linux" and not mod_path.exists():
(Pdb) 

And waits for input. Mod in question is: Research Reinvented

Reproduction Sync or update Research Reinvented

Info MacOS: 13.1 (22C65) RMM: 1.0.15 (although shows up as 0.0.0, after update from 1.0.14, via pip3) Rimworld: 1.4.3613

Ant-V commented 1 year ago

On continue this gets returned:

(Pdb) continue;
multiprocessing.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/multiprocessing/pool.py", line 48, in mapstar
    return list(map(*args))
  File "/opt/homebrew/lib/python3.10/site-packages/rmm/mod.py", line 116, in create_from_path
    author=util.element_grab("author", root) if util.element_grab("author", root) else ', '.join(util.list_grab("authors", root)),
TypeError: can only join an iterable
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/homebrew/bin/rmm", line 8, in <module>
    sys.exit(run())
  File "/opt/homebrew/lib/python3.10/site-packages/rmm/cli.py", line 548, in run
    globals()[command](sys.argv, manager)
  File "/opt/homebrew/lib/python3.10/site-packages/rmm/cli.py", line 96, in wrapper_func
    func(*args, **kwargs)
  File "/opt/homebrew/lib/python3.10/site-packages/rmm/cli.py", line 367, in update
    manager.sync_mods(manager.installed_mods())
  File "/opt/homebrew/lib/python3.10/site-packages/rmm/manager.py", line 71, in sync_mods
    steam_mods, steam_cache_path = SteamDownloader.download(
  File "/opt/homebrew/lib/python3.10/site-packages/rmm/steam.py", line 111, in download
    return (ModFolder.read(mod_path), mod_path)
  File "/opt/homebrew/lib/python3.10/site-packages/rmm/mod.py", line 173, in read
    p.map(
  File "/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/multiprocessing/pool.py", line 367, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/multiprocessing/pool.py", line 774, in get
    raise self._value
TypeError: can only join an iterable
Spoons commented 1 year ago

I'm not sure I can help you with rmm running in pdb by default on MacOS. That's quite weird and seems like an environment issue. I don't own anything resembling a modern Mac so it makes testing for MacOS difficult.

However, I do precisely see the iterable issue and will take care of that soon.

Moving forward, I'm going to implement a testing suite for rmm to address the reliability issues.

Ant-V commented 1 year ago

PDB is probably due to my (default?) python settings, but let me know if you want me to dig into it in any way.

Also noticed that the issue persist if I add a .rmm_ignore in the mod, which looks like it is not even looking at it. Don't know if this is as intended (aka do what throughs the error first and then check if it should be skipped) or not, so I'm just putting this out there.

Ant-V commented 1 year ago

I had some time so I'm tinkering a bit, not to mention that it is my old fix that is mixed in this new problem...

Minor detail: first of all, running it from my own build does not invoke the debugger, so we can skip that part of the issue for now. (Could it be that somehow a breakpoint has been pushed into the built version?)

Part of the error is straight forward: it sees no author tag and then goes into finding the authors tag, which also does not exist and null is non iterable. The thing is that in all the mods I found that throw this error there exists an author tag, but for whatever reason it is not visible to rmm.

So technically not a join/iterable issue, sadly after having to rebuild everything and managed to go through updating everything I have not managed to replicate the error. On dev it works flawlessly minus a few WorkThread notices (Work thread 'CContentUpdateContext::m_pCPUTh' is marked exited, but we could not immediately join prior to deleting -- proceeding without join) which can be ignored. On pip installed I still get the debugger but if I hit continue it works fine.

pswsm commented 1 year ago

Happens to me too when installing any mod, but on continue just exits fine without any error:

$ rmm sync mod

[mod list]

Downloading item 717575199 ...
Success. Downloaded item 717575199 to "/tmp/rmm-5l9_85j6/Steam/steamapps/workshop/content/294100/717575199" (907408 bytes) > /home/pswsm/.local/lib/python3.11/site-packages/rmm/steam.py(107)download()
-> if util.platform() == "linux" and not mod_path.exists():
(Pdb) continue
Installed haplo.miscellaneous.training

System Info: