Ask Your Question
0

rpm auto dependency failing

asked 2013-04-12 16:54:32 -0500

seandarcy gravatar image

updated 2013-04-12 20:43:10 -0500

FranciscoD_ gravatar image

I'm building ffmpeg

%{__make} %{?_smp_mflags}

%install
%{__rm} -rf %{buildroot} _docs
make install DESTDIR=%{buildroot} prefix=/usr libdir=%{_libdir}
%{__mkdir_p} %{buildroot}%{_datadir}/ffmpeg/
install -m 644  presets/*.ffpreset  %{buildroot}%{_datadir}/ffmpeg/
%post
/sbin/ldconfig
chcon -t textrel_shlib_t %{_libdir}/libav{codec,format,util}.so.*.*.* \
    &>/dev/null || :

%postun -p /sbin/ldconfig

%post libpostproc -p /sbin/ldconfig

%postun libpostproc -p /sbin/ldconfig

%files
%defattr(-, root, root, 0755)
%doc Changelog CREDITS README
%{_bindir}/ffmpeg
%{_bindir}/ffplay
%{_bindir}/ffprobe
%{_bindir}/ffserver
%{_libdir}/*.so.*
%exclude %{_libdir}/libpostproc.so*
%{_datadir}/ffmpeg/examples/*
%{_datadir}/ffmpeg/ffprobe.xsd
%{_datadir}/ffmpeg/libx264-*.ffpreset
%{_datadir}/ffmpeg/libvpx-*.ffpreset
%exclude %{_mandir}/man1/*

%files devel
%defattr(-, root, root, 0755)
%doc _docs/*
%{_includedir}/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc
%exclude %{_libdir}/pkgconfig/libpostproc.pc

The so version of the main libraries is 55.
ls -l /home/video/rpmbuild/BUILDROOT/ffmpeg-1.2.1-0.20130411.x86_64/usr/lib64/*

-rw-r--r--. 1 video video 13261718 Apr 12 17:33 libavcodec.a
lrwxrwxrwx. 1 video video       22 Apr 12 17:33 libavcodec.so -> libavcodec.so.55.2.100
lrwxrwxrwx. 1 video video       22 Apr 12 17:33 libavcodec.so.55 -> libavcodec.so.55.2.100
-rwxr-xr-x. 1 video video 10137360 Apr 12 17:33 libavcodec.so.55.2.100
-rw-r--r--. 1 video video   125602 Apr 12 17:33 libavdevice.a
lrwxrwxrwx. 1 video video       23 Apr 12 17:33 libavdevice.so -> libavdevice.so.55.0.100
lrwxrwxrwx. 1 video video       23 Apr 12 17:33 libavdevice.so.55 -> libavdevice.so.55.0.100
-rwxr-xr-x. 1 video video    75672 Apr 12 17:33 libavdevice.so.55.0.100
-rw-r--r--. 1 video video  1622876 Apr 12 17:33 libavfilter.a
lrwxrwxrwx. 1 video video       23 Apr 12 17:33 libavfilter.so -> libavfilter.so.3.53.100
lrwxrwxrwx. 1 video video       23 Apr 12 17:33 libavfilter.so.3 -> libavfilter.so.3.53.100
-rwxr-xr-x. 1 video video   925784 Apr 12 17:33 libavfilter.so.3.53.100
-rw-r--r--. 1 video video  3079198 Apr 12 17:33 libavformat.a
lrwxrwxrwx. 1 video video       23 Apr 12 17:33 libavformat.so -> libavformat.so.55.2.100
lrwxrwxrwx. 1 video video       23 Apr 12 17:33 libavformat.so.55 -> libavformat.so.55.2.100
-rwxr-xr-x. 1 video video  1486768 Apr 12 17:33 libavformat.so.55.2.100

The old so version was 54. I've made sure none of the old libraries are around:

[video@sixcore lib64]$ locate libav | grep lib64 | grep 54
[video@sixcore lib64]$

BUT rpm insists that both the OLD so version and the new is required for the new package:

rpm -qp --requires ffmpeg-devel-1.2.1-0.20130411.x86_64.rpm  
.............
libavcodec.so.54()(64bit)  
libavcodec.so.54(LIBAVCODEC_54)(64bit)  
libavcodec.so.55()(64bit)  
libavdevice.so.54()(64bit)  
libavdevice.so.55()(64bit)  
............ 
libavformat.so.54()(64bit)  
libavformat.so.54(LIBAVFORMAT_54)(64bit)  
libavformat.so.55()(64bit)  
.............

What's going wrong? How does rpm even know about so 54?

sean

edit retag flag offensive close merge delete

Comments

Can you also please modify the question summary? The current one isn't clear at all.

FranciscoD_ gravatar imageFranciscoD_ ( 2013-04-12 21:56:10 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted
1

answered 2013-04-13 11:09:33 -0500

mether gravatar image

updated 2013-04-13 11:23:54 -0500

Refer to RPMFusion ffmpeg spec file for a working copy of the ffmpeg spec file. That should help.

edit flag offensive delete link more
0

answered 2013-04-12 21:51:01 -0500

FranciscoD_ gravatar image

I suggest you read the rpm documentation to understand how it builds up it's list of requires/provides automatically. It's difficult to pin point the exact reason here without actually attempting to build ffmpeg ourselves with your spec and checking the build process logs and whatnot.

http://www.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

ffmpeg is available in the rpmfusion repositories. Maybe look at their spec, if you haven't already? They also have a mailing list for development discussion.

Also, did you run updatedb before running the locate command? It doesn't give the current state of files on the system. It gives the state that was saved when updatedb was last run. find would me more appropriate.

Please do read the askfedora guidelines. The above link is one of the first few google search results :)

edit flag offensive delete link more

Comments

I did spend a number of hours with http://www.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html, which is why I finally asked here. I ran ldd and objdump on the files.

And yes, I did run updatedb before running locate. BTW, updatedb is run daily, so locate would find an old file even if updatedb were not refreshed.

find is tough when you're searching the entire machine.

Any help would be appreciated.

sean

seandarcy gravatar imageseandarcy ( 2013-04-13 10:00:18 -0500 )edit

Question Tools

Stats

Asked: 2013-04-12 16:54:32 -0500

Seen: 843 times

Last updated: Apr 13 '13