mirror of
https://git.yoctoproject.org/poky
synced 2026-02-05 16:28:43 +01:00
During python3 compilation, the module ssl was being skippped due to the fact that the compilation script couldnt find the required files, this patch fixes setup.py so it looks for the files in the correct directory, hence fixing its compilation and installation. [YOCTO #7768] (From OE-Core rev: 4cffb16b0edc353d4a3287ca59ba02640f605d2b) Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
220 lines
8.4 KiB
BlitzBasic
220 lines
8.4 KiB
BlitzBasic
require recipes-devtools/python/python.inc
|
|
|
|
DEPENDS = "python3-native libffi bzip2 db gdbm openssl readline sqlite3 zlib virtual/libintl xz"
|
|
PR = "${INC_PR}.0"
|
|
PYTHON_MAJMIN = "3.4"
|
|
PYTHON_BINABI= "${PYTHON_MAJMIN}m"
|
|
DISTRO_SRC_URI ?= "file://sitecustomize.py"
|
|
DISTRO_SRC_URI_linuxstdbase = ""
|
|
SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
|
|
file://python-config.patch \
|
|
file://000-cross-compile.patch \
|
|
file://020-dont-compile-python-files.patch \
|
|
file://030-fixup-include-dirs.patch \
|
|
file://070-dont-clean-ipkg-install.patch \
|
|
file://080-distutils-dont_adjust_files.patch \
|
|
file://110-enable-zlib.patch \
|
|
file://130-readline-setup.patch \
|
|
file://150-fix-setupterm.patch \
|
|
file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch \
|
|
file://makerace.patch \
|
|
${DISTRO_SRC_URI} \
|
|
"
|
|
|
|
SRC_URI += "\
|
|
file://03-fix-tkinter-detection.patch \
|
|
file://04-default-is-optimized.patch \
|
|
file://avoid_warning_about_tkinter.patch \
|
|
file://cgi_py.patch \
|
|
file://host_include_contamination.patch \
|
|
file://python-3.3-multilib.patch \
|
|
file://shutil-follow-symlink-fix.patch \
|
|
file://sysroot-include-headers.patch \
|
|
file://unixccompiler.patch \
|
|
file://avoid-ncursesw-include-path.patch \
|
|
file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
|
|
file://python3-setup.py-no-host-headers-libs.patch \
|
|
file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
|
|
file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
|
|
file://fix_ssl_include_dir.patch \
|
|
"
|
|
SRC_URI[md5sum] = "7d092d1bba6e17f0d9bd21b49e441dd5"
|
|
SRC_URI[sha256sum] = "b5b3963533768d5fc325a4d7a6bd6f666726002d696f1d399ec06b043ea996b8"
|
|
|
|
LIC_FILES_CHKSUM = "file://LICENSE;md5=dd98d01d471fac8d8dbdd975229dba03"
|
|
|
|
S = "${WORKDIR}/Python-${PV}"
|
|
|
|
inherit autotools multilib_header python3native pkgconfig
|
|
|
|
CONFIGUREOPTS += " --with-system-ffi "
|
|
|
|
CACHED_CONFIGUREVARS = "ac_cv_have_chflags=no \
|
|
ac_cv_have_lchflags=no \
|
|
ac_cv_have_long_long_format=yes \
|
|
ac_cv_buggy_getaddrinfo=no \
|
|
ac_cv_file__dev_ptmx=yes \
|
|
ac_cv_file__dev_ptc=no \
|
|
"
|
|
# The 3 lines below are copied from the libffi recipe, ctypes ships its own copy of the libffi sources
|
|
#Somehow gcc doesn't set __SOFTFP__ when passing -mfloatabi=softp :(
|
|
TARGET_CC_ARCH_append_armv6 = " -D__SOFTFP__"
|
|
TARGET_CC_ARCH_append_armv7a = " -D__SOFTFP__"
|
|
TARGET_CC_ARCH += "-DNDEBUG -fno-inline"
|
|
EXTRA_OEMAKE += "CROSS_COMPILE=yes"
|
|
EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ --without-ensurepip"
|
|
|
|
export CROSS_COMPILE = "${TARGET_PREFIX}"
|
|
export _PYTHON_PROJECT_BASE = "${B}"
|
|
export _PYTHON_PROJECT_SRC = "${S}"
|
|
export CCSHARED = "-fPIC"
|
|
|
|
# No ctypes option for python 3
|
|
PYTHONLSBOPTS = ""
|
|
|
|
do_configure_append() {
|
|
rm -f ${S}/Makefile.orig
|
|
autoreconf -Wcross --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
|
|
}
|
|
|
|
do_compile() {
|
|
# regenerate platform specific files, because they depend on system headers
|
|
cd ${S}/Lib/plat-linux*
|
|
include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
|
|
${S}/Tools/scripts/h2py.py -i '(u_long)' \
|
|
${STAGING_INCDIR}/dlfcn.h \
|
|
${STAGING_INCDIR}/linux/cdrom.h \
|
|
${STAGING_INCDIR}/netinet/in.h \
|
|
${STAGING_INCDIR}/sys/types.h
|
|
sed -e 's,${STAGING_DIR_HOST},,g' -i *.py
|
|
cd -
|
|
|
|
# remove hardcoded ccache, see http://bugs.openembedded.net/show_bug.cgi?id=4144
|
|
sed -i -e s,ccache\ ,'$(CCACHE) ', Makefile
|
|
|
|
# remove any bogus LD_LIBRARY_PATH
|
|
sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile
|
|
|
|
if [ ! -f Makefile.orig ]; then
|
|
install -m 0644 Makefile Makefile.orig
|
|
fi
|
|
sed -i -e 's,^CONFIGURE_LDFLAGS=.*,CONFIGURE_LDFLAGS=-L. -L${STAGING_LIBDIR},g' \
|
|
-e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \
|
|
-e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \
|
|
-e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \
|
|
-e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \
|
|
-e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \
|
|
-e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \
|
|
Makefile
|
|
# save copy of it now, because if we do it in do_install and
|
|
# then call do_install twice we get Makefile.orig == Makefile.sysroot
|
|
install -m 0644 Makefile Makefile.sysroot
|
|
|
|
oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
|
|
HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
|
|
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
|
STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
|
|
STAGING_INCDIR=${STAGING_INCDIR} \
|
|
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
|
|
LIB=${baselib} \
|
|
ARCH=${TARGET_ARCH} \
|
|
OPT="${CFLAGS}" libpython3.so
|
|
|
|
oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
|
|
HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
|
|
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
|
STAGING_INCDIR=${STAGING_INCDIR} \
|
|
STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
|
|
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
|
|
LIB=${baselib} \
|
|
ARCH=${TARGET_ARCH} \
|
|
OPT="${CFLAGS}"
|
|
}
|
|
|
|
do_install() {
|
|
# make install needs the original Makefile, or otherwise the inclues would
|
|
# go to ${D}${STAGING...}/...
|
|
install -m 0644 Makefile.orig Makefile
|
|
|
|
install -d ${D}${libdir}/pkgconfig
|
|
install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config
|
|
|
|
# rerun the build once again with original makefile this time
|
|
# run install in a separate step to avoid compile/install race
|
|
oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
|
|
HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
|
|
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
|
STAGING_INCDIR=${STAGING_INCDIR} \
|
|
STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
|
|
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
|
|
LIB=${baselib} \
|
|
ARCH=${TARGET_ARCH} \
|
|
DESTDIR=${D} LIBDIR=${libdir}
|
|
|
|
oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
|
|
HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
|
|
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
|
STAGING_INCDIR=${STAGING_INCDIR} \
|
|
STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
|
|
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
|
|
LIB=${baselib} \
|
|
ARCH=${TARGET_ARCH} \
|
|
DESTDIR=${D} LIBDIR=${libdir} install
|
|
|
|
install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
|
|
|
|
if [ -e ${WORKDIR}/sitecustomize.py ]; then
|
|
install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
|
|
fi
|
|
|
|
oe_multilib_header python${PYTHON_BINABI}/pyconfig.h
|
|
}
|
|
|
|
do_install_append_class-nativesdk () {
|
|
create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo'
|
|
}
|
|
|
|
SSTATE_SCAN_FILES += "Makefile"
|
|
PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
|
|
|
|
py_package_preprocess () {
|
|
# copy back the old Makefile to fix target package
|
|
install -m 0644 Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
|
|
# Remove references to buildmachine paths in target Makefile
|
|
sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
|
|
}
|
|
|
|
require python-${PYTHON_MAJMIN}-manifest.inc
|
|
|
|
# manual dependency additions
|
|
RPROVIDES_${PN}-core = "${PN}"
|
|
RRECOMMENDS_${PN}-core = "${PN}-readline"
|
|
RRECOMMENDS_${PN}-crypt = "openssl"
|
|
RRECOMMENDS_${PN}-crypt_class-nativesdk = "nativesdk-openssl"
|
|
|
|
FILES_${PN}-2to3 += "${bindir}/2to3-${PYTHON_MAJMIN}"
|
|
FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
|
|
FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
|
|
|
|
PACKAGES =+ "${PN}-pyvenv"
|
|
FILES_${PN}-pyvenv += "${bindir}/pyvenv-${PYTHON_MAJMIN} ${bindir}/pyvenv"
|
|
|
|
# package libpython3
|
|
PACKAGES =+ "libpython3 libpython3-staticdev"
|
|
FILES_libpython3 = "${libdir}/libpython*.so.*"
|
|
FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}/libpython${PYTHON_BINABI}.a"
|
|
|
|
# catch debug extensions (isn't that already in python-core-dbg?)
|
|
FILES_${PN}-dbg += "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/.debug"
|
|
|
|
# catch all the rest (unsorted)
|
|
PACKAGES += "${PN}-misc"
|
|
RDEPENDS_${PN}-misc += "${PN}-core"
|
|
FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"
|
|
|
|
# catch manpage
|
|
PACKAGES += "${PN}-man"
|
|
FILES_${PN}-man = "${datadir}/man"
|
|
|
|
BBCLASSEXTEND = "nativesdk"
|