diff mbox series

[1/2] package/gcnano-binaries: new package

Message ID 20191106155611.31575-2-scooby22@web.de
State Changes Requested
Headers show
Series package/gcnano-binaries: new package | expand

Commit Message

Jens Kleintje Nov. 6, 2019, 3:56 p.m. UTC
New package which provides the driver and binary blob libraries for the
STM32MP157 vivante gcnano gpu.
The precompiled libaries depends on wayland and libdrm.
Since the github repo has no releases/tags we use the standard git method
with explicit SHA.
---
 package/Config.in                            |  1 +
 package/gcnano-binaries/gcnano-binaries.hash |  2 +
 package/gcnano-binaries/gcnano-binaries.mk   | 87 ++++++++++++++++++++
 3 files changed, 90 insertions(+)
 create mode 100644 package/gcnano-binaries/gcnano-binaries.hash
 create mode 100644 package/gcnano-binaries/gcnano-binaries.mk

--
2.17.1

Comments

Thomas Petazzoni Nov. 6, 2019, 10:08 p.m. UTC | #1
Hello Jens,

Thanks for your contribution! I suppose you're the person I met last
week during the Embedded Linux Conference Europe in Lyon, who asked me
about submitting this gcnano-binaries package ?

In any case, glad to see this package being contributed.

On Wed,  6 Nov 2019 16:56:10 +0100
Jens Kleintje <scooby22@web.de> wrote:

> New package which provides the driver and binary blob libraries for the
> STM32MP157 vivante gcnano gpu.
> The precompiled libaries depends on wayland and libdrm.
> Since the github repo has no releases/tags we use the standard git method
> with explicit SHA.

We need your Signed-off-by line here.

> ---
>  package/Config.in                            |  1 +
>  package/gcnano-binaries/gcnano-binaries.hash |  2 +
>  package/gcnano-binaries/gcnano-binaries.mk   | 87 ++++++++++++++++++++

You forgot to include the package/gcnano-binaries/Config.in file in
your patch, so we cannot review the full package.

Also, please add an entry in the DEVELOPERS file for this new package.

> diff --git a/package/gcnano-binaries/gcnano-binaries.hash b/package/gcnano-binaries/gcnano-binaries.hash
> new file mode 100644
> index 0000000000..fae7e56deb
> --- /dev/null
> +++ b/package/gcnano-binaries/gcnano-binaries.hash
> @@ -0,0 +1,2 @@
> +sha256 19f3fe4e83ec95fd2ecb70d5cb03c7b00a13357966a9b6e56b59e5788c550c88  gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed.tar.gz
> +sha256 7d209718473d18f69f75adb7caf9cb5d4b0a31da068756aa011bea617de3dc57  EULA
> diff --git a/package/gcnano-binaries/gcnano-binaries.mk b/package/gcnano-binaries/gcnano-binaries.mk
> new file mode 100644
> index 0000000000..806abd7840
> --- /dev/null
> +++ b/package/gcnano-binaries/gcnano-binaries.mk
> @@ -0,0 +1,87 @@
> +################################################################################
> +#
> +# VIVANTE GCNANO BINARIES
> +#
> +################################################################################
> +
> +
> +GCNANO_BINARIES_FILE_VERSION = 6.2.4.p4
> +GCNANO_BINARIES_VERSION = c01642ed5e18cf09ecd905af193e935cb3be95ed
> +GCNANO_BINARIES_SITE = https://github.com/STMicroelectronics/gcnano-binaries.git
> +GCNANO_BINARIES_SITE_METHOD = git

Please use the "github" helper macro:

GCNANO_BINARIES_VERSION = c01642ed5e18cf09ecd905af193e935cb3be95ed
GCNANO_BINARIES_SITE = $(call github,STMicroelectronics,gcnano-binaries,$(GCNANO_BINARIES_VERSION))

and remove the _SITE_METHOD variable.

> +
> +GCNANO_BINARIES_LICENSE = MIT, Vivante End User Software License Terms
> +GCNANO_BINARIES_LICENSE_FILES = EULA
> +GCNANO_BINARIES_REDISTRIBUTE = NO
> +
> +GCNANO_BINARIES_DEPENDENCIES = linux wayland libdrm
> +
> +GCNANO_BINARIES_INSTALL_STAGING = YES
> +
> +GCNANO_BINARIES_PROVIDES = libegl libgles
> +
> +define GCNANO_BINARIES_EXTRACT_HELPER
> +        awk 'BEGIN      { start = 0; } \
> +             /^EOEULA/  { start = 0; } \
> +                        { if (start) print; } \
> +             /<<EOEULA/ { start = 1; }' \
> +            $(1) > $(@D)/EULA
> +        cd $(@D) && sh $(1) --auto-accept
> +        find $(@D)/$(basename $(notdir $(1))) -mindepth 1 -maxdepth 1 -exec mv {} $(@D) \;
> +        rmdir $(@D)/$(basename $(notdir $(1)))
> +endef
> +
> +
> +define GCNANO_BINARIES_EXTRACT_CMDS
> +gzip -d -c $(GCNANO_BINARIES_DL_DIR)/gcnano-binaries-$(GCNANO_BINARIES_VERSION).tar.gz | tar --strip-components=1 -C $(@D) -xf -
> +tar --strip-components=1 -xJf $(@D)/gcnano-driver-$(GCNANO_BINARIES_FILE_VERSION).tar.xz -C $(@D)

These two lines look like the default extract commands, so why are you
doing this ? Just because you need to call the
GCNANO_BINARIES_EXTRACT_HELPER ?

If so, then you don't need that, simply do:

GCNANO_BINARIES_POST_EXTRACT_HOOKS += GCNANO_BINARIES_EXTRACT_HELPER

and in GCNANO_BINARIES_EXTRACT_HELPER, instead of using $(1), just use
$(@D)/gcnano-userland-multi-$(GCNANO_BINARIES_FILE_VERSION)-20190626.bin
directly.

Also, could you add a comment on top of GCNANO_BINARIES_EXTRACT_HELPER
to explain what it does, because it is not obvious.

> +$(call GCNANO_BINARIES_EXTRACT_HELPER,$(@D)/gcnano-userland-multi-$(GCNANO_BINARIES_FILE_VERSION)-20190626.bin)
> +endef
> +
> +GCNANO_BINARIES_MODULE_MAKE_OPTS = \
> +	KERNEL_DIR=$(LINUX_DIR) \
> +	SOC_PLATFORM=st-st\

Space before \

> +	AQROOT=$(@D)\

Ditto.

> +	DEBUG=0
> +
> +define GCNANO_BINARIES_INSTALL_STAGING_CMDS
> +	cp $(@D)/usr/lib/pkgconfig/* $(STAGING_DIR)/usr/lib/pkgconfig/
> +	cp -r $(@D)/usr/lib/* $(STAGING_DIR)/usr/lib/
> +	cd $(STAGING_DIR)/usr/lib; \
> +	ln -sf gbm_viv.6.2.4.multi.release.so gbm_viv.so; \
> +	ln -sf libEGL.6.2.4.multi.release.so libEGL.so; \
> +	ln -sf libEGL.so libEGL.so.1; \
> +	ln -sf libGAL.6.2.4.multi.release.so libGAL.so; \
> +	ln -sf libgbm.6.2.4.multi.release.so libgbm.so; \
> +	ln -sf libgbm.so libgbm.so.1; \
> +	ln -sf libGLESv1_CM.6.2.4.multi.release.so libGLESv1_CM.so; \
> +	ln -sf libGLESv2.6.2.4.multi.release.so libGLESv2.so; \
> +	ln -sf libGLESv2.so libGLESv2.so.2; \
> +	ln -sf libGLSLC.6.2.4.multi.release.so libGLSLC.so; \
> +	ln -sf libOpenVG.6.2.4.multi.release.so libOpenVG.so; \
> +	ln -sf libVSC.6.2.4.multi.release.so libVSC.so
> +	rm -f $(STAGING_DIR)/usr/lib/pkgconfig/wayland-egl.pc

Why are you removing this .pc file ?

> +	cp -r $(@D)/usr/include/* $(STAGING_DIR)/usr/include/
> +endef
> +
> +GCNANO_BINARIES_POST_INSTALL_TARGET_HOOKS += GCNANO_BINARIES_COPY_LIBS

I am not sure why you are using a
GCNANO_BINARIES_POST_INSTALL_TARGET_HOOKS. Why not simply rename
GCNANO_BINARIES_COPY_LIBS to GCNANO_BINARIES_INSTALL_TARGET_CMDS.

> +define GCNANO_BINARIES_COPY_LIBS
> +	cp -r $(@D)/usr/lib/* $(TARGET_DIR)/usr/lib/
> +	cd $(TARGET_DIR)/usr/lib; \
> +	ln -sf gbm_viv.6.2.4.multi.release.so gbm_viv.so; \
> +	ln -sf libEGL.6.2.4.multi.release.so libEGL.so; \
> +	ln -sf libEGL.so libEGL.so.1; \
> +	ln -sf libGAL.6.2.4.multi.release.so libGAL.so; \
> +	ln -sf libgbm.6.2.4.multi.release.so libgbm.so; \
> +	ln -sf libgbm.so libgbm.so.1; \
> +	ln -sf libGLESv1_CM.6.2.4.multi.release.so libGLESv1_CM.so; \
> +	ln -sf libGLESv2.6.2.4.multi.release.so libGLESv2.so; \
> +	ln -sf libGLESv2.so libGLESv2.so.2; \
> +	ln -sf libGLSLC.6.2.4.multi.release.so libGLSLC.so; \
> +	ln -sf libOpenVG.6.2.4.multi.release.so libOpenVG.so; \
> +	ln -sf libVSC.6.2.4.multi.release.so libVSC.so;
> +endef

The long list of symlinks to be created is not nice, but I don't really
see a nicer solution to achieve the same. Perhaps one thing that could
be done is to factorize stuff a bit:

define GCNANO_BINARIES_INSTALL
	cp $(@D)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
	cp -r $(@D)/usr/lib/* $(1)/usr/lib/
	cd $(1)/usr/lib; \
	ln -sf gbm_viv.6.2.4.multi.release.so gbm_viv.so; \
	ln -sf libEGL.6.2.4.multi.release.so libEGL.so; \
	ln -sf libEGL.so libEGL.so.1; \
	ln -sf libGAL.6.2.4.multi.release.so libGAL.so; \
	ln -sf libgbm.6.2.4.multi.release.so libgbm.so; \
	ln -sf libgbm.so libgbm.so.1; \
	ln -sf libGLESv1_CM.6.2.4.multi.release.so libGLESv1_CM.so; \
	ln -sf libGLESv2.6.2.4.multi.release.so libGLESv2.so; \
	ln -sf libGLESv2.so libGLESv2.so.2; \
	ln -sf libGLSLC.6.2.4.multi.release.so libGLSLC.so; \
	ln -sf libOpenVG.6.2.4.multi.release.so libOpenVG.so; \
	ln -sf libVSC.6.2.4.multi.release.so libVSC.so
	rm -f $(1)/usr/lib/pkgconfig/wayland-egl.pc
	cp -r $(@D)/usr/include/* $(1)/usr/include/
endef

And then:

define GCNANO_BINARIES_INSTALL_STAGING_CMDS
	$(call GCNANO_BINARIES_INSTALL,$(STAGING_DIR))
endef

define GCNANO_BINARIES_INSTALL_TARGET_CMDS
	$(call GCNANO_BINARIES_INSTALL,$(TARGET_DIR))
endef

Note: it is perfectly fine to install header files and .pc files to
$(TARGET_DIR), they anyway get cleaned up later in the build.

Could you rework your patch to take into account those comments ?

Thanks!

Thomas
Jens Kleintje Nov. 11, 2019, 10:19 a.m. UTC | #2
> Gesendet: Mittwoch, 06. November 2019 um 23:08 Uhr
> Von: "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>
> An: "Jens Kleintje" <scooby22@web.de>
> Cc: buildroot@busybox.net
> Betreff: Re: [Buildroot] [PATCH 1/2] package/gcnano-binaries: new package
> Hello Jens,

> Thanks for your contribution! I suppose you're the person I met last
> week during the Embedded Linux Conference Europe in Lyon, who asked me
> about submitting this gcnano-binaries package ?
You are right.

> > In any case, glad to see this package being contributed.

> > On Wed, 6 Nov 2019 16:56:10 +0100
> > Jens Kleintje <scooby22@web.de> wrote:

> > New package which provides the driver and binary blob libraries for the
> > STM32MP157 vivante gcnano gpu.
> > The precompiled libaries depends on wayland and libdrm.
> > Since the github repo has no releases/tags we use the standard git method
> > with explicit SHA.

> We need your Signed-off-by line here.
OK

> > ---
> > package/Config.in | 1 +
> > package/gcnano-binaries/gcnano-binaries.hash | 2 +
> > package/gcnano-binaries/gcnano-binaries.mk | 87 ++++++++++++++++++++

> You forgot to include the package/gcnano-binaries/Config.in file in
> your patch, so we cannot review the full package.
Sorry

> Also, please add an entry in the DEVELOPERS file for this new package.
OK

> > diff --git a/package/gcnano-binaries/gcnano-binaries.hash b/package/gcnano-binaries/gcnano-binaries.hash
> > new file mode 100644
> > index 0000000000..fae7e56deb
> > --- /dev/null
> > +++ b/package/gcnano-binaries/gcnano-binaries.hash
> > @@ -0,0 +1,2 @@
> > +sha256 19f3fe4e83ec95fd2ecb70d5cb03c7b00a13357966a9b6e56b59e5788c550c88 gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed.tar.gz
> > +sha256 7d209718473d18f69f75adb7caf9cb5d4b0a31da068756aa011bea617de3dc57 EULA
> > diff --git a/package/gcnano-binaries/gcnano-binaries.mk b/package/gcnano-binaries/gcnano-binaries.mk
> > new file mode 100644
> > index 0000000000..806abd7840
> > --- /dev/null
> > +++ b/package/gcnano-binaries/gcnano-binaries.mk
> > @@ -0,0 +1,87 @@
> > +################################################################################
> > +#
> > +# VIVANTE GCNANO BINARIES
> > +#
> > +################################################################################
> > +
> > +
> > +GCNANO_BINARIES_FILE_VERSION = 6.2.4.p4
> > +GCNANO_BINARIES_VERSION = c01642ed5e18cf09ecd905af193e935cb3be95ed
> > +GCNANO_BINARIES_SITE = https://github.com/STMicroelectronics/gcnano-binaries.git
> > +GCNANO_BINARIES_SITE_METHOD = git

> Please use the "github" helper macro:

> GCNANO_BINARIES_VERSION = c01642ed5e18cf09ecd905af193e935cb3be95ed
> GCNANO_BINARIES_SITE = $(call github,STMicroelectronics,gcnano-binaries,$(GCNANO_BINARIES_VERSION))

> and remove the _SITE_METHOD variable.
The page (https://github.com/STMicroelectronics/gcnano-binaries)
has no release and no tag. So I think there is no archive directory.

> > +
> > +GCNANO_BINARIES_LICENSE = MIT, Vivante End User Software License Terms
> > +GCNANO_BINARIES_LICENSE_FILES = EULA
> > +GCNANO_BINARIES_REDISTRIBUTE = NO
> > +
> > +GCNANO_BINARIES_DEPENDENCIES = linux wayland libdrm
> > +
> > +GCNANO_BINARIES_INSTALL_STAGING = YES
> > +
> > +GCNANO_BINARIES_PROVIDES = libegl libgles
> > +
> > +define GCNANO_BINARIES_EXTRACT_HELPER
> > + awk 'BEGIN { start = 0; } \
> > + /^EOEULA/ { start = 0; } \
> > + { if (start) print; } \
> > + /<<EOEULA/ { start = 1; }' \
> > + $(1) > $(@D)/EULA
> > + cd $(@D) && sh $(1) --auto-accept
> > + find $(@D)/$(basename $(notdir $(1))) -mindepth 1 -maxdepth 1 -exec mv {} $(@D) \;
> > + rmdir $(@D)/$(basename $(notdir $(1)))
> > +endef
> > +
> > +
> > +define GCNANO_BINARIES_EXTRACT_CMDS
> > +gzip -d -c $(GCNANO_BINARIES_DL_DIR)/gcnano-binaries-$(GCNANO_BINARIES_VERSION).tar.gz | tar --strip-components=1 -C $(@D) -xf -
> > +tar --strip-components=1 -xJf $(@D)/gcnano-driver-$(GCNANO_BINARIES_FILE_VERSION).tar.xz -C $(@D)

> These two lines look like the default extract commands, so why are you
> doing this ? Just because you need to call the
> GCNANO_BINARIES_EXTRACT_HELPER ?

> If so, then you don't need that, simply do:

> GCNANO_BINARIES_POST_EXTRACT_HOOKS += GCNANO_BINARIES_EXTRACT_HELPER

> and in GCNANO_BINARIES_EXTRACT_HELPER, instead of using $(1), just use
> $(@D)/gcnano-userland-multi-$(GCNANO_BINARIES_FILE_VERSION)-20190626.bin
> directly.

> Also, could you add a comment on top of GCNANO_BINARIES_EXTRACT_HELPER
> to explain what it does, because it is not obvious.
OK

> > +$(call GCNANO_BINARIES_EXTRACT_HELPER,$(@D)/gcnano-userland-multi-$(GCNANO_BINARIES_FILE_VERSION)-20190626.bin)
> > +endef
> > +
> > +GCNANO_BINARIES_MODULE_MAKE_OPTS = \
> > + KERNEL_DIR=$(LINUX_DIR) \
> > + SOC_PLATFORM=st-st\

> Space before \

> > + AQROOT=$(@D)\

> Ditto.

> > + DEBUG=0
> > +
> > +define GCNANO_BINARIES_INSTALL_STAGING_CMDS
> > + cp $(@D)/usr/lib/pkgconfig/* $(STAGING_DIR)/usr/lib/pkgconfig/
> > + cp -r $(@D)/usr/lib/* $(STAGING_DIR)/usr/lib/
> > + cd $(STAGING_DIR)/usr/lib; \
> > + ln -sf gbm_viv.6.2.4.multi.release.so gbm_viv.so; \
> > + ln -sf libEGL.6.2.4.multi.release.so libEGL.so; \
> > + ln -sf libEGL.so libEGL.so.1; \
> > + ln -sf libGAL.6.2.4.multi.release.so libGAL.so; \
> > + ln -sf libgbm.6.2.4.multi.release.so libgbm.so; \
> > + ln -sf libgbm.so libgbm.so.1; \
> > + ln -sf libGLESv1_CM.6.2.4.multi.release.so libGLESv1_CM.so; \
> > + ln -sf libGLESv2.6.2.4.multi.release.so libGLESv2.so; \
> > + ln -sf libGLESv2.so libGLESv2.so.2; \
> > + ln -sf libGLSLC.6.2.4.multi.release.so libGLSLC.so; \
> > + ln -sf libOpenVG.6.2.4.multi.release.so libOpenVG.so; \
> > + ln -sf libVSC.6.2.4.multi.release.so libVSC.so
> > + rm -f $(STAGING_DIR)/usr/lib/pkgconfig/wayland-egl.pc

> Why are you removing this .pc file ?
The file is already provided by wayland package.
I saw it from in the yocto package  
https://github.com/STMicroelectronics/meta-st-stm32mp/blob/thud/recipes-graphics/gcnano-userland/gcnano-userland-binary.inc

> > + cp -r $(@D)/usr/include/* $(STAGING_DIR)/usr/include/
> > +endef
> > +
> > +GCNANO_BINARIES_POST_INSTALL_TARGET_HOOKS += GCNANO_BINARIES_COPY_LIBS

> I am not sure why you are using a
> GCNANO_BINARIES_POST_INSTALL_TARGET_HOOKS. Why not simply rename
> GCNANO_BINARIES_COPY_LIBS to GCNANO_BINARIES_INSTALL_TARGET_CMDS.
I need to accept the EULA. But some parts I will move.

> > +define GCNANO_BINARIES_COPY_LIBS
> > + cp -r $(@D)/usr/lib/* $(TARGET_DIR)/usr/lib/
> > + cd $(TARGET_DIR)/usr/lib; \
> > + ln -sf gbm_viv.6.2.4.multi.release.so gbm_viv.so; \
> > + ln -sf libEGL.6.2.4.multi.release.so libEGL.so; \
> > + ln -sf libEGL.so libEGL.so.1; \
> > + ln -sf libGAL.6.2.4.multi.release.so libGAL.so; \
> > + ln -sf libgbm.6.2.4.multi.release.so libgbm.so; \
> > + ln -sf libgbm.so libgbm.so.1; \
> > + ln -sf libGLESv1_CM.6.2.4.multi.release.so libGLESv1_CM.so; \
> > + ln -sf libGLESv2.6.2.4.multi.release.so libGLESv2.so; \
> > + ln -sf libGLESv2.so libGLESv2.so.2; \
> > + ln -sf libGLSLC.6.2.4.multi.release.so libGLSLC.so; \
> > + ln -sf libOpenVG.6.2.4.multi.release.so libOpenVG.so; \
> > + ln -sf libVSC.6.2.4.multi.release.so libVSC.so;
> > +endef

> The long list of symlinks to be created is not nice, but I don't really
> see a nicer solution to achieve the same. Perhaps one thing that could
> be done is to factorize stuff a bit:

> define GCNANO_BINARIES_INSTALL
> cp $(@D)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
> cp -r $(@D)/usr/lib/* $(1)/usr/lib/
> cd $(1)/usr/lib; \
> ln -sf gbm_viv.6.2.4.multi.release.so gbm_viv.so; \
> ln -sf libEGL.6.2.4.multi.release.so libEGL.so; \
> ln -sf libEGL.so libEGL.so.1; \
> ln -sf libGAL.6.2.4.multi.release.so libGAL.so; \
> ln -sf libgbm.6.2.4.multi.release.so libgbm.so; \
> ln -sf libgbm.so libgbm.so.1; \
> ln -sf libGLESv1_CM.6.2.4.multi.release.so libGLESv1_CM.so; \
> ln -sf libGLESv2.6.2.4.multi.release.so libGLESv2.so; \
> ln -sf libGLESv2.so libGLESv2.so.2; \
> ln -sf libGLSLC.6.2.4.multi.release.so libGLSLC.so; \
> ln -sf libOpenVG.6.2.4.multi.release.so libOpenVG.so; \
> ln -sf libVSC.6.2.4.multi.release.so libVSC.so
> rm -f $(1)/usr/lib/pkgconfig/wayland-egl.pc
> cp -r $(@D)/usr/include/* $(1)/usr/include/
> endef

> And then:

> define GCNANO_BINARIES_INSTALL_STAGING_CMDS
> $(call GCNANO_BINARIES_INSTALL,$(STAGING_DIR))
> endef

> define GCNANO_BINARIES_INSTALL_TARGET_CMDS
> $(call GCNANO_BINARIES_INSTALL,$(TARGET_DIR))
> endef

> Note: it is perfectly fine to install header files and .pc files to
> $(TARGET_DIR), they anyway get cleaned up later in the build.
OK

> Could you rework your patch to take into account those comments ?
Will come soon.
> Thanks!

> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com[https://bootlin.com]
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot[http://lists.busybox.net/mailman/listinfo/buildroot]
Regards

Jens Kleintje
Thomas Petazzoni Nov. 11, 2019, 1:16 p.m. UTC | #3
Hello Jens,

On Mon, 11 Nov 2019 11:19:31 +0100
"Jens Kleintje" <Scooby22@web.de> wrote:

> > Please use the "github" helper macro:  
> 
> > GCNANO_BINARIES_VERSION = c01642ed5e18cf09ecd905af193e935cb3be95ed
> > GCNANO_BINARIES_SITE = $(call github,STMicroelectronics,gcnano-binaries,$(GCNANO_BINARIES_VERSION))  
> 
> > and remove the _SITE_METHOD variable.  
> The page (https://github.com/STMicroelectronics/gcnano-binaries)
> has no release and no tag. So I think there is no archive directory.

Not a problem, the github macro works with any arbitrary commit.

> > > + rm -f $(STAGING_DIR)/usr/lib/pkgconfig/wayland-egl.pc  
> 
> > Why are you removing this .pc file ?  
> The file is already provided by wayland package.
> I saw it from in the yocto package  
> https://github.com/STMicroelectronics/meta-st-stm32mp/blob/thud/recipes-graphics/gcnano-userland/gcnano-userland-binary.inc

Then, if you could add a comment in the .mk file about this, it would
be good.

> > Could you rework your patch to take into account those comments ?  
> Will come soon.

Great, thanks!

Thomas
Jens Kleintje Nov. 11, 2019, 1:48 p.m. UTC | #4
> Gesendet: Montag, 11. November 2019 um 14:16 Uhr
> Von: "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>
> An: "Jens Kleintje" <Scooby22@web.de>
> Cc: buildroot@busybox.net
> Betreff: Re: [Buildroot] [PATCH 1/2] package/gcnano-binaries: new package
>
> Hello Jens,
>
> On Mon, 11 Nov 2019 11:19:31 +0100
> "Jens Kleintje" <Scooby22@web.de> wrote:
>
> > > Please use the "github" helper macro:
> >
> > > GCNANO_BINARIES_VERSION = c01642ed5e18cf09ecd905af193e935cb3be95ed
> > > GCNANO_BINARIES_SITE = $(call github,STMicroelectronics,gcnano-binaries,$(GCNANO_BINARIES_VERSION))
> >
> > > and remove the _SITE_METHOD variable.
> > The page (https://github.com/STMicroelectronics/gcnano-binaries)
> > has no release and no tag. So I think there is no archive directory.
>
> Not a problem, the github macro works with any arbitrary commit.
The problem is, that I get everytime the HEAD and not the commit with SHA c01642ed5e18cf09ecd905af193e935cb3be95ed.
Today I got the commit with SHA 271f87d816a957bf196f6328c34110cab1224d4d.
Did I miss something?
>
> > > > + rm -f $(STAGING_DIR)/usr/lib/pkgconfig/wayland-egl.pc
> >
> > > Why are you removing this .pc file ?
> > The file is already provided by wayland package.
> > I saw it from in the yocto package
> > https://github.com/STMicroelectronics/meta-st-stm32mp/blob/thud/recipes-graphics/gcnano-userland/gcnano-userland-binary.inc
>
> Then, if you could add a comment in the .mk file about this, it would
> be good.
>
> > > Could you rework your patch to take into account those comments ?
> > Will come soon.
>
> Great, thanks!
>
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
Thomas Petazzoni Nov. 11, 2019, 1:55 p.m. UTC | #5
On Mon, 11 Nov 2019 14:48:08 +0100
"Jens Kleintje" <Scooby22@web.de> wrote:

> > Not a problem, the github macro works with any arbitrary commit.  
> The problem is, that I get everytime the HEAD and not the commit with SHA c01642ed5e18cf09ecd905af193e935cb3be95ed.
> Today I got the commit with SHA 271f87d816a957bf196f6328c34110cab1224d4d.
> Did I miss something?

Depends on how you did it I guess. Did you do it like this:

V4L2GRAB_VERSION = f8d8844d52387b3db7b8736f5e86156d9374f781
V4L2GRAB_SITE = $(call github,twam,v4l2grab,$(V4L2GRAB_VERSION))

Thomas
Jens Kleintje Nov. 11, 2019, 1:58 p.m. UTC | #6
> Gesendet: Montag, 11. November 2019 um 14:55 Uhr
> Von: "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>
> An: "Jens Kleintje" <Scooby22@web.de>
> Cc: buildroot@busybox.net
> Betreff: Re: [Buildroot] [PATCH 1/2] package/gcnano-binaries: new package
>
> On Mon, 11 Nov 2019 14:48:08 +0100
> "Jens Kleintje" <Scooby22@web.de> wrote:
>
> > > Not a problem, the github macro works with any arbitrary commit.
> > The problem is, that I get everytime the HEAD and not the commit with SHA c01642ed5e18cf09ecd905af193e935cb3be95ed.
> > Today I got the commit with SHA 271f87d816a957bf196f6328c34110cab1224d4d.
> > Did I miss something?
>
> Depends on how you did it I guess. Did you do it like this:
>
> V4L2GRAB_VERSION = f8d8844d52387b3db7b8736f5e86156d9374f781
> V4L2GRAB_SITE = $(call github,twam,v4l2grab,$(V4L2GRAB_VERSION))
>
GCNANO_BINARIES_FILE_VERSION = 6.2.4.p4
GCNANO_BINARIES_VERSION = c01642ed5e18cf09ecd905af193e935cb3be95ed
GCNANO_BINARIES_SITE = $(call github,STMicroelectronics,gcnano-binaries,$(GCNANO_BINARIES_VERSION))
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
diff mbox series

Patch

diff --git a/package/Config.in b/package/Config.in
index dc5ec56d6b..1a88da547d 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -449,6 +449,7 @@  endmenu
 	source "package/freescale-imx/Config.in"
 	source "package/fxload/Config.in"
 	source "package/gadgetfs-test/Config.in"
+	source "package/gcnano-binaries/Config.in"
 	source "package/gpm/Config.in"
 	source "package/gpsd/Config.in"
 	source "package/gptfdisk/Config.in"
diff --git a/package/gcnano-binaries/gcnano-binaries.hash b/package/gcnano-binaries/gcnano-binaries.hash
new file mode 100644
index 0000000000..fae7e56deb
--- /dev/null
+++ b/package/gcnano-binaries/gcnano-binaries.hash
@@ -0,0 +1,2 @@ 
+sha256 19f3fe4e83ec95fd2ecb70d5cb03c7b00a13357966a9b6e56b59e5788c550c88  gcnano-binaries-c01642ed5e18cf09ecd905af193e935cb3be95ed.tar.gz
+sha256 7d209718473d18f69f75adb7caf9cb5d4b0a31da068756aa011bea617de3dc57  EULA
diff --git a/package/gcnano-binaries/gcnano-binaries.mk b/package/gcnano-binaries/gcnano-binaries.mk
new file mode 100644
index 0000000000..806abd7840
--- /dev/null
+++ b/package/gcnano-binaries/gcnano-binaries.mk
@@ -0,0 +1,87 @@ 
+################################################################################
+#
+# VIVANTE GCNANO BINARIES
+#
+################################################################################
+
+
+GCNANO_BINARIES_FILE_VERSION = 6.2.4.p4
+GCNANO_BINARIES_VERSION = c01642ed5e18cf09ecd905af193e935cb3be95ed
+GCNANO_BINARIES_SITE = https://github.com/STMicroelectronics/gcnano-binaries.git
+GCNANO_BINARIES_SITE_METHOD = git
+
+GCNANO_BINARIES_LICENSE = MIT, Vivante End User Software License Terms
+GCNANO_BINARIES_LICENSE_FILES = EULA
+GCNANO_BINARIES_REDISTRIBUTE = NO
+
+GCNANO_BINARIES_DEPENDENCIES = linux wayland libdrm
+
+GCNANO_BINARIES_INSTALL_STAGING = YES
+
+GCNANO_BINARIES_PROVIDES = libegl libgles
+
+define GCNANO_BINARIES_EXTRACT_HELPER
+        awk 'BEGIN      { start = 0; } \
+             /^EOEULA/  { start = 0; } \
+                        { if (start) print; } \
+             /<<EOEULA/ { start = 1; }' \
+            $(1) > $(@D)/EULA
+        cd $(@D) && sh $(1) --auto-accept
+        find $(@D)/$(basename $(notdir $(1))) -mindepth 1 -maxdepth 1 -exec mv {} $(@D) \;
+        rmdir $(@D)/$(basename $(notdir $(1)))
+endef
+
+
+define GCNANO_BINARIES_EXTRACT_CMDS
+gzip -d -c $(GCNANO_BINARIES_DL_DIR)/gcnano-binaries-$(GCNANO_BINARIES_VERSION).tar.gz | tar --strip-components=1 -C $(@D) -xf -
+tar --strip-components=1 -xJf $(@D)/gcnano-driver-$(GCNANO_BINARIES_FILE_VERSION).tar.xz -C $(@D)
+$(call GCNANO_BINARIES_EXTRACT_HELPER,$(@D)/gcnano-userland-multi-$(GCNANO_BINARIES_FILE_VERSION)-20190626.bin)
+endef
+
+GCNANO_BINARIES_MODULE_MAKE_OPTS = \
+	KERNEL_DIR=$(LINUX_DIR) \
+	SOC_PLATFORM=st-st\
+	AQROOT=$(@D)\
+	DEBUG=0
+
+define GCNANO_BINARIES_INSTALL_STAGING_CMDS
+	cp $(@D)/usr/lib/pkgconfig/* $(STAGING_DIR)/usr/lib/pkgconfig/
+	cp -r $(@D)/usr/lib/* $(STAGING_DIR)/usr/lib/
+	cd $(STAGING_DIR)/usr/lib; \
+	ln -sf gbm_viv.6.2.4.multi.release.so gbm_viv.so; \
+	ln -sf libEGL.6.2.4.multi.release.so libEGL.so; \
+	ln -sf libEGL.so libEGL.so.1; \
+	ln -sf libGAL.6.2.4.multi.release.so libGAL.so; \
+	ln -sf libgbm.6.2.4.multi.release.so libgbm.so; \
+	ln -sf libgbm.so libgbm.so.1; \
+	ln -sf libGLESv1_CM.6.2.4.multi.release.so libGLESv1_CM.so; \
+	ln -sf libGLESv2.6.2.4.multi.release.so libGLESv2.so; \
+	ln -sf libGLESv2.so libGLESv2.so.2; \
+	ln -sf libGLSLC.6.2.4.multi.release.so libGLSLC.so; \
+	ln -sf libOpenVG.6.2.4.multi.release.so libOpenVG.so; \
+	ln -sf libVSC.6.2.4.multi.release.so libVSC.so
+	rm -f $(STAGING_DIR)/usr/lib/pkgconfig/wayland-egl.pc
+	cp -r $(@D)/usr/include/* $(STAGING_DIR)/usr/include/
+endef
+
+GCNANO_BINARIES_POST_INSTALL_TARGET_HOOKS += GCNANO_BINARIES_COPY_LIBS
+
+define GCNANO_BINARIES_COPY_LIBS
+	cp -r $(@D)/usr/lib/* $(TARGET_DIR)/usr/lib/
+	cd $(TARGET_DIR)/usr/lib; \
+	ln -sf gbm_viv.6.2.4.multi.release.so gbm_viv.so; \
+	ln -sf libEGL.6.2.4.multi.release.so libEGL.so; \
+	ln -sf libEGL.so libEGL.so.1; \
+	ln -sf libGAL.6.2.4.multi.release.so libGAL.so; \
+	ln -sf libgbm.6.2.4.multi.release.so libgbm.so; \
+	ln -sf libgbm.so libgbm.so.1; \
+	ln -sf libGLESv1_CM.6.2.4.multi.release.so libGLESv1_CM.so; \
+	ln -sf libGLESv2.6.2.4.multi.release.so libGLESv2.so; \
+	ln -sf libGLESv2.so libGLESv2.so.2; \
+	ln -sf libGLSLC.6.2.4.multi.release.so libGLSLC.so; \
+	ln -sf libOpenVG.6.2.4.multi.release.so libOpenVG.so; \
+	ln -sf libVSC.6.2.4.multi.release.so libVSC.so;
+endef
+
+$(eval $(kernel-module))
+$(eval $(generic-package))