Gentoo profile 17 : Failed to emerge sys-libs/libcxxrt-0.0_p20160922
Salut à tous,
Lors de la mise à jour du profil de Gentoo vers la version 17, il peut y avoir un petit bug avec le paquet sys-libs/libcxxrt.
Il y a en effet un bogue dans certains cas (que je n'ai rencontré que sur la Gentoo MATE graphique).
Il faut donc patcher manuellement et localement.
Pour cela, créer le /etc/portage/patches pour tous les ebuilds (cf la source en bas d'article) :
Recharger ce fichier pour qu'il soit pris en compte dans bash :
Ensuite créer le dossier «patches» pour le nom et la catégorie de notre ebuild :
Ensuite, créer un fichier de patch, par exemple 01-bug-profile17.patch
Le patch provient de https://github.com/pathscale/libcxxrt/commit/db54f535fc67703b2993b9b2d3fc7ede7a608936
Ensuite, on reprend la mise à jour du world
Et voilà
Lors de la mise à jour du profil de Gentoo vers la version 17, il peut y avoir un petit bug avec le paquet sys-libs/libcxxrt.
Il y a en effet un bogue dans certains cas (que je n'ai rencontré que sur la Gentoo MATE graphique).
Il faut donc patcher manuellement et localement.
Pour cela, créer le /etc/portage/patches pour tous les ebuilds (cf la source en bas d'article) :
Code BASH :
vi /etc/portage/bashrc
Code BASH :
pre_src_prepare() { [[ ${EAPI:-0} == [012345] ]] || return if ! type estack_push > /dev/null 2>&1; then local estack_names="eshopts_push eshopts_pop evar_push evar_push_set evar_pop estack_push estack_pop" source <(awk "/^# @(FUNCTION|VARIABLE): / { p = 0 } /^# @(FUNCTION|VARIABLE): (${estack_names// /|})\$/ { p = 1 } p { print }" ${PORTDIR}/eclass/estack.eclass) fi if ! type epatch_user > /dev/null 2>&1; then local epatch_names="EPATCH_SOURCE EPATCH_USER_SOURCE epatch_user_death_notice epatch_user epatch" source <(awk "/^# @(FUNCTION|VARIABLE): / { p = 0 } /^# @(FUNCTION|VARIABLE): (${epatch_names// /|})\$/ { p = 1 } p { print }" ${PORTDIR}/eclass/epatch.eclass) fi epatch_user for name in $epatch_names; do unset $name done for name in $estack_names; do unset $name done }
Recharger ce fichier pour qu'il soit pris en compte dans bash :
Code BASH :
source /etc/portage/bashrc
Ensuite créer le dossier «patches» pour le nom et la catégorie de notre ebuild :
Code BASH :
mkdir -p /etc/portage/patches/sys-libs/libcxxrt-0.0_p20160922/
Ensuite, créer un fichier de patch, par exemple 01-bug-profile17.patch
Code BASH :
vi /etc/portage/patches/sys-libs/libcxxrt-0.0_p20160922/01-bug-profile17.patch
Code BASH :
diff --git a/src/memory.cc b/src/memory.cc index 9fa9d2a..0fb4f55 100644 --- a/src/memory.cc +++ b/src/memory.cc @@ -151,4 +151,21 @@ void operator delete[](void * ptr) NOEXCEPT ::operator delete(ptr); } +// C++14 additional delete operators +#if __cplusplus >= 201402L + +__attribute__((weak)) +void operator delete(void * ptr, std::size_t) NOEXCEPT +{ + ::operator delete(ptr); +} + + +__attribute__((weak)) +void operator delete[](void * ptr, std::size_t) NOEXCEPT +{ + ::operator delete(ptr); +} + +#endif
Le patch provient de https://github.com/pathscale/libcxxrt/commit/db54f535fc67703b2993b9b2d3fc7ede7a608936
Ensuite, on reprend la mise à jour du world
Code BASH :
emerge -r
Et voilà