Page 1 sur 1

[package] Herqq

Publié : jeu. 20 oct. 2011, 18:34
par Feng
Bonjour,

Je souhaite créer un paquet pour herqq, mais dans une version bien précise : la révision SVN 55 . Cette version précise est nécessaire pour un autre paquet.

J'ai créé ce simple PKGBUILD :

Code : Tout sélectionner

pkgname=herqq-svn-r55
pkgver=1
pkgrel=1
pkgdesc="Herqq project, SVN Revision 55 "
arch=('i686' 'x86_64')
url="http://www.herqq.org"
license=('GPL3')
makedepends=('automoc4' 'cmake')

build() {

	svn co -r 55  https://hupnp.svn.sourceforge.net/svnroot/hupnp hupnp
	cd hupnp/trunk/herqq/

	qmake -recursive
	make -j4 || return 1

}

package() {
	
	msg "Importing library..."
	
	mkdir -p "$pkgdir/usr/lib"

	install -m 644 "$srcdir/hupnp/trunk/herqq/hupnp/bin/libHUpnp.so.1.0.0" "$pkgdir/usr/lib/libHUpnp.so"
	ln -s "$pkgdir/usr/lib/libHUpnp.so" "$pkgdir/usr/lib/libHUpnp.so.1"
	
	install -m 644 "$srcdir/hupnp/trunk/herqq/hupnp/bin/libQtSolutions_SOAP-2.7.so.1.0.0" "$pkgdir/usr/lib/libQtSolutions_SOAP-2.7.so"
	ln -s "$pkgdir/usr/lib/libQtSolutions_SOAP-2.7.so" "$pkgdir/usr/lib/libQtSolutions_SOAP-2.7.so.1"

	
	msg "Preparing include..."
	
	mkdir -p "$pkgdir/usr/include/HUpnpCore/public"
	mkdir "$pkgdir/usr/include/HUpnpCore/private"
	
	msg "Installing include..."
	
	install -m 644 "$srcdir/hupnp/trunk/herqq/hupnp/include/HUpnpCore/*" "$pkgdir/usr/include/HUpnpCore"
	install -m 644 "$srcdir/hupnp/trunk/herqq/hupnp/include/HUpnpCore/public/*" "$pkgdir/usr/include/HUpnpCore/public"
	install -m 644 "$srcdir/hupnp/trunk/herqq/hupnp/include/HUpnpCore/private/*" "$pkgdir/usr/include/HUpnpCore/private"
	
}

Mais install me répond :
install: impossible d'évaluer « /home/feng/projets/herqq-svn-r55/src/hupnp/trunk/herqq/hupnp/include/HUpnpCore/* »: Aucun fichier ou dossier de ce type
Je sais pas comment installer tout un répertoire directement avec install. Je compte pas me taper les 50 fichiers à la main voyez :D

Je bloque la-dessus donc si quelqu'un pouvez m'expliquer comment fonctionne exactement install parce que son manuel est vraiment pas clair du tout.

PS : si je passe par install c'est parce que les autres méthodes de spécification du répertoire (avec qmake ou make install) ne fonctionnent pas malheureusement ...

Re: [package] Herqq

Publié : jeu. 20 oct. 2011, 19:58
par benjarobin
Pourquoi ne pas faire tout simplement

Code : Tout sélectionner

cp $srcdir/hupnp/trunk/herqq/hupnp/include/HUpnpCore/* $pkgdir/usr/include/HUpnpCore
Et si tu veux être sûre pour les droits du rajoute ensuite un

Code : Tout sélectionner

chmod 644 $pkgdir/usr/include/HUpnpCore/*
Sinon tu as toujours la méthode du find:

Code : Tout sélectionner

find $srcdir/hupnp/trunk/herqq/hupnp/include/HUpnpCore/ -type f -maxdepth 0 -exec install -m 644 {} $pkgdir/usr/include/HUpnpCore/ \;
Mais celle-ci devient compliqué

Re: [package] Herqq

Publié : jeu. 20 oct. 2011, 20:00
par Feng
Ben ouais mais j'me suis dis que install était "plus mieux propre"

Re: [package] Herqq

Publié : jeu. 20 oct. 2011, 20:01
par Feng
Dois-je répéter la méthode du find pour les sous-répertoire ou c'est récursif ? (je suis pas du tout à l'aise avec find, ça aide pas :/)

Re: [package] Herqq

Publié : jeu. 20 oct. 2011, 20:06
par benjarobin
Find est assez compliqué, voir edit du dessus car tu as du svn...
La méthode find n'est pas récursive tel quel est écrite
cp est très propre, tant que tu fait le chmod après.

Re: [package] Herqq

Publié : jeu. 20 oct. 2011, 20:09
par FoolEcho
Feng a écrit :PS : si je passe par install c'est parce que les autres méthodes de spécification du répertoire (avec qmake ou make install) ne fonctionnent pas malheureusement ...
Ça ne fonctionne pas avec INSTALL_ROOT :

Code : Tout sélectionner

qmake
make
make INSTALL_ROOT="$pkgdir/" install
?

Re: [package] Herqq

Publié : jeu. 20 oct. 2011, 20:18
par benjarobin
En effet ceci :

Code : Tout sélectionner

pkgname=herqq-svn-r55
pkgver=1
pkgrel=1
pkgdesc="Herqq project, SVN Revision 55 "
arch=('i686' 'x86_64')
url="http://www.herqq.org"
license=('GPL3')
makedepends=('automoc4' 'cmake')

build() {

   svn co -r 55  https://hupnp.svn.sourceforge.net/svnroot/hupnp/trunk/herqq herqq
   cd herqq/

   qmake -recursive
   make  || return 1
}

package() {
        cd $srcdir/herqq/
        make INSTALL_ROOT="$pkgdir/" install
}
Edit, hum, il manque quelques fichiers...
Il faudrait patcher le ou les .pro pour ajouter la section INSTALLS

Re: [package] Herqq

Publié : ven. 21 oct. 2011, 14:49
par Feng
Ouais enfin ça commence à devenir compliqué.

Voilà mon PKGBUILD final (il fonctionne)

Code : Tout sélectionner

pkgname=herqq-svn-r55
pkgver=1
pkgrel=1
pkgdesc="Herqq project (HUpnp library), SVN Revision 55"
arch=('i686' 'x86_64')
url="http://www.herqq.org"
license=('GPL3')
makedepends=('automoc4' 'cmake')

build() {

	msg "Downloading SVN Revision 55"

	svn co -r 55  https://hupnp.svn.sourceforge.net/svnroot/hupnp hupnp
	cd "$srcdir/hupnp/trunk/herqq"

	msg "Compile"

	qmake -recursive
	make || return 1

}

package() {
	
	cd "$srcdir/hupnp/trunk/herqq"
	make install
	
	msg "Copying files"
	
	mkdir -p "$pkgdir/usr/lib"

	install -m 644 "$srcdir/hupnp/trunk/herqq/hupnp/bin/libHUpnp.so.1.0.0" "$pkgdir/usr/lib/libHUpnp.so"
	ln -s "$pkgdir/usr/lib/libHUpnp.so" "$pkgdir/usr/lib/libHUpnp.so.1"
	
	install -m 644 "$srcdir/hupnp/trunk/herqq/hupnp/bin/libQtSolutions_SOAP-2.7.so.1.0.0" "$pkgdir/usr/lib/libQtSolutions_SOAP-2.7.so"
	ln -s "$pkgdir/usr/lib/libQtSolutions_SOAP-2.7.so" "$pkgdir/usr/lib/libQtSolutions_SOAP-2.7.so.1"

	mkdir -p "$pkgdir/usr/include"
	cp -r "$srcdir/hupnp/trunk/herqq/hupnp/deploy/include/HUpnpCore" "$pkgdir/usr/include"
	rm -r "$srcdir/hupnp/trunk/herqq/hupnp/include/HUpnpCore/public"
	rm -r "$srcdir/hupnp/trunk/herqq/hupnp/include/HUpnpCore/private"
	cp $srcdir/hupnp/trunk/herqq/hupnp/include/HUpnpCore/* "$pkgdir/usr/include/HUpnpCore"
	chmod -R 644 "$pkgdir/usr/include/HUpnpCore"
	chmod 755 "$pkgdir/usr/include/HUpnpCore"
	chmod 755 "$pkgdir/usr/include/HUpnpCore/public"
	chmod 755 "$pkgdir/usr/include/HUpnpCore/private"

}
Par contre pour le numéro de version c'est bon ?

Re: [package] Herqq

Publié : ven. 21 oct. 2011, 19:07
par FoolEcho
benjarobin a écrit :Edit, hum, il manque quelques fichiers...
Il faudrait patcher le ou les .pro pour ajouter la section INSTALLS
Feng a écrit :Ouais enfin ça commence à devenir compliqué.
Ben non, justement. Il faudrait effectivement faire un tour dans les .pro pour profiter au maximum du make install, toi qui veut plus propre (maintenant, je n'ai pas regardé :mrgreen: ).
Feng a écrit :Par contre pour le numéro de version c'est bon ?
Puisque tu fixes une révision précise, 55 serait mieux (maintenant, vu qu'il est rare de construire une révision précise, c'est une colle :) ).
Si tu comptes le mettre sur Aur, suit bien les standards:
https://wiki.archlinux.org/index.php/Ar ... guidelines (tu as un exemple de svn avec ces variables si tu installes le paquet abs).

Re: [package] Herqq

Publié : ven. 21 oct. 2011, 19:48
par Feng
Ben j'le veux assez propre dans la mesure où c'est un paquet vital pour l'UPnP avec KDE (et avec Amarok notamment). Donc possible qu'il devienne très utilisé.

Re: [package] Herqq

Publié : ven. 21 oct. 2011, 20:05
par Feng
Voici le herqq.pro :

Code : Tout sélectionner

TEMPLATE = subdirs
CONFIG  += ordered
SUBDIRS  = \
    hupnp/lib/qtsoap-2.7-opensource/buildlib \
    hupnp \
    apps/simple_test-app
Voici l'architecture (une fois compilé) :

Code : Tout sélectionner

.
├── herqq.pro
├── apps
│   └── simple_test-app
│       └── obj
└── hupnp
    ├── bin
    │   └── descriptions
    ├── deploy
    │   └── include
    │       └── HUpnpCore
    │           ├── private
    │           └── public
    ├── include
    │   └── HUpnpCore
    ├── lib
    │   └── qtsoap-2.7-opensource
    │       ├── buildlib
    │       │   ├── debug
    │       │   └── release
    │       ├── lib
    │       └── src
    └── src
        ├── hupnp_core
        │   ├── dataelements
        │   ├── datatypes
        │   ├── devicehosting
        │   │   ├── controlpoint
        │   │   ├── devicehost
        │   │   └── messages
        │   ├── devicemodel
        │   ├── general
        │   ├── http
        │   ├── obj
        │   ├── socket
        │   └── ssdp
        └── utils
Sachant que :

Il faut le dossier ./hupnp/deploy/HUpnpCore et tout ce qu'il contient dans /usr/include
Il faut le contenu de ./hupnp/include/HUpnpCore/ et les fichiers qu'il contient (et non les dossiers) dans /usr/include/HUpnpCore
Il faut ./hupnp/bin/libHUpnp.so.1.0.0 dans /usr/lib/libHUpnp.so , qui link libHUpnp.so.1.0
Il faut ./hupnp/bin/libQtSolutions_SOAP-2.7.so.1.0.0 dans /usr/lib/libQtSolutions_SOAP-2.7.so qui link libQtSolutions_SOAP-2.7.so.1

Enfin ce que fait la methode package() du PKGBUILD quoi ^^ J'y connais rien en .pro donc si vous voulez bien me filer un coup de pouce ce serait cool.

Sinon j'ai téléchargé ABS et récupéré le prototype PKGBUILD-svn, donc ouais ils disent version 55, c'est ce que je vais mettre, étant donné qu'il n'y a pas de version SVN dans AUR, ça ne posera pas de soucis.

Re: [package] Herqq

Publié : ven. 21 oct. 2011, 20:36
par FoolEcho
Il y a du récursif, donc il n'y a pas qu'un .pro: :) :non:

Code : Tout sélectionner

$ find src/herqq/ -name "*pro"
src/herqq/herqq.pro
src/herqq/apps/simple_test-app/simple_test-app.pro
src/herqq/hupnp/lib/qtsoap-2.7-opensource/buildlib/buildlib.pro
src/herqq/hupnp/lib/qtsoap-2.7-opensource/qtsoap.pro
src/herqq/hupnp/hupnp.pro
src/herqq/hupnp/src/hupnp_core/hupnp_core.pro
Bon, maintenant si ton PKGBUILD fonctionne comme ça, c'est pas très génant au final: j'ai rapidemment regardé leur site et ça a l'air plutôt souple sur le déploiement (je verrai peut-être ce week-end si y a moyen via les .pro de faire un truc plus propre -- sauf si benjarobin ou un autre s'y colle entretemps bien sûr :chinois: - : j'ai juste testé le build avec INSTALL_ROOT et ça n'est clairement pas ça: on se retrouve seulement avec les .h dans pkg/ avec en plus des chemins tordus incluant ~ ... ce que disait benjarobin sûrement :| ).
Feng a écrit :Sinon j'ai téléchargé ABS et récupéré le prototype PKGBUILD-svn, donc ouais ils disent version 55, c'est ce que je vais mettre, étant donné qu'il n'y a pas de version SVN dans AUR, ça ne posera pas de soucis.
Y a peut-être que moi que ça dérange, mais ça me choquerait moins si c'était basé sur une version précise (stable donc) plutôt que sur du svn (développement). :|

Re: [package] Herqq

Publié : ven. 21 oct. 2011, 20:53
par Feng
Ben moi aussi mais kio-upnp-ms dépend de herqq en révision SVN 55 . J'ai testé toutes les versions stables depuis la 0.5 et aucune ne fonctionnent. En plus AUR contient déjà un paquet herqq en version 1.0 qui ne fonctionnent évidemment pas avec kio-upnp-ms . Donc je pense que faire un paquet herqq-svn bloqué en révision 55 est une bonne alternative. Moi aussi ça me perturbe un peu mais si je regarde le paquet mysql51 (AUR) par exemple, le paquet s'appel mysql51 (donc il défini une version précise), et le numéro de version est 5.1.29, donc il redéfini le même numéro de version. Donc peut-être l'appeler herqq-svn-r55 ; version 55 ?

Re: [package] Herqq

Publié : ven. 21 oct. 2011, 20:54
par Feng
FoolEcho :
j'ai juste testé le build avec INSTALL_ROOT et ça n'est clairement pas ça: on se retrouve seulement avec les .h dans pkg/ avec en plus des chemins tordus incluant ~
Feng :
PS : si je passe par install c'est parce que les autres méthodes de spécification du répertoire (avec qmake ou make install) ne fonctionnent pas malheureusement ...

Re: [package] Herqq

Publié : sam. 22 oct. 2011, 10:08
par FoolEcho
Feng a écrit :mais si je regarde le paquet mysql51 (AUR) par exemple, le paquet s'appel mysql51 (donc il défini une version précise), et le numéro de version est 5.1.29, donc il redéfini le même numéro de version. Donc peut-être l'appeler herqq-svn-r55 ; version 55 ?
L'exemple n'est pas bon. Le paquet mysql part d'une version stable, la 5.1, justement (et là, il faut bien faire un distinguo entre le mysql officiel en 5.5 et des versions plus anciennes).
Vu que le README de kio-upnp-ms indique se baser sur la svn 55 (en attendant mieux ?), tu n'as effectivement pas trop le choix. Ce qui est pourri c'est que ton paquet va inclure le dernier numéro de révision, je ne sais pas s'il y a moyen de fixer ça (je ne crois pas, le pkgver étant mis à jour selon la dernière révision de svn :( ).

Sinon, je ne vais (lâchement :roll: ) pas trop m'enquiquiner sur les .pro ce week-end, je n'ai pas trop le temps (ni envie, vu que tu as un PKGBUILD et si tes bibliothèques sont bien linkés :wink:). Sur ce que j'ai vu de http://www.herqq.org/html/hupnp_v1/inde ... deployment et des .pro, je dirai qu'il manque quelques règles de construction pour un make install plus propre: la doc indique hupnp/deploy/include et hupnp/deploy/lib, sauf que ce dernier n'est pas créé (et du coup, on ne peut le retrouver si on utilise INSTALL_ROOT).
Du coup, peut-être jeter un oeil sur les .pro des dernières révisions ? (même si, comme benjarobin je pense, je ne peux le construire à cause de fichiers manquants :| ... mais bon, seuls les .pro sont intéressants à la rigueur) :sifflote2:

Au passage, il ne me semble pas que tu aies besoin de cmake et d'automoc4 pour herqq (mais 'qt' oui).