Logoved: различия между версиями
(не показано 7 промежуточных версий этого же участника) | |||
Строка 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] | ||
Система Логовед - это набор скриптов, позволяющий облегчить разбор большого числа лог файлов | |||
сборки пакетов с помощью 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 . | rsync -avp --delete-after git.altlinux.org::beehive-logs/Sisyphus-i586/latest/error . | ||
Запускаем утилиту | |||
logoved-report --hardlink 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