Auteur Sujet: compilation python conflit  (Lu 575 fois)

dania5583

  • Moderator
  • Héros
  • *****
  • Messages: 156
  • Karma: 3
compilation python conflit
« le: ven. juil. 05 08:30:01 2019 »
Bonjour Thierry
Lorsque je compile des paquets avec des dépendances en python je me trouve confronter à un problème avec la version de python utilisé. En gros je spécifie python  ex python python-cairo python-gobject comme dépendances donc la version 3.7.3 je lance ma compilation et là la version de python pris en compte est la 2.7.16 donc python2 malgré que ce soit python (3.7.3) qui soit demandé ce qui entraîne que les dépendance python-cairo et python-gobject ne sont pas trouvées. Tout rentre dans l'ordre si je met comme dépendances python2 python2-cairo python2-gobject. A moins que dans le code source python2 soit la référence je pense qu'il y a un conflit car dans le répertoire /usr/bin il y a

lrwxrwxrwx 1 root root        7  8 mars  00:06 python -> python2
lrwxrwxrwx 1 root root        9  8 mars  00:06 python2 -> python2.7
-rwxr-xr-x 1 root root    14312  8 mars  00:06 python2.7
-rwxr-xr-x 1 root root     1681  8 mars  00:06 python2.7-config
lrwxrwxrwx 1 root root       16  8 mars  00:06 python2-config -> python2.7-config
lrwxrwxrwx 1 root root        9 27 mars  13:13 python3 -> python3.7
-rwxr-xr-x 2 root root    14312 27 mars  13:14 python3.7
lrwxrwxrwx 1 root root       17 27 mars  13:13 python3.7-config -> python3.7m-config
-rwxr-xr-x 2 root root    14312 27 mars  13:14 python3.7m
-rwxr-xr-x 1 root root     3100 27 mars  13:13 python3.7m-config
lrwxrwxrwx 1 root root       16 27 mars  13:13 python3-config -> python3.7-config
lrwxrwxrwx 1 root root       14  8 mars  00:06 python-config -> python2-config
lrwxrwxrwx 1 root root       10 27 mars  13:13 pyvenv -> pyvenv-3.7
-rwxr-xr-x 1 root root      435 27 mars  13:13 pyvenv-3.7

python a un lien qui pointe vers python2 ce qui expliquerait le fait que ce soit la version python2 qui soit choisi mais je me trompe peut-être

Sinon il doit y avoir un moyen de forcer la compilation en python3 avec une commande sed je crois

Cordialement

Daniel

dania5583

  • Moderator
  • Héros
  • *****
  • Messages: 156
  • Karma: 3
Re : compilation python conflit
« Réponse #1 le: ven. juil. 05 09:02:02 2019 »
le contenu du log

Checking whether python program exists.../usr/bin/python
Obtaining Python exe path... /usr/bin/python
Obtaining Python lib dir... /usr/lib/python2.7/site-packages                                                              [08:46 x86_64 4.20.17-YaoLinuX root@yaolinux]
Obtaining Python config vars... ok
Altered configuration variables:                                                                                          [08:42 x86_64 4.20.17-YaoLinuX root@yaolinux]
ncurses = False (default True): build with ncurses
magic_hat = False (default True): special Linux PPS hack for Raspberry Pi et al
gpsd_group = uucp (default dialout): privilege revocation group
prefix = /usr (default /usr/local): installation directory prefix
qt_versioned = 5 (default ): version for versioned Qt
sbindir = /usr/bin (default sbin): system binaries directory
WARNING: Python module serial (pyserial) not found.
    ubxtool and zerk will not be installed
WARNING: Python module pycairo not found.
    xgps and xgpsspeed will not be installed
WARNING: Python module pygobject not found.
    xgps and xgpsspeed will not be installed


Robocop

  • Membre Junior
  • **
  • Messages: 30
  • Karma: 2
Re : compilation python conflit
« Réponse #2 le: ven. juil. 05 11:20:19 2019 »
Salut Dania.

essais de déclaré dans ta recette le variable d'env pointant sur python 3 ou (export=patatipatata...)
Ou, toujours dans ta recette fait un :

ln -s /usr/bin/python3 /usr/bin/python
dans build()

et puisque on fait des trucs propres:

unlink /usr/bin/python
à la fin de ta recette.

dania5583

  • Moderator
  • Héros
  • *****
  • Messages: 156
  • Karma: 3
Re : compilation python conflit
« Réponse #3 le: ven. juil. 05 13:34:41 2019 »
Salut Greg

J'ai essayé
unlink /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python  en début de recette

puis
unlink /usr/bin/python
ln -s /usr/bin/python2 /usr/bin/python  en fin de recette sinon la chroot reste modifiée

ça ne marche pas l'interpréteur python n'est pas détecté . J'ai modifié directement dans la chroot le lien pour le mettre en python3 et la compilation me trouve la version python2 Je vais forcer le path dans la recette pour voir


Robocop

  • Membre Junior
  • **
  • Messages: 30
  • Karma: 2
Re : compilation python conflit
« Réponse #4 le: ven. juil. 05 15:37:41 2019 »
Tatatata :

build(){
ln -s /usr/bin/python3 /usr/bin/python
pataipatata..
}

package(){

empaqueter ma grand-mère
unlink /usr/bin/python
}

Ou joue sur la variable d'env.

Ha...aussi, verifie que Python2 et 3 soit bien dans /usr/bin avec un which. Si il est dans /bin, adapte le lien symbolique.
« Modifié: ven. juil. 05 15:40:20 2019 par Robocop »

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1168
  • Karma: 12
  • Sexe: Homme
    • NuTyX distribution
Re : compilation python conflit
« Réponse #5 le: ven. juil. 05 20:30:47 2019 »
J'avoue que j'ai pas de solution pour ton problème. Tu connais mon passion pour python,2,3.
« Modifié: sam. juil. 06 09:34:41 2019 par Thierry »

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1168
  • Karma: 12
  • Sexe: Homme
    • NuTyX distribution
Re : compilation python conflit
« Réponse #6 le: dim. juil. 14 22:12:23 2019 »
J'ai commencé à mettre de l'ordre dans les paquets python:

Ce que je peux confirmer jusqu'à présent:

Sous NuTyX (contrairement à Arch Linux) les bons liens sont ce que tu as mis:

Le paquet python:
/usr/bin/python -> python2
/usr/bin/python2 -> python2.7
/usr/bin/python2.7

Le paquet python3:
/usr/bin/python3 -> python3.7
/usr/bin/python3.7

Bien à toi

dania5583

  • Moderator
  • Héros
  • *****
  • Messages: 156
  • Karma: 3
Re : compilation python conflit
« Réponse #7 le: lun. juil. 15 13:48:54 2019 »
c'est la que je suis perdu . Si tu fais un cards search python tu obtiens
(cli) python2 2.7.16 Next generation of the python high-level scripting language
(cli) python 3.7.3 Next generation of the python high-level scripting language

python devient python3 pour cards . Par contre quand tu fais un cards create -r dans une chroot il cherche le path et le type d'interpréteur s'il trouve /usr/bin/python avec un lien sur python2 l'interpréteur choisi est python2 -> python2.7 ,je dirais que "par defaut" c'est python2 qui est trouvé mais je n'en suis pas sur . J'ai forcé le lien avec python3 (un seul essai) et c'est python2 qui est quand même sorti

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1168
  • Karma: 12
  • Sexe: Homme
    • NuTyX distribution
Re : compilation python conflit
« Réponse #8 le: lun. juil. 15 16:45:19 2019 »
colle ta recette et j'essaierai de la construire

dania5583

  • Moderator
  • Héros
  • *****
  • Messages: 156
  • Karma: 3
Re : compilation python conflit
« Réponse #9 le: lun. juil. 15 20:52:28 2019 »
Bonsoir Thierry
A l'origine je compilais sur une Yaolinux, la compilation est la meme que pour Nutyx. J'ai donc installé une belle Nutyx dans une VM et mis une recette de gpsd adapté à sysvinit car la recette archlinux est pour systemd. j'ai bétonné pour avoir les path en python3 ,la recette se compile bien un path /usr/bin/python est trouvé mais pas de trace d'un interpréteur python3

Checking whether python program exists.../usr/bin/python
Obtaining Python exe path... yes
Obtaining Python lib dir... yes
Obtaining Python config vars... ok
Altered configuration variables:
systemd = False (default True): systemd socket activation
ncurses = False (default True): build with ncurses
qt = False (default True): build QT bindings
magic_hat = False (default True): special Linux PPS hack for Raspberry Pi et al
gpsd_group = uucp (default dialout): privilege revocation group
prefix = /usr (default /usr/local): installation directory prefix
sbindir = /usr/bin (default sbin): system binaries directory
Part of the website build requires asciidoc, not installed.
scons: done reading SConscript files.
scons: Building targets ...
rm -f ais_json.i && /usr/bin/python3 jsongen.py --ais --target=parser > ais_json.i && chmod a-w ais_json.i

quand j'installe le paquet gpsd un de ces modules "gps" se retrouve dans /usr/local/lib/python2.7/site-packages

root [ /mnt/hd/var/log/pkgbuild ]# find / -name site-packages
/usr/local/lib/python2.7/site-packages
/mnt/hd/usr/lib/python2.7/site-packages
/mnt/hd/usr/lib/python3.7/site-packages
/mnt/hd/usr/local/lib/python2.7/site-packages
root [ /mnt/hd/var/log/pkgbuild ]# cd /usr/local/lib/python2.7/site-packages/
root [ /usr/local/lib/python2.7/site-packages ]# ls
gps  gps-3.19.egg-info

la compile s'est faite avec python2

ma recette
# Depends on: bluez docbook-xls gtk3 libusb php python python-cairo python-gobject qtbase scons

description="GPS daemon and library to support USB/serial GPS devices"
url="http://catb.org/gpsd/"
packager="Dania <Dania@nutyx.org>"
contributors="Tnut"

name=gpsd
version=3.19

source=(https://download.savannah.gnu.org/releases/$name/$name-$version.tar.gz)

prepare() {
  cd $name-$version

  # fix python 3.7 path
  sed -i -e "s|#![ ]*/usr/bin/python$|#!/usr/bin/python3|" \
    -e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python3|" \
    $(find . -name '*.py')
}

build() {
  cd $name-$version

  export LINKFLAGS="${LDFLAGS}"
  scons prefix=/usr \
        systemd=no \                                                                                                        [21:03 x86_64 4.19.56-NuTyX-lts root@nutyx]
        libQgpsmm=no \
        gpsd_group=uucp \
        PYTHONPATH=/usr/bin/python3 \
        sbindir=/usr/bin
  scons build
}

package() {
  cd $name-$version

  export DESTDIR=$PKG
  scons install
  install -Dm755 gpsinit -t $PKG/usr/bin
  chmod 755 $PKG/usr/bin/*

  mkdir -p $PKG/etc/gpsd
  cat > $PKG/etc/gpsd/gpsd.conf << "EOF"
# Default settings for gpsd.
START_DAEMON="true"
GPSD_OPTIONS=""
DEVICES=""
USBAUTO="true"
EOF

  install -Dm644 gpsd.rules $PKG/lib/udev/rules.d/25-gpsd-usb.rules

  install -Dm755 gpsd.hotplug $PKG/lib/udev/gpsd.hotplug

  install -Dm644 packaging/X11/xgps.desktop \
    $PKG/usr/share/applications/xgps.desktop
  install -Dm644 packaging/X11/xgpsspeed.desktop \
    $PKG/usr/share/applications/xgpsspeed.desktop
  install -Dm644 packaging/X11/gpsd-logo.png \
    $PKG/usr/share/gpsd/gpsd-logo.png

}


Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1168
  • Karma: 12
  • Sexe: Homme
    • NuTyX distribution
Re : compilation python conflit
« Réponse #10 le: mar. juil. 16 08:42:50 2019 »
Pourquoi se prendre la tête avec python3 si il se compile bien avec python(2) ?
« Modifié: mar. juil. 16 21:02:51 2019 par Thierry »

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1168
  • Karma: 12
  • Sexe: Homme
    • NuTyX distribution
Re : compilation python conflit
« Réponse #11 le: mar. juil. 16 20:07:14 2019 »
« Modifié: mar. juil. 16 21:02:48 2019 par Thierry »