[PATCH] config: Add profile script for fish shell
Frederik “Freso” S. Olesen
freso.dk@gmail.com
Fri Mar 22 10:13:01 GMT 2024
On Thu, Mar 21, 2024 at 09:25:36PM +0100, Mark Wielaard wrote:
> Hi,
Hi! Thanks for the review! Comments below and revision coming up :)
> On Thu, Mar 21, 2024 at 04:04:11PM +0100, Frederik “Freso” S. Olesen wrote:
> > diff --git a/config/ChangeLog b/config/ChangeLog
> > index ce1f74f6..7d88c071 100644
> > --- a/config/ChangeLog
> > +++ b/config/ChangeLog
> > @@ -1,3 +1,8 @@
> > +2024-03-21 Frederik “Freso” S. Olesen <freso@freso.dk>
> > +
> > + * profile.fish.in: Set $DEBUGINFOD_URLS in fish shells.
> > + * Makefile.am: Include profile.fish in install and uninstall targets.
>
> Since we have been putting the ChangeLog entry into the commit message
> it doesn't need to also go into the actual Changelog file.
Yeah, I wasn’t sure since it seemed like some recent(ish) commits still
put in ChangeLog entries, but CONTRIBUTORS said not to… so I opted to
just include this and it would be easy to either exclude when applying
the patch or remove in a revision. I’ll do the latter. :)
> > <snip>
> > + $(INSTALL_DATA) profile.fish -D $(DESTDIR)$(datadir)/fish/vendor_conf.d/debuginfod.fish
> > <snip>
> > + rm -f $(DESTDIR)$(datadir)/fish/vendor_conf.d/debuginfod.fish
>
> Right, with --prefix=/usr that expands to
> /usr/share/fish/vendor_conf.d which seems to match the default install
> location you pointed out above. Good.
Yeah, I had to look up the directory variables to figure out where to put
it, to not just go for the “lazy” way of placing it in /etc:
https://www.gnu.org/prep/standards/html_node/Directory-Variables.html
> > diff --git a/config/profile.fish.in b/config/profile.fish.in
> > new file mode 100644
> > index 00000000..34b1ab85
> > --- /dev/null
> > +++ b/config/profile.fish.in
> > @@ -0,0 +1,14 @@
> > +# $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 not set --query DEBUGINFOD_URLS
> > + # Use local variables so we don't need to manually unset them
> > + set --local prefix="@prefix@"
> > + set --local DEBUGINFOD_URLS (cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | string replace '\n' ' ')
> > + if test -n "$DEBUGINFOD_URLS"
> > + set --global --export DEBUGINFOD_URLS "$DEBUGINFOD_URLS"
> > + end
> > +end
>
> I don't know fish, but this looks OK.
I’ve been running this locally (but under $XDG_CONFIG_HOME)
since yesterday and it works well for me, with elfutils.urls
and archlinux.urls under /etc.
That said, I just spotted a mistake in my code, which I have missed
because that line is removed in my locally running version:
Fish’s `set` doesn’t use `=` for assignment, so the `$prefix` assignment
needs a tiny fix too.
> Note that to turn this profile.fish.in into profile.fish you need to
> mark it as a config file in configure.ac:
Ah! I’ve been having some SIGILL problems with `git grep`[1] so I missed
looking for other places where the other profile.*sh’s were mentioned.
[1] Incidentally, the attempt at debugging this issue is how I realised
that $DEBUGINFOD_URLS was _not_ automatically populated in fish… which
led me down the rabbit hole ending in this patch. 😅
> Could you sent a new patch with those two changes?
Yes, coming right up!
--
Solidarity,
Frederik “Freso” S. Olesen <https://freso.dk/>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/elfutils-devel/attachments/20240322/6c0de3c7/attachment.sig>
More information about the Elfutils-devel
mailing list