Home Artists Posts Import Register

Content

Currently in Wabbajack 3.0's development I'm at the point of debugging the compiler. I've successfully installed several existing lists via 3.0, but now I'm on to making sure all the compilation functions are working correctly. This work is going well, I've made a new CLI command I call "install-compile-install-verify". As the name suggests, this command will download a list, install it, recompile it, install it again, and compare the first and second installs to make sure they are equal. This becomes what's known as an integration test, an end-to-end test that makes sure whatever the compiler outputs is correct and installable.

As of last night I was able to install SMEFT and recompile it (after only half a week of debugging the compiler)! All that's left now is to install the list again and verify the outputs.

This brings up something I wanted to talk about: changes to how we configure the compiler in 3.0. Right now the compiler configuration is somewhat implicit. Want Wabbajack to ignore a mod in MO2? Well then you need to go to the notes in MO2 and put the text WABBAJACK_IGNORE in the notes. Want to inline a mod? Well then you need to put WABBAJACK_INCLUDE in the notes. What if the file you want to inline isn't in a mod? Well then you need to create a file called "WABBAJACK_ALWAYS_INCLUDE.txt" and put that in the folder you want to inline.

These tags and tag files are a simple way to allow authors to configure mods, but it's not exactly clear. Often new authors have no clue these features exists, and if any tags are misspelled it's hard to track down the issue.

In 3.0 we're going a different route, the UI show in the image is editing a .json file that contain all the compiler settings. If you notice on the left side we now have lists of "Include", "Other Profiles", etc. So instead of these tags or special files, you can click the "+" symbol, select the folder or file to add to that specific list, and it will be stored in the settings.

In order to help with the transition of lists from 2.5 to 3.0 though, I've implemented the same inferencing code from 2.5 in 3.0 but as a one time "figure out my settings" feature. When selecting a modlist to compile, if you select a modlist.txt file (MO2 profile) the inferencer will automatically scan your modlist to find all these tags, and files and configure the compiler settings automatically.

So now we get back to the reason for the install-compile-install-verify command. There's a step in this command that inferences the settings and then runs the compiler. Once that command runs without fail on every one of the lists in the gallery, we'll have a certain level of confidence that we're ready to ship 3.0. 

Files

Comments

John Barry

Yay! Great news.