TIP Thunderbird components fix
From Gentoo Linux Wiki
| Terminals / Shells • Network • X Window System • Portage • System • Filesystems • Kernel • Other |
- This page is a candidate for deletion
- Reason given: Information on this page is no longer relevant.
- If you disagree with its deletion, please explain why on its discussion page.
- If you intend to fix it, please remove this notice, but do not remove this notice from articles that you have created yourself.
- Make sure no other pages link here and check the page's history before deleting.
Contents |
[edit] Problem
You have emerged thunderbird 0.7.3 or 0.7.3-r1 and you can't get the forumzilla plug-in to work. If you open the javascript window, you see that you have the following errors:
Error: XMLSerializer is not defined Source File: chrome://forumzilla/content/global.js Line: 53
Error: appDirectoryService has no properties Source File: chrome://forumzilla/content/FeedService.js Line: 285
[edit] Cause
The xmlextras component is not installed with these releases, so scripts that rely on XML component features will raise errors.
[edit] Fix
Note that this fix is only for the situation and build versions described above.
[edit] Backup your profiles
Before messing around with builds it's always a good idea to backup your data. Your profile is in your .thunderbird folder in your home directory. You can back it up with the copy command (cp), the -r option makes it copy all the subdirectories:
#cp -r .thunderbird thunderbird.backup
[edit] Un-install the forumzilla plug-in
- open thunderbird
- select the Extensions option from the Tools menu.
- select the forumzilla plug-in from the list.
- push the un-install button
- close thunderbird
You may need to repeat this for each profile that you have the extension installed under.
[edit] Remove Thunderbird
- open a console and switch to root:
#su - root
- then enter the command:
#emerge unmerge mozilla-thunderbird
[edit] Modify the build settings
- open the file /usr/portage/eclass/mozilla.eclass in an editor:
#nano -w /usr/portage/eclass/mozilla.eclass
- find the section that looks like this:
| File: mozilla.eclass |
# Setup extensions.
# This is a little strange because "configure" is the same for moz/ff/tb but
# the extensions don't work everywhere. In particular we don't want to
# start the ff/tb lists with "default"
if ${MOZ}; then
myext="default"
use mozdevelop && myext="${myext},venkman"
use gnome && myext="${myext},gnomevfs"
use moznoirc && myext="${myext},-irc"
use mozxmlterm && myext<="${myext},xmlterm"
elif ${FF}; then
# note that help is broken, and irc doesn't work
myext="cookie,inspector,negotiateauth,pref,transformiix,typeaheadfind,universalchardet,webservices,xmlextras,xml-rpc"
use mozdevelop && myext="${myext},venkman"
use gnome && myext="${myext},gnomevfs"
else
myext="pref,spellcheck,universalchardet,wallet"
fi
|
The {$MOZ} block is for mozilla itself, ${FF} is for firefox, so for thunderbird you need to add to the line myext="..." after the last else, so that it looks like this:
myext="pref,spellcheck,universalchardet,wallet,xmlextras"
Then save the file.
[edit] Re-install
- still as root:
#emerge mozilla-thunderbird
- open thunderbird
- select the Extensions option from the Tools menu.
- push the install button
- select the forumzilla installation file (.xpi)
- close thunderbird
[edit] Troubleshooting
Your extension should now work. To verify that the xmlextras component has been installed:
#ls /usr/lib/MozillaThunderbird/components
should display the following files:
libxmlextras.so<br>
xmlextras.xpt code>
This shows that the files have been installed by the build. If not, check that mozilla.eclass still contains your modification.
#grep XMLSerializer /usr/lib/MozillaThunderbird/components/xpti.dat
should return something like:
846,nsIRDFXMLSerializer,{8ae1fbf8-1dd2-11b2-bd21-d728069cca92},26,-1,1 code>
The numbers don't matter so much as the line existing which means the component has been registered with xpcom. If this line is not there you could try rebuilding the xpti.dat file:
| Code: |
|
#rm /usr/lib/MozillaThunderbird/components/xpti.dat
#/usr/lib/MozillaThunderbird/regxpcom |
If the line still fails to appear but the files listed earlier exist in the correct place, this suggests a problem with regxpcom.
#grep XMLSerializer /usr/lib/MozillaThunderbird/components/compreg.dat
should return:
Javascript DOM class,XMLSerializer,@mozilla.org/xmlextras-domci-extender;1 code>
This means that the component has been registered with xpconnect and javascript calls should get mapped to the correct object. If this line is not there you could try rebuilding the compreg.dat file:
| Code: |
|
#rm /usr/lib/MozillaThunderbird/components/compreg.dat
#/usr/lib/MozillaThunderbird/regchrome |
If the line still fails to appear, this suggests a problem with regchrome.
These last two files (xpti.dat and compreg.dat) also exist in your profile directory. They are cached, but installing a plug-in should cause them to be re-built. If not, you can delete or rename them as they will get re-created the next time you run thunderbird. The cached files / directories that sometimes cause problems are:
- compreg.dat
- xpti.dat
- XUL.mfasl
- chrome
