<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>16550</bug_id>
          
          <creation_ts>2008-08-05 12:02:37 +0400</creation_ts>
          <short_desc>единые плагины с sisyphus_check</short_desc>
          <delta_ts>2008-09-13 14:58:43 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>repocop</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>15376</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="inger@altlinux.org">inger</reporter>
          <assigned_to name="viy">viy</assigned_to>
          <cc>cronport</cc>
    
    <cc>dottedmag</cc>
    
    <cc>evg</cc>
    
    <cc>ldv</cc>
    
    <cc>legion</cc>
    
    <cc>viy</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>74817</commentid>
    <comment_count>0</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2008-08-05 12:02:37 +0400</bug_when>
    <thetext>В Сизифе есть две системы проверки пакетов: sisyphus_check и repocop. Понятно что основной &quot;движитель&quot; каждого из проектов работает в разной среде и занимается немного разнымим задачами, но вот сами проверки сильно пересекаются. Очень приятно было бы при попадании пакета в incoming проверять его по тем же параметрам, по которым потом его проверяют уже в репозитарии.

А посему.

Я предлагаю сделать единый формат &quot;тестов&quot; между sisyphus_check и repocop.
Единственное пожелание, чтобы &quot;тесты&quot; можно было писать на shell, а остальное - не важно.

Со стороны sisyphus_check думаю не будет препятствий. Добавляю в CC legion и ldv.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74880</commentid>
    <comment_count>1</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-05 21:09:37 +0400</bug_when>
    <thetext>гм. для начала вопрос по sisyphus_check.
он что, не использует содержимое пакета, а только 
значения полей в RPM header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74881</commentid>
    <comment_count>2</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-05 21:11:27 +0400</bug_when>
    <thetext>также хочу ясно понимать. 
какие внешние данные/ресурсы нужны sisyphus_check для выполнения?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74898</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2008-08-06 02:00:25 +0400</bug_when>
    <thetext>(In reply to comment #1)
&gt; он что, не использует содержимое пакета, а только 
&gt; значения полей в RPM header?

Тот sisyphus_check, что, возможно, стоит у вас в системе использует только их. Остальные компоненты использовать в хост системе не безопасно.

(In reply to comment #2)
&gt; также хочу ясно понимать. 
&gt; какие внешние данные/ресурсы нужны sisyphus_check для выполнения?

Никаких, кроме rpm и базовых утилит... даже утилита file не используется из-за небезопасности.

То что делает sisyphus_check в хост системе не важно. sisyphus_check сейчас расширяется проверками. Интерфейс очень прост. Можно сделать пакет, который добавляет к стандартным проверкам ещё и проверки из repocop.

Вот только вопрос, насколько эти дополнительные проверки будут безопасны и можно ли использовать их для пакетов, в котором есть зловредный код.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74900</commentid>
    <comment_count>4</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-06 08:12:12 +0400</bug_when>
    <thetext>понял, спасибо.

&gt; Можно сделать пакет, который добавляет к
&gt; стандартным проверкам ещё и проверки из repocop.

В действительности сейчас их проще при необходимости портировать
(т.е. переписывать заново :().

например, вот тест, который я вчера добавил:
-----
#!/bin/sh
sqlite3 &quot;$REPOCOP_TEST_TMPDIR/tmp.db&quot; &lt;&lt;EOSQL
attach database &apos;$REPOCOP_TEST_DBDIR/rpm.db&apos; as rpm;
.mode tabs
.output $REPOCOP_TEST_TMPDIR/msg
select distinct rpm_requires.pkgid from rpm_requires where requirename glob &apos;j2se*&apos;;
EOSQL
for i in `cat $REPOCOP_TEST_TMPDIR/msg`; do repocop-test-warn -k $i &quot;Old java provides of j2se-* are deprecated and can be removed any time. Please, use Requires: java (&gt;= version) syntax.&quot;; done
rm $REPOCOP_TEST_TMPDIR/*
-----------------------
переписывается для sisyphus_check он очевидным образом,
но пускать его как есть бессмысленно: он тянет за собой sqlite.

отсюда вывод: задача сделать пакет, который добавляет к
стандартным проверкам ещё и проверки из repocop, некорректна
из-за существенной разницы в требованиях к ним.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74901</commentid>
    <comment_count>5</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-06 08:17:57 +0400</bug_when>
    <thetext>&gt; Можно сделать пакет, который добавляет к
&gt; стандартным проверкам ещё и проверки из repocop.

на мой взгляд, осмысленна обратная задача:
пускать sisyphus_check через repocop.

IMHO, следующая ситуация имеет смысл:
Допустим написана новая проверка под sisyphus_check.
Тогда прогнав ее под repocop, получим
список пакетов, затронутых проверкой, 
майнтайнеры могут посмотреть новый тест заранее
и высказаться за или против переноса его в основной набор тестов.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75118</commentid>
    <comment_count>6</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-08 21:56:55 +0400</bug_when>
    <thetext>я написал пускатель sisyphus_check под repocop.

Первый вывод - не все тесты надо запускать.
вот типичный пример.

$ sisyphus_check --verbose --files /home/repocop/Sisyphus/files/noarch/RPMS/pngbook-1.0-alt1.noarch.rpm
/home/repocop/Sisyphus/files/noarch/RPMS/pngbook-1.0-alt1.noarch.rpm: rpmsign failed
sisyphus_check: check-gpg ERROR: package signatures violation
grep: /usr/lib/rpm/*-files.req.list: No such file or directory

check-gpg был явно лишний.

подводя итоги:

похоже sisyphus_check надо серьезно порезать.
тесты нужно выделить отдельно, и не в один пакет, а 
хотя бы в 3:

tests-genertic
общего характера 
(например, могут применяться в Etersoft для проверки своих приватных пакетов)

tests-sisyphus
sisyphus specific

tests-experimental
(не запускаются в incoming)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75122</commentid>
    <comment_count>7</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-08 22:13:51 +0400</bug_when>
    <thetext>сильно захламлен результат :(
[repocop@repocop by-test]$ wc -l sisyphus_check.txt 
310 sisyphus_check.txt
[repocop@repocop by-test]$ grep -v gpg sisyphus_check.txt  | wc -l
48
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75132</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2008-08-09 00:34:30 +0400</bug_when>
    <thetext>(In reply to comment #6)
&gt; я написал пускатель sisyphus_check под repocop.
&gt; 
&gt; Первый вывод - не все тесты надо запускать.
&gt; вот типичный пример.

Все проверки в sisyphus_check обязательны к исполнению. Это базовый инструмент и должен работать всегда. Даже если пакет будет разделён, то утилита будет требовать все подпакеты. Тогда зачем делить?

Если есть в этом пакете есть баги, то их нужно исправлять.

&gt; check-gpg был явно лишний.

Почему лишний? Все пакеты должны быть подписаны.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75133</commentid>
    <comment_count>9</comment_count>
    <who name="Mikhail Gusarov">dottedmag</who>
    <bug_when>2008-08-09 00:38:26 +0400</bug_when>
    <thetext>Тут тонкость в том, что есть как технология Sisyphus, так и репозиторий Sisyphus, и непонятно, к чему sisyphus в sisyphus_check относится.

Если к технологии, то часть тестов опциональная. Если к репозиторию - то все обязательны.

Так что вопрос можно переформулировать: сделать отдельный НЕСИЗИФ-check, в который войдёт всё, что не относится к проверкам, интересным исключительно в контексте incoming (скажем, проверка buildhost или майнтайнерского мыла), и sisyphus_check, в который войдут проверки НЕСИЗИФ-check и дополнительные, инкамингерские.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75134</commentid>
    <comment_count>10</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-09 00:40:34 +0400</bug_when>
    <thetext>(In reply to comment #9)
+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75135</commentid>
    <comment_count>11</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-09 00:42:37 +0400</bug_when>
    <thetext>&gt; &gt; check-gpg был явно лишний.
&gt; Почему лишний? Все пакеты должны быть подписаны.

Пакет то в Сизифе :) 
Значит, он подписан. Просто ключ устарел, наверное...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75136</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2008-08-09 00:55:19 +0400</bug_when>
    <thetext>(In reply to comment #9)
&gt; Если к технологии, то часть тестов опциональная. Если к репозиторию - то все
&gt; обязательны.

Как я уже говорил, все проверки должны проходить для пакета, направленного в сизиф. Он относится к репозитрию. 

(In reply to comment #11)
&gt; Значит, он подписан. Просто ключ устарел, наверное...

Это бага в пакете alt-gpgkeys. Раньше у нас не было полиси (кстати, сейчас тоже нет) по удалению из репозиторию пакетов, которые не поддерживаются и не чинятся под новые проверки (читайте: правила репозитория).
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75137</commentid>
    <comment_count>13</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-09 01:02:05 +0400</bug_when>
    <thetext>IMHO, предмет обсуждения пересекся с #15376 от Etersoft</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75146</commentid>
    <comment_count>14</comment_count>
    <who name="viy">viy</who>
    <bug_when>2008-08-09 13:04:19 +0400</bug_when>
    <thetext>в общем, я выкрутился с текущим sisyphus_check:
sisyphus_check --no-check-gpg --no-check-buildhost --no-check-buildtime
</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>