[OE-core] [PATCH] gstreamer: Fix reproducibility issue around libcap

Martin Hundebøll martin at geanix.com
Thu Feb 20 11:56:29 UTC 2020


Hi,

On 19/02/2020 16.23, Richard Purdie wrote:
> Add an option to avoid builds depending on the presence of setcap
> from the host system.
> 
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> ---
>   .../gstreamer/gstreamer1.0/capfix.patch       | 37 +++++++++++++++++++
>   .../gstreamer/gstreamer1.0_1.16.1.bb          |  2 +
>   2 files changed, 39 insertions(+)
>   create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0/capfix.patch
> 
> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/capfix.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/capfix.patch
> new file mode 100644
> index 00000000000..7ca3d5ad4a6
> --- /dev/null
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/capfix.patch
> @@ -0,0 +1,37 @@
> +Currently gstreamer configuration depends on whether setcap is found on the host
> +system. Turn this into a configure option to make builds deterinistic.
> +
> +RP 2020/2/19
> +Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> +Upstream-Status: Pending
> +
> +Index: gstreamer-1.16.1/libs/gst/helpers/meson.build
> +===================================================================
> +--- gstreamer-1.16.1.orig/libs/gst/helpers/meson.build
> ++++ gstreamer-1.16.1/libs/gst/helpers/meson.build
> +@@ -73,7 +73,12 @@ if have_ptp
> +     endif
> +   endif
> +
> +-  setcap = find_program('setcap', '/usr/sbin/setcap', '/sbin/setcap', required : false)
> ++  setcap_feature = get_option('setcap')
> ++  if setcap_feature.disabled()
> ++    setcap = find_program('dontexist', required : false)
> ++  else
> ++    setcap = find_program('setcap', '/usr/sbin/setcap', '/sbin/setcap', required : false)
> ++  endif

I think this can be simplified by using get_option() directly for the 
"required" argument:

setcap = find_program('setcap', '/usr/sbin/setcap', '/sbin/setcap', 
required : get_option('setcap'))

// Martin
> +
> +   # user/group to change to in gst-ptp-helper
> +   ptp_helper_setuid_user = get_option('ptp-helper-setuid-user')
> +Index: gstreamer-1.16.1/meson_options.txt
> +===================================================================
> +--- gstreamer-1.16.1.orig/meson_options.txt
> ++++ gstreamer-1.16.1/meson_options.txt
> +@@ -26,6 +26,7 @@ option('libunwind', type : 'feature', va
> + option('libdw', type : 'feature', value : 'auto', description : 'Use libdw to generate better backtraces from libunwind')
> + option('dbghelp', type : 'feature', value : 'auto', description : 'Use dbghelp to generate backtraces')
> + option('bash-completion', type : 'feature', value : 'auto', description : 'Install bash completion files')
> ++option('setcap', type : 'feature', value : 'auto', description : 'Use setcap')
> +
> + # Common feature options
> + option('examples', type : 'feature', value : 'auto', yield : true)
> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.16.1.bb
> index 6b8a5a0eb01..68f5ca649fe 100644
> --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.16.1.bb
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.16.1.bb
> @@ -21,6 +21,7 @@ SRC_URI = " \
>       file://0002-meson-build-gir-even-when-cross-compiling-if-introsp.patch \
>       file://0003-meson-Add-valgrind-feature.patch \
>       file://0004-meson-Add-option-for-installed-tests.patch \
> +    file://capfix.patch \
>   "
>   SRC_URI[md5sum] = "c505fb818b36988daaa846e9e63eabe8"
>   SRC_URI[sha256sum] = "02211c3447c4daa55919c5c0f43a82a6fbb51740d57fc3af0639d46f1cf4377d"
> @@ -39,6 +40,7 @@ PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
>   PACKAGECONFIG[dw] = "-Dlibdw=enabled,-Dlibdw=disabled,elfutils"
>   PACKAGECONFIG[bash-completion] = "-Dbash-completion=enabled,-Dbash-completion=disabled,bash-completion"
>   PACKAGECONFIG[tools] = "-Dtools=enabled,-Dtools=disabled"
> +PACKAGECONFIG[setcap] = "-Dsetcap=enabled,-Dsetcap=disabled,libcap"
>   
>   # TODO: put this in a gettext.bbclass patch
>   def gettext_oemeson(d):
> 


More information about the Openembedded-core mailing list