Most addons that would move to wowlua are built by the BigWigs packager today. Moving should change nothing a player can notice. So the exit check of milestone M6 asks one question: does an addon adopted with wowlua init --from-pkgmeta build the same AddOn as the packager?
What "the same" means
wowlua moves sources into src/ and copies only the library files the game loads, so a byte-for-byte diff of the two zips would always fail. Decision T119 defines the comparison instead. For every flavor, both builds must:
- load the same files in the same order, byte-identical (in-game paths may name
src/); - ship identical assets;
- carry the same TOC directives, apart from
VersionandX-Wowlua-*.
Files only the packager ships that the game never loads are listed, but allowed.
How the check runs
Both tools package the same commit at the same time, so unpinned externals resolve to the same revisions. The packager runs the way each project's CI runs it: multi-version, with -S, or game by game with -g and -m. Then cargo xtask packager-diff compares the loaded files, assets and TOC directives per flavor.
ADDON_REPO=https://github.com/Nevcairiel/Bartender4 \ scripts/packager-compat.sh # needs bash 4+, git, svn, curl, unzipOn the wowlua side, adoption is one command. The TOC files become wowlua.json, Lua and XML files move into src/, .pkgmeta externals become dependencies, and compatibility settings are read from .pkgmeta and the project's CI workflows.
package-as: MyAddonexternals: Libs/LibStub: https://repos.wowace.com/wow/libstub/trunk Libs/AceAddon-3.0: https://repos.wowace.com/wow/ace3/trunk/AceAddon-3.0The 36 addons
Every addon below was built at a pinned commit by both tools. All of them load identical code in every flavor and client locale and ship the same files, with the packager's line endings and TOC versions. A selection, with the number of AddOn folders each ships:
| addon | folders | note |
|---|---|---|
| BigWigs | 12 | |
| LittleWigs | 12 | |
| DBM | 8 | voice pack as an external addon |
| Details | 8 | |
| AtlasLootClassic | 8 | |
| Dominos | 6 | |
| WeakAuras | 5 | |
| ElvUI | 3 | |
| Bartender4 | 1 | the check script's default |
The rest: Inventorian, Plater, Masque, Mapster, Quartz, BugSack, SimulationCraft, AdvancedInterfaceOptions, GatherMate2, ShadowedUnitFrames, RCLootCouncil2, omnibar, Capping, BigWigs_Voice, BigWigs_Classic, SexyMap, MythicDungeonTools, TellMeWhen, AllTheThings, OmniCC, Cell, TotalRP3, BlizzMove, QuickQuest, BigWigs_WrathOfTheLichKing, Tukui and KuiNameplates.
What it doesn't cover
The check is static. It compares what the client would load, not how the addons behave once loaded. It runs weekly in CI as the packager-compat workflow, so a change that breaks equivalence shows up within a week.