logo

live-bootstrap

Mirror of <https://github.com/fosslinux/live-bootstrap>
commit: eadc92cf388dcfd77ec8e1ef7c91a2f8d0574219
parent a94c8dbdce36dab9d80967e1c22581c343f0b7e9
Author: fosslinux <fosslinux@aussies.space>
Date:   Mon, 10 Oct 2022 22:20:19 +1100

Add Python-2.5.6

Diffstat:

Msysa/SHA256SUMS.pkgs1+
Asysc/Python-2.5.6/Python-2.5.6.sh78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asysc/Python-2.5.6/files/graminit-regen.patch31+++++++++++++++++++++++++++++++
Asysc/Python-2.5.6/patches/keyword.patch28++++++++++++++++++++++++++++
Asysc/Python-2.5.6/patches/posixmodule.patch33+++++++++++++++++++++++++++++++++
Asysc/Python-2.5.6/patches/sorted.patch29+++++++++++++++++++++++++++++
Asysc/Python-2.5.6/patches/sre_constants.patch20++++++++++++++++++++
Asysc/Python-2.5.6/sources7+++++++
Msysc/run2.sh2++
9 files changed, 229 insertions(+), 0 deletions(-)

diff --git a/sysa/SHA256SUMS.pkgs b/sysa/SHA256SUMS.pkgs @@ -2,6 +2,7 @@ dd761c6ab360b9ae66816b10fae38c3d547a146028188083295130f25dd03f5d Python-2.0.1_0 d64800e5da112f1cbdc3d2799ebd264d07fe8f111dd41edc37ed2276b3acda41 Python-2.0.1_1.tar.bz2 bc392178f552280ba1063123257bcf549fdea088e1f78f60c93e19c9e05fa3f6 Python-2.3.7_0.tar.bz2 97acf5c85ebfb47192fc310805ab3c80cb56f9d614027d6bdee11ae5934c2ab9 Python-2.3.7_1.tar.bz2 +e3e79771785905e169a19d8b0d784e74e5acf75889ebba2e18fcfb3ac01012f2 Python-2.5.6_0.tar.bz2 2fde9f584a275efc5c8bf23adaa690e06ab6922ecbc35108731e87f565ddb2b6 autoconf-2.12_0.tar.bz2 40d88d4b1048ab70eaecf753fb77713dfcaa9c9c72252cd36459236034cdcdfd autoconf-2.13_0.tar.bz2 38f0de4c816088c514dbfb1536779f2204426a95bd6f57fa87b83bffefcaa390 autoconf-2.52_0.tar.bz2 diff --git a/sysc/Python-2.5.6/Python-2.5.6.sh b/sysc/Python-2.5.6/Python-2.5.6.sh @@ -0,0 +1,78 @@ +# SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + + # Remove broken file + rm Lib/test/test_pep263.py + + # Delete generated files + rm Modules/glmodule.c + rm Include/Python-ast.h Python/Python-ast.c + rm Lib/stringprep.py + rm Misc/Vim/python.vim + mv Lib/plat-generic . + rm -r Lib/plat-* + mv plat-generic Lib/ + grep generated -r . -l | grep encodings | xargs rm + + # Regenerate unicode + rm Modules/unicodedata_db.h Modules/unicodename_db.h Objects/unicodetype_db.h + for f in UnicodeData CompositionExclusions EastAsianWidth; do + mv "../${f}-3.2.0.txt" . + mv "../${f}-4.1.0.txt" "${f}.txt" + done + python Tools/unicode/makeunicodedata.py + + # Regenerate sre_constants.h + rm Modules/sre_constants.h + python Lib/sre_constants.py + + # Regen ast module + rm Lib/compiler/ast.py + pushd Tools/compiler + python astgen.py > ../../Lib/compiler/ast.py + popd + + # Regenerate autoconf + autoreconf-2.71 -fi +} + +src_configure() { + CFLAGS="-U__DATE__ -U__TIME__" \ + ./configure \ + --prefix="${PREFIX}" \ + --libdir="${PREFIX}/lib/musl" +} + +src_compile() { + # Temporarily break include cycle + patch -Np0 -i graminit-regen.patch + # Build pgen + make Parser/pgen + # Regen graminit.c and graminit.h + make Include/graminit.h + + # Regenerate some Python scripts using the other regenerated files + # Must move them out to avoid using Lib/ module files which are + # incompatible with running version of Python + cp Lib/{symbol,keyword,token}.py . + python symbol.py + python keyword.py + python token.py + + # Undo change + patch -Np0 -R -i graminit-regen.patch + # Now build the main program + make CFLAGS="-U__DATE__ -U__TIME__" +} + +src_install() { + default + + # Remove non-reproducible .pyc/o files + find "${DESTDIR}" -name "*.pyc" -delete + find "${DESTDIR}" -name "*.pyo" -delete +} diff --git a/sysc/Python-2.5.6/files/graminit-regen.patch b/sysc/Python-2.5.6/files/graminit-regen.patch @@ -0,0 +1,31 @@ +SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space> + +SPDX-License-Identifier: PSF-2.0 + +There is a cycle in the build process. graminit.h requires +parsetok.c to be built, but graminit.h is included in parsetok.c. +Luckily the cycle can be broken by just NOP-ing the logic from +graminit.h. + +We apply this patch before regen-ing graminit.h and revert it +afterward. + +--- Parser/parsetok.c 2022-10-09 20:22:15.431229996 +1100 ++++ Parser/parsetok.c 2022-10-09 20:22:57.981822483 +1100 +@@ -8,7 +8,6 @@ + #include "parser.h" + #include "parsetok.h" + #include "errcode.h" +-#include "graminit.h" + + int Py_TabcheckFlag; + +@@ -239,7 +238,7 @@ + err_ret->text = text; + } + } else if (tok->encoding != NULL) { +- node* r = PyNode_New(encoding_decl); ++ node* r = NULL; + if (!r) { + err_ret->error = E_NOMEM; + n = NULL; diff --git a/sysc/Python-2.5.6/patches/keyword.patch b/sysc/Python-2.5.6/patches/keyword.patch @@ -0,0 +1,28 @@ +SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space> + +SPDX-License-Identifier: PSF-2.0 + +frozenset() is a feature only added in Python 2.5, but we are +building Python 2.5, so we must bypass this logic. (It is not +critical, so we can just remove it). + +--- Lib/keyword.py 2022-10-11 12:51:13.050744758 +1100 ++++ Lib/keyword.py 2022-10-11 12:52:05.946372559 +1100 +@@ -10,7 +10,7 @@ + python Lib/keyword.py + """ + +-__all__ = ["iskeyword", "kwlist"] ++__all__ = ["kwlist"] + + kwlist = [ + #--start keywords-- +@@ -48,8 +48,6 @@ + #--end keywords-- + ] + +-iskeyword = frozenset(kwlist).__contains__ +- + def main(): + import sys, re + diff --git a/sysc/Python-2.5.6/patches/posixmodule.patch b/sysc/Python-2.5.6/patches/posixmodule.patch @@ -0,0 +1,33 @@ +SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space> + +SPDX-License-Identifier: PSF-2.0 + +musl (correctly) implements the POSIX posix_close function, however +this was added after Python 2.5.6 was released. + +--- Modules/posixmodule.c 2022-10-05 18:38:46.718131893 +1100 ++++ Modules/posixmodule.c 2022-10-05 18:39:07.049250312 +1100 +@@ -5208,12 +5208,12 @@ + } + + +-PyDoc_STRVAR(posix_close__doc__, ++PyDoc_STRVAR(py_posix_close__doc__, + "close(fd)\n\n\ + Close a file descriptor (for low level IO)."); + + static PyObject * +-posix_close(PyObject *self, PyObject *args) ++py_posix_close(PyObject *self, PyObject *args) + { + int fd, res; + if (!PyArg_ParseTuple(args, "i:close", &fd)) +@@ -7371,7 +7371,7 @@ + {"tcsetpgrp", posix_tcsetpgrp, METH_VARARGS, posix_tcsetpgrp__doc__}, + #endif /* HAVE_TCSETPGRP */ + {"open", posix_open, METH_VARARGS, posix_open__doc__}, +- {"close", posix_close, METH_VARARGS, posix_close__doc__}, ++ {"close", py_posix_close, METH_VARARGS, py_posix_close__doc__}, + {"dup", posix_dup, METH_VARARGS, posix_dup__doc__}, + {"dup2", posix_dup2, METH_VARARGS, posix_dup2__doc__}, + {"lseek", posix_lseek, METH_VARARGS, posix_lseek__doc__}, diff --git a/sysc/Python-2.5.6/patches/sorted.patch b/sysc/Python-2.5.6/patches/sorted.patch @@ -0,0 +1,29 @@ +SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space> + +SPDX-License-Identifier: PSF-2.0 + +sorted() was only added in Python 2.5. But we are building Python 2.5. + +We cannot use .sort(), as it doesn't support the key= parameter. +Instead we just use a basic custom selection sort to sort it ourselves +using a custom key. + +--- Tools/compiler/astgen.py.bak 2022-07-11 09:24:59.600238862 +1000 ++++ Tools/compiler/astgen.py 2022-07-11 09:32:25.814974174 +1000 +@@ -215,7 +215,15 @@ + # some extra code for a Node's __init__ method + name = mo.group(1) + cur = classes[name] +- return sorted(classes.values(), key=lambda n: n.name) ++ ret = classes.values() ++ # basic custom selection sort ++ for i in range(len(ret)): ++ min_i = i ++ for j in range(i + 1, len(ret)): ++ if ret[min_i].name > ret[j].name: ++ min_i = j ++ ret[i], ret[min_i] = ret[min_i], ret[i] ++ return ret + + def main(): + prologue, epilogue = load_boilerplate(sys.argv[-1]) diff --git a/sysc/Python-2.5.6/patches/sre_constants.patch b/sysc/Python-2.5.6/patches/sre_constants.patch @@ -0,0 +1,20 @@ +SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space> + +SPDX-License-Identifier: PSF-2.0 + +Again, Python 2.5 added the key= argument for sorting functions, +which is not available when we are building Python 2.5. + +Sorting is absolutely unnessecary when generating defines for a +header file so we can just remove it. + +--- Lib/sre_constants.py 2004-08-25 12:22:30.000000000 +1000 ++++ Lib/sre_constants.py 2022-10-09 20:18:40.332233858 +1100 +@@ -219,7 +219,6 @@ + if __name__ == "__main__": + def dump(f, d, prefix): + items = d.items() +- items.sort(key=lambda a: a[1]) + for k, v in items: + f.write("#define %s_%s %s\n" % (prefix, k.upper(), v)) + f = open("sre_constants.h", "w") diff --git a/sysc/Python-2.5.6/sources b/sysc/Python-2.5.6/sources @@ -0,0 +1,7 @@ +https://www.python.org/ftp/python/2.5.6/Python-2.5.6.tar.bz2 57e04484de051decd4741fb4a4a3f543becc9a219af8b8063b5541e270f26dcc +http://ftp.unicode.org/Public/3.2-Update/UnicodeData-3.2.0.txt 5e444028b6e76d96f9dc509609c5e3222bf609056f35e5fcde7e6fb8a58cd446 +http://ftp.unicode.org/Public/3.2-Update/CompositionExclusions-3.2.0.txt 1d3a450d0f39902710df4972ac4a60ec31fbcb54ffd4d53cd812fc1200c732cb +http://ftp.unicode.org/Public/3.2-Update/EastAsianWidth-3.2.0.txt ce19f35ffca911bf492aab6c0d3f6af3d1932f35d2064cf2fe14e10be29534cb +http://ftp.unicode.org/Public/4.1.0/ucd/UnicodeData.txt a9f03f6a061ee210c53e33782288a208bed48c65c70d307b2b214989cedfdab0 UnicodeData-4.1.0.txt +http://ftp.unicode.org/Public/4.1.0/ucd/CompositionExclusions.txt 1003a6896078e77532a017b135762501ff0a540ba33694e32b6177f093ebe6b2 CompositionExclusions-4.1.0.txt +http://ftp.unicode.org/Public/4.1.0/ucd/EastAsianWidth.txt 089ed5b2becd3196e61124d36e968474d3b7152cb5a3fb56594c34ab1e698e92 EastAsianWidth-4.1.0.txt diff --git a/sysc/run2.sh b/sysc/run2.sh @@ -111,6 +111,8 @@ build Python-2.3.7 stage1.sh build Python-2.3.7 stage2.sh +build Python-2.5.6 + if [ "$FORCE_TIMESTAMPS" = True ] ; then echo 'Forcing all files timestamps to be 0 unix time.' canonicalise_all_files_timestamp