From: "Peter Kjellerstedt" <peter.kjellerstedt@axis.com>
To: Trevor Woerner <twoerner@gmail.com>,
"openembedded-devel@lists.openembedded.org"
<openembedded-devel@lists.openembedded.org>
Subject: Re: [oe] [meta-oe][PATCH v2] vk-gl-cts: allow the user to specify the target
Date: Thu, 23 Sep 2021 19:24:07 +0000 [thread overview]
Message-ID: <ea5ca6b018214c50826e5a1bef9bd86d@axis.com> (raw)
In-Reply-To: <20210923185506.2188-1-twoerner@gmail.com>
> -----Original Message-----
> From: openembedded-devel@lists.openembedded.org <openembedded-
> devel@lists.openembedded.org> On Behalf Of Trevor Woerner
> Sent: den 23 september 2021 20:55
> To: openembedded-devel@lists.openembedded.org
> Subject: [oe] [meta-oe][PATCH v2] vk-gl-cts: allow the user to specify the
> target
>
> When building opengl-es-cts (for example), instead of hard-coding a
> specific target to build (surfaceless), leave the choice empty by default
> which instructs the package's build system to search the sysroot and try
> to
> determine which target to use (i.e. the "Default" target).
>
> Provide overrides (in the form of PACAKGECONFIGs) to allow the user to
> specify a specific target to build (if they don't want the target selected
> automatically).
>
> Signed-off-by: Trevor Woerner <twoerner@gmail.com>
> ---
> changes in v2:
> - add logic to try to guess which dependencies (x11/wayland) will be
> required in the case where the user doesn't set a target explicitly
> - add comments to explain the code, and explain how the newly added
> PACKAGECONFIGs work
> ---
> .../vk-gl-cts/khronos-cts.inc | 33 +++++++++++++++++--
> 1 file changed, 30 insertions(+), 3 deletions(-)
>
> diff --git a/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc b/meta-
> oe/recipes-graphics/vk-gl-cts/khronos-cts.inc
> index f61921473..903f006db 100644
> --- a/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc
> +++ b/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc
> @@ -18,9 +18,9 @@ S = "${WORKDIR}/git"
>
> inherit pkgconfig cmake features_check
>
> -REQUIRED_DISTRO_FEATURES += "opengl"
> +ANY_OF_DISTRO_FEATURES += "opengl wayland"
>
> -DEPENDS += "libpng zlib virtual/libgles2 virtual/egl"
> +DEPENDS += "libpng zlib virtual/libgles2"
>
> SRC_URI += "file://0001-Workaround-for-GCC-11-uninit-variable-warnings-946.patch;patchdir=external/amber/src \
> file://0001-Include-limits-header-for-numeric_limits.patch;patchdir=external/vulkancts \
> @@ -36,7 +36,34 @@ SRC_URI:append:toolchain-clang = "\
> file://fix-clang-private-operator.patch \
> "
>
> -EXTRA_OECMAKE:append = " -DDEQP_TARGET=surfaceless"
> +# The best thing for the user to do is to not specify any of the following
> +# PACKAGECONFIGs (i.e. leave it blank) which tells the project to do its own
> +# probing and build what it thinks is appropriate.
> +# However, if you want, you can specify one of the following PACKAGECONFIGs
> +# to override this behaviour.
> +PACKAGECONFIG ??= ""
> +PACKAGECONFIG[surfaceless] = "-DDEQP_TARGET=surfaceless,,"
> +PACKAGECONFIG[wayland] = "-DDEQP_TARGET=wayland,,wayland"
> +PACKAGECONFIG[x11_egl] = "-DDEQP_TARGET=x11_egl,,virtual/libx11 virtual/egl"
> +PACKAGECONFIG[x11_glx] = "-DDEQP_TARGET=x11_glx,,virtual/libx11"
> +PACKAGECONFIG[x11_egl_glx] = "-DDEQP_TARGET=x11_glx,,virtual/libx11 virtual/egl"
> +
> +python __anonymous() {
> + packageconfig = (d.getVar("PACKAGECONFIG") or "").split()
> + if len(packageconfig) > 1:
> + bb.fatal("only one PACKAGECONFIG of 'surfaceless wayland x11_egl x11_glx x11_egl_glx' can be specified at a time")
If they are mutually exclusive, it is better to use the sixth argument for
the PACKAGECONFIG varflags, which allows you to specify other incompatible
varflags. I.e, the above would then become:
PACKAGECONFIG[surfaceless] = "-DDEQP_TARGET=surfaceless,,,,, wayland x11_egl x11_glx x11_egl_glx"
PACKAGECONFIG[wayland] = "-DDEQP_TARGET=wayland,, wayland,,, surfaceless x11_egl x11_glx x11_egl_glx"
PACKAGECONFIG[x11_egl] = "-DDEQP_TARGET=x11_egl,, virtual/libx11 virtual/egl,,, surfaceless wayland x11_glx x11_egl_glx"
PACKAGECONFIG[x11_glx] = "-DDEQP_TARGET=x11_glx,, virtual/libx11,,, surfaceless wayland x11_egl x11_egl_glx"
PACKAGECONFIG[x11_egl_glx] = "-DDEQP_TARGET=x11_glx,, virtual/libx11 virtual/egl,,, surfaceless wayland x11_egl x11_glx"
This allows other PACKAGECONFIGs to be added without breaking the logic.
> +
> + # if the user doesn't specify any PACKAGECONFIG then the cts build system
> + # is going to probe the sysroot to try to figure out what to build
> + # in this case we try to guess whether the user is building for wayland
> + # or x11 and add the required dependencies automatically
> + distrofeatures = (d.getVar("DISTRO_FEATURES") or "")
> + if len(packageconfig) == 0:
A better test is:
if not bb.utils.contains_any("PACKAGECONFIG", [ "surfaceless", "wayland", "x11_egl", "x11_glx", "x11_egl_glx" ], True, False, d):
> + if "wayland" in distrofeatures:
> + d.appendVar("DEPENDS", " wayland ")
> + if "x11" in distrofeatures:
> + d.appendVar("DEPENDS", " virtual/libx11 virtual/egl ")
> +}
>
> CTSDIR = "/usr/lib/${BPN}"
>
> --
> 2.30.0.rc0
next prev parent reply other threads:[~2021-09-23 19:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-23 18:55 [meta-oe][PATCH v2] vk-gl-cts: allow the user to specify the target Trevor Woerner
2021-09-23 19:24 ` Peter Kjellerstedt [this message]
2021-09-23 19:38 ` [oe] " Trevor Woerner
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=ea5ca6b018214c50826e5a1bef9bd86d@axis.com \
--to=peter.kjellerstedt@axis.com \
--cc=openembedded-devel@lists.openembedded.org \
--cc=twoerner@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox