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