Released on 2023-10-02.
https://www.python.org/downloads/release/python-3120/
Note that the top-level setup.py script has disappeared completely,
hence the two dropped patches. AFAICT this doesn't regress building any
of the native modules, presumably because the configure script fully
takes care of this now:
```
The necessary bits to build these optional modules were not found:
_dbm _gdbm _posixshmem
_tkinter nis ossaudiodev
To find the necessary bits, look in configure.ac and config.log.
Checked 111 modules (31 built-in, 73 shared, 1 n/a on serenityos-x86_64,
0 disabled, 6 missing, 0 failed on import)
```
This needs the (now relatively common) `libtool` patch, but allows us to
sidestep a bunch of issues that relate to linking static libraries into
position-independent executables.
Abseil's Serenity support is a little limited:
- No support for any timezone shenanigans since protobuf hopefully
doesn't use those. For now, abseil will always believe to be in UTC on
Serenity.
- In most places where explicit platforms need to be added to a list of
supported platforms, Serenity will be missing. Again I only added the
ones that are required for protobuf.
Fixes build error
```
error "It looks like you're trying to enable vendor availability
markup, but you haven't defined the corresponding macros yet!"
```
while trying to #include <__availability> header without having
the necessary preprocessor directive
`_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS` set
This is a minor bugfix release, which to my knowledge contains nothing
of importance to us. However, there is one QoL change to our patches.
We no longer force `-fpic` in the compiler driver, and instead use the
`--enable-default-pie` configure option to generate position-independent
code suitable for executables. For building shared libraries, the
`-fpic` flag must be specified explicitly.
This version contains my patch that adds support for the proprietary
VideoCore mailbox message for reading the kernel command line, so
patches aren't needed anymore.
This also removes existing patches that were trying to fix warnings
one-by-one.
Note that the patch making `CurrentSp` static was incorrect, the
variable needs to be on the stack for us to retrieve the current stack
address.
This ports an implementation of the FTS functions that can be used to
traverse the file system. They are non-standard, but provided by glibc
and most BSD systems. This ported library implements FTS for musl-based
Linux systems and happens to work on Serenity.
Following the removal of the `drand48` patch to the configure script,
we can now remove this patch as it is no longer needed to prevent an
interpreter hang.