libxslt and libxml with Python



  • Hello,
    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.
    
    

  • Dev Team

    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.



  • Hi @Eric-Katzfey,
    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


  • Dev Team

    @SHofmeester You can build it in the voxl-emulator and then make an ipk package that you can install on target with opkg.



  • Hi @Eric-Katzfey,

    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?


  • Dev Team

    @SHofmeester What do you have for the Architecture: in the control file for the package? If you use all it should work.



  • @Eric-Katzfey
    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.


  • Dev Team

    @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?


  • Dev Team

    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.


  • Dev Team

    @SHofmeester There is some introductory material about libmodal_pipe in our documentation here: https://docs.modalai.com/voxl-sdk/


Log in to reply