commit: a4d1a445ac121959b4220c290f42e2bd32318334
parent d0a522113f36f683345e5f0efb6917ad9793618f
Author: fosslinux <fosslinux@aussies.space>
Date: Tue, 17 Jan 2023 09:23:14 +1100
Add documentation
Diffstat:
2 files changed, 127 insertions(+), 0 deletions(-)
diff --git a/parts.rst b/parts.rst
@@ -858,3 +858,127 @@ musl 1.2.3
With GCC and binutils supporting a musl-based toolchain natively, musl itself is rebuilt
with support for dynamic linking.
+
+Python 2.0.1
+============
+
+Everything is in place to bootstrap the useful programming language/utility
+Python. While Python is largely written in C, many parts of the codebase are
+generated from Python scripts, which only increases as Python matured over time.
+
+We begin with Python 2.0.1, which has minimal generated code, most of which can
+be removed. Lib/{keyword,token,symbol} scripts are rewritten in C and used to
+regenerate parts of the standard library. Unicode support and sre (regex)
+support is stripped out.
+
+Using the stripped-down first version of Python 2.0.1, Python 2.0.1 is rebuilt,
+including Unicode and regex support (required for future Python builds). The
+first version is insufficient to run the Lib/{keyword,token,symbol} scripts, so
+those continue to use the C versions.
+
+Precompiled Python code at this point is highly unreproducible, so it is
+deleted (JIT compiled instead). This makes Python itself slower, but this is of
+little consequence.
+
+Python 2.3.7
+============
+
+Python 2.0.1 is sufficient to build Python 2.3.7.
+
+Differences to 2.0.1:
+
+* The new "ast" module, performing parsing of Python, is generated from a
+ parsing specification using Python code.
+* 2.0.1 is insufficient to run 2.3.7's unicode regeneration, so Unicode
+ support is again stripped out.
+
+Python 2.3.7 is then rebuilt to include Unicode support.
+
+Python 2.5.6
+============
+
+Python 2.3.7 is sufficient to build Python 2.5.6, with a few minimal changes to
+language constructs in scripts. This is the last 2.x version we build.
+
+Differences to 2.3.7 are very minimal.
+
+Python 3.1.5
+============
+
+Python 2.5.6 is new enough to be able to build Python 3.1.5, allowing us to move
+into the modern 3.x series of Python. Various patching is required, as some
+scripts in the tree are still Python 2 while others are Python 3. We have to
+convert the Python 3 ones back to Python 2 to be able to use Python 2.5.6.
+
+Differences to 2.5.6:
+
+* An include cycle when a distributed file is removed arises, we have to jump
+ through some hoops to make this work.
+* At the second pass of building, various charset encodings can be regenerated &
+ used in the standard library (required in future Python 3.x).
+* The new ssl Python library is disabled due to our OpenSSL version being too
+ new.
+
+Python 3.1.5 is rebuilt, using Python 3 for the Python 3 scripts in the tree.
+
+Python 3.3.7
+============
+
+Python 3.1.5 is sufficient to build Python 3.3.7 (rapid language change = small
+jumps).
+
+Differences to 3.1.5:
+
+* The ssl Python library can now be re-enabled, and ``_ssl_data.h`` regenerated.
+
+Python 3.4.10
+=============
+
+Python 3.3.7 is sufficient to build Python 3.4.10.
+
+Differences to 3.3.7:
+
+* The clinic tool has been introduced, which unifies documentation with code.
+ Clinic creates many generated files. We run the clinic tool across all files
+ using clinic.
+* The ssl library breaks in much more ugly ways than before, but unlike previous
+ versions, it passes over this error silently.
+
+Python 3.8.16
+=============
+
+Python 3.4.10 is sufficient to build Python 3.8.16.
+
+Differences to 3.4.10:
+
+* The build system has been significantly revamped (coming in line with modern
+ standards).
+* Many of our previous regenerations can be replaced with one ``make regen-all``
+ invocation.
+* The stringprep Python module, previously deleted, is now required, so it is
+ regenerated.
+
+Python 3.11.1
+=============
+
+The newest version of Python, Python 3.11.1 can now be built.
+
+Differences to 3.8.16:
+
+* Unfortunately, the build system has regressed slightly. We must choose the
+ order to perform regenerations in the Makefile ourselves, as some
+ regenerations use other regenerations, but the Makefile does not include them
+ as dependencies.
+* The concept of "frozen" modules has been introduced, adding a layer of
+ complexity to regeneration.
+* ``stdlib_module_names.h`` is a new file that must be built using data from a
+ current Python binary. To achieve this, a dummy ``stdlib_module_names.h`` is used
+ for the build, then ``stdlib_module_names.h`` is created, and Python is
+ rebuilt using the proper ``stdlib_module_names.h``. Unfortunately this
+ greatly increases the time taken to build Python, but it is not trivial to
+ work around.
+* A new generated script ``Lib/re/_casefix.py`` is introduced.
+* The ssl module, now unbroken, can be built again.
+* Very recent Python versions allow for the use of ``SOURCE_DATE_EPOCH`` to
+ remove determinism from precompiled Python libraries (``.pyc``). Finally, we
+ can re-enable compiling of Python modules.
diff --git a/sysc/openssl-1.1.1l/openssl-1.1.1l.sh b/sysc/openssl-1.1.1l/openssl-1.1.1l.sh
@@ -2,6 +2,9 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
+# XXX: If you change the version of this, you must update the corresponding
+# tarball in Python 3.11.
+
src_prepare() {
default