New option: -s. Runs included scripts. Ignored if -u (unpackage) is present.
Permissions of extracted files are now preserved. (i.e. extracted scripts are now set to be executable.) The changelogs are special-cased to *not* be set to 000. Because that's just retarded.
TOC files are munged to comment out non-present files. This should improve load times if you're running with non-embedded libraries. So sayeth the wise ckknight.
With this new version I'm having a problems with Skinner. All the SkinMe entries seem to get commented out, probably because they don't exist and the user is expected to copy the ones they want from AddonSkins.
Also Prat/Pitbull and SpecialEvents-Loot are all telling me they cant find library instances.
With this new version I'm having a problems with Skinner. All the SkinMe entries seem to get commented out, probably because they don't exist and the user is expected to copy the ones they want from AddonSkins.
Also Prat/Pitbull and SpecialEvents-Loot are all telling me they cant find library instances.
Commenting gone too far? :P
I can give you a switch to toggle the commenting, I guess. I hadn't considered Skinner's weird structure.
Regarding the library instances, which libraries aren't being found? Of the addons you mentioned, I use PitBull, and haven't had any problems like that.
Decided to run a force update on everything and here are the errors I'm getting:
1)
[2007/06/20 17:35:29-184-x1]: Prat\Prat.lua:418: Cannot find a library instance of SharedMedia-1.0.
Ace2\AceLibrary\AceLibrary.lua:470: in function `AceLibrary'
Prat\Prat.lua:418: in main chunk
2)
[2007/06/20 17:35:29-184-x1]: AceOO-2.0-38641 (Ace2):627: FuBarPlugin-2.0: FuBarPlugin-2.0 requires Dewdrop-2.0.
Ace2\AceLibrary\AceLibrary.lua:100: in function `error'
FuBarPlugin-2.0-40574:885: in function `OnInstanceInit'
AceOO-2.0-38641 (Ace2):627: in function `init'
AceAddon-2.0-40893 (Ace2):778: in function `init'
AceOO-2.0-38641 (Ace2):463: in function <Interface\AddOns\Ace2\AceOO-2.0\AceOO-2.0.lua:436>
(tail call): ?:
Prat\extras\PratFu.lua:147: in main chunk
---
3)
[2007/06/20 17:35:29-184-x1]: Prat\extras\PratWaterfall.lua:35: Cannot find a library instance of Dewdrop-2.0.
Ace2\AceLibrary\AceLibrary.lua:470: in function `AceLibrary'
Prat\extras\PratWaterfall.lua:35: in main chunk
---
4) --> I get 35 of these messages, just referencing different LUA files, thoufht I'd keep it small for you ;) <--
[2007/06/20 17:35:29-184-x1]: Prat\Prat_Modules\extras\Presets.lua:48: attempt to call method 'RequestModuleName' (a nil value)
---
39)
[2007/06/20 17:35:30-184-x1]: SpecialEvents-Loot-1.0\SpecialEvents-Loot-1.0.lua:14: SpecialEvents-Loot-1.0 requires Deformat-2.0.
SpecialEvents-Loot-1.0\SpecialEvents-Loot-1.0.lua:14: in main chunk
---
40)
[2007/06/20 17:35:52-184-x1]: PitBull-r40890\Banzai\Banzai.lua:73: PitBull_Banzai requires the library Banzai-1.1 to be available.
AceAddon-2.0-40893 (Ace2):760: in function <Interface\AddOns\Ace2\AceAddon-2.0\AceAddon-2.0.lua:753>
<in C code>: ?
AceEvent-2.0-40601 (Ace2):232: in function `TriggerEvent'
AceEvent-2.0-40601 (Ace2):910: in function <Interface\AddOns\Ace2\AceEvent-2.0\AceEvent-2.0.lua:903>
---
BugGrabber gives me a 1m cooldown warning because I'm receiving a poop-ton of errors.
After checking out the errors it seems that some of my addons are being loaded before the librarys they require are being loaded and are throwing an error.
I went through each addons TOC file, that was throwing an error, and made a 'Dependencies' line and copy/pasted the 'X-Embeds' listing.
On a side note, the embeds.xml file is still trying to load the shared library's. I commented it out in bartender, bigwigs, ora2, itempricetooltip, incubator, cartographer, skinner, candybar, specialeventsembed, prat, automation, bulkmail2, quartz, pitbull and threat-1.0 *catches breath* and now I'm not receiving any loading errors in my FrameXML.log nor any error messages in game. From what I've read this also increases loading performance.
Just wanted to let ya know, maybe you can comment those out as well ;)
Not sure if anyone else is seeing this but when I run the updater it updates everything like it should but then, if I run it again, it updates everything it just updated to the same version. Perhaps there was a change to the format of the latest.xml file or maybe an error in it's generation?
I am using version 2.0.6 of the updater.
Here's some sample output (same output for 2 consecutive runs):
Run 1:
$ date;python /Applications/World\ of\ Warcraft/wowacepy/wowace.py -e Thu Jun 28 22:38:44 EDT 2007
INFO Loading local addons
INFO Checking http://files.wowace.com/latest.xml for updated addons
INFO Upgrading !StopTheSpam from 39894 to 39894.1009
INFO Upgrading ArkInventory from 40460 to 40460.1041
INFO Upgrading AutoBar from 42073 to 42073.5
INFO Upgrading Automaton from 41643 to 41643.2
INFO Upgrading BanzaiAlert from 40974 to 40974.2
...
Run 2:
$ date;python /Applications/World\ of\ Warcraft/wowacepy/wowace.py -e Thu Jun 28 22:41:13 EDT 2007
INFO Loading local addons
INFO Checking http://files.wowace.com/latest.xml for updated addons
INFO Upgrading !StopTheSpam from 39894 to 39894.1009
INFO Upgrading ArkInventory from 40460 to 40460.1041
INFO Upgrading AutoBar from 42073 to 42073.5
INFO Upgrading Automaton from 41643 to 41643.2
INFO Upgrading BanzaiAlert from 40974 to 40974.2
...
So glad I found this, as wau doesn't work for me at all.
I modified an addon a little, namely ag_unitframes. Is there any way to keep the script from updating that particular addon? How does the script know that an addon is an updatable ace2 addon?
Edit: Ok, I found addon_can_be_updated in the code, but I neither understand the code nor the comment well enough... Do I have to create a folder or a file named .ignore in the addon directory? Should the filename be ".ignore" or "ignore"? Thanks.
So glad I found this, as wau doesn't work for me at all.
I modified an addon a little, namely ag_unitframes. Is there any way to keep the script from updating that particular addon? How does the script know that an addon is an updatable ace2 addon?
Broadly speaking, it feels that an addon is a wowace addon if it has the same name as one on files.wowace.com. This could theoretically have a false-positive effect, of course, but I haven't seen it yet.
Edit: Ok, I found addon_can_be_updated in the code, but I neither understand the code nor the comment well enough... Do I have to create a folder or a file named .ignore in the addon directory? Should the filename be ".ignore" or "ignore"? Thanks.
Yup -- a file or folder named .ignore or .svn in the addon directory will make it never be updated.
Smarter TOC editing.
Use new "provides" data in the feeds to fill previously difficult dependencies.
'Accept-encodings: gzip' was missing from the last release. Ooops.
GUI version will load addons from server on launch instead of waiting for "check".
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.4/threading.py", line 442, in __bootstrap
self.run()
File "/usr/lib/python2.4/threading.py", line 422, in run
self.__target(*self.__args, **self.__kwargs)
File "gui.py", line 185, in reload_data
except wowace.urllib.URLError, e:
AttributeError: 'module' object has no attribute 'urllib'
changing urllib to urllib2 on that line results in an error further down the code:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.4/threading.py", line 442, in __bootstrap
self.run()
File "/usr/lib/python2.4/threading.py", line 422, in run
self.__target(*self.__args, **self.__kwargs)
File "gui.py", line 190, in reload_data
except IOError, (errno, strerror):
ValueError: need more than 1 value to unpack
Despite the errors, the gui appears and is responsive. Clicking on the "World of Warcraft Addons directory" browse button throws:
Traceback (most recent call last):
File "gui.py", line 290, in browse_wowdir
dlg = wx.DirDialog(self, "Choose your WoW Addons directory:", style=wx.DD_DEFAULT_STYLE | wx.DD_DIR_MUST_EXIST)
AttributeError: 'module' object has no attribute 'DD_DIR_MUST_EXIST'
After entering my AddOns directory manually, the addons show in the Install tab, but there is no scroll bar on the list. Paging up and down using the keyboard works fine. To top it all off, the window has no decorations (title bar, close/minimize/maximize buttons, etc). Other than that, excellent utility! I've been using the command line up to this point since I just now realized it had a gui.
I'm using Python 2.4.4 (#1, May 26 2007, 08:28:55) with wxPython/wxGTK 2.6.3.3.
Maybe I'm not the only one who is tired of fixing OptionalDeps every single time after using the updater. I posted messages in the Aloft and Threat-1.0 threads, but the authors don't bother fixing one single line in the toc. Too much work I guess. Whatever.
Here's a python script to add missing dependencies to .toc files. Save it to e.g. fix.py (it has to be in the same dir as wowace.py). Then add the broken addons you're using and their missing dependencies. I run this script after wowace.py.
import os
import re
from wowace import TocFile, default_wowdir
missing = {
"Aloft": ["GratuityLib"],
"FuBar_MoneyFu": ["AbacusLib"],
"Threat-1.0": ["SpecialEventsEmbed"],
"DrDamage": ["GratuityLib","SpecialEventsEmbed"],
"ErrorMonster": ["SinkLib"],
}
for name, deps in missing.iteritems():
try:
toc = TocFile(os.path.join(default_wowdir, name, name+'.toc'))
except IOError:
print 'addon',name,'not found'
else:
if toc.meta.has_key("OptionalDeps"):
optdeps = [x.strip() for x in toc.meta["OptionalDeps"].split(',')]
for dep in deps:
if optdeps.count(dep) == 0:
print "fixing dependency",dep,"for",name
toc.meta["OptionalDeps"] += ", "+dep
toc.dirty = True
else:
print name,"fixed",dep
if toc.dirty:
print toc.meta["OptionalDeps"]
toc.save()
WowAcePy chokes when updating PeriodicTable-3.0 when it is a dependency of any package and forced.
./scripts/wowacepy/wowace.py -f Baggins
INFO Loading local addons
INFO Checking http://files.wowace.com/latest-noext.xml for updated addons
INFO Upgrading Baggins from 48425 to 48425
INFO Upgrading Ace2 from 48022 to 48022
INFO Upgrading GratuityLib from 46651 to 46651
INFO Upgrading PeriodicTable-3.0 from 48586 to 48586
Traceback (most recent call last):
File "./scripts/wowacepy/wowace.py", line 488, in <module>
_dispatch()
File "./scripts/wowacepy/wowace.py", line 480, in _dispatch
updater.update_addon(arg, get_deps=options.get_deps, unpackage=options.unpackage, delete_old=options.delete_old, force=options.force, script=options.script)
File "./scripts/wowacepy/wowace.py", line 107, in update_addon
self.update_addon(dep, get_deps, unpackage, script, delete_old, force)
File "./scripts/wowacepy/wowace.py", line 117, in update_addon
toc.comment_missing_files()
File "./scripts/wowacepy/wowace.py", line 320, in comment_missing_files
if not os.path.exists(os.path.join(d, f.replace('\\', os.path.sep))):
File "/usr/lib64/python2.5/posixpath.py", line 65, in join
path += '/' + b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 1: ordinal not in range(128)
WowAcePy chokes when updating PeriodicTable-3.0 when it is a dependency of any package and forced.
[...]
File "./scripts/wowacepy/wowace.py", line 320, in comment_missing_files
if not os.path.exists(os.path.join(d, f.replace('\\', os.path.sep))):
File "/usr/lib64/python2.5/posixpath.py", line 65, in join
path += '/' + b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 1: ordinal not in range(128)
I'm getting the same error. I don't know Python but googling around I got the impression that unicode filename handling is rather strange with python. Anyway this fixes it for me, however I'm not sure it is the right fix:
Index: wowace.py
===================================================================
--- wowace.py (revision 71)
+++ wowace.py (working copy)
@@ -11,6 +11,7 @@
import platform
import urllib2
import gzip
+import codecs
from StringIO import StringIO
from optparse import OptionParser
from xml.dom.minidom import parse
@@ -295,7 +296,7 @@
self.dirty = False
def parse(self):
- f = open(self.filename, 'r')
+ f = codecs.open(self.filename, "r", "utf-8", "ignore" )
for line in f.readlines():
if len(line.strip()) > 0:
m = self.remeta.match(line)
@@ -303,7 +304,11 @@
#k,v = line.replace('##', '').strip().split(':')
self.meta[m.group(1)] = m.group(2)
else:
- self.files.append(line.strip())
+ if os.path.supports_unicode_filenames:
+ self.files.append(line.strip())
+ else:
+ # Ok, let's hope everyone uses simple filenames
+ self.files.append(line.strip().encode("ascii", "ignore"))
f.close()
def save(self):
I do have problems running wowace.py on Ubuntu Linux. WoW is installed in /home/thomas/.wine/drive_c/Programme/World of Warcraft and I tried to use --wowdir which does not work:
thomas@thrall:~$ .wine/drive_c/Programme/World\ of\ Warcraft/wowace.py --wowdir=/home/thomas/.wine/drive_c/Programme/World\ of\ Warcraft/Interface/Addons
Traceback (most recent call last):
File ".wine/drive_c/Programme/World of Warcraft/wowace.py", line 488, in <module>
_dispatch()
File ".wine/drive_c/Programme/World of Warcraft/wowace.py", line 469, in _dispatch
updater = wowace(wowdir=options.wowdir, wowace=options.wowace, externals=options.externals, logfile=os.path.join(options.wowdir, 'wowace.log'))
File ".wine/drive_c/Programme/World of Warcraft/wowace.py", line 37, in __init__
raise IOError, "World of Warcraft directory (%s) not found" % wowdir
IOError: World of Warcraft directory (/home/thomas/.wine/drive_c/Programme/World of Warcraft/Interface/Addons) not found
I tried it with and without escaping, I edited wowace.py to hardcode the directory but nothing works. Any ideas?
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Also Prat/Pitbull and SpecialEvents-Loot are all telling me they cant find library instances.
Commenting gone too far? :P
I can give you a switch to toggle the commenting, I guess. I hadn't considered Skinner's weird structure.
Regarding the library instances, which libraries aren't being found? Of the addons you mentioned, I use PitBull, and haven't had any problems like that.
BugGrabber gives me a 1m cooldown warning because I'm receiving a poop-ton of errors.
-Edit-
Added a BugGrabber log with 119 errors :S
I went through each addons TOC file, that was throwing an error, and made a 'Dependencies' line and copy/pasted the 'X-Embeds' listing.
Example
Now everything loads fine. Maybe you could just replace 'X-Embeds' with 'Dependencies' and get rid of 'embeds.xml' in the loading section?
If you update again in about 20 minutes the problems should go away.
On a side note, the embeds.xml file is still trying to load the shared library's. I commented it out in bartender, bigwigs, ora2, itempricetooltip, incubator, cartographer, skinner, candybar, specialeventsembed, prat, automation, bulkmail2, quartz, pitbull and threat-1.0 *catches breath* and now I'm not receiving any loading errors in my FrameXML.log nor any error messages in game. From what I've read this also increases loading performance.
Just wanted to let ya know, maybe you can comment those out as well ;)
I am using version 2.0.6 of the updater.
Here's some sample output (same output for 2 consecutive runs):
Run 1:
$ date;python /Applications/World\ of\ Warcraft/wowacepy/wowace.py -e
Thu Jun 28 22:38:44 EDT 2007
INFO Loading local addons
INFO Checking http://files.wowace.com/latest.xml for updated addons
INFO Upgrading !StopTheSpam from 39894 to 39894.1009
INFO Upgrading ArkInventory from 40460 to 40460.1041
INFO Upgrading AutoBar from 42073 to 42073.5
INFO Upgrading Automaton from 41643 to 41643.2
INFO Upgrading BanzaiAlert from 40974 to 40974.2
...
Run 2:
$ date;python /Applications/World\ of\ Warcraft/wowacepy/wowace.py -e
Thu Jun 28 22:41:13 EDT 2007
INFO Loading local addons
INFO Checking http://files.wowace.com/latest.xml for updated addons
INFO Upgrading !StopTheSpam from 39894 to 39894.1009
INFO Upgrading ArkInventory from 40460 to 40460.1041
INFO Upgrading AutoBar from 42073 to 42073.5
INFO Upgrading Automaton from 41643 to 41643.2
INFO Upgrading BanzaiAlert from 40974 to 40974.2
...
I modified an addon a little, namely ag_unitframes. Is there any way to keep the script from updating that particular addon? How does the script know that an addon is an updatable ace2 addon?
Edit: Ok, I found addon_can_be_updated in the code, but I neither understand the code nor the comment well enough... Do I have to create a folder or a file named .ignore in the addon directory? Should the filename be ".ignore" or "ignore"? Thanks.
Broadly speaking, it feels that an addon is a wowace addon if it has the same name as one on files.wowace.com. This could theoretically have a false-positive effect, of course, but I haven't seen it yet.
Yup -- a file or folder named .ignore or .svn in the addon directory will make it never be updated.
Smarter TOC editing.
Use new "provides" data in the feeds to fill previously difficult dependencies.
'Accept-encodings: gzip' was missing from the last release. Ooops.
GUI version will load addons from server on launch instead of waiting for "check".
Running gui.py results in an error:
changing urllib to urllib2 on that line results in an error further down the code:
Despite the errors, the gui appears and is responsive. Clicking on the "World of Warcraft Addons directory" browse button throws:
After entering my AddOns directory manually, the addons show in the Install tab, but there is no scroll bar on the list. Paging up and down using the keyboard works fine. To top it all off, the window has no decorations (title bar, close/minimize/maximize buttons, etc). Other than that, excellent utility! I've been using the command line up to this point since I just now realized it had a gui.
I'm using Python 2.4.4 (#1, May 26 2007, 08:28:55) with wxPython/wxGTK 2.6.3.3.
Here's a python script to add missing dependencies to .toc files. Save it to e.g. fix.py (it has to be in the same dir as wowace.py). Then add the broken addons you're using and their missing dependencies. I run this script after wowace.py.
./scripts/wowacepy/wowace.py -f Baggins
INFO Loading local addons
INFO Checking http://files.wowace.com/latest-noext.xml for updated addons
INFO Upgrading Baggins from 48425 to 48425
INFO Upgrading Ace2 from 48022 to 48022
INFO Upgrading GratuityLib from 46651 to 46651
INFO Upgrading PeriodicTable-3.0 from 48586 to 48586
Traceback (most recent call last):
File "./scripts/wowacepy/wowace.py", line 488, in <module>
_dispatch()
File "./scripts/wowacepy/wowace.py", line 480, in _dispatch
updater.update_addon(arg, get_deps=options.get_deps, unpackage=options.unpackage, delete_old=options.delete_old, force=options.force, script=options.script)
File "./scripts/wowacepy/wowace.py", line 107, in update_addon
self.update_addon(dep, get_deps, unpackage, script, delete_old, force)
File "./scripts/wowacepy/wowace.py", line 117, in update_addon
toc.comment_missing_files()
File "./scripts/wowacepy/wowace.py", line 320, in comment_missing_files
if not os.path.exists(os.path.join(d, f.replace('\\', os.path.sep))):
File "/usr/lib64/python2.5/posixpath.py", line 65, in join
path += '/' + b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 1: ordinal not in range(128)
I'm getting the same error. I don't know Python but googling around I got the impression that unicode filename handling is rather strange with python. Anyway this fixes it for me, however I'm not sure it is the right fix:
I tried it with and without escaping, I edited wowace.py to hardcode the directory but nothing works. Any ideas?