[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bootstrap/autogen.sh and git submodules
From: |
Tim Rühsen |
Subject: |
Re: bootstrap/autogen.sh and git submodules |
Date: |
Sun, 3 Mar 2019 21:13:04 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 |
On 03.03.19 19:03, Bruno Haible wrote:
> Hi,
>
> When gnulib is used in a package, often the maintainers of that package
> use it via a git submodule, because that enables them to upgrade to newer
> versions of gnulib when they want to (and have a failsafe build between
> these upgrades), rather than having to adapt to gnulib changes at any moment.
> Even if it's only the imported file list which has changed, which might
> require an update to the package's .gitignore file.
>
> The use of git submodules, however, has three problems:
>
> 1) There are two use-cases of bootstrap/autogen.sh (the name does not
> matter):
> - first-time checkout and build of the sources,
> - repeated build, possibly after modifying something in the submodule.
> Currently bootstrap is optimized for the first one, and requires clumsy
> recipes for the second one. Such as:
> $ GNULIB_SRCDIR=`pwd`/gnulib ./autogen.sh --no-git
>
> 2) A submodule has to be upgraded occasionally. bootstrap/autogen.sh does
> not help doing this. I have to keep a command in a cheat-sheet:
> $ (cd gnulib && git fetch && git merge origin/master); git add gnulib
You often see gnulib in a 'detached HEAD' state, so my variation is:
(cd gnulib && git checkout master && git pull): git commit -m "Update
gnulib" gnulib
> 3) As can be seen in the recent thread, there is considerable disagreement
> regarding the handling of git submodules. Akim wants a fatal error when
> some git submodules have not been initialized, whereas Tim hates this.
Not "hating" it, but it just fails ;-)
I was just searching for a way to disable the check... not sure what is
better suited, a cli option, an env variable or both.
> I would propose to split the common bootstrap or autogen.sh into two
> programs that can be invoked independently:
>
> 1. A program that deals only with the git submodules.
> 2. A program that only generates files (or, regarding PO files, fetches
> files that are not kept in git).
>
> The developer should have the ability to set an environment variable
> (GNULIB_SRCDIR or GNULIB_TOOL), to be used by both programs.
>
> Advantages:
> - Developers can test modified gnulib sources without running through
> hoops.
> - Developers will have an easy way to upgrade to a newer gnulib version.
> - Different project policies regarding submodules are isolated in one place
> and thus have no influence on the gnulib-tool invocation, the PO file
> handling, etc.
>
> Disadvantages:
> - The README-HACKING file will have to list two commands instead of one,
> for the first-time checkout.
>
> What's your opinion?
Make it so that existing build scripts don't have to be modified. E.g.
splitting bootstrap/autogen.sh into two commands is ok as long as the
original command invokes both (and thus being backwards compatible).
Regards, Tim
signature.asc
Description: OpenPGP digital signature