Gentoo: utiliser le Portage Overlay pour patcher des ebuilds

Dans un article précédent, j’expliquais comment patcher un package Gentoo via le répertoire /etc/portage/patches/. Cependant, pour utiliser cette méthode, il faut que l’ebuild appelle la fonction epatch_user dans le src_prepare.

Lorsque ce n’est pas le cas, vous ne pouvez donc pas utiliser cette méthode. Pour cela, vous pouvez créer votre propre ebuild à partir du tree officiel dans votre portage overlay.

Configurer le portage overlay

Pour configurer le portage overlay, il vous suffit d’ajouter la ligne suivante dans le fichier /etc/make.conf:

Ainsi, votre overlay est situé dans le dossier /usr/local/portage.

Modifier un ebuild

Si par exemple, vous voulez modifier le package dev-php/xdebug, il vous suffit de copier le fichier ebuild dans votre package overlay:

Il vous suffit d’ajouter la fonction post_src_prepare pour y appeler la fonction epatch_user comme ceci:

Ensuite, il faut générer le fichier Manifest grâce à l’outil ebuild:

Maintenant, emerge va tout d’abord récupérer le package depuis vote overlay, et va donc appliquer les patches de votre dossier /etc/portage/patches/dev-php/xdebug/.

facebooktwittergoogle_plusredditpinterestlinkedinmail

Python 2.X, TypeError: must be type, not classobj avec super()

Si vous tombez sur l’erreur TypeError: must be type, not classobj en Python en essayant d’appeler la méthode super(), c’est très probablement que vous avez oublié de définir vos classes en new-styled.

En effet, si vous avez défini vos classes de cette manière, vous aurez l’erreur:

Pour les définir en new-styled, il vous suffit d’ajouter object comme classe parent de la première. Ainsi, votre code corrigé est:

Et tout fonctionne! :)

facebooktwittergoogle_plusredditpinterestlinkedinmail

Gentoo: utiliser des patches maison avec emerge

Il n’y a pas (ou très peu) de documentation sur comment utiliser vos propres patches sur des packages que vous installez avec emerge sous Gentoo, mais sachez que l’on peut le faire!
En théorie, il suffit d’ajouter votre patch au bon endroit, et emerge va le lire et l’appliquer lors de l’éxécution du src_prepare(). Il y a cependant des exceptions.

La fonction epatch_user

C’est la fonction epatch_user (déclarée dans /usr/portage/eclass/eutils.eclass) qui fait tout le travail. Elle doit être appelée dans le ebuild durant l’exécution du src_prepare.
Elle parcours le dossier /etc/portage/{category}/{package}/ et lance epatch pour appliquer tous les patches (ie tous les fichiers) qui s’y trouvent!
Par conséquent, pour que vous puissiez utiliser cette fonctionnalité, l’ebuild doit être configuré de telle sorte qu’il appelle la fonction epatch_user

Ajouter notre patch

Il suffit d’ajouter le patch dans le répertoire /etc/portage/patches/{category}/{package}, où category est la catégorie de votre package (dev-lang pour PHP par exemple) et package le nom de votre package, avec ou sans numéro de version.
Par exemple, si vous avez un patch xxx.patch pour PHP, copiez-le simplement dans le répertoire /etc/portage/patches/dev-lang/php/, et lorsque emerge préparera la source du ebuild, il appliquera votre patch automatiquement!

:)

facebooktwittergoogle_plusredditpinterestlinkedinmail

jQuery: Le scroll est-il à la fin de l’élément ?

Je vous présente un petit tip pour jQuery qui peut intéresser: comment savoir si le scroll est à la fin de l’élément? L’élément peut être un div ou tout simplement la page (document).

facebooktwittergoogle_plusredditpinterestlinkedinmail