Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

[wgiokas@WST420: Re: Correct installation path for completion files]

On Fri, Jul 26, 2013 at 07:47:15PM +0200, Frank Terbeck wrote:
> William Giokas wrote:
> > I am working on having systemd install its own completion file in the
> > `make install`, but was told that the directory that I was having it go
> > to by default was non-standard.
> Hm, getting the completion into our repo and sync every now and then is
> not an option?

I don't think so. I feel like the completion file should be with the
package so that when the package is updated, so is the completion file.
Keeping them in a central place has uses, but I see very little benefit
of it for a large, quickly changing project like systemd.

> > Which directory should upstream provided completion files go? I
> Depends. :-)
> > currently have all of mine in /usr/share/zsh/site-functions/, but I was
> By default, the `site-functions' directory is located in /usr/local, for
> admins to locally override functions. This is a compile-time option
> though, and your vendor seems to change it.

This is just some confusion. I meant $datadir, which would be
'$prefix/share'. Don't mind that.

> > told that they should be in /usr/share/zsh/vendor-functions/. However,
> This is a directory that debian uses (well, at least - so probably
> ubuntu as well). This is done by specifying the following compile-time
> option:
>   --enable-additional-fpath=/usr/share/zsh/vendor-functions,/usr/share/zsh/vendor-completions
> The idea is to have a directory early in $fpath in /usr/share for other
> debian packages to override zsh-default functions or provide additional
> ones. Debian packages are not allowed to install files to /use/local.
> Also, by not changing the `site-functions' location we still allow
> admins to locally override any function they want by dropping files into
> /usr/local/share/zsh/site-functions outside of the realm of the
> packaging system.

I am not talking about putting them in places for Debian, but for a
generic Linux OS. If vendor-functions has to be specially added to zsh,
then I am wary to set a default installation path to
$datadir/zsh/vendor-completion. Using /usr/local is a good idea, but not
every distro (In fact, only Debian and Ubuntu do) uses that in their
default fpath. CentOS/RHEL's fpath is simple enough, if quite old:


> > going through a few distros (CentOS, Debian, Arch, and Fedora) nothing
> > seems to install to that directory, and all completion files not
> > supplied by the zsh package are in `site-functions`. There was a post on
> I don't think moving site-functions out of /usr/local is a good idea; it
> robs people of the possibility to override functions locally.
> > the Debian MLs[1] that said to put them in vendor-functions, but I am
> > wary if even in the debian packages they don't do that yet. (Unless this
> > is in their experimental branch or something)
> A debian package for systemd should place the completion function you
> are talking about to "/usr/share/vendor-functions". It is exactly the
> intended place for such add-ons on debian.

I should have made this clearer: I am looking for a generic place to use
in a distro-agnostic Makefile, not a specfile, PKGBUILD or ebuild. Would
it be sane to have the default be $datadir/zsh/site-functions, and allow
Debian and the select few other distros use a ./configure flag to place
this somewhere else?


William Giokas | KaiSforza | http://kaictl.net/
GnuPG Key: 0x73CD09CF
Fingerprint: F73F 50EF BBE2 9846 8306  E6B8 6902 06D8 73CD 09CF

Attachment: pgpBSRWabSOtu.pgp
Description: PGP signature

Messages sorted by: Reverse Date, Date, Thread, Author