zoneminder-1.25.0-7.fc18 fails to build in F18: g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/include -I/usr/include -Wall -Wno-sign-compare -fno-inline -I/usr/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -c -o zm_sdp.o zm_sdp.cpp In file included from zm_remote_camera_http.cpp:22:0: zm_mem_utils.h: In function 'char* mempbrk(const char*, const char*, size_t)': zm_mem_utils.h:31:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] zm_mem_utils.h:33:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] zm_mem_utils.h: In function 'char* memstr(const char*, const char*, size_t)': zm_mem_utils.h:55:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] zm_mem_utils.h:63:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] zm_mem_utils.h: In function 'size_t memspn(const char*, const char*, size_t)': zm_mem_utils.h:80:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/include -I/usr/include -Wall -Wno-sign-compare -fno-inline -I/usr/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -c -o zm_signal.o zm_signal.cpp zm_mem_utils.h:83:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] zm_mem_utils.h: In function 'size_t memcspn(const char*, const char*, size_t)': zm_mem_utils.h:110:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] zm_mem_utils.h:112:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] zm_remote_camera_http.cpp: In member function 'int RemoteCameraHttp::ReadData(Buffer&, int)': zm_remote_camera_http.cpp:180:67: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] zm_local_camera.cpp: In member function 'void LocalCamera::Initialise()': zm_local_camera.cpp:467:48: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] zm_remote_camera_http.cpp: In member function 'int RemoteCameraHttp::GetResponse()': zm_remote_camera_http.cpp:431:49: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]zm_local_camera.cpp: In member function 'void LocalCamera::Terminate()': zm_local_camera.cpp:743:49: error: invalid conversion from '__u32 {aka unsigned int}' to 'v4l2_buf_type' [-fpermissive] This looks like incompatibility with libv4l2.
This is actually a kernel issue; the API in 3.5 kernels changed in an in incompatible way. (Actually, compatible with C programs but not with C++ programs.) This happened in commit 6016af82eafcb6e086a8f2a2197b46029a843d68, [media] v4l2: use __u32 rather than enums in ioctl() structs. I reported this problem upstream. I also have a workaround that gets things compiling, but I've no way at all to test it as I have only networked cameras. If no progress is made on fixing the kernel issue then I'll commit the workaround.
Back from vacation; the 3.5 kernel was released with this breakage even after I pointed it out on the kernel list, so Linus's rules against userspace breakage don't seem to apply universally. Anyway, I've pushed and build with a quick fix on devel and f18 branches.