Portmod - Mod Manager

Post about your mods, learn about OpenMW mod compatibility, check for problematic mods, discuss issues, and give us feedback about your experience with modded OpenMW.
Post Reply
User avatar
bmw
Posts: 81
Joined: 04 Jan 2019, 19:42
Contact:

Portmod - Mod Manager

Post by bmw »

Portmod
https://gitlab.com/portmod/portmod
Portmod is a command line mod package manager that automatically downloads (when possible), configures and installs mods.

Large amounts of credit goes to Gentoo’s Portage project (https://wiki.gentoo.org/wiki/Project:Portage), which this is heavily based on. While I considered forking Portage, I decided instead on building from scratch a version supporting a subset of Portage’s features (though I have on occasion borrowed code), due to the size and complexity of the Portage codebase and the fact that many of its features will not be used in Portmod.

Mod descriptions for openmw, and information Portmod uses to install them, are stored in the OpenMW Mod Repository. The repository contains one or more build files for each mod, each in a pybuild format, a variation on Portage’s ebuild format that is expressed as python code, as well as files storing repository metadata.

Current State:
The 2.6 stable release is out.

This release notably includes an optional read-only GUI which can be used to view installed packages and search for some new packages. This is I think the largest feature developed by someone other than me (thanks @poperigby!). Note that the GUI is in its early stages, so more will come, and feedback is appreciated on what has already been done, particularly in terms of any issues you run into getting it to work.
It also introduces support for versioned game engine stability, making it possible to mark packages as stable/testing/masked on specific game versions.

For full details, see the release page: https://gitlab.com/portmod/portmod/-/releases/v2.6.0, or the changelog.

This post will be updated for major/minor releases only. See the announcement mailing list, or the GitLab releases page, for the most up to date information about patch releases.

Documentation is available on readthedocs.
Also see https://portmod.gitlab.io/openmw-mods/ to browse available packages, and the OpenMW section of the wiki.

Reporting Bugs
Please report any bugs you find on the GitLab issue tracker.
https://gitlab.com/portmod/portmod/issues
You can also email [email protected] if you don't have a gitlab account.

Old Stuff
Spoiler: Show
Last edited by bmw on 19 Apr 2023, 22:44, edited 5 times in total.
darkbasic
Posts: 153
Joined: 18 Apr 2016, 15:45
Contact:

Re: Portmod - Mod Manager

Post by darkbasic »

Wow, a mod package manager inspired by Gentoo's ebuilds is like a dream come true :shock:
Last edited by darkbasic on 09 Apr 2019, 12:46, edited 1 time in total.
darkbasic
Posts: 153
Joined: 18 Apr 2016, 15:45
Contact:

Re: Portmod - Mod Manager

Post by darkbasic »

Also, do you plan to support use cases like "if mod A is installed then I need to apply patch C to mod B"?
User avatar
bmw
Posts: 81
Joined: 04 Jan 2019, 19:42
Contact:

Re: Portmod - Mod Manager

Post by bmw »

darkbasic wrote: 09 Apr 2019, 12:05 Also, do you plan to support use cases like "if mod A is installed then I need to apply patch C to mod B"?
Definitely. In fact, it's already partially supported using use flags. For example, the master-index tribunal journal fix is included in the master index pybuild and is automatically applied if the tribunal global use flag is enabled. I say that this is partial support as doing this with use flags is for patches that are optional (as technically the master-index is still usable if tribunal is installed but the patch is not). On the other hand, for patches that resolve conflicts that would otherwise break things, you would mark the two mods as conflicting and mark the patch as resolving the conflict. Conflicts are already implemented, but marking directories/files as resolving conflicts is not yet.

Edit: I also feel I should mention that in general I'm using the convention that patches are included with the mods they patch, rather than separately in the repository, except for the case of patches that are not for specific mods such as omwllf.
ModdingOpenMWdotcom
Posts: 29
Joined: 12 Jul 2018, 04:25
Contact:

Re: Portmod - Mod Manager

Post by ModdingOpenMWdotcom »

darkbasic wrote: 09 Apr 2019, 12:03 Wow, a mod package manager inspired by Gentoo's ebuilds is like a dream come true :shock:
Agreed! Huge thanks to Ben for his awesome work on this. I look forward to growing that repository.
User avatar
Jemolk
Posts: 237
Joined: 20 Mar 2017, 02:12
Location: Sadrith Mora

Re: Portmod - Mod Manager

Post by Jemolk »

bmw wrote: 09 Apr 2019, 04:10 Preferential Features:
I mentioned in a previous update that I’m planning functionality to handle mod ordering choices for when a user wants to prefer a certain mod over another conflicting mod (a situation where there is no “right” way to do it, essentially).
I’ve given further thought to this and came up with the idea of using a flag system, lets call them “feature” flags (admittedly the term is overloaded enough already, but I can’t think of a better name at the moment), where, for each feature flag that occurs in multiple mods you have installed, you are required to decide which mod you want to handle that feature.

For example: you might have two magic mods installed with the following flags:
mod1: magic_effects magic_spells
mod2: magic_effects magic_spells magic_potions
[...]
Unfortunately while this is relatively easy when it comes to assets (you can just remove the files that are not needed), picking and choosing features from a mod would be more difficult when those features are locked inside plugins, and short of writing mod-specific patches, the best solution would be to indicate that the mod can only provide certain features at the same time and throw an error if a certain configuration cannot be resolved.
(Emphasis mine)
Wrye Bash's Bashed Patch feature could provide ideas for implementation here. It basically creates a plugin that merges features from various mods into one file so that they don't conflict, and you can control what gets imported with bash tags, which are basically exactly the same idea as the flags you're talking about and get placed in the mod's file header, and with check boxes on the GUI screen when you build the Bashed Patch. Generally it's used for merging changes to the same record from multiple mods when they're tinkering with different subrecords, but it can also be used to selectively have portions of one mod override another that's technically loaded later. Wrye Bash was originally an Oblivion utility, upgraded over Wrye Mash, the Morrowind utility written by Wrye, which doesn't, IIRC, have the same patching functionality.
User avatar
AnyOldName3
Posts: 2667
Joined: 26 Nov 2015, 03:25

Re: Portmod - Mod Manager

Post by AnyOldName3 »

Mator Smash is now the recommended utility instead of Wrye Bash for making that kind of patch for the games it supports. It might be getting Morrowind support soon now TES3Edit exists/is about to exist.
User avatar
bmw
Posts: 81
Joined: 04 Jan 2019, 19:42
Contact:

Re: Portmod - Mod Manager

Post by bmw »

I hadn't actually made the connection to the Bashed Patch, thanks, that's a good point.
It would still be a lot of work to integrate such a thing though, given the lack of Morrowind support and the fact that neither Wrye Bash nor Mator Smash seem to be designed to integrate with other software. I could probably hack out the important parts though, or just use them as a basis for a implementing whatever ends up going into Portmod. Either way, I think it's currently at the bottom of my list of things to do, which admittedly does mean there's plenty of time to discuss the idea and figure out exactly the best way to implement it.
BaronPampa
Posts: 25
Joined: 04 Aug 2017, 12:50

Re: Portmod - Mod Manager

Post by BaronPampa »

Seems fantastic. I'd love the ability to get massive mod compilations installed with one script, instead of doing all the manual work myself. Also, I've got a list of some mods which provide permission to redistribute:

Morrowind Optimization Patch
Correct Meshes
Correct UV Mudcrabs
Ingredients Mesh Replacer
RR Mod Series - Better Meshes
Better Meshes plus Optimization
PikachunoTMs Mesh Artifact Improvements and Replacers
HD Vanilla Textures

You can download all of them here: https://www.mediafire.com/file/1br1gbvb ... M.7z/file-
In each folder there's a "permission.txt." file, which contains a quote from the author and link to prove that redistribution is allowed.
User avatar
Jemolk
Posts: 237
Joined: 20 Mar 2017, 02:12
Location: Sadrith Mora

Re: Portmod - Mod Manager

Post by Jemolk »

AnyOldName3 wrote: 10 Apr 2019, 20:25 Mator Smash is now the recommended utility instead of Wrye Bash for making that kind of patch for the games it supports.
Only because Wrye Bash doesn't support all the relevant records for those games. Mator Smash doesn't support merging mods into the patch entirely as Wrye Bash does, nor does it have the tweaks functionality of Wrye Bash. It's not that Mator Smash is better than Wrye Bash, but that Mator Smash supports newer files than Wrye Bash but with less features and capabilities.
Post Reply