Gnulib - The GNU Portability Library
Introduction to Gnulib
GNU software has a well-deserved reputation for running on many different types of systems. While our primary goal is to write software for the GNU system, many users and developers have been introduced to us through the systems that they were already using.
Gnulib is a central location for common GNU code, intended to be shared among GNU packages. GCC has libiberty, but this is hard to disentangle from the GCC build tree.
Gnulib takes a different approach. Its components are intended to be shared at the source level, rather than being a library that gets built, installed, and linked against. Thus, there is no distribution tarball; the idea is to copy files from Gnulib into your own source tree.
Gnulib also includes copies of a few files purely for convenience: the GNU coding standards, the GNU maintainer information, the GPL and other licenses (in Texinfo), assorted configuration scripts, and more. The goal is to provide all the common infrastructure needed by GNU packages.
Downloading Gnulib
Gnulib does not make releases. It is intended to be used at the source level.
You can browse the
current gnulib sources
on savannah.
You can also view the modules comprising gnulib.
To use Gnulib, you can retrieve its source code and its history via anonymous Git, using the following shell command:
git clone git://git.savannah.gnu.org/gnulib.git
GNU developers can also retrieve the source code via non-anonymous Git; for details, please see Gnulib's top-level README file.
After you have the sources, run ./gnulib-tool --help. For help or more info, email bug-gnulib@gnu.org.
Documentation
The manual is still minimal and sketchy (volunteers especially welcome).
./gnulib-tool --help also provides some information, as mentioned above.
You can also view the modules comprising gnulib.
Mailing Lists/Newsgroups
Please email bug-gnulib@gnu.org with information. Here are some guidelines, however:
- If your .c and .h files define functions that are broken or missing on some other system, we should be able to include it.
- If your functions remove arbitrary limits from existing functions (either under the same name, or as a slightly different name), we should be able to include it.
- If your functions define completely new but rarely used functionality, you should probably consider packaging it as a seperate library.
All source code is copylefted by the Free Software Foundation. Assignment forms may be necessary before we can access your source code.
To subscribe to these GNU mailing lists, please send an empty mail with a Subject: header line of just "subscribe" to the relevant -request list. For example, to subscribe yourself to the main list for Gnulib, you would send mail to <bug-gnulib-request@gnu.org> with no body and a Subject: header line of just "subscribe".
Request an Enhancement
If you would like any new feature to be included in future versions of Gnulib, please send a request to <bug-gnulib@gnu.org>.
Please remember that development of Gnulib is a volunteer effort, and you can also contribute to its development. For information about contributing to the GNU Project, please read How to help GNU.
Report a Bug
If you think you have found a bug in Gnulib, then please send as complete a report as possible to <bug-gnulib@gnu.org>.
Contributors
Active principal contributors to Gnulib: Bruno Haible, Eric Blake, Jim Meyering, Paul Eggert, and Simon Josefsson.
