diff mbox series

[v3,7/7] package/gupnp-dlna: add optional dependency for gobject-introspection

Message ID 20200327183000.1005676-7-aduskett@gmail.com
State Changes Requested
Headers show
Series [v3,1/7] package/vala/vala-wrapper: fix wrapper | expand

Commit Message

Adam Duskett March 27, 2020, 6:30 p.m. UTC
From: Adam Duskett <Aduskett@gmail.com>

If gobject-introspection is selected, explicitly set --enable-introspection in
the configure options and add a dependency for both gobject-introspection and
host-vala.

Host-vala is necessary because the introspection includes vala bindings files
with no way to explicitly disable them.

Signed-off-by: Adam Duskett <Aduskett@gmail.com>
---
 package/gupnp-dlna/gupnp-dlna.mk | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

Comments

Yann E. MORIN March 29, 2020, 8:42 p.m. UTC | #1
Adam, All,

Bringing Thomas in the loop: I have a question for you...

Adam, there is also a question for you...

On 2020-03-27 11:30 -0700, aduskett@gmail.com spake thusly:
> From: Adam Duskett <Aduskett@gmail.com>
> 
> If gobject-introspection is selected, explicitly set --enable-introspection in
> the configure options and add a dependency for both gobject-introspection and
> host-vala.
> 
> Host-vala is necessary because the introspection includes vala bindings files
> with no way to explicitly disable them.

Adam, this one is for you: what good are vala bindings for? Why do we
care in Buildroot, Do we have a package that may use them?

> Signed-off-by: Adam Duskett <Aduskett@gmail.com>
> ---
>  package/gupnp-dlna/gupnp-dlna.mk | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/package/gupnp-dlna/gupnp-dlna.mk b/package/gupnp-dlna/gupnp-dlna.mk
> index 85d30b7cd2..845667ca53 100644
> --- a/package/gupnp-dlna/gupnp-dlna.mk
> +++ b/package/gupnp-dlna/gupnp-dlna.mk
> @@ -15,15 +15,21 @@ GUPNP_DLNA_LICENSE_FILES = COPYING
>  GUPNP_DLNA_INSTALL_STAGING = YES
>  GUPNP_DLNA_DEPENDENCIES = host-pkgconf libglib2 libxml2
>  
> -GUPNP_DLNA_CONF_OPTS = \
> -	--disable-introspection \
> -	--disable-legacy-gstreamer-metadata-backend
> +GUPNP_DLNA_CONF_OPTS = --disable-legacy-gstreamer-metadata-backend
>  
>  ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)
>  GUPNP_DLNA_CONF_OPTS += --enable-gstreamer-metadata-backend
>  GUPNP_DLNA_DEPENDENCIES += gstreamer1 gst1-plugins-base
> +# Gobject-introspection requires gstreamer .gir files.
> +# Vala bindings are created with the .gir files.
> +ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)
> +GUPNP_DLNA_CONF_OPTS += --enable-introspection
> +GUPNP_DLNA_DEPENDENCIES += host-vala gobject-introspection
> +endif

So, vala is _not_ needed to build with introspection.

However, when building with introspection, vala bindings _can_ be
generated if the needed tools are present. But this is totally optional.

However, vala is a host-only package, that has no entry on the menuconfig
(because it is just a tool akin to bison, flex et al.).

So, we have no way to express automatically whether vala bindings should
be enabled.

However, it might be possible that an earlier package has brought
host-vala. So we may or may not have host-vala built by the time
gupnp-dlna is built.

As such, we have three options:

1. Forcibly bring a dependency ti host-vala and build vala bindings,
   like Adam did;

2. Add an option to gupnp-dlna to build vala bindings;

3. Add a vala/Config.in/host to manually enable vala, and thus
   automatically build the vala bindings.

I am basically OK with point 1, but I'd like a second pair of eyes...

Regards,
Yann E. MORIN.

>  else
> -GUPNP_DLNA_CONF_OPTS += --disable-gstreamer-metadata-backend
> +GUPNP_DLNA_CONF_OPTS += \
> +	--disable-gstreamer-metadata-backend \
> +	--disable-introspection
>  endif
>  
>  $(eval $(autotools-package))
> -- 
> 2.25.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thomas Petazzoni April 6, 2020, 8:38 p.m. UTC | #2
Hello,

On Sun, 29 Mar 2020 22:42:51 +0200
"Yann E. MORIN" <yann.morin.1998@free.fr> wrote:

> So, vala is _not_ needed to build with introspection.

Right, totally correct. HAVE_INTROSPECTION is used in
libgupnp-dlna/Makefile.am and vala/Makefile.am. In the former case,
Vala support is not needed.

> As such, we have three options:
> 
> 1. Forcibly bring a dependency ti host-vala and build vala bindings,
>    like Adam did;
> 
> 2. Add an option to gupnp-dlna to build vala bindings;

I would prefer this solution, but there may not even be a need to add
an option: there is an AC_PATH_PROG check for vapigen, so probably we
can feed some stupid autoconf cache variable to make sure vapigen is
not detected, even if available.

> 3. Add a vala/Config.in/host to manually enable vala, and thus
>    automatically build the vala bindings.

I would really prefer to handle the whole Vala binding thing once
someone really needs to do Vala stuff with gupnp-dlna.

Thomas
Yann E. MORIN April 6, 2020, 8:49 p.m. UTC | #3
Thomas, Adam, All,

On 2020-04-06 22:38 +0200, Thomas Petazzoni spake thusly:
> On Sun, 29 Mar 2020 22:42:51 +0200
> "Yann E. MORIN" <yann.morin.1998@free.fr> wrote:
[--SNIP--]
> > As such, we have three options:
> > 
> > 1. Forcibly bring a dependency ti host-vala and build vala bindings,
> >    like Adam did;
> > 2. Add an option to gupnp-dlna to build vala bindings;
> 
> I would prefer this solution, but there may not even be a need to add
> an option: there is an AC_PATH_PROG check for vapigen, so probably we
> can feed some stupid autoconf cache variable to make sure vapigen is
> not detected, even if available.

GUPNP_PROG_VAPIGEN uses AC_PATH_PROG under the hood, and we can override
the detection by setting VAPIGEN="something". Not sure what happens if
we pass it an empty string, or 'no'...

Adam, care to look into this, please? Thanks!

Regards,
Yann E. MORIN.
diff mbox series

Patch

diff --git a/package/gupnp-dlna/gupnp-dlna.mk b/package/gupnp-dlna/gupnp-dlna.mk
index 85d30b7cd2..845667ca53 100644
--- a/package/gupnp-dlna/gupnp-dlna.mk
+++ b/package/gupnp-dlna/gupnp-dlna.mk
@@ -15,15 +15,21 @@  GUPNP_DLNA_LICENSE_FILES = COPYING
 GUPNP_DLNA_INSTALL_STAGING = YES
 GUPNP_DLNA_DEPENDENCIES = host-pkgconf libglib2 libxml2
 
-GUPNP_DLNA_CONF_OPTS = \
-	--disable-introspection \
-	--disable-legacy-gstreamer-metadata-backend
+GUPNP_DLNA_CONF_OPTS = --disable-legacy-gstreamer-metadata-backend
 
 ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)
 GUPNP_DLNA_CONF_OPTS += --enable-gstreamer-metadata-backend
 GUPNP_DLNA_DEPENDENCIES += gstreamer1 gst1-plugins-base
+# Gobject-introspection requires gstreamer .gir files.
+# Vala bindings are created with the .gir files.
+ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)
+GUPNP_DLNA_CONF_OPTS += --enable-introspection
+GUPNP_DLNA_DEPENDENCIES += host-vala gobject-introspection
+endif
 else
-GUPNP_DLNA_CONF_OPTS += --disable-gstreamer-metadata-backend
+GUPNP_DLNA_CONF_OPTS += \
+	--disable-gstreamer-metadata-backend \
+	--disable-introspection
 endif
 
 $(eval $(autotools-package))