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

Re: Correct installation path for completion files



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?

> 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.

> 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.

> 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.

Regards, Frank

-- 
In protocol design, perfection has been reached not when there is
nothing left to add, but when there is nothing left to take away.
                                                  -- RFC 1925



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