Next: , Up: Updating External Code   [Contents][Index]


6.1 Gnulib

Gnulib is a source code library that provides basic functionality to programs and libraries. Many software packages make use of Gnulib to avoid reinventing the portability wheel.

GRUB imports Gnulib using its bootstrap utility, identifying a particular Git commit in bootstrap.conf. To upgrade to a new Gnulib commit, set GNULIB_REVISION in bootstrap.conf to the new commit ID, then run ./bootstrap and whatever else you need to make sure it works. Check for changes to Gnulib’s NEWS file between the old and new commits; in some cases it will be necessary to adjust GRUB to match. You may also need to update the patches in grub-core/lib/gnulib-patches/.

To add a new Gnulib module or remove one that is no longer needed, change gnulib_modules in bootstrap.conf. Again, run ./bootstrap and whatever else you need to make sure it works.

Bootstrapping from an older distribution containing gettext version < 0.18.3, will require a patch similar to this to be applied first before running the ./bootstrap utility:

diff --git a/bootstrap.conf b/bootstrap.conf
index 988dda0..a3193a9 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@ -67,7 +67,7 @ SKIP_PO=t
buildreq="\
autoconf   2.63
automake   1.11
-gettext    0.18.3
+gettext    0.17
git        1.5.5
tar        -
"
diff --git a/configure.ac b/configure.ac
index 08b518f..99f5b36 100644
--- a/configure.ac
+++ b/configure.ac
@ -362,7 +362,7 @ AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)

AC_GNU_SOURCE
AM_GNU_GETTEXT([external])
-AM_GNU_GETTEXT_VERSION([0.18.3])
+AM_GNU_GETTEXT_VERSION([0.17])
AC_SYS_LARGEFILE

# Identify characteristics of the host architecture.

It will also be necessary to adjust the patches in po/gettext-patches/ to apply to an older version of gettext.