live-bootstrap/steps/python-2.5.6/pass1.sh
fosslinux 6ed2e09f3a Remove the notion of "sys*"
- This idea originates from very early in the project and was, at the
  time, a very easy way to categorise things.
- Now, it doesn't really make much sense - it is fairly arbitary, often
  occuring when there is a change in kernel, but not from builder-hex0
  to fiwix, and sysb is in reality completely unnecessary.
- In short, the sys* stuff is a bit of a mess that makes the project
  more difficult to understand.
- This puts everything down into one folder and has a manifest file that
  is used to generate the build scripts on the fly rather than using
  coded scripts.
- This is created in the "seed" stage.

stage0-posix -- (calls) --> seed -- (generates) --> main steps

Alongside this change there are a variety of other smaller fixups to the
general structure of the live-bootstrap rootfs.

- Creating a rootfs has become much simpler and is defined as code in
  go.sh. The new structure, for an about-to-be booted system, is

/
-- /steps (direct copy of steps/)
-- /distfiles (direct copy of distfiles/)
-- all files from seed/*
-- all files from seed/stage0-posix/*

- There is no longer such a thing as /usr/include/musl, this didn't
  really make any sense, as musl is the final libc used. Rather, to
  separate musl and mes, we have /usr/include/mes, which is much easier
  to work with.
- This also makes mes easier to blow away later.
- A few things that weren't properly in packages have been changed;
  checksum-transcriber, simple-patch, kexec-fiwix have all been given
  fully qualified package names.
- Highly breaking change, scripts now exist in their package directory
  but NOT WITH THE packagename.sh. Rather, they use pass1.sh, pass2.sh,
  etc. This avoids manual definition of passes.
  - Ditto with patches; default directory is patches, but then any patch
    series specific to a pass are named patches-passX.
2023-12-15 21:43:19 +11:00

85 lines
2.2 KiB
Bash
Executable file

# 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-*
rm -r Modules/_ctypes/libffi
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() {
MACHDEP=linux ac_sys_system=Linux \
CFLAGS="-U__DATE__ -U__TIME__" \
LDFLAGS="-L${LIBDIR}" \
./configure \
--build=i386-unknown-linux-musl \
--host=i386-unknown-linux-musl \
--prefix="${PREFIX}" \
--libdir="${LIBDIR}" \
--with-system-ffi \
--enable-ipv6
}
src_compile() {
# Temporarily break include cycle
patch -Np0 -i graminit-regen.patch
# Build pgen
make "${MAKEJOBS}" Parser/pgen
# Regen graminit.c and graminit.h
make "${MAKEJOBS}" 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 "${MAKEJOBS}" CFLAGS="-U__DATE__ -U__TIME__"
}
src_install() {
default
# Remove non-reproducible .pyc/o files
find "${DESTDIR}" -name "*.pyc" -delete
find "${DESTDIR}" -name "*.pyo" -delete
}