Logoved
Upstream-ный репозиторий --- http://git.altlinux.org/people/viy/packages/logoved.git ;
собирается в Sisyphus как пакет (src.rpm) perl-Logoved-DB.
Введение
Доклад:(Игорь_Власенко,_OSSDEVCONF-2018) Система Логовед для автоматизации QA на 0x1.tv
Система Логовед - это набор скриптов, позволяющий облегчить разбор большого числа лог файлов сборки пакетов с помощью hasher.
установка logoved
Установите пакет logoved и, опционально, пакет logoved-batchfix. Альтернативно, клонируйте logoved.git и запускайте скрипты там.
git clone http://git.altlinux.org/people/viy/packages/logoved.git
Использование logoved-report для разбора лог файлов FTBFS
Устанавливаем пакет logoved. Копируем в рабочий каталог лог файлы FTBFS:
rsync -avp --delete-after git.altlinux.org::beehive-logs/Sisyphus-i586/latest/error .
Запускаем утилиту
logoved-report --hardlink error ls error LOGS
Утилита logoved-report создала папку LOGS с набором подпапок, соответствующих однотипным ошибкам. К примеру, LOGS/apt-E-package-not-found содержит лог файлы пакетов, не собравшихся с диагностикой E: Couldn't find package ...
Если нам не нужно разбирать все лог файлы, а только свои, поможет фильтр по acl:
logoved-report --hardlink `ls error/* | altlinux-acl-filter-list-by-access --nvr -l -u <altlinux user>`
logoved-bugfix
После запуска logoved-report можно автоматически починить пакеты, для которых в базе logoved есть готовые скрипты починки. Для этого устанавливаем пакет logoved-batchfix. Утилита logoved-report записывает команды починки в файл LOGS/00FIXSCRIPT. Утилита girar-nmu-prepare-logoved-batchfix позволяет применить файл LOGS/00FIXSCRIPT к пакетам.
girar-nmu-prepare-logoved-batchfix --changelog '- NMU: applied logoved fixes' --batch LOGS/00FIXSCRIPT --indir /ALT/Sisyphus/files/SRPMS
ls error LOGS OUT.gits OUT.SRPMS
Изменения в пакеты вносятвся в зависимости от того, как они собраны в сизиф. Если пакет собран в сизиф из gear репозитория, то в OUT.gits клонируется его git и в него вносятся изменения. Иначе в OUT.SRPMS записываются измененные src.rpm пакеты.
Заметим, что исправления, которые генерируются скриптом, хотя и в общем случае полезны, но могут и не быть достаточными для починки пакета. К примеру, для пакета FlightGear
grep FlightGear LOGS/00FIXSCRIPT FlightGear FlightGear-2018.2.2-alt1 buildrequires --add pkgconfig(bzip2)
logoved предлагает добавить в buildrequires пакета pkgconfig(bzip2). Как видно по логу сборки FlightGear, это существенное исправление
... Package bzip2 was not found in the pkg-config search path. Perhaps you should add the directory containing `bzip2.pc'
но недостаточное, чтобы починить пакет FlightGear.
Утилита logoved-grep позволяет посмотреть все ошибки, которые видит logoved:
logoved-grep error/FlightGear-2018.2.2-alt1 error/FlightGear-2018.2.2-alt1 matches conf::pkgconfig[error] in line 356: Package bzip2 was not found in the pkg-config search path. error/FlightGear-2018.2.2-alt1 matches build::compile-error[error] in line 2238: /usr/include/boost/iterator/iterator_facade.hpp:901:3: error: no type named 'type' in 'struct boost::iterators::detail::enable_if_interoperable<nasal::Hash::Iterator<true>, nasal::Hash::Iterator<false>, bool>' error/FlightGear-2018.2.2-alt1 matches build::compile-error[error] in line 3306: /usr/include/boost/iterator/iterator_facade.hpp:901:3: error: no type named 'type' in 'struct boost::iterators::detail::enable_if_interoperable<nasal::Hash::Iterator<true>, nasal::Hash::Iterator<false>, bool>' error/FlightGear-2018.2.2-alt1 matches build::compile-error[error] in line 3420: /usr/include/boost/iterator/iterator_facade.hpp:901:3: error: no type named 'type' in 'struct boost::iterators::detail::enable_if_interoperable<nasal::Hash::Iterator<true>, nasal::Hash::Iterator<false>, bool>'
Из них для ошибки типа conf::pkgconfig (Package bzip2 was not found in the pkg-config search path) в базе логовед есть исправление, а для ошибки типа build::compile-error готового исправления в базе логовед нет, надо чинить пакет руками.
Далее, измененные пакеты нужно проверить на собираемость, к примеру, так:
ls OUT.gits | sed 's,\.git$,,' | sort > names.gits ls OUT.SRPMS | sort > names.srpms sort names.srpms names.gits > names
girar-nmu-local-build `cat names` -- hsh $TMP/hasher1 --number 1 --apt-config=/etc/apt/apt.conf.SS --with-stuff \ --mountpoints=/proc --packager="Igor Vlasenko <viy@altlinux.ru>" > local-build.log
[Если пакет после исправления все еще не собирается, его можно опять проверить logoved'ом. В autoimports отдельные пакеты приходили в собираемое состояние после десятка итераций обработки logoved'ом.]
и собирающиеся пакеты отправить в Сизиф, к примеру, так:
cd OUT.gits/cockpit.git girar-build-git
girar-build-srpm OUT.SRPMS/foo/foo-1.0-alt1.src.rpm