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

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

    <bug>
          <bug_id>32900</bug_id>
          
          <creation_ts>2016-12-16 15:56:53 +0300</creation_ts>
          <short_desc>no attribute &apos;headerFromPackage&apos;</short_desc>
          <delta_ts>2020-06-20 01:14:28 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>distrodb-utils</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>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>38602</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan Zakharyaschev">imz</reporter>
          <assigned_to name="viy">viy</assigned_to>
          <cc>glebfm</cc>
    
    <cc>viy</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>160841</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2016-12-16 15:56:53 +0300</bug_when>
    <thetext>distrodb-utils-0.10-alt1.noarch
python-module-rpm-4.13.0-alt4.x86_64
rpm-4.13.0-alt4.x86_64


$ distrodb-helper-mkdistrodb
processing rpms in dir ./repo_nct/custom/packages...
processing rpms in dir ./repo_nct/epel/packages...
processing rpms in dir ./repo_nct/fsapi/packages...
processing rpms in dir ./repo_nct/others/packages...
processing rpms ...
processing rpm ./repo_nct/custom/packages/perl-URI-Escape-XS-0.13-1.el7.x86_64.rpm...
Traceback (most recent call last):
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 401, in &lt;module&gt;
    process_args(distrodb,srpm_filter,sys.argv[1:])
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 315, in process_args
    process_raw_rpms(rawrpm,srpm_filter)
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 141, in process_raw_rpms
    (header, isSource)=readRpmHeader(rpmfile)
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 134, in readRpmHeader
    (header, isSource) = rpm.headerFromPackage(fd)
AttributeError: &apos;module&apos; object has no attribute &apos;headerFromPackage&apos;
$</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160843</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2016-12-16 16:01:55 +0300</bug_when>
    <thetext>commit 5211039a20762b4a50c006ccf79666bff34967c2
Author: jbj &lt;devnull@localhost&gt;
Date:   Mon Aug 5 21:46:50 2002 +0000

    - python: the death of rpmdb-py.[ch], use ts.fooDB() methods instead.
    - python: the death of rpm.headerFromPackage(), use ts.hdrFromFdno().
    - python: permit direct ts.dbMatch() python iterations.
    - python: the death of rpm.checksig(), use ts.hdrFromFdno() instead.
    
    CVS patchset: 5603
    CVS date: 2002/08/05 21:46:50</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160849</commentid>
    <comment_count>2</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2016-12-16 20:25:06 +0300</bug_when>
    <thetext>See also http://git.altlinux.org/gears/a/apt-printchanges.git?p=apt-printchanges.git;a=commitdiff;h=1701076e4baaf5e1ca140996b53ab90891827be0 :


From 1701076e4baaf5e1ca140996b53ab90891827be0 Mon Sep 17 00:00:00 2001
From: Gleb Fotengauer-Malinovskiy &lt;glebfm@altlinux.org&gt;
Date: Wed, 14 Dec 2016 20:24:04 +0300
Subject: [PATCH] apt-printchanges: fix for new python-module-rpm

The older method rpm.headerFromPackage() has been replaced by
ts.hdrFromFdno().
---
 apt-printchanges |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/apt-printchanges b/apt-printchanges
index 6cc661e..e75861d 100755
--- a/apt-printchanges
+++ b/apt-printchanges
@@ -30,7 +30,8 @@ def getHeaders(filename):
     &quot;&quot;&quot;
     try:
         with open(filename) as f:
-            (headers, _) = rpm.headerFromPackage(f.fileno())
+            ts = rpm.TransactionSet()
+            headers = ts.hdrFromFdno(f.fileno())
             Name = headers[rpm.RPMTAG_NAME]
             Author = headers[rpm.RPMTAG_CHANGELOGNAME][0]
             ChangelogEntry = headers[rpm.RPMTAG_CHANGELOGTEXT][0]
-- 
1.7.3.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160894</commentid>
    <comment_count>3</comment_count>
    <who name="viy">viy</who>
    <bug_when>2016-12-17 20:26:11 +0300</bug_when>
    <thetext>Спасибо!
Я сейчас не возьмусь чинить, так как закончить хочу java и python,
а потом сяду сразу за все подобные задачи, сязяанные с новым rpm.

Пока по возможности попробуйте запустить на p8, например, на ноутбуке,
который у Миши Шигорина для тестирования образов.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162856</commentid>
    <comment_count>4</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2017-03-30 17:39:03 +0300</bug_when>
    <thetext>distrodb-utils-0.11-alt1 -&gt; sisyphus:

* Thu Mar 30 2017 Ivan Zakharyaschev &lt;imz@altlinux&gt; 0.11-alt1
- Adapted to the new RPM (&gt;= 4.13) Python API (ALT#32900),
  introduced in commit 5211039a20762b4a50c006ccf79666bff34967c2
  Author: jbj Date: Mon Aug 5 21:46:50 2002 +0000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162857</commentid>
    <comment_count>5</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-03-30 17:44:49 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; distrodb-utils-0.11-alt1 -&gt; sisyphus:
&gt; 
&gt; * Thu Mar 30 2017 Ivan Zakharyaschev &lt;imz@altlinux&gt; 0.11-alt1
&gt; - Adapted to the new RPM (&gt;= 4.13) Python API (ALT#32900),
&gt;   introduced in commit 5211039a20762b4a50c006ccf79666bff34967c2
&gt;   Author: jbj Date: Mon Aug 5 21:46:50 2002 +0000

Отправил свой коммит поверх Вашего Git upstream в /gears/ -- чтобы коммит не потерялся. (А не из вредности.)

Кажется, нет смысла в такой ситуации делать NMU в виде srpm, когда есть Git upstream repo у мейнтейнера пакета, а сборка делается через srpm. Из /gears/ Вы сможете взять настоящий мой коммит (и не забыть) и при желании продолжить дальше собирать srpm-ы. А при сборке NMU через srpm потребовалось бы дополнительное согласование и напоминание.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162858</commentid>
    <comment_count>6</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-03-30 18:00:02 +0300</bug_when>
    <thetext>Спасибо!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162859</commentid>
    <comment_count>7</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-03-30 18:02:34 +0300</bug_when>
    <thetext>только этот код в p8 будет работать?
там проверяется версия rpm/python-rpm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162862</commentid>
    <comment_count>8</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-03-30 18:11:26 +0300</bug_when>
    <thetext>(In reply to comment #7)
&gt; только этот код в p8 будет работать?
&gt; там проверяется версия rpm/python-rpm?

В p8 не будет. Но он формально не пройдёт в p8, потому что я поставил в spec-е:

# The new API appears to be incompatible with the old one
Requires: python-module-rpm &gt;= 4.13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162863</commentid>
    <comment_count>9</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-03-30 18:15:24 +0300</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; только этот код в p8 будет работать?
&gt; &gt; там проверяется версия rpm/python-rpm?
&gt; 
&gt; В p8 не будет. Но он формально не пройдёт в p8, потому что я поставил в spec-е:
&gt; 
&gt; # The new API appears to be incompatible with the old one
&gt; Requires: python-module-rpm &gt;= 4.13

Есть, конечно, вероятность, что этот новый интерфейс был раньше (ещё до удаления старого какое-то время), но я не проверял, есть ли он в p8. Посчитал, что это очень маловероятно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162864</commentid>
    <comment_count>10</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-03-30 18:18:53 +0300</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; только этот код в p8 будет работать?
&gt; &gt; &gt; там проверяется версия rpm/python-rpm?
&gt; &gt; 
&gt; &gt; В p8 не будет. Но он формально не пройдёт в p8, потому что я поставил в spec-е:
&gt; &gt; 
&gt; &gt; # The new API appears to be incompatible with the old one
&gt; &gt; Requires: python-module-rpm &gt;= 4.13
&gt; 
&gt; Есть, конечно, вероятность, что этот новый интерфейс был раньше (ещё до
&gt; удаления старого какое-то время), но я не проверял, есть ли он в p8. Посчитал,
&gt; что это очень маловероятно.

Проверил в исходниках нашего rpm 4.0.4 -- нового ещё API нет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162865</commentid>
    <comment_count>11</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-03-30 18:22:00 +0300</bug_when>
    <thetext>ок. Я позже попробую написать проверку,
чтобы работало на всех python-rpm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162868</commentid>
    <comment_count>12</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-03-30 20:22:09 +0300</bug_when>
    <thetext>А теперь ещё такая неприятность может случиться (я так понимаю, если пакет подписан, но ключа нет):

processing rpms ...
processing rpm repo_nct/ipvsadm-1.27-7.el7.x86_64.rpm...
warning: /........../ipvsadm-1.27-7.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
Traceback (most recent call last):
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 402, in &lt;module&gt;
    process_args(distrodb,srpm_filter,sys.argv[1:])
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 316, in process_args
    process_raw_rpms(rawrpm,srpm_filter)
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 142, in process_raw_rpms
    (header, isSource)=readRpmHeader(rpmfile)
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 135, in readRpmHeader
    header = ts.hdrFromFdno(fd)
  File &quot;/usr/lib64/python2.7/site-packages/rpm/transaction.py&quot;, line 171, in hdrFromFdno
    raise rpm.error(&quot;public key not available&quot;)
_rpm.error: public key not available</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162869</commentid>
    <comment_count>13</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2017-03-30 20:24:13 +0300</bug_when>
    <thetext>А теперь ещё такая неприятность может случиться (я так понимаю, если пакет
подписан, но ключа нет):

processing rpms ...
processing rpm ........./ipvsadm-1.27-7.el7.x86_64.rpm...
warning: /........../ipvsadm-1.27-7.el7.x86_64.rpm: Header V4 DSA/SHA1
Signature, key ID 192a7d7d: NOKEY
Traceback (most recent call last):
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 402, in &lt;module&gt;
    process_args(distrodb,srpm_filter,sys.argv[1:])
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 316, in process_args
    process_raw_rpms(rawrpm,srpm_filter)
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 142, in process_raw_rpms
    (header, isSource)=readRpmHeader(rpmfile)
  File &quot;/usr/bin/pkglist2distrodb.py&quot;, line 135, in readRpmHeader
    header = ts.hdrFromFdno(fd)
  File &quot;/usr/lib64/python2.7/site-packages/rpm/transaction.py&quot;, line 171, in
hdrFromFdno
    raise rpm.error(&quot;public key not available&quot;)
_rpm.error: public key not available</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162921</commentid>
    <comment_count>14</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-04-01 18:36:16 +0300</bug_when>
    <thetext>у меня эта проблема вылезла в perl-RPM,
я ее решил так (код содрал с rpm2cpio в rpm4.13)
http://git.altlinux.org/people/viy/packages/?p=perl-RPM.git;a=commitdiff;h=a383fe272ed1694d4bce6fd466159238883be9bb</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>