diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-02-14 19:52:56 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-02-14 19:52:56 +0200 |
commit | 0aa16b2a5d19223acb637abe731da10c75d7bd08 (patch) | |
tree | 7f52c802b22cdcc56aa296d79fec7f140e70d414 | |
parent | 0d7591e8f3ebcb5ad683eb6a8e3a162e79859321 (diff) | |
download | cpio-0aa16b2a5d19223acb637abe731da10c75d7bd08.tar.gz cpio-0aa16b2a5d19223acb637abe731da10c75d7bd08.tar.bz2 |
Switch to Git
-rw-r--r-- | .gitignore (renamed from .cvsignore) | 14 | ||||
-rw-r--r-- | ChangeLog.cvs (renamed from ChangeLog) | 1 | ||||
-rw-r--r-- | Makefile.am | 40 | ||||
-rw-r--r-- | README-alpha | 78 | ||||
-rw-r--r-- | README-cvs | 70 | ||||
-rw-r--r-- | README-hacking | 71 | ||||
-rwxr-xr-x | bootstrap | 648 | ||||
-rw-r--r-- | bootstrap.conf | 22 | ||||
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | doc/.gitignore (renamed from doc/.cvsignore) | 11 | ||||
-rw-r--r-- | gnulib.modules | 3 | ||||
-rw-r--r-- | headers/.cvsignore | 2 | ||||
-rw-r--r-- | paxlib/.gitignore | 9 | ||||
-rw-r--r-- | paxlib/Makefile.am (renamed from lib/Makefile.am) | 29 | ||||
-rw-r--r-- | paxlib/fatal.c (renamed from lib/fatal.c) | 0 | ||||
m--------- | paxutils | 0 | ||||
-rw-r--r-- | po/.gitignore (renamed from po/.cvsignore) | 4 | ||||
-rw-r--r-- | po/POTFILES.in | 31 | ||||
-rw-r--r-- | src/.cvsignore | 11 | ||||
-rw-r--r-- | src/.gitignore | 1 | ||||
-rw-r--r-- | src/Makefile.am | 11 | ||||
-rw-r--r-- | tests/.gitignore (renamed from tests/.cvsignore) | 5 | ||||
-rw-r--r-- | tests/Makefile.am | 4 |
23 files changed, 550 insertions, 521 deletions
@@ -1,7 +1,13 @@ -*.tar.bz2 -*.tar.gz +*.a +*.o +*.tar.* +*~ .bootstrap +.deps +.emacs.desktop +.emacsrc ABOUT-NLS +ChangeLog INSTALL Makefile Makefile.in @@ -13,8 +19,8 @@ config.h.in config.log config.status configure +core +gnu m4 -nonexistent rmt -scripts stamp-h1 diff --git a/ChangeLog b/ChangeLog.cvs index 51ae5f8..4458450 100644 --- a/ChangeLog +++ b/ChangeLog.cvs @@ -1,3 +1,4 @@ + 2008-03-06 Sergey Poznyakoff <gray@gnu.org.ua> * bootstrap: Update .cvsignore files. diff --git a/Makefile.am b/Makefile.am index 332da25..0025b9a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ # This file is part of GNU cpio -# Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc. +# Copyright (C) 2003, 2004, 2007, 2009 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 @@ -20,4 +20,40 @@ ACLOCAL_AMFLAGS = -I m4 AUTOMAKE_OPTIONS = gnits 1.8 dist-bzip2 std-options -SUBDIRS = doc headers lib rmt src po tests +SUBDIRS = doc headers gnu paxlib rmt src po tests + +gen_start_date = 2008-03-07 + +.PHONY: make-ChangeLog +make-ChangeLog: + if test -d .git; then \ + $(top_srcdir)/build-aux/gitlog-to-changelog \ + --since=$(gen_start_date) | \ + sed '/<unknown>$$/d' | fmt -s > $(distdir)/cl-t; \ + cat ChangeLog.cvs | sed '/^Local Variables:/,/^End:/d' \ + >> $(distdir)/cl-t; \ + echo "Local Variables:" >> $(distdir)/cl-t; \ + echo "mode: change-log" >> $(distdir)/cl-t; \ + echo "version-control: never" >> $(distdir)/cl-t; \ + echo "buffer-read-only: t" >> $(distdir)/cl-t; \ + echo "End:" >> $(distdir)/cl-t; \ + rm -f $(distdir)/ChangeLog; \ + mv $(distdir)/cl-t $(distdir)/ChangeLog; \ + fi + +dist-hook: make-ChangeLog + +.PHONY: ChangeLog +ChangeLog: + if test -d .git; then \ + $(top_srcdir)/build-aux/gitlog-to-changelog \ + --since=$(gen_start_date) | \ + sed '/<unknown>$$/d' | fmt -s > ChangeLog; \ + cat ChangeLog.cvs | sed '/^Local Variables:/,/^End:/d' \ + >> ChangeLog; \ + echo "Local Variables:" >> ChangeLog; \ + echo "mode: change-log" >> ChangeLog; \ + echo "version-control: never" >> ChangeLog; \ + echo "buffer-read-only: t" >> ChangeLog; \ + echo "End:" >> ChangeLog; \ + fi diff --git a/README-alpha b/README-alpha index aad7983..fd76d7c 100644 --- a/README-alpha +++ b/README-alpha @@ -1,63 +1,47 @@ This is the GNU cpio package. +This document describes the actions needed to build the pre-release +or Git version of the package. See end of file for copying conditions. -This is a *pre-release* version, and not ready for production use yet. -Please send comments and problem reports to <bug-cpio@gnu.org>. +* Introduction -If you have taken the sources from CVS you will need the following -packages (or later) to build GNU tar. We don't make any extra effort -to accommodate older versions of these packages, so please make sure -that you have the latest stable version. +This is a *pre-release* version, and not ready for production use +yet. If you are taking source from Git, you will need to have several +special tools to help contribute. See the file README-hacking for more +information, See chapter `Building' for the detailed instructions on +how to build the package. -- Automake <http://www.gnu.org/software/automake/> -- Autoconf <http://www.gnu.org/software/autoconf/> -- Gettext <http://www.gnu.org/software/gettext/> -- M4 <http://www.gnu.org/software/m4/> -- Texinfo <http://www.gnu.org/software/texinfo> +Please, note that the accompanying documentation may be inaccurate +or incomplete. The Git logs are the authoritative documentation of +all recent changes. You may convert them to the traditional ChangeLog +format by running `make ChangeLog'. -Before building the package, run "bootstrap". It obtains various -additional files from the CVS repository and the Translation Project -site and prepares the source directory for building. +Report bugs to <bug-cpio@gnu.org> -When run without arguments, bootstrap will try to obtain gnulib and -paxutils files from their corresponding CVS repositories on Savannah -using anonymous SSH access. Then, it will fetch the po files from tar -page at Translation Project, and, finally, it will start autoconfiguration -process. Simply running it without arguments should do in most cases. -Several options allow to control the behavior of bootstrap: +* Checking Out the Sources - --gnulib-srcdir=DIRNAME Specify the local directory where gnulib - sources reside. Use this if you already - have gnulib sources on your machine, and - do not want to waste your bandwidth dowloading - them again. +The following instructions apply if you wish to obtain sources from +the Git repository: - --paxutils-srcdir=DIRNAME Specify the local directory where paxutils - sources reside. Use this if you already - have paxutils sources on your machine, and - do not want to waste your bandwidth dowloading - them again. +To clone the source tree from the repository, issue the following command: - --cvs-auth=METHOD Set the CVS access method used for downloading - gnulib files. METHOD is one of the keywords - accepted by cvs -d option (see info cvs - repository). + git clone git://git.savannah.gnu.org/cpio.git - --cvs-user=USERNAME Set the CVS username to be used when accessing - the gnulib repository. +This will give you read-only access. If you think you need write access, +contact the mailing list. - --no-po Do not download po files. +* Building -Notice also that when using CVS authentication method "ext", bootstrap -will set the variable CVS_RSH to "ssh", unless it is already set to -some other value. +Usual procedures apply: -Then, configure and build the package as usual. + ./configure + make + make install -Report bugs to <bug-cpio@gnu.org> +See INSTALL and README for the detailed instructions. - +* Copyright information: -Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc. +Copyright (C) 2004, 2006, 2007, 2009 Free Software Foundation, Inc. This file is part of GNU cpio. @@ -76,6 +60,12 @@ along with GNU cpio; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +Local Variables: +mode: outline +paragraph-separate: "[ ]*$" +version-control: never +End: diff --git a/README-cvs b/README-cvs deleted file mode 100644 index fd9e2a0..0000000 --- a/README-cvs +++ /dev/null @@ -1,70 +0,0 @@ --*- outline -*- - -These notes intend to help people working on the CVS version of -this package. - -* Requirements - -Only the sources are installed in the CVS repository (to ease the -maintenance, merges etc.), therefore you will have to get the latest -stable versions of the maintainer tools we depend upon, including: - -- Automake <http://www.gnu.org/software/automake/> -- Autoconf <http://www.gnu.org/software/autoconf/> -- Bison <http://www.gnu.org/software/bison/> -- Gettext <http://www.gnu.org/software/gettext/> -- Gzip <http://www.gnu.org/software/gzip/> -- Tar <http://www.gnu.org/software/tar/> -- Wget <http://www.gnu.org/software/wget/> - -As of this writing, the latest stable version of Gzip is 1.2.4 but we -suggest using test version 1.3.5 (or later, if one becomes available). - -Valgrind <http://valgrind.org/> is also highly recommended, if -Valgrind supports your architecture. - -Only building the initial full source tree will be a bit painful, -later, a plain `cvs update -P && make' should be sufficient. - -* First CVS checkout - -Obviously, if you are reading these notes, you did manage to check out -this package from CVS. The next step is to get other files needed to -build, which are extracted from other source packages: - - $ ./bootstrap - -And there you are! Just - - $ ./configure - $ make - $ make check - -At this point, there should be no difference between your local copy, -and the CVS master copy: - - $ cvs diff - -should output no difference. - -Enjoy! - ------ - -Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 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, or (at your option) -any later version. - -This program 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 this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. diff --git a/README-hacking b/README-hacking new file mode 100644 index 0000000..5323002 --- /dev/null +++ b/README-hacking @@ -0,0 +1,71 @@ +These notes intend to help people working on the Git version of +this package. + +* Requirements + +You need the following packages to build the Git version of GNU +cpio. We do not make any efforts to accommodate older versions of +these packages, so please make sure that you have the latest stable +version. + +- Automake <http://www.gnu.org/software/automake/> +- Autoconf <http://www.gnu.org/software/autoconf/> +- M4 <http://www.gnu.org/software/m4/> +- Texinfo <http://www.gnu.org/software/texinfo> +- Gnulib <http://www.gnu.org/software/gnulib> +- Git <http://git.or.cz> + +* Bootstrapping + +Obviously, if you are reading these notes, you did manage to clone +cpio from Git. The next step is to get other files needed to build, +which are extracted from other source packages: + +1. Change to the source tree directory + + cd cpio + +2. Run + + ./bootstrap + +Once done, proceed as described in the file README (section +INSTALLATION). + +Normally you will have to run bootstrap only once. However, if you +intend to hack on GNU cpio, you might need to run it again later. In +this case, you will probably want to save some time and bandwidth by +avoiding downloading the same files again. If so, create in GNU cpio +root directory the file named `.bootstrap' with the following +contents: + + --gnulib-srcdir=$HOME/gnulib --paxutils-srcdir=$HOME/paxutils + +Replace `$HOME/gnulib' and $HOME/paxutils with the actual directory +where the Gnulib and Paxutils sources reside. + +For more information about `bootstrap', run `bootstrap --help'. + + +* Copyright information + + Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. + + Permission is granted to anyone to make or distribute verbatim copies + of this document as received, in any medium, provided that the + copyright notice and this permission notice are preserved, + thus giving the recipient permission to redistribute in turn. + + Permission is granted to distribute modified versions + of this document, or of portions of it, + under the above conditions, provided also that they + carry prominent notices stating who last changed them. + +^L +Local Variables: +mode: outline +paragraph-separate: "[ ^L]*$" +version-control: never +End: + + @@ -1,115 +1,71 @@ #! /bin/sh -# Bootstrap this package from CVS. +# Bootstrap this package from checked-out sources. -# Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +# Copyright (C) 2003-2008 Free Software Foundation, Inc. -# This program is free software; you can redistribute it and/or modify +# Dico 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, or (at your option) -# any later version. +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. -# This program is distributed in the hope that it will be useful, +# Dico 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 this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with Dico. If not, see <http://www.gnu.org/licenses/>. -# Written by Paul Eggert and Sergey Poznyakoff. +# Written by Paul Eggert. nl=' ' # Ensure file names are sorted consistently across platforms. -# Also, ensure diagnostics are in English, e.g., "wget --help" below. LC_ALL=C export LC_ALL +local_gl_dir=gl + +# Temporary directory names. +bt='._bootmp' +bt_regex=`echo "$bt"| sed 's/\./[.]/g'` +bt2=${bt}2 + usage() { echo >&2 "\ Usage: $0 [OPTION]... Bootstrap this package from the checked-out sources. Options: - --paxutils-srcdir=DIRNAME Specify the local directory where paxutils - sources reside. Use this if you already - have paxutils sources on your machine, and - do not want to waste your bandwidth dowloading - them again. --gnulib-srcdir=DIRNAME Specify the local directory where gnulib sources reside. Use this if you already have gnulib sources on your machine, and + do not want to waste your bandwidth downloading + them again. + --paxutils-srcdir=DIRNAME Specify the local directory where paxutils + sources reside. Use this if you already + have paxutils sources on your machine, and do not want to waste your bandwidth dowloading them again. --copy Copy files instead of creating symbolic links. --force Attempt to bootstrap even if the sources seem not to have been checked out. --skip-po Do not download po files. - --update-po Update po files and exit. - --cvs-user=USERNAME Set the CVS username to be used when accessing - the paxutils repository. If the file bootstrap.conf exists in the current working directory, its contents are read as shell variables to configure the bootstrap. -Local defaults can be provided by placing the file \`.bootstrap' in the -current working directory. The file is read after bootstrap.conf, comments -and empty lines are removed, shell variables expanded and the result is -prepended to the command line options. - Running without arguments will suffice in most cases. " } -checkout() { - if [ ! -d $1 ]; then - echo "$0: getting $1 files..." - - case $1 in - paxutils) - case ${CVS_AUTH-pserver} in - pserver) - CVS_PREFIX=':pserver:anonymous@';; - ssh) - CVS_PREFIX="$CVS_USER${CVS_USER+@}";; - *) - echo "$0: $CVS_AUTH: Unknown CVS access method" >&2 - exit 1;; - esac - - case $CVS_RSH in - '') CVS_RSH=ssh; export CVS_RSH;; - esac - - CVSURL=${CVS_PREFIX}cvs.savannah.gnu.org:/cvsroot/"$1" - ;; - - gnulib) - CVSURL=:pserver:anonymous@pserver.git.sv.gnu.org:/gnulib.git - ;; - - esac - - trap "cleanup $1" 1 2 13 15 - - cvs -z3 -q -d $CVSURL co $1 || cleanup $1 - - trap - 1 2 13 15 - fi -} - -cleanup() { - status=$? - rm -fr $1 - exit $status -} - # Configuration. +# Name of the Makefile.am +gnulib_mk=gnulib.mk + # List of gnulib modules needed. gnulib_modules= @@ -126,9 +82,10 @@ po_download_command_format=\ extract_package_name=' /^AC_INIT(/{ - /.*,.*,.*,/{ + /.*,.*,.*, */{ s/// s/[][]//g + s/)$// p q } @@ -141,19 +98,28 @@ extract_package_name=' } ' package=`sed -n "$extract_package_name" configure.ac` || exit +gnulib_name=lib$package + +build_aux=build-aux +source_base=lib +m4_base=m4 +doc_base=doc +tests_base=tests # Extra files from gnulib, which override files from other sources. -gnulib_extra_files=' - build-aux/announce-gen - build-aux/install-sh - build-aux/missing - build-aux/mdate-sh - build-aux/texinfo.tex - build-aux/depcomp - build-aux/config.guess - build-aux/config.sub +gnulib_extra_files=" + $build_aux/install-sh + $build_aux/missing + $build_aux/mdate-sh + $build_aux/texinfo.tex + $build_aux/depcomp + $build_aux/config.guess + $build_aux/config.sub doc/INSTALL -' +" + +# Additional gnulib-tool options to use. Use "\newline" to break lines. +gnulib_tool_option_extras= # Other locale categories that need message catalogs. EXTRA_LOCALE_CATEGORIES= @@ -165,23 +131,32 @@ XGETTEXT_OPTIONS='\\\ --flag=error:3:c-format --flag=error_at_line:5:c-format\\\ ' +# Package bug report address for gettext files +MSGID_BUGS_ADDRESS=bug-$package@gnu.org + # Files we don't want to import. excluded_files= # File that should exist in the top directory of a checked out hierarchy, # but not in a distribution tarball. -CVS_only_file=README-cvs +checkout_only_file=README-hacking # Whether to use copies instead of symlinks. copy=false +# Set this to '.cvsignore .gitignore' in bootstrap.conf if you want +# those files to be generated in directories like lib/, m4/, and po/. +# Or set it to 'auto' to make this script select which to use based +# on which version control system (if any) is used in the source directory. +vc_ignore=auto + # Override the default configuration, if necessary. test -r bootstrap.conf && . ./bootstrap.conf -# Read local configuration file -if [ -r .bootstrap ]; then - echo "$0: Reading configuration file .bootstrap" - eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*" +if test "$vc_ignore" = auto; then + vc_ignore= + test -d .git && vc_ignore=.gitignore + test -d CVS && vc_ignore="$vc_ignore .cvsignore" fi # Translate configuration into internal form. @@ -194,20 +169,14 @@ do --help) usage exit;; - --paxutils-srcdir=*) - PAXUTILS_SRCDIR=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;; --gnulib-srcdir=*) GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;; - --cvs-user=*) - CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;; - --skip-po | --no-po) # --no-po is for compatibility with 'tar' tradition. - DOWNLOAD_PO=skip;; - --update-po=*) - DOWNLOAD_PO=`expr "$option" : '--update-po=\(.*\)'`;; - --update-po) - DOWNLOAD_PO=only;; + --paxutils-srcdir=*) + PAXUTILS_SRCDIR=`expr "$option" : '--paxutils-srcdir=\(.*\)'`;; + --skip-po) + SKIP_PO=t;; --force) - CVS_only_file=;; + checkout_only_file=;; --copy) copy=true;; *) @@ -216,12 +185,88 @@ do esac done -if test -n "$CVS_only_file" && test ! -r "$CVS_only_file"; then +if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2 exit 1 fi -echo "$0: Bootstrapping CVS $package..." +# If $STR is not already on a line by itself in $FILE, insert it, +# sorting the new contents of the file and replacing $FILE with the result. +insert_sorted_if_absent() { + file=$1 + str=$2 + test -f $file || touch $file + echo "$str" | sort -u - $file | cmp -s - $file \ + || echo "$str" | sort -u - $file -o $file \ + || exit 1 +} + +# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac. +found_aux_dir=no +grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \ + >/dev/null && found_aux_dir=yes +grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \ + >/dev/null && found_aux_dir=yes +if test $found_aux_dir = no; then + echo "$0: expected line not found in configure.ac. Add the following:" >&2 + echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2 + exit 1 +fi + +# If $build_aux doesn't exist, create it now, otherwise some bits +# below will malfunction. If creating it, also mark it as ignored. +if test ! -d $build_aux; then + mkdir $build_aux + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + insert_sorted_if_absent $dot_ig $build_aux + done +fi + +echo "$0: Bootstrapping from checked-out $package sources..." + +cleanup_dir() { + status=$? + rm -fr "$1" + exit $status +} + +# Get gnulib files. + +case ${GNULIB_SRCDIR--} in +-) + if [ ! -d gnulib ]; then + echo "$0: getting gnulib files..." + + trap "cleanup_dir gnulib" 1 2 13 15 + + git clone --depth 2 git://git.sv.gnu.org/gnulib || + cleanup_dir gnulib + + trap - 1 2 13 15 + fi + GNULIB_SRCDIR=gnulib +esac + +gnulib_tool=$GNULIB_SRCDIR/gnulib-tool +<$gnulib_tool || exit + +# Get paxutils files. + +case ${PAXUTILS_SRCDIR--} in +-) + if [ ! -d paxutils ]; then + echo "$0: getting gnulib files..." + + trap "cleanup_dir paxutils" 1 2 13 15 + + git clone --depth 2 git://git.sv.gnu.org/paxutils || + cleanup_dir paxutils + + trap - 1 2 13 15 + fi + PAXUTILS_SRCDIR=paxutils +esac # Get translations. @@ -265,112 +310,41 @@ update_po_files() { done } -case $DOWNLOAD_PO in -'skip') - ;; +case $SKIP_PO in '') if test -d po; then update_po_files po $package || exit fi - ;; -'only') - if test -d po; then - update_po_files po $package || exit - fi - exit - ;; -esac - -# Get paxutils files. -case ${PAXUTILS_SRCDIR--} in --) checkout paxutils - PAXUTILS_SRCDIR=paxutils + if test -d runtime-po; then + update_po_files runtime-po $package-runtime || exit + fi;; esac -if [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then - gnulib_modules=` - (echo "$gnulib_modules"; grep '^[^#]' $PAXUTILS_SRCDIR/gnulib.modules) | - sort -u - ` -fi - -ignore_file_list= -cleanup_ifl() { - test -n "$ignore_file_list" && rm -f $ignore_file_list -} - -trap 'cleanup_ifl' 1 2 3 15 - -# ignorefile DIR FILE -# add FILE to the temporary ignorelist in the directory DIR -ignorefile() { - file=$1/.ignore.$$ - shift - for f in $* - do - echo "$f" >> $file - if `echo $ignore_list | grep -qv $file`; then - ignore_file_list="$ignore_file_list -$file" - fi - done -} +symlink_to_dir() +{ + src=$1/$2 + dst=${3-$2} -flush_cvsignore() { - dir=$1 - shift - (test -r $dir/.ignore.$$ && cat $dir/.ignore.$$ - test -r $dir/.cvsignore && cat $dir/.cvsignore - for file in $* - do - echo $file - done) | sort -u > $dir/.cvsignore.$$ && mv $dir/.cvsignore.$$ $dir/.cvsignore -} + test -f "$src" && { -# copy_files srcdir dstdir -copy_files() { - for file in `cat $1/DISTFILES` - do - case $file in - "#*") continue;; - esac - dst=`echo $file | sed 's^.*/^^'` - if [ $# -eq 3 ]; then - case $dst in - ${3}*) ;; - *) dst=${3}$dst;; - esac + # If the destination directory doesn't exist, create it. + # This is required at least for "lib/uniwidth/cjk.h". + dst_dir=`dirname "$dst"` + if ! test -d "$dst_dir"; then + mkdir -p "$dst_dir" + + # If we've just created a directory like lib/uniwidth, + # tell version control system(s) it's ignorable. + # FIXME: for now, this does only one level + parent=`dirname "$dst_dir"` + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + ig=$parent/$dot_ig + insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'` + done fi - echo "$0: Copying file $1/$file to $2/$dst" - cp -p $1/$file $2/$dst - ignorefile $2 $dst - done -} - -# Get gnulib files. - -case ${GNULIB_SRCDIR--} in --) - checkout gnulib - GNULIB_SRCDIR=gnulib -esac - -gnulib_tool=$GNULIB_SRCDIR/gnulib-tool -<$gnulib_tool || exit -ensure_dir_exists() -{ - d=`dirname $dst` - test -d "$d" || mkdir -p -- "$d" -} - -symlink_to_gnulib() -{ - src=$GNULIB_SRCDIR/$1 - dst=${2-$1} - - test -f "$src" && { if $copy; then { test ! -h "$dst" || { @@ -381,7 +355,6 @@ symlink_to_gnulib() test -f "$dst" && cmp -s "$src" "$dst" || { echo "$0: cp -fp $src $dst" && - ensure_dir_exists $dst && cp -fp "$src" "$dst" } else @@ -404,7 +377,6 @@ symlink_to_gnulib() esac echo "$0: ln -fs $dot_dots$src $dst" && - ensure_dir_exists $dst && ln -fs "$dot_dots$src" "$dst" } fi @@ -417,7 +389,9 @@ cp_mark_as_generated() cp_dst=$2 if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then - symlink_to_gnulib "$cp_dst" + symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst" + elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then + symlink_to_dir $local_gl_dir "$cp_dst" else case $cp_dst in *.[ch]) c1='/* '; c2=' */';; @@ -426,10 +400,16 @@ cp_mark_as_generated() *) c1= ; c2= ;; esac + # If the destination directory doesn't exist, create it. + # This is required at least for "lib/uniwidth/cjk.h". + dst_dir=`dirname "$cp_dst"` + test -d "$dst_dir" || mkdir -p "$dst_dir" + if test -z "$c1"; then cmp -s "$cp_src" "$cp_dst" || { echo "$0: cp -f $cp_src $cp_dst" && - cp -f "$cp_src" "$cp_dst" + rm -f "$cp_dst" && + sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst" } else # Copy the file first to get proper permissions if it @@ -438,7 +418,7 @@ cp_mark_as_generated() ( echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" && echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" && - cat "$cp_src" + sed "s!$bt_regex/!!g" "$cp_src" ) > $cp_dst-t && if cmp -s "$cp_dst-t" "$cp_dst"; then rm -f "$cp_dst-t" @@ -458,7 +438,9 @@ version_controlled_file() { grep -F "/$file/" $dir/CVS/Entries 2>/dev/null | grep '^/[^/]*/[0-9]' > /dev/null && found=yes elif test -d .git; then - git-rm -n "$dir/$file" > /dev/null 2>&1 && found=yes + git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes + elif test -d .svn; then + svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes else echo "$0: no version control for $dir/$file?" >&2 fi @@ -469,18 +451,22 @@ slurp() { for dir in . `(cd $1 && find * -type d -print)`; do copied= sep= - for file in `ls $1/$dir`; do + for file in `ls -a $1/$dir`; do + case $file in + .|..) continue;; + .*) continue;; # FIXME: should all file names starting with "." be ignored? + esac test -d $1/$dir/$file && continue for excluded_file in $excluded_files; do test "$dir/$file" = "$excluded_file" && continue 2 done if test $file = Makefile.am; then - copied=$copied${sep}gnulib.mk; sep=$nl - remove_intl='/^[^#].*\/intl/s/^/#/;'"s,/$bt,,g" - sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk || { - echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." && - rm -f $dir/gnulib.mk && - sed "$remove_intl" $1/$dir/$file >$dir/gnulib.mk + copied=$copied${sep}$gnulib_mk; sep=$nl + remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g" + sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/$gnulib_mk || { + echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." && + rm -f $dir/$gnulib_mk && + sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk } elif { test "${2+set}" = set && test -r $2/$dir/$file; } || version_controlled_file $dir $file; then @@ -504,181 +490,179 @@ slurp() { fi || exit done - if test -n "$copied"; then - copied="Makefile -Makefile.in -$copied" - if test -d CVS; then - dot_ig=.cvsignore |