On Thu, Nov 11, 2021 at 12:42:47AM +0300, Dmitry V. Levin wrote: > 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 <f...@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. > [...] > > 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' ' '` > > + 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' ' '` > > + if [ -n "$debuginfod_urls" ]; then > > + DEBUGINFOD_URLS="$debuginfod_urls" > > + export DEBUGINFOD_URLS > > + fi > > + unset debuginfod_urls > > + unset prefix > > fi > > Is there any particular reason to assign (and unset) prefix?
Another potential issue with this "cat" approach is that strings without trailing newlines are concatenated with other strings. I suggest the following code snippet instead: if [ -z "${DEBUGINFOD_URLS+1}" ]; then debuginfod_urls=$(sed -n 's/^[^#].*/&/p' @sysconfdir@/debuginfod/*.urls 2>/dev/null |tr '\n' ' ' ||:) if [ -n "$debuginfod_urls" ]; then DEBUGINFOD_URLS="$debuginfod_urls" export DEBUGINFOD_URLS fi unset debuginfod_urls fi As a bonus, it also handles comments. :) -- ldv