This is the mail archive of the
mailing list for the Cygwin project.
Re: [ITP] The Silver Searcher / Ag
- From: Adam Dinwoodie <adam at dinwoodie dot org>
- To: cygwin-apps at cygwin dot com
- Date: Wed, 24 Feb 2016 10:26:35 +0000
- Subject: Re: [ITP] The Silver Searcher / Ag
- Authentication-results: sourceware.org; auth=none
- References: <20160223144209 dot GA29016 at dinwoodie dot org> <56CC8EAC dot 2080603 at cygwin dot com>
On Tue, Feb 23, 2016 at 10:54:04AM -0600, Yaakov Selkowitz wrote:
> On 2016-02-23 08:42, Adam Dinwoodie wrote:
> This works better with DISTDIR.
I didn't know that URL existed. I'll switch to that and do similar for
fzf, which also uses the first version of the command.
> >the_silver_searcher_completion_REQUIRES='the_silver_searcher bash_completion'
> That should be bash-completion with a hyphen.
Good spot, thank you!
> > cyginstall bashcompdir=/etc/bash_completion.d
> We have bash-completion-2.1 now, so you can use
> bashcompdir=$(pkg-config --variable=completionsdir bash-completion)
> -- and change *_CONTENTS accordingly.
Ooh. I hadn't spotted that change or the addition of on-demand
completion loading. I'll have a look at whether the other packages I
maintain can take advantage of that, too.
For this package, it doesn't look as simple as _just_ changing
bashcompdir, though, as the script is called "ag.bashcomp.sh". That
works just fine putting the file in compatdir, but doesn't load if it's
in completionsdir, because that expects the script to just be called
"ag". I can see a few different solutions, and I'd appreciate a second
1. Patch the Ag build process to call the script "ag" rather than
"ag.bashcomp.sh". This looks like it'd be a slightly complex and
fragile patch, though.
2. Rename "ag.bashcomp.sh" to "ag" after the cyginstall step. This
still feels a bit fragile to me, although less so than option 1.
3. Install the script as "ag.bashcomp.sh", then create a symlink from
"ag" to "ag.bashcomp.sh". I'm currently leaning towards this as the
neatest and safest solution, not least because it uses Cygport's
dosym rather than a bare mv, although it does leave a more-or-less
useless file in the completions directory.
4. Just install to /etc/bash_completion.d (although probably using
"pkg-config --variable=compatdir bash-completion), which appears to
be what the upstream package currently intends.
Anyone have any thoughts/advances on those options?
(The neatest solution would obviously be to get the upstream package to
install in the right directory in the first place, and it looks like
they'd be amenable to such a change based on an issue from 2013, but
it looks like it'd require some autoconf magic to be able to handle
versions of Bash completion both with and without on-demand loading, and
autoconf is an art I do not currently have.)