Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous souhaite d'excellentes fêtes de fin d'année !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/01/2019, à 21:49

Zakhar

[Résolu] Quels outils pour une page de "man" pour packager sur ppa

Bonjour,

j'ai réussi, après moult recherches, à me composer un mode d'emploi pour packager un programme C dans mon PPA.

La documentation est vraiment mal faite et parcellaire, par exemple il n'est expliqué clairement nulle part ce qu'on doit faire dans le "make" pour que le binaire se trouve au bon endroit... ça j'ai dû "deviner" en tâtonnant.

Ma question aujourd'hui, pour le cas où quelqu'un en aurait l'expérience, c'est que j'aimerais, aux côté de mon programme C, livrer une page de man en anglais et en français.

Mais voila, je n'ai trouvé nulle part une documentation claire sur comment faire ça dans le package qu'on donne sur son PPA.

Est-ce que quelqu'un pourrait me donner un lien expliquant comment on procède pour avoir ces deux pages de "man", et me donner des conseils d'outils pour une page (tant que ce n'est qu'une page... c'est peut-être plus rapide "à la main" que d'apprendre un outil me direz-vous !) et aussi éventuellement l'outil/principes de traduction.


Merci d'avance si par hasard il y a quelqu'un de "pointu" qui a déjà fait ça et peut prendre le temps de me mettre un lien.

Dernière modification par Zakhar (Le 09/01/2019, à 00:31)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#2 Le 05/01/2019, à 10:44

Hizoka

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

Salut,
je suis d'accord avec toi, c'est un sacré merdier...

Pour les man, perso je fais ça :
les man de mon mkv-extractor-qt5 sont dans un dossier man :

mkv-extractor-qt5/man/mkv-extractor-qt5.1
mkv-extractor-qt5/man/mkv-extractor-qt5.fr.1

et le dossier debian doit contenir le fichier manpages

mkv-extractor-qt5/debian/mkv-extractor-qt5.manpages

et celui-ci contient :

man/mkv-extractor-qt5.1
man/mkv-extractor-qt5.fr.1

En espérant que ça puisse t'aider.

Hors ligne

#3 Le 05/01/2019, à 15:10

Zakhar

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

Merci Hizoka, je vais tester ça pour voir !

Et une fois qu'on a fait ça, les commandes "bazar" les bien nommées (bzr) vont générer ce qu'il faut dans le "source_change" qui part sur le ppa ?


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#4 Le 05/01/2019, à 18:21

Hizoka

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

Perso je créé les sources avec debuild -S -sa -kXXXX et les manpages sont gérés automatiquement.
je ne connais pas bazar.

Mes softs sont en bash ou en python.

Dernière modification par Hizoka (Le 05/01/2019, à 18:22)

Hors ligne

#5 Le 06/01/2019, à 20:16

Zakhar

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

Le dernière commande de mon "walkthrough", trouvé sur la documentation en ligne pour publier sur le ppa est :

bzr builddeb -S

Ca correspond donc sans doute à peu près à ce que tu fais.
Je n'utilise pas les builds locaux en réalité, j'upload sur le ppa, et je récupère le build créé par les serveurs du Launchpad.

Je vais tester pour voir si ça fonctionne.

Dernière modification par Zakhar (Le 06/01/2019, à 20:18)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#6 Le 07/01/2019, à 00:26

Zakhar

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

J'ai un peu galéré à trouver de la documentation pour créer la page de man... puis j'ai trouvé : help2man

Génial :

help2man mon_programme

... et on a déjà une page sympathique avec tout le balisage, composée à partir de ce que donne

mon_programme --help

Plus qu'à la modifier avec nano... le seul éditeur que j'ai trouvé qui fait la coloration du nroff.

Dernière modification par Zakhar (Le 07/01/2019, à 00:27)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#7 Le 07/01/2019, à 08:58

Hizoka

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

Perso, je ne compile rien en local, ça me crée différents fichiers tar.gz dont debian et le soft, j'uploade le tout sur le ppa qui va faire la compilation.

Hors ligne

#8 Le 08/01/2019, à 00:06

Zakhar

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

Et où as-tu trouvé ton "mode d'emploi" pour packager des scripts ?

Avec le C il y a une complexité additionnelle, c'est faire le Makefile pour qu'il pose le compilé au bon endroit. Mais ça j'ai trouvé. ;-)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#9 Le 08/01/2019, à 18:31

Hizoka

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

J'ai trouvé sur les doc debian sur le net et 1 ou 2 personnes m'ont aidé en autre avec la création du fichier rules

#!/usr/bin/make -f

%:
	dh ${@} --parallel --with python3

override_dh_python3:
	dh_python3 --ignore-shebangs

override_dh_pysupport:


override_dh_builddeb:
	# Compression du dossier data du paquet debian
	dh_builddeb -- -Zxz

Hors ligne

#10 Le 08/01/2019, à 22:48

Zakhar

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

Humm... c'est pas complet, parce que ça devrait finir par un dput sur ton ppa !

Voici mon "how to" (documentation Launchpad)

How to make a package for Launchpad, customisé par exemple pour mon paquet astreamfs

# Make the tar:
$ cd ~/dev/astreamfs/  # Le répertoire de développement
$ cp astreamfs.c astreamfs_util.c astreamfs_util.h LICENSE *.md /tmp
$ cp Makefile /tmp/Makefile
$ cd /tmp
$ tar cf astreamfs.tar astreamfs.c astreamfs_util.c astreamfs_util.h LICENSE Makefile README.md TODO.md

# Initialize:
$ mkdir build
$ cd build
$ bzr dh-make astreamfs 0.9.0~Xenial /tmp/1fichierfs.tar

# Response: s y

# Prepare:
$ cd astreamfs
$ rm debian/*.ex debian/*.EX
$ cp ~/dev/astreamfs/debian/co* debian/

# Mettre à Jour le fichier changelog en prenant modèle sur celui stocké dans le répertoire de développement

$ bzr add debian/source/format
$ bzr commit -m "0.9.0 Le but de ce commit"
$ bzr builddeb -- -us -uc
$ bzr builddeb -S

$ cd ..
$ dput ppa:alainb06/astreamfs astreamfs_0.9.0~Xenial-1_source.changes

Le Makefile contient les instructions de compilation classiques, mais surtout :

install:
ifdef DESTDIR
	mkdir -p $(DESTDIR)/usr/bin/
	cp $(TARGET) $(DESTDIR)/usr/bin/
else
	cp $(TARGET) /usr/bin/
endif

En effet, les outils de packaging debian utilisent une "fakeroot", et pour cela il envoient le paramètre DESTDIR à la commande make.
Pour que l'exécutable se retrouve donc, un fois installé par le package, dans /usr/bin, il faut bien utiliser ce DESTDIR.
L'autre branche du test est utilisée quand on compile le package en local.

A la phase marqué "Mettre à jour le changelog", ce qui est important c'est de mettre le nom de la version cible. Les outils étant fait pour debian, par défaut on se retouve avec "unstable".
On remplace sont "unstable" par la version ciblée, ici "xenial" (ou "bionic", etc...)
On modifie également le message indiquant ce qu'on a changé... qui en principe devrait correspondre avec ce qu'on a mis dans le commit.

Si on saute cette phase, le ppa va rejeter l'upload en disant  : "je ne connais pas la version 'unstable' dans laquelle vous voulez construire ce paquet"

Donc on a construit le package dans /tmp/build/nom_du_package

... et j'imagine qu'à un moment il faut que je trouve où insérer le foutu "man"... à moins qu'il faille le coller dans le "tar" d'origine...

Un truc pénible aussi avec les outils "bzr", c'est qu'ils tiennent à passer "lintian" (vérification qu'on a bien tout fait ce qu'il faut)... mais celui-ci échoue visiblement parce qu'ils ont mis des IP en dur et que le serveur a dû changer. Mais du coup ça bloque pendant 3 minutes (sans doute le temps du time out). C'est un script perl, et comme je ne suis pas trop à l'aise dans ce langage, je n'ai pas trouvé où le "commenter" (je n'en ai pas besoin)... du coup à chaque fois je me paye l'attente.

Bon, je vais continuer à tenter avec la méthode qui a l'air "officielle ubuntu", et essayer de trouver à quelle étape je peux coller le "man" pour qu'il se retrouve au bon endroit.
Le bon candidat a l'air d'être au moment où on prépare le répertoire "debian" du build.

Dernière modification par Zakhar (Le 08/01/2019, à 22:54)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#11 Le 08/01/2019, à 23:09

Hizoka

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

oui oui, je fais un dput manuel à la fin pour l'envoyer sur le ppa.
pour le man, le mec qui me l'avait dit semblait plutôt bien calé dans le domaine.

si tu veux voir mes sources : https://launchpad.net/~hizo/+archive/ub … /+packages

je lance pour la 1ere fois : debuild -S -sa -kXXXX (qui va intégrer les sources)
puis une boucle me change les versions ubuntu du fichier changelog comme tu le signales et exécute debuild -S -sd -kXXXX (qui ne va prendre en compte que le dossier debian et pas les sources car déjà existantes)
puis un dput -U "${ppa}" ./"*.changes" pour envoyer le tout.

Dernière modification par Hizoka (Le 08/01/2019, à 23:17)

Hors ligne

#12 Le 09/01/2019, à 00:23

Zakhar

Re : [Résolu] Quels outils pour une page de "man" pour packager sur ppa

Eh bien en fait avec "bazar" ta méthode ne fonctionne absolument pas.

Hélas, il se fiche qu'on mette un "progname.manpages" dans /debian, il n'en tient même pas compte dans le commit.
Pas plus que ne fonctionne le fait de mettre la manpage dans un sous répertoire du tar. C'est pire, ça plante tout.

... mais j'ai trouvé une solution toute bête !...

Je ne sais pas si c'est un "hack" ou si c'est bien comme ça qu'on est sensé faire, mais en tout cas ça marche.

-1) Rajouter le "progname.1.gz" (manpage) dans le tar qu'on compose avant de lancer bzr. On rajoute "à plat" (sans créer un sous répertoire)
-2) Modifier le makefile ainsi

ifdef DESTDIR
	mkdir -p $(DESTDIR)/usr/bin/
	cp $(TARGET) $(DESTDIR)/usr/bin/
	mkdir -p $(DESTDIR)/usr/share/man/man1/
	cp $(TARGET).1.gz $(DESTDIR)/usr/share/man/man1/
else
	cp $(TARGET) /usr/bin/
	cp man/$(TARGET).1.gz $(DESTDIR)/usr/share/man/man1/
endif

Voila, ça fait le job.
C'est le make install qui créée dans la "fakeroot" du paquet debian les répertoires et copie les fichiers qu'on y attend.
Le jour où j'ai écrit la deuxième page en français, je rajoute 3 lignes dans le make et le tour est joué !

Merci pour l'aide en tout cas Hizoka, même si elle était inapplicable à mon "how to".

Je mets en "résolu"... même si ce n'est pas la "méthode officielle"... en attendant de tomber sur une hypothétique documentation qui décrirait la méthode "officielle" !

Dernière modification par Zakhar (Le 09/01/2019, à 00:26)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne