Пакет libcryptopp-5.6.0-alt3 на x86_64 получился нерабочим из-за ошибки https://bugzilla.altlinux.org/show_bug.cgi?id=22582 в binutils; в результате сейчас, например, amule при запуске практически сразу зависает с 100% CPU. Ошибка обнаруживается при запуске "./cryptest v" после сборки библиотеки (тест SHA256 тоже зависает либо завершается с segmentation fault); этот тест следовало бы выполнять при сборке пакета, чтобы не пропускать в Сизиф заведомо сломанные сборки. В качестве объезда до исправления binutils можно, например, добавить в config.h #define CRYPTOPP_DISABLE_X86ASM. Вот этот способ тестирования, кстати, неправильный: ./cryptest v 2>&1 | tee cryptest.log grep -qs '^FAILED' cryptest.log && exit 1 || : Проблема в том, что не обнаруживается аварийное завершение теста (например, segmentation fault), если тест не успел выдать FAILED. Нужно, например, так: ( ./cryptest v 2>&1 || printf "\nFAILED: exit %%s\n" "$?" ) | tee cryptest.log grep -qs '^FAILED' cryptest.log && exit 1 || :
Хм, с CRYPTOPP_DISABLE_X86ASM тест libcryptopp проходит, но amule при запуске падает с SIGSEGV в CryptoPP::SHA256::Transform ().
Оказывается, отключить ассемблерные реализации через CRYPTOPP_DISABLE_X86ASM в этой прекрасной библиотеке просто так нельзя, поскольку от этого у неё ломается ABI (config.h там мало того что торчит наружу, так ещё и параметры его используются в куче прочих заголовков). Так что отключение неработающего ассемблерного кода возможно только вместе с пересборкой всех клиентов (и с простановкой каких-то жёстких зависимостей на этот вариант конфигурации), либо придётся ждать исправления binutils.
(В ответ на комментарий №0) ... > Ошибка обнаруживается при запуске "./cryptest v" после сборки библиотеки (тест > SHA256 тоже зависает либо завершается с segmentation fault); этот тест > следовало бы выполнять при сборке пакета, чтобы не пропускать в Сизиф заведомо > сломанные сборки. Я пытался его выполнять, но он настолько затянулся по времени, что я не решился его включить. Возможно, у меня он тоже зависал... Хотя я на 32-битах проверял. > Проблема в том, что не обнаруживается аварийное завершение теста (например, > segmentation fault), если тест не успел выдать FAILED. Нужно, например, так: > > ( ./cryptest v 2>&1 || printf "\nFAILED: exit %%s\n" "$?" ) | tee cryptest.log > grep -qs '^FAILED' cryptest.log && exit 1 || : Спасибо, исправлю.
Ping! https://bugzilla.altlinux.org/show_bug.cgi?id=22582 в binutils давно исправлено. Поправка к коду проверки результатов теста: ( ./cryptest v 2>&1 || printf '\nFAILED: exit %%s\n' "$?" ) | tee cryptest.log grep -qs '^FAILED' cryptest.log && exit 1 || :
В Сизифе 8.5.0, о проблемах неизвестно. Тест во время сборки проходит.