пятница, 11 ноября 2011 г.

Portage2

чуть перепилил предыдущий вариант переключалки версии gcc для отдельного пакета
код ниже надо запилить в /etc/portage/bashrc
#COMPILERS
if [ -f ${ROOT}/etc/portage/package.compilers ]; then
  while read target ver; do
   if [ "${target}" = "${CATEGORY}/${PN}" ]; then
    MY_GCC="$(find /usr/$MACHTYPE/gcc-bin/ -name "$ver*")"
    export ROOTPATH="${MY_GCC}:${ROOTPATH}"
    export PATH="${MY_GCC}:${PATH}"
    export LIBRARY_PATH="$(gcc-config -L):${LIBRARY_PATH}"
   fi
  done < ${ROOT}/etc/portage/package.compilers
fi
теперь в /etc/portage/package.compilers можно задать как конкретную версию gcc - например 4.4.6, так и, что куда удобнее, ветку - например 4.4
echo "dev-util/nvidia-cuda-sdk 4.4" >> /etc/portage/package.compilers
удобней, т.к. при обновлении мира в слоте 4.4 gcc с 4.4.5 может запросто обновиться до 4.4.6, например, и в предыдущем варианте переключалки пришлось бы менять версии
Так же для того, чтобы посмотреть какой версией gcc собран пакет, запилил следующее в /etc/portage/bashrc
post_pkg_postinst(){
if [ echo $OCC != "icc" ];then
gcc --version | head -n1 > /var/db/pkg/${CATEGORY}/${PN}-${PVR}/GCC_VERSION
fi
}
проверить версию, используемую при сборке, можно так: например nvidia-cuda-sdk
[ root@desktop ] megabaks # cat /var/db/pkg/dev-util/nvidia-cuda-sdk-4.0/GCC_VERSION 
gcc (Gentoo 4.4.6-r1 p1.0, pie-0.4.5) 4.4.6
[ root@desktop ] megabaks #