Kivy: Kivy ne compile pas avec SDL_mixer v2.0.2

Créé le 27 oct. 2017  ·  14Commentaires  ·  Source: kivy/kivy

Versions

  • Python : 3.6.2
  • Système d'exploitation : ArchLinux
  • Kivy : dernière branche principale en date du 27/10/2017
  • Méthode d'installation de Kivy : Compilation à partir des sources

La description

Kivy ne parvient pas à compiler avec l'erreur répertoriée ci-dessous. La raison en est que certains indicateurs ont été supprimés/renommés dans SDL2_mixer version 2.0.2, en particulier MIX_INIT_MODPLUG et MIX_INIT_FLUIDSYNTH ont été supprimés de SDL_mixer.h .

Je suis prêt à essayer un correctif, mais nous voulons probablement maintenir la compatibilité descendante, donc mon idée est de redéfinir ces drapeaux localement s'ils n'existent pas dans l'en-tête.

Code et journaux

gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -march=armv8-a -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -march=armv8-a -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -march=armv8-a -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -fPIC -Ikivy/include -I/usr/include/SDL2 -I/usr/local/include/SDL2 -I/usr/include/SDL2 -I/usr/include/SDL2 -I/usr/include/python3.6m -c kivy/core/audio/audio_sdl2.c -o build/temp.linux-aarch64-3.6/kivy/core/audio/audio_sdl2.o
kivy/core/audio/audio_sdl2.c: In function '__pyx_f_4kivy_4core_5audio_10audio_sdl2_mix_init':
kivy/core/audio/audio_sdl2.c:1647:63: error: 'MIX_INIT_MODPLUG' undeclared (first use in this function); did you mean 'MIX_INIT_MOD'?
   __pyx_v_want_flags = (__pyx_v_want_flags | ((MIX_INIT_MOD | MIX_INIT_MODPLUG) | MIX_INIT_FLUIDSYNTH));
                                                               ^~~~~~~~~~~~~~~~
                                                               MIX_INIT_MOD
kivy/core/audio/audio_sdl2.c:1647:63: note: each undeclared identifier is reported only once for each function it appears in
kivy/core/audio/audio_sdl2.c:1647:83: error: 'MIX_INIT_FLUIDSYNTH' undeclared (first use in this function); did you mean 'MIX_INIT_MID'?
   __pyx_v_want_flags = (__pyx_v_want_flags | ((MIX_INIT_MOD | MIX_INIT_MODPLUG) | MIX_INIT_FLUIDSYNTH));
                                                                                   ^~~~~~~~~~~~~~~~~~~
                                                                                   MIX_INIT_MID
kivy/core/audio/audio_sdl2.c: In function '__pyx_pf_4kivy_4core_5audio_10audio_sdl2_9MusicSDL2_extensions':
kivy/core/audio/audio_sdl2.c:4936:69: error: 'MIX_INIT_MODPLUG' undeclared (first use in this function); did you mean 'MIX_INIT_MOD'?
   __pyx_t_2 = ((__pyx_v_4kivy_4core_5audio_10audio_sdl2_mix_flags & MIX_INIT_MODPLUG) != 0);
                                                                     ^~~~~~~~~~~~~~~~
                                                                     MIX_INIT_MOD
 error: command 'gcc' failed with exit status 1

Commentaire le plus utile

Cela existe toujours sur MacOS High Sierra

Tous les 14 commentaires

Voici la nouvelle définition de SDL_mixer.h de la v2.0.2 :

typedef enum
{
    MIX_INIT_FLAC   = 0x00000001,
    MIX_INIT_MOD    = 0x00000002,
    MIX_INIT_MP3    = 0x00000008,
    MIX_INIT_OGG    = 0x00000010,
    MIX_INIT_MID    = 0x00000020
} MIX_InitFlags;

Et le précédent pour comparaison :

typedef enum
{
    MIX_INIT_FLAC        = 0x00000001,
    MIX_INIT_MOD         = 0x00000002,
    MIX_INIT_MODPLUG     = 0x00000004,
    MIX_INIT_MP3         = 0x00000008,
    MIX_INIT_OGG         = 0x00000010,
    MIX_INIT_FLUIDSYNTH  = 0x00000020
} MIX_InitFlags;

Je suis sûr à 100% que personne n'utilise fluidsynth. Si vous fournissez un correctif directement, nous le fusionnerons.

Où entrez-vous dans les nouvelles définitions ? S'il te plaît, nus avec moi. Je suis nouveau dans ce domaine.

On dirait que quelqu'un a tenté une solution ici : https://github.com/kivy/kivy/pull/5459

Le paquet ArchLinux Kivy parvient en quelque sorte à contourner ce problème de compilation :

Le package python-kivy 1.10.0 dépend de sdl2_mixer 2.0.2 et fonctionne sans le correctif mentionné.

J'essayais d'installer Kivy dans un environnement virtuel Python 3 avec un fichier requirements.txt contenant :
Cython==0.25.2
Kivy==1.10.0
et a échoué avec la même erreur error: ‘MIX_INIT_MODPLUG’ undeclared (first use in this function); did you mean ‘MIX_INIT_MOD’?

Après avoir installé le package à partir du référentiel : sudo pacman -S python-kivy et ajouté le chemin d'accès à l'installation globale de Python où Kivy a été installé :
PYTHONPATH=/usr/lib/python3.6/site-packages/:/usr/local/lib/python3.6/site-packages/ python3 main.py , le module Kivy est chargé avec succès.

C'est intéressant. Malheureusement, je dois compiler la dernière branche principale car j'exécute Arch sur un Raspberry Pi, et si j'utilise la version 1.10.0 du référentiel, les performances sont épouvantables.

En effet, la construction d'un package Arch python-kivy à partir de la branche master , via makepkg -s && makepkg --skipinteg , échoue avec la même erreur .

L'application du correctif au PKGBUILD fonctionne pour la construction du maître Kivy sur le bureau x86_64

La construction pour ARM devrait fonctionner de la même manière que pour le bureau, il suffit de mettre à jour le fichier PKGBUILD respectif :
https://archlinuxarm.org/packages/arm/python-kivy
https://archlinuxarm.org/packages/arm/sdl_mixer

Remplacez 'arm' dans l'URL par la version ARM du Raspberry Pi que vous avez :

Framboise Pi 1 - armv6
Framboise Pi 2 - armv7
Framboise Pi 3 - armv8

Cependant, je vois que le package pour sdl_mixer dans ArchLinux pour ARM est 1.2.12-5 , il faudrait également le mettre à jour.

Fermé par #5459

Cela existe toujours sur MacOS High Sierra

@duaneking
Si vous installez la version de développement comme pip install https://github.com/kivy/kivy/archive/master.zip (voir https://kivy.org/docs/installation/installation-osx.html) alors cela fonctionne sur High Sierra.

Pas une option pour moi; Je suis à la recherche d'options non-kiva maintenant, car HS existe depuis assez longtemps pour que si la communauté ne se soucie pas de l'expédier/maintenir cela, alors je ne devrais pas me laisser en dépendre.

Y a-t-il un changement que vous pourriez publier une version Kivy avec ce correctif ? Depuis qu'Ubuntu 18.04 vient de sortir, cela affectera pratiquement 95% de notre base d'utilisateurs Linux.

l'installation de Kivy Development Version a fonctionné sur High Sierra. Merci fantastechit !

Cette page vous a été utile?
0 / 5 - 0 notes