[PKGBUILD] blogtk

Mise à jour / Création /debug de paquetages
Répondre
Avatar de l’utilisateur
DarkBaboon
Daikyu
Messages : 89
Inscription : mar. 24 juin 2008, 11:48
Localisation : Rennes

[PKGBUILD] blogtk

Message par DarkBaboon »

Toujours motivé dans ma découverte des arcanes secrètes d'Archlinux et des invocations à coup de PKGBUILD, je vous propose aujourd'hui un logiciel qui m'a bien manqué quand je suis passé de SAM Linux à Archlinux :
BloGTK! un client de blog open-source pour environnement de bureau en gtk (Gnome, Xfce, LXDE) compatible Blogger, Movable Type, WordPress et le plus important DotClear !

Voici le PKGBUILD :

Code : Tout sélectionner

 $Id: PKGBUILD,v 1.00 2008/12/07 23:37 darkbaboon Exp $
# Contributor: Ronan Rabouin <darkbaboon@gmail.com>
# Maintainer: Ronan Rabouin <darkbaboon@gmail.com>

pkgname=blogtk
pkgver=1.1
pkgrel=1
license=('GPL')
arch=('x86_64')
pkgdesc="weblog client in gtk"
url="http://blogtk.sourceforge.net"
depends=('pygtk' 'libgnome')
source=(http://dl.sourceforge.net/blogtk/{$pkgname}_{$pkgver}.tar.bz2)
md5sums=('cd2d2521a261867cd9c830a81d3d4408')

build() {
cd $stardir $startdir/src/$pkgname-$pkgver
make || return 1
make DESTDIR=$startdir/pkg install
}
Par contre je m'interroge par rapport au Makefile :

Code : Tout sélectionner

PYTHON ?= python2.3
INSTALL ?= install
RM ?= rm
MSGFMT ?= msgfmt
MSGMERGE ?= msgmerge
XGETTEXT ?= xgettext
FIND ?= find

#PREFIX = /usr
# autodetect GNOME prefix, change this if you want it elsewhere
PREFIX ?= `pkg-config libgnome-2.0 --variable=prefix || echo /usr`

LIBDIR = $(PREFIX)/lib/blogtk
BINDIR = $(PREFIX)/bin
DATADIR = $(PREFIX)/share/blogtk
APPLICATIONSDIR = $(PREFIX)/share/applications
ICONDIR = $(PREFIX)/share/pixmaps

PYFILES := $(shell $(FIND) . -name "*.py" -print)

install: 
	mv src/BloGTK.py src/BloGTK.py.old
	sed -e "s|/usr/share|$(PREFIX)/share|g" src/BloGTK.py.old > src/BloGTK.py
	rm src/BloGTK.py.old
	$(INSTALL) -m 755 -d $(BINDIR) $(LIBDIR) $(DATADIR) $(APPLICATIONSDIR)	$(ICONDIR) 
	$(INSTALL) -m 755 src/* $(LIBDIR)
	$(INSTALL) -m 644 pixmaps/* $(DATADIR)
	$(INSTALL) -m 644 data/blogtk-icon.png $(ICONDIR)
	$(INSTALL) -m 644 data/blogtk.desktop $(APPLICATIONSDIR)

	if test -f /usr/bin/BloGTK; then rm /usr/bin/BloGTK; fi	

	ln -s $(LIBDIR)/BloGTK.py $(BINDIR)/BloGTK
	chmod +x $(BINDIR)/BloGTK
Comme tout est dans le Makefile j'ai rien besoin de rajouter dans le PKGBUILD n'est-ce pas ?
Avatar de l’utilisateur
gyo
Maître du Kyudo
Messages : 1049
Inscription : jeu. 19 avr. 2007, 10:40
Localisation : Nantes (44)

Message par gyo »

Ce PKGBUILD me semble correct, mais il y a quelques points à régler :

Code : Tout sélectionner

source=(http://dl.sourceforge.net/blogtk/{$pkgname}_{$pkgver}.tar.bz2)
C’est plutôt ${pkgname} et ${pkgver} (faire sortir les $).

Ensuite :

Code : Tout sélectionner

build() {
cd $stardir $startdir/src/$pkgname-$pkgver
make || return 1
make DESTDIR=$startdir/pkg install
}
Il y a un $stardir en trop. De plus, je préconise d’utiliser $srcdir à la place de $startdir/src et $pkgdir à la place de $startdir/pkg.

Sinon, je n’ai pas testé mais ça me semble correct autrement…
commentaire rédigé à l’aide d’un clavier ergonomique bépo
KISS MY ARCH
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

gyo a écrit : De plus, je préconise d’utiliser $srcdir à la place de $startdir/src et $pkgdir à la place de $startdir/pkg.
ce n'est pas sûr que $srcdir et $pkgdir resteront ou pointeront toujours vers les bons répértoires:
man PKGBUILD a écrit : srcdir
This points to the directory where makepkg extracts or copies all source files. Although it
currently is an alias for $startdir/src, this assumption should not be assumed true for all
future revisions of makepkg.
Avatar de l’utilisateur
gyo
Maître du Kyudo
Messages : 1049
Inscription : jeu. 19 avr. 2007, 10:40
Localisation : Nantes (44)

Message par gyo »

Ok… Mais toujours est-il que sur le wiki officiel, on parle d’utiliser ses nouvelles variables : http://wiki.archlinux.org/index.php/PKG ... 9_function et pas de mention concernant la non utilisation de celles-ci…
commentaire rédigé à l’aide d’un clavier ergonomique bépo
KISS MY ARCH
farvardin
Maître du Kyudo
Messages : 1084
Inscription : sam. 29 mars 2008, 22:56

Message par farvardin »

tiens ça semble pas mal, je vais aller le poster sur AUR ;)
Avatar de l’utilisateur
DarkBaboon
Daikyu
Messages : 89
Inscription : mar. 24 juin 2008, 11:48
Localisation : Rennes

Message par DarkBaboon »

farvardin a écrit :tiens ça semble pas mal, je vais aller le poster sur AUR ;)
Hors de question, j'ai vu slimevolley me passer sous le nez, donc j'aimerais quand même avoir le temps de finir un paquet pour AUR....

et puis zut... si tu arrives à obtenir un bon PKGBUILD pour le compiler, oui poste le sur AUR avant moi ;) mais poste au moins ton PKGBUILD ici s'il te plaît, que ton érudition m'éclaire un peu plus sur l'Art du Paquetage!!

Sinon j'ai quelques tracas pendant la compilation, vous l'aurez bien compris :lol: . Une fois l'archive extraite, j'ai un répertoire src/BloGTK au lieu du réglementaire src/blogtk) d'où la modification dans le PKGBUILD en rajoutant une variable $pkgname_=BloGTK.

En suivant les indications de gyo et tuxce, voici le nouveau build du PKGBUILD :

Code : Tout sélectionner

pkgname_=BloGTK

build() {
cd $srcdir/$pkgname_-$pkgver
make || return 1
make DESTDIR=$pkgdir install
}
et l'erreur qui s'en suit dans la compilation :

Code : Tout sélectionner

==> Entre dans l'environnement fakeroot...
==> Début de la compilation...
mv src/BloGTK.py src/BloGTK.py.old
sed -e "s|/usr/share|`pkg-config libgnome-2.0 --variable=prefix || echo /usr`/share|g" src/BloGTK.py.old > src/BloGTK.py
rm src/BloGTK.py.old
install -m 755 -d `pkg-config libgnome-2.0 --variable=prefix || echo /usr`/bin `pkg-config libgnome-2.0 --variable=prefix || echo /usr`/lib/blogtk `pkg-config libgnome-2.0 --variable=prefix || echo /usr`/share/blogtk `pkg-config libgnome-2.0 --variable=prefix || echo /usr`/share/applications	`pkg-config libgnome-2.0 --variable=prefix || echo /usr`/share/pixmaps 
install: Ne peut changer les permissions de `/usr/lib/blogtk': Aucun fichier ou dossier de ce type
install: Ne peut changer les permissions de `/usr/share/blogtk': Aucun fichier ou dossier de ce type
make: *** [install] Erreur 1
==> ERREUR: La compilation a échoué.
    Abandon...
Je rappelle que je n'ai pas touché au Makefile inclus dans le paquet et dont le contenu est affiché dans le premier post. Alors j'ai un peu de mal à m'y retrouver parce qu'un coup c'est le répertoire BloGTK et d'autres fois c'est le répertoire blogtk qui est utilisé, c'est à en perdre son bash !! :wink:
farvardin
Maître du Kyudo
Messages : 1084
Inscription : sam. 29 mars 2008, 22:56

Message par farvardin »

non rassure-toi, je te charrie, je te le laisse ce paquet :)

Je ne sais pas si mon conseil est vraiment orthodoxe, mais cela serait moi, je garderais le pkgname avec le nom de base "blogtk" qui est utilisé pour télécharger le paquet, et ensuite, je mettrais le nom en "dur", genre :
$srcdir/BloGTK etc.
Cela n'est pas bien grave quand même si la variable n'est pas pas indiquée, on peut considérer que le développeur a choisir un nom pas vraiment conventionnel pour ce dossier, et au final cela ne changera rien pour la création du paquet.
Avatar de l’utilisateur
gyo
Maître du Kyudo
Messages : 1049
Inscription : jeu. 19 avr. 2007, 10:40
Localisation : Nantes (44)

Message par gyo »

Je suis d’accord avec favardin, ce n’est pas judicieux dans ce contexte de créer une variable « utilisateur » car tu y accèdes qu’une fois.
Donc en dur, BloGTK.

Ensuite pour ton problème, j’ai analysé un peu le Makefile, et il est vraiment pourri, il y a des références en dur vers /usr. Même en jouant avec PREFIX (ce Makefile ne semble pas reconnaître la directive DESTDIR), l’installation m*rde.
Il faudrait refaire un tout autre Makefile pour s’en sortir, parce que là c’est vraiment la loose :evil:

Bon, je suis allé voir du côté de gentoo et j’ai trouvé un patch makefile qui apporte la directive DESTDIR : http://mirror.ovh.net/gentoo-portage/ne ... tdir.patch

Voilà, tu devais pouvoir t’en sortir ;)
commentaire rédigé à l’aide d’un clavier ergonomique bépo
KISS MY ARCH
Avatar de l’utilisateur
DarkBaboon
Daikyu
Messages : 89
Inscription : mar. 24 juin 2008, 11:48
Localisation : Rennes

Message par DarkBaboon »

Je sais pas si je me débrouille avec les pieds mais je vais avoir besoin d'aide, j'ai réussi à appliquer le patch

Voilà la partie qui nous intéresse dans le PKGBUILD :

Code : Tout sélectionner

build() {
	patch -Np0 -i $startdir/blogtk-1.1-destdir.patch || return 1
	mkdir -p $pkgdir/usr/lib/blogtk
	mkdir -p $pkgdir/usr/share/blogtk
	cd $srcdir/BloGTK-$pkgver
	make || return 1
	make DESTDIR=$pkgdir install
}
mais quand je lance la compilation voilà l'erreur qui survient inopinément :

Code : Tout sélectionner

==> Début de la compilation...
patching file BloGTK-1.1/Makefile
mv src/BloGTK.py src/BloGTK.py.old
sed -e "s|/usr/share|`pkg-config libgnome-2.0 --variable=prefix || echo /usr`/share|g" src/BloGTK.py.old > src/BloGTK.py
rm src/BloGTK.py.old
install -m 755 -d `pkg-config libgnome-2.0 --variable=prefix || echo /usr`/bin `pkg-config libgnome-2.0 --variable=prefix || echo /usr`/lib/blogtk `pkg-config libgnome-2.0 --variable=prefix || echo /usr`/share/blogtk `pkg-config libgnome-2.0 --variable=prefix || echo /usr`/share/applications	`pkg-config libgnome-2.0 --variable=prefix || echo /usr`/share/pixmaps 
install: Ne peut changer les permissions de `/usr/lib/blogtk': Aucun fichier ou dossier de ce type
install: Ne peut changer les permissions de `/usr/share/blogtk': Aucun fichier ou dossier de ce type
make: *** [install] Erreur 1
==> ERREUR: La compilation a échoué.
    Abandon...
Pourtant j'ai bien créer les dossiers qu'il m'a demandé :cry: ... alors quèsaco ??
Avatar de l’utilisateur
gyo
Maître du Kyudo
Messages : 1049
Inscription : jeu. 19 avr. 2007, 10:40
Localisation : Nantes (44)

Message par gyo »

Code : Tout sélectionner

build() {
   patch -Np0 -i $startdir/blogtk-1.1-destdir.patch || return 1
   cd $srcdir/BloGTK-$pkgver
   make PREFIX=$pkgdir/usr || return 1
   make DESTDIR=$pkgdir/usr install
}
C’est $pkgdir/usr et il faut rajouter la directive PREFIX. Par l’arbo de $pkgdir contient un home/ sous usr/. Donc voir ce que ça si tu retires $pkgdir/usr/home de manière récursive, sinon il faudrait sans doute retravailler le patch pour que ce soit plus propre.
commentaire rédigé à l’aide d’un clavier ergonomique bépo
KISS MY ARCH
Avatar de l’utilisateur
DarkBaboon
Daikyu
Messages : 89
Inscription : mar. 24 juin 2008, 11:48
Localisation : Rennes

Message par DarkBaboon »

Merci gyo

Bon bah après moult prise de tête, un paquet qui se compile mais un logiciel qui se lance pas.... j'ai réussi !!

Donc voici le PKGBUILD final, testé et approuvé par moi-même :

Code : Tout sélectionner

# $Id: PKGBUILD,v 1.00 2008/12/07 23:37 darkbaboon Exp $
# Contributor: Ronan Rabouin <darkbaboon@gmail.com>
# Maintainer: Ronan Rabouin <darkbaboon@gmail.com>

pkgname=blogtk
pkgver=1.1
pkgrel=1
license=('GPL')
arch=('x86_64')
pkgdesc="weblog client in gtk"
url="http://blogtk.sourceforge.net"
depends=('gnome-python' 'libgtkhtml' 'aspell')
source=(http://downloads.sourceforge.net/blogtk/${pkgname}_${pkgver}.tar.bz2 blogtk-1.1-destdir.patch)
md5sums=('cd2d2521a261867cd9c830a81d3d4408' 'cac2263af107423f77a8616b4898b465')

build() {
	patch -Np0 -i $startdir/blogtk-1.1-destdir.patch || return 1
	mkdir -p $srcdir/usr/lib/blogtk
	mkdir -p $srcdir/usr/share/blogtk
	cd $srcdir/BloGTK-$pkgver
	make PREFIX=$pkgdir/usr || return 1
	make DESTDIR=$pkgdir/usr install
}
Je vais de ce pas le poster sur AUR :wink:
Avatar de l’utilisateur
mélodie
Maître du Kyudo
Messages : 2784
Inscription : lun. 30 oct. 2006, 02:06
Localisation : Pyrénées

Message par mélodie »

DarkBaboon a écrit :Merci gyo

Bon bah après moult prise de tête, un paquet qui se compile mais un logiciel qui se lance pas.... j'ai réussi !!

Donc voici le PKGBUILD final, testé et approuvé par moi-même :
<...>

Je vais de ce pas le poster sur AUR :wink:
Bonjour,

Et tu le lances comment ce blogtk ? Il n'a pas de fichier desktop ? :)
Avatar de l’utilisateur
gyo
Maître du Kyudo
Messages : 1049
Inscription : jeu. 19 avr. 2007, 10:40
Localisation : Nantes (44)

Message par gyo »

Attention sombre babouin :wink: , tu as lu en diagonal car je dis que ça créé un dossier home/ dans l’arborescence du paquet ($pkgdir) d’ailleurs je t’invite à tester ton paquet buildé en le soumettant à l’outil namcap avant l’envoyer sur AUR.
Cf : http://wiki.archlinux.fr/arch:pkgbuild: ... paquetages
commentaire rédigé à l’aide d’un clavier ergonomique bépo
KISS MY ARCH
Avatar de l’utilisateur
DarkBaboon
Daikyu
Messages : 89
Inscription : mar. 24 juin 2008, 11:48
Localisation : Rennes

Message par DarkBaboon »

Après avoir un fait un namcap voici le résultat :

Code : Tout sélectionner

PKGBUILD (blogtk)    E: File referenced in $startdir outside of $startdir/src or $startdir/pkg
Sinon au niveau du home je ne comprend pas le problème, blogtk a retrouvé directement mon ancien profile quand j'utilisais blogtk avec une autre distribution...
Répondre