Add Python-2.5.6
This commit is contained in:
parent
a94c8dbdce
commit
eadc92cf38
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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;
|
|
@ -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
|
||||
|
|
@ -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__},
|
|
@ -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])
|
|
@ -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")
|
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue