# [Pulse2&MDS] Makefile et besoin d'aide ! (Résolu)

## thelinuxfr

Bonjour,

J'ai de créer des ebuilds pour Pulse2 et MDS, outils réseau Mandriva (ici). J'ai une ligne dans les Makefiles a virer car il y a une violation d'accès. Je pense le faire avec "sed". Mais je n'arrive pas trop a utiliser "sed". Alors quelle syntax je peux utilise pour virer une ligne avec sed?

Pour ceux qu'il veulent m'aider n'hésitez pas à tester et reporter les bugs, ou même avoir un accès sur le SVN. Suivez le liens  :Wink:  :

http://code.google.com/p/thelinux/

Merci d'avance.

----------

## truc

un truc style 

```
sed -i '/regex/d' fichier
```

(gnused pour le -i), normalement, dans un ebuild, il faudrait utiliser esed, mais je ne suis pas sûr de la syntaxe exacte, peut-être 

```
esed '/regex/d' file
```

----------

## brubru

Salut.

dosed est  banni de EAPI3, mieux vaut rester sur sed.

Sinon, donne-nous un extrait du Makefile avec la ligne à enlever/modifier, on doit pouvoir aider.

ps: le devmanual est vraiment top comme guide pour écrire des ebuilds ou faire des scripts shell en général.

Bruno

----------

## truc

 *brubru wrote:*   

> Salut.
> 
> dosed est  banni de EAPI3, mieux vaut rester sur sed.

 

Arf, Merci pour l'info, ça m'apprendra à ne pas vérifier ce que je dis  :Wink: 

----------

## thelinuxfr

Voici un extrait, il y a des lignes qui crées des violation d'accès, comme: CHOWN et CHGRP ou INSTALL dans /etc.

```

Makefile:

install: build_mo apache_conf

   @echo ""

   @echo "Installing mmc-web in $(DESTDIR)$(DATADIR)"

   $(INSTALL) -d -m 755 -o root -g root $(DESTDIR)$(DATADIR)

   $(INSTALL) -d -m 755 -o root -g root $(DESTDIR)$(ETCDIR)

   $(CP) -R $(FILESTOINSTALL) $(DESTDIR)$(DATADIR)

   $(CHOWN) -R root $(DESTDIR)$(DATADIR)

   $(CHGRP) -R root $(DESTDIR)$(DATADIR)

   $(INSTALL) confs/mmc.ini -m 640 -o root -g $(HTTPDUSER) $(DESTDIR)$(ETCDIR)

   $(SED) -i 's!^rootfs[ \t].*$$!rootfs = $(DATADIR)/!' $(DESTDIR)$(ETCDIR)/mmc.ini

   $(SED) -i 's!^rootfsmodules[ \t].*$$!rootfsmodules = $(DATADIR)/modules/!' $(DESTDIR)$(ETCDIR)/mmc.ini

   find $(DESTDIR)$(DATADIR) -type f -name *.po -exec rm -f {} \;

```

A suppr:

```

   $(INSTALL) -d -m 755 -o root -g root $(DESTDIR)$(DATADIR)

   $(CHOWN) -R root $(DESTDIR)$(DATADIR)

   $(CHGRP) -R root $(DESTDIR)$(DATADIR)

```

Merci d'avance  :Wink: 

PS: Vous pouvez utiliser mon overlay pour tester Pulse&MMC

----------

## truc

j'te trouve un poil trop insistant, alors j'te le dis, c'est pas méchant, mais bon...

Ce qu'il faut que tu comprennes, c'est que spontannément, on n'a pas envie de l'essayer ton logiciel, par contre on veut bien t'aider.

[Encore tu nous aurais dit un minimum pourquoi il était bien etc.. j'dis pas...]

Bon, montre nous où t'en es de tes différents essais, et après on en reparle.

----------

## xaviermiller

Plutôt qu'un sed, je pense qu'il est plus "propre" d'appliquer des patches, placés dans le répertoire "files" de l'ebuild.

----------

## guilc

La comme ça, je vois pas ou il y a un problème...

Toutes les lignes utilisent DESTDIR. C'est bien. Dans ton ebuild, il suffit de setter DESTIR correctement (ça doit correspondre à ${D} de l'ebuild, qui est la racine d'install dans /var/tmp)

Genre "make DESTDIR=${D} install"

----------

## thelinuxfr

Il y a un problème car des fichiers dans /etc/ sont modifiés par lesrcype python (setup.py). J'ai trouvé un moyen pour régler le problème:

```

inherit distutils

```

```

src_install() {

   "${python}" setup.py install --root="${D}" --no-compile "$@" || die "install failed"

# Et la je spécifie les fichiers dans /etc/, sinon le reste s'install bien dans /usr/share

   dosbin bin/* || die "bin install failed"

   insinto etc/mmc/agent/keys

}

```

----------

## brubru

Salut.

Si tu utilises l'eclass distutils, ton src_install devrait utiliser la fonction exportée distutils_src_install:

```

distutils_src_install() {

   # Mark the package to be rebuilt after a python upgrade.

   python_need_rebuild

   # need this for python-2.5 + setuptools in cases where

   # a package uses distutils but does not install anything

   # in site-packages. (eg. dev-java/java-config-2.x)

   # - liquidx (14/08/2006)

   pylibdir="$(${python} -c 'from distutils.sysconfig import get_python_lib; print get_python_lib()')"

   [ -n "${pylibdir}" ] && dodir "${pylibdir}"

   if has_version ">=dev-lang/python-2.3"; then

      ${python} setup.py install --root="${D}" --no-compile "$@" ||\

         die "python setup.py install failed"

   else

      ${python} setup.py install --root="${D}" "$@" ||\

         die "python setup.py install failed"

   fi

   DDOCS="CHANGELOG KNOWN_BUGS MAINTAINERS PKG-INFO CONTRIBUTORS TODO NEWS"

   DDOCS="${DDOCS} Change* MANIFEST* README* AUTHORS"

   for doc in ${DDOCS}; do

      [ -s "$doc" ] && dodoc $doc

   done

   [ -n "${DOCS}" ] && dodoc ${DOCS}

}
```

Si tu veux surcharger ta fonction, tu peux faire comme cela:

```

src_install() {

   distutils_src_install "$args_a_passer_a_setup.py"

# Et la je spécifie les fichiers dans /etc/, sinon le reste s'install bien dans /usr/share

   dosbin bin/* || die "bin install failed"

   insinto etc/mmc/agent/keys

} 

```

Mais si l'installation des fichiers de configuration ne respecte pas $DESTDIR ( ou --root dans ce cas là ), regarde s'il n'y a pas des paramètres supplementaires pour le script setup.py (genre --confdir... ) sinon c'est un bug et cela devrait être rapporter upstream.

----------

## thelinuxfr

Merci à tous  :Wink: 

----------

