diff mbox series

[1/1] libupnp: add 1.8.3 version

Message ID 20171114193821.25188-1-fontaine.fabrice@gmail.com
State Superseded
Headers show
Series [1/1] libupnp: add 1.8.3 version | expand

Commit Message

Fabrice Fontaine Nov. 14, 2017, 7:38 p.m. UTC
Branch 1.8.x of libupnp is not compatible with branch 1.6.x so add an
option to select the version. By default, libupnp-1.6.x is enabled.

Update gmrender-resurrect, igd2-for-linux, libupnpp, mediastreamer, mpd,
ushare and vlc to make them depends on libupnp-1.6.x instead of
selecting libupnp

vlc and igd2-for-linux should support libunp-1.8.x in their next version

gerbera package (based on MediaTomb) will soon be added and depends on
libupnp-1.8.x

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 package/gmrender-resurrect/Config.in   |  9 +++++----
 package/igd2-for-linux/Config.in       |  7 ++++---
 package/libupnp/Config.in              | 14 ++++++++++++++
 package/libupnp/libupnp.hash           |  2 ++
 package/libupnp/libupnp.mk             |  4 ++++
 package/libupnpp/Config.in             |  8 ++++----
 package/mediastreamer/mediastreamer.mk |  2 +-
 package/mpd/Config.in                  |  5 ++++-
 package/ushare/Config.in               |  7 +++----
 package/vlc/vlc.mk                     |  2 +-
 10 files changed, 42 insertions(+), 18 deletions(-)

Comments

Thomas Petazzoni Nov. 15, 2017, 12:43 p.m. UTC | #1
Hello,

On Tue, 14 Nov 2017 20:38:21 +0100, Fabrice Fontaine wrote:

> diff --git a/package/libupnp/Config.in b/package/libupnp/Config.in
> index 7c6c37607..0a8e98c97 100644
> --- a/package/libupnp/Config.in
> +++ b/package/libupnp/Config.in
> @@ -10,5 +10,19 @@ config BR2_PACKAGE_LIBUPNP
>  
>  	  http://pupnp.sourceforge.net/
>  
> +choice
> +	prompt "libupnp version"
> +	default BR2_PACKAGE_LIBUPNP_1_6
> +	help
> +	  Select the version of libupnp API you wish to use.
> +
> +config BR2_PACKAGE_LIBUPNP_1_6
> +	bool "libupnp 1.6.x"
> +
> +config BR2_PACKAGE_LIBUPNP_1_8
> +	bool "libupnp 1.8.x"
> +
> +endchoice

I believe we should perhaps instead add a separate libupnp18 package,
all those "depends on" to decide which package should be visible
depending on the version of libupnp that is currently selected are a
bit annoying. But don't rewrite your patch right now: wait for other
Buildroot developers to give their opinion on this matter.

Is it possible to install both libupnp 1.6 and libupnp 1.8 in the same
system without any conflict ?

Best regards,

Thomas
Fabrice Fontaine Nov. 15, 2017, 9:04 p.m. UTC | #2
Dear Thomas,

2017-11-15 13:43 GMT+01:00 Thomas Petazzoni <thomas.petazzoni@free-
electrons.com>:

> Hello,
>
> On Tue, 14 Nov 2017 20:38:21 +0100, Fabrice Fontaine wrote:
>
> > diff --git a/package/libupnp/Config.in b/package/libupnp/Config.in
> > index 7c6c37607..0a8e98c97 100644
> > --- a/package/libupnp/Config.in
> > +++ b/package/libupnp/Config.in
> > @@ -10,5 +10,19 @@ config BR2_PACKAGE_LIBUPNP
> >
> >         http://pupnp.sourceforge.net/
> >
> > +choice
> > +     prompt "libupnp version"
> > +     default BR2_PACKAGE_LIBUPNP_1_6
> > +     help
> > +       Select the version of libupnp API you wish to use.
> > +
> > +config BR2_PACKAGE_LIBUPNP_1_6
> > +     bool "libupnp 1.6.x"
> > +
> > +config BR2_PACKAGE_LIBUPNP_1_8
> > +     bool "libupnp 1.8.x"
> > +
> > +endchoice
>
> I believe we should perhaps instead add a separate libupnp18 package,
> all those "depends on" to decide which package should be visible
> depending on the version of libupnp that is currently selected are a
> bit annoying. But don't rewrite your patch right now: wait for other
> Buildroot developers to give their opinion on this matter.
>
> Is it possible to install both libupnp 1.6 and libupnp 1.8 in the same
> system without any conflict ?
>
Unfortunately no, it was possible in 1.8.0 and 1.8.1 but we had to rollback
due to the vlc developer who wasn't happy with this change:
https://github.com/mrjimenez/pupnp/commit/07f504c61bd9e4d93eb3d373ffc852
7cafe0b9af

>
> Best regards,
>
> Thomas
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux and Kernel engineering
> http://free-electrons.com
>
Best Regards,

Fabrice
<div dir="ltr">Dear Thomas,<div class="gmail_extra"><br><div class="gmail_quote">2017-11-15 13:43 GMT+01:00 Thomas Petazzoni <span dir="ltr">&lt;<a href="mailto:thomas.petazzoni@free-electrons.com" target="_blank">thomas.petazzoni@free-<wbr>electrons.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<span class="m_2647298693941229218gmail-"><br>
On Tue, 14 Nov 2017 20:38:21 +0100, Fabrice Fontaine wrote:<br>
<br>
&gt; diff --git a/package/libupnp/Config.in b/package/libupnp/Config.in<br>
&gt; index 7c6c37607..0a8e98c97 100644<br>
&gt; --- a/package/libupnp/Config.in<br>
&gt; +++ b/package/libupnp/Config.in<br>
&gt; @@ -10,5 +10,19 @@ config BR2_PACKAGE_LIBUPNP<br>
&gt;<br>
&gt;         <a href="http://pupnp.sourceforge.net/" rel="noreferrer" target="_blank">http://pupnp.sourceforge.net/</a><br>
&gt;<br>
&gt; +choice<br>
&gt; +     prompt &quot;libupnp version&quot;<br>
&gt; +     default BR2_PACKAGE_LIBUPNP_1_6<br>
&gt; +     help<br>
&gt; +       Select the version of libupnp API you wish to use.<br>
&gt; +<br>
&gt; +config BR2_PACKAGE_LIBUPNP_1_6<br>
&gt; +     bool &quot;libupnp 1.6.x&quot;<br>
&gt; +<br>
&gt; +config BR2_PACKAGE_LIBUPNP_1_8<br>
&gt; +     bool &quot;libupnp 1.8.x&quot;<br>
&gt; +<br>
&gt; +endchoice<br>
<br>
</span>I believe we should perhaps instead add a separate libupnp18 package,<br>
all those &quot;depends on&quot; to decide which package should be visible<br>
depending on the version of libupnp that is currently selected are a<br>
bit annoying. But don&#39;t rewrite your patch right now: wait for other<br>
Buildroot developers to give their opinion on this matter.<br>
<br>
Is it possible to install both libupnp 1.6 and libupnp 1.8 in the same<br>
system without any conflict ?<br></blockquote><div>Unfortunately no, it was possible in 1.8.0 and 1.8.1 but we had to rollback due to the vlc developer who wasn&#39;t happy with this change: <a href="https://github.com/mrjimenez/pupnp/commit/07f504c61bd9e4d93eb3d373ffc8527cafe0b9af" target="_blank">https://github.com/<wbr>mrjimenez/pupnp/commit/<wbr>07f504c61bd9e4d93eb3d373ffc852<wbr>7cafe0b9af</a></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Best regards,<br>
<br>
Thomas<br>
<span class="m_2647298693941229218gmail-HOEnZb"><font color="#888888">--<br>
Thomas Petazzoni, CTO, Free Electrons<br>
Embedded Linux and Kernel engineering<br>
<a href="http://free-electrons.com" rel="noreferrer" target="_blank">http://free-electrons.com</a><br>
</font></span></blockquote></div>Best Regards,</div><div class="gmail_extra"><br></div><div class="gmail_extra">Fabrice</div></div>
Thomas Petazzoni Nov. 15, 2017, 9:22 p.m. UTC | #3
Hello,

On Wed, 15 Nov 2017 22:04:10 +0100, Fabrice Fontaine wrote:

> > > +choice
> > > +     prompt "libupnp version"
> > > +     default BR2_PACKAGE_LIBUPNP_1_6
> > > +     help
> > > +       Select the version of libupnp API you wish to use.
> > > +
> > > +config BR2_PACKAGE_LIBUPNP_1_6
> > > +     bool "libupnp 1.6.x"
> > > +
> > > +config BR2_PACKAGE_LIBUPNP_1_8
> > > +     bool "libupnp 1.8.x"
> > > +
> > > +endchoice  
> >
> > I believe we should perhaps instead add a separate libupnp18 package,
> > all those "depends on" to decide which package should be visible
> > depending on the version of libupnp that is currently selected are a
> > bit annoying. But don't rewrite your patch right now: wait for other
> > Buildroot developers to give their opinion on this matter.
> >
> > Is it possible to install both libupnp 1.6 and libupnp 1.8 in the same
> > system without any conflict ?
> >  
> Unfortunately no, it was possible in 1.8.0 and 1.8.1 but we had to rollback
> due to the vlc developer who wasn't happy with this change:
> https://github.com/mrjimenez/pupnp/commit/07f504c61bd9e4d93eb3d373ffc852
> 7cafe0b9af

OK, the reasoning makes sense.

What is the transition plan ? Will the different Buildroot packages that
use the 1.6 version be upgraded to use 1.8 at some point in the
reasonably near future ? Or will we have to keep both versions forever ?

Peter, Arnout, what are your thoughts on how to handle this?

Thomas
Arnout Vandecappelle Nov. 15, 2017, 9:32 p.m. UTC | #4
On 15-11-17 22:22, Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 15 Nov 2017 22:04:10 +0100, Fabrice Fontaine wrote:
> 
>>>> +choice
>>>> +     prompt "libupnp version"
>>>> +     default BR2_PACKAGE_LIBUPNP_1_6
>>>> +     help
>>>> +       Select the version of libupnp API you wish to use.
>>>> +
>>>> +config BR2_PACKAGE_LIBUPNP_1_6
>>>> +     bool "libupnp 1.6.x"
>>>> +
>>>> +config BR2_PACKAGE_LIBUPNP_1_8
>>>> +     bool "libupnp 1.8.x"
>>>> +
>>>> +endchoice  
>>>
>>> I believe we should perhaps instead add a separate libupnp18 package,
>>> all those "depends on" to decide which package should be visible
>>> depending on the version of libupnp that is currently selected are a
>>> bit annoying. But don't rewrite your patch right now: wait for other
>>> Buildroot developers to give their opinion on this matter.
>>>
>>> Is it possible to install both libupnp 1.6 and libupnp 1.8 in the same
>>> system without any conflict ?
>>>  
>> Unfortunately no, it was possible in 1.8.0 and 1.8.1 but we had to rollback
>> due to the vlc developer who wasn't happy with this change:
>> https://github.com/mrjimenez/pupnp/commit/07f504c61bd9e4d93eb3d373ffc852
>> 7cafe0b9af
> 
> OK, the reasoning makes sense.
> 
> What is the transition plan ? Will the different Buildroot packages that
> use the 1.6 version be upgraded to use 1.8 at some point in the
> reasonably near future ? Or will we have to keep both versions forever ?
> 
> Peter, Arnout, what are your thoughts on how to handle this?

 For libraries that change API, we've almost always created a new package, and
sometimes they are not side-by-side installable. Python3 is a great example, but
also e.g. opencv3.

 So I agree it should be a new package libupnp18 that depends on
!BR2_PACKAGE_LIBUPNP and where that dependency has to be propagated to gerbera.

 Regards,
 Arnout
Fabrice Fontaine Nov. 15, 2017, 10:08 p.m. UTC | #5
Dear all,

2017-11-15 22:32 GMT+01:00 Arnout Vandecappelle <arnout@mind.be>:

>
>
> On 15-11-17 22:22, Thomas Petazzoni wrote:
> > Hello,
> >
> > On Wed, 15 Nov 2017 22:04:10 +0100, Fabrice Fontaine wrote:
> >
> >>>> +choice
> >>>> +     prompt "libupnp version"
> >>>> +     default BR2_PACKAGE_LIBUPNP_1_6
> >>>> +     help
> >>>> +       Select the version of libupnp API you wish to use.
> >>>> +
> >>>> +config BR2_PACKAGE_LIBUPNP_1_6
> >>>> +     bool "libupnp 1.6.x"
> >>>> +
> >>>> +config BR2_PACKAGE_LIBUPNP_1_8
> >>>> +     bool "libupnp 1.8.x"
> >>>> +
> >>>> +endchoice
> >>>
> >>> I believe we should perhaps instead add a separate libupnp18 package,
> >>> all those "depends on" to decide which package should be visible
> >>> depending on the version of libupnp that is currently selected are a
> >>> bit annoying. But don't rewrite your patch right now: wait for other
> >>> Buildroot developers to give their opinion on this matter.
> >>>
> >>> Is it possible to install both libupnp 1.6 and libupnp 1.8 in the same
> >>> system without any conflict ?
> >>>
> >> Unfortunately no, it was possible in 1.8.0 and 1.8.1 but we had to
> rollback
> >> due to the vlc developer who wasn't happy with this change:
> >> https://github.com/mrjimenez/pupnp/commit/
> 07f504c61bd9e4d93eb3d373ffc852
> >> 7cafe0b9af
> >
> > OK, the reasoning makes sense.
> >
> > What is the transition plan ? Will the different Buildroot packages that
> > use the 1.6 version be upgraded to use 1.8 at some point in the
> > reasonably near future ? Or will we have to keep both versions forever ?
>
The transition plan is not very clear, 1.8.x is a major change to libupnp,
parameters can't be retrieved/updated through pointers anymore, the
applications have to use getter/setter functions. Moreover, internal APIs,
such as threadutil is no more public anymore. So, this could be a massive
rework for applications and some of them are not very active anymore.

> >
> > Peter, Arnout, what are your thoughts on how to handle this?
>
Personally, I prefer your suggestion of creating a libupnp18 package if
this is the standard way of handling this in buildroot.

>
>  For libraries that change API, we've almost always created a new package,
> and
> sometimes they are not side-by-side installable. Python3 is a great
> example, but
> also e.g. opencv3.
>
>  So I agree it should be a new package libupnp18 that depends on
> !BR2_PACKAGE_LIBUPNP and where that dependency has to be propagated to
> gerbera.
>
>  Regards,
>  Arnout
>
> --
> Arnout Vandecappelle                          arnout at mind be
> Senior Embedded Software Architect            +32-16-286500
> Essensium/Mind                                http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>
Best Regards,

Fabrice
<div dir="ltr">Dear all,<br><div class="gmail_extra"><br><div class="gmail_quote">2017-11-15 22:32 GMT+01:00 Arnout Vandecappelle <span dir="ltr">&lt;<a href="mailto:arnout@mind.be" target="_blank">arnout@mind.be</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><br>
<br>
On 15-11-17 22:22, Thomas Petazzoni wrote:<br>
&gt; Hello,<br>
&gt;<br>
&gt; On Wed, 15 Nov 2017 22:04:10 +0100, Fabrice Fontaine wrote:<br>
&gt;<br>
&gt;&gt;&gt;&gt; +choice<br>
&gt;&gt;&gt;&gt; +     prompt &quot;libupnp version&quot;<br>
&gt;&gt;&gt;&gt; +     default BR2_PACKAGE_LIBUPNP_1_6<br>
&gt;&gt;&gt;&gt; +     help<br>
&gt;&gt;&gt;&gt; +       Select the version of libupnp API you wish to use.<br>
&gt;&gt;&gt;&gt; +<br>
&gt;&gt;&gt;&gt; +config BR2_PACKAGE_LIBUPNP_1_6<br>
&gt;&gt;&gt;&gt; +     bool &quot;libupnp 1.6.x&quot;<br>
&gt;&gt;&gt;&gt; +<br>
&gt;&gt;&gt;&gt; +config BR2_PACKAGE_LIBUPNP_1_8<br>
&gt;&gt;&gt;&gt; +     bool &quot;libupnp 1.8.x&quot;<br>
&gt;&gt;&gt;&gt; +<br>
&gt;&gt;&gt;&gt; +endchoice<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I believe we should perhaps instead add a separate libupnp18 package,<br>
&gt;&gt;&gt; all those &quot;depends on&quot; to decide which package should be visible<br>
&gt;&gt;&gt; depending on the version of libupnp that is currently selected are a<br>
&gt;&gt;&gt; bit annoying. But don&#39;t rewrite your patch right now: wait for other<br>
&gt;&gt;&gt; Buildroot developers to give their opinion on this matter.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Is it possible to install both libupnp 1.6 and libupnp 1.8 in the same<br>
&gt;&gt;&gt; system without any conflict ?<br>
&gt;&gt;&gt;<br>
&gt;&gt; Unfortunately no, it was possible in 1.8.0 and 1.8.1 but we had to rollback<br>
&gt;&gt; due to the vlc developer who wasn&#39;t happy with this change:<br>
&gt;&gt; <a href="https://github.com/mrjimenez/pupnp/commit/07f504c61bd9e4d93eb3d373ffc852" rel="noreferrer" target="_blank">https://github.com/mrjimenez/<wbr>pupnp/commit/<wbr>07f504c61bd9e4d93eb3d373ffc852</a><br>
&gt;&gt; 7cafe0b9af<br>
&gt;<br>
&gt; OK, the reasoning makes sense.<br>
&gt;<br>
&gt; What is the transition plan ? Will the different Buildroot packages that<br>
&gt; use the 1.6 version be upgraded to use 1.8 at some point in the<br>
&gt; reasonably near future ? Or will we have to keep both versions forever ?<br></div></div></blockquote><div>The transition plan is not very clear, 1.8.x is a major change to libupnp, parameters can&#39;t be retrieved/updated through pointers anymore, the applications have to use getter/setter functions. Moreover, internal APIs, such as threadutil is no more public anymore. So, this could be a massive rework for applications and some of them are not very active anymore.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
&gt;<br>
&gt; Peter, Arnout, what are your thoughts on how to handle this?<br></div></div></blockquote><div>Personally, I prefer your suggestion of creating a libupnp18 package if this is the standard way of handling this in buildroot. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
<br>
</div></div> For libraries that change API, we&#39;ve almost always created a new package, and<br>
sometimes they are not side-by-side installable. Python3 is a great example, but<br>
also e.g. opencv3.<br>
<br>
 So I agree it should be a new package libupnp18 that depends on<br>
!BR2_PACKAGE_LIBUPNP and where that dependency has to be propagated to gerbera.<br>
<br>
 Regards,<br>
 Arnout<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Arnout Vandecappelle                          arnout at mind be<br>
Senior Embedded Software Architect            <a href="tel:%2B32-16-286500" value="+3216286500">+32-16-286500</a><br>
Essensium/Mind                                <a href="http://www.mind.be" rel="noreferrer" target="_blank">http://www.mind.be</a><br>
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven<br>
LinkedIn profile: <a href="http://www.linkedin.com/in/arnoutvandecappelle" rel="noreferrer" target="_blank">http://www.linkedin.com/in/<wbr>arnoutvandecappelle</a><br>
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF<br>
</font></span></blockquote></div>Best Regards,<br><br></div><div class="gmail_extra">Fabrice<br></div></div>
diff mbox series

Patch

diff --git a/package/gmrender-resurrect/Config.in b/package/gmrender-resurrect/Config.in
index db655ad7f..cfc69a8e9 100644
--- a/package/gmrender-resurrect/Config.in
+++ b/package/gmrender-resurrect/Config.in
@@ -1,16 +1,17 @@ 
 config BR2_PACKAGE_GMRENDER_RESURRECT
 	bool "gmrender-resurrect"
 	depends on BR2_USE_WCHAR # gstreamer1 -> libglib2
-	depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer1 -> libglib2, libupnp
+	depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer1 -> libglib2
 	depends on BR2_USE_MMU # gstreamer1
+	depends on BR2_PACKAGE_LIBUPNP_1_6
 	select BR2_PACKAGE_GSTREAMER1
 	select BR2_PACKAGE_GST1_PLUGINS_BASE # run-time only
-	select BR2_PACKAGE_LIBUPNP
 	help
 	  UPnP (DLNA) media renderer based on gstreamer
 
 	  https://github.com/hzeller/gmrender-resurrect
 
-comment "gmrender-resurrect needs a toolchain w/ wchar, threads"
+comment "gmrender-resurrect needs libupnp-1.6.x and a toolchain w/ wchar, threads"
 	depends on BR2_USE_MMU
-	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_PACKAGE_LIBUPNP_1_6
diff --git a/package/igd2-for-linux/Config.in b/package/igd2-for-linux/Config.in
index 157cc6f30..9e5f7e9bd 100644
--- a/package/igd2-for-linux/Config.in
+++ b/package/igd2-for-linux/Config.in
@@ -3,8 +3,8 @@  config BR2_PACKAGE_IGD2_FOR_LINUX
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_USE_WCHAR
+	depends on BR2_PACKAGE_LIBUPNP_1_6
 	select BR2_PACKAGE_IPTABLES # runtime
-	select BR2_PACKAGE_LIBUPNP
 	help
 	  This is The Linux UPnP Internet Gateway Device 2. It is
 	  modified from the original Linux UPnP Internet Gateway Device
@@ -20,6 +20,7 @@  config BR2_PACKAGE_IGD2_FOR_LINUX
 
 	  https://github.com/ffontaine/igd2-for-linux
 
-comment "igd2-for-linux needs a toolchain w/ threads, wchar"
+comment "igd2-for-linux needs libupnp-1.6.x and a toolchain w/ threads, wchar"
 	depends on BR2_USE_MMU
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \
+		!BR2_PACKAGE_LIBUPNP_1_6
diff --git a/package/libupnp/Config.in b/package/libupnp/Config.in
index 7c6c37607..0a8e98c97 100644
--- a/package/libupnp/Config.in
+++ b/package/libupnp/Config.in
@@ -10,5 +10,19 @@  config BR2_PACKAGE_LIBUPNP
 
 	  http://pupnp.sourceforge.net/
 
+choice
+	prompt "libupnp version"
+	default BR2_PACKAGE_LIBUPNP_1_6
+	help
+	  Select the version of libupnp API you wish to use.
+
+config BR2_PACKAGE_LIBUPNP_1_6
+	bool "libupnp 1.6.x"
+
+config BR2_PACKAGE_LIBUPNP_1_8
+	bool "libupnp 1.8.x"
+
+endchoice
+
 comment "libupnp needs a toolchain w/ threads"
 	depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/libupnp/libupnp.hash b/package/libupnp/libupnp.hash
index 10124618f..f73755d30 100644
--- a/package/libupnp/libupnp.hash
+++ b/package/libupnp/libupnp.hash
@@ -1,2 +1,4 @@ 
 # Locally computed:
 sha256	0bdfacb7fa8d99b78343b550800ff193264f92c66ef67852f87f042fd1a1ebbc	libupnp-1.6.22.tar.bz2
+sha256	9afa0b09faa9ebd9e8a6425ddbfe8d1d856544c49b1f86fde221219e569a308d	libupnp-1.8.3.tar.bz2
+sha256	0375955c8a79d6e8fa0792d45d00fc4e7710d7ac95bcbd27f9225a83f5c946fd	LICENSE
diff --git a/package/libupnp/libupnp.mk b/package/libupnp/libupnp.mk
index bf01b4d94..8ab58463d 100644
--- a/package/libupnp/libupnp.mk
+++ b/package/libupnp/libupnp.mk
@@ -4,7 +4,11 @@ 
 #
 ################################################################################
 
+ifeq ($(BR2_PACKAGE_LIBUPNP_1_8),y)
+LIBUPNP_VERSION = 1.8.3
+else
 LIBUPNP_VERSION = 1.6.22
+endif
 LIBUPNP_SOURCE = libupnp-$(LIBUPNP_VERSION).tar.bz2
 LIBUPNP_SITE = http://downloads.sourceforge.net/project/pupnp/pupnp/libUPnP%20$(LIBUPNP_VERSION)
 LIBUPNP_CONF_ENV = ac_cv_lib_compat_ftime=no
diff --git a/package/libupnpp/Config.in b/package/libupnpp/Config.in
index 32877ff56..62127b48e 100644
--- a/package/libupnpp/Config.in
+++ b/package/libupnpp/Config.in
@@ -1,16 +1,16 @@ 
 config BR2_PACKAGE_LIBUPNPP
 	bool "libupnpp"
 	depends on BR2_INSTALL_LIBSTDCPP
-	depends on BR2_TOOLCHAIN_HAS_THREADS # libupnp
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+	depends on BR2_PACKAGE_LIBUPNP_1_6
 	select BR2_PACKAGE_EXPAT
 	select BR2_PACKAGE_LIBCURL
-	select BR2_PACKAGE_LIBUPNP
 	help
 	  The libupnpp C++ library wraps libupnp for easier use by
 	  upmpdcli and upplay.
 
 	  http://www.lesbonscomptes.com/upmpdcli/
 
-comment "libupnpp needs a toolchain w/ C++, threads, gcc >= 4.9"
-	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+comment "libupnpp needs libupnp-1.6.x and a toolchain w/ C++, gcc >= 4.9"
+	depends on !BR2_INSTALL_LIBSTDCPP || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_PACKAGE_LIBUPNP_1_6
diff --git a/package/mediastreamer/mediastreamer.mk b/package/mediastreamer/mediastreamer.mk
index 1276cfae1..d10c55c73 100644
--- a/package/mediastreamer/mediastreamer.mk
+++ b/package/mediastreamer/mediastreamer.mk
@@ -24,7 +24,7 @@  else
 MEDIASTREAMER_CONF_OPTS += --disable-alsa
 endif
 
-ifeq ($(BR2_PACKAGE_LIBUPNP),y)
+ifeq ($(BR2_PACKAGE_LIBUPNP_1_6),y)
 MEDIASTREAMER_CONF_OPTS += --enable-upnp
 MEDIASTREAMER_DEPENDENCIES += libupnp
 else
diff --git a/package/mpd/Config.in b/package/mpd/Config.in
index 5991b6f4b..6deddbc09 100644
--- a/package/mpd/Config.in
+++ b/package/mpd/Config.in
@@ -308,11 +308,14 @@  config BR2_PACKAGE_MPD_TCP
 
 config BR2_PACKAGE_MPD_UPNP
 	bool "UPnP"
+	depends on BR2_PACKAGE_LIBUPNP_1_6
 	select BR2_PACKAGE_EXPAT
-	select BR2_PACKAGE_LIBUPNP
 	help
 	  Enable MPD UPnP client support.
 
+comment "UPnP client support needs libupnp-1.6.x"
+	depends on !BR2_PACKAGE_LIBUPNP_1_6
+
 endif
 
 comment "mpd needs a toolchain w/ C++, threads, wchar, gcc >= 4.9"
diff --git a/package/ushare/Config.in b/package/ushare/Config.in
index c3475b846..03dc92820 100644
--- a/package/ushare/Config.in
+++ b/package/ushare/Config.in
@@ -1,11 +1,10 @@ 
 config BR2_PACKAGE_USHARE
 	bool "ushare"
-	depends on BR2_TOOLCHAIN_HAS_THREADS # libupnp
 	# ushare has a completely custom configure script that does
 	# broken things with library ordering, which breaks static
 	# linking.
 	depends on !BR2_STATIC_LIBS
-	select BR2_PACKAGE_LIBUPNP
+	depends on BR2_PACKAGE_LIBUPNP_1_6
 	help
 	  uShare is a UPnP (TM) A/V & DLNA Media Server.
 	  It implements the server component that provides UPnP media devices
@@ -13,5 +12,5 @@  config BR2_PACKAGE_USHARE
 
 	  http://ushare.geexbox.org/
 
-comment "ushare needs a toolchain w/ threads, dynamic library"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+comment "ushare needs libupnp-1.6.x and a toolchain with dynamic library"
+	depends on BR2_STATIC_LIBS || !BR2_PACKAGE_LIBUPNP_1_6
diff --git a/package/vlc/vlc.mk b/package/vlc/vlc.mk
index 4602f92c4..aeb05c411 100644
--- a/package/vlc/vlc.mk
+++ b/package/vlc/vlc.mk
@@ -281,7 +281,7 @@  else
 VLC_CONF_OPTS += --disable-theora
 endif
 
-ifeq ($(BR2_PACKAGE_LIBUPNP),y)
+ifeq ($(BR2_PACKAGE_LIBUPNP_1_6),y)
 VLC_CONF_OPTS += --enable-upnp
 VLC_DEPENDENCIES += libupnp
 else