Page 1 sur 1

[aur] mon premier PKGBUILD et je coince.

Publié : jeu. 05 sept. 2013, 18:03
par thieume
Bonjour,
J'utilise pas mal Teamdrive, et je vois sur AUR que le package n'est pas mis à jour par son "proprio". J'aimerai bien lui proposer une mise à jour, et j'ai modifié son PKGBUILD. Avant de le proposer, j'aimerai bien le tester. Du coup, dans le répertoire du pkgbuild, je lance un coup de "makepkg". Et là, ca coince dans le build() :
Erreur lors de la création du répertoire /home/matthieu/Spaces/Temporaire/aur.teamdrive/pkg/teamdrive3
Abort
Une erreur s'est produite.
Unable to create directory
==> ERREUR : Une erreur s’est produite dans build().
Abandon...
Je regarde de plus près dans le répertoire et je vois le répertoire "pkg" crée, avec les permissions suivantes :
4 d--------- 2 matthieu users 4096 5 sept. 19:50 pkg
Si, je lance makepkg en root, j'ai un bon gros Warning dissuasif : Ca doit pas etre la marche à suivre.
C'est quoi la technique pour que le test fonctionne ?

Merci d'avance.
Matthieu.

PS: Je colle le PKGBUILD...

Code : Tout sélectionner

# Former maintainer: Xunhua Guo <xunhua.guo@gmail.com>
# Maintainer: Robert Orzanna <orschiro@gmail.com>
pkgname=teamdrive3
pkgver=3.1.2_454
pkgrel=2
pkgdesc="Keeps data synchronised between various computers automatically."
arch=('i686' 'x86_64')
url="http://www.teamdrive.com/"
license=('CUSTOM')
depends=('')
if [[ "$CARCH" == "x86_64" ]]; then
	depends=('lib32-qt4'
			'lib32-glib2'
			'lib32-libxext'
			'lib32-libxrender'
			'lib32-fontconfig'
			'lib32-libsm'
			'lib32-sqlite'
			)			
fi
source=("http://s3download.teamdrive.net.s3.amazonaws.com/3.1.454/TMDR/linux/Install-TeamDrive-3.1.2.454_TMDR.run"
		"teamdrive3.desktop")
options=(!strip)
md5sums=('f4053c9216f62470053965528f56a424'
         '57b300b6333c515fd6785b5d8eda48a1')

build() {
    
    cd $srcdir

    chmod +x Install-TeamDrive-3.1.2.454_TMDR.run

    ./Install-TeamDrive-3.1.2.454_TMDR.run --mode unattended --prefix $pkgdir/opt/teamdrive3
   
    install -Dm644 "$srcdir/teamdrive3.desktop" "$pkgdir/usr/share/applications/teamdrive3.desktop"
}

package() {

    rm "$pkgdir/opt/teamdrive/Uninstall TeamDrive 3.desktop"
    rm "$pkgdir/opt/teamdrive/uninstall"
}

Re: [aur] mon premier PKGBUILD et je coince.

Publié : jeu. 05 sept. 2013, 18:24
par jean_no
Salut

donnes nous toutes les commandes que tu as utilisé, ainsi que la sortie de la compilation.
Si je lance makepkg en root
Pas bien du tout. Ne compile jamais en root. root sert uniquement à administrer une machine, pas pour contourner les problèmes utilisateur...

A+

Re: [aur] mon premier PKGBUILD et je coince.

Publié : jeu. 05 sept. 2013, 18:31
par benjarobin
Peux tu donner la sortie de la commande : mount

Re: [aur] mon premier PKGBUILD et je coince.

Publié : ven. 06 sept. 2013, 08:57
par thieume
jean_no a écrit :donnes nous toutes les commandes que tu as utilisé, ainsi que la sortie de la compilation.
Ben, c'est déja fait :) . Le truc est que le pkgbuild doit aller chercher un binaire et lancer l'install de ce binaire après un chmod +x.
Je lance donc "makepkg" et j'ai la sortie citée dans mon premier message.

Pour le mount, je regarde ce soir.
Matthieu

Re: [aur] mon premier PKGBUILD et je coince.

Publié : ven. 06 sept. 2013, 09:31
par Rolinh
thieume a écrit :

Code : Tout sélectionner

depends=('')
if [[ "$CARCH" == "x86_64" ]]; then
	depends=('lib32-qt4'
			'lib32-glib2'
			'lib32-libxext'
			'lib32-libxrender'
			'lib32-fontconfig'
			'lib32-libsm'
			'lib32-sqlite'
			)			
fi
Et dans le cas i686? Il n'y aurait pas besoin de sqlite, qt4, ...?

Re: [aur] mon premier PKGBUILD et je coince.

Publié : ven. 06 sept. 2013, 10:06
par oktoberfest
J'ai essayé ton PKGBUILD et j'ai le même problème.
Si dans le PKGUILD je commente la ligne './Install-TeamDrive-3.1.2.454_TMDR.run --mode...' alors le paquet se créé.
Si je lance cette ligne à la main dans un shell, le répertoire pkg est bien créé et rempli et le tout avec les bon droits.
Par contre cette même ligne dans le PKGBUILD provoque la création d'un répertoire pkg sans droit.... Moi pas comprendre.

Si un expert es makepkg passe par là, il pourra éclairer ma lanterne.

Re: [aur] mon premier PKGBUILD et je coince.

Publié : ven. 06 sept. 2013, 10:15
par oktoberfest
Après avoir passé les yeux à l'eau claire ça va beaucoup mieux...
Les lignes ne sont pas au bon endroit dans le PKGBUILD

L'installation doit se faire dans la fonction package(), la fonction build() sert à compiler et ici il n'y a pas grand chose à compiler...

Pour le PKGBUILD je verrais bien un truc dans le genre :

Code : Tout sélectionner

# Former maintainer: Xunhua Guo <xunhua.guo@gmail.com>
# Maintainer: Robert Orzanna <orschiro@gmail.com>
pkgname=teamdrive3
pkgver=3.1.2_454
pkgrel=2
pkgdesc="Keeps data synchronised between various computers automatically."
arch=('i686' 'x86_64')
url="http://www.teamdrive.com/"
license=('CUSTOM')
depends=('')
if [[ "$CARCH" == "x86_64" ]]; then
   depends=('lib32-qt4'
         'lib32-glib2'
         'lib32-libxext'
         'lib32-libxrender'
         'lib32-fontconfig'
         'lib32-libsm'
         'lib32-sqlite'
         )         
fi
source=("http://s3download.teamdrive.net.s3.amazonaws.com/3.1.454/TMDR/linux/Install-TeamDrive-3.1.2.454_TMDR.run"
      "teamdrive3.desktop")
options=(!strip)
md5sums=('f4053c9216f62470053965528f56a424'
         '57b300b6333c515fd6785b5d8eda48a1')

build() {
   
    cd $srcdir

    chmod +x Install-TeamDrive-3.1.2.454_TMDR.run

}

package() {
    ./Install-TeamDrive-3.1.2.454_TMDR.run --mode unattended --prefix $pkgdir/opt/teamdrive3
    install -Dm644 "$srcdir/teamdrive3.desktop" "$pkgdir/usr/share/applications/teamdrive3.desktop"

    rm "$pkgdir/opt/teamdrive/Uninstall TeamDrive 3.desktop"
    rm "$pkgdir/opt/teamdrive/uninstall"
}
Il reste deux petits soucis :
- l'install se fait dans /opt, ce n'est pas forcément 'bien' sous Archlinux
- j'ai un warning lors de la création du paquet : "Le paquet contient une référence à  $pkgdir"

Re: [aur] mon premier PKGBUILD et je coince.

Publié : ven. 06 sept. 2013, 10:38
par Rolinh
Et pourquoi ça ne serait pas propore de faire l'installation dans /opt ? Pour moi, un binaire livré tel quel a justement sa place dans /opt. Par ailleurs, certains paquets officiels s'installent, en partie en tout cas, dans /opt (urbanterror par exemple).

Re: [aur] mon premier PKGBUILD et je coince.

Publié : ven. 06 sept. 2013, 10:52
par oktoberfest
Tu as tout à fait raison. C'est d'ailleurs expliqué dans le wiki --> https://wiki.archlinux.org/index.php/Ar ... c_packages

Re: [aur] mon premier PKGBUILD et je coince.

Publié : ven. 06 sept. 2013, 11:41
par thieume
OK, merci pour le debug, je regarde tout cela, et surtout, je suis bon pour relire la différence entre build() package() et autre.... M'enfin, sur le coup, j'ai juste repris le précédent PKGBUILD sans rien toucher. La source était donc discutable :-)
Pour /opt, j'ai plein de bazar officiel ou AUR déja dedans. Du coup....

Matthieu.

Re: [aur] mon premier PKGBUILD et je coince.

Publié : ven. 06 sept. 2013, 11:46
par thieume
oktoberfest a écrit :

Code : Tout sélectionner

package() {
    ./Install-TeamDrive-3.1.2.454_TMDR.run --mode unattended --prefix $pkgdir/opt/teamdrive3
Il reste deux petits soucis :
- j'ai un warning lors de la création du paquet : "Le paquet contient une référence à  $pkgdir"
Question idiote, on a le droit de coller des $pkgdir dans une procedure package() ?
Matthieu.

Re: [aur] mon premier PKGBUILD et je coince.

Publié : ven. 06 sept. 2013, 11:55
par benjarobin
thieume a écrit :Question idiote, on a le droit de coller des $pkgdir dans une procedure package() ?
Bien sur que oui, mais dans la fonction build non

Re: [aur] mon premier PKGBUILD et je coince.

Publié : sam. 07 sept. 2013, 10:28
par Xorg
thieume a écrit :
oktoberfest a écrit :

Code : Tout sélectionner

package() {
    ./Install-TeamDrive-3.1.2.454_TMDR.run --mode unattended --prefix $pkgdir/opt/teamdrive3
Il reste deux petits soucis :
- j'ai un warning lors de la création du paquet : "Le paquet contient une référence à  $pkgdir"
Question idiote, on a le droit de coller des $pkgdir dans une procedure package() ?
Matthieu.
Pour compléter la réponse de Benjarobin, on utilise la variable $pkgdir uniquement dans la fonction package, c'est-à-dire que tu n'as pas le droit de l'utiliser dans la fonction pkgver, prepare, build ou check, pour une des raison qui est que le dossier pkg en question est créé lorsque la fonction package est lancée.


En fait, un petit détail, à chaque nouvelle fonction, le répertoire courant est réinitialisé (à $startdir). Donc dans ta fonction package, il te faut aussi te placer dans le bon répertoire ! :wink:

Un détail qui devient vite important dans un PKGBUILD : utilise les variables. Comme leur nom l'indique, à chaque nouvelle version de TeamDrive 3, tu n'auras pas besoin de modifier tout ton PKGBUILD. Par exemple, vu que l'installateur s'appelle Install-TeamDrive-VERSION_TMDR.run, tu as tout à fait (et c'est même encouragé) le droit d'utiliser la variable "$pkgver" pour désigner ladite version. :)
Un autre petit point à soulever vis-à-vis des variables : c'est aussi un moyen de ne pas commettre d'erreurs, car un coup tu utilises le répertoire /opt/teamdrive3, et un coup le /opt/teamdrive. Le plus simple, c'est de faire appel à la variable qui contient le nom du paquet.

J'espère avoir pu t'aider dans la création de ton PKGBUILD, en te laissant le soin de faire les modifications toi-même. :chinois:

Re: [aur] mon premier PKGBUILD et je coince.

Publié : mer. 11 sept. 2013, 17:40
par thieume
Bonjour,

Je continue dans ma lancée et j'aurais besoin d'un conseil pour éviter (ou pas) de faire mon goret sur AUR.
Le mainteneur du pkgbuild que j'aimerai aider ne me répond pas à ma demande par mail de reprise de maintenance (j'ai été super poli :-) et rien ne bouge depuis un moment.

Comment faire pour reprendre à mon compte la maintenance (si possible) vu que le paquet semble abandonné ? Je fais une soumission sur AUR en parallèle (Cela me semble un peu goret l'histoire) ?

Bref, comment gérez vous cela ?
Merci

Re: [aur] mon premier PKGBUILD et je coince.

Publié : mer. 11 sept. 2013, 17:44
par benjarobin
Tout est expliqué dans le Wiki Arch_User_Repository, faire une demande sur la mailing list
Sinon cela n'est pas conseillé (voir interdit) de faire un envoi d'un paquet sous un autre nom...

Re: [aur] mon premier PKGBUILD et je coince.

Publié : mer. 11 sept. 2013, 22:20
par Xorg
Je confirme. Bien que ça passe de renommer le paquet (oui, pour utiliser le même nom, il faut obligatoirement être le mainteneur), c'est très mal vu, et donc il est possible que le paquet soit supprimé sans préavis (j'ai connu ça avec libkqueue/kibkqueue0). Bon, en général, il faut que quelqu'un le signal sur la mailing list, mais voilà quoi.

N'ai pas peur d'AUR-general, ils ne mordent pas là-bas. :)

Re: [aur] mon premier PKGBUILD et je coince.

Publié : jeu. 12 sept. 2013, 10:08
par thieume
Merci pour les infos...