From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/2] package/gcnano-binaries: new package
Date: Wed, 6 Nov 2019 23:08:31 +0100 [thread overview]
Message-ID: <20191106230831.0a4017c6@windsurf> (raw)
In-Reply-To: <20191106155611.31575-2-scooby22@web.de>
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
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2019-11-06 22:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-06 15:56 [Buildroot] [PATCH 0/2] package/gcnano-binaries: new package Jens Kleintje
2019-11-06 15:56 ` [Buildroot] [PATCH 1/2] " Jens Kleintje
2019-11-06 22:08 ` Thomas Petazzoni [this message]
[not found] ` <trinity-e5303488-a97e-46bb-8738-520846b1c6db-1573110060239@3c-app-webde-bap18>
2019-11-11 10:19 ` Jens Kleintje
2019-11-11 13:16 ` Thomas Petazzoni
2019-11-11 13:48 ` Jens Kleintje
2019-11-11 13:55 ` Thomas Petazzoni
2019-11-11 13:58 ` Jens Kleintje
2019-11-06 15:56 ` [Buildroot] [PATCH 2/2] package/qt5/qt5base: add support for gcnano-binaries Jens Kleintje
2019-11-06 22:18 ` Thomas Petazzoni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191106230831.0a4017c6@windsurf \
--to=thomas.petazzoni@bootlin.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.