OpenFactorioServerManager / factorio-server-manager

A tool to help manage Factorio multiplayer servers including mods and save games.
MIT License
541 stars 130 forks source link

Install/check for mod dependencies #236

Open samgray96 opened 3 years ago

samgray96 commented 3 years ago

Issue that when downloading a mod which has required dependancies, they are not also pulled down with the mod so thus don't load, Mod example is LTN which requires Flib

knoxfighter commented 3 years ago

That is expected behaviour, we don't check mod dependencies.

samgray96 commented 3 years ago

Ah, I mis-interpreted this in the log then?


factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? boblogistics >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? FactorioExtended-Plus-Transport >= 0.1.5' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? Krastorio2 >= 0.9.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? RandomFactorioThings >= 1.0.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? UltimateBelts >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? UltimateBelts_Owoshima_And_Pankeko-Mod >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? space-exploration >= 0.1.95' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 completed copying the response.Body
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '(?) bobinserters >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? boblogistics >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? FactorioExtended-Plus-Transport >= 0.1.5' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? Krastorio2 >= 0.9.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? RandomFactorioThings >= 1.0.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? UltimateBelts >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? UltimateBelts_Owoshima_And_Pankeko-Mod >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:15 skipping dependency '? space-exploration >= 0.1.95' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '(?) bobinserters >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? boblogistics >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? FactorioExtended-Plus-Transport >= 0.1.5' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? Krastorio2 >= 0.9.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? RandomFactorioThings >= 1.0.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? UltimateBelts >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? UltimateBelts_Owoshima_And_Pankeko-Mod >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? space-exploration >= 0.1.95' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '(?) bobinserters >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? boblogistics >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? FactorioExtended-Plus-Transport >= 0.1.5' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? Krastorio2 >= 0.9.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? RandomFactorioThings >= 1.0.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? UltimateBelts >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? UltimateBelts_Owoshima_And_Pankeko-Mod >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? space-exploration >= 0.1.95' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '(?) bobinserters >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? boblogistics >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? FactorioExtended-Plus-Transport >= 0.1.5' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? Krastorio2 >= 0.9.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? RandomFactorioThings >= 1.0.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? UltimateBelts >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? UltimateBelts_Owoshima_And_Pankeko-Mod >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? space-exploration >= 0.1.95' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '(?) bobinserters >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? boblogistics >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? FactorioExtended-Plus-Transport >= 0.1.5' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? Krastorio2 >= 0.9.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? RandomFactorioThings >= 1.0.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? UltimateBelts >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? UltimateBelts_Owoshima_And_Pankeko-Mod >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:27 skipping dependency '? space-exploration >= 0.1.95' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:42 skipping dependency '(?) bobinserters >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:42 skipping dependency '? boblogistics >= 0.17.1' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:42 skipping dependency '? FactorioExtended-Plus-Transport >= 0.1.5' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:42 skipping dependency '? Krastorio2 >= 0.9.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:42 skipping dependency '? RandomFactorioThings >= 1.0.0' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:42 skipping dependency '? UltimateBelts >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:42 skipping dependency '? UltimateBelts_Owoshima_And_Pankeko-Mod >= 0.16.4' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:42 skipping dependency '? space-exploration >= 0.1.95' in 'miniloader': optional dependency or invalid format
factorio-server-manager1   | 2021/01/24 08:53:42 download complete
factorio-server-manager1   |  StatusCode: 200
factorio-server-manager1   |  Status: 200 OK```
knoxfighter commented 3 years ago

Those outputs are from listing the installed mods. When we list installed mods, we search for the dependency of "base" mod. Every other dependency will print such an output. https://github.com/OpenFactorioServerManager/factorio-server-manager/blob/bcbf3ffd3d15dd6600f25ae6681d1bf6f55a9374/src/factorio/mod_modInfo.go#L89

llann commented 3 years ago

Hello, if it helps you @samgray96 I have this tool installed on my server that I use when I need to install or remove mods : https://github.com/Tantrisse/Factorio-mods-manager it's in python so pretty easy to use, even on windows.

Then I use factorio-server-manager to manage the my server, enable/disable a mods, create mod packs, saves, etc.

I'm really happy as the dependencies system is really working well : https://github.com/Tantrisse/Factorio-mods-manager#about-dependencies it check the dependencies of dependencies :) and also clean the dependencies when you remove a mod (but you can also avoid it with the -nrrd flag).

It could be cool to have something like that integrated in factorio-server-manager but if it's too complex you can just live with the two tools :)

duracell commented 1 year ago

Okay, I would suggest to at least put a warning there, because I searched for hours why some mods where not working after installing them within the server manager :(

AndrewSav commented 1 year ago

What worked for me, is setting up mods as you want them on desktop first, saving, uploading the save to OFSM and then selecting "Load Mods From Save". This way you will have all the dependencies you need.

Skeen commented 7 months ago

That is expected behaviour, we don't check mod dependencies.

What is the rationale behind this being the default behaviour?

Squelch commented 4 days ago

Those outputs are from listing the installed mods. When we list installed mods, we search for the dependency of "base" mod. Every other dependency will print such an output.

https://github.com/OpenFactorioServerManager/factorio-server-manager/blob/bcbf3ffd3d15dd6600f25ae6681d1bf6f55a9374/src/factorio/mod_modInfo.go#L89

With respect @knoxfighter, there might have been a misunderstanding here. The intention may have been to just check for base dependencies, but the logs end up confusing as a result. I believe the log output to be incorrectly stating that all mods with dependency flag prefixes are optional or incorrectly formatted because only 3 fields of the dependency string are being parsed as seen from the whole section from which you quote

https://github.com/OpenFactorioServerManager/factorio-server-manager/blob/bcbf3ffd3d15dd6600f25ae6681d1bf6f55a9374/src/factorio/mod_modInfo.go#L78-L109

When a mod fails to load due to missing dependencies, the mods gui page or fsm server logs do not reveal in any way that there are missing or incorrect dependencies or even incompatible mods as indicated by the flags. I feel that parsing mod info could be a little more resilient, and give the user a better understanding of the situation. issue #393 is a case in point.

I shall attempt some modification to check the flag prefix and output a corresponding log string and perhaps a mods gui page indication. A subsequent PR will follow in due course if they are being accepted?

FYI from https://wiki.factorio.com/Tutorial:Mod_structure

The possible prefixes are: ! for incompatibility ? for an optional dependency. (?) for a hidden optional dependency ~ for a dependency that does not affect load order no prefix for a hard requirement for the other mod.

knoxfighter commented 4 days ago

I am sure that back when the code was created the ~ dependency was not a thing yet. The whole mod installation part is subject of a rework with proper dependencymanagement. I am currently getting back to this project and will tackle it later. For now i will remove that message, cause we skip everything except the base mod and it also only checks for the base mod.

Squelch commented 4 days ago

Yes, the flags were simpler back then and the message does inappropriately catch everything that has a flag.

I'm pleased to hear that you are looking at the dependencies, and I look forward to seeing the improvements. In the meantime, I'll have a play with go, and see what I can learn too. There's a few other places in the gui that could do with some enhancements ie indicating activity during larger downloads (graphics packs) that I'll be sure to raise issues for.