Missing QSCXMLC (Qt5.15.2) in Yocto SDK
-
Hej Folks,
I would like to work with SCXML in QT5. I got it to work in QtCreator and let it run on my hostmachine.
Works like a charm. (QT5 and Creator was install through the online installer. (Online Installer))
But problems begin when running qmake and make in my yocto variscite environment.
As Target I have the VAR-SOM-6UL, so I run everything as described in there "How To" (Part One, Part Two).
Hostmachine: Ubuntu 20.04The steps I do are the following:
$ sudo apt-get install gawk wget git diffstat unzip texinfo gcc-multilib \ build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \ xz-utils debianutils iputils-ping libsdl1.2-dev xterm $ sudo apt-get install autoconf libtool libglib2.0-dev libarchive-dev python-git \ sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 \ help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev \ mercurial automake groff curl lzop asciidoc u-boot-tools dos2unix mtd-utils pv \ libncurses5 libncurses5-dev libncursesw5-dev libelf-dev zlib1g-dev bc rename $ mkdir ~/bin (this step may not be needed if the bin folder already exists) $ curl https://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ export PATH=~/bin:$PATH $ mkdir ~/var-fslc-yocto && cd ~/var-fslc-yocto $ repo init -u https://github.com/varigit/variscite-bsp-platform.git -b dunfell $ repo sync -j$(nproc) $ MACHINE=var-som-mx6 DISTRO=fslc-x11 . setup-environment build_x11
To include the QtSCXML I change the conf/local.conf file. My local.conf now looks as following:
MACHINE ??= 'var-som-mx6' DISTRO ?= 'fslc-x11' PACKAGE_CLASSES ?= 'package_rpm' EXTRA_IMAGE_FEATURES ?= "debug-tweaks" USER_CLASSES ?= "buildstats image-mklibs image-prelink" PATCHRESOLVE = "noop" BB_DISKMON_DIRS ??= "\ STOPTASKS,${TMPDIR},1G,100K \ STOPTASKS,${DL_DIR},1G,100K \ STOPTASKS,${SSTATE_DIR},1G,100K \ STOPTASKS,/tmp,100M,100K \ ABORT,${TMPDIR},100M,1K \ ABORT,${DL_DIR},100M,1K \ ABORT,${SSTATE_DIR},100M,1K \ ABORT,/tmp,10M,1K" PACKAGECONFIG_append_pn-qemu-system-native = " sdl" CONF_VERSION = "1" DL_DIR ?= "${BSPDIR}/downloads/" ACCEPT_FSL_EULA = "1" #check connectivity using google CONNECTIVITY_CHECK_URIS = "https://www.google.com/" IMAGE_INSTALL_append = " qtscxml" TOOLCHAIN_HOST_TASK_append = " nativesdk-qtscxml-dev"
I run bitbake, the .sh, set the source and at the end I run qmake and make:
$ bitbake -c populate_sdk fsl-image-qt5 $ . ~/var-fslc-yocto/build_x11/tmp/deploy/sdk/fslc-x11-glibc-x86_64-fsl-image-qt5-cortexa9t2hf-neon-var-som-mx6-toolchain-3.1.sh $ . /opt/fslc-x11/3.1/environment-setup-cortexa9t2hf-neon-fslc-linux-gnueabi $ cd ~/TestProject $ mkdir build $ qmake -makefile -o build/MakeFile test.pro $ make -C build/
But make fails with No rule to make target.
The detailed Error is:make: Entering directory '/home/yocto/TestProject/build' make: *** No rule to make target '/opt/fslc-x11/3.1/sysroots/x86_64-fslcsdk-linux/usr/bin/qscxmlc', needed by 'Test.h'. Stop. make: Leaving directory '/home/yocto/TestProject/build'
If I look into /opt/..usr/bin/ but I can't find the qscxmlc compiler. So it wasn't provided? How do I change that?
I mean I can't just copy paste the qscxmlc executable from the ~/Qt/ installation (where it works) into it ..
Thanks for every help .. I've been struggling for weeks on that .. -
I have exactly the same problem, both for building my application software with bitbake and in the populated sdk. qscxmlc is the state machine compiler, which translates scxml files into C++.
A temporary working solution is to manually copy the qscxmlc executable from the work directory of the qtscxml package to the work directory of my application:from .../tmp/work/armv7at2hf-neon-fslc-linux-gnueabi/qtscxml/5.10.1+gitAUTOINC+d9b2f8c56d-r0/recipe-sysroot-native/usr/bin/qt5/qscxmlc
to .../tmp/work/armv7at2hf-neon-fslc-linux-gnueabi/my-app/00.A.01-r0/recipe-sysroot-native/usr/bin/qt5Doing this I can at least complete my software compilation; it doesn't completely solve the issue of course. I'm trying to find how to add qscxmlc to the files installed by the qtscxml recipe, still without success...
-
The same solution, made automatic: add to your application recipe the following code
do_configure_prepend() { cp ${WORKDIR}/../../qtscxml/*/recipe-sysroot-native/usr/bin/qt5/qscxmlc \ ${OE_QMAKE_PATH_HOST_PREFIX}/usr/bin/qt5 }
Anyway, this is still a dirty trick, the final solution should be in the qt5 recipes.