* [Buildroot] [PATCH 1/2] package/gcnano-binaries: create symlinks for libGLESv2 and libGLESv1_CM.so
@ 2022-08-04 20:41 Thomas Petazzoni via buildroot
2022-08-04 20:41 ` [Buildroot] [PATCH 2/2] package/gcnano-binaries: set Version: field in .pc files Thomas Petazzoni via buildroot
2022-08-05 16:33 ` [Buildroot] [PATCH 1/2] package/gcnano-binaries: create symlinks for libGLESv2 and libGLESv1_CM.so Yann E. MORIN
0 siblings, 2 replies; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-08-04 20:41 UTC (permalink / raw)
To: buildroot; +Cc: kory.maincent, Jens Kleintje, Thomas Petazzoni
At least libepoxy, a user of OpenGL ES, expects libraries to be
available as libGLESv2.so.2 and libGLESv1_CM.so.1. While other OpenGL
implementations comply with this, gcnano-binaries does not, and
installs its libraries directly as .so, without any ABI version,
causing runtime failures with libepoxy or SDL2, as it tries to
dlopen() the OpenGL ES libraries with their ABI suffix.
See for example the libepoxy code:
https://github.com/anholt/libepoxy/blob/master/src/dispatch_common.c#L191
Fix this issue by adding the relevant symlinks.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
package/gcnano-binaries/gcnano-binaries.mk | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/package/gcnano-binaries/gcnano-binaries.mk b/package/gcnano-binaries/gcnano-binaries.mk
index dc309ec3c2..ce9b24cc3a 100644
--- a/package/gcnano-binaries/gcnano-binaries.mk
+++ b/package/gcnano-binaries/gcnano-binaries.mk
@@ -44,10 +44,17 @@ GCNANO_BINARIES_MODULE_MAKE_OPTS = \
GCNANO_BINARIES_USERLAND_SUBDIR = gcnano-userland-multi-$(GCNANO_BINARIES_USERLAND_VERSION)
+# This creates:
+# libGLESv2.so.2 -> libGLESv2.so
+# libGLESv1_CM.so.1 -> libGLESv1_CM.so
+# symlinks, as most OpenGL implementations have them, and they are
+# expected by some users such as libepoxy.
define GCNANO_BINARIES_INSTALL
cd $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/release/drivers/ ; \
find . -type f -exec $(INSTALL) -D -m 0755 {} $(1)/usr/lib/{} \; ; \
find . -type l -exec cp -a {} $(1)/usr/lib \;
+ ln -sf libGLESv2.so $(1)/usr/lib/libGLESv2.so.2
+ ln -sf libGLESv1_CM.so $(1)/usr/lib/libGLESv1_CM.so.1
mkdir -p $(1)/usr/include
cp -a $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/release/include/* $(1)/usr/include/
ln -sf gbm/gbm.h $(1)/usr/include/gbm.h
--
2.37.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 2/2] package/gcnano-binaries: set Version: field in .pc files
2022-08-04 20:41 [Buildroot] [PATCH 1/2] package/gcnano-binaries: create symlinks for libGLESv2 and libGLESv1_CM.so Thomas Petazzoni via buildroot
@ 2022-08-04 20:41 ` Thomas Petazzoni via buildroot
2022-08-05 16:35 ` Yann E. MORIN
2022-08-05 16:33 ` [Buildroot] [PATCH 1/2] package/gcnano-binaries: create symlinks for libGLESv2 and libGLESv1_CM.so Yann E. MORIN
1 sibling, 1 reply; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-08-04 20:41 UTC (permalink / raw)
To: buildroot; +Cc: kory.maincent, Jens Kleintje, Thomas Petazzoni
All .pc files have a Version field set to #VERSION#, which needs to be
replaced, otherwise packages checking the version of OpenGL ES, EGL,
GBM, etc. will fail. For example:
Dependency gbm found: NO unknown version, but need: ['>=17.1.0']
Such problems have been seen with both libepoxy and SDL2.
The version 21.1.1 is chosen because it matches what the Yocto recipe
is doing for this package:
https://github.com/STMicroelectronics/meta-st-stm32mp/blob/kirkstone/recipes-graphics/gcnano-userland/gcnano-userland.inc#L42
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
package/gcnano-binaries/gcnano-binaries.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package/gcnano-binaries/gcnano-binaries.mk b/package/gcnano-binaries/gcnano-binaries.mk
index ce9b24cc3a..d9c47bf64e 100644
--- a/package/gcnano-binaries/gcnano-binaries.mk
+++ b/package/gcnano-binaries/gcnano-binaries.mk
@@ -60,7 +60,7 @@ define GCNANO_BINARIES_INSTALL
ln -sf gbm/gbm.h $(1)/usr/include/gbm.h
cd $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/pkgconfig/ ; \
for file in *.pc ; do \
- sed -e "s|#PREFIX#|/usr|" $$file > $$file.temp ; \
+ sed -e "s|#PREFIX#|/usr|" -e "s|#VERSION#|21.1.1|" $$file > $$file.temp ; \
$(INSTALL) -D -m 0644 $$file.temp $(1)/usr/lib/pkgconfig/$$file ; \
done
endef
--
2.37.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH 1/2] package/gcnano-binaries: create symlinks for libGLESv2 and libGLESv1_CM.so
2022-08-04 20:41 [Buildroot] [PATCH 1/2] package/gcnano-binaries: create symlinks for libGLESv2 and libGLESv1_CM.so Thomas Petazzoni via buildroot
2022-08-04 20:41 ` [Buildroot] [PATCH 2/2] package/gcnano-binaries: set Version: field in .pc files Thomas Petazzoni via buildroot
@ 2022-08-05 16:33 ` Yann E. MORIN
1 sibling, 0 replies; 5+ messages in thread
From: Yann E. MORIN @ 2022-08-05 16:33 UTC (permalink / raw)
To: Thomas Petazzoni; +Cc: kory.maincent, Jens Kleintje, buildroot
Thomas, All,
On 2022-08-04 22:41 +0200, Thomas Petazzoni via buildroot spake thusly:
> At least libepoxy, a user of OpenGL ES, expects libraries to be
> available as libGLESv2.so.2 and libGLESv1_CM.so.1. While other OpenGL
> implementations comply with this, gcnano-binaries does not, and
> installs its libraries directly as .so, without any ABI version,
> causing runtime failures with libepoxy or SDL2, as it tries to
> dlopen() the OpenGL ES libraries with their ABI suffix.
>
> See for example the libepoxy code:
>
> https://github.com/anholt/libepoxy/blob/master/src/dispatch_common.c#L191
>
> Fix this issue by adding the relevant symlinks.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Applied to master, thanks.
(this is a bit of a convoluted install command, if any...)
Regards,
Yann E. MORIN.
> ---
> package/gcnano-binaries/gcnano-binaries.mk | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/package/gcnano-binaries/gcnano-binaries.mk b/package/gcnano-binaries/gcnano-binaries.mk
> index dc309ec3c2..ce9b24cc3a 100644
> --- a/package/gcnano-binaries/gcnano-binaries.mk
> +++ b/package/gcnano-binaries/gcnano-binaries.mk
> @@ -44,10 +44,17 @@ GCNANO_BINARIES_MODULE_MAKE_OPTS = \
>
> GCNANO_BINARIES_USERLAND_SUBDIR = gcnano-userland-multi-$(GCNANO_BINARIES_USERLAND_VERSION)
>
> +# This creates:
> +# libGLESv2.so.2 -> libGLESv2.so
> +# libGLESv1_CM.so.1 -> libGLESv1_CM.so
> +# symlinks, as most OpenGL implementations have them, and they are
> +# expected by some users such as libepoxy.
> define GCNANO_BINARIES_INSTALL
> cd $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/release/drivers/ ; \
> find . -type f -exec $(INSTALL) -D -m 0755 {} $(1)/usr/lib/{} \; ; \
> find . -type l -exec cp -a {} $(1)/usr/lib \;
> + ln -sf libGLESv2.so $(1)/usr/lib/libGLESv2.so.2
> + ln -sf libGLESv1_CM.so $(1)/usr/lib/libGLESv1_CM.so.1
> mkdir -p $(1)/usr/include
> cp -a $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/release/include/* $(1)/usr/include/
> ln -sf gbm/gbm.h $(1)/usr/include/gbm.h
> --
> 2.37.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH 2/2] package/gcnano-binaries: set Version: field in .pc files
2022-08-04 20:41 ` [Buildroot] [PATCH 2/2] package/gcnano-binaries: set Version: field in .pc files Thomas Petazzoni via buildroot
@ 2022-08-05 16:35 ` Yann E. MORIN
2022-08-06 13:40 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 5+ messages in thread
From: Yann E. MORIN @ 2022-08-05 16:35 UTC (permalink / raw)
To: Thomas Petazzoni; +Cc: kory.maincent, Jens Kleintje, buildroot
Thomas, All,
On 2022-08-04 22:41 +0200, Thomas Petazzoni via buildroot spake thusly:
> All .pc files have a Version field set to #VERSION#, which needs to be
> replaced, otherwise packages checking the version of OpenGL ES, EGL,
> GBM, etc. will fail. For example:
>
> Dependency gbm found: NO unknown version, but need: ['>=17.1.0']
>
> Such problems have been seen with both libepoxy and SDL2.
>
> The version 21.1.1 is chosen because it matches what the Yocto recipe
> is doing for this package:
>
> https://github.com/STMicroelectronics/meta-st-stm32mp/blob/kirkstone/recipes-graphics/gcnano-userland/gcnano-userland.inc#L42
... which they did not provide any explanation for...
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Applied to master, thanks.
Regards,
Yann E. MORIN.
> ---
> package/gcnano-binaries/gcnano-binaries.mk | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/package/gcnano-binaries/gcnano-binaries.mk b/package/gcnano-binaries/gcnano-binaries.mk
> index ce9b24cc3a..d9c47bf64e 100644
> --- a/package/gcnano-binaries/gcnano-binaries.mk
> +++ b/package/gcnano-binaries/gcnano-binaries.mk
> @@ -60,7 +60,7 @@ define GCNANO_BINARIES_INSTALL
> ln -sf gbm/gbm.h $(1)/usr/include/gbm.h
> cd $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/pkgconfig/ ; \
> for file in *.pc ; do \
> - sed -e "s|#PREFIX#|/usr|" $$file > $$file.temp ; \
> + sed -e "s|#PREFIX#|/usr|" -e "s|#VERSION#|21.1.1|" $$file > $$file.temp ; \
> $(INSTALL) -D -m 0644 $$file.temp $(1)/usr/lib/pkgconfig/$$file ; \
> done
> endef
> --
> 2.37.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH 2/2] package/gcnano-binaries: set Version: field in .pc files
2022-08-05 16:35 ` Yann E. MORIN
@ 2022-08-06 13:40 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-08-06 13:40 UTC (permalink / raw)
To: Yann E. MORIN; +Cc: kory.maincent, Jens Kleintje, buildroot
On Fri, 5 Aug 2022 18:35:34 +0200
"Yann E. MORIN" <yann.morin.1998@free.fr> wrote:
> > The version 21.1.1 is chosen because it matches what the Yocto recipe
> > is doing for this package:
> >
> > https://github.com/STMicroelectronics/meta-st-stm32mp/blob/kirkstone/recipes-graphics/gcnano-userland/gcnano-userland.inc#L42
>
> ... which they did not provide any explanation for...
It matches a somewhat corresponding mesa3d version, I suppose. This is
at least how some packages detect if libgbm is recent enough for their
needs (I've seen a package require >= 17 for example).
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-08-06 13:40 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-04 20:41 [Buildroot] [PATCH 1/2] package/gcnano-binaries: create symlinks for libGLESv2 and libGLESv1_CM.so Thomas Petazzoni via buildroot
2022-08-04 20:41 ` [Buildroot] [PATCH 2/2] package/gcnano-binaries: set Version: field in .pc files Thomas Petazzoni via buildroot
2022-08-05 16:35 ` Yann E. MORIN
2022-08-06 13:40 ` Thomas Petazzoni via buildroot
2022-08-05 16:33 ` [Buildroot] [PATCH 1/2] package/gcnano-binaries: create symlinks for libGLESv2 and libGLESv1_CM.so Yann E. MORIN
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox