diff mbox

[1/1] miraclecast: new package

Message ID 1428030634-23928-1-git-send-email-ryanbarnett3@gmail.com
State Changes Requested
Headers show

Commit Message

Ryan Barnett April 3, 2015, 3:10 a.m. UTC
Signed-off-by: Ryan Barnett <ryanbarnett3@gmail.com>
---

Miraclecast has a heavy dependancy on systemd. The only way that I
could get systemd to install all the header files for miraclecast was
to enable all features + kdbus (kdbus is called out in their
documentation).

---
 package/Config.in                  |  1 +
 package/miraclecast/Config.in      | 22 ++++++++++++++++++++++
 package/miraclecast/miraclecast.mk | 14 ++++++++++++++
 package/systemd/systemd.mk         |  5 +++++
 4 files changed, 42 insertions(+)
 create mode 100644 package/miraclecast/Config.in
 create mode 100644 package/miraclecast/miraclecast.mk

Comments

Baruch Siach April 3, 2015, 5 a.m. UTC | #1
Hi Ryan,

On Thu, Apr 02, 2015 at 10:10:34PM -0500, Ryan Barnett wrote:
> diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
> index 98bda02..a94ce04 100644
> --- a/package/systemd/systemd.mk
> +++ b/package/systemd/systemd.mk
> @@ -77,6 +77,11 @@ else
>  SYSTEMD_CONF_OPTS += --disable-seccomp
>  endif
>  
> +ifeq ($(BR2_PACKAGE_MIRACLECAST),y)
> +# Must enable kdbus in order to get sd-events.h in staging
> +SYSTEMD_CONF_OPTS += --enable-kdbus
> +endif

This looks somewhat unusual. And besides, kdbus should be a useful feature on 
its own right. So why not add a BR2_PACKAGE_SYSTEMD_KDBUS option, and have 
BR2_PACKAGE_MIRACLECAST select that? Setting the right kernel dependency for 
BR2_PACKAGE_SYSTEMD_KDBUS would be an interesting question, though.

baruch
Ryan Barnett April 3, 2015, 12:39 p.m. UTC | #2
Hi Baruch,

On Fri, Apr 3, 2015 at 12:00 AM, Baruch Siach <baruch@tkos.co.il> wrote:
> Hi Ryan,
>
> On Thu, Apr 02, 2015 at 10:10:34PM -0500, Ryan Barnett wrote:
>> diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
>> index 98bda02..a94ce04 100644
>> --- a/package/systemd/systemd.mk
>> +++ b/package/systemd/systemd.mk
>> @@ -77,6 +77,11 @@ else
>>  SYSTEMD_CONF_OPTS += --disable-seccomp
>>  endif
>>
>> +ifeq ($(BR2_PACKAGE_MIRACLECAST),y)
>> +# Must enable kdbus in order to get sd-events.h in staging
>> +SYSTEMD_CONF_OPTS += --enable-kdbus
>> +endif
>
> This looks somewhat unusual. And besides, kdbus should be a useful feature on
> its own right. So why not add a BR2_PACKAGE_SYSTEMD_KDBUS option, and have
> BR2_PACKAGE_MIRACLECAST select that? Setting the right kernel dependency for
> BR2_PACKAGE_SYSTEMD_KDBUS would be an interesting question, though.

I had this same idea an hour or so after submitting this patch. I
wasn't really happy with what I sent but I blanking at the time. The
miraclecast package is interesting because if I just pass the
--enable-kdbus when I build systemd, it doesn't install that
sd-events.h file. Here is what they say in miraclecast's
documentation:

systemd: A system management daemon. It is used for device-management
(udev), dbus management (sd-bus) and service management. Systemd must
be compiled with --enable-kdbus, even though kdbus isn't used, but
only the independent, experimental sd-libraries. required:
>=systemd-213

I will work on a v2 of this tonight but thanks for the feedback and
the suggestion.

Thanks,
-Ryan
Yann E. MORIN April 3, 2015, 5:47 p.m. UTC | #3
Ryan, All,

Miraclecast... Mmmm! Cookie! :-)

On 2015-04-02 22:10 -0500, Ryan Barnett spake thusly:
> Signed-off-by: Ryan Barnett <ryanbarnett3@gmail.com>
[--SNIP--]
> diff --git a/package/miraclecast/Config.in b/package/miraclecast/Config.in
> new file mode 100644
> index 0000000..fbba349
> --- /dev/null
> +++ b/package/miraclecast/Config.in
> @@ -0,0 +1,22 @@
> +config BR2_PACKAGE_MIRACLECAST
> +	bool "miraclecast"
> +	depends on BR2_PACKAGE_SYSTEMD
> +	depends on BR2_TOOLCHAIN_USES_GLIBC
> +	depends on BR2_USE_WCHAR # glib2
> +	depends on BR2_TOOLCHAIN_HAS_THREADS # glib2
> +	depends on BR2_USE_MMU # glib2

You forgot to select glib2. Even if gstreamer needs it, miraclecast
needs glib for itself, too, so you need to select it.

> +	select BR2_PACKAGE_GSTREAMER

Don't you also need at least some codecs?

Looking at res/test_viewer.sh, it seems you need at least those:
    udpsrc rtpjitterbuffer rtpmp2tdepay tsdemux h264parse avdec_h264
    autovideosink

> +	select BR2_PACKAGE_READLINE
> +	select BR2_PACKAGE_SYSTEMD_ALL_EXTRAS
> +	help
> +	  The MiracleCast project provides software to connect external
> +	  monitors to your system via Wifi. It is compatible to the
> +	  Wifi-Display specification also known as Miracast. MiracleCast
> +	  implements the Display-Source as well as Display-Sink side.
> +
> +	  https://github.com/albfan/miraclecast
> +
> +comment "miraclecast needs a glibc toolchain w/ threads, wchar and systemd"
> +	depends on !BR2_TOOLCHAIN_USES_GLIBC || \
> +		!BR2_PACKAGE_SYSTEMD || !BR2_USE_WCHAR || \
> +		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_MMU

comment "miraclecast needs systemd and a glibc toolchain w/ threads, wchar"
        depends on BR2_USE_MMU
        depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_USE_WCHAR \
                || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_SYSTEMD

> diff --git a/package/miraclecast/miraclecast.mk b/package/miraclecast/miraclecast.mk
> new file mode 100644
> index 0000000..4f649a7
> --- /dev/null
> +++ b/package/miraclecast/miraclecast.mk
> @@ -0,0 +1,14 @@
> +################################################################################
> +#
> +# miraclecast
> +#
> +################################################################################
> +
> +MIRACLECAST_VERSION = 8b61f733da124ccbfd1b85e188581fad1c41c1e1
> +MIRACLECAST_SITE = $(call github,albfan,miraclecast,$(MIRACLECAST_VERSION))
> +MIRACLECAST_DEPENDENCIES = systemd gstreamer readline
> +MIRACLECAST_LICENSE = LGPLv2.1+ GPLv2 (gdhcp) GPLv2.1 (htable)
> +MIRACLECAST_LICENSE_FILES = COPYING LICENSE_gdhcp LICENSE_htable LICENSE_lgpl
> +MIRACLECAST_AUTORECONF = YES

Please comment on why this is needed, like:

    # Straight out of the repository, no ./configure
    MIRACLECAST_AUTORECONF = YES

> +$(eval $(autotools-package))
> diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
> index 98bda02..a94ce04 100644
> --- a/package/systemd/systemd.mk
> +++ b/package/systemd/systemd.mk
> @@ -77,6 +77,11 @@ else
>  SYSTEMD_CONF_OPTS += --disable-seccomp
>  endif
>  
> +ifeq ($(BR2_PACKAGE_MIRACLECAST),y)
> +# Must enable kdbus in order to get sd-events.h in staging
> +SYSTEMD_CONF_OPTS += --enable-kdbus
> +endif

I won't repeat what's already been said by Baruch, since I agree with
what he said.

/me is looking forward to seeing that integrated! :-)

Regards,
Yann E. MORIN.

>  ifeq ($(BR2_PACKAGE_SYSTEMD_ALL_EXTRAS),y)
>  SYSTEMD_DEPENDENCIES += \
>  	xz 		\
> -- 
> 1.9.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index f00a18f..d2ae661 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -20,6 +20,7 @@  menu "Audio and video applications"
 	source "package/lame/Config.in"
 	source "package/libvpx/Config.in"
 	source "package/madplay/Config.in"
+	source "package/miraclecast/Config.in"
 	source "package/mjpegtools/Config.in"
 	source "package/modplugtools/Config.in"
 	source "package/mpd/Config.in"
diff --git a/package/miraclecast/Config.in b/package/miraclecast/Config.in
new file mode 100644
index 0000000..fbba349
--- /dev/null
+++ b/package/miraclecast/Config.in
@@ -0,0 +1,22 @@ 
+config BR2_PACKAGE_MIRACLECAST
+	bool "miraclecast"
+	depends on BR2_PACKAGE_SYSTEMD
+	depends on BR2_TOOLCHAIN_USES_GLIBC
+	depends on BR2_USE_WCHAR # glib2
+	depends on BR2_TOOLCHAIN_HAS_THREADS # glib2
+	depends on BR2_USE_MMU # glib2
+	select BR2_PACKAGE_GSTREAMER
+	select BR2_PACKAGE_READLINE
+	select BR2_PACKAGE_SYSTEMD_ALL_EXTRAS
+	help
+	  The MiracleCast project provides software to connect external
+	  monitors to your system via Wifi. It is compatible to the
+	  Wifi-Display specification also known as Miracast. MiracleCast
+	  implements the Display-Source as well as Display-Sink side.
+
+	  https://github.com/albfan/miraclecast
+
+comment "miraclecast needs a glibc toolchain w/ threads, wchar and systemd"
+	depends on !BR2_TOOLCHAIN_USES_GLIBC || \
+		!BR2_PACKAGE_SYSTEMD || !BR2_USE_WCHAR || \
+		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_MMU
diff --git a/package/miraclecast/miraclecast.mk b/package/miraclecast/miraclecast.mk
new file mode 100644
index 0000000..4f649a7
--- /dev/null
+++ b/package/miraclecast/miraclecast.mk
@@ -0,0 +1,14 @@ 
+################################################################################
+#
+# miraclecast
+#
+################################################################################
+
+MIRACLECAST_VERSION = 8b61f733da124ccbfd1b85e188581fad1c41c1e1
+MIRACLECAST_SITE = $(call github,albfan,miraclecast,$(MIRACLECAST_VERSION))
+MIRACLECAST_DEPENDENCIES = systemd gstreamer readline
+MIRACLECAST_LICENSE = LGPLv2.1+ GPLv2 (gdhcp) GPLv2.1 (htable)
+MIRACLECAST_LICENSE_FILES = COPYING LICENSE_gdhcp LICENSE_htable LICENSE_lgpl
+MIRACLECAST_AUTORECONF = YES
+
+$(eval $(autotools-package))
diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
index 98bda02..a94ce04 100644
--- a/package/systemd/systemd.mk
+++ b/package/systemd/systemd.mk
@@ -77,6 +77,11 @@  else
 SYSTEMD_CONF_OPTS += --disable-seccomp
 endif
 
+ifeq ($(BR2_PACKAGE_MIRACLECAST),y)
+# Must enable kdbus in order to get sd-events.h in staging
+SYSTEMD_CONF_OPTS += --enable-kdbus
+endif
+
 ifeq ($(BR2_PACKAGE_SYSTEMD_ALL_EXTRAS),y)
 SYSTEMD_DEPENDENCIES += \
 	xz 		\