[devel] gcc-4.3.2-alt1

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Окт 22 09:39:53 MSD 2008


On Tue, Oct 21, 2008 at 12:03:52AM +0400, Dmitry V. Levin wrote:
> > По hsh-install gcc-c++ в чрут почему-то ставиться gcc4.1-c++, а не
> > gcc4.3-c++. Это у меня локальные проблемы или так и задумано?
> 
> Это потому, что в hasher repo уже есть свой gcc4.3-c++.

Я собрал у себя локально в hasher repo пакеты binutils и gcc4.3
(и пока ещё не синхронизировал сизиф с новым тулчейном).

Получается такая бяка, что у всех пакетов gcc4.x-c++ одинаковый score,
равный нулю.  К тому же qsort, в таком случае, может переупорядочить
пакеты.  Хотя вроде бы не переупорядочивает.  Вероятно, дело в том,
что в glibc реализация qsort на коротких последовательностях делает
mergesort.  А mergesort является стабильным.  Вот на каких соплях
иногда всё висит!

--- apt-get.cc-	2008-10-21 03:29:54 +0000
+++ apt-get.cc	2008-10-22 05:33:34 +0000
@@ -1251,8 +1251,15 @@ bool TryToInstall(pkgCache::PkgIterator 
       for (pkgCache::PrvIterator Prv = Pkg.ProvidesList(); Prv.end() == false; Prv++)
          *PEnd++ = Prv.OwnerPkg();
       Fix.MakeScores();
+      for (unsigned int p=0; p<Size; ++p) {
+         pkgCache::PkgIterator PrvPkg = pkgCache::PkgIterator(*Pkg.Cache(), PList[p]);
+	 fprintf(stderr, "%d %s %d\n", p, PrvPkg.Name(), Fix.Scores[PrvPkg->ID]);
+      }
       qsort(PList,PEnd - PList,sizeof(*PList),&(Fix.ScoreSort));
-
+      for (unsigned int p=0; p<Size; ++p) {
+         pkgCache::PkgIterator PrvPkg = pkgCache::PkgIterator(*Pkg.Cache(), PList[p]);
+	 fprintf(stderr, "%d %s %d\n", p, PrvPkg.Name(), Fix.Scores[PrvPkg->ID]);
+      }
       for (unsigned int p=0; p<Size; ++p)
       {
          bool instVirtual = _config->FindB("APT::Install::Virtual", false);

apt-0.5.15lorg2/cmdline $ PATH=$PWD:$PATH ~tmp/build/aptbox/apt-get --dry-run install gcc-c++
...
0 gcc4.1-c++ 0
1 gcc3.4-c++ 0
2 gcc4.3-c++ 0
0 gcc4.1-c++ 0
1 gcc3.4-c++ 0
2 gcc4.3-c++ 0
Selecting gcc4.1-c++ for 'gcc-c++'
...
apt-0.5.15lorg2/cmdline $

> Чтобы этот глюк apt'а преодолеть, достаточно добавить
> gcc4.3-c++
> в секцию Standard файла /etc/apt/pkgpriorities (или его локального
> аналога, определённого с помощью Dir::Etc::pkgpriorities).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20081022/beb725b3/attachment-0001.bin>


Подробная информация о списке рассылки Devel