I've not had any luck getting it to work using official build.
c:/Derek/Downloads/palemoon-34.3.1.win32/palemoon/palemoon.exe -app ./semcat/application.ini -profile ./semcat/profile -no-remote -jsconsole -repo .
Code: Select all
1784241038200 addons.xpi ERROR startup failed: [Exception ... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXPCComponents_Utils.isModuleLoaded]" nsresult: "0x80040111
(NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: resource://gre/modules/addons/XPIProvider.jsm :: XPI_startup :: line 2034" data: no] Stack trace: XPI_startup0@resource://gre/modules/addons/XPIProvider.jsm:2034 <
callProvider(@resource://gre/modules/AddonManager.jsm:193 <_ startProvider(@resource://gre/modules/AddonManager.jsm:725 < startup0@resource://gre/modules/AddonManager.jsm:861 < startup0@resource://gre
/modules/AddonManager.jsm:2433 < observe0@jar:file:///C:/Derek/Downloads/palemoon-34.3.1.win32/palemoon/palemoon.res!/components/addonManager.js:58
resource://gre/modules/Log.jsm
Even if it did work, I think I'd run into crypto issues without this patch:
Code: Select all
diff --git a/toolkit/components/passwordmgr/crypto-SDR.js b/toolkit/components/passwordmgr/crypto-SDR.js
index b0916eb291..f9f10ea816 100644
--- a/toolkit/components/passwordmgr/crypto-SDR.js
+++ b/toolkit/components/passwordmgr/crypto-SDR.js
@@ -31,9 +31,15 @@ LoginManagerCrypto_SDR.prototype = {
__decoderRing : null, // nsSecretDecoderRing service
get _decoderRing() {
- if (!this.__decoderRing)
- this.__decoderRing = Cc["@mozilla.org/security/sdr;1"].
- getService(Ci.nsISecretDecoderRing);
+ if (!this.__decoderRing) {
+ const ns = {};
+ Services.scriptloader.loadSubScript("resource://gre/modules/OSCrypto_win.js", ns);
+ const osCrypto = new ns.OSCrypto;
+ this.__decoderRing = Object.defineProperties(osCrypto, Object.getOwnPropertyDescriptors({
+ get encryptString() { return this.encryptData; },
+ get decryptString() { return this.decryptData; }
+ }));
+ }
return this.__decoderRing;
},
Trying older tags also hasn't gone well either. Keep fighting with python2. To quote the bot, most recently:
RB_20250801 is py2-era and keeps hitting py2-vs-modern-Windows build bugs (mach py2 [fixed], js/src case [fixed via patch], now a py2 gyp DEPTH-path bug, likely more)
Currently only also tested RC_20260526 (earliest with python3), the issue is present there as well.
EDIT: got old tags building. Still nailing down when things got slow. Here are git diff patches to make it work in case someone in the future stumbles across this post.
gyp-relativepath-drivecase.patch
Code: Select all
diff --git a/media/webrtc/trunk/tools/gyp/pylib/gyp/common.py b/media/webrtc/trunk/tools/gyp/pylib/gyp/common.py
index a1e1db5f12..de269265fb 100644
--- a/media/webrtc/trunk/tools/gyp/pylib/gyp/common.py
+++ b/media/webrtc/trunk/tools/gyp/pylib/gyp/common.py
@@ -158,8 +158,17 @@ def RelativePath(path, relative_to, follow_path_symlink=True):
path_split = path.split(os.path.sep)
relative_to_split = relative_to.split(os.path.sep)
- # Determine how much of the prefix the two paths share.
- prefix_len = len(os.path.commonprefix([path_split, relative_to_split]))
+ # Determine how much of the prefix the two paths share. Compare
+ # case-insensitively on Windows: the drive letter's case can differ between
+ # |path| (from gyp.__file__, lowercase d:) and |relative_to| (from mozbuild,
+ # uppercase D:). A case-sensitive commonprefix would then find nothing in
+ # common, leaving the drive in the "relative" result and mangling it to a
+ # drive-relative path (d:foo) via os.path.join.
+ if sys.platform == 'win32':
+ prefix_len = len(os.path.commonprefix(
+ [[c.lower() for c in path_split], [c.lower() for c in relative_to_split]]))
+ else:
+ prefix_len = len(os.path.commonprefix([path_split, relative_to_split]))
# Put enough ".." components to back up out of relative_to to the common
# prefix, and then append the part of path_split after the common prefix.
ipdl-parser-normcase.patch
Code: Select all
diff --git a/ipc/ipdl/ipdl/parser.py b/ipc/ipdl/ipdl/parser.py
index 38c46dc73a..a0c3ef2578 100644
--- a/ipc/ipdl/ipdl/parser.py
+++ b/ipc/ipdl/ipdl/parser.py
@@ -57,8 +57,15 @@ class Parser:
def parse(self, input, filename, includedirs, errout):
assert os.path.isabs(filename)
- if filename in Parser.parsed:
- return Parser.parsed[filename].tu
+ # Case-normalize the cache key. On Windows the same .ipdl reaches us both
+ # via the top-level source list (uppercase drive `D:`) and via an
+ # `include protocol` resolved through an objdir includedir (lowercase
+ # `d:`) -- equal paths, but distinct dict keys. Without normcase the file
+ # is parsed twice, yielding two Protocol objects and spurious
+ # manager/manages "does not match" errors (e.g. PBrowser/PDocAccessible).
+ cachekey = os.path.normcase(filename)
+ if cachekey in Parser.parsed:
+ return Parser.parsed[cachekey].tu
self.lexer = lex.lex(debug=self.debug,
optimize=not self.debug,
@@ -71,7 +78,7 @@ class Parser:
self.tu.filename = filename
self.errout = errout
- Parser.parsed[filename] = self
+ Parser.parsed[cachekey] = self
Parser.parseStack.append(Parser.current)
Parser.current = self
process-define-files-normcase.patch
Code: Select all
diff --git a/python/mozbuild/mozbuild/action/process_define_files.py b/python/mozbuild/mozbuild/action/process_define_files.py
index f6d0c1695a..b7ee4062d8 100644
--- a/python/mozbuild/mozbuild/action/process_define_files.py
+++ b/python/mozbuild/mozbuild/action/process_define_files.py
@@ -33,8 +33,11 @@ def process_define_file(output, input):
config = ConfigEnvironment.from_config_status(
mozpath.join(topobjdir, 'config.status'))
- if mozpath.basedir(path,
- [mozpath.join(config.topsrcdir, 'js/src')]) and \
+ # Case-insensitive compare: on Windows the top configure yields an uppercase
+ # drive (D:) while the js/src subconfigure yields lowercase (d:) via msys, so
+ # this otherwise case-sensitive check must ignore drive-letter case.
+ if mozpath.basedir(path.lower(),
+ [mozpath.join(config.topsrcdir, 'js/src').lower()]) and \
not config.substs.get('JS_STANDALONE'):
config = ConfigEnvironment.from_config_status(
mozpath.join(topobjdir, 'js', 'src', 'config.status'))
reader-normcase.patch
Code: Select all
diff --git a/python/mozbuild/mozbuild/frontend/reader.py b/python/mozbuild/mozbuild/frontend/reader.py
index 165a8b7119..66993dbe7b 100644
--- a/python/mozbuild/mozbuild/frontend/reader.py
+++ b/python/mozbuild/mozbuild/frontend/reader.py
@@ -152,7 +152,10 @@ def is_read_allowed(path, config):
path = mozpath.normpath(path)
topsrcdir = mozpath.normpath(config.topsrcdir)
- if mozpath.basedir(path, [topsrcdir]):
+ # Case-insensitive compare: on Windows the top configure yields an uppercase
+ # drive (D:) while the js/src subconfigure yields lowercase (d:) via msys, so
+ # this otherwise case-sensitive check must ignore drive-letter case.
+ if mozpath.basedir(path.lower(), [topsrcdir.lower()]):
return True
if config.external_source_dir: