do_package: Function failed: split_kernel_module_packages


Damien LEFEVRE
 

Hi,

I'm trying to add pixcilnx kernel object to my image based on 4.4.38-l4t-r28.1.

The make file looks like this
----------------------------------------------------------------------------------------------------------------
obj-m := pixci.o
pixci-objs := pixcipub.o pixcilnx.o

SRC := $(shell pwd)

# invoked from user or surrogate?
all:
        ar -x pixcilnx_aarch64_4.4.a pixcilnx_4.4.o
        mv pixcilnx_4.4.o pixcilnx.o_shipped
        $(MAKE) -C $(KERNEL_SRC) M=$(SRC)        
        $(CROSS_COMPILE)strip --strip-debug --discard-all pixci.ko

modules_install:
        $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install

clean:
        rm -f *.o
        rm -f *.ko
        rm -f .pixci.mod.o.cmd
        rm -f .pixci.o.cmd
        rm -f .pixci.ko.cmd
        rm -f .pixcipub.o.cmd
        rm -rf .tmp_versions
----------------------------------------------------------------------------------------------------------------


The pixci.bb file looks like this

----------------------------------------------------------------------------------------------------------------
SUMMARY = "Kernel module for EPIX grabber"
#TODO: set correct license
LICENSE = "CLOSED"

inherit module

SRC_URI = "file://Makefile \
           file://pixcilnx_aarch64_4.4.a \
           file://pixcipub.c \
           file://pixcipub.h \
          "

S = "${WORKDIR}"

# The inherit of module.bbclass will automatically name module packages with
# "kernel-module-" prefix as required by the oe-core build environment.

KERNEL_MODULE_AUTOLOAD += "pixci"
#This should put your module name into /etc/modules-load.d/modname.conf on the image.
----------------------------------------------------------------------------------------------------------------


Do package fails with the following error:

----------------------------------------------------------------------------------------------------------------
ERROR: pixci-1.0-r0 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:split_kernel_module_packages(d)
     0003:
File: '/home/damien/procbox-develop/sources/poky/meta/classes/kernel-module-split.bbclass', lineno: 141, function: split_kernel_module_packages
     0137:
     0138:    postinst = d.getVar('pkg_postinst_modules')
     0139:    postrm = d.getVar('pkg_postrm_modules')
     0140:
 *** 0141:    modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='kernel-%s' % (d.getVar("KERNEL_VERSION")))
     0142:    if modules:
     0143:        metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
     0144:        d.appendVar('RDEPENDS_' + metapkg, ' '+' '.join(modules))
     0145:
File: '/home/damien/procbox-develop/sources/poky/meta/classes/package.bbclass', lineno: 234, function: do_split_packages
     0230:            d.setVar('pkg_postinst_' + pkg, postinst)
     0231:        if postrm:
     0232:            d.setVar('pkg_postrm_' + pkg, postrm)
     0233:        if callable(hook):
 *** 0234:            hook(f, pkg, file_regex, output_pattern, m.group(1))
     0235:
     0236:    d.setVar('PACKAGES', ' '.join(packages))
     0237:    return list(split_packages)
     0238:
File: '/home/damien/procbox-develop/sources/poky/meta/classes/kernel-module-split.bbclass', lineno: 65, function: frob_metadata
     0061:            vals[m.group(1)] = m.group(2)
     0062:        return vals
     0063:
     0064:    def frob_metadata(file, pkg, pattern, format, basename):
 *** 0065:        vals = extract_modinfo(file)
     0066:
     0067:        dvar = d.getVar('PKGD')
     0068:
     0069:        # If autoloading is requested, output /etc/modules-load.d/<name>.conf and append
File: '/home/damien/procbox-develop/sources/poky/meta/classes/kernel-module-split.bbclass', lineno: 52, function: extract_modinfo
     0048:        tmpfile = tf[1]
     0049:        cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", file, tmpfile)
     0050:        subprocess.call(cmd, shell=True)
     0051:        f = open(tmpfile)
 *** 0052:        l = f.read().split("\000")
     0053:        f.close()
     0054:        os.close(tf[0])
     0055:        os.unlink(tmpfile)
     0056:        vals = {}
File: '/usr/lib/python3.5/codecs.py', lineno: 321, function: decode
     0317:
     0318:    def decode(self, input, final=False):
     0319:        # decode input (taking the buffer into account)
     0320:        data = self.buffer + input
 *** 0321:        (result, consumed) = self._buffer_decode(data, self.errors, final)
     0322:        # keep undecoded input until the next call
     0323:        self.buffer = data[consumed:]
     0324:        return result
     0325:
Exception: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa9 in position 83: invalid start byte

ERROR: pixci-1.0-r0 do_package: Function failed: split_kernel_module_packages
----------------------------------------------------------------------------------------------------------------

Any ideas what I could be doing wrong?

Thanks,
-Damien