Hello, On Tue, Dec 12, 2017 at 10:06:44PM +0100, Sebastian Ramacher wrote: > Source: gmediaserver > Version: 0.13.0-8 > Severity: important > Tags: sid buster > > gmediaserver FTBFS against upnp 1.8 (available in experimental): > | gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../lib -I../lib -Wall > -I/usr/include/uuid -pthread -I/usr/include/upnp -I/usr/include/taglib -g -O2 > -c upnp.c > | upnp.c:210:36: warning: 'struct Upnp_Subscription_Request' declared inside > parameter list will not be visible outside of this definition or declaration > | handle_subscription_request(struct Upnp_Subscription_Request *request) > | ^~~~~~~~~~~~~~~~~~~~~~~~~ > | upnp.c: In function 'handle_subscription_request': > | upnp.c:218:57: error: dereferencing pointer to incomplete type 'struct > Upnp_Subscription_Request' > | say(3, _("Event device UDN: %s\n"), quotearg(request->UDN)); > | ^~ > | upnp.c: At top level: > | upnp.c:261:31: warning: 'struct Upnp_State_Var_Request' declared inside > parameter list will not be visible outside of this definition or declaration > | handle_get_var_request(struct Upnp_State_Var_Request *request) > | ^~~~~~~~~~~~~~~~~~~~~~ > | upnp.c: In function 'handle_get_var_request': > | upnp.c:269:52: error: dereferencing pointer to incomplete type 'struct > Upnp_State_Var_Request' > | error = getnameinfo((struct sockaddr *)&request->CtrlPtIPAddr, > sizeof(request->CtrlPtIPAddr), > | ^~ > | upnp.c: In function 'handle_action_request': > | upnp.c:317:52: error: dereferencing pointer to incomplete type 'struct > Upnp_Action_Request' > | error = getnameinfo((struct sockaddr *)&request->CtrlPtIPAddr, > sizeof(request->CtrlPtIPAddr), > | ^~ > | upnp.c: In function 'device_callback_event_handler': > | upnp.c:369:37: warning: passing argument 1 of 'handle_subscription_request' > from incompatible pointer type [-Wincompatible-pointer-types] > | handle_subscription_request((struct Upnp_Subscription_Request *) > event); > | ^ > | upnp.c:210:1: note: expected 'struct Upnp_Subscription_Request *' but > argument is of type 'struct Upnp_Subscription_Request *' > | handle_subscription_request(struct Upnp_Subscription_Request *request) > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > | upnp.c:372:32: warning: passing argument 1 of 'handle_get_var_request' from > incompatible pointer type [-Wincompatible-pointer-types] > | handle_get_var_request((struct Upnp_State_Var_Request *) event); > | ^ > | upnp.c:261:1: note: expected 'struct Upnp_State_Var_Request *' but argument > is of type 'struct Upnp_State_Var_Request *' > | handle_get_var_request(struct Upnp_State_Var_Request *request) > | ^~~~~~~~~~~~~~~~~~~~~~ > | upnp.c: In function 'init_upnp': > | upnp.c:521:11: warning: implicit declaration of function > 'UpnpSetVirtualDirCallbacks'; did you mean 'UpnpAddVirtualDir'? > [-Wimplicit-function-declaration] > | res = UpnpSetVirtualDirCallbacks(&virtual_dir_callbacks); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~ > | UpnpAddVirtualDir > | upnp.c:524:11: error: too few arguments to function 'UpnpAddVirtualDir' > | res = UpnpAddVirtualDir("/files"); > | ^~~~~~~~~~~~~~~~~ > | In file included from upnp.c:23:0: > | /usr/include/upnp/upnp.h:2741:17: note: declared here > | EXPORT_SPEC int UpnpAddVirtualDir( > | ^~~~~~~~~~~~~~~~~ > | upnp.c:527:11: error: too few arguments to function 'UpnpAddVirtualDir' > | res = UpnpAddVirtualDir("/upnp"); > | ^~~~~~~~~~~~~~~~~ > | In file included from upnp.c:23:0: > | /usr/include/upnp/upnp.h:2741:17: note: declared here > | EXPORT_SPEC int UpnpAddVirtualDir( > | ^~~~~~~~~~~~~~~~~ > | upnp.c:544:44: warning: passing argument 5 of 'UpnpRegisterRootDevice2' > from incompatible pointer type [-Wincompatible-pointer-types] > | strlen(mediaserver_desc), 1, device_callback_event_handler, > NULL, &device); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | In file included from upnp.c:23:0: > | /usr/include/upnp/upnp.h:800:17: note: expected 'Upnp_FunPtr {aka int > (*)(enum Upnp_EventType_e, const void *, void *)}' but argument is of type > 'int (*)(Upnp_EventType, void *, void *) {aka int (*)(enum Upnp_EventType_e, > void *, void *)}' > | EXPORT_SPEC int UpnpRegisterRootDevice2( > | ^~~~~~~~~~~~~~~~~~~~~~~ > | Makefile:598: recipe for target 'upnp.o' failed
I looked into patching gmediaserver for building with libupnp-1.8, but it's not trivial. The code modifies data that is owned by libupnp, for example see https://sources.debian.org/src/gmediaserver/0.13.0-8/src/upnp.c/#L330. With libupnp-1.8 the program only gets a const pointer to these structures and so the way requests are handled need to be changed. Given that gmediaserver was orphaned (#878730), didn't see an upload in the last 6 years and the last upstream release is from 2007 and the last upstream commit from 2009, I suggest to remove gmediaserver from Debian. Best regards Uwe
signature.asc
Description: PGP signature