100 Commits
Author SHA1 Message Date
Jeremy Andrews 241f9c3965 Issue #3038 - Fix ./mach help command on Python 3.14.
This was a deliberate change in Python 3.14 specifically, should be noted that the old code worked
on every earlier Python version before this. It also was not documented in the release notes,
but it was easy to find people complaining about them tightening the API here.

Ref: https://discuss.python.org/t/argparse-valueerror-action-store-true-is-not-valid-for-positional-arguments/106355
2026-04-27 12:53:09 -05:00
Jeremy Andrews 2ad83109ee Issue #3068 - Implement C++ wrapper.
I looked at the Python wrapper so many times and felt like I was
writing C by proxy to clean up Python assumptions, and started
wondering if C++ was the right tool for this job instead of Python.
Here's my attempt at a C++ version of this wrapper. I'm offering both
options, you can revert this commit if you prefer the Python version.
2026-04-27 01:21:42 -05:00
Jeremy Andrews 993f6947d0 Issue #3068 - Fix non-English MSVC text corruption.
This fixes the original Python wrapper. So basically, the Python developers
have a poor grasp of how Windows handles anything outside of UTF-16 and
the W APIs, and barely understand ANSI codepages, let alone console codepages.
Both MSYS1 and Python 3 seem to treat Windows NT like Windows 9x way too often.
Not the kind of 1990s nostalgia trip we had in mind, but it's the one we got.
2026-04-27 01:21:27 -05:00
athenian200 3e38744f8b No Issue - Fix non-fatal powershell invocation on Windows.
This only happened because Python 3 no longer has the limitation of requiring VS 2009 to build binary extensions, and Python uses powershell to build those on Windows for some reason. Was an optional module anyway, not worth the annoyance it caused some users.
2026-04-25 09:20:32 +00:00
athenian200 eaf6665b70 Issue #3038 - Make sure js/src/configure.in invokes Python 3.
Missed this file while cleaning up Python 2 references in shell scripts. Not sure this is used, but better safe than sorry.
2026-04-23 04:43:28 +00:00
Jeremy Andrews 0ea174bd02 Issue #3038 - Add explicit UTF-8 decode to check_debug_ranges.
Should be safe because this code path will only fire on Linux and Unix-likes.
Committing directly to master due to it being a one-line change similar to all
the other Python 3 changes.
2026-04-19 13:29:08 -05:00
Jeremy Andrews 4fbecf0e50 Issue #3038 - Fix ARM assembler issues in libpixman.
Probably not strictly related to Python 3 changes, but small enough
that expanding the scope to general UXP build issues on Debian
won't be too bad an idea, since the issue was reported there anyway.
Likely related to binutils updates reporter mentioned.
2026-04-18 16:37:30 -05:00
athenian200 18a693a8ab Merge pull request 'Completely remove all remaining usages of and references to dbus-glib from our tree' (#3039) from Basilisk-Dev/UXP-contrib:dbus-glib-removal into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3039

I reviewed and tested this PR on Fedora 43 two days ago. Gave it an r+. Was admittedly hoping Travis (our main Linux guy) would confirm my results, but Basilisk-Dev already tested Oracle Linux and I already tested Fedora, so that is likely good enough. Looked at the patch visually and see nothing that could go wrong on Windows or any other platform, since all the changes appear confined to Linux and WebRTC code paths that we don't use for Windows or Mac. Looks correct, and should be low-risk even if there are issues.

**Justification for merge into master on own initiative:**

1. I have enough Linux experience to confirm the patch shouldn't break our official Linux builds.

2. Patch mostly touches WebRTC related stuff in Basilisk-Dev's area of concern, so he is the most qualified to sign off on such changes.

3. The patch has been tested twice.

4. MC is a bit preoccupied with the server move.

5. Travis also appears to have been busy.

6. 10 days have passed since PR was first submitted.

If master breaks or anything unusual happens as a result of this merge, I am prepared to accept the blame and consequences.

Sincerely,

Jeremy Andrews (athenian200)
2026-04-18 01:41:48 +00:00
Jeremy Andrews 3b0aadb95c Issue #3038 - Fix ccache builds and clean up Python 3.14 warning spew.
None of these resulted in build bustage using our default configuration,
but apparently ccache builds were broken due to a bytes/text issue. Wish
the original reporter had mentioned he was using ccache, but he saved me
a lot of busywork. Changes appear safe across whole range of Python
versions we support.
2026-04-08 02:31:52 -05:00
Jeremy Andrews b180acefa2 Issue #2974 - Follow-up: Fix 32-bit Windows builds.
Apparently on 32-bit builds, bytes are passed into the build system in exactly
one more place than on 64-bit builds. The fix is trivial and one-line...
hopefully no one minds me doing this as a quick follow-up to the original
issue, it was very small and missed during testing.
2026-04-02 21:32:32 -05:00
Jeremy Andrews 02ec45c715 Issue #2974 - Part 70: Clean up PPC code so we can build on PPC.
Normally we'd want to do this as part of clean-up for Android-related
enums we don't use or making mozbuild syntax more consistent, but
Python 3's strict enforcement of enums kinda forced my hand here.
In principle, it's a little out of scope, but in practice the "scope"
is practically every Python file in the build system at this
point, unfortunately including mozbuild.
2026-03-30 15:03:49 -05:00
Jeremy Andrews 3b21b1bc49 Issue #2974 - Part 69: Attempt to deal with EnumString issues.
Improve logger handling when they happen, also try to keep EnumString
objects out of gyp where we know not all enums will match our internal list.
2026-03-29 16:16:54 -05:00
Jeremy Andrews c36a9c674e Issue #2974 - Part 68: Fix a regex warning and improve Python check.
Trying to get this cleaned up...
2026-03-28 11:13:48 -05:00
Jeremy Andrews 4ff3a75296 Issue #2974 - Part 67: Last-minute FreeBSD fixes.
Something went wrong on FreeBSD... I hope I don't have to go back
to the drawing board again.
2026-03-28 11:13:20 -05:00
athenian200 b9842306a4 merge upstream 2026-03-26 02:29:44 +00:00
Jeremy Andrews 5d63edee09 Issue #2974 - Part 66: client.mk and configure.in shouldn't invoke Python 2.
This was unneeded on my system because I made sure the build system couldn't
find Python 2 on the PATH, forcing it to use Python 3. Many developers may
be in environments with both available, so this should be changed.
2026-03-25 21:06:01 -05:00
Jeremy Andrews 017e021c37 Issue #2974 - Part 65: Last-minute Linux fixes.
Forgot to test packaging on Linux this whole time.

Also, kept forgetting to commit these random changes to mozbuild
files that just refer to GNU/kFreeBSD consistently as kFreeBSD.

Not because it's the right thing to call it, but because it's
what we have in the enums that works consistently right now.
And ripping out support entirely would be out of scope.
2026-03-25 11:47:07 -05:00
Jeremy Andrews 12641659e6 Issue #2974 - Part 64: Use venv in VirtualenvManager.
I felt like this was a cheat when I did it in my hacky build, and
seriously thought ChatGPT was just suggesting this because it was too
lazy to figure out how to fix virtualenv. I learned several things:

- The approach virtualenv 15.x uses to simulate a Python environment
  does not work after Python 3.10. So we'd need a newer virtualenv
  anyway, which has different quirks. I got it to "work" on Python 3.11...
  but only by copying (almost) the whole stdlib and a bunch of DLL files to
  bootstrap it. Which is no longer a virtualenv, it's... just an env.

- VirtualenvManager is Mozilla's code, not a part of virtualenv itself.
  Which means everything we need is now contained within our own code,
  no third-party module like virtualenv required.

- Our build system doesn't depend on virtualenv quirks at all. In
  a pinch, if you copy all the .pth files it generates into the
  system's site-packages directory (after turning them all into
  absolute paths), it would even run under system Python. It really
  only "needs" virtualenv to find its own modules because of how it
  was designed.

- I've tested venv extensively across a wide range of Python 3 versions.
  not a single one has any issues or behaves in a noticably different
  fashion from a build based on a repaired virtualenv extended up to
  Python 3.10, which means no regressions were introduced by the switch.

- Python's devs want the venv route over the way virtualenv did things.
  PEP 405 was very critical of virtualenv's design, and PEP 587 created a
  a new configuration mechanism precisely so no application would have to
  do what virtualenv did to get isolation without copying
  the whole interpreter into another directory.

- Mozilla also did something similar in BZ 1766497, so they clearly
  thought venv had enough features for their build system.
2026-03-25 04:33:16 -05:00
Jeremy Andrews 16f351a14c Issue #2974 - Part 63: Bring in lex and yacc from "dirty" migration.
These versions work on 3.14, my attempt at a cleaner solution did not.
Besides, they apparently were designed for Python 3 to start with.
The mid-to-late parts of that migration were mostly correct, it seems.

Ref: https://repo.palemoon.org/athenian200/UXP/commit/4117ccfc36284845cb4c75cf4e3d5a8997417225#diff-48dc6c6013e343ba4e196819d2cd873b3d576140
2026-03-25 01:27:12 -05:00
Jeremy Andrews 235db83ca0 Issue #2974 - Part 62: Replace cgi.escape with html.escape.
The cgi module was removed from Python 3.14. html module has almost
the exact same thing, and this was apparently used to format html
rather than cgi anyway, so it's probably more correct.

Ref: PEP 594
https://peps.python.org/pep-0594/#cgi
2026-03-24 18:39:27 -05:00
Jeremy Andrews 160e956ab5 Issue #2974 - Part 61: Python 3.14 AST changes.
This was done sloppily in my initial work, this is a bit more clean.

Ref: https://docs.python.org/3/deprecations/pending-removal-in-3.14.html
2026-03-24 05:11:44 -05:00
Jeremy Andrews 2cecbc0e7f Issue #2974 - Part 60: Last fixes for virtualenv.
After 3.10, it won't work anymore... thankfully lack of virtualenv
wasn't the cause of busted symlinks on Linux after all.
2026-03-24 05:04:58 -05:00
Jeremy Andrews 11226f5308 Issue #2974 - Part 59: Make backend file generation more deterministic.
This led to a lot of false positives while trying to resolve the other
issue. The changes don't seem to cause harm, so I'd like to keep them...
they make debugging easier.
2026-03-23 12:14:25 -05:00
Jeremy Andrews 8ff0eb3b1c Issue #2974 - Part 58: Fix regexes and lexer on Python 3.11+
Newest versions of Python 3 do not like lex.py or the regexes used by
xpidl. These workarounds allow it to work anyway.
2026-03-23 12:09:24 -05:00
Jeremy Andrews 2bb084e824 Issue #2974 - Part 57: Prevent backend regeneration loop.
Sometimes Python 3.11+ keeps thinking the backend has changed due to
excessively precise timestamps or something. This workaround makes sure
that make doesn't regenerate the backend more than once per run.
2026-03-23 12:07:25 -05:00
Jeremy Andrews c089567185 Issue #2974 - Part 56: Full Python 3.10 support.
Deal with rU full deprecation and collections.abc move being enforced.
2026-03-22 05:18:14 -05:00
Jeremy Andrews 62397ff43e Issue #2974 - Part 55: Remove pip from build system, fix Linux builds.
pip was apparently breaking Linux builds and I didn't even notice. Turns out
virtualenv doesn't even need pip, and Python ships its own pip so I don't know
why this was even needed...
2026-03-22 04:53:47 -05:00
Jeremy Andrews 458f60d071 Issue #2974 - Part 54: Replace distutils.strtobool with custom implementation.
Another sys.path.append hack in virtualenv made necessary by an stdlib
deprecation. Sigh.

Ref: BZ 1877347
2026-03-20 20:21:45 -05:00
Jeremy Andrews 63752e83a5 Issue #2974 - Part 53: Replace distutils.sysconfig with sysconfig.
Fairly straightforward. Not too many problems here.
2026-03-20 18:09:10 -05:00
Jeremy Andrews 033b7f5219 Issue #2974 - Part 52: Read /etc/os-version manually to fill in missing logic.
There are third-party packages that will do this... but every distro
we support uses /etc/os-version now, and we only check in one place.
2026-03-20 14:36:23 -05:00
Jeremy Andrews 9c10d36094 Issue #2974 - Part 51: Replace imp with importlib.
imp was actually still available up until Python 3.9 or so. Ripping
it out made me go through the headache of debugging our import logic.
Granted, it was deprecated long ago and there was plenty of warning, but
since we are doing the migration now it's all hitting at once if we want
to support any semi-modern Python.
2026-03-20 13:29:08 -05:00
Jeremy Andrews 19f0115559 Issue #2974 - Part 50: Remove distutils.version and replace.
Python no longer provides any version-related utilities in stdlib.

Did a thorough grep and made absolutely sure to replace every last
use. This was the work I was avoiding during my first port...

Ref: PEP 632, BZ 1777414, BZ 1858065, BZ 1766085
2026-03-20 04:14:03 -05:00
Jeremy Andrews 5188aa4874 Issue #2974 - Part 49: Various logging fixes.
Try to ensure error messages from mozbuild are readable...
2026-03-17 03:42:38 -05:00
Jeremy Andrews 4e11fab9b4 Issue #2974 - Part 48: Python 3.8+ related fixes.
Got everything working under older Python 3, to deal with fewer issues at once.
Now the following had to be done:

- time.clock had to be replaced with time.process_time
- Drive letters now need explicit normalization because they are uppercase
by default (was the reason why I had to turn everything into a relpath before).
- Virtualenv works, but needs a couple extra modules because of new includes
in newer Python 3 versions.
2026-03-17 03:10:33 -05:00
Jeremy Andrews 8cb419166a Issue #2974 - Part 47: Fix packaging.
Tested ./mach package, ./mach mozpackage, ./mach installer, and ./mach mar
Everything should work.
2026-03-16 19:28:14 -05:00
Jeremy Andrews e431c0cb13 Issue #2974 - Part 46: Linux-related fixes.
Also moved the Windows version of my NSDISTMODE=copy thing where
I meant to have it in the first place, it was misplaced before.
2026-03-16 05:25:34 -05:00
Jeremy Andrews 889a1c39c5 Issue #2974 - Part 45: Miscellaneous build system tweaks.
Most notably, these tweaks were needed to fix ./mach build faster.
Also chose to set NSDISTMODE=copy by default for Windows, since
wildcards will be symlinks otherwise. This will always fail
because our binaries have the symlinked MSVC DLLs in their import
tables, and Windows loader silently fails in this situation.
2026-03-15 19:01:00 -05:00
Jeremy Andrews 6c77f329da Issue #2974 - Part 44: Make ppCheck Python 3 compatible.
I also wound up having it point out files that can't be decoded as UTF-8.
Not sure if it was the right move, can remove that feature if it's not wanted.
2026-03-15 18:51:24 -05:00
Jeremy Andrews 0e0823a4df Issue #2974 - Part 43: Import random NSIS installer file from Mozilla.
This file was already ported to Python 3 by them, and hasn't seen breaking
changes, so it was safe to use.

Ref: BZ 1633016, BZ 1751990
2026-03-15 15:58:44 -05:00
Jeremy Andrews f335e05ff6 Issue #2974 - Part 42: Jar and preprocessor changes.
For strings/bytes issue, used a similar strategy to what I saw in our old
layout code, having a flag set to be false by default as it's passed from
function to function, eventually being activated and doing something at
a specific point in the loop if it's ever true. The datetime stuff is
simply because in Python 3, integer comparisons were failing so I had
to make both sides be an integer Unix timestamp.
2026-03-15 15:49:04 -05:00
Jeremy Andrews 74762d6567 Issue #2974 - Part 41: Update configobj to version 5.
This version is compatible with Python 3 already.
2026-03-14 20:12:48 -05:00
Jeremy Andrews 1545a33858 Issue #2974 - Part 40: Miscellaneous build system tweaks prior to new configobj.
More small tweaks mostly related to decoding/encoding, some not even related to
failures but are more anxiously done in anticipation of something going wrong.
Even though these are called commits, I often revise little things several
times because I am not sure what the most robust approach would be.
2026-03-14 19:57:16 -05:00
Jeremy Andrews 1801a9148d Issue #2974 - Part 39: Fix early WebIDL generation issues. 2026-03-14 19:55:21 -05:00
Jeremy Andrews deff79b573 Issue #2974 - Part 38: Fix early IPDL generation issues.
This is fewer issues than I remember encountering last time... 2to3 must have
helped. Though I won't hold my breath that newer Python 3 will be this
forgiving when I get around to that near the end.
2026-03-14 19:54:14 -05:00
Jeremy Andrews 0dbe65d6af Issue #2974 - Part 37: Fix malformed track files.
The issue was essentially that the fourth field was being stripped due to the
way Python 3 handles text. I solved the problem originally with a "pad" hack to
add the extra space back in, since that actually gets interpreted as a reference
to the current directory. The eventual solution mostly involved using . instead of
a blank space to refer to the current directory. Don't know if the other stuff
was needed, may remove later if it causes any issues.
2026-03-14 18:51:21 -05:00
Jeremy Andrews 04e6f86a60 Issue #2974 - Part 36: Fix XPIDL and XPT generator.
Most of this is taken from my original port, but I did revisit xpt.py
and rework the way cmp was translated to Python 3 by using a
ComparableMixin class.
2026-03-14 01:27:31 -05:00
Jeremy Andrews 214fc9bdfb Issue #2974 - Part 35: FileAvoidWrite changes and other tweaks after new gyp.
Most notable changes are the ugly stuff I had to do in FileAvoidWrite and
everything that interacts with it, which is where I expect a lot future pain
and revision to enter the picture from, if I have to revisit this part of the
work again.
2026-03-11 02:17:23 -05:00
Jeremy Andrews 3dd092c8d8 Issue #2974 - Part 34: Import new version of gyp, ensure it finds six.
Dropping this in actually just works for NSS (no promises this will hold true
with Basilisk), because gyp's design is a lot more conservative and consistent
compared with upstream Mozilla code. For some reason, the new gyp couldn't find
the six library it relies on that's already in our tree, and the library also
needed a small update. Also incorporates a few simple Python 3 tweaks to our
gyp_reader code.
2026-03-11 01:59:39 -05:00
Jeremy Andrews cb559a5eb2 Issue #2974 - Part 33: Miscellaneous build system tweaks prior to new gyp.
Not really sure how to categorize these, except they are either
language-related cleanups, small bug fixes, or are careful to decode
things using the preferred OS encoding where reasonable. A lot of UTF-8 only
worked by luck because it only tried to decode ASCII bytes, or had good
replacements for bad chars due to explicit error handling.

I'm basically just commiting the last state before I update gyp, because
I can't really proceed without updating it, and that's a big enough step I want
it to have its own commit... and also don't want it mixed in with other stuff.
2026-03-09 23:28:50 -05:00
Jeremy Andrews 313dcc69fa Issue #2974 - Part 32: Fix configure sandbox builtins, update encoding guards. 2026-03-09 18:40:53 -05:00
Jeremy Andrews 367505a1b0 Issue #2974 - Part 31: Fix indented_repr and TypedTuple, remove encode.
indented_repr and encode were introducing corruption into config.status
blocking the build. TypedTuple's logic needed to change a bit due to Python 3.
encode can just be removed because it does more harm than good now.
indented_repr was fixed. Note it was always limited to ASCII range because
that's the "safe zone" CP1252 and UTF-8 have in common. Investigate replacing
this with pprint and repr if we ever need Unicode in config.status...
2026-03-09 17:44:33 -05:00
Jeremy Andrews fb669b392c Issue #2974 - Part 30: Address strict EnumString handling in OS_ARCH/OS_TARGET. 2026-03-09 17:16:11 -05:00
Jeremy Andrews b818d7905a Issue #2974 - Part 29: More fixes to virtualenv.
Wasn't as hard as I expected to get this working. Mostly just missing imports,
and they are only missing because Mozilla added a couple to the base import
that caused no issues on Python 2, but require an additional slew of imports
on Python 3.
2026-03-09 16:13:55 -05:00
Jeremy Andrews 827b1052ea Issue #2974 - Part 28: Further fixes to processhandler and winprocess.
This is apparently the one place we can't use UTF-8 on Windows, we absolutely
need CP1252 here. Mozilla originally avoided a lot of these encoding issues by
treating everything as bytes. That trick won't fly in Python 3, so we now
have to deal with text streams and face Windows and Unicode issues.

Ref: BZ 1585702
2026-03-09 16:01:44 -05:00
Jeremy Andrews 04b9a2f949 Issue #2974 - Part 27: Actually fix processhandler.py.
This is the work I was trying to avoid in my initial port... now it's time to
actually do it.

Ref: BZ 1473498, BZ 1428713, BZ 1799483
2026-03-07 22:49:29 -06:00
Jeremy Andrews d9821226cf Issue #2974 - Part 26: Clean up more bytestrings and fix busted logging system.
Also modified virtualenv.py just enough to see the next failure mode.
2026-03-07 22:20:02 -06:00
Jeremy Andrews 17e3d48201 Issue #2974 - Part 25: Logic changes in decorators and string_version.
In decorators.py, the original logic fails because cls.__init__ is now a
function instead of a method in Python 3.

In string_version.py, the issue is that str.__init__(self, args) is no longer a
valid way of referencing the parent class of the function, the no-argument
super() can do that in Python 3 properly by using the __class__ cell variable.

Ref: PEP 3135
https://peps.python.org/pep-3135/
2026-03-06 21:35:00 -06:00
Jeremy Andrews 151ca2805b Issue #2974 - Part 24: Stop encoding strings to bytes in configure and clobber. 2026-03-06 20:06:10 -06:00
Jeremy Andrews 93272b0ac0 Issue #2974 - Part 23: Clean up old string logic in configenvironment/mozinfo.
No real logic changes here, just obvious work.
2026-03-06 19:57:51 -06:00
Jeremy Andrews 763e812c4c Issue #2974 - Part 22: Fix-up main.py and config.py.
The bytestrings seem to break the build system. Also, get_hex is no longer a
thing, those two basestrings can become str (had to check), and
also noticed load_settings was ignoring its own argument.

Ref: BZ 1473498, BZ 1739556
https://hg-edge.mozilla.org/mozilla-central/rev/fa5e23975029
2026-03-06 18:39:10 -06:00
Jeremy Andrews 6433d1d7a4 Issue #2974 - Part 21: Disable old Win32 hack on Python 3.4+
The issue requiring this only affected older versions of Python 3.
Newer Python 3 no longer requires this. Mozilla also did this in their
initial Python 3 support, after moving the hack itself from mach to
somewhere in mozbuild. This commit also unblocks newer Python versions.

Ref: BZ 1473498
https://hg-edge.mozilla.org/mozilla-central/rev/fa5e23975029
2026-03-06 03:14:53 -06:00
Jeremy Andrews ae877638e8 Issue #2974 - Part 20: Use last few fixers.
Just rush through the last ones I semi-trust...

2to3 . --fix methodattrs -wpn
''           funcattrs   ''
''           has_key     ''
''           renames     ''
''           types       ''
''           nonzero     ''

Ref:
https://docs.python.org/3/whatsnew/3.0.html
2026-03-06 02:08:07 -06:00
Jeremy Andrews e12d6ebd5e Issue #2974 - Part 19: Use various fixers.
Mostly exec and execfile, but also StandardError and sys_exc.

2to3 . --fix exec -wpn
''           execfile ''
''           sys_exc  ''
''           standarderror ''

Ref:
https://docs.python.org/3/whatsnew/3.0.html
2026-03-05 22:10:28 -06:00
Jeremy Andrews 7abb343363 Issue #2974 - Part 18: Use str instead of unicode.
The standard str is unicode now...

2to3 . --fix unicode -wpn

Ref:
https://docs.python.org/3/whatsnew/3.0.html
2026-03-05 21:38:47 -06:00
Jeremy Andrews af6ae6a1d3 Issue #2974 - Part 17: Use new unittest names.
2to3 . --fix asserts -wpn

Ref:
https://docs.python.org/3.11/library/unittest.html#deprecated-aliases
2026-03-05 21:11:31 -06:00
Jeremy Andrews 69d2d3f47d Issue #2974 - Part 16: Adapt apply.
Syntax change, also cleaning up stuff from previous change.

2to3 . --fix apply -wpn

Ref:
https://docs.python.org/3/whatsnew/3.0.html
2026-03-05 20:00:40 -06:00
Jeremy Andrews 0ce9d8f121 Issue #2974 - Part 15: Adapt itertools.
Ordinary versions of these functions are iterators now,
rather than lists...

2to3 . --fix itertools -wpn
2to3 . --fix itertools_imports -wpn

Ref:
https://docs.python.org/3/whatsnew/3.0.html#range
2026-03-05 19:46:43 -06:00
Jeremy Andrews 0c61ee391c Issue #2974 - Part 14: Moved libraries and imports.
reduce is moved to functools, urllib reogranized.

2to3 . --fix urllib -wpn
2to3 . --fix reduce -wpn
2to3 . --fix import -wpn
2to3 . --fix imports -wpn
2to3 . --fix imports2 -wpn

Ref: PEP 3108, PEP 3100
https://peps.python.org/pep-3108/
https://peps.python.org/pep-3100/
2026-03-04 20:24:12 -06:00
Jeremy Andrews 5fdc8dd723 Issue #2974 - Part 13: Adapt octal number syntax.
Used to be like C, with 0755 or something, now it's
0o755. Also, long and int are the same type now.

2to3 . --fix numliterals -wpn
2to3 . --fix long -wpn

Ref: PEP 3127, PEP 237
https://peps.python.org/pep-3127/
https://peps.python.org/pep-0237/
2026-03-04 20:03:01 -06:00
Jeremy Andrews 5af8e3ba5c Issue #2974 - Part 12: Adapt metaclass syntax.
It seems to have moved out of the body of the function,
into the class definition. Hit this a couple times...

2to3 . --fix metaclass -wpn

Ref: PEP 3115
https://peps.python.org/pep-3115/
2026-03-04 18:55:13 -06:00
Jeremy Andrews 2f37a44b8f Issue #2974 - Part 11: Adapt iterator.next().
2to3 . --fix next -wpn

Ref: PEP 3114
https://peps.python.org/pep-3114/
2026-03-04 18:39:49 -06:00
Jeremy Andrews 6454d7492f Issue #2974 - Part 10: Adapt tuple unpacking.
2to3 . --fix tuple_params -wpn

They actually had a fixer for this?! Anyway... yeah,
Py2 allowed tuple parameter unpacking. Py3 doesn't.
However, the adaptations are fairly mechanical.

Ref: PEP 3113
https://peps.python.org/pep-3113/
2026-03-04 15:52:40 -06:00
Jeremy Andrews c77e0a8cec Issue #2974 - Part 9: Adapt input and raw_input
2to3 . --fix input -wpn
2to3 . --fix raw_input -wpn

Py2 input is the new Py3 input wrapped in eval tags.
The new input is the old raw_input.
This lets you have the old behavior. Mechanical.

Ref: PEP 3111
https://peps.python.org/pep-3111/
2026-03-04 15:16:45 -06:00
Jeremy Andrews 46f126c10c Issue #2974 - Part 8: Adapt except
2to3 . --fix except -wpn

Python 3 exception syntax is different. Comma-based syntax is gone,
much like print syntax is changed.
This lets you have the old behavior. Mechanical.

Ref: PEP 3110
https://peps.python.org/pep-3110/
2026-03-04 15:00:58 -06:00
Jeremy Andrews 4906a75883 Issue #2974 - Part 7: Adapt raise
2to3 . --fix raise -wpn

Python 3 raise syntax is different. Three-argument raise is
deprecated, much like print syntax is changed.
This lets you have the old behavior. Mechanical.

Ref: PEP 3109
https://peps.python.org/pep-3109/
2026-03-04 14:16:18 -06:00
Jeremy Andrews 8c0f0ccdcf Issue #2974 - Part 6: Adapt dict
2to3 . --fix dict -wpn

Py2 dict was a list by default, the iterator versions
were switched around to be the default.
This lets you have the old behavior. Mechanical.

Ref: PEP 3106
https://peps.python.org/pep-3106/
2026-03-04 13:56:53 -06:00
Jeremy Andrews 112c119477 Issue #2974 - Part 5: Adapt zip
2to3 . --fix zip -wpn

Py2 zip was a list, now zip is an iterator.
This lets you have the old behavior. Mechanical.

Ref:
https://www.artima.com/weblogs/viewpost.jsp?thread=208549
2026-03-04 13:29:40 -06:00
Jeremy Andrews ec4f21e5e3 Issue #2974 - Part 4: Adapt map
2to3 . --fix map -wpn

Py2 map was a list, now map is an iterator.
This lets you have the old behavior. Mechanical.

Ref:
https://www.artima.com/weblogs/viewpost.jsp?thread=208549
2026-03-04 13:22:20 -06:00
Jeremy Andrews 42fbdd74fd Issue #2974 - Part 3: Adapt filter.
2to3 . --fix filter -wpn

Py2 filter was a list, now filter is an iterator.
This lets you have the old behavior. Mechanical.

Ref:
https://www.artima.com/weblogs/viewpost.jsp?thread=208549
2026-03-04 13:13:03 -06:00
Jeremy Andrews 49615281cd Issue #2974 - Part 2: Adapt range/xrange.
2to3 . --fix xrange -wpn

range takes the place of Py2 xrange.
Py2 range was a list. Mechanical, did
it by hand several times...

Ref:
https://docs.python.org/3/whatsnew/3.0.html#range
2026-03-04 08:33:16 -06:00
Jeremy Andrews e11fc9b4cf Issue #2974 - Part 1: Adapt all print statements.
2to3 . --fix print -wn
Essentially, print is a function instead of statement.
Ref:
PEP 3105
https://peps.python.org/pep-3105/
2026-03-04 03:48:01 -06:00
Jeremy Andrews a935ef810c Issue #186 - Remove AIX references from moz.build.
This should not be kept around because AIX is not a valid OS_TARGET and I've seen mach fail at least once because of these. Meant to clean them up years ago.
2026-02-21 15:43:48 -06:00
Jeremy Andrews c868ea1f58 Issue #190 - Remove MOZ_IOS conditional code and ios.m4 2026-02-21 18:58:35 +01:00
Jeremy Andrews d5e385dc73 Issue #190 - Remove UIKit conditional code. 2026-02-21 18:55:44 +01:00
Jeremy Andrews 110e4f1ca2 Issue #2467 - Fix scrolling with mouse wheel when NPAPI is disabled.
Refactors an else if statement into an else inside an if block.
2024-02-04 08:51:25 -06:00
Jeremy Andrews a66c8a088f Issue #1638 - Follow-up: Fix syntax error in Part 6. 2024-01-12 00:32:33 -06:00
Jeremy Andrews 722eaab39a Merge branch 'npapi_disable_work' of https://repo.palemoon.org/athenian200/UXP into npapi_disable_work 2024-01-11 12:30:40 -06:00
Jeremy Andrews 05cebf17e0 Issue #1638 - Part 8: Additional Mac fixes. 2024-01-11 12:30:13 -06:00
athenian200 9ea951fa6a Issue #1638 - Part 7: Allow GTK2 builds without gtk2xtbin. 2024-01-11 09:28:14 -06:00
Jeremy Andrews 174b2b76df Issue #1638 - Part 6: Disable plugin-container. 2024-01-11 07:10:27 -06:00
athenian200 9af4b97fbe Issue #1638 - Follow-up: Fix syntax error in Part 5. 2024-01-11 05:23:34 -06:00
Jeremy Andrews bbf374ad17 Issue #1638 - Part 5: Disallow mixing --enable-webrtc with --disable-npapi. 2024-01-11 04:43:33 -06:00
Jeremy Andrews ba58438b41 Issue #1638 - Part 4: Fix Mac build.
This was in the original removal bug, I just missed a couple lines.
2024-01-11 04:06:15 -06:00
Jeremy Andrews 0bf5eaaa2b Issue #1638 - Part 3: Clean up moz.build files. 2024-01-10 09:16:23 -06:00
athenian200 ff713f133e Issue #1638 - Part 2: Disable GTK2 when building with GTK3 and without NPAPI.
The original purpose of this issue.

Ref: BZ 1377445
2024-01-10 04:03:35 -06:00
athenian200 b787af5702 Issue #1638 - Part 1: Put NPAPI code behind MOZ_ENABLE_NPAPI.
Adds --disable-npapi as an additional build option. The default is still to build in NPAPI compatibility, but with this flag, it's finally possible to build without pulling in GTK2 on systems that don't have the package.

This essentially ifdefs everything associated with NPAPI, following various Mozilla removal bugs.

Ref: BZ 1682030, BZ 1251202, BZ 1217665, BZ 1687239
2024-01-10 04:03:35 -06:00
Jeremy Andrews 87b346631f No Issue - Add full-screen-api.ignore-widgets pref to about:config.
This was already in the codebase, but not exposed by default. Mozilla exposed
the pref to fulfill user requests in Firefox 59. Forum users requested the same feaure of pseudo-fullscreen windows. Seems minor enough not to be worth
creating an issue for, since users can already access this by creating a bool
pref.

Ref: BZ 1422535
2023-12-19 00:23:03 -06:00
Jeremy Andrews c84c6189cf Issue #2399 - Fix LDAP on Linux. 2023-12-01 19:01:18 -06:00
Jeremy Andrews d8bc8410b0 Issue #1312 - Switch to X-Mailer, and pull from AppInfo instead of HTTP headers.
I've been thinking about this issue, and ultimately it's just correcting a
mistake Mozilla made that no consumer of UXP's MailNews ever complained about
before, so I think it's reasonable to fix the default behavior first, and then
let others complain before I start worrying about prefs or ifdefs. One thing
at a time.
2023-11-14 23:47:34 -06:00
Jeremy Andrews acb1d52fe4 Issue #2382 - Move font-related stuff back to old-configure.
It's really easy to overlook configure options in moz.configure,
since most of what we work with is old-configure. Might as well move it
back in here so we can keep track more easily.
2023-11-13 20:59:54 -06:00