diff options
author | James Youngman <jay@gnu.org> | 2011-05-30 00:34:18 +0100 |
---|---|---|
committer | James Youngman <jay@gnu.org> | 2011-05-30 02:00:23 +0100 |
commit | d09450a94c55b85a6ede44938b03d4968681c39a (patch) | |
tree | db512514b206232f6a90781547fd66b88fe66993 | |
parent | de53ac26074b94ec249e69f9850b999efae4f1d3 (diff) | |
download | findutils-d09450a94c55b85a6ede44938b03d4968681c39a.tar.gz |
Manage gnulib as a git submodule.
* .gitmodules: New file; manage gnulib as a submodule. For future
compatibility with the "bootstrap" script, keep the gnulib
submodule in the gnulib directory (instead of the gnulib-git
directory as before). This means we need to find a new directory
for the output of gnulib-tool; we will use "gl" for that.
* import-gnulib.sh (do_checkout): Replace with do_submodule.
(do_submodule): initialise and configure the gnulib module.
(main): call do_submodule instead of do_checkout. Don't call
move_cvsdir, it's obsolete.
(move_cvsdir): delete
* Makefile.am (SUBDIRS): Rename gnulib to gl.
(ACLOCAL_AMFLAGS): Likewise.
(findutils-check-smells): Rename gnulib-git to gnulib.
* .gitignore: Rename gnulib to gl.
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | ChangeLog | 37 | ||||
-rw-r--r-- | Makefile.am | 8 | ||||
-rw-r--r-- | configure.ac | 8 | ||||
-rw-r--r-- | find/Makefile.am | 4 | ||||
-rw-r--r-- | find/fstype.c | 6 | ||||
m--------- | gnulib | 0 | ||||
-rwxr-xr-x | import-gnulib.sh | 173 | ||||
-rw-r--r-- | lib/Makefile.am | 4 | ||||
-rw-r--r-- | locate/Makefile.am | 6 | ||||
-rw-r--r-- | xargs/Makefile.am | 6 |
12 files changed, 117 insertions, 141 deletions
@@ -14,10 +14,9 @@ stamp-h1 config.sub config.rpath config.guess -gnulib +gl install-sh link-warning.h -gnulib-git tests *~ patches diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..acb26693 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "gnulib"] + path = gnulib + url = git://git.sv.gnu.org/gnulib.git @@ -1,3 +1,40 @@ +2011-05-30 James Youngman <jay@gnu.org> + + Manage gnulib as a git submodule. + * .gitmodules: New file; manage gnulib as a submodule. For future + compatibility with the "bootstrap" script, keep the gnulib + submodule in the gnulib directory (instead of the gnulib-git + directory as before). This means we need to find a new directory + for the output of gnulib-tool; we will use "gl" for that. + * import-gnulib.sh (do_checkout): Replace with do_submodule. + (do_submodule): initialise and configure the gnulib module. + (main): call do_submodule instead of do_checkout. Don't call + move_cvsdir, it's obsolete. + (move_cvsdir): delete + (run_gnulib_tool): change gnulib to ${gldest} (and set that variable). + (hack_gnulib_tool_output): generate gl/Makefile.am, not + gnulib/Makefile.am. + (refresh_output_files): Rename gnulib to gl. + (update_version_file): Check the state of the submodule. + * Makefile.am (SUBDIRS): Rename gnulib to gl. + (ACLOCAL_AMFLAGS): Likewise. + * lib/Makefile.am (INCLUDES): Likewise. + (LDADD): Likewise. + (findutils-check-smells): Rename gnulib-git to gnulib. + * find/Makefile.am (INCLUDES): Change gnulib to gl. + (LDADD): Likewise. + * xargs/Makefile.am (INCLUDES): Change gnulib to gl. + (LDADD): Likewise. + * locate/Makefile.am (INCLUDES): Rename gnulib to gl. + (LDADD): Likewise. + * .gitignore: Rename gnulib to gl. + * configure.ac (AC_CONFIG_MACRO_DIR): Change to gl/m4. + (AC_CONFIG_FILES): use gl/Makefile and gl/lib/Makefile instead of + gnulib/Makefile and gnulib/lib/Makefile. + * find/fstype.c: Include gnulib include files as "foo.h", not + "../gnulib/lib/foo.h", because the relative path is not needed and + in any case has changed. + 2011-05-29 James Youngman <jay@gnu.org> Savannah bug #31424: Revert Interix-specific change. diff --git a/Makefile.am b/Makefile.am index c7f8f398..9cc45229 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,14 +9,12 @@ DISTCLEANFILES = tool-versions.txt # "tests" is the gnulib unit test dir. -SUBDIRS = gnulib tests build-aux lib find xargs locate doc po m4 +SUBDIRS = gl tests build-aux lib find xargs locate doc po m4 -ACLOCAL_AMFLAGS = -I gnulib/m4 -I m4 +ACLOCAL_AMFLAGS = -I gl/m4 -I m4 TESTFILE_SUFFIXES = .exp .xo .xe .xi -# CONFIG_CLEAN_FILES = gnulib/lib/regex.c - tool-versions.txt: Makefile ( automake --version ; echo ; \ autoconf --version ; echo ; \ @@ -49,7 +47,7 @@ findutils-check-testfiles: findutils-check-smells: find $(srcdir) \( -path $(srcdir)/autom4te.cache -o \ - -path $(srcdir)/gnulib-git -o \ + -path $(srcdir)/gnulib -o \ -name .git -o \ \( -type d -name CVS \) \ \) -prune -o \ diff --git a/configure.ac b/configure.ac index da410602..9aff8c83 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,7 @@ AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([find/pred.c]) AC_CONFIG_HEADERS([config.h]) AC_CANONICAL_HOST -AC_CONFIG_MACRO_DIR(gnulib/m4) +AC_CONFIG_MACRO_DIR(gl/m4) dnl Set of available languages. ALL_LINGUAS="be bg cs ca da de el eo es et fi fr ga gl hr hu id it ja ko lg lt ms nl pl pt pt_BR ro ru rw sk sl sr sv tr uk vi zh_CN zh_TW" @@ -93,7 +93,7 @@ gl_WARN_ADD([-Wdeclaration-after-statement]) gl_WARN_ADD([-Wall]) -dnl Older versions of gnulib/m4/nls.m4 provide AM_MKINSTALLDIRS. +dnl Older versions of gl/m4/nls.m4 provide AM_MKINSTALLDIRS. dnl The current version of gnulib does not, but the version of dnl po/Makefile.in.in that comes with gettext-0.14.6 expects dnl that @MKINSTALLDIRS@ will be expanded. @@ -222,8 +222,8 @@ build-aux/Makefile doc/Makefile find/Makefile find/testsuite/Makefile -gnulib/Makefile -gnulib/lib/Makefile +gl/Makefile +gl/lib/Makefile lib/Makefile locate/Makefile locate/testsuite/Makefile diff --git a/find/Makefile.am b/find/Makefile.am index 906b6bfc..dce8bc5e 100644 --- a/find/Makefile.am +++ b/find/Makefile.am @@ -30,8 +30,8 @@ endif # We don't just include man_MANS in EXTRA_DIST because while the value of # man_MANS is not always the same, we want to distribute all of those files. EXTRA_DIST = defs.h sharefile.h find.1 ftsfind.1 oldfind.1 -INCLUDES = -I../gnulib/lib -I$(top_srcdir)/lib -I$(top_srcdir)/gnulib/lib -I../intl -DLOCALEDIR=\"$(localedir)\" -LDADD = ./libfindtools.a ../lib/libfind.a ../gnulib/lib/libgnulib.a $(LIBINTL) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS) $(LIB_SELINUX) $(LIB_CLOSE) $(MODF_LIBM) @FINDLIBS@ +INCLUDES = -I../gl/lib -I$(top_srcdir)/lib -I$(top_srcdir)/gl/lib -I../intl -DLOCALEDIR=\"$(localedir)\" +LDADD = ./libfindtools.a ../lib/libfind.a ../gl/lib/libgnulib.a $(LIBINTL) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS) $(LIB_SELINUX) $(LIB_CLOSE) $(MODF_LIBM) @FINDLIBS@ SUBDIRS = . testsuite #$(PROGRAMS): ../lib/libfind.a diff --git a/find/fstype.c b/find/fstype.c index c6dbe8b6..3a3985f3 100644 --- a/find/fstype.c +++ b/find/fstype.c @@ -1,6 +1,6 @@ /* fstype.c -- determine type of file systems that files are on Copyright (C) 1990, 1991, 1992, 1993, 1994, 2000, - 2004, 2010 Free Software Foundation, Inc. + 2004, 2010, 2011 Free Software Foundation, Inc. This program 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 @@ -52,11 +52,11 @@ extern int errno; #endif #include "defs.h" -#include "../gnulib/lib/dirname.h" +#include "dirname.h" #include "xalloc.h" /* Need declaration of function `xstrtoumax' */ -#include "../gnulib/lib/xstrtol.h" +#include "xstrtol.h" #include "extendbuf.h" #include "mountlist.h" diff --git a/gnulib b/gnulib new file mode 160000 +Subproject 3532d15484ebc37feded387216d716bc1c3533f diff --git a/import-gnulib.sh b/import-gnulib.sh index 8bf9a104..1f7d8bd1 100755 --- a/import-gnulib.sh +++ b/import-gnulib.sh @@ -1,8 +1,8 @@ #! /bin/sh # # import-gnulib.sh -- imports a copy of gnulib into findutils -# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software -# Foundation, Inc. +# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, +# 2011 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,10 +19,10 @@ # ########################################################################## # -# This script is intended to populate the "gnulib" directory +# This script is intended to populate the "gl" directory # with a subset of the gnulib code, as provided by "gnulib-tool". # -# To use it, just run this script with the top-level sourec directory +# To use it, just run this script with the top-level source directory # as your working directory. # If CDPATH is set, it will sometimes print the name of the directory @@ -31,11 +31,9 @@ unset CDPATH ## Defaults -# cvsdir=/doesnotexist -git_repo="git://git.savannah.gnu.org/gnulib.git" configfile="./import-gnulib.config" need_checkout=yes -gnulib_changed=false +gldest=gl # If $GIT_CLONE_DEPTH is not set, apply a default. : ${GIT_CLONE_DEPTH:=4} @@ -58,50 +56,34 @@ to specify the directory containing the gnulib code. EOF } - -do_checkout () { - local gitdir="$1" - echo checking out gnulib from GIT in $gitdir - - if [ -z "$gnulib_version" ] ; then - echo "Error: There should be a gnulib_version setting in $configfile, but there is not." >&2 - exit 1 - fi - - - if ! [ -d "$gitdir" ] ; then - if mkdir "$gitdir" ; then - echo "Created $gitdir" - else - echo "Failed to create $gitdir" >&2 - exit 1 +do_submodule () { + local sm_name="$1" + if test -f .gitmodules; then + if git config --file \ + .gitmodules "submodule.${sm_name}.url" >/dev/null; then + # Submodule config in .gitmodules is already in place. + # Copy the submodule config into .git. + git submodule init || exit $? + # Update the gnulib module. + git submodule update || exit $? + else + # .gitmodules should include gnulib. + cat >&2 <<EOF +The .gitmodules file is present, but does not list ${sm_name}. +This version of findutils expects it to be there. +Please report this as a bug to bug-findutils@gnu.org. +The .gitmodules file contains this: +EOF + cat .gitmodules >&2 + exit 1 fi - fi - - # Change directory unconditionally before issuing git commands, because - # we're dealing with two git repositories; the gnulib one and the - # findutils one. - - if ( cd $gitdir && test -d gnulib/.git ; ) ; then - echo "Git repository was already initialised." else - echo "Cloning the git repository..." - ( cd $gitdir && git clone --depth="${GIT_CLONE_DEPTH}" "$git_repo" ; ) - fi - - if ( cd $gitdir/gnulib && - git diff --name-only --exit-code "$gnulib_version" ; ) ; then - # We are already at the correct version. - # Nothing to do - gnulib_changed=false - echo "Already at gnulib version $gnulib_version; no change" - else - gnulib_changed=true - set -x - ( cd $gitdir/gnulib && - git fetch origin && - git checkout "$gnulib_version" ; ) - set +x + # findutils should have .gitmodules + cat >&2 <<EOF +The .gitmodules file is missing. This version of findutils expects it +to be there. Please report this as a bug to bug-findutils@gnu.org. +EOF + exit 1 fi } @@ -124,15 +106,18 @@ run_gnulib_tool() { fi - if [ -d gnulib ] + if [ -d "${gldest}" ] then - echo "Warning: directory gnulib already exists." >&2 + echo "Warning: directory ${gldest} already exists." >&2 else - mkdir gnulib + mkdir "${gldest}" fi set -x - if "$tool" --import --symlink --with-tests --dir=. --lib=libgnulib --source-base=gnulib/lib --m4-base=gnulib/m4 --local-dir=gnulib-local $modules + if "$tool" --import --symlink --with-tests \ + --dir=. --lib=libgnulib \ + --source-base="${gldest}"/lib \ + --m4-base="${gldest}"/m4 --local-dir=gnulib-local $modules then set +x else @@ -195,7 +180,7 @@ hack_gnulib_tool_output() { copyhack "${gnulibdir}"/"$file" "$dest" || exit done - cat > gnulib/Makefile.am <<EOF + cat > gl/Makefile.am <<EOF # Copyright (C) 2004, 2009 Free Software Foundation, Inc. # # This file is free software, distributed under the terms of the GNU @@ -214,7 +199,7 @@ EOF refresh_output_files() { autopoint -f && - aclocal -I m4 -I gnulib/m4 && + aclocal -I m4 -I gl/m4 && autoheader && autoconf && automake --add-missing --copy @@ -222,8 +207,11 @@ refresh_output_files() { update_version_file() { + local gnulib_git_dir="$1" local ver - outfile="lib/gnulib-version.c" + local outfile="lib/gnulib-version.c" + local gnulib_version="$( cd ${gnulib_git_dir} && git show-ref -s HEAD )" + if [ -z "$gnulib_version" ] ; then ver="unknown (locally modified code; no version number available)" else @@ -313,27 +301,6 @@ Example: } -move_cvsdir() { - local cvs_git_root=":pserver:anonymous@pserver.git.sv.gnu.org:/gnulib.git" - - if test -d gnulib-cvs/gnulib/CVS - then - if test x"$(cat gnulib-cvs/gnulib/CVS/Root)" == x"$cvs_git_root"; then - # We cannot use the git-cvspserver interface because - # "update -D" doesn't work. - echo "WARNING: Migrating from git-cvs-pserver to native git..." >&2 - savedir=gnulib-cvs.before-nativegit-migration - else - # The old CVS repository is not updated any more. - echo "WARNING: Migrating from old CVS repository to native git" >&2 - savedir=gnulib-cvs.before-git-migration - fi - mv gnulib-cvs $savedir || exit 1 - echo "Please delete $savedir eventually" - fi -} - - record_config_change() { # $1: name of the import-gnulib.config file # $2: name of the last.config file @@ -370,53 +337,25 @@ of the gnulib code. See http://git.or.cz/ for more information about git. EOF exit 1 fi - move_cvsdir - do_checkout gnulib-git + + do_submodule gnulib check_merge_driver - gnulibdir=gnulib-git/gnulib + gnulibdir=gnulib else echo "Warning: using gnulib code which already exists in $gnulibdir" >&2 fi - ## If the config file changed since we last imported, or the gnulib - ## code itself changed, we will need to re-run gnulib-tool. - lastconfig="./gnulib/last.config" - config_changed=false - if "$gnulib_changed" ; then - echo "The gnulib code changed, we need to re-import it." - else - if test -e "$lastconfig" ; then - if cmp "$lastconfig" "$configfile" ; then - echo "Both gnulib and the import config are unchanged." - else - echo "The gnulib import config was changed." - echo "We need to re-run gnulib-tool." - config_changed=true - fi - else - echo "$lastconfig does not exist, we need to run gnulib-tool." - config_changed=true - fi - fi - - ## Invoke gnulib-tool to import the code. local tool="${gnulibdir}"/gnulib-tool - if $gnulib_changed || $config_changed ; then - if run_gnulib_tool "${tool}" && - hack_gnulib_tool_output "${gnulibdir}" && - refresh_output_files && - update_licenses && - update_version_file && - record_config_change "$configfile" "$lastconfig" - then - echo Done. - else - echo FAILED >&2 - exit 1 - fi + if run_gnulib_tool "${tool}" && + hack_gnulib_tool_output "${gnulibdir}" && + refresh_output_files && + update_licenses && + update_version_file "${gnulibdir}" + then + echo Done. else - echo "No change to the gnulib code or configuration." - echo "Therefore, no need to run gnulib-tool." + echo FAILED >&2 + exit 1 fi } diff --git a/lib/Makefile.am b/lib/Makefile.am index 029037e5..21967311 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -30,8 +30,8 @@ DISTCLEANFILES = MAINTAINERCLEANFILES = -INCLUDES = -I../gnulib/lib -I$(top_srcdir)/gnulib/lib -LDADD = ../gnulib/lib/libgnulib.a $(LIBINTL) +INCLUDES = -I../gl/lib -I$(top_srcdir)/gl/lib +LDADD = ../gl/lib/libgnulib.a $(LIBINTL) libfind_a_SOURCES += nextelem.h printquoted.h listfile.h \ regextype.h dircallback.h safe-atoi.h diff --git a/locate/Makefile.am b/locate/Makefile.am index e3bb824e..607f0559 100644 --- a/locate/Makefile.am +++ b/locate/Makefile.am @@ -20,11 +20,11 @@ locate_SOURCES = locate.c word_io.c code_SOURCES = code.c word_io.c locate_TEXINFOS = dblocation.texi -INCLUDES = -I$(top_srcdir)/lib -I../gnulib/lib -I$(top_srcdir)/gnulib/lib -I../intl -DLOCATE_DB=\"$(LOCATE_DB)\" -DLOCALEDIR=\"$(localedir)\" +INCLUDES = -I$(top_srcdir)/lib -I../gl/lib -I$(top_srcdir)/gl/lib -I../intl -DLOCATE_DB=\"$(LOCATE_DB)\" -DLOCALEDIR=\"$(localedir)\" -LDADD = ../lib/libfind.a ../gnulib/lib/libgnulib.a $(LIB_CLOSE) $(LIBINTL) +LDADD = ../lib/libfind.a ../gl/lib/libgnulib.a $(LIB_CLOSE) $(LIBINTL) -$(PROGRAMS) $(LIBPROGRAMS): ../lib/libfind.a ../gnulib/lib/libgnulib.a +$(PROGRAMS) $(LIBPROGRAMS): ../lib/libfind.a ../gl/lib/libgnulib.a # We generate updatedb from the Makefile rather than with AC_OUTPUT in # configure.ac in order to allow the user better control of what goes diff --git a/xargs/Makefile.am b/xargs/Makefile.am index 87da63cf..75d07b61 100644 --- a/xargs/Makefile.am +++ b/xargs/Makefile.am @@ -3,12 +3,12 @@ AM_CFLAGS = $(WARN_CFLAGS) localedir = $(datadir)/locale bin_PROGRAMS = xargs man_MANS = xargs.1 -INCLUDES = -I.. -I../gnulib/lib -I$(top_srcdir)/gnulib/lib -I$(top_srcdir)/lib -I../intl -DLOCALEDIR=\"$(localedir)\" -LDADD = ../lib/libfind.a ../gnulib/lib/libgnulib.a $(LIB_CLOSE) $(LIBINTL) +INCLUDES = -I.. -I../gl/lib -I$(top_srcdir)/gl/lib -I$(top_srcdir)/lib -I../intl -DLOCALEDIR=\"$(localedir)\" +LDADD = ../lib/libfind.a ../gl/lib/libgnulib.a $(LIB_CLOSE) $(LIBINTL) EXTRA_DIST = $(man_MANS) SUBDIRS = . testsuite -$(PROGRAMS): ../lib/libfind.a ../gnulib/lib/libgnulib.a +$(PROGRAMS): ../lib/libfind.a ../gl/lib/libgnulib.a dist-hook: findutils-check-manpages |