summary refs log tree commit diff
path: root/pkgs/development/libraries/dleyna-renderer
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@users.noreply.github.com>2019-04-17 18:27:28 -0400
committerworldofpeace <worldofpeace@users.noreply.github.com>2019-04-17 18:27:28 -0400
commit8696640f222b5de458921e305aeafbf56427be44 (patch)
tree0c7c40c62ffb6e735aca8d16073e9da59ee989b7 /pkgs/development/libraries/dleyna-renderer
parentf249f32f9e40c472c6085ddf61fb592e28c5118a (diff)
downloadnixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar
nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.gz
nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.bz2
nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.lz
nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.xz
nixpkgs-8696640f222b5de458921e305aeafbf56427be44.tar.zst
nixpkgs-8696640f222b5de458921e305aeafbf56427be44.zip
dleyna-renderer: checkout patch in tree
Built this locally and noticed that the hash changed

wanted: sha256:0x5vj5zfk95avyg6g3nf6gar250cfrgla2ixj2ifn8pcick2d9vq
got:        sha256:0m7rxv2nnycvwqpc8ak396g8cbb9g6dw290cjbfwhrrhdhbii5qc
Diffstat (limited to 'pkgs/development/libraries/dleyna-renderer')
-rw-r--r--pkgs/development/libraries/dleyna-renderer/default.nix7
-rw-r--r--pkgs/development/libraries/dleyna-renderer/gupnp-1.2.diff130
2 files changed, 132 insertions, 5 deletions
diff --git a/pkgs/development/libraries/dleyna-renderer/default.nix b/pkgs/development/libraries/dleyna-renderer/default.nix
index ad90335d4e9..aae7861fef4 100644
--- a/pkgs/development/libraries/dleyna-renderer/default.nix
+++ b/pkgs/development/libraries/dleyna-renderer/default.nix
@@ -26,11 +26,8 @@ stdenv.mkDerivation rec {
 
   patches = [
     # fix build with gupnp 1.2
-    (fetchurl {
-      name = "gupnp-1.2.diff";
-      url = https://git.archlinux.org/svntogit/packages.git/plain/trunk/gupnp-1.2.diff?h=packages/dleyna-renderer&id=30b426a1e0ca5857031ed6296bc192d11bd7c5db;
-      sha256 = "0x5vj5zfk95avyg6g3nf6gar250cfrgla2ixj2ifn8pcick2d9vq";
-    })
+    # comes from arch linux packaging https://git.archlinux.org/svntogit/packages.git/tree/trunk/gupnp-1.2.diff?h=packages/dleyna-renderer
+    ./gupnp-1.2.diff
   ];
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/dleyna-renderer/gupnp-1.2.diff b/pkgs/development/libraries/dleyna-renderer/gupnp-1.2.diff
new file mode 100644
index 00000000000..3255695ab23
--- /dev/null
+++ b/pkgs/development/libraries/dleyna-renderer/gupnp-1.2.diff
@@ -0,0 +1,130 @@
+ configure.ac                |  4 ++--
+ libdleyna/renderer/device.c | 51 +++++++++++++++++++++++++++++++++++++++++++--
+ libdleyna/renderer/upnp.c   |  4 ++--
+ 3 files changed, 53 insertions(+), 6 deletions(-)
+
+diff --git c/configure.ac i/configure.ac
+index 271ee92..364659d 100644
+--- c/configure.ac
++++ i/configure.ac
+@@ -38,8 +38,8 @@ LT_LANG([C])
+ PKG_PROG_PKG_CONFIG(0.16)
+ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.28])
+ PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.28])
+-PKG_CHECK_MODULES([GSSDP], [gssdp-1.0 >= 0.13.2])
+-PKG_CHECK_MODULES([GUPNP], [gupnp-1.0 >= 0.20.5])
++PKG_CHECK_MODULES([GSSDP], [gssdp-1.2 >= 1.2.0])
++PKG_CHECK_MODULES([GUPNP], [gupnp-1.2 >= 1.2.0])
+ PKG_CHECK_MODULES([GUPNPAV], [gupnp-av-1.0 >= 0.11.5])
+ PKG_CHECK_MODULES([GUPNPDLNA], [gupnp-dlna-2.0 >= 0.9.4])
+ PKG_CHECK_MODULES([SOUP], [libsoup-2.4 >= 2.28.2])
+diff --git c/libdleyna/renderer/device.c i/libdleyna/renderer/device.c
+index 7acef89..f6d571e 100644
+--- c/libdleyna/renderer/device.c
++++ i/libdleyna/renderer/device.c
+@@ -2121,33 +2121,80 @@ exit:
+ 	return;
+ }
+ 
++typedef struct
++{
++  GMainLoop *loop;
++  GUPnPServiceIntrospection *introspection;
++  GError **error;
++} GetIntrospectionAsyncData;
++
++static void
++get_introspection_async_cb (GUPnPServiceInfo           *info,
++                            GUPnPServiceIntrospection  *introspection,
++                            const GError               *error,
++                            gpointer                    user_data)
++{
++  GetIntrospectionAsyncData *data = user_data;
++  data->introspection = introspection;
++  if (data->error)
++    *data->error = g_error_copy (error);
++  g_main_loop_quit (data->loop);
++}
++
++static GUPnPServiceIntrospection *
++_gupnp_service_info_get_introspection (GUPnPServiceInfo *info,
++                                       GError          **error)
++{
++  GetIntrospectionAsyncData data;
++  GMainContext *context;
++
++  context = g_main_context_new ();
++  data.loop = g_main_loop_new (context, FALSE);
++  data.error = error;
++
++  g_main_context_push_thread_default (context);
++
++  gupnp_service_info_get_introspection_async (info,
++                                              get_introspection_async_cb,
++                                              &data);
++
++  g_main_loop_run (data.loop);
++
++  g_main_context_pop_thread_default (context);
++
++  g_main_loop_unref (data.loop);
++  g_main_context_unref (context);
++
++  return data.introspection;
++}
++
+ static gboolean prv_get_av_service_states_values(GUPnPServiceProxy *av_proxy,
+ 						 GVariant **mpris_tp_speeds,
+ 						 GPtrArray **upnp_tp_speeds,
+ 						 double *min_rate,
+ 						 double *max_rate,
+ 						 gboolean *can_get_byte_pos)
+ {
+ 	const GUPnPServiceStateVariableInfo *svi;
+ 	const GUPnPServiceActionInfo *sai;
+ 	GUPnPServiceIntrospection *introspection;
+ 	GError *error = NULL;
+ 	GVariant *speeds = NULL;
+ 	GList *allowed_values;
+ 	gpointer weak_ref = NULL;
+ 	gboolean  device_alive = TRUE;
+ 
+ 	/* TODO: this weak_ref hack is needed as
+ 	   gupnp_service_info_get_introspection iterates the main loop.
+ 	   This can result in our device getting deleted before this
+ 	   function returns.  Ultimately, this code needs to be re-written
+ 	   to use gupnp_service_info_get_introspection_async but this cannot
+ 	   really be done until GUPnP provides a way to cancel this function. */
+ 
+ 	weak_ref = av_proxy;
+ 	g_object_add_weak_pointer(G_OBJECT(av_proxy), &weak_ref);
+ 
+-	introspection = gupnp_service_info_get_introspection(
++	introspection = _gupnp_service_info_get_introspection(
+ 		GUPNP_SERVICE_INFO(av_proxy),
+ 		&error);
+ 
+@@ -2215,7 +2262,7 @@ static gboolean prv_get_rc_service_states_values(GUPnPServiceProxy *rc_proxy,
+ 	weak_ref = rc_proxy;
+ 	g_object_add_weak_pointer(G_OBJECT(rc_proxy), &weak_ref);
+ 
+-	introspection = gupnp_service_info_get_introspection(
++	introspection = _gupnp_service_info_get_introspection(
+ 		GUPNP_SERVICE_INFO(rc_proxy),
+ 		&error);
+ 
+diff --git c/libdleyna/renderer/upnp.c i/libdleyna/renderer/upnp.c
+index 17cbda7..068912b 100644
+--- c/libdleyna/renderer/upnp.c
++++ i/libdleyna/renderer/upnp.c
+@@ -243,8 +243,8 @@ static void prv_server_unavailable_cb(GUPnPControlPoint *cp,
+ 
+ 	udn = gupnp_device_info_get_udn((GUPnPDeviceInfo *)proxy);
+ 
+-	ip_address = gupnp_context_get_host_ip(
+-		gupnp_control_point_get_context(cp));
++	ip_address = gssdp_client_get_host_ip(
++		GSSDP_CLIENT(gupnp_control_point_get_context(cp)));
+ 
+ 	if (!udn || !ip_address)
+ 		goto on_error;