summaryrefslogtreecommitdiffstats
path: root/web/input/doc/faq/gnulib.md
blob: 15ce2a611bd00f239ac1255c59082e9e7343e60a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
title: Gnulib
parent: FAQ
---

# How do I use and update Gnulib?

[Gnulib][gnulib] provides replacement implementations of functions that are
not available on all (Unix-like) operating systems.  In order to sync with the
latest Gnulib code, starting from the directory above your
`monitoring-plugins` repository, do something like:

    $ git clone git://git.savannah.gnu.org/gnulib.git
    $ cd gnulib
    $ GNULIB_HEAD=$(git rev-parse --short HEAD)
    $ cd ../monitoring-plugins
    $ ../gnulib/gnulib-tool --update
    $ find build-aux gl -name '*~' -o -name '.gitignore' | xargs rm
    $ git status
    $ git add build-aux gl
    $ git commit -m "Sync with the latest Gnulib code ($GNULIB_HEAD)"

In order to make a given function available via Gnulib (on systems which don't
provide that function), the [corresponding module][modules] must be imported
using `gnulib-tool`, e.g. (in order to add the `strcase` module):

    $ cd monitoring-plugins
    $ git log -1 --format='%s' --grep='^Sync with the latest Gnulib code'
    $ (cd ../gnulib && git checkout <REF>) # where <REF> is the one from above
    $ ../gnulib/gnulib-tool --no-vc-files --add strcase
    $ find gl -name '*~' | xargs rm
    $ git status
    $ git add gl
    # At this point you can build and add any auto-generated file in gl/ to .gitignore
    $ git add .gitignore
    $ git commit -m 'Add Gnulib module "strcase"'

[gnulib]: http://www.gnu.org/software/gnulib/ "Gnulib"
[modules]: http://www.gnu.org/software/gnulib/MODULES.html "Gnulib Modules"

<!--% # vim:set filetype=markdown textwidth=78 joinspaces expandtab: # %-->