This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM5728: QtSerialport bitbake fails

Part Number: AM5728

Tool/software: Linux

Hi,

  I try to bitbake the qtserialport target with oe-layersetup repository in conjuction with the processor-sdk-linux-am57xx-evm-04.03.00.05.

Repository: git://arago-project.org/git/projects/oe-layersetup.git on master (commit SHA-ID: 0baa248)

Install folder for the proc-sdk: /opt/ti/processor-sdk-linux-am57xx-evm.04.03.00.05/

I do the following steps on a completely clean oe-layersetup repository:

dev@machine:~/git/oe-layersetup$ ./oe-layertool-setup.sh -f configs/processor-sdk/processor-sdk-04.03.00.05-config.txt
dev@machine:~/git/oe-layersetup$ cd build/
dev@machine:~/git/oe-layersetup/build$ . conf/setenv
dev@machine:~/git/oe-layersetup/build$ export PATH=/opt/ti/processor-sdk-linux-am57xx-evm-04.03.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/:$PATH
dev@machine:~/git/oe-layersetup/build$ MACHINE=am57xx-evm bitbake qtserialport

This fails already at sanity check:

ERROR: OE-core's config sanity checker detected a potential misconfiguration.
Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).
Following is the list of potential problems / advisories:

Required perl module(s) not found: Text::ParseWords Thread::Queue Data::Dumper

Can't locate Text/ParseWords.pm in @INC (you may need to install the Text::ParseWords module) (@INC contains: //usr/lib/perl/site_perl/5.22.1 //usr/lib/perl/vendor_perl/5.22.1 //usr/lib/perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/site_perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/site_perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/vendor_perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/vendor_perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1 .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.Can't locate Thread/Queue.pm in @INC (you may need to install the Thread::Queue module) (@INC contains: //usr/lib/perl/site_perl/5.22.1 //usr/lib/perl/vendor_perl/5.22.1 //usr/lib/perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/site_perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/site_perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/vendor_perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/vendor_perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1 .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.Can't locate Data/Dumper.pm in @INC (you may need to install the Data::Dumper module) (@INC contains: //usr/lib/perl/site_perl/5.22.1 //usr/lib/perl/vendor_perl/5.22.1 //usr/lib/perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/site_perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/site_perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/vendor_perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/vendor_perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1/ /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1 /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/sysroots/x86_64-arago-linux/usr/lib/perl/5.22.1 .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

It seems the processor sdk install script doesn't always manage to replace all install path placeholders correctly. Obviously the path /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy should point to /opt/ti/processor-sdk-linux-am57xx-evm-04.01.00.06/linux-devkit.

So I workaround with a symlink:

dev@machine:~/git/oe-layersetup/build$ mkdir /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dev@machine:~/git/oe-layersetup/build$ ln -s /opt/ti/processor-sdk-linux-am57xx-evm-04.01.00.06/linux-devkit /tmp/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

Again trying to bitbake:

dev@machine:~/git/oe-layersetup/build$ MACHINE=am57xx-evm bitbake qtserialport

Now the sanity check returns successful, but soon other problems arise:

WARNING: ncurses-native-6.0+20160625-r0 do_fetch: Failed to fetch URL git://anonscm.debian.org/collab-maint/ncurses.git, attempting MIRRORS if available
WARNING: libpcre-native-8.39-r0 do_fetch: Checksum mismatch for local file /home/dev/git/oe-layersetup/downloads/pcre-8.39.tar.bz2
Cleaning and trying again.
WARNING: libpcre-native-8.39-r0 do_fetch: Renaming /home/dev/git/oe-layersetup/downloads/pcre-8.39.tar.bz2 to /home/dev/git/oe-layersetup/downloads/pcre-8.39.tar.bz2_bad-checksum_65bcdbc2d655145aae994605cf7e6c4a
WARNING: libpcre-native-8.39-r0 do_fetch: Checksum failure encountered with download of downloads.sourceforge.net/.../pcre-8.39.tar.bz2 - will attempt other sources if available
WARNING: popt-native-1.16-r3 do_fetch: Failed to fetch URL rpm5.org/.../popt-1.16.tar.gz, attempting MIRRORS if available
WARNING: rpm-native-5.4.16-r0 do_fetch: Failed to fetch URL www.rpm5.org/.../rpm-5.4.15-0.20140824.src.rpm;name=srpm;extract=rpm-5.4.15.tar.gz, attempting MIRRORS if available
ERROR: openssl-native-1.0.2j-r0.arago0 do_configure: The perl module 'bignum' was not found but this is required to build openssl. Please install this module (often packaged as perl-bignum) and re-run bitbake.
ERROR: openssl-native-1.0.2j-r0.arago0 do_configure: Function failed: do_configure (log file is located at /home/dev/git/oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/x86_64-linux/openssl-native/1.0.2j-r0.arago0/temp/log.do_configure.3872)
ERROR: Logfile of failure stored in: /home/dev/git/oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/x86_64-linux/openssl-native/1.0.2j-r0.arago0/temp/log.do_configure.3872
ERROR: Task (virtual:native:/home/dev/git/oe-layersetup/sources/oe-core/meta/recipes-connectivity/openssl/openssl_1.0.2j.bb:do_configure) failed with exit code '1'
WARNING: linux-libc-headers-4.9-r0.arago2 do_fetch: Failed to fetch URL git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git;protocol=git;branch=ti-lsk-linux-4.9.y, attempting MIRRORS if available

I don't care about the warnings - source URLs to fetch from may change any day, but why does the processor sdk devkit doesn't come with all necessary perl modules? And much more important where can I get it from?

Thanks in advance,

                 Tim

  • Hello Tim,

    I have already explained the proper way to build the qtserialport in this thread. If you want to automatically include the qtserialport headers and libraries to your target rootfs and SDK, please refer to this thread.

    Best regards,
    Kemal

  • Hi Kemal,

    I'm fully aware of the threads you're referring to. And you can clearly see that the only difference to your solution is the toolchain I use. In fact the last two days I haven't done anything else than browsing this forum and installing processor sdks and cross compiler toolchains.

    Let me restate my question: what are the differences between the toolchain that's part of the processor sdks devkit (and we're using already all the time) and the one from linaro.org? In respect of the binary versions they are the same. Why does using the toolchain provided by ti lets one end up in broken include paths and dependence resolution?

    My job is not just to hack down a list of command lines someone else provided to me. I have to understand what's going on if I want to make reliable products and be able to deal with upcoming problems.

    I know, then I shouldn't use yocto and its derivatives in the first place. But in this case it seems I can't choose...

    Best,

    Tim

    PS.: the broken path substitutions are a problem of the linux sdk installers at least since 3.0.0 - maybe you should have a look in it?
  • Then lets play and see what this tool-chain can do. Type mv  /opt/ti/processor-sdk-linux-am57xx-evm-04.03.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/perl /opt/ti/processor-sdk-linux-am57xx-evm-04.03.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/perl_old to fix first issue.

  • Ah!
    I see what you mean.
    I still don't get where the wrong substitution of $OECORE_NATIVE_SYSROOT (...xxx/yyy...) takes place - and it seem to fail on other occasions at sdk install time, too (just do a search for the substitution string on any installed sdk). But in '/opt/ti/processor-sdk-linux-am57xx-evm-04.03.00.05/linux-devkit/environment-setup' it was done right. Ok, I assume 'environment-setup' isn't sourced automagically which renders at least the perl part of this toolchain unusable. Understood.

    So we use the host systems perl interpreter and libraries when it comes to bitbake any target with the oe-layersetup repository. But the sdk's provided toolchain brings its own. In my understanding the linux-devkit/x86_64-arago-linux is the toolchain to go for cross compiling on the host machine. For what reason is it here in the first place if it is not suited for cross-compiling additional targets like qtserialport? Where am I wrong in my reasoning?

    Thanks,

    Tim
  • The proper (gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz) tool-chain, doesn't contain any perl at all.
  • Yeah, I know, on building oe-layersetup targets we're using the host systems perl. I'm completely fine with that. What's bugging me is for what reason has the sdk's provided toolchain perl in the first place? It's supposed to be installed on a host machine. Why not always using the hosts perl? What is the sdk's toolchain built for?
  • Because the other packages depends on it, that is why it is included in the SDK. The linux-devkit contains the complete sysroot not only the tool-chain and that is why it it not recommended to be used as tool-chain while OE compiling.

  • So you mean if I cross-compile an application or a package from the sdk like the ipc package I should use the provided toolchain. But if I want to build the sdk itself or parts to be added like qtserialport I should use the default linaro toolchain?

  • Yes. That is why you should execute these commands and not just export the sysroot tool-chain from the SDK.

    $ wget https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz
    $ tar -Jxvf gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz -C $HOME

    .....
    $ export PATH=$HOME/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin:$PATH
    .....

  • Thanks for clarifying that.