Compiler Lilypond

gillesth Membre non connecté
-
- Voir le profil du membre gillesth
- Inscrit le : 28/10/2012
- Groupes :
Bonjour tout le monde.
J'utilise assez intensément l'éditeur de partitions musicales Lilypond
Je souhaiterais à partir des sources, pouvoir compiler par moi-même ce logiciel (en vue éventuellement d'en proposer des améliorations).
La liste des dépendances nécessaires à cette compilation est assez conséquente :
Certaine distribution Linux propose apparemment un script pour rendre la chose plus rapide et aisée. En particulier, je lorgne sur la distribution Fédora, car je vois qu'elle utilise dnf, dnf qui est utilisable sous Mageia, si j'ai bien compris :
http://lilypond.org/doc/v2.23/Documentation/contributor/requirements-for-compiling-lilypond#fedora
question 1 : est-ce que je peux en toute sécurité utiliser les commandes de Fedora ci-dessus pour installer les dépendances nécessaires ?
question 2 : hum, comme je préssent que la réponce 1 est non, est-ce qu'il y aurait un exemple de script près à l'emploi que je me propose d'adapter pour la communauté Mageia, ce qui permettrait à l'instar des autres dstributions, d'installer rapidement ces dépendances ?
Les logiciels tels Lilypond sont t'ils compilés systématiquement à partir de leur source avant d'être proposés en *.rpm ou bien seul le binaire fournit par l'éditeur de logiciel est récupéré ?
Merci d'avances, de vos réponses.
Édité par gillesth Le 15/05/2021 à 15h53

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron
Pas vraiment non, elle est plutôt courte.
Non, ce n'est pas un script.
Oui. Mais attention, la commande builddep regarde comment est construit le paquet et télécharge les dépendances manquantes. Ça ne fonctionne à coup sûr que si tu souhaites compiler exactement la même version que celle produite par le paquet. Imaginons que Fedora est la version n de Lilypond. Sauf que pour la version n+1 un nouveau paquet est nécessaire à la compilation de Lilypond ou une version plus récente. Et bien ça ne fonctionnera pas.
La command eéquivalente avec urpmi est probablement :
urpmi --buildrequires lilypond
Puis :
urpmi gcc-c++ autoconf git
Voilà. Je ne suis pas fan du buildrequires car je préfère prendre la liste des dépendances et les installer une à une.
Oui

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Bien venu dans le monde de l'empaquetage !
Pour lilypond, il est déjà présent dans Mageia, donc il existe une spec (une recette) pour construire le paquet.
Voilà ce que je te conseilles :
lire quelques pages : https://wiki.mageia.org/en/R%C3%A9aliser_votre_propre_r%C3%A9troportage-fr
https://wiki.mageia.org/en/Empaquetage_pour_debutant-fr
(plus de détails : https://wiki.mageia.org/en/Consignes_empaqueter-fr )
Grosso-modo :
mkdir ${HOME}/rpmbuild/SPECS cat <<EOT >${HOME}/.rpmmacros # distribution name suffix override %distsuffix .mgajibz #%dist %distsuffix%distro_release EOT curl http://svnweb.mageia.org/packages/cauldron/lilypond/current/SPECS/lilypond.spec?revision=1701500&view=co --output ${HOME}/rpmbuild/SPECS/lilypond.spec su -c 'urpmi rpmbuild' su -c 'urpmi --buildrequires ${HOME}/rpmbuild/SPECS/lilypond.spec'
Et voilà, tu es grosso-modo prêt.
En éditant le fichier lilypond.spec tu peux modifier la compilation du logiciel.
Tu peux changer la source pour utiliser un git comme framagit, gitlab ou github.
Avec les git, tu peux préciser un commit spécifique.
Avec la spec, tu peux aussi faire des patchs.
Pour les patchs, je conseille : https://wiki.mageia.org/en/How_to_create_a_patch ça marche bien. Ça s'applique sur la spec comme ça https://wiki.mageia.org/en/Consignes_empaqueter-fr#La_balise_patch_.28correctif.2C_rustine.29
Si tu utilises un commit du git, tu peux utiliser cette structure dans la spec :
%global commit 4ef594c8a097d180700d22d91e9a7fea3bab08ac %global commitdate 20210404 %global shortcommit %(c=%{commit}; echo ${c:0:7}) [...] Version: 0 Release: %mkrel -c git%{commitdate} 1 [...] Source0: %{URL}/archive/%{commit}.tar.gz#/%{name}-%{commitdate}-%{shortcommit}.tar.gz [...] %setup -q -n %{name}-%{commit} [...]
Si tu utilises une version précise et souhaite appliquer un patch :
Patch0: https://www.url.con/commit/767c3043ccadb3cfad53630972f6dd4ddbe100f2.patch#/0001-fix-install-error.patch Patch1: un-patch-dans-le-dossier-~/rpmbuild/SOURCES/nomdu.patch %patch0 -p1 %patch1 -p1
Et pour faire le paquet, en simple utilisateur :
rpmbuild -ba --undefine=_disable_source_fetch ${HOME}/rpmbuild/SPECS/lilypond.spec
Amuses toi bien !
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron


Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron

Bonjour,
En allant jusqu'à l'installation des buildrequires, tu auras les bonnes librairies prévues pour Mageia
Je trouves que c'est pas mal de passer par la réalisation d'un rpm, Certes, ça complique, mais reconstruire un paquet localement est assez simple et une bonne base de départ.

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron
J'ai compilé plein de logiciels, mais je n'ai jamais réussi à faire un rpm. Ça finit immanquablement par rater. Je trouves plus simple de télécharger le code source. Regarder les dépendances nécessaires, compiler. Puis si ça ne compile pas rechercher la bibliothèque manquante, l'installer avec urpmi et recommencer jusqu'à ce que ça passe. J'ai essayé plusieurs fois de lire notre documentation sur les fichiers spec mais je n'y arrive pas. Le pire c'est que lorsque l'on compare avec Fedora, les mots clefs ne sont pas les mêmes.

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

gillesth Membre non connecté
-
- Voir le profil du membre gillesth
- Inscrit le : 28/10/2012
- Groupes :
Un super grand merci pour toutes ces infos !
Sur les mailing-liste de Lilypond, des utilisateurs avancés m'ont effectivement dit que le plus simple était de lancer la compilation et d'ajouter les dépendances au fur et à mesure des messages d'erreur.
D'autant plus que
urpmi --buildrequires lilypond
me donne "Pas de paquetage nommé lilypond"
Hum...
Si je deviens plus experimenté à la compilation, c'est utile à la communauté Mageia que je poursuive à essayer d'empaqueter ?
Les empaqueteurs s'occupent-ils d'un seul logiciel ou de pleins à la fois ?
Édité par gillesth Le 16/05/2021 à 09h03

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
D'autant plus que
urpmi --buildrequires lilypond
me donne "Pas de paquetage nommé lilypond"
Hum...
Il manquait le chemin vers la .spec.
Si je devient plus experimenté à la compilation, c'est utile à la communauté Mageia que je poursuive à essayer d'empaqueter ?
Les empaqueteurs s'occupent-ils d'un seul logiciel ou de pleins à la fois ?
Ça dépend. Certains n'en font qu'un seul, d'autres en font des centaines (voire miliers).
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

funix Membre non connecté
-
- Voir le profil du membre funix
- Inscrit le : 17/12/2012
- Site internet
- Groupes :
Plutôt que de créer un fork, tu ferais pas mieux de contacter son auteur, voire de contribuer au projet lui même ?

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Plutôt que de créer un fork, tu ferais pas mieux de contacter son auteur, voire de contribuer au projet lui même ?
N'est pas la manière de fonctionner des systèmes git ? On fork, fait les modification dans sa propre branche, puis la pousser (pull request PR) sur l'origine ?
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

gillesth Membre non connecté
-
- Voir le profil du membre gillesth
- Inscrit le : 28/10/2012
- Groupes :
Plutôt que de créer un fork, tu ferais pas mieux de contacter son auteur, voire de contribuer au projet lui même ?
C'est ce que je fais généralement. mais apparemment faire des patchs prend du temps aux développeurs, et ils ne sont pas contre pour avoir de l'aide pour des modifications basiques. On ne propose bien-sûr pas un patch sans en parler d'abord sur les listes Lilypond, mais il n'y a pas dans lilypond de forks comme pour les distribution Linux . Les forks dans Lilypond sont temporaires et ensuite intégrés dans le Master C'est simplement une manière de faire pour ne pas mettre le bazar dans le Master, et pouvoir bien tester les modifications apportées.
Lilypond est fait avec beaucoup de langages informatiques, mais pour que les utilsateurs puissent faire leur propre fonctions, il propose le langage scheme appelé guile . Lilypond fournit à cet effet, toute une bibliothèque de fonctions elles-même écrites en scheme, qu'on peut utiliser pour adapter le comportement du logiciel à ses besoins. J'ai proposé des modifications d'une de ces fonctions scheme (c'est d'ailleurs très basiques, genre une ou 2 lignes à ajouter), et on me convie d'essayer de créer le patch moi même. Comme tout patch doit être tester en recompilant la totale, vous savez tout sur l'historique qui m'emmene ici.
Édité par gillesth Le 16/05/2021 à 09h52