# [Ebuild GIT] Pb de permissions (Résolu)

## jaypeche

Bonjour à tous,

Je travaille en ce moment sur la réalisation d'un ebuild, afin d'installer un logiciel dont les sources (en ruby) sont gérées par GIT via Github.com...

J'ai un problème de droits avec les sources, je m'explique :

Si je récupère les sources à la main, avec un 'git clone http://github.com/openplacos/openplacos', les droits sur les fichiers sont les bons (ex: droits en execution sur les fichiers *.rb).

En revanche, si j'utilise git_src_unpack, je récupère les sources mais les bons droits sur les différents fichiers n'existent plus !

Via git clone http://github.com/openplacos/openplacos :

```
dbox2 plugins # ll

total 52

drwxr-xr-x  3 root root 4096  3 juil. 21:23 db

-rwxr-xr-x  1 root root 3277  3 juil. 21:23 debug_server.rb

-rwxr-xr-x  1 root root 1439  3 juil. 21:23 fill_sql.rb

-rwxr-xr-x  1 root root 3124  3 juil. 21:23 jabber.rb

-rwxr-xr-x  1 root root 2269  3 juil. 21:23 log.rb

-rwxr-xr-x  1 root root  940  3 juil. 21:23 rackup.rb

-rwxr-xr-x  1 root root  965  3 juil. 21:23 ror_frontend.rb

drwxr-xr-x 12 root root 4096  3 juil. 21:23 rorplacos

-rwxr-xr-x  1 root root 2252  3 juil. 21:23 soap.rb

-rwxr-xr-x  1 root root 4440  3 juil. 21:23 sql.rb

-rwxr-xr-x  1 root root 1447  3 juil. 21:23 template.rb

-rwxr-xr-x  1 root root 1698  3 juil. 21:23 xmlrpc.rb

```

Via git_src_unpack (fonctionnalité ebuild) :

```
dbox2 plugins # ll

total 52

drwxr-xr-x  3 openplacos root 4096  7 juil. 14:56 db

-rw-r--r--  1 root       root 3277  7 juil. 15:19 debug_server.rb

-rw-r--r--  1 root       root 1439  7 juil. 15:19 fill_sql.rb

-rw-r--r--  1 root       root 3124  7 juil. 15:19 jabber.rb

-rw-r--r--  1 root       root 2269  7 juil. 15:19 log.rb

-rw-r--r--  1 root       root  940  7 juil. 15:19 rackup.rb

-rw-r--r--  1 root       root  965  7 juil. 15:19 ror_frontend.rb

drwxr-xr-x 13 openplacos root 4096  7 juil. 15:19 rorplacos

-rw-r--r--  1 root       root 2252  7 juil. 15:19 soap.rb

-rw-r--r--  1 root       root 4440  7 juil. 15:19 sql.rb

-rw-r--r--  1 root       root 1447  7 juil. 15:19 template.rb

-rw-r--r--  1 root       root 1698  7 juil. 15:19 xmlrpc.rb

```

Fichier ebuild :

http://pastebin.com/V0qqAeGJ

C'est assez génant car cela me force à attribuer les droits à la main depuis mon script ebuild. Vu qu'il y a pas mal de monde dans le train c'est assez laborieux...

 :Idea:  Quelqu'un aurait-il une idée ?

Merçi par avance...

----------

## guilc

Avant d'aller plus loin, je te suggère de commencer par migrer ton ebuild pour utiliser l'eclass "git-2" et non "git" qui est déprécié  :Wink: 

A priori, il te suffit juste de changer l'eclass.

Et vire ta fonction unpack. Laisse faire l'eclass qui va mettre correctement la fonction par défaut (ne la mets que si tu veux faire des trucs en plus de ce qui est fait par défaut)

----------

## jaypeche

Merçi Guilc pour ces précisions...  :Wink: 

J'ai donc suivi ta démarche dans un premier temps, je suis passé en "eclass git-2", supprimer la fonction unpack, ce qui n'altère pas le fonctionnement de l'ebuild.

Malheureusement cela n'a pas solutionner mes problèmes de droits sur les fichiers, je vais me pencher sur l'Eclass GIT-2.

```
dbox2 jay # emerge -v openplacos

 * IMPORTANT: 9 news items need reading for repository 'gentoo'.

 * Use eselect news to read news items.

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R   ] app-misc/openplacos-0.2.0  USE="-arduino -gtk2" 0 kB [?=>1]

Total: 1 package (1 reinstall), Size of downloads: 0 kB

Portage tree and overlays:

 [0] /usr/portage

 [1] /usr/local/portage

 [?] indicates that the source repository could not be determined

>>> Verifying ebuild manifests

>>> Emerging (1 of 1) app-misc/openplacos-0.2.0 from unknown repo

 * Package:    app-misc/openplacos-0.2.0

 * Maintainer: ruby@gentoo.org

 * USE:        elibc_glibc kernel_linux userland_GNU x86

 * FEATURES:   sandbox

>>> Unpacking source...

GIT update -->

   repository:               git://github.com/openplacos/openplacos.git

   at the commit:            62351647d7ea3896ac98e51d7e4ee5b2b0343af2

   commit:                   62351647d7ea3896ac98e51d7e4ee5b2b0343af2

   branch:                   master

   storage directory:        "/usr/portage/distfiles/egit-src/openplacos.git"

   checkout type:            bare repository

Cloning into /var/tmp/portage/app-misc/openplacos-0.2.0/work/openplacos-0.2.0...

done.

Switched to a new branch 'tree-62351647d7ea3896ac98e51d7e4ee5b2b0343af2'

>>> Unpacked to /var/tmp/portage/app-misc/openplacos-0.2.0/work/openplacos-0.2.0

>>> Source unpacked in /var/tmp/portage/app-misc/openplacos-0.2.0/work

>>> Preparing source in /var/tmp/portage/app-misc/openplacos-0.2.0/work/openplacos-0.2.0 ...

>>> Source prepared.

>>> Configuring source in /var/tmp/portage/app-misc/openplacos-0.2.0/work/openplacos-0.2.0 ...

>>> Source configured.

>>> Compiling source in /var/tmp/portage/app-misc/openplacos-0.2.0/work/openplacos-0.2.0 ...

make -j3 

make: Rien à faire pour « all ».

>>> Source compiled.

>>> Test phase [not enabled]: app-misc/openplacos-0.2.0
```

 :Idea:  Si tu as qq pistes ...

----------

## jaypeche

Toujours sur mon problème ebuild lié à GIT :

Je me suis penché sur l' Eclass git-2, je n'arrive tjs pas à comprendre pourquoi je n'arrive pas à récupérer les sources comme le ferais un 'git clone UrI' ?

http://pingwho.homelinux.org/pub/gentoo/ftp/portage/eclass/git-2.eclass

l'option 'checkout type:            bare repository' me laisse perplexe ?!

Merçi   :Smile: 

----------

## netfab

Tu n'as donc pas de problème ni avec ton ebuild, ni avec l'eclass ?

L'option bare du dépôt est une option de git, cela signifie que le dépôt n'est qu'un dépôt, et non un dépôt+répertoire de travail.

Edit: et pour répondre à ton interrogation, d'après les commentaires et l'imbrication des fonctions dans l'eclass, lorsqu'un dépôt git est téléchargé avec option bare activée, les sources sont récupérées à l'aide d'un clone lors du src_unpack par la fonction git-2_migrate_repository.

----------

## jaypeche

Merçi pour ta reponse netfab mais mon probleme n'en est pas moins resolu :

Pourquoi un git clone URL fonctionne il nickel ? à savoir avec les droits ki vont bien...  :Smile: 

Alors que la function src_unpack ne recupere pas les sources avec leurs droits respectifs..; zarb

l'Eclass GIT-2 ne m'aide pas bcp.. 

 :Confused: 

----------

## netfab

A mon avis il n'y a rien d'anormal. C'est justement le but de l'ebuild d'effectuer les opérations (copie/droits/etc..) pour l'utilisateur.

Si tu trouves que ton ebuild devient trop complexe à cause de tous ces fichiers à copier et tous ces droits à positionner, tu devrais demander au niveau upstream à ce que le makefile soit correctement réécrit : les droits sur les fichiers installés devraient être positionnés au moment du make install.

----------

## jaypeche

Je tarde un peu à repondre.. dsl

Ne maitrisant pas l'eclass git-2, et n'arrivant pas à solutionner ce problème de droits, je me suis rabattu sur l'eclass git   :Crying or Very sad: 

J'ai remplacer l'ebuild comme ceçi, au niveau de la copie des sources et j'arrive à ce que je voulais   :Idea: 

```
src_install () {

        # Copying files

        einfo

        einfo "Copying files"

        insinto ${OPOS_PATH} || die "insinto failed !"

        cp -dpR * ${D}/${OPOS_PATH} || die "copy failed !"

...

```

 :Idea:   Résolu  

Merçi à tous pour votre aide   :Smile: 

----------

