LINUX.ORG.RU
ФорумTalks

[gentoo][HATE] /var/db/pkg <--- shit

 ,


0

0

почему до сих пор в environment.bz2 нет инфы о том, с какой версией gcc/icc/etc собран пакет?
понятно что можно накостылять - не вопрос
но как мне узнать с какой версией собран пакет сейчас?
objdump? shit

[ root@desktop ] megabaks # objdump -T /usr/lib/libgtkmm-2.4.so.1 | grep GLIBC
00000000      DF *UND*	00000000  GLIBCXX_3.4 _Znwj
00000000  w   DF *UND*	00000000  GLIBC_2.1.3 __cxa_finalize
00000000      DO *UND*	00000000  GLIBCXX_3.4 _ZNSs4_Rep20_S_empty_rep_storageE
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZSt17__throw_bad_allocv
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSs6assignEPKcj
00000000      DF *UND*	00000000  GLIBC_2.0   memcpy
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZSt20__throw_length_errorPKc
00000000      DF *UND*	00000000  GLIBC_2.0   strlen
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSsC1ERKSs
00000000      DF *UND*	00000000  GLIBC_2.3.4 __sprintf_chk
00000000      DF *UND*	00000000  GLIBC_2.1.3 __cxa_atexit
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZSt19__throw_logic_errorPKc
00000000      DF *UND*	00000000  GLIBCXX_3.4.14 _ZNSt15_List_node_base7_M_hookEPS_
00000000      DF *UND*	00000000  GLIBCXX_3.4 _Znaj
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSs4_Rep10_M_destroyERKSaIcE
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZdlPv
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSsC1EPKcRKSaIcE
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZdaPv
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSs6assignERKSs
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSsD1Ev
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSs4_Rep9_S_createEjjRKSaIcE
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSsD2Ev
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSs4swapERSs
00000000      DF *UND*	00000000  GLIBC_2.0   memmove
00000000      DF *UND*	00000000  GLIBC_2.0   log10
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSsC1EPKcjRKSaIcE
00000000      DF *UND*	00000000  GLIBCXX_3.4 _ZNSs9_M_mutateEjjj
[ root@desktop ] megabaks #
итого - gtkmm собраны с гцц 4.5 (в 4.6 GLIBCXX_3.4.15)
но ведь криво что ппц - дампить и грепать все бинарники/либы - это же ппц
P.S. да - сегодня опять приступ ненависти :3

★★★★
Ответ на: комментарий от IceAlchemist

Ты какой-то впечатлительный слишком, тут так просто развлекаются :)
Например, извечная народная забава «тайлинг vs флоатинг»

pekmop1024 ★★★★★
()
Ответ на: комментарий от Lumi

сделал костыль
в ходе экспериментов выяснилось вот что
в портаже есть таки проверка компилятора - т.е. если это icc, то создаётся файлик CC с icc унутри
и тоже сцуко без версии
ненавижу

megabaks ★★★★
() автор топика

блин опять.. кусок мегабакса, где ссылка на баг в багзилле?

опять троллинг на 10 страниц будет, когда на полчаса работы. Хотя это на удивление логичное предложение..

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

короче - если годный инглиш - запили фичреквест
а то мой ангельский никто не поймёт - инфа 100%

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

> у тебя с английским годно?

средне.. в багзиллу пишу когда совсем припирает или явно понятно, что нужно делать, обычно так гентудевов пинаю.

какой кхм...выпилил?

ну надо или «обновить» багу, которую ты привёл, или придумать решение, или пойти и попинать zmedico.

попробую сделать более менее рабочий workaround с экспортом версии ${CC}, если получится то круто (а пока добавил головов багу)

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

ну записать версию гцц не проблема
но лучше чоб это было нативной фичей портажа, а не костылём сторонним

[ root@desktop ] megabaks # cat /var/db/pkg/app-portage/gentoolkit-0.3.0/GCC_VERSION
COMPILER:gcc
INFO:
Using built-in specs.
COLLECT_GCC=/usr/i686-pc-linux-gnu/gcc-bin/4.5.2/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-pc-linux-gnu/4.5.2/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.5.2/work/gcc-4.5.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.5.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.5.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.5.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.5.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --disable-fixed-point --without-ppl --without-cloog --disable-lto --enable-nls --without-included-gettext --with-system-zlib --disable-werror --enable-secureplt --disable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --enable-cld --with-python-dir=/share/gcc-data/i686-pc-linux-gnu/4.5.2/python --enable-checking=release --disable-libgcj --with-arch=i686 --enable-objc-gc --enable-languages=c,c++,objc,obj-c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.5.2 p1.1, pie-0.4.5'
Thread model: posix
gcc version 4.5.2 (Gentoo 4.5.2 p1.1, pie-0.4.5) 
[ root@desktop ] megabaks # 
но велик же с квадратными колёсами

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

в общем посидел на #gentoo-porgate, почему они не хотят делать:

мешается distcc и ccache из-за которых переменные могут врать, плюс ссылаются на то, что хитрый ебилд может подменить версии СС. (хотя лично я не понял, как это можно сделать уже при вызове например emake)

В итоге грамотного решения как сделать так, чтобы сделать подобный функционал пока нету. Так, что видимо или велосипед или предлагать идею решения в багзиллу.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

ебыдло может тупо поменять ROOTPATH

#COMPILERS
if [ -f ${ROOT}/etc/portage/package.compilers ]; then
   while read target ver; do
      if [ "${target}" = "${CATEGORY}/${PN}" ]; then
      export ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/$ver:$ROOTPATH"
      fi
   done < ${ROOT}/etc/portage/package.compilers
fi
[ megabaks@desktop ] ~ $ cat /etc/portage/package.compilers
dev-util/nvidia-cuda-sdk 4.4.5
[ megabaks@desktop ] ~ $ 

megabaks ★★★★
() автор топика
Ответ на: комментарий от qnikst

а как именно мешаются дистцц и сикэш они не пояснили?

megabaks ★★★★
() автор топика
Ответ на: комментарий от qnikst

мешается distcc и ccache из-за которых переменные могут врать

не понимать

[ root@desktop ] megabaks # distcc cc --version
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
Copyright (C) 2010 Free Software Foundation, Inc.
Это свободно распространяемое программное обеспечение. Условия копирования
приведены в исходных текстах. Без гарантии каких-либо качеств, включая 
коммерческую ценность и применимость для каких-либо целей.

[ root@desktop ] megabaks #
что не так?

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

ну я так понимаю, что при вызове emake уже никуда не денешься и cc --version выдаст что надо, хотя может я и туплю. Если я не туплю, то остаётся только вариант нескольких вызовов emake с меняющимся CC.

а как именно мешаются дистцц и сикэш они не пояснили?

неа.

Поскольку у меня workaround'a приближенного к нормальному решению нету, то попробую появления zmedico дождаться и попинать лично. Может ещё русскоязычных девов попинаю.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

вот такая херь

post_pkg_postinst(){
if [ echo $OCC != "icc" ];then
gcc --version | head -n1 > /var/db/pkg/${CATEGORY}/${PN}-${PVR}/GCC_VERSION
fi
}
работает - даже если в ебыдле переопределить ROOTPATH
но опять же - криво + непонятно как портаж ведёт себя если $OCC == icc
я питона не знаю - потому копать хз куда и как (

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks
[ root@desktop ] megabaks # for i in `find /var/db/pkg -name GCC_VERSION`;do echo $i;cat $i;done
/var/db/pkg/x11-misc/xbindkeys-9999/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/kde-base/kdelibs-4.6.2-r2/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/media-libs/gd-2.0.35-r2/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/sys-apps/less-443/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/qdox-1.6.3/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/jarjar-0.9/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/xalan-2.7.1/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/ant-junit-1.8.1/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/asm-2.0-r1/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/junit-4.8.2-r1/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/javacup-0.11a_beta20060608/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/ant-owanttask-1.1-r12/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/hamcrest-core-1.1/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/bcel-5.2-r1/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/junit-3.8.2-r1/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-java/java-getopt-1.0.13/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-lang/nasm-2.09.08/GCC_VERSION
gcc (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2
/var/db/pkg/dev-util/nvidia-cuda-sdk-3.2/GCC_VERSION
gcc (Gentoo 4.4.5 p1.2, pie-0.4.5) 4.4.5
[ root@desktop ] megabaks # 

последний - это к этому посту

megabaks ★★★★
() автор топика

Дабы не оффтопить в l-o-r.

если я собрал некую либу с GLIBCXX_3.4.15 (gcc 4.6) и потом переключился на gcc 4.5.*, то прога не найдёт нужной версии и прога, зависимая от этой либы, не запустится

отсюда следует - что надо знать - какая либа/прога собрана с каким gcc



Вот есть программа A, которая зависит от библиотеки X.
Программа A и библиотека X собраны gcc 4.6.
Я пересобираю библиотеку X с gcc 4.5.

Все. Программа A не запустится пока ее не пересобрать?

kernelpanic ★★★★★
()
Ответ на: комментарий от kernelpanic

>Вот есть программа A, которая зависит от библиотеки X.

Программа A и библиотека X собраны gcc 4.6.

Программа A не запустится пока ее не пересобрать?


нет, если одна из её зависимостей требует недоступную либу (из гцц 4.6)
если пересобрать либу X (точнее все зависимости проги A) с гцц 4.5, то запустится, НО!
как вычислить либу, требующую гцц 4.6, если пакетманагер не предоставляет данных о версии гцц?

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

>нет, если одна из её зависимостей требует недоступную либу (из гцц 4.6)
Т.е. получается, что не важно какой версией gcc собрана либа, а проблема может быть в том, что эта либа может зависеть от библиотек gcc определенной версии?

как вычислить либу, требующую гцц 4.6

Ммм... Это указано в зависимостях?

kernelpanic ★★★★★
()
Ответ на: комментарий от kernelpanic

>Ммм... Это указано в зависимостях?
нет! к зависимостям это не имеет никакого отношения - абсолютно никакого
посмотри выхлоп в топике

Т.е. получается, что не важно какой версией gcc собрана либа, а проблема может быть в том, что эта либа может зависеть от библиотек gcc определенной версии?

да, но не совсем так:
если в зависимостях либы будет GLIBCXX_3.4.14, а я переключусь на гцц 4.6 с GLIBCXX_3.4.15, то с вероятностью 99.9% она заработает
а вот наоборот...
и опять же - 100%-ой обратной совместимости никто не гарантирует!
что проще: пересобрать весь мир или только нуждающиеся пакеты?

megabaks ★★★★
() автор топика

Прочёл заголовок как [gentoo][hate]/var/lib/dpkg и долго недоумевал, о чём речь.

Xellos ★★★★★
()
Ответ на: комментарий от megabaks

пока нету (

ничего полезного на каналах добиться не удалось, а самому workaround для всех ебилдов придумать не удалось

qnikst ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.