Re: Noarch subpackage problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Toshio Kuratomi wrote:
So we had a discussion on IRC today about the failure cases of noarch
subpackages.  I think we should make some changes to the way we check
that noarch subpackages are sane.

Currently, when a noarch subpackage is built, rpmdiff is run on the
noarch packages that were built by each builder.

Of the checks that rpmdiff does, we discard all of them except Provides,
Requires, and the list of files.  My concern is that if you throw out
md5sum and filesize in these checks there's a lot of margin for creating
subpackages that are not actually noarch.

Actually the full list of tags we diff are:

name
summary
description
group
license
url
prein (script)
postin (script)
preun (script)
postun (script)

For Requires, Provides, Conflicts, and Obsoletes we check that the lists (including versions) are identical across all subpackages.

We verify that that file lists are identical across all subpackages, and for each file in the file lists we verify that the following attributes are identical:

mode
flags
nlink
state
vflags
user
group

For instance, if bitedness ends up in include files that are placed in a
noarch subpackage, those subpackages won't be caught by this check.
That would allow a package to go out that could prevent building with
the incorrect header.

The reason that filesize and md5sum are discarded is that
arch-inspecific files can have timestamps embedded into them at build
time.  This means, for instance, that documentation can differ between
builds of a subpackage despite it being a prime candidate for a noarch
subpackage.

An idea for a change would be to extend rpmdiff to be able to list
changes in md5sum between all files except those marked as %doc.  This
would let documentation packages through even if timestamps were
embedded but not let a noarch package with differing headers through,
for instance.

Another class of files that are noarch-but-different are .pyc/.pyo files, as Julian Sikorski found out:

https://www.redhat.com/archives/fedora-devel-list/2009-February/msg01826.html

Issues like this, where files differed because of embedded timestamps/hostnames/etc. but were not different in any meaningful way came up during testing of this feature. As a result it was decided to not fail a build due to differences in file size, digest, or mtime because this would have resulted in a lot of false positives, and significantly reduced the usability and usefulness of this feature.

The automated checks are not a replacement for diligent package review and testing, they are there to help package maintainers catch silly mistakes and oversights. What we have now is a good balance between catching those oversights and not burdening maintainers with a huge number of false positives that (as in the python case above) they are unable to do anything about and thus unable to make use of this feature.

Note that this feature is in no way more dangerous or prone to error than the existing method of creating noarch subpackages (extra-arches).

--
fedora-devel-list mailing list
fedora-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-devel-list

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux