Auteur Sujet: problème pour complier dans une chroot32  (Lu 163 fois)

guy_

  • Membre Senior
  • ****
  • Messages: 103
  • Karma: 4
problème pour complier dans une chroot32
« le: mar. nov. 27 16:25:16 2018 »
Bonjour,

J'essaie de compiler avec cards create -r <nom_du_paquet> dans une chroot 32bits lancée à partir d'une nutyx x86_64...

Pour utiliser cards dans la chroot32, je dois lancer la chroot avec
sudo setarch linux32 chroot /chroot32
sinon il installe les paquet 64bits

La chroot est alors bien vue comme une 32  bits
root [ / ]# uname -m
i686

Le problème que je recontre, c'est que cards ne reconnait pas les dependences à installer, bien qu'elles soit listées dans le Pkgfile
/usr/ports/personnel/<nom_du_paquet> has no deps
et la compil finit évidemment par se planter.

Un paquet sans dépendances se compile sans problème.


Guy

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1065
  • Karma: 10
  • Sexe: Homme
    • NuTyX distribution
Re : problème pour complier dans une chroot32
« Réponse #1 le: mar. nov. 27 16:30:26 2018 »
Je vais regarder ça mais il me semble que c'est moins compliquer. J'avais eu à compiler Firefox de cette façon puisque la compilation de Firefox (même en 32 bits) reclamme au moins 6 Giga de RAM.

En gros j'installe une NuTyX 32 bits:
sudo ARCH=i686 install-nutyx
Je rentre dans la chroot une fois installée
sudo ARCH=i686 install-nutyx -ec
Ensuite je configure tout le truc pour pouvoir utiliser build-collection et faire par exemple:
build-collection /stable/gui-extra firefox

guy_

  • Membre Senior
  • ****
  • Messages: 103
  • Karma: 4
Re : problème pour complier dans une chroot32
« Réponse #2 le: sam. déc. 01 14:55:21 2018 »
Salut Thierry,

Le problème semble plus général en 32 bits:
J'ai complété ma chrot32 pour en faire en une 32 bits 10.4 fixed, j'ai booté dessus et j'ai essayé da compiler (sans chroot)
et j'ai le même souci.

Aveccards create -r <non-du-paquet>Cards supprime les paquets non dans base mais n'ajoute pas ceux repris dans la ligne "#Depends on:" du Pkgfile...

J'espère que tu auras un peu de temps pour regarder ceci avant la 11.0.
Merci

Guy

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1065
  • Karma: 10
  • Sexe: Homme
    • NuTyX distribution
Re : problème pour complier dans une chroot32
« Réponse #3 le: sam. déc. 01 23:56:38 2018 »
Salut Guy,

La commande cards create -r ne compile pas les dépendances, elle utilise TOUJOURS les binaires. Et si ces dépendances n'existent pas, le paquet final sera directement compilé et finira en erreur:
cards create -h
Je vais essayer de t'expliquer la procédure à suivre, je crois que tu fais une petite erreur à un moment donné:

1. J'installe une NuTyX 32 bits dans le dossier /i686-rolling:
ARCH=i686 LFS=/i686-rolling install-nutyx
2. Je rentre dans ma 32 bits:
ARCH=i686 LFS=/i686-rolling install-nutyx -ec
3. Je rapatrie les ports qui m'intéressent pour ce test cad base,cli et gui:
ports -u base
ports -u cli
ports -u gui
va y avoir quelque messages du genre:
This rsync lacks old-style --compress due to its external zlib.  Try -zz.
Continuing without compression.

On peut les ignorer.

4. Je télécharge les paquets de development:
get cards.devel
5. je rapatrie les binaires des 3 collections base, cli et gui
for i in base cli gui
do
rsync -av --delete rsync://downloads.nutyx.org/nutyx/i686/rolling/$i/ /usr/ports/$i/
done
6. Je modifie mon /etc/cards.conf
dir /usr/ports/gui
dir /usr/ports/cli
dir /usr/ports/base

....
## For all the graphical applications
dir /var/lib/pkg/depot/gui-extra|http://rsync.nutyx.org
#
## For a minimal graphical interface
# dir /var/lib/pkg/depot/gui|http://rsync.nutyx.org
#
## For all the console applications
dir /var/lib/pkg/depot/cli-extra|http://rsync.nutyx.org
#
## For a minimal console interface
# dir /var/lib/pkg/depot/cli|http://rsync.nutyx.org
#
## Chroot system without reboot possibilities for a chroot
# dir /var/lib/pkg/depot/base|http://rsync.nutyx.org
#
...
C'est à dire que je commente les dépots officiels de base, cli et gui et utilises les ports officiels AVEC LES BINAIRES dispos

Pour vérifier si la configuration est correcte, tu peux utiliser les commandes:
cards config
1 Directory: /usr/ports/gui
2 Directory: /usr/ports/cli
3 Directory: /usr/ports/base
4 Directory: /var/lib/pkg/depot/nos from http://downloads.nutyx.org/i686/10.4/nos
5 Directory: /var/lib/pkg/depot/lxqt-extra from http://downloads.nutyx.org/i686/10.4/lxqt-extra
...
..
.
17 Directory: /var/lib/pkg/depot/gui-extra from http://downloads.nutyx.org/i686/10.4/gui-extra
18 Directory: /var/lib/pkg/depot/cli-extra from http://downloads.nutyx.org/i686/10.4/cli-extra
Base System list directory: /var/lib/pkg/depot/base
Binaries : i686

et

cards level
0: /usr/ports/gui/gsfonts
0: /usr/ports/gui/libcap-ng
0: /usr/ports/gui/libdvbpsi
0: /usr/ports/gui/libsepol
0: /usr/ports/gui/printproto
0: /usr/ports/gui/tinyxml
0: /usr/ports/gui/xorg-font-alias
0: /usr/ports/gui/xorg-font-util
0: /usr/ports/gui/xorg-libpciaccess
0: /usr/ports/gui/xorg-util-macros
0: /usr/ports/gui/xorg-xbitmaps
0: /usr/ports/gui/xorgproto
0: /usr/ports/gui/xulrunner
0: /usr/ports/cli/ack
...
..
26: /usr/ports/gui/kguiaddons
26: /usr/ports/gui/kidletime
26: /usr/ports/gui/kwayland
26: /usr/ports/gui/kwindowsystem
26: /usr/ports/gui/oxygen-icons5
26: /usr/ports/gui/solid
27: /usr/ports/gui/libkscreen


7. Je peux maintenant compiler n'importe quel paquet des ces trois collections, mais si je ne modifie aucun Pkgfile, la compilation ne se fera pas puisque la version binaire est à jour.
« Modifié: dim. déc. 02 00:04:40 2018 par Thierry »

guy_

  • Membre Senior
  • ****
  • Messages: 103
  • Karma: 4
Re : problème pour complier dans une chroot32
« Réponse #4 le: dim. déc. 02 13:36:42 2018 »
Thierry,

La manière don tu as reprécisé les choses m'a permis d'y voir plus clair.

La commande cards create -r ne compile pas les dépendances, elle utilise TOUJOURS les binaires.
Et si ces dépendances n'existent pas, le paquet final sera directement compilé et finira en erreur:
Je pensais -naïvement- que s'il ne trouvait pas les dépendances binaires, il allait les télécharger ...

Après avoir fait un rsync des dépots base cli gui, j'ai pu compiler wine (32) et l'exécuter dans ma nutyx x86_64 après avoir copié les librairies 32 bits nécessaires (p.ex. dans /opt/i686) et configuré le loader.

Merci de ta réponse.

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1065
  • Karma: 10
  • Sexe: Homme
    • NuTyX distribution
Re : problème pour complier dans une chroot32
« Réponse #5 le: mar. déc. 04 10:54:28 2018 »
Salut @Guy,

A l'occasion tu pourrai décrire ta procédure qur tu as suivi pour compiler WINE.

guy_

  • Membre Senior
  • ****
  • Messages: 103
  • Karma: 4
Re : problème pour complier dans une chroot32
« Réponse #6 le: mar. déc. 04 21:12:02 2018 »
Salut Thierry,

Pour wine, j'ai mis à jour le Pkgfile de la NuTyX 9.0,
puis j'ai compilié dans une NuTyX 32 bits.

Ensuite, dans ma 64 bits, j'ai fait un bsdtar du paquet dans un dossier (p.ex. /opt/wine)
Rem: Plutôt que de mettre dans le Pkgile l'option --prefix=/usr,
     il serait sans doute préférable de mettre --prefix=/opt/i686/usr p.ex.
     ce qui devrait permettre d'utiliser cards install plutôt que bsdtar -xvf

Pour les librairies, j'utilise celles de la NuTyX i686,
je les ai copiées dans /opt/i686/lib
Celles permettant de lancer ds binaires 32 bits sont dans le paquet glibc:
   lib/ld-2.27.so          lib/ld-linux.so.2
   lib/libc-2.27.so        lib/libc.so.6
   lib/libdl-2.27.so       lib/libdl.so.6
   lib/libm-2.27.so        lib/libm.so.6
   lib/libpthread-2.27.so  lib/libpthread.so.6

Ensuite, configurer le loader linux pour qu'il trouve les libs 32.
cd /lib
sudo ln -s /opt/i686/lib/ld-linux.so.2
sudo sh -c "echo /opt/i686/lib      > /etc/ld.so.conf.d/i686.conf"
sudo sh -c "echo /opt/i686/usr/lib >> /etc/ld.so.conf.d/i686.conf"
sudo ldconfig

Il faut bien sûr ajouter les autres librairies dynamiques 32 bits nécessaires au programme à lancer,
je les ai mises soit dans /opt/i686/lib, soit dans /opt/i686/usr/lib

Pour la facilité d'exécution, j'ai rajouté un lien symbolique
cd /usr/bin
ln -s /opt/wine/usr/bin/wine

Et voilà.


Guy

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1065
  • Karma: 10
  • Sexe: Homme
    • NuTyX distribution
Re : problème pour complier dans une chroot32
« Réponse #7 le: mer. déc. 05 10:59:31 2018 »
Génial tu confirmes ce que je prévoyais de faire. Ce weekend j’ajoiteration le paquet wine dans la collection NOS

Bien à toi

Thierry

guy_

  • Membre Senior
  • ****
  • Messages: 103
  • Karma: 4
Re : problème pour complier dans une chroot32
« Réponse #8 le: mer. déc. 05 13:50:29 2018 »
Thierry,

Pour info:

Le Pkgfile que j'ai utilisé:
# Depends on: xorg-libx11 xorgproto freetype sane samba libgphoto2 giflib lcms openal
# Description: Emulateur Windows 32
# URL: http://www.winehq.com/

name=wine
version=3.0.3
release=1

source=(https://sourceforge.net/projects/wine/files/Source/$name-$version.tar.xz)

build() {
   cd $name-$version
   ./configure \
      --prefix=/usr \
      --mandir=/usr/share/man \
      --sysconfdir=/etc \
      --with-x
   make depend
   make
   make DESTDIR=$PKG install
   mkdir -p $PKG/etc/wine
}


et le résultat de la commande
find /opt/i686
:
(post suivant)

guy_

  • Membre Senior
  • ****
  • Messages: 103
  • Karma: 4
Re : problème pour complier dans une chroot32
« Réponse #9 le: mer. déc. 05 13:51:40 2018 »
/opt/i686
/opt/i686/lib
/opt/i686/lib/libblkid.so.1.1.0
/opt/i686/lib/librt-2.27.so
/opt/i686/lib/libmount.so.1
/opt/i686/lib/libm-2.27.so
/opt/i686/lib/libpcre.so.1.2.10
/opt/i686/lib/libz.so.1.2.11
/opt/i686/lib/libm.so.6
/opt/i686/lib/libpthread-2.27.so
/opt/i686/lib/libblkid.so.1
/opt/i686/lib/libmount.so.1.1.0
/opt/i686/lib/libz.so.1
/opt/i686/lib/libuuid.so.1
/opt/i686/lib/libresolv.so.2
/opt/i686/lib/librt.so.1
/opt/i686/lib/libc-2.27.so
/opt/i686/lib/libuuid.so.1.3.0
/opt/i686/lib/libpcre.so.1
/opt/i686/lib/libbz2.so.1.0
/opt/i686/lib/libbz2.so.1.0.6
/opt/i686/lib/libdl-2.27.so
/opt/i686/lib/libc.so.6
/opt/i686/lib/libresolv-2.27.so
/opt/i686/lib/libpthread.so.0
/opt/i686/lib/ld-2.27.so
/opt/i686/lib/ld-linux.so.2
/opt/i686/lib/libdl.so.2
/opt/i686/usr
/opt/i686/usr/lib
/opt/i686/usr/lib/libffi.so.6
/opt/i686/usr/lib/libpixman-1.so.0.34.0
/opt/i686/usr/lib/libXdamage.so.1.1.0
/opt/i686/usr/lib/libgcc_s.so.1
/opt/i686/usr/lib/libfreetype.so.6.16.1
/opt/i686/usr/lib/libdatrie.so.1.3.3
/opt/i686/usr/lib/libffi.so.6.0.4
/opt/i686/usr/lib/libffi.so
/opt/i686/usr/lib/libglib-2.0.so
/opt/i686/usr/lib/libcairo.so
/opt/i686/usr/lib/libcairo.so.2
/opt/i686/usr/lib/libxcb-render.so
/opt/i686/usr/lib/libXft.so.2
/opt/i686/usr/lib/libXdamage.so.1
/opt/i686/usr/lib/libgobject-2.0.so.0.5600.1
/opt/i686/usr/lib/libfribidi.so.0.4.0
/opt/i686/usr/lib/libXdmcp.so.6
/opt/i686/usr/lib/libatk-1.0.so.0
/opt/i686/usr/lib/libXcursor.so
/opt/i686/usr/lib/libXrandr.so.2
/opt/i686/usr/lib/libjpeg.so.8
/opt/i686/usr/lib/libgdk-x11-2.0.so
/opt/i686/usr/lib/libfontconfig.so.1.11.1
/opt/i686/usr/lib/libXcomposite.so
/opt/i686/usr/lib/libXcursor.so.1
/opt/i686/usr/lib/libgthread-2.0.so.0
/opt/i686/usr/lib/libgtk-x11-2.0.so.0.2400.32
/opt/i686/usr/lib/libXcursor.so.1.0.2
/opt/i686/usr/lib/libstdc++.so.6
/opt/i686/usr/lib/libXcomposite.so.1.0.0
/opt/i686/usr/lib/libharfbuzz.so
/opt/i686/usr/lib/libpangocairo-1.0.so
/opt/i686/usr/lib/libXau.so
/opt/i686/usr/lib/libpangoft2-1.0.so.0
/opt/i686/usr/lib/libxcb-shm.so
/opt/i686/usr/lib/libXdamage.so
/opt/i686/usr/lib/libfreetype.so.6
/opt/i686/usr/lib/libgdk-x11-2.0.so.0
/opt/i686/usr/lib/libgio-2.0.so
/opt/i686/usr/lib/libxcb-shm.so.0
/opt/i686/usr/lib/libgobject-2.0.so
/opt/i686/usr/lib/libpangocairo-1.0.so.0.4200.1
/opt/i686/usr/lib/libatk-1.0.so
/opt/i686/usr/lib/libgmodule-2.0.so.0
/opt/i686/usr/lib/libstdc++.so
/opt/i686/usr/lib/libjpeg.so.8.1.2
/opt/i686/usr/lib/libgdk-x11-2.0.so.0.2400.32
/opt/i686/usr/lib/libfltk.so.1.3
/opt/i686/usr/lib/libXdmcp.so
/opt/i686/usr/lib/libXdmcp.so.6.0.0
/opt/i686/usr/lib/libexpat.so.1.6.7
/opt/i686/usr/lib/libpango-1.0.so
/opt/i686/usr/lib/libgobject-2.0.so.0
/opt/i686/usr/lib/libexpat.so.1
/opt/i686/usr/lib/libXext.so.6
/opt/i686/usr/lib/libgmodule-2.0.so
/opt/i686/usr/lib/libfribidi.so
/opt/i686/usr/lib/libX11.so.6
/opt/i686/usr/lib/libthai.so.0.3.0
/opt/i686/usr/lib/libgmodule-2.0.so.0.5600.1
/opt/i686/usr/lib/libXrandr.so
/opt/i686/usr/lib/libpango-1.0.so.0.4200.1
/opt/i686/usr/lib/libgdk_pixbuf-2.0.so.0
/opt/i686/usr/lib/libglib-2.0.so.0.5600.1
/opt/i686/usr/lib/libdatrie.so.1
/opt/i686/usr/lib/libgthread-2.0.so
/opt/i686/usr/lib/libXcomposite.so.1
/opt/i686/usr/lib/libXrandr.so.2.2.0
/opt/i686/usr/lib/libxcb.so.1.1.0
/opt/i686/usr/lib/libpangoft2-1.0.so
/opt/i686/usr/lib/libgtk-x11-2.0.so.0
/opt/i686/usr/lib/libgdk_pixbuf-2.0.so
/opt/i686/usr/lib/libpng16.so.16
/opt/i686/usr/lib/libX11.so.6.3.0
/opt/i686/usr/lib/libharfbuzz.so.0
/opt/i686/usr/lib/libthai.so
/opt/i686/usr/lib/libglib-2.0.so.0
/opt/i686/usr/lib/libXfixes.so.3.1.0
/opt/i686/usr/lib/libthai.so.0
/opt/i686/usr/lib/libXau.so.6
/opt/i686/usr/lib/libxcb.so.1
/opt/i686/usr/lib/libgdk_pixbuf-2.0.so.0.3612.0
/opt/i686/usr/lib/libpixman-1.so.0
/opt/i686/usr/lib/libxcb-shm.so.0.0.0
/opt/i686/usr/lib/libXau.so.6.0.0
/opt/i686/usr/lib/libXinerama.so.1
/opt/i686/usr/lib/libgio-2.0.so.0.5600.1
/opt/i686/usr/lib/libharfbuzz.so.0.10706.0
/opt/i686/usr/lib/libpangocairo-1.0.so.0
/opt/i686/usr/lib/libgio-2.0.so.0
/opt/i686/usr/lib/libgthread-2.0.so.0.5600.1
/opt/i686/usr/lib/libxcb-render.so.0
/opt/i686/usr/lib/libXft.so.2.3.2
/opt/i686/usr/lib/libpixman-1.so
/opt/i686/usr/lib/libgtk-x11-2.0.so
/opt/i686/usr/lib/libXext.so.6.4.0
/opt/i686/usr/lib/libdatrie.so
/opt/i686/usr/lib/libpng16.so.16.35.0
/opt/i686/usr/lib/libXinerama.so.1.0.0
/opt/i686/usr/lib/libxcb-render.so.0.0.0
/opt/i686/usr/lib/libpango-1.0.so.0
/opt/i686/usr/lib/libpangoft2-1.0.so.0.4200.1
/opt/i686/usr/lib/libXfixes.so.3
/opt/i686/usr/lib/libatk-1.0.so.0.22810.1
/opt/i686/usr/lib/libfontconfig.so.1
/opt/i686/usr/lib/libXrender.so.1.3.0
/opt/i686/usr/lib/libXrender.so.1
/opt/i686/usr/lib/libcairo.so.2.11400.12
/opt/i686/usr/lib/libstdc++.so.6.0.24
/opt/i686/usr/lib/libfribidi.so.0