mirror of
https://git.yoctoproject.org/poky
synced 2026-02-05 16:28:43 +01:00
While there is a bit of documentation regarding building a new manifest file for python, it seems that users usually only read the manifest file. The manifest file is in JSON format which doesn't allow comments, hence why instructions were initially put elsewhere. This patch hacks the call to open the JSON manifest file by using a marker to trick it into reading only part of the file as the manifest itself, and keep the other part as comments, which contain instructions for the user to run the create_manifest task after an upgrade or when adding a new package. (From OE-Core rev: 5641a24a70b54544012c04c6a082514d9a5aa49a) Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
90 lines
3.0 KiB
BlitzBasic
90 lines
3.0 KiB
BlitzBasic
require python.inc
|
|
EXTRANATIVEPATH += "bzip2-native"
|
|
DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native expat-native gdbm-native db-native"
|
|
PR = "${INC_PR}.1"
|
|
|
|
SRC_URI += "\
|
|
file://05-enable-ctypes-cross-build.patch \
|
|
file://10-distutils-fix-swig-parameter.patch \
|
|
file://11-distutils-never-modify-shebang-line.patch \
|
|
file://0001-distutils-set-the-prefix-to-be-inside-staging-direct.patch \
|
|
file://debug.patch \
|
|
file://unixccompiler.patch \
|
|
file://nohostlibs.patch \
|
|
file://multilib.patch \
|
|
file://add-md5module-support.patch \
|
|
file://builddir.patch \
|
|
file://parallel-makeinst-create-bindir.patch \
|
|
file://revert_use_of_sysconfigdata.patch \
|
|
"
|
|
|
|
S = "${WORKDIR}/Python-${PV}"
|
|
|
|
FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:"
|
|
|
|
inherit native
|
|
|
|
EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --with-system-expat=${STAGING_DIR_HOST}"
|
|
|
|
EXTRA_OEMAKE = '\
|
|
LIBC="" \
|
|
STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \
|
|
STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \
|
|
'
|
|
|
|
do_configure_append() {
|
|
autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
|
|
}
|
|
|
|
# Regenerate all of the generated files
|
|
# This ensures that pgen and friends get created during the compile phase
|
|
do_compile_prepend() {
|
|
oe_runmake regen-all
|
|
}
|
|
|
|
do_install() {
|
|
oe_runmake 'DESTDIR=${D}' install
|
|
install -d ${D}${bindir}/${PN}
|
|
install -m 0755 Parser/pgen ${D}${bindir}/${PN}
|
|
|
|
# Make sure we use /usr/bin/env python
|
|
for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
|
|
sed -i -e '1s|^#!.*|#!/usr/bin/env python|' $PYTHSCRIPT
|
|
done
|
|
|
|
# Add a symlink to the native Python so that scripts can just invoke
|
|
# "nativepython" and get the right one without needing absolute paths
|
|
# (these often end up too long for the #! parser in the kernel as the
|
|
# buffer is 128 bytes long).
|
|
ln -s python-native/python ${D}${bindir}/nativepython
|
|
|
|
# We don't want modules in ~/.local being used in preference to those
|
|
# installed in the native sysroot, so disable user site support.
|
|
sed -i -e 's,^\(ENABLE_USER_SITE = \).*,\1False,' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py
|
|
}
|
|
|
|
python(){
|
|
|
|
# Read JSON manifest
|
|
import json
|
|
pythondir = d.getVar('THISDIR',True)
|
|
with open(pythondir+'/python/python2-manifest.json') as manifest_file:
|
|
manifest_str = manifest_file.read()
|
|
json_start = manifest_str.find('# EOC') + 6
|
|
manifest_file.seek(json_start)
|
|
manifest_str = manifest_file.read()
|
|
python_manifest = json.loads(manifest_str)
|
|
|
|
rprovides = d.getVar('RPROVIDES').split()
|
|
|
|
# Hardcoded since it cant be python-native-foo, should be python-foo-native
|
|
pn = 'python'
|
|
|
|
for key in python_manifest:
|
|
pypackage = pn + '-' + key + '-native'
|
|
if pypackage not in rprovides:
|
|
rprovides.append(pypackage)
|
|
|
|
d.setVar('RPROVIDES', ' '.join(rprovides))
|
|
}
|