If you are developer on a package that uses GNU gnulib as part of its
build system:

gnulib-tool has been known for being slow for many years. We have
listened to your complaints. A rewrite of gnulib-tool in another
programming language (Python) is ready for beta-testing. It is
between 8 times and 100 times faster than the original gnulib-tool.

Both implementations should behave identically, that is, produce
the same generated files and the same output. You can help us ensure
this, through the following steps:

  1. Make sure you have Python (version 3.7 or newer) installed on
     your machine.

  2. Update your gnulib checkout. (For some packages, it comes as a
     git submodule named 'gnulib'.) Like this:
       $ git checkout master
       $ git pull
     Set the environment variable GNULIB_SRCDIR, pointing to this checkout.

     If the package is using a git submodule named 'gnulib', it is
     also advisable to do
       $ git commit -m 'build: Update gnulib submodule to latest.' gnulib
     (as a preparation for step 5, because the --no-git option does
     not work as expected in all variants of 'bootstrap').

  3. Set an environment variable that enables checking that the two
     implementations behave the same:
       $ export GNULIB_TOOL_IMPL=sh+py

  4. Clean the built files of your package:
       $ make -k distclean

  5. Regenerate the fetched and generated files of your package.
     Depending on the package, this may be a command such as
       $ ./bootstrap --no-git --gnulib-srcdir=$GNULIB_SRCDIR
     or
       $ export GNULIB_SRCDIR; ./autopull.sh; ./autogen.sh
     or, if no such script is available:
       $ $GNULIB_SRCDIR/gnulib-tool --update
     If there is a failure, due to differences between the 'sh' and 'py'
     results, please report it to <bug-gnu...@gnu.org>.

  6. If this invocation was successful, you can trust the rewritten
     gnulib-tool and use it from now on, by setting the environment
     variable
       $ export GNULIB_TOOL_IMPL=py

  7. Continue with
       $ ./configure
       $ make
     as usual.

And enjoy the speed! The rewritten gnulib-tool was implemented by
Dmitry Selyutin, Collin Funk, and me.




Reply via email to