Topics

do_package() failing due to "no attribute"


Itai Kleiman
 

Hi,

I wrote a recipe (.bb file) for xerces-c 2.8 version.
I run the command 'bitbake xerces-c -vvv' in order to build the package and I get the following error:
ERROR: xerces-c-2.8.0-r2 do_package: Error executing a python function in exec_python_func() autogenerated:

The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
     0001:
 *** 0002:populate_packages(d)
     0003:
File: '/media/poky/meta/classes/package.bbclass', lineno: 1164, function: populate_packages
     1160:                    if not cpath.exists(os.path.join(dest, p)):
     1161:                        mkdir(src, dest, p)
     1162:
     1163:            if cpath.isdir(file) and not cpath.islink(file):
 *** 1164:                mkdir_recurse(dvar, root, file)
     1165:                continue
     1166:
     1167:            mkdir_recurse(dvar, root, os.path.dirname(file))
     1168:            fpath = os.path.join(root,file)
File: '/media/poky/meta/classes/package.bbclass', lineno: 1161, function: mkdir_recurse
     1157:                p = "."
     1158:                for c in paths.split("/"):
     1159:                    p = os.path.join(p, c)
     1160:                    if not cpath.exists(os.path.join(dest, p)):
 *** 1161:                        mkdir(src, dest, p)
     1162:
     1163:            if cpath.isdir(file) and not cpath.islink(file):
     1164:                mkdir_recurse(dvar, root, file)
     1165:                continue
File: '/media/poky/meta/classes/package.bbclass', lineno: 1146, function: mkdir
     1142:            def mkdir(src, dest, p):
     1143:                src = os.path.join(src, p)
     1144:                dest = os.path.join(dest, p)
     1145:                fstat = cpath.stat(src)
 *** 1146:                os.mkdir(dest, fstat.st_mode)
     1147:                os.chown(dest, fstat.st_uid, fstat.st_gid)
     1148:                if p not in seen:
     1149:                    seen.append(p)
     1150:                cpath.updatecache(dest)
Exception: AttributeError: 'bool' object has no attribute 'st_mode'

ERROR: xerces-c-2.8.0-r2 do_package: Function failed: populate_packages
ERROR: Logfile of failure stored in: /media/poky/build/tmp/work/mips64r2-poky-linux/xerces-c/2.8.0-r2/temp/log.do_package.3467
ERROR: Task (/media/poky/meta-my/recipes-my-packages/xerces-c/xerces-c_2.8.0.bb:do_package) failed with exit code '1'

the recipe:
DESCRIPTION = "Xerces-c is a validating xml parser written in C++"
HOMEPAGE = "http://xerces.apache.org/xerces-c/"
SECTION =  "libs"
PRIORITY = "optional"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://../../LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"

SRC_URI = " file://xerces-c-src_2_8_0.tar.gz"
SRC_URI[md5sum] = "5daf514b73f3e0de9e3fce704387c0d2"
S = "${WORKDIR}/xerces-c-src_2_8_0/src/xercesc"
FILES_${PN} += "${libdir}/../local/*
inherit autotools pkgconfig

CCACHE = ""

export XERCESCROOT="${WORKDIR}/xerces-c-src_2_8_0/"
export cross_compiling = "yes"

export SDKTARGETSYSROOT = "${TMPDIR}/sysroots/x86_64-linux/usr/bin/mips64-poky-linux/"

do_configure() {
cd ${S}
./runConfigure -plinux -minmem -nsocket -rpthread -z--sysroot=${TMPDIR}/sysroots/${MACHINE} \
                    -C--build=${BUILD_SYS} \
                    -C--host=${HOST_SYS} \
                    -C--target=${TARGET_SYS}
}

do_compile() {
cd ${S}
${MAKE} CXX="mips64-poky-linux-g++  -meb -mabi=64 -mhard-float -march=mips64r2 -march=xlp --sysroot=${TMPDIR}/sysroots/${MACHINE}" CC="mips64-poky-linux-gcc  -meb -mabi=64 -mhard-float -march=mips64r2 -march=xlp --sysroot=${TMPDIR}/sysroots/${MACHINE}"  AR="mips64-poky-linux-ar" LDFLAGS="-L/${TMPDIR}/sysroots/${MACHINE}/usr/lib -Wl,-O1  -Wl,--as-needed"
}


do_install () {
cd ${S}
${MAKE} install DESTDIR=${D}
}



I'm using yocto-2.2.4.

Any idea what is the problem?

Thank you,
Itai



Quentin Schulz
 

Hi Itai,

On Tue, Aug 04, 2020 at 03:11:55PM +0000, Itai Kleiman via lists.yoctoproject.org wrote:
export SDKTARGETSYSROOT = "${TMPDIR}/sysroots/x86_64-linux/usr/bin/mips64-poky-linux/"
SDKTARGETSYSROOT = "${STAGING_BINDIR_NATIVE}/mips64-poky-linux"

do_configure() {
cd ${S}
./runConfigure -plinux -minmem -nsocket -rpthread -z--sysroot=${TMPDIR}/sysroots/${MACHINE} \
--sysroot=${STAGING_DIR_TARGET} \
-C--build=${BUILD_SYS} \
-C--host=${HOST_SYS} \
-C--target=${TARGET_SYS}
}

do_compile() {
cd ${S}
${MAKE} CXX="mips64-poky-linux-g++ -meb -mabi=64 -mhard-float -march=mips64r2 -march=xlp --sysroot=${TMPDIR}/sysroots/${MACHINE}" CC="mips64-poky-linux-gcc -meb -mabi=64 -mhard-float -march=mips64r2 -march=xlp --sysroot=${TMPDIR}/sysroots/${MACHINE}" AR="mips64-poky-linux-ar" LDFLAGS="-L/${TMPDIR}/sysroots/${MACHINE}/usr/lib -Wl,-O1 -Wl,--as-needed"
--sysroot=${STAGING_DIR_TARGET}
--sysroot=${STAGING_DIR_TARGET} -L/${STAGING_LIBDIR}

At least for the path, haven't checked anything else.

Also, most of those arguments should be passed by Yocto already to your
recipe's makefile.

Quentin