Re: Proposed gnulib renames

From:

Bruno Haible

Subject:

Re: Proposed gnulib renames

Date:

Wed, 26 Jan 2011 18:33:20 +0100

User-agent:

KMail/1.9.9

Hi Eric, Eli,
Remember that Eli said that the entire discussion is about renaming files
in the Emacs repository, not in gnulib [1]. I also pointed out that MSDOS
support is outside of gnulib's scope [2].
On this background, for me the goal is not to do any renamings in gnulib,
but rather to help the Emacs maintainers do these renamings easily when
they pull from gnulib.
1) About c++defs.h:
I have proposed in [2] a modification to the Emacs sources that will ensure
that
- No c++defs.h is contained in the build.
- A gnulib-local/modules/c++defs.orig file is contained in the tarball but
not used in the build. According to Eli [3][4] the djtar program can
deal with such a file automatically.
2) About *.in.h include files:
Eric Blake wrote:
> I agree that use of gnulib-tool
> --local-dir won't quite work; it could easily patch the module
> descriptions (and makefile snippets) to refer to *-in.h files with
> minimal risk of too many upstream changes to track, but the rename
> itself is not possible via simple patch(1) files (yes, GNU patchutils is
> adding support for git-style rename patches, which would be much easier
> to maintain, but I don't know if we should rely on that yet).
The simplest way to deal with this is that the script for updating the
Emacs sources from gnulib
1. runs "gnulib-tool"
2. looks at list of lib/*.in.h files,
3. performs some 'mv' commands to rename them,
4. performs some sed replacements on the generated Makefile.am.
Compared to the sed processing that is done by gnulib-tool, this is really
minor.
Eli Zaretskii says in [5]:
> I'm okay with renaming them to use underscores. But if gnulib
> maintainers object, the djtar utility will take care of these, too.
> Editing Makefile.in to refer to them in config.h should not be a big
> issue.
I agree with Eli that a bit of hand-written renaming in the script
is feasible and maintainable.
3) About the collision of gnulib-cache.m4, gnulib-comp.m4, gnulib-common.m4:
Only one of these files is in gnulib. The other two are generated, and these
files are used by two programs: 'gnulib-tool' and 'aclocal'. For
'gnulib-tool', the file names matter, but 'gnulib-tool' is only invoked
from a specific script or Makefile in the Emacs sources. For 'aclocal',
the names of the .m4 files don't matter.
So, I would propose that you change the script from
gnulib-tool ...<many options>
to
if test -f m4/gl-cache.m4; then mv m4/gl-cache.m4 m4/gnulib-cache.m4; done
if test -f m4/gl-comp.m4; then mv m4/gl-comp.m4 m4/gnulib-comp.m4; done
gnulib-tool ...<many options>
mv m4/gnulib-cache.m4 m4/gl-cache.m4
mv m4/gnulib-comp.m4 m4/gl-comp.m4
Eric Blake wrote:
> Changing gnulib-cache.m4 would have downstream effects on all
> gnulib clients; it could be done with a NEWS entry, but I'd rather avoid
> that. But the other two files (gnulib-common.m4 and gnulib-comp.m4)
> seem like fair game; how about the names gnulib-prereq.m4 (since all the
> common code is prerequisite to the rest of gnulib) and gnulib-list.m4
> (since comp contains the computed list of files/macros installed by
> gnulib-tool).
It is out of question to rename things in a way that would affect all
gnulib users. If necessary, we could introduce a special option or two
in gnulib-tool, for Emacs developers to use. But even this is not needed,
given that it can be done with two 'mv' commands before and two 'mv'
commands after the invocation of gnulib-tool.
Eli, do these three proposals solve the issues? If not, what's remaining?
Bruno
[1] http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00865.html
[2] http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00779.html
[3] http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00827.html
[4] http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00866.html
[5] http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00922.html