Bug 1106478 - Rebuild without Version update
Summary: Rebuild without Version update
Status: NEW
Alias: None
Product: openSUSE.org
Classification: openSUSE
Component: BuildService (show other bugs)
Version: unspecified
Hardware: x86-64 SLES 12
: P5 - None : Critical (vote)
Target Milestone: ---
Assignee: Zejin Xu
QA Contact: Adrian Schröter
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-08-29 20:17 UTC by Sebastian Sonne
Modified: 2024-01-09 13:58 UTC (History)
2 users (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sebastian Sonne 2018-08-29 20:17:42 UTC
The devel:languages:python project (or at least parts of it) have experienced a rebuild of the packages without a bump of the version number. As we use this repository in Pulp (which also stages repositories), this led to mismatches between the packages and their checksums. Besides that it also goes against best practices. This should never happen, as any change to a package which results in a different checksum should also result in a higher package version (even if just epoch), but NEVRA seems to be partially ignored by the project as well.

I hereby request the adherence to NEVRA and established best practices.

Before the rebuild:

<package type="rpm">
  <name>python-pyparsing</name>
  <arch>noarch</arch>
  <version epoch="0" rel="1.4" ver="2.2.0" />
  <checksum pkgid="YES" type="sha256">443ce7c1a7a6c1dd9d2559bf045be8e11c28f951f4ab2336fbc83a53ee667a4f</checksum>
  <summary>Grammar Parser Library for Python</summary>
  <description>The pyparsing module is an alternative approach to creating and executing
simple grammars, vs. the traditional lex/yacc approach, or the use of regular
expressions. The pyparsing module provides a library of classes that client
code uses to construct the grammar directly in Python code.</description>
  <packager />
  <url>http://pyparsing.wikispaces.com/</url>
  <time build="1523550890" file="1523550908" />
  <size archive="790600" installed="788413" package="150209" />
  <location href="Packages/p/python-pyparsing-2.2.0-1.4.noarch.rpm"/>
  <format>
    <rpm:license>MIT and GPL-2.0+ and GPL-3.0+</rpm:license>
    <rpm:vendor>obs://build.opensuse.org/devel:languages:python</rpm:vendor>
    <rpm:group>Development/Languages/Python</rpm:group>
    <rpm:buildhost>obs-power8-05</rpm:buildhost>
    <rpm:sourcerpm>python-pyparsing-2.2.0-1.4.src.rpm</rpm:sourcerpm>
    <rpm:header-range end="33480" start="440" />
    <rpm:provides>
      <rpm:entry epoch="0" flags="EQ" name="python-parsing" ver="2.2.0" />
      <rpm:entry epoch="0" flags="EQ" name="python-pyparsing" rel="1.4" ver="2.2.0" />
      <rpm:entry epoch="0" flags="EQ" name="python2-pyparsing" rel="1.4" ver="2.2.0" />
    </rpm:provides>
    <rpm:requires>
      <rpm:entry epoch="0" flags="EQ" name="python(abi)" ver="2.7" />
      <rpm:entry name="python-base" />
    </rpm:requires>
    <rpm:obsoletes>
      <rpm:entry epoch="0" flags="LT" name="python-parsing" ver="2.2.0" />
    </rpm:obsoletes>
  </format>
</package>

After the rebuild:

<package type="rpm">
  <name>python-pyparsing</name>
  <arch>noarch</arch>
  <version epoch="0" rel="1.4" ver="2.2.0" />
  <checksum pkgid="YES" type="sha256">f0cb17cd16db6711cfc6a746fbe5bdf09fab61a516326b72b48270219174b332</checksum>
  <summary>Grammar Parser Library for Python</summary>
  <description>The pyparsing module is an alternative approach to creating and executing
simple grammars, vs. the traditional lex/yacc approach, or the use of regular
expressions. The pyparsing module provides a library of classes that client
code uses to construct the grammar directly in Python code.</description>
  <packager />
  <url>http://pyparsing.wikispaces.com/</url>
  <time build="1523554579" file="1523554593" />
  <size archive="790600" installed="788413" package="150252" />
  <location href="Packages/p/python-pyparsing-2.2.0-1.4.noarch.rpm"/>
  <format>
    <rpm:license>MIT and GPL-2.0+ and GPL-3.0+</rpm:license>
    <rpm:vendor>obs://build.opensuse.org/devel:languages:python</rpm:vendor>
    <rpm:group>Development/Languages/Python</rpm:group>
    <rpm:buildhost>lamb10</rpm:buildhost>
    <rpm:sourcerpm>python-pyparsing-2.2.0-1.4.src.rpm</rpm:sourcerpm>
    <rpm:header-range end="33464" start="440" />
    <rpm:provides>
      <rpm:entry epoch="0" flags="EQ" name="python-parsing" ver="2.2.0" />
      <rpm:entry epoch="0" flags="EQ" name="python-pyparsing" rel="1.4" ver="2.2.0" />
      <rpm:entry epoch="0" flags="EQ" name="python2-pyparsing" rel="1.4" ver="2.2.0" />
    </rpm:provides>
    <rpm:requires>
      <rpm:entry epoch="0" flags="EQ" name="python(abi)" ver="2.7" />
      <rpm:entry name="python-base" />
    </rpm:requires>
    <rpm:obsoletes>
      <rpm:entry epoch="0" flags="LT" name="python-parsing" ver="2.2.0" />
    </rpm:obsoletes>
  </format>
</package>

Due to NEVRA, both packages are seen as the same, although they are clearly not.
Comment 2 Adrian Schröter 2019-05-03 08:00:49 UTC
OBS is always increasing build numbers on rebuild, but you can trick him as a packager (eg. by removing container and readding it) or overwrite it in sources.

Sorry, not my job until someone has a reproducer that OBS is really doing something wrong here.
Comment 3 Andreas Schwab 2024-01-09 13:58:10 UTC
It wasn't a rebuild, but coming from a different arch in the same repository (a noarch package is still built for all archs separately).

    <rpm:buildhost>obs-power8-05</rpm:buildhost>

    <rpm:buildhost>lamb10</rpm:buildhost>