Building arm packages using QEMU on x86_64 host

Ask questions about Arch Linux ARM. Please search before making a new topic.

Building arm packages using QEMU on x86_64 host

Postby lah » Mon Oct 09, 2017 9:41 am

I'm using qemu to build some arm packages on my x86_64 host. Target is a Raspberry, so in order to chroot here are the needed steps on my host :

Code: Select all
sudo mkdir /mnt/rpi_card
sudo mount /dev/mmcblk0p2 /mnt/rpi_card/
sudo update-binfmts --enable qemu-arm
sudo cp /usr/bin/qemu-arm-static archlinux-rpi/usr/bin
sudo arch-chroot /mnt/rpi_card/ /bin/bash


When I try to build some large packages, such as opencv, I have following errors :

Code: Select all
makepkg -Acs
==> Création du paquet opencv-git 3.3.0.r463.g8ac2c5d620-1 (lun. oct.  9 11:05:42 CEST 2017)
==> Vérification des dépendances pour l’exécution...
==> Vérification des dépendances pour la compilation...
==> Récupération des sources...
  -> Mise à jour du dépot opencv git
Récupération de origin
fatal: Out of memory, getdelim failed
error: Impossible de récupérer origin
==> ATTENTION : Échec lors de la mise à jour du dépôt opencv git
  -> Mise à jour du dépot opencv_contrib git
Récupération de origin
==> Validation des fichiers source avec sha512sums...
    opencv ... Ignoré
    opencv_contrib ... Ignoré
==> Extraction des sources...
  -> Création d’une copie de travail du dépot opencv git...
fatal: Out of memory, getdelim failed
fatal: L'hôte distant a fermé la connexion lors du contact initial
==> ERREUR : Échec lors de la mise à jour d’une copie de travail du dépot opencv git
    Abandon...


When I try to build it on target, I do not have any errors.

Moreover, in some cases, when installing dependencies, makepkg that cannot be launched as root requires root password, in this case I get this error :

Code: Select all
 makepkg -Acs -L   
==> Création du paquet blueproximity 1.2.5-8 (lun. oct.  9 11:26:01 CEST 2017)                                         
==> Vérification des dépendances pour l’exécution...       
==> Installation des dépendances manquantes...             
Unknown host QEMU_IFLA type: 40                           
Unknown host QEMU_IFLA type: 41                           
Unknown host QEMU_IFLA type: 40                           
Unknown host QEMU_IFLA type: 41                           
Unknown host QEMU_IFLA type: 40                           
Unknown host QEMU_IFLA type: 41                           
Unknown host QEMU_IFLA type: 40                           
Unknown host QEMU_IFLA type: 41                           
Unknown QEMU_IFLA_BR type 41                               
Unknown QEMU_IFLA_BR type 42                               
sudo: pas de tty présent et pas de programme askpass spécifié                                                         
==> ERREUR : « pacman » n’a pas pu installer les dépendances manquantes.


How can I solve these two errors?
lah
 
Posts: 8
Joined: Fri Aug 28, 2015 9:28 am

Re: Building arm packages using QEMU on x86_64 host

Postby lah » Tue Oct 10, 2017 8:49 am

I ended up using distcc, best choice, very flexible and easy to configure.
I managed to compile opencv for my raspberry using some other raspberries and my x86 computer.

Here are some useful links :
https://wiki.archlinux.org/index.php/Distcc

Just a suggestion about build. When master machine (raspberry 3) was used in distcc build clients, I got memory issues forcing kernel to close some processes. After that my system was very unstable. For build involving many different processes (not only compilation/linking), such as opencv build, I do not recommend using master machine as distcc client.
lah
 
Posts: 8
Joined: Fri Aug 28, 2015 9:28 am


Return to User Questions

Who is online

Users browsing this forum: No registered users and 2 guests