libxslt and libxml with Python
I got voxl-python_3.6.9 built and installed on voxl, and am working through pip installing some packages, pymavlink in particular. I see that a couple of libxml packages exist on VOXL, however there are none for libxslt, and opkg can't seem to find an xslt package (I've tried a bunch of combinations like libxslt, libxslt-dev, libxslt-devel, libxslt1, etc.). I also tried installing something like python3-lxml per google searches, but to no avail.
Is there a way around this, or a way I can point opkg to another repository that has the libxslt package? Thanks.
For reference, here is the output.
yocto:/# pip3 install pymavlink Collecting pymavlink Using cached https://files.pythonhosted.org/packages/5f/4e/985824701e53ec259d3898eb71c4d9211e643dd986ce74b8c71a32d6437c/pymavlink-2.4.15.tar.gz Collecting future (from pymavlink) Using cached https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9/future-0.18.2.tar.gz Collecting lxml (from pymavlink) Using cached https://files.pythonhosted.org/packages/e5/21/a2e4517e3d216f0051687eea3d3317557bde68736f038a3b105ac3809247/lxml-4.6.3.tar.gz Complete output from command python setup.py egg_info: Building lxml version 4.6.3. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are installed. ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in /var/volatile/tmp/pip-install-loh5dpgv/lxml/ You are using pip version 18.1, however version 21.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
If you can use a Docker container for you application then you can run Ubuntu or Alpine and get access to a lot of packages. If you run on target without a container then you are much more limited in what you can do to resolve dependencies. opkg isn't like apt-get where you can point to large package repositories to find your missing dependencies. In this case you will likely have to build and install libxslt yourself.
I have the same problem as MattO.
How can I build and install libxslt myself?
Do I have to make a .ipk file of the libxslt repository, push it to the Voxl and then "opkg install"?
How can I make a .ipk file that can be installed?
Or is there another way to install it?
Thanks in advance
@SHofmeester You can build it in the voxl-emulator and then make an ipk package that you can install on target with opkg.
Thank you for your reply.
I was able to build the libxslt library with voxl-emulator, with ./autogen.sh, make and ./configure. And I was also able to make an .ipk with control.tar.gz., data.tar.gz and debian-binary, with a online tutorial.
But when I push it to the Voxl and try to opkg install it, it says: "unrecognized archive format" and "failed to extract control.tar.gz".
I tried to copy the file structure and contents of the control file from the Voxl-libraries. But I don't understand what should be in the data directory, what shouldn't and what the format should be.
How can I make an .ipk file with the right format to install libxslt with opkg?
@SHofmeester What do you have for the
Architecture:in the control file for the package? If you use
allit should work.
Thank you, I was able to opkg install libslt-dev on VOXL (I also had to use "ar x" to create the .ipk-file, like you do in your make_package.sh, instead of "tar", like on online tutorials)
Another dependency of lxml is python3-dev. How can I opkg install that on the VOXL? Because I can't find a repository to put in the data-folder of the .ipk-file.
@SHofmeester This repo hasn't been touched in quite a while so I can't guarantee that it will work perfectly, but this was used to build / install Python3 on VOXL in the past: https://gitlab.com/voxl-public/support/voxl-python-3.6.9
Hi @tom, thank you for your reply, but that isn't exactly what I meant.
I built/installed python3 on the VOXL and it works well.
But for pymavlink I need: python3-dev (and also libxslt-dev and libxml2-dev, but I built/installed those myself on the VOXL).
For reference (below "On Linux"): https://github.com/ArduPilot/pymavlink/blob/master/README.md
Is there a python3-dev repository I can use for the data of the .ipk-file?
Do I need to add that package to the image and then reflash it (https://docs.modalai.com/voxl-system-image/)? If so, what are the main steps to do that?
Isn't there a way to use apt-get?
We don't have much familiarity with supporting Python. It might make most sense to use Ubuntu on Docker . That way you can apt-get the packages you need. You can access libmodal_pipe as well from that Docker.
Hi @Chad-Sweet, thank you, I was able to install pymavlink, and all the dependencies using apt-get, on the docker on the VOXL.
How can I access libmodal_pipe from the docker?
Can I access it using UDP (that is what pymavlink uses)?
And how can I get the data from the flight controller, for example if it is armed or not?
Then I can use pymavlink to get the data from the flight controller inside the docker and then send it outside the docker, so I can use all the VOXL libraries and functionalities.