From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20070603 Fedora/2.0.0.4-2.fc7 Firefox/2.0.0.4 Description of problem: libraw1394 has marked part of the API as deprecated, but other libraries still use these functions so they have been retained in the latest src distribution 1.2.0 for compatibility. Yet the rpm distributed for fedora 7 does not include the deprecated functions. Other libs depend on this older API like libdc1394 (version 1) and give "undefined reference" errors for the missing functions. Version-Release number of selected component (if applicable): libraw1394 1.2.1-7.fc7 How reproducible: Always Steps to Reproduce: 1. Get a fedora 7 x86_64 install and yum install libraw1394 2. Download src for libdc1394 (v1 not v2) 3. Try to compile Actual Results: gcc -DHAVE_CONFIG_H -I. -I. -I.. -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -Wunused -MT affine.o -MD -MP -MF ".deps/affine.Tpo" -c -o affine.o affine.c; \ then mv -f ".deps/affine.Tpo" ".deps/affine.Po"; else rm -f ".deps/affine.Tpo"; exit 1; fi /bin/sh ../libtool --tag=CC --mode=link gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -Wunused -o dc1394_vloopback dc1394_vloopback.o affine.o -lm ../libdc1394/libdc1394_control.la -lraw1394 -lraw1394 mkdir .libs DIE_RPATH_DIE="/usr/lib64:$DIE_RPATH_DIE" gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -Wunused -o .libs/dc1394_vloopback dc1394_vloopback.o affine.o -lm ../libdc1394/.libs/libdc1394_control.so -lraw1394 ../libdc1394/.libs/libdc1394_control.so: undefined reference to `raw1394_set_iso_handler' ../libdc1394/.libs/libdc1394_control.so: undefined reference to `raw1394_stop_iso_rcv' ../libdc1394/.libs/libdc1394_control.so: undefined reference to `raw1394_start_iso_rcv' collect2: ld returned 1 exit status Expected Results: The libraw1394.so should contain the missing symbols (`raw1394_stop_iso_rcv' , etc...) but it doesn't. Additional info: I downloaded the libraw1394 1.2.0 src from SF and compiled which gives a lib that does include the symbols missing from the fedora 7 rpm It seems that the rpm version of the lib should not change the API from the source version of the lib.
AFAIK libdc1394 v1 can use either this deprecated 1st generation isochronous API of libraw1394 or the video1394 driver ABI. Neither of these is directly supported by the new fw-core driver. But the libdc1394 v2 prerelease has been adapted to fw-core. See also bug 239043 and bug 239184. BTW, we plan for upstream linux kernel to remove runtime support of libraw1349's deprecated API parts from the old FireWire stack.
Given that the old API is going away entirely anyhow, and libdc1394 v2 works with the new stack, I don't think committing time and effort to the old libdc1394 is particularly wise. Such time would be better spent on v2 and other improvements to the new stack and interfaces.
Sorry, jumping in late -- the issue is, the header files still indicate that the library provides the deprecated functions, while the functions themselves aren't defined in the .so file. So instead of nice errors like "no such function", you instead get obscure link-time errors like this (while I tried to compile libdc1394 version 1 just now): ../libdc1394/.libs/libdc1394_control.so: undefined reference to `raw1394_set_iso_handler' ../libdc1394/.libs/libdc1394_control.so: undefined reference to `raw1394_stop_iso_rcv' ../libdc1394/.libs/libdc1394_control.so: undefined reference to `raw1394_start_iso_rcv' It might be best to remove the function headers from the .h file as well if the functions have actually truly been removed.
These declarations do not exist in the header files of vanilla libraw1394 v2.0.0. (This is the first upstream version which does not provide these functions anymore.) Check if you have the latest Fedora libraw1394 (-devel, I presume) package installed.
I'm running Fedora 9, and I have libraw1394-devel-1.3.0-7.fc9.i386 (and the corresponding non-devel package). Is 2.0 only in Rawhide, or is my computer messed up somehow?
My guess is that libraw1394 v2 is only in rawhide and in the F10 preview. (I don't have Fedora installed myself.) Jarod, if you think this header bug should still be fixed in F9, then I think a straight diff from F9's raw1394.h to v2's raw1394.h should be safe to apply to F9's libraw1394-devel package. This diff contains the removal of the old iso functions and a few documentation fixes. Or only take the src/raw1394.h part of http://dennedy.org/cgi-bin/gitweb.cgi?p=dennedy.org/libraw1394.git;a=commit;h=0ea462ae9895ca903c8d3134910c06e1869560c4 i.e. http://dennedy.org/cgi-bin/gitweb.cgi?p=dennedy.org/libraw1394.git;a=blobdiff_plain;f=src/raw1394.h;fp=src/raw1394.h;h=d59b1b2210f3c45ab860d017585f9d7134453913;hp=89e601f33a644ffaa47486557d109227fae25258;hb=0ea462ae9895ca903c8d3134910c06e1869560c4;hpb=919e3999366a8a69f0ad706247004b1568d86841
Gah. No, this never got fixed in F9, which is still libraw1394 1.3.0-based. Yeah, I suppose I should fix that header up.