[patch] PR27783: default debuginfod-urls profile rework
Mark Wielaard
mark@klomp.org
Wed Oct 6 21:23:47 GMT 2021
Hi Frank,
On Sun, Oct 03, 2021 at 05:33:33PM -0400, Frank Ch. Eigler via Elfutils-devel wrote:
> commit 0c634f243d266ce8841fd311433d5d79555fabf9
> Author: Frank Ch. Eigler <fche@redhat.com>
> Date: Sun Oct 3 17:04:24 2021 -0400
>
> PR27783: switch default debuginfod-urls to drop-in style files
>
> Rewrote and commented the /etc/profile.d csh and sh script fragments
> to take the default $DEBUGINFOD_URLS from the union of drop-in files:
> /etc/debuginfod/*.urls. Hand-tested with csh and bash, with
> conditions including no prior $DEBUGINFOD_URLS, nonexistent .urls
> files, multiple entries in .urls files.
>
> Signed-off-by: Frank Ch. Eigler <fche@redhat.com>
Could you add something about this to NEWS so packagers know how to
update to the new scheme?
> diff --git a/config/ChangeLog b/config/ChangeLog
> index b2c0af8ac816..bd41654f5492 100644
> --- a/config/ChangeLog
> +++ b/config/ChangeLog
> @@ -1,3 +1,11 @@
> +2021-10-03 Frank Ch. Eigler <fche@redhat.com>
> +
> + PR27783
> + * profile.sh, profile.csh: Rewrite to document and set DEBUGINFOD_URLS
> + from /etc/debuginfod/*.urls files.
> + * Makefile.am: Install the configury-specified .urls file.
> + * elfutils.spec: Package it.
> +
> 2021-09-05 Dmitry V. Levin <ldv@altlinux.org>
>
> * eu.am (STACK_USAGE_NO_ERROR): New variable.
> diff --git a/config/Makefile.am b/config/Makefile.am
> index a66f54904991..0d3ba164ee3a 100644
> --- a/config/Makefile.am
> +++ b/config/Makefile.am
> @@ -40,9 +40,16 @@ pkgconfig_DATA += libdebuginfod.pc
> install-data-local:
> $(INSTALL_DATA) profile.sh -D $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.sh
> $(INSTALL_DATA) profile.csh -D $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.csh
> + mkdir -p $(DESTDIR)$(sysconfdir)/debuginfod
> + if [ -n "@DEBUGINFOD_URLS@" ]; then \
> + echo "@DEBUGINFOD_URLS@" > $(DESTDIR)$(sysconfdir)/debuginfod/elfutils.urls; \
> + fi
>
> uninstall-local:
> - rm -f $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.sh $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.csh
> + rm -f $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.sh
> + rm -f $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.csh
> + rm -f $(DESTDIR)$(sysconfdir)/debuginfod/elfutils.urls
> + -rmdir $(DESTDIR)$(sysconfdir)/debuginfod
> endif
>
> if MAINTAINER_MODE
> diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in
> index 043762653c90..8f6a8e03202f 100644
> --- a/config/elfutils.spec.in
> +++ b/config/elfutils.spec.in
> @@ -301,6 +301,7 @@ fi
> %{_mandir}/man1/debuginfod-find.1*
> %{_mandir}/man7/debuginfod*.7*
> %config(noreplace) %{_sysconfdir}/profile.d/*
> +%config(noreplace) %{_sysconfdir}/debuginfod/*
>
> %files debuginfod-client-devel
> %defattr(-,root,root)
> diff --git a/config/profile.csh.in b/config/profile.csh.in
> index 0a2d6d162019..29e59a709450 100644
> --- a/config/profile.csh.in
> +++ b/config/profile.csh.in
> @@ -1,11 +1,16 @@
> -if ("@DEBUGINFOD_URLS@" != "") then
> - if ($?DEBUGINFOD_URLS) then
> - if ($%DEBUGINFOD_URLS) then
> - setenv DEBUGINFOD_URLS "$DEBUGINFOD_URLS @DEBUGINFOD_URLS@"
> - else
> - setenv DEBUGINFOD_URLS "@DEBUGINFOD_URLS@"
> - endif
> - else
> - setenv DEBUGINFOD_URLS "@DEBUGINFOD_URLS@"
> - endif
> +
> +# $HOME/.login* or similar files may first set $DEBUGINFOD_URLS.
> +# If $DEBUGINFOD_URLS is not set there, we set it from system *.url files.
> +# $HOME/.*rc or similar files may then amend $DEBUGINFOD_URLS.
> +# See also [man debuginfod-client-config] for other environment variables
> +# such as $DEBUGINFOD_MAXSIZE, $DEBUGINFOD_MAXTIME, $DEBUGINFOD_PROGRESS.
> +
> +if (! $?DEBUGINFOD_URLS) then
> + set prefix="@prefix@"
> + set debuginfod_urls=`find "@sysconfdir@/debuginfod/" -name '*.urls' | xargs cat | tr '\n' ' '`
Can we use cat "@sysconfdir@/debuginfod/*.urls" | tr '\n' ' ' instead
so we don't need to rely on findutils and xargs?
> + if ( "$debuginfod_urls" != "" ) then
> + setenv DEBUGINFOD_URLS "$debuginfod_urls"
> + endif
> + unset debuginfod_urls
> + unset prefix
> endif
> diff --git a/config/profile.sh.in b/config/profile.sh.in
> index aa228a0dcd16..94b2983b9f90 100644
> --- a/config/profile.sh.in
> +++ b/config/profile.sh.in
> @@ -1,4 +1,17 @@
> -if [ -n "@DEBUGINFOD_URLS@" ]; then
> - DEBUGINFOD_URLS="${DEBUGINFOD_URLS-}${DEBUGINFOD_URLS:+ }@DEBUGINFOD_URLS@"
> - export DEBUGINFOD_URLS
> +
> +# $HOME/.profile* or similar files may first set $DEBUGINFOD_URLS.
> +# If $DEBUGINFOD_URLS is not set there, we set it from system *.url files.
> +# $HOME/.*rc or similar files may then amend $DEBUGINFOD_URLS.
> +# See also [man debuginfod-client-config] for other environment variables
> +# such as $DEBUGINFOD_MAXSIZE, $DEBUGINFOD_MAXTIME, $DEBUGINFOD_PROGRESS.
> +
> +if [ -z "$DEBUGINFOD_URLS" ]; then
> + prefix="@prefix@"
> + debuginfod_urls=`find "@sysconfdir@/debuginfod/" -name '*.urls' | xargs cat | tr '\n' ' '`
Likewise.
> + if [ -n "$debuginfod_urls" ]; then
> + DEBUGINFOD_URLS="$debuginfod_urls"
> + export DEBUGINFOD_URLS
> + fi
> + unset debuginfod_urls
> + unset prefix
> fi
Thanks,
Mark
More information about the Elfutils-devel
mailing list