xref: /OK3568_Linux_fs/yocto/meta-openembedded/meta-python/classes/distutils3.bbclass (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyuninherit distutils3-base
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunB = "${WORKDIR}/build"
4*4882a593Smuzhiyundistutils_do_configure[cleandirs] = "${B}"
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunDISTUTILS_BUILD_ARGS ?= ""
7*4882a593SmuzhiyunDISTUTILS_INSTALL_ARGS ?= "--root=${D} \
8*4882a593Smuzhiyun    --prefix=${prefix} \
9*4882a593Smuzhiyun    --install-lib=${PYTHON_SITEPACKAGES_DIR} \
10*4882a593Smuzhiyun    --install-data=${datadir}"
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunDISTUTILS_PYTHON = "python3"
13*4882a593SmuzhiyunDISTUTILS_PYTHON:class-native = "nativepython3"
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunDISTUTILS_SETUP_PATH ?= "${S}"
16*4882a593Smuzhiyun
17*4882a593Smuzhiyunpython __anonymous() {
18*4882a593Smuzhiyun    bb.warn("distutils3.bbclass is deprecated, please use setuptools3.bbclass instead")
19*4882a593Smuzhiyun}
20*4882a593Smuzhiyun
21*4882a593Smuzhiyundistutils3_do_configure() {
22*4882a593Smuzhiyun    :
23*4882a593Smuzhiyun}
24*4882a593Smuzhiyun
25*4882a593Smuzhiyundistutils3_do_compile() {
26*4882a593Smuzhiyun        cd ${DISTUTILS_SETUP_PATH}
27*4882a593Smuzhiyun        NO_FETCH_BUILD=1 \
28*4882a593Smuzhiyun        STAGING_INCDIR=${STAGING_INCDIR} \
29*4882a593Smuzhiyun        STAGING_LIBDIR=${STAGING_LIBDIR} \
30*4882a593Smuzhiyun        ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
31*4882a593Smuzhiyun        build --build-base=${B} ${DISTUTILS_BUILD_ARGS} || \
32*4882a593Smuzhiyun        bbfatal_log "'${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS}' execution failed."
33*4882a593Smuzhiyun}
34*4882a593Smuzhiyundistutils3_do_compile[vardepsexclude] = "MACHINE"
35*4882a593Smuzhiyun
36*4882a593Smuzhiyundistutils3_do_install() {
37*4882a593Smuzhiyun        cd ${DISTUTILS_SETUP_PATH}
38*4882a593Smuzhiyun        install -d ${D}${PYTHON_SITEPACKAGES_DIR}
39*4882a593Smuzhiyun        STAGING_INCDIR=${STAGING_INCDIR} \
40*4882a593Smuzhiyun        STAGING_LIBDIR=${STAGING_LIBDIR} \
41*4882a593Smuzhiyun        PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
42*4882a593Smuzhiyun        ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
43*4882a593Smuzhiyun        build --build-base=${B} install --skip-build ${DISTUTILS_INSTALL_ARGS} || \
44*4882a593Smuzhiyun        bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS}' execution failed."
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun        # support filenames with *spaces*
47*4882a593Smuzhiyun        find ${D} -name "*.py" -exec grep -q ${D} {} \; \
48*4882a593Smuzhiyun                               -exec sed -i -e s:${D}::g {} \;
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun        for i in ${D}${bindir}/* ${D}${sbindir}/*; do
51*4882a593Smuzhiyun            if [ -f "$i" ]; then
52*4882a593Smuzhiyun                sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
53*4882a593Smuzhiyun                sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
54*4882a593Smuzhiyun            fi
55*4882a593Smuzhiyun        done
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun        rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun        #
60*4882a593Smuzhiyun        # FIXME: Bandaid against wrong datadir computation
61*4882a593Smuzhiyun        #
62*4882a593Smuzhiyun        if [ -e ${D}${datadir}/share ]; then
63*4882a593Smuzhiyun            mv -f ${D}${datadir}/share/* ${D}${datadir}/
64*4882a593Smuzhiyun            rmdir ${D}${datadir}/share
65*4882a593Smuzhiyun        fi
66*4882a593Smuzhiyun}
67*4882a593Smuzhiyundistutils3_do_install[vardepsexclude] = "MACHINE"
68*4882a593Smuzhiyun
69*4882a593SmuzhiyunEXPORT_FUNCTIONS do_configure do_compile do_install
70*4882a593Smuzhiyun
71*4882a593Smuzhiyunexport LDSHARED="${CCLD} -shared"
72