Logoved: различия между версиями

Материал из ALT Linux Wiki
м (исправлена битая ссылка на upstream-ный репозиторий)
 
(не показано 8 промежуточных версий этого же участника)
Строка 3: Строка 3:


Upstream-ный репозиторий --- http://git.altlinux.org/people/viy/packages/logoved.git ;  
Upstream-ный репозиторий --- http://git.altlinux.org/people/viy/packages/logoved.git ;  
собирается в [[Sisyphus]] как пакет {{pkg|perl-Logoved-DB}}.
собирается в [[Sisyphus]] как пакет (src.rpm) {{pkg|perl-Logoved-DB}}.


__TOC__
__TOC__
Строка 11: Строка 11:
[http://0x1.tv/Система_Логовед_для_автоматизации_QA_(Игорь_Власенко,_OSSDEVCONF-2018) Доклад:(Игорь_Власенко,_OSSDEVCONF-2018) Система Логовед для автоматизации QA на 0x1.tv]
[http://0x1.tv/Система_Логовед_для_автоматизации_QA_(Игорь_Власенко,_OSSDEVCONF-2018) Доклад:(Игорь_Власенко,_OSSDEVCONF-2018) Система Логовед для автоматизации QA на 0x1.tv]


== logoved ==
Система Логовед - это набор скриптов, позволяющий облегчить разбор большого числа лог файлов
сборки пакетов с помощью hasher.


== установка logoved ==
Установите пакет {{pkg|logoved}} и, опционально, пакет {{pkg|logoved-batchfix}}.
Альтернативно, клонируйте logoved.git и запускайте скрипты там.
git clone http://git.altlinux.org/people/viy/packages/logoved.git
== Использование logoved-report для разбора лог файлов FTBFS ==
Устанавливаем пакет {{pkg|logoved}}.
Копируем в рабочий каталог лог файлы FTBFS:
rsync -avp --delete-after git.altlinux.org::beehive-logs/Sisyphus-i586/latest/error .
Запускаем утилиту
logoved-report --hardlink error
ls     
error  LOGS
Утилита {{cmd|logoved-report}} создала папку LOGS с набором подпапок, соответствующих однотипным ошибкам.
К примеру, {{path|LOGS/apt-E-package-not-found}} содержит лог файлы пакетов,
не собравшихся с диагностикой {{term|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-bugfix ==
После запуска {{cmd|logoved-report}} можно автоматически починить пакеты, для которых в базе logoved
есть готовые скрипты починки. Для этого устанавливаем пакет {{pkg|logoved-batchfix}}.
Утилита {{cmd|logoved-report}} записывает команды починки в файл {{path|LOGS/00FIXSCRIPT}}.
Утилита {{cmd|logoved-batchfix}} (симлинк на {{cmd|girar-nmu-prepare-logoved-batchfix}}) позволяет применить файл {{path|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




{{Category navigation|title=Автоматизация работы с пакетами|category=Packaging Automation}}
{{Category navigation|title=Автоматизация работы с пакетами|category=Packaging Automation}}

Текущая версия от 16:39, 8 апреля 2020


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