rawhide missed an implicit dependency for #!python

Panu Matilainen pmatilai at laiskiainen.org
Sat Jun 11 07:15:31 UTC 2011

On 06/11/2011 12:14 AM, Kevin Fenzi wrote:
> On Fri, 10 Jun 2011 13:59:18 +0300
> Panu Matilainen<pmatilai at laiskiainen.org>  wrote:
>> On 06/10/2011 02:28 AM, Josh Stone wrote:
>>> On 06/02/2011 01:26 PM, Josh Stone wrote:
>>>> Our dtrace script in systemtap-sdt-devel starts
>>>> "#!/usr/bin/python". Usually this leads to an implicit
>>>> "Requires: /usr/bin/python", but for some reason our rawhide build
>>>> did not get this.  The F15, F14, and F13 builds from the same spec
>>>> required python as expected.
>>> [...]
>>>> Is this a bug?  Or must we now explicitly require python?
>>> An output change in file-5.07 appears to have broken find-requires:
>>> https://bugzilla.redhat.com/show_bug.cgi?id=712251
>>> And since file-5.07-2.fc15 is now in updates, I would expect this to
>>> cause even more problems going forward.
>> Fixed now in rawhide rpm and an update for F15 is here:
>> https://admin.fedoraproject.org/updates/rpm-4.9.0-9.fc15
>> Please help testing to get this nasty regression fixed ASAP.
>> ALL packages containing scripts which have been built while file-5.07
>> has been in rawhide (since May 11th)&  F15 (in updates-testing since
>> May 23rd) are affected and will have missing dependencies because of
>> this, requiring rebuilds to correct the situation.
>> Thanks Josh for reporting this, and also apologies for missing your
>> initial mail on the subject, reacting then would've saved a week's
>> worth of broken builds :-/
> Is there a way we can generate a list of builds affected?
> Is it everything? Or things that only have a specific type of requires?

Every package which contains one or more script files starting with 
#!/some/interpreter is affected (%pre etc scriptlets are not affected 
though). And all the missing dependencies are file-dependencies, eg 
/usr/bin/python, /bin/sh etc.

This can't be detected from repodata, but the actual rpm headers carry 
enough data to fairly reliably spot these: executable files (from 
%{FILEMODES}) whose %{FILECLASS} contains "script" but does not have 
%{FILEREQUIRE} (to its interpreter) means the package is missing 

The above works for packages built with the internal dependency 
generator, for the others:

a) packages using the Fedora specific dependency filtering macros (large 
percentage of perl-packages at least)
b) packages directly setting %_use_internal_dependency_generator to 0

...it can't be detected from the metadata alone and would require 
unpacking the rpm and examining executable files. I'll be mostly AFK 
through the rest of the weekend but I can try scripting it up for the 
part that can be automated on Monday.

In the meanwhile if you know your package contains executable scripts 
and was built within the last month (for rawhide), it will need a rebuild.

	- Panu -

More information about the devel mailing list