diff mbox series

[3/3] package/gstreamer1/gst1-imx2: new package

Message ID 20220112094250.27022-3-sebastien.szymanski@armadeus.com
State Changes Requested
Headers show
Series [1/3] package/libimxdmabuffer: new package | expand

Commit Message

Sébastien Szymanski Jan. 12, 2022, 9:42 a.m. UTC
This is version 2 of gst1-imx.

Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
---
 package/gstreamer1/Config.in                |  1 +
 package/gstreamer1/gst1-imx2/Config.in      | 75 +++++++++++++++++++++
 package/gstreamer1/gst1-imx2/gst1-imx2.hash |  3 +
 package/gstreamer1/gst1-imx2/gst1-imx2.mk   | 75 +++++++++++++++++++++
 4 files changed, 154 insertions(+)
 create mode 100644 package/gstreamer1/gst1-imx2/Config.in
 create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.hash
 create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.mk

Comments

Herve Codina Jan. 14, 2022, 5:44 p.m. UTC | #1
Hi Sébastien, all

On Wed, 12 Jan 2022 10:42:50 +0100
Sébastien Szymanski <sebastien.szymanski@armadeus.com> wrote:

> This is version 2 of gst1-imx.
> 
> Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
> ---
>  package/gstreamer1/Config.in                |  1 +
>  package/gstreamer1/gst1-imx2/Config.in      | 75 +++++++++++++++++++++
>  package/gstreamer1/gst1-imx2/gst1-imx2.hash |  3 +
>  package/gstreamer1/gst1-imx2/gst1-imx2.mk   | 75 +++++++++++++++++++++
>  4 files changed, 154 insertions(+)
>  create mode 100644 package/gstreamer1/gst1-imx2/Config.in
>  create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.hash
>  create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.mk
> 

This package seems an update of the existing gst1-imx package.

Why add a new package instead of bumping gst1-imx ?

Best regards,
Hervé
Sébastien Szymanski Jan. 17, 2022, 9:37 a.m. UTC | #2
Hi Hervé,

On 1/14/22 18:44, Herve Codina wrote:
> Hi Sébastien, all
> 
> On Wed, 12 Jan 2022 10:42:50 +0100
> Sébastien Szymanski <sebastien.szymanski@armadeus.com> wrote:
> 
>> This is version 2 of gst1-imx.
>>
>> Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
>> ---
>>   package/gstreamer1/Config.in                |  1 +
>>   package/gstreamer1/gst1-imx2/Config.in      | 75 +++++++++++++++++++++
>>   package/gstreamer1/gst1-imx2/gst1-imx2.hash |  3 +
>>   package/gstreamer1/gst1-imx2/gst1-imx2.mk   | 75 +++++++++++++++++++++
>>   4 files changed, 154 insertions(+)
>>   create mode 100644 package/gstreamer1/gst1-imx2/Config.in
>>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.hash
>>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.mk
>>
> 
> This package seems an update of the existing gst1-imx package.
> 
> Why add a new package instead of bumping gst1-imx ?

It's a rewrite, as the ChangLog says:

* Complete rewrite based on GStreamer 1.14, libimxvpuapi 2.1.2, and the 
new libimxdmabuffer library. This new rewrite is referred to as "v2" 
(version 2), while the old code is referred to as "v1" (version 1). v1 
is no longer being developed; work is focused on v2.

I think we should keep gst1-imx v1 for compatibility.

Best regards,

> 
> Best regards,
> Hervé
>
Arnout Vandecappelle July 28, 2022, 7:51 p.m. UTC | #3
On 12/01/2022 10:42, Sébastien Szymanski wrote:
> This is version 2 of gst1-imx.

  Please add the following.

  Although this replaces the gst1-imx package, we want to keep both because 
version 2 removes some elements that are relevant on i.MX6 without X11 or 
wayland: imxg2dvideosink, imxipuvideosink, imxeglvivsink.


> Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
> ---
>   package/gstreamer1/Config.in                |  1 +
>   package/gstreamer1/gst1-imx2/Config.in      | 75 +++++++++++++++++++++
>   package/gstreamer1/gst1-imx2/gst1-imx2.hash |  3 +
>   package/gstreamer1/gst1-imx2/gst1-imx2.mk   | 75 +++++++++++++++++++++
>   4 files changed, 154 insertions(+)
>   create mode 100644 package/gstreamer1/gst1-imx2/Config.in
>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.hash
>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.mk
> 
> diff --git a/package/gstreamer1/Config.in b/package/gstreamer1/Config.in
> index 8fe8a34395..436c76379d 100644
> --- a/package/gstreamer1/Config.in
> +++ b/package/gstreamer1/Config.in
> @@ -9,6 +9,7 @@ source "package/gstreamer1/gst1-plugins-bad/Config.in"
>   source "package/gstreamer1/gst1-plugins-ugly/Config.in"
>   source "package/gstreamer1/gst1-devtools/Config.in"
>   source "package/gstreamer1/gst1-imx/Config.in"
> +source "package/gstreamer1/gst1-imx2/Config.in"

  Note that this one should *not* move to package/freescale-imx, it's correct to 
put it here in gstreamer1.

>   source "package/gstreamer1/gst1-interpipe/Config.in"
>   source "package/gstreamer1/gst1-libav/Config.in"
>   source "package/gstreamer1/gst1-python/Config.in"
> diff --git a/package/gstreamer1/gst1-imx2/Config.in b/package/gstreamer1/gst1-imx2/Config.in
> new file mode 100644
> index 0000000000..b95e6bdb21
> --- /dev/null
> +++ b/package/gstreamer1/gst1-imx2/Config.in
> @@ -0,0 +1,75 @@
> +menuconfig BR2_PACKAGE_GST1_IMX2
> +	bool "gst1-imx2"
> +	depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX
> +	depends on BR2_PACKAGE_LIBIMXDMABUFFER

  This should be a select.

  On the other hand, it should also have

	depends on BR2_PACKAGE_FREESCALE_IMX
		
> +	select BR2_PACKAGE_GST1_PLUGINS_BASE
> +	help
> +	  This is a set of GStreamer 1.0 plugins for plugins for
> +	  Freescale's i.MX platforms, which make use of the i.MX
> +	  multimedia capabilities.
> +
> +	  https://github.com/Freescale/gstreamer-imx
> +
> +if BR2_PACKAGE_GST1_IMX2
> +
> +config BR2_PACKAGE_GST1_IMX2_G2D
> +	bool "imxg2d"
> +	depends on BR2_PACKAGE_IMX_GPU_G2D

  All these depends on should also be turned in select, and propagate their 
dependencies. Since the dependencies are all architecture dependencies, I think, 
there's no need for a comment. You only need a comment for the linux dependency.

> +	help
> +	  Elements leveraging the 2D GPU
> +
> +comment "imxg2d needs the G2D libraries"
> +	depends on !BR2_PACKAGE_IMX_GPU_G2D
> +
> +config BR2_PACKAGE_GST1_IMX2_IPU
> +	bool "imxipu"
> +	depends on BR2_LINUX_KERNEL
> +	help
> +	  Elements leveraging the IPU
> +
> +comment "imxipu needs an imx-specific Linux kernel to be built"
> +	depends on !BR2_LINUX_KERNEL
> +
> +config BR2_PACKAGE_GST1_IMX2_MP3ENCODER
> +	bool "mp3encoder"
> +	depends on BR2_PACKAGE_IMX_CODEC
> +	help
> +	  Elements for MP3 encoding

  I'm a bit surprised that there's no SoC dependency here...

> +
> +comment "mp3encoder needs the i.MX codec binaries"
> +	depends on !BR2_PACKAGE_IMX_CODEC
> +
> +config BR2_PACKAGE_GST1_IMX2_PXP
> +	bool "imxpxp"
> +	depends on BR2_LINUX_KERNEL
> +	help
> +	  Elements leveraging the PXP
> +
> +comment "imxpxp needs an imx-specific Linux kernel to be built"
> +	depends on !BR2_LINUX_KERNEL
> +
> +config BR2_PACKAGE_GST1_IMX2_UNIAUDIODEC
> +	bool "uniaudiodec"
> +	depends on BR2_PACKAGE_IMX_CODEC
> +	help
> +	  Elements for audio decoding
> +
> +comment "uniaudiodec needs the i.MX codec binaries"
> +	depends on !BR2_PACKAGE_IMX_CODEC
> +
> +config BR2_PACKAGE_GST1_IMX2_VPU
> +	bool "imxvpu"
> +	depends on BR2_PACKAGE_LIBIMXVPUAPI2
> +	help
> +	  Elements leveraging the VPU
> +
> +comment "imxvpu needs the VPU imxvpuapi2 library"
> +	depends on !BR2_PACKAGE_LIBIMXVPUAPI2
> +
> +config BR2_PACKAGE_GST1_IMX2_V4L2
> +	bool "imxv4l2"
> +	select BR2_PACKAGE_GST1_PLUGINS_BAD
> +	help
> +	  Elements for V4L2 capture and output
> +
> +endif
> diff --git a/package/gstreamer1/gst1-imx2/gst1-imx2.hash b/package/gstreamer1/gst1-imx2/gst1-imx2.hash
> new file mode 100644
> index 0000000000..cc0734fd52
> --- /dev/null
> +++ b/package/gstreamer1/gst1-imx2/gst1-imx2.hash
> @@ -0,0 +1,3 @@
> +# locally computed hash
> +sha256  57c0e05b3d57f90df8a16760f4373e04ed60c3a7fab7844c00392f67f889d196  gst1-imx2-9a200b1551c4531234f9b6437eac2c42a07334b0.tar.gz
> +sha256  94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23  LICENSE
> diff --git a/package/gstreamer1/gst1-imx2/gst1-imx2.mk b/package/gstreamer1/gst1-imx2/gst1-imx2.mk
> new file mode 100644
> index 0000000000..f71aeae4f6
> --- /dev/null
> +++ b/package/gstreamer1/gst1-imx2/gst1-imx2.mk
> @@ -0,0 +1,75 @@
> +################################################################################
> +#
> +# gst1-imx2
> +#
> +################################################################################
> +
> +GST1_IMX2_VERSION = 9a200b1551c4531234f9b6437eac2c42a07334b0
> +GST1_IMX2_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX2_VERSION))
> +GST1_IMX2_LICENSE = LGPL-2.0+
> +GST1_IMX2_LICENSE_FILES = LICENSE
> +GST1_IMX2_INSTALL_STAGING = YES
> +
> +GST1_IMX2_DEPENDENCIES = \
> +	host-pkgconf \
> +	gstreamer1 \
> +	gst1-plugins-base \
> +	libimxdmabuffer
> +
> +GST1_IMX2_CONF_OPTS = -Dsysroot=$(STAGING_DIR)
> +
> +ifeq ($(BR2_LINUX_KERNEL),y)
> +# IPU and PXP need access to imx-specific kernel headers

  Again, you'll probably need to point into the kernel build directory.

  Regards,
  Arnout

> +GST1_IMX2_DEPENDENCIES += linux
> +endif
> +
> +ifeq ($(BR2_PACKAGE_IMX_CODEC),y)
> +GST1_IMX2_DEPENDENCIES += imx-codec
> +endif
> +
> +ifeq ($(BR2_PACKAGE_GST1_IMX2_G2D),y)
> +GST1_IMX2_CONF_OPTS += -Dg2d=enabled
> +GST1_IMX2_DEPENDENCIES += imx-gpu-g2d
> +else
> +GST1_IMX2_CONF_OPTS += -Dg2d=disabled
> +endif
> +
> +ifeq ($(BR2_PACKAGE_GST1_IMX2_IPU),y)
> +GST1_IMX2_CONF_OPTS += -Dipu=enabled
> +else
> +GST1_IMX2_CONF_OPTS += -Dipu=disabled
> +endif
> +
> +ifeq ($(BR2_PACKAGE_GST1_IMX2_MP3ENCODER),y)
> +GST1_IMX2_CONF_OPTS += -Dmp3encoder=enabled
> +else
> +GST1_IMX2_CONF_OPTS += -Dmp3encoder=disabled
> +endif
> +
> +ifeq ($(BR2_PACKAGE_GST1_IMX2_PXP),y)
> +GST1_IMX2_CONF_OPTS += -Dpxp=enabled
> +else
> +GST1_IMX2_CONF_OPTS += -Dpxp=disabled
> +endif
> +
> +ifeq ($(BR2_PACKAGE_GST1_IMX2_UNIAUDIODEC),y)
> +GST1_IMX2_CONF_OPTS += -Duniaudiodec=enabled
> +else
> +GST1_IMX2_CONF_OPTS += -Duniaudiodec=disabled
> +endif
> +
> +ifeq ($(BR2_PACKAGE_GST1_IMX2_VPU),y)
> +GST1_IMX2_DEPENDENCIES += libimxvpuapi2
> +GST1_IMX2_CONF_OPTS += -Dvpu=enabled
> +else
> +GST1_IMX2_CONF_OPTS += -Dvpu=disabled
> +endif
> +
> +ifeq ($(BR2_PACKAGE_GST1_IMX2_V4L2),y)
> +GST1_IMX2_DEPENDENCIES += gst1-plugins-bad
> +GST1_IMX2_CONF_OPTS += -Dv4l2=true
> +else
> +GST1_IMX2_CONF_OPTS += -Dv4l2=false
> +endif
> +
> +$(eval $(meson-package))
Sébastien Szymanski Aug. 8, 2022, 2:14 p.m. UTC | #4
Hi Arnout,

On 7/28/22 21:51, Arnout Vandecappelle wrote:
> 
> 
> On 12/01/2022 10:42, Sébastien Szymanski wrote:
>> This is version 2 of gst1-imx.
> 
>   Please add the following.
> 
>   Although this replaces the gst1-imx package, we want to keep both 
> because version 2 removes some elements that are relevant on i.MX6 
> without X11 or wayland: imxg2dvideosink, imxipuvideosink, imxeglvivsink.
> 
> 
>> Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
>> ---
>>   package/gstreamer1/Config.in                |  1 +
>>   package/gstreamer1/gst1-imx2/Config.in      | 75 +++++++++++++++++++++
>>   package/gstreamer1/gst1-imx2/gst1-imx2.hash |  3 +
>>   package/gstreamer1/gst1-imx2/gst1-imx2.mk   | 75 +++++++++++++++++++++
>>   4 files changed, 154 insertions(+)
>>   create mode 100644 package/gstreamer1/gst1-imx2/Config.in
>>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.hash
>>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.mk
>>
>> diff --git a/package/gstreamer1/Config.in b/package/gstreamer1/Config.in
>> index 8fe8a34395..436c76379d 100644
>> --- a/package/gstreamer1/Config.in
>> +++ b/package/gstreamer1/Config.in
>> @@ -9,6 +9,7 @@ source "package/gstreamer1/gst1-plugins-bad/Config.in"
>>   source "package/gstreamer1/gst1-plugins-ugly/Config.in"
>>   source "package/gstreamer1/gst1-devtools/Config.in"
>>   source "package/gstreamer1/gst1-imx/Config.in"
>> +source "package/gstreamer1/gst1-imx2/Config.in"
> 
>   Note that this one should *not* move to package/freescale-imx, it's 
> correct to put it here in gstreamer1.
> 
>>   source "package/gstreamer1/gst1-interpipe/Config.in"
>>   source "package/gstreamer1/gst1-libav/Config.in"
>>   source "package/gstreamer1/gst1-python/Config.in"
>> diff --git a/package/gstreamer1/gst1-imx2/Config.in 
>> b/package/gstreamer1/gst1-imx2/Config.in
>> new file mode 100644
>> index 0000000000..b95e6bdb21
>> --- /dev/null
>> +++ b/package/gstreamer1/gst1-imx2/Config.in
>> @@ -0,0 +1,75 @@
>> +menuconfig BR2_PACKAGE_GST1_IMX2
>> +    bool "gst1-imx2"
>> +    depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX
>> +    depends on BR2_PACKAGE_LIBIMXDMABUFFER
> 
>   This should be a select.
> 
>   On the other hand, it should also have
> 
>      depends on BR2_PACKAGE_FREESCALE_IMX
> 
>> +    select BR2_PACKAGE_GST1_PLUGINS_BASE
>> +    help
>> +      This is a set of GStreamer 1.0 plugins for plugins for
>> +      Freescale's i.MX platforms, which make use of the i.MX
>> +      multimedia capabilities.
>> +
>> +      https://github.com/Freescale/gstreamer-imx
>> +
>> +if BR2_PACKAGE_GST1_IMX2
>> +
>> +config BR2_PACKAGE_GST1_IMX2_G2D
>> +    bool "imxg2d"
>> +    depends on BR2_PACKAGE_IMX_GPU_G2D
> 
>   All these depends on should also be turned in select, and propagate 
> their dependencies. Since the dependencies are all architecture 
> dependencies, I think, there's no need for a comment. You only need a 
> comment for the linux dependency.

I have copied the gst1-imx package which uses depends on. When using 
select the following issue appears:

package/gstreamer1/gstreamer1/Config.in:5:error: recursive dependency 
detected!
package/gstreamer1/gstreamer1/Config.in:5:      symbol 
BR2_PACKAGE_GSTREAMER1 is selected by BR2_PACKAGE_WEBKITGTK_MULTIMEDIA
package/webkitgtk/Config.in:94: symbol BR2_PACKAGE_WEBKITGTK_MULTIMEDIA 
depends on BR2_PACKAGE_WEBKITGTK
package/webkitgtk/Config.in:28: symbol BR2_PACKAGE_WEBKITGTK is selected 
by BR2_PACKAGE_MIDORI
package/midori/Config.in:24:    symbol BR2_PACKAGE_MIDORI depends on 
BR2_PACKAGE_LIBGTK3
package/libgtk3/Config.in:15:   symbol BR2_PACKAGE_LIBGTK3 is selected 
by BR2_PACKAGE_VTE
package/vte/Config.in:1:        symbol BR2_PACKAGE_VTE depends on 
BR2_PACKAGE_HAS_LIBEGL_WAYLAND
package/opengl/libegl/Config.in:4:      symbol 
BR2_PACKAGE_HAS_LIBEGL_WAYLAND is selected by 
BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
package/freescale-imx/imx-gpu-viv/Config.in:64: symbol 
BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL is part of choice <choice>
package/freescale-imx/imx-gpu-viv/Config.in:39: choice <choice> contains 
symbol <choice>
package/freescale-imx/imx-gpu-viv/Config.in:39: choice <choice> contains 
symbol BR2_PACKAGE_IMX_GPU_VIV
package/freescale-imx/imx-gpu-viv/Config.in:9:  symbol 
BR2_PACKAGE_IMX_GPU_VIV is selected by BR2_PACKAGE_IMX_GPU_G2D
package/freescale-imx/imx-gpu-g2d/Config.in:9:  symbol 
BR2_PACKAGE_IMX_GPU_G2D is selected by BR2_PACKAGE_GST1_IMX2_G2D
package/gstreamer1/gst1-imx2/Config.in:21:      symbol 
BR2_PACKAGE_GST1_IMX2_G2D depends on BR2_PACKAGE_GSTREAMER1
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"

There was a similar issue for gst1-imx:

https://lore.kernel.org/all/20160920224355.l76a3kggupuiugok@t450s.lan/

So, I will keep depends on here.

Regards,
Arnout Vandecappelle Aug. 8, 2022, 8:36 p.m. UTC | #5
On 08/08/2022 16:14, Sébastien Szymanski wrote:
> Hi Arnout,
> 
> On 7/28/22 21:51, Arnout Vandecappelle wrote:
>>
>>
>> On 12/01/2022 10:42, Sébastien Szymanski wrote:
>>> This is version 2 of gst1-imx.
>>
>>   Please add the following.
>>
>>   Although this replaces the gst1-imx package, we want to keep both because 
>> version 2 removes some elements that are relevant on i.MX6 without X11 or 
>> wayland: imxg2dvideosink, imxipuvideosink, imxeglvivsink.
>>
>>
>>> Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
>>> ---
>>>   package/gstreamer1/Config.in                |  1 +
>>>   package/gstreamer1/gst1-imx2/Config.in      | 75 +++++++++++++++++++++
>>>   package/gstreamer1/gst1-imx2/gst1-imx2.hash |  3 +
>>>   package/gstreamer1/gst1-imx2/gst1-imx2.mk   | 75 +++++++++++++++++++++
>>>   4 files changed, 154 insertions(+)
>>>   create mode 100644 package/gstreamer1/gst1-imx2/Config.in
>>>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.hash
>>>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.mk
>>>
>>> diff --git a/package/gstreamer1/Config.in b/package/gstreamer1/Config.in
>>> index 8fe8a34395..436c76379d 100644
>>> --- a/package/gstreamer1/Config.in
>>> +++ b/package/gstreamer1/Config.in
>>> @@ -9,6 +9,7 @@ source "package/gstreamer1/gst1-plugins-bad/Config.in"
>>>   source "package/gstreamer1/gst1-plugins-ugly/Config.in"
>>>   source "package/gstreamer1/gst1-devtools/Config.in"
>>>   source "package/gstreamer1/gst1-imx/Config.in"
>>> +source "package/gstreamer1/gst1-imx2/Config.in"
>>
>>   Note that this one should *not* move to package/freescale-imx, it's correct 
>> to put it here in gstreamer1.
>>
>>>   source "package/gstreamer1/gst1-interpipe/Config.in"
>>>   source "package/gstreamer1/gst1-libav/Config.in"
>>>   source "package/gstreamer1/gst1-python/Config.in"
>>> diff --git a/package/gstreamer1/gst1-imx2/Config.in 
>>> b/package/gstreamer1/gst1-imx2/Config.in
>>> new file mode 100644
>>> index 0000000000..b95e6bdb21
>>> --- /dev/null
>>> +++ b/package/gstreamer1/gst1-imx2/Config.in
>>> @@ -0,0 +1,75 @@
>>> +menuconfig BR2_PACKAGE_GST1_IMX2
>>> +    bool "gst1-imx2"
>>> +    depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX
>>> +    depends on BR2_PACKAGE_LIBIMXDMABUFFER
>>
>>   This should be a select.
>>
>>   On the other hand, it should also have
>>
>>      depends on BR2_PACKAGE_FREESCALE_IMX
>>
>>> +    select BR2_PACKAGE_GST1_PLUGINS_BASE
>>> +    help
>>> +      This is a set of GStreamer 1.0 plugins for plugins for
>>> +      Freescale's i.MX platforms, which make use of the i.MX
>>> +      multimedia capabilities.
>>> +
>>> +      https://github.com/Freescale/gstreamer-imx
>>> +
>>> +if BR2_PACKAGE_GST1_IMX2
>>> +
>>> +config BR2_PACKAGE_GST1_IMX2_G2D
>>> +    bool "imxg2d"
>>> +    depends on BR2_PACKAGE_IMX_GPU_G2D
>>
>>   All these depends on should also be turned in select, and propagate their 
>> dependencies. Since the dependencies are all architecture dependencies, I 
>> think, there's no need for a comment. You only need a comment for the linux 
>> dependency.
> 
> I have copied the gst1-imx package which uses depends on. 

  Well, we're trying to improve the situation :-)

> When using select the following issue appears:
> 
> package/gstreamer1/gstreamer1/Config.in:5:error: recursive dependency detected!
> package/gstreamer1/gstreamer1/Config.in:5:      symbol BR2_PACKAGE_GSTREAMER1 is 
> selected by BR2_PACKAGE_WEBKITGTK_MULTIMEDIA
> package/webkitgtk/Config.in:94: symbol BR2_PACKAGE_WEBKITGTK_MULTIMEDIA depends 
> on BR2_PACKAGE_WEBKITGTK
> package/webkitgtk/Config.in:28: symbol BR2_PACKAGE_WEBKITGTK is selected by 
> BR2_PACKAGE_MIDORI
> package/midori/Config.in:24:    symbol BR2_PACKAGE_MIDORI depends on 
> BR2_PACKAGE_LIBGTK3
> package/libgtk3/Config.in:15:   symbol BR2_PACKAGE_LIBGTK3 is selected by 
> BR2_PACKAGE_VTE
> package/vte/Config.in:1:        symbol BR2_PACKAGE_VTE depends on 
> BR2_PACKAGE_HAS_LIBEGL_WAYLAND
> package/opengl/libegl/Config.in:4:      symbol BR2_PACKAGE_HAS_LIBEGL_WAYLAND is 
> selected by BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
> package/freescale-imx/imx-gpu-viv/Config.in:64: symbol 
> BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL is part of choice <choice>
> package/freescale-imx/imx-gpu-viv/Config.in:39: choice <choice> contains symbol 
> <choice>
> package/freescale-imx/imx-gpu-viv/Config.in:39: choice <choice> contains symbol 
> BR2_PACKAGE_IMX_GPU_VIV
> package/freescale-imx/imx-gpu-viv/Config.in:9:  symbol BR2_PACKAGE_IMX_GPU_VIV 
> is selected by BR2_PACKAGE_IMX_GPU_G2D
> package/freescale-imx/imx-gpu-g2d/Config.in:9:  symbol BR2_PACKAGE_IMX_GPU_G2D 
> is selected by BR2_PACKAGE_GST1_IMX2_G2D
> package/gstreamer1/gst1-imx2/Config.in:21:      symbol BR2_PACKAGE_GST1_IMX2_G2D 
> depends on BR2_PACKAGE_GSTREAMER1
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"

  I'm trying to see the problem with this dependency chain, but I can't find 
it... Perhaps it's the choice for imx-gpu-viv output that is causing the problem.

  You did propagate the dependencies, right?

         depends on (BR2_arm && BR2_ARM_EABIHF) || BR2_aarch64 # imx-gpu-g2d
         depends on BR2_TOOLCHAIN_USES_GLIBC # imx-gpu-g2d


  Regards,
  Arnout

> 
> There was a similar issue for gst1-imx:
> 
> https://lore.kernel.org/all/20160920224355.l76a3kggupuiugok@t450s.lan/
> 
> So, I will keep depends on here.
> 
> Regards,
> 
>
Sébastien Szymanski Aug. 9, 2022, 12:50 p.m. UTC | #6
On 8/8/22 22:36, Arnout Vandecappelle wrote:
> 
> 
> On 08/08/2022 16:14, Sébastien Szymanski wrote:
>> Hi Arnout,
>>
>> On 7/28/22 21:51, Arnout Vandecappelle wrote:
>>>
>>>
>>> On 12/01/2022 10:42, Sébastien Szymanski wrote:
>>>> This is version 2 of gst1-imx.
>>>
>>>   Please add the following.
>>>
>>>   Although this replaces the gst1-imx package, we want to keep both 
>>> because version 2 removes some elements that are relevant on i.MX6 
>>> without X11 or wayland: imxg2dvideosink, imxipuvideosink, imxeglvivsink.
>>>
>>>
>>>> Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
>>>> ---
>>>>   package/gstreamer1/Config.in                |  1 +
>>>>   package/gstreamer1/gst1-imx2/Config.in      | 75 
>>>> +++++++++++++++++++++
>>>>   package/gstreamer1/gst1-imx2/gst1-imx2.hash |  3 +
>>>>   package/gstreamer1/gst1-imx2/gst1-imx2.mk   | 75 
>>>> +++++++++++++++++++++
>>>>   4 files changed, 154 insertions(+)
>>>>   create mode 100644 package/gstreamer1/gst1-imx2/Config.in
>>>>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.hash
>>>>   create mode 100644 package/gstreamer1/gst1-imx2/gst1-imx2.mk
>>>>
>>>> diff --git a/package/gstreamer1/Config.in 
>>>> b/package/gstreamer1/Config.in
>>>> index 8fe8a34395..436c76379d 100644
>>>> --- a/package/gstreamer1/Config.in
>>>> +++ b/package/gstreamer1/Config.in
>>>> @@ -9,6 +9,7 @@ source "package/gstreamer1/gst1-plugins-bad/Config.in"
>>>>   source "package/gstreamer1/gst1-plugins-ugly/Config.in"
>>>>   source "package/gstreamer1/gst1-devtools/Config.in"
>>>>   source "package/gstreamer1/gst1-imx/Config.in"
>>>> +source "package/gstreamer1/gst1-imx2/Config.in"
>>>
>>>   Note that this one should *not* move to package/freescale-imx, it's 
>>> correct to put it here in gstreamer1.
>>>
>>>>   source "package/gstreamer1/gst1-interpipe/Config.in"
>>>>   source "package/gstreamer1/gst1-libav/Config.in"
>>>>   source "package/gstreamer1/gst1-python/Config.in"
>>>> diff --git a/package/gstreamer1/gst1-imx2/Config.in 
>>>> b/package/gstreamer1/gst1-imx2/Config.in
>>>> new file mode 100644
>>>> index 0000000000..b95e6bdb21
>>>> --- /dev/null
>>>> +++ b/package/gstreamer1/gst1-imx2/Config.in
>>>> @@ -0,0 +1,75 @@
>>>> +menuconfig BR2_PACKAGE_GST1_IMX2
>>>> +    bool "gst1-imx2"
>>>> +    depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX
>>>> +    depends on BR2_PACKAGE_LIBIMXDMABUFFER
>>>
>>>   This should be a select.
>>>
>>>   On the other hand, it should also have
>>>
>>>      depends on BR2_PACKAGE_FREESCALE_IMX
>>>
>>>> +    select BR2_PACKAGE_GST1_PLUGINS_BASE
>>>> +    help
>>>> +      This is a set of GStreamer 1.0 plugins for plugins for
>>>> +      Freescale's i.MX platforms, which make use of the i.MX
>>>> +      multimedia capabilities.
>>>> +
>>>> +      https://github.com/Freescale/gstreamer-imx
>>>> +
>>>> +if BR2_PACKAGE_GST1_IMX2
>>>> +
>>>> +config BR2_PACKAGE_GST1_IMX2_G2D
>>>> +    bool "imxg2d"
>>>> +    depends on BR2_PACKAGE_IMX_GPU_G2D
>>>
>>>   All these depends on should also be turned in select, and propagate 
>>> their dependencies. Since the dependencies are all architecture 
>>> dependencies, I think, there's no need for a comment. You only need a 
>>> comment for the linux dependency.
>>
>> I have copied the gst1-imx package which uses depends on. 
> 
>   Well, we're trying to improve the situation :-)
> 
>> When using select the following issue appears:
>>
>> package/gstreamer1/gstreamer1/Config.in:5:error: recursive dependency 
>> detected!
>> package/gstreamer1/gstreamer1/Config.in:5:      symbol 
>> BR2_PACKAGE_GSTREAMER1 is selected by BR2_PACKAGE_WEBKITGTK_MULTIMEDIA
>> package/webkitgtk/Config.in:94: symbol 
>> BR2_PACKAGE_WEBKITGTK_MULTIMEDIA depends on BR2_PACKAGE_WEBKITGTK
>> package/webkitgtk/Config.in:28: symbol BR2_PACKAGE_WEBKITGTK is 
>> selected by BR2_PACKAGE_MIDORI
>> package/midori/Config.in:24:    symbol BR2_PACKAGE_MIDORI depends on 
>> BR2_PACKAGE_LIBGTK3
>> package/libgtk3/Config.in:15:   symbol BR2_PACKAGE_LIBGTK3 is selected 
>> by BR2_PACKAGE_VTE
>> package/vte/Config.in:1:        symbol BR2_PACKAGE_VTE depends on 
>> BR2_PACKAGE_HAS_LIBEGL_WAYLAND
>> package/opengl/libegl/Config.in:4:      symbol 
>> BR2_PACKAGE_HAS_LIBEGL_WAYLAND is selected by 
>> BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
>> package/freescale-imx/imx-gpu-viv/Config.in:64: symbol 
>> BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL is part of choice <choice>
>> package/freescale-imx/imx-gpu-viv/Config.in:39: choice <choice> 
>> contains symbol <choice>
>> package/freescale-imx/imx-gpu-viv/Config.in:39: choice <choice> 
>> contains symbol BR2_PACKAGE_IMX_GPU_VIV
>> package/freescale-imx/imx-gpu-viv/Config.in:9:  symbol 
>> BR2_PACKAGE_IMX_GPU_VIV is selected by BR2_PACKAGE_IMX_GPU_G2D
>> package/freescale-imx/imx-gpu-g2d/Config.in:9:  symbol 
>> BR2_PACKAGE_IMX_GPU_G2D is selected by BR2_PACKAGE_GST1_IMX2_G2D
>> package/gstreamer1/gst1-imx2/Config.in:21:      symbol 
>> BR2_PACKAGE_GST1_IMX2_G2D depends on BR2_PACKAGE_GSTREAMER1
>> For a resolution refer to Documentation/kbuild/kconfig-language.txt
>> subsection "Kconfig recursive dependency limitations"
> 
>   I'm trying to see the problem with this dependency chain, but I can't 
> find it... Perhaps it's the choice for imx-gpu-viv output that is 
> causing the problem.
> 
>   You did propagate the dependencies, right?

Yes, I did.

Regards,

> 
>          depends on (BR2_arm && BR2_ARM_EABIHF) || BR2_aarch64 # 
> imx-gpu-g2d
>          depends on BR2_TOOLCHAIN_USES_GLIBC # imx-gpu-g2d
> 
> 
>   Regards,
>   Arnout
> 
>>
>> There was a similar issue for gst1-imx:
>>
>> https://lore.kernel.org/all/20160920224355.l76a3kggupuiugok@t450s.lan/
>>
>> So, I will keep depends on here.
>>
>> Regards,
>>
>>
diff mbox series

Patch

diff --git a/package/gstreamer1/Config.in b/package/gstreamer1/Config.in
index 8fe8a34395..436c76379d 100644
--- a/package/gstreamer1/Config.in
+++ b/package/gstreamer1/Config.in
@@ -9,6 +9,7 @@  source "package/gstreamer1/gst1-plugins-bad/Config.in"
 source "package/gstreamer1/gst1-plugins-ugly/Config.in"
 source "package/gstreamer1/gst1-devtools/Config.in"
 source "package/gstreamer1/gst1-imx/Config.in"
+source "package/gstreamer1/gst1-imx2/Config.in"
 source "package/gstreamer1/gst1-interpipe/Config.in"
 source "package/gstreamer1/gst1-libav/Config.in"
 source "package/gstreamer1/gst1-python/Config.in"
diff --git a/package/gstreamer1/gst1-imx2/Config.in b/package/gstreamer1/gst1-imx2/Config.in
new file mode 100644
index 0000000000..b95e6bdb21
--- /dev/null
+++ b/package/gstreamer1/gst1-imx2/Config.in
@@ -0,0 +1,75 @@ 
+menuconfig BR2_PACKAGE_GST1_IMX2
+	bool "gst1-imx2"
+	depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX
+	depends on BR2_PACKAGE_LIBIMXDMABUFFER
+	select BR2_PACKAGE_GST1_PLUGINS_BASE
+	help
+	  This is a set of GStreamer 1.0 plugins for plugins for
+	  Freescale's i.MX platforms, which make use of the i.MX
+	  multimedia capabilities.
+
+	  https://github.com/Freescale/gstreamer-imx
+
+if BR2_PACKAGE_GST1_IMX2
+
+config BR2_PACKAGE_GST1_IMX2_G2D
+	bool "imxg2d"
+	depends on BR2_PACKAGE_IMX_GPU_G2D
+	help
+	  Elements leveraging the 2D GPU
+
+comment "imxg2d needs the G2D libraries"
+	depends on !BR2_PACKAGE_IMX_GPU_G2D
+
+config BR2_PACKAGE_GST1_IMX2_IPU
+	bool "imxipu"
+	depends on BR2_LINUX_KERNEL
+	help
+	  Elements leveraging the IPU
+
+comment "imxipu needs an imx-specific Linux kernel to be built"
+	depends on !BR2_LINUX_KERNEL
+
+config BR2_PACKAGE_GST1_IMX2_MP3ENCODER
+	bool "mp3encoder"
+	depends on BR2_PACKAGE_IMX_CODEC
+	help
+	  Elements for MP3 encoding
+
+comment "mp3encoder needs the i.MX codec binaries"
+	depends on !BR2_PACKAGE_IMX_CODEC
+
+config BR2_PACKAGE_GST1_IMX2_PXP
+	bool "imxpxp"
+	depends on BR2_LINUX_KERNEL
+	help
+	  Elements leveraging the PXP
+
+comment "imxpxp needs an imx-specific Linux kernel to be built"
+	depends on !BR2_LINUX_KERNEL
+
+config BR2_PACKAGE_GST1_IMX2_UNIAUDIODEC
+	bool "uniaudiodec"
+	depends on BR2_PACKAGE_IMX_CODEC
+	help
+	  Elements for audio decoding
+
+comment "uniaudiodec needs the i.MX codec binaries"
+	depends on !BR2_PACKAGE_IMX_CODEC
+
+config BR2_PACKAGE_GST1_IMX2_VPU
+	bool "imxvpu"
+	depends on BR2_PACKAGE_LIBIMXVPUAPI2
+	help
+	  Elements leveraging the VPU
+
+comment "imxvpu needs the VPU imxvpuapi2 library"
+	depends on !BR2_PACKAGE_LIBIMXVPUAPI2
+
+config BR2_PACKAGE_GST1_IMX2_V4L2
+	bool "imxv4l2"
+	select BR2_PACKAGE_GST1_PLUGINS_BAD
+	help
+	  Elements for V4L2 capture and output
+
+endif
diff --git a/package/gstreamer1/gst1-imx2/gst1-imx2.hash b/package/gstreamer1/gst1-imx2/gst1-imx2.hash
new file mode 100644
index 0000000000..cc0734fd52
--- /dev/null
+++ b/package/gstreamer1/gst1-imx2/gst1-imx2.hash
@@ -0,0 +1,3 @@ 
+# locally computed hash
+sha256  57c0e05b3d57f90df8a16760f4373e04ed60c3a7fab7844c00392f67f889d196  gst1-imx2-9a200b1551c4531234f9b6437eac2c42a07334b0.tar.gz
+sha256  94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23  LICENSE
diff --git a/package/gstreamer1/gst1-imx2/gst1-imx2.mk b/package/gstreamer1/gst1-imx2/gst1-imx2.mk
new file mode 100644
index 0000000000..f71aeae4f6
--- /dev/null
+++ b/package/gstreamer1/gst1-imx2/gst1-imx2.mk
@@ -0,0 +1,75 @@ 
+################################################################################
+#
+# gst1-imx2
+#
+################################################################################
+
+GST1_IMX2_VERSION = 9a200b1551c4531234f9b6437eac2c42a07334b0
+GST1_IMX2_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX2_VERSION))
+GST1_IMX2_LICENSE = LGPL-2.0+
+GST1_IMX2_LICENSE_FILES = LICENSE
+GST1_IMX2_INSTALL_STAGING = YES
+
+GST1_IMX2_DEPENDENCIES = \
+	host-pkgconf \
+	gstreamer1 \
+	gst1-plugins-base \
+	libimxdmabuffer
+
+GST1_IMX2_CONF_OPTS = -Dsysroot=$(STAGING_DIR)
+
+ifeq ($(BR2_LINUX_KERNEL),y)
+# IPU and PXP need access to imx-specific kernel headers
+GST1_IMX2_DEPENDENCIES += linux
+endif
+
+ifeq ($(BR2_PACKAGE_IMX_CODEC),y)
+GST1_IMX2_DEPENDENCIES += imx-codec
+endif
+
+ifeq ($(BR2_PACKAGE_GST1_IMX2_G2D),y)
+GST1_IMX2_CONF_OPTS += -Dg2d=enabled
+GST1_IMX2_DEPENDENCIES += imx-gpu-g2d
+else
+GST1_IMX2_CONF_OPTS += -Dg2d=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_GST1_IMX2_IPU),y)
+GST1_IMX2_CONF_OPTS += -Dipu=enabled
+else
+GST1_IMX2_CONF_OPTS += -Dipu=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_GST1_IMX2_MP3ENCODER),y)
+GST1_IMX2_CONF_OPTS += -Dmp3encoder=enabled
+else
+GST1_IMX2_CONF_OPTS += -Dmp3encoder=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_GST1_IMX2_PXP),y)
+GST1_IMX2_CONF_OPTS += -Dpxp=enabled
+else
+GST1_IMX2_CONF_OPTS += -Dpxp=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_GST1_IMX2_UNIAUDIODEC),y)
+GST1_IMX2_CONF_OPTS += -Duniaudiodec=enabled
+else
+GST1_IMX2_CONF_OPTS += -Duniaudiodec=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_GST1_IMX2_VPU),y)
+GST1_IMX2_DEPENDENCIES += libimxvpuapi2
+GST1_IMX2_CONF_OPTS += -Dvpu=enabled
+else
+GST1_IMX2_CONF_OPTS += -Dvpu=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_GST1_IMX2_V4L2),y)
+GST1_IMX2_DEPENDENCIES += gst1-plugins-bad
+GST1_IMX2_CONF_OPTS += -Dv4l2=true
+else
+GST1_IMX2_CONF_OPTS += -Dv4l2=false
+endif
+
+$(eval $(meson-package))