On Sun, Mar 14, 2004 at 10:56:04AM +0200, Michael Shigorin wrote: > PPS: да, и еще: > > . %_usrsrc/linux-%kversion-%flavour/gcc_version.inc > > -- тоже не отрабатывает, явно не хватает зависимосит на что-то -- > или схема изменилась? Это новый вариант указания версии компилятора, который, как обычно, не успели описать в документации :) Теперь подход следующий: - Макросы %kgcc и т.п. больше не используются (поскольку 2.4 и 2.6 сейчас собираются разными компиляторами, единый макрос, определённый в kernel-build-tools, не годится). - В пакете kernel-headers-modules-%flavour добавляется зависимость на соответствующую версию компилятора (т.е. gcc2.96 или gcc3.3). Этот пакет становится обязательным для сборки дополнительных модулей к ядру (раньше некоторые пакеты kernel-modules-* собирались без него, теперь такой вариант не пройдёт). - В том же пакете kernel-headers-modules-%flavour добавляется файл %_usrsrc/linux-%kversion-%flavour/gcc_version.inc, содержащий информацию о версии компилятора: export GCC_VERSION=%kgcc_version (естественно, подставляется реальное значение, использованное при сборке ядра). Кроме того, в Makefile ядра добавляется строка include gcc_version.inc - в результате все модули, собираемые через Makefile ядра, будут автоматически собираться нужной версией gcc. - Из пакетов kernel-modules-* убираются все зависимости на версию компилятора - при сборке нужная версия вытянется пакетом kernel-headers-modules-%flavour (если ранее этого пакета не было в BuildRequires, его нужно добавить). Если сборка выполняется через Makefile ядра, ничего для выбора версии делать не надо. Если же модуль использует собственный makefile, необходимо явно вписать в spec: . %_usrsrc/linux-%kversion-%flavour/gcc_version.inc В простейшем случае этого достаточно. В некоторых случаях (ltmodem, pctel) такой вариант не проходит (сборочные скрипты используют GCC_VERSION для своих целей), тогда приходится использовать CC="gcc-$GCC_VERSION" и убирать GCC_VERSION из окружения.