summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Youngman <jay@gnu.org>2011-05-30 00:34:18 +0100
committerJames Youngman <jay@gnu.org>2011-05-30 02:00:23 +0100
commitd09450a94c55b85a6ede44938b03d4968681c39a (patch)
treedb512514b206232f6a90781547fd66b88fe66993
parentde53ac26074b94ec249e69f9850b999efae4f1d3 (diff)
downloadfindutils-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--.gitignore3
-rw-r--r--.gitmodules3
-rw-r--r--ChangeLog37
-rw-r--r--Makefile.am8
-rw-r--r--configure.ac8
-rw-r--r--find/Makefile.am4
-rw-r--r--find/fstype.c6
m---------gnulib0
-rwxr-xr-ximport-gnulib.sh173
-rw-r--r--lib/Makefile.am4
-rw-r--r--locate/Makefile.am6
-rw-r--r--xargs/Makefile.am6
12 files changed, 117 insertions, 141 deletions
diff --git a/.gitignore b/.gitignore
index 355bc98b..248d902b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/ChangeLog b/ChangeLog
index 52eda470..4372fc5f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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