Logoved

Материал из ALT Linux Wiki
Перейти к навигации Перейти к поиску


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. Утилита logoved-batchfix (симлинк на 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

После того, как утилита отработала, видим две новые папки 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