[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bootstrap and git submodules

From: Jim Meyering
Subject: Re: bootstrap and git submodules
Date: Wed, 10 Mar 2010 11:18:23 +0100

>> I tried the latest from gnulib via coreutils,
>> ...
>> In file included from test-string-c++.cc:23:
>> ../lib/string.h:301: error: type of 'memchr' is unknown
> Can you please tell me how to reproduce?
> I checked out coreutils from git, saw that its "bootstrap --help" script says
>  --gnulib-srcdir=DIRNAME  Specify the local directory where gnulib
>                           sources reside.  Use this if you already
>                           have gnulib sources on your machine, and
>                           do not want to waste your bandwidth downloading
>                           them again.  Defaults to $GNULIB_SRCDIR.

Hi Bruno,

That is an optimization for the bootstrap-after-initial-clone
to avoid downloading the ~30MB gnulib repository.
It has no influence on which gnulib SHA1 coreutils uses.

> So I ran
>   $ ./bootstrap --gnulib-srcdir=$HOME/data/develop/GNULIB/gnulib-git --copy
> I expected that it uses the checked out gnulib sources. But no, it uses commit
> number 80cd995cdcbf4b9ded895a43621a11f11806ad8d and checks that out in a
> subdirectory 'gnulib/'.
> So I went into that subdirectory and did "git checkout master". Then back in
> the parent directory, did
>   $ ./bootstrap --gnulib-srcdir=$HOME/data/develop/GNULIB/gnulib-git --copy
> again. Again it tells me:
>   ./bootstrap: Bootstrapping from checked-out coreutils sources...
>   ./bootstrap: getting gnulib files...
>   Submodule path 'gnulib': checked out 
> '80cd995cdcbf4b9ded895a43621a11f11806ad8d'
> I did a grep of '80cd995cdcbf4b9ded895a43621a11f11806ad8d' over the source 
> tree
> and did not find it.
> How do I configure 'bootstrap' to use my (possibly modified) gnulib sources
> instead of a particular commit? I'm not a "git submodule" wizard and expect
> this do be doable through a command line option of the 'bootstrap' script.

bootstrap uses the gnulib commit recorded via coreutils' gnulib submodule,
so I usually just sync-to-latest, commit that gnulib-update change,
and then test.  I did this on coreutils' master:

    cd coreutils
    git syncsub
    git commit -m 'build: update gnulib submodule to latest' gnulib
    ./bootstrap && ./configure && make && make check

Where "syncsub" is defined in my ~/.gitconfig like this:

          syncsub = submodule foreach git pull origin master

So if your changed gnulib files are committed locally,
and the submodule points to your locally-modified repository,
once you've committed the "sync-from-gnulib" change as above,
bootstrap should do what you expect.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]