WoWInterface (
-   AddOn Search/Requests (
-   -   Ace2 Dependencies? (

Jayhawk 12-10-06 04:07 AM

Ace2 Dependencies?
You may have noticed I'm having some issues with this...

I've read that FuBar addons should be able to run without FuBar. I've been trying this, as to check that I've got all the required Libraries, but no dice. Worse, the add on doesn't load at all...but doesn't throw any errors either. :(

I tried to set the following libraries to load.
  • * AceAddon-2.0
  • * AceConsole-2.0
  • * AceDB-2.0
  • * AceEvent-2.0
  • * AceHook-2.1
  • * AceLibrary
  • AceLocale-2.2 (specifically using this in SkillsPlus)
  • * AceOO-2.0
  • Babble-Race-2.2 (specifically using this in SkillsPlus)
  • Babble-Spell-2.2 (specifically using this in SkillsPlus)
  • * Compost-2.0
  • Crayon-2.0 (specifically using this in SkillsPlus)
  • Dewdrop-2.0 (specifically using this in SkillsPlus)
  • FuBarPlugin-2.0 (specifically using this in SkillsPlus)
  • Metrognome-2.0 (specifically using this in SkillsPlus)
  • Tablet-2.0 (specifically using this in SkillsPlus)
* add on not in the current upload

The FubarPlugin-2.0 documention says it needs:
  • Ace2
  • CompostLib
  • DewdropLib
  • TabletLib

Where as the lua itself says:
  • AceLibrary
  • AceOO-2.0
  • AceEvent-2.0
  • DewdropLib
  • TableLib
As you see it doens't mention CompostLib...

Digging deeper, I see AceOO-2.0.lua is dependent on:
  • AceLibrary

Whereas AceEvent-2.0.lua is dependent on:
  • AceLibrary
  • AceOO-2.0
Neither of the API documentation pages say anything about dependencies...

I also checked with some other addons, like Nevcairiel's ItemBonusesFu, which shows up just fine, but looking at the libraries...I don't really see much difference (or at least not stuff I can see that would make a difference...)

I'm confused..should I just dump in all of the Ace2 stuff even if it isn't used directly, just to make sure there's not a single dependency missing?

Please note the current version has FuBar set as dependency. I switched did that off when I was testing the above.

mizrolist 12-10-06 05:22 AM

i don't know if it helps you, but I hope so...

Jayhawk 12-10-06 06:00 AM

Thanks. :)

I did since then find out a few more things...
One) If you set #LoadOnDemand to TRUE obviously the addon won't load automatically...

Two) If you set it to FALSE, it will load automatically and error message will pop up for missing dependencies.

What doesn't help is that there seem to be multiple versions of the same libraries included in various add ons (nor do all FuBar plugins carry with them the complete set of libraries they need to run).

So.. I think I got everything now. Except for one thing... Is there a way to manually load an add on if #LoadOnDemand 0?

LaoTseu 12-10-06 10:10 AM

My own AllPlayed addon is a FuBar addon that can run without FuBar. I'm always testing it alone and it was a bit of a pain to get the dependencies right at the beginning. You can look at what Ace... libraries I load to give you a starting point.

One think I can tell you is that none of the Ace... libraries use Compost. In fact, Compost is no longer supposed to be necessary (LUA 5.1.1 fixed the table memory problem) and authors are removing it from their addons. That doesn't mean that an addon no longer need Compost but it does mean that none of the Ace... libraries should need it.

There are two ways that an Ace2 addon may be missing labraries. First, the author may have updated to a new version of the library (e.g. AceLocale-2.0 to AceLocale-2.2), made the change in the LUA code (local L = AceLibrary("AceLocale-2.2"):new("xxx")) but forgot to change the .TOC file and to include the new folder in the libs directory. This error happen often because if you have another Ace2 addon that load before yours or if you use the standalone version of the libraries for development, the new library is available even though you are not including it in your package. In short, the addon works OK in the author environment but may not work in yours. To fix this, you need to check the LUA code and make sure that all the proper libraries (and their dependencies) are listed in the .TOC file and that all the proper folders are present in the addon folder. You could also include that standalone Ace2 lib folders in your setup but I would not recommend that.

Second, the TOC refer to libraries that are not present. This happen because we use SVN to commit the addon code and the ZIP files are generated automatically. Authors will often just take that ZIP, rename it and upload it to the sites like WoWInterface. The issue is that the WoWAce servers have been hammered down by excessive load since the last patch so often the script that include the external libraries in the ZIP file fails. To fix this, you just have to identify the missing library directories and copy them over from another Ace2 addon that has them.

In both cases, if you load the addon by itself, you just add libraries until it load making sure that the addon .TOC points to the proper files and that the proper files are present in the addon libs directory.

Hope that helps.

Jayhawk 12-11-06 12:36 AM

Thanks Lao, I ended up doing exactly that after I realised the LoadOnDemand was playing tricks on me.

After a lot of fiddling, trying to find the latest libraries (or at least those that are internally compatible) I came up with the following list:
  • AceAddon-2.0
  • AceConsole-2.0
  • AceDB-2.0
  • AceEvent-2.0
  • AceHook-2.1
  • AceLibrary
  • AceLocale-2.2
  • AceOO-2.0
  • Babble-Race-2.2
  • Babble-Spell-2.2
  • Crayon-2.0
  • Dewdrop-2.0
  • FuBarPlugin-2.0
  • Metrognome-2.0
  • Tablet-2.0

The Babble libs and Metrognome are specific to SkillsPlus, but the rest seems to be what's needed to have a FuBar add on be fully stand alone.

What's clear though is that very few FuBar addons contain all their required libraries...

Elkano 12-11-06 04:07 AM

With AceEvents-2.0 you most likely won't need Metrognome if you port your code.

BTW: when are you going to upload to the SVN? ;)

LaoTseu 12-11-06 05:12 PM


Originally Posted by Elkano
With AceEvents-2.0 you most likely won't need Metrognome if you port your code.

BTW: when are you going to upload to the SVN? ;)

I'm an interested party here. I use Metrognome in AllPlayed because I need to update every second or every 20 seconds. When I did it, the AceEvent and Metrognome doc and forum posts were saying that Metrognome was better for those kind events. What changed in AceEvent that make this no longer true?

I'm asking here since the Ace Wiki is still not available and the libraries documentation is not available anywhere else as far as I know.

Thanks in advance.

Jayhawk 12-12-06 12:18 AM

Thanks for the comment Elkano. Any pointers on using AceEvent in stead of Metrognome? I think I saw a reference to it, but...

As for SVN. I go the account, I got the login, I'm waiting for the site to calm down, so as not to run into any Error 500 messages halfway uploading. I hope it will be done by the weekend. :)

Elkano 12-12-06 01:55 AM

when the wiki is online, check here:

and wrt SVN it's working fine even if the page shows 500 :)

All times are GMT -6. The time now is 09:59 PM.

vBulletin © 2020, Jelsoft Enterprises Ltd
© 2004 - 2020 MMOUI