[Buildroot] [PATCH] package/opengl: ensure consistency between the various providers

Arnout Vandecappelle arnout at mind.be
Thu Feb 16 17:46:10 UTC 2017



On 14-02-17 22:13, Yann E. MORIN wrote:
> Some GL providers will provide libegl and libgles, but not libgl, while
> other will provide libgl but not libegl not libgles. This can be the
> case with:
>   - mesa3d       -> libgl
>   - rpi-userland -> libegl and libgles

 The commit message is missing an explanation of why this is bad... Something
like "Such a situation leads to conflicting headers and libraries when building
a package that uses both libgl and libegl."

> 
> Since we can not protect against this situation in the Config.in files
> (especially because providers may be out-of-tree), we can only check for
> the validity after the fact.

 Perhaps it would be possible to create a new opengl virtual package, and that
the libgl* providers provide opengl instead of the specific libgl. So libgl etc.
would no longer be virtual packages by themselves, but just suboptions of
opengl. The libgl* consumers would depend on BR2_PACKAGE_HAS_LIBGL but add
opengl to their dependencies instead of libgl.

 Clearly this alternative is too invasive for 2017.02, so your patch is still valid.

> 
> Fixes:
>     http://autobuild.buildroot.org/results/6f1/6f197c643972e92f0b27b3afac7da7b4b1115f7e/
>     http://autobuild.buildroot.org/results/6c6/6c6e0a236bde7b892a69119a49422119f3efaa97/
>     http://autobuild.buildroot.org/results/5a2/5a2a1503b7d19c0ca5b0e9093aa24ed9c020e812/

 Does the autobuilder script filter out errors like these? If not, the
autobuilder errors will not be fixed, they'll just move...

>     ...
> 
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> ---
>  package/opengl/opengl.mk | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/package/opengl/opengl.mk b/package/opengl/opengl.mk
> index abf96d5..47902f2 100644
> --- a/package/opengl/opengl.mk
> +++ b/package/opengl/opengl.mk
> @@ -1 +1,30 @@
>  include $(sort $(wildcard package/opengl/*/*.mk))
> +
> +# Ensure consistency betwenn the various GL providers:
> +
> +# If we have a libgl provider, then the libegl provider must be the same
> +ifeq ($(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_HAS_LIBEGL),yy)
> +# No need to qstrip, both are quoted
> +ifneq ($(BR2_PACKAGE_PROVIDES_LIBGL),$(BR2_PACKAGE_PROVIDES_LIBEGL))
> +$(error Provider for libgl ($(BR2_PACKAGE_PROVIDES_LIBGL)) is not the same \
> +	as for libegl ($(BR2_PACKAGE_PROVIDES_LIBEGL)))
> +endif
> +endif

 Shouldn't all this be protected by BR_BUILDING?

 Regards,
 Arnout

> +
> +# If we have a libgl provider, then the libgles provider must be the same
> +ifeq ($(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_HAS_LIBGLES),yy)
> +# No need to qstrip, both are quoted
> +ifneq ($(BR2_PACKAGE_PROVIDES_LIBGL),$(BR2_PACKAGE_PROVIDES_LIBGLES))
> +$(error Provider for libgl ($(BR2_PACKAGE_PROVIDES_LIBGL)) is not the same \
> +	as for libgles ($(BR2_PACKAGE_PROVIDES_LIBGLES)))
> +endif
> +endif
> +
> +# If we have a libegl provider, then the libgles provider must be the same
> +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGLES),yy)
> +# No need to qstrip, both are quoted
> +ifneq ($(BR2_PACKAGE_PROVIDES_LIBEGL),$(BR2_PACKAGE_PROVIDES_LIBGLES))
> +$(error Provider for libegl ($(BR2_PACKAGE_PROVIDES_LIBEGL)) is not the same \
> +	as for libgles ($(BR2_PACKAGE_PROVIDES_LIBGLES)))
> +endif
> +endif
> 

-- 
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



More information about the buildroot mailing list