From: Paul Eggert Date: Mon, 21 May 2012 02:33:13 +0000 (-0700) Subject: Make merging from gnulib a script, not a makefile action. X-Git-Tag: emacs-24.2.90~471^2~6^2~110^2~45 X-Git-Url: https://code.delx.au/gnu-emacs/commitdiff_plain/9b4ee6166fd8da5f8006a265f775d84e60c15be7 Make merging from gnulib a script, not a makefile action. Putting it in a makefile has some problems with reflection, as merging from gnulib updates 'configure', which can update the makefile. Putting it in a standalone script breaks this loop. * Makefile.in (gnulib_srcdir, $(gnulib_srcdir), DOS_gnulib_comp.m4) (GNULIB_MODULES, GNULIB_TOOL_FLAGS, sync-from-gnulib): Remove, moving the actions to the script admin/merge-gnulib. * admin/merge-gnulib: New script, with actions moved here from ../Makefile.in. --- diff --git a/ChangeLog b/ChangeLog index 9cc5e493dd..f95549d66a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2012-05-21 Paul Eggert + + Make merging from gnulib a script, not a makefile action. + Putting it in a makefile has some problems with reflection, as + merging from gnulib updates 'configure', which can update the makefile. + Putting it in a standalone script breaks this loop. + * Makefile.in (gnulib_srcdir, $(gnulib_srcdir), DOS_gnulib_comp.m4) + (GNULIB_MODULES, GNULIB_TOOL_FLAGS, sync-from-gnulib): + Remove, moving the actions to the script admin/merge-gnulib. + 2012-05-21 Glenn Morris * Makefile.in (install-arch-indep, install-doc, install-info) diff --git a/Makefile.in b/Makefile.in index 90afd2310d..f978f19e97 100644 --- a/Makefile.in +++ b/Makefile.in @@ -309,43 +309,6 @@ src: lib-src FRC # and `leim'. lisp leim: src -# Maintainers can put a copy of gnulib into $(gnulib_srcdir). -gnulib_srcdir = ../gnulib -$(gnulib_srcdir): - git clone git://git.savannah.gnu.org/gnulib.git $@ - -# A shorter name that satisfies MS-DOS 8+3 constraints. -DOS_gnulib_comp.m4 = gl-comp.m4 - -# Update modules from gnulib, for maintainers, who should have it in -# $(gnulib_srcdir) (relative to $(srcdir) and should have build tools -# as per $(gnulib_srcdir)/DEPENDENCIES. -GNULIB_MODULES = \ - alloca-opt \ - careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr \ - dup2 \ - filemode getloadavg getopt-gnu ignore-value intprops lstat \ - manywarnings mktime pthread_sigmask readlink \ - socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat \ - warnings -GNULIB_TOOL_FLAGS = \ - --avoid=msvc-inval --avoid=msvc-nothrow \ - --avoid=raise --avoid=threadlib \ - --conditional-dependencies --import --no-changelog --no-vc-files \ - --makefile-name=gnulib.mk -sync-from-gnulib: $(gnulib_srcdir) - -cd $(srcdir)/m4 && cp $(DOS_gnulib_comp.m4) gnulib-comp.m4 - cd $(srcdir) && \ - $(gnulib_srcdir)/gnulib-tool $(GNULIB_TOOL_FLAGS) $(GNULIB_MODULES) - cd $(srcdir)/m4 && rm gnulib-cache.m4 warn-on-use.m4 - cd $(srcdir)/m4 && mv gnulib-comp.m4 $(DOS_gnulib_comp.m4) - cp $(gnulib_srcdir)/build-aux/texinfo.tex $(srcdir)/doc/misc - cp \ - $(gnulib_srcdir)/build-aux/move-if-change \ - $(srcdir)/build-aux - cd $(srcdir) && autoreconf -i -I m4 -.PHONY: sync-from-gnulib - # These targets should be "${SUBDIR} without `src'". lib lib-src lisp leim: Makefile FRC cd $@ && $(MAKE) all $(MFLAGS) \ diff --git a/admin/ChangeLog b/admin/ChangeLog index 55504b3d6f..86069da7f0 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,9 @@ +2012-05-21 Paul Eggert + + Make merging from gnulib a script, not a makefile action. + * merge-gnulib: New script, with actions moved here from + ../Makefile.in. + 2012-05-19 Paul Eggert * CPP-DEFINES (HAVE_GETDOMAINNAME): Remove. diff --git a/admin/merge-gnulib b/admin/merge-gnulib new file mode 100755 index 0000000000..57b71ee4a7 --- /dev/null +++ b/admin/merge-gnulib @@ -0,0 +1,88 @@ +#! /bin/sh +# Merge gnulib sources into Emacs sources. +# Typical usage: +# +# admin/merge-gnulib + +# Copyright 2012 Free Software Foundation, Inc. + +# This file is part of GNU Emacs. + +# GNU Emacs is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# GNU Emacs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with GNU Emacs. If not, see . + +# written by Paul Eggert + +GNULIB_URL=git://git.savannah.gnu.org/gnulib.git + +GNULIB_MODULES=' + alloca-opt + careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 + dtoastr dup2 + filemode getloadavg getopt-gnu ignore-value intprops lstat + manywarnings mktime pthread_sigmask readlink + socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat + warnings +' + +GNULIB_TOOL_FLAGS=' + --avoid=msvc-inval --avoid=msvc-nothrow + --avoid=raise --avoid=threadlib + --conditional-dependencies --import --no-changelog --no-vc-files + --makefile-name=gnulib.mk +' + +# The source directory, with a trailing '/'. +# If empty, the source directory is the working directory. +src=$2 +case $src in + */ | '') ;; + *) src=$src/ ;; +esac + +# Gnulib's source directory. +gnulib_srcdir=${1-$src../gnulib} + +case $gnulib_srcdir in + -*) src=- ;; +esac +case $src in + -*) + echo >&2 "$0: usage: $0 [GNULIB_SRCDIR [SRCDIR]] + + SRCDIR is the Emacs source directory (default: working directory). + GNULIB_SRCDIR is the Gnulib source directory (default: SRCDIR/../gnulib)." + exit 1 ;; +esac + +test -x "$src"autogen.sh || { + echo >&2 "$0: '${src:-.}' is not an Emacs source directory." + exit 1 +} + +test -d "$gnulib_srcdir" || +git clone -- "$GNULIB_URL" "$gnulib_srcdir" || +exit + +test -x "$gnulib_srcdir"/gnulib-tool || { + echo >&2 "$0: '$gnulib_srcdir' is not a Gnulib source directory." + exit 1 +} + +cp -- "$src"m4/gl-comp.m4 "$src"m4/gnulib-comp.m4 && +"$gnulib_srcdir"/gnulib-tool --dir="$src" $GNULIB_TOOL_FLAGS $GNULIB_MODULES && +rm -- "$src"m4/gnulib-cache.m4 "$src"m4/warn-on-use.m4 && +mv -- "$src"m4/gnulib-comp.m4 "$src"m4/gl-comp.m4 && +cp -- "$gnulib_srcdir"/build-aux/texinfo.tex "$src"doc/misc && +cp -- "$gnulib_srcdir"/build-aux/move-if-change "$src"build-aux && +autoreconf -i -I m4 -- ${src:+"$src"}