| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648 | #! /bin/sh# Bootstrap this package from CVS.# Copyright (C) 2003, 2004, 2005, 2006 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 2, 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.# Written by Paul Eggert and Sergey Poznyakoff.nl=''# Ensure file names are sorted consistently across platforms.# Also, ensure diagnostics are in English, e.g., "wget --help" below.LC_ALL=Cexport LC_ALLusage() {  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 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[=LANG]       Update po file(s) and exit. --cvs-user=USERNAME      Set the CVS username to be used when accessing                          the gnulib repository.If the file bootstrap.conf exists in the current working directory, itscontents are read as shell variables to configure the bootstrap.Local defaults can be provided by placing the file \`.bootstrap' in thecurrent working directory.  The file is read after bootstrap.conf, commentsand empty lines are removed, shell variables expanded and the result isprepended to the command line options. Running without arguments will suffice in most cases."}checkout() {  if [ ! -d $1 ]; then    echo "$0: getting $1 files..."    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    trap "cleanup $1" 1 2 13 15    cvs -z3 -q -d ${CVS_PREFIX}cvs.savannah.gnu.org:/cvsroot/"$1" co $1 ||      cleanup $1    trap - 1 2 13 15  fi}cleanup() {  status=$?  rm -fr $1  exit $status}# Configuration.# List of gnulib modules needed.gnulib_modules=# Any gnulib files needed that are not in modules.gnulib_files=# Translation Project URL, for the registry of all projects# and for the translation-team master directory.TP_URL='http://www.iro.umontreal.ca/translation/registry.cgi?domain='TP_PO_URL='http://www.iro.umontreal.ca/translation/teams/PO/'extract_package_name='  /^AC_INIT(/{     /.*,.*,.*,/{       s///       s/[][]//g       p       q     }     s/AC_INIT(\[*//     s/]*,.*//     s/^GNU //     y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/     s/[^A-Za-z0-9_]/-/g     p  }'package=`sed -n "$extract_package_name" configure.ac` || exit# 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	doc/INSTALL'# Other locale categories that need message catalogs.EXTRA_LOCALE_CATEGORIES=# Additional xgettext options to use.  Use "\\\newline" to break lines.XGETTEXT_OPTIONS='\\\ --flag=_:1:pass-c-format\\\ --flag=N_:1:pass-c-format\\\ --flag=error:3:c-format --flag=error_at_line:5:c-format\\\'# 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# Whether to use copies instead of symlinks.copy=false# Override the default configuration, if necessary.test -r bootstrap.conf && . ./bootstrap.conf# Read local configuration fileif [ -r .bootstrap ]; then  echo "$0: Reading configuration file .bootstrap"  eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*"fi# Translate configuration into internal form.# Parse options.for optiondo  case $option in  --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;;  --force)    CVS_only_file=;;  --copy)    copy=true;;  *)    echo >&2 "$0: $option: unknown option"    exit 1;;  esacdoneif test -n "$CVS_only_file" && test ! -r "$CVS_only_file"; then  echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2  exit 1fiecho "$0: Bootstrapping CVS $package..."# Get translations.get_translations() {  subdir=$1  domain=$2  po_file=$3  case $WGET_COMMAND in  '')    echo "$0: wget not available; skipping translations";;  ?*)    echo "$0: getting ${po_file:-translations} into $subdir for $domain..."  &&    case $po_file in    '') (cd $subdir && rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'`);;    esac &&      $WGET_COMMAND -O "$subdir/$domain.html" "$TP_URL$domain" &&    sed -n 's|.*"http://[^"]*/translation/teams/PO/\([^/"]*\)/'"$domain"'-\([^/"]*\)\.[^."]*\.po".*|\1.\2|p' <"$subdir/$domain.html" |    sort -k 1,1 -k 2,2n -k2,2 -k3,3n -k3,3 -k4,4n -k4,4 -k5,5n -k5.5 |    awk -F. '      { if (lang && $1 != lang) print lang, ver }      { lang = $1; ver = substr($0, index($0, ".") + 1) }      END { if (lang) print lang, ver }    ' | awk -v domain="$domain" -v po_file="$po_file" -v subdir="$subdir" '      {	lang = $1        if (po_file && po_file != (lang ".po")) next		ver = $2	urlfmt = ""	printf "{ $WGET_COMMAND -O %s/%s.po '\'"$TP_PO_URL"'/%s/%s-%s.%s.po'\'' &&\n", subdir, lang, lang, domain, ver, lang	printf "  msgfmt -c -o /dev/null %s/%s.po || {\n", subdir, lang	printf "    echo >&2 '\'"$0"': omitting translation for %s'\''\n", lang	printf "    rm -f %s/%s.po; }; } &&\n", subdir, lang      }      END { print ":" }    ' | WGET_COMMAND="$WGET_COMMAND" sh;;  esac &&  ls "$subdir"/*.po 2>/dev/null |    sed 's|.*/||; s|\.po$||' >"$subdir/LINGUAS" &&  rm -f "$subdir/$domain.html"}case `wget --help` in*'--no-cache'*)    WGET_COMMAND='wget -nv --no-cache';;*'--cache=on/off'*)    WGET_COMMAND='wget -nv --cache=off';;*'--non-verbose'*)    WGET_COMMAND='wget -nv';;*)    WGET_COMMAND='';;esaccase $DOWNLOAD_PO in'skip')  ;;'')  get_translations po $package || exit  ;;'only')  get_translations po $package  exit  ;;*.po)  get_translations po $package "$DOWNLOAD_PO"  exit  ;;*)  get_translations po $package "${DOWNLOAD_PO}.po"  exitesac# Get paxutils files.case ${PAXUTILS_SRCDIR--} in-) checkout paxutils   PAXUTILS_SRCDIR=paxutilsesacif [ -r $PAXUTILS_SRCDIR/gnulib.modules ]; then  gnulib_modules=`    (echo "$gnulib_modules"; grep '^[^#]' $PAXUTILS_SRCDIR/gnulib.modules) |    sort -u  `fiignore_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 DIRignorefile() {  file=$1/.ignore.$$   echo "$2" >> $file  if `echo $ignore_list | grep -qv $file`; then    ignore_file_list="$ignore_file_list$file"  fi}  # copy_files srcdir dstdircopy_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    fi    echo "$0: Copying file $1/$file to $2/$dst"    cp -p $1/$file $2/$dst    ignorefile $2 $dst  done}copy_files ${PAXUTILS_SRCDIR}/m4 m4echo "$0: Creating m4/paxutils.m4"(echo "# This file is generated automatically. Please, do not edit." echo "#" echo "AC_DEFUN([${package}_PAXUTILS],[" cat ${PAXUTILS_SRCDIR}/m4/DISTFILES | sed '/^#/d;s/\(.*\)\.m4/pu_\1/' | tr a-z A-Z echo "])") > ./m4/paxutils.m4ignorefile m4 paxutils.m4if [ -d rmt ]; then   :else   mkdir rmtfifor dir in doc rmt lib testsdo	copy_files ${PAXUTILS_SRCDIR}/$dir $dirdonecopy_files ${PAXUTILS_SRCDIR}/paxlib lib pax# Get gnulib files.case ${GNULIB_SRCDIR--} in-)  checkout gnulib  GNULIB_SRCDIR=gnulibesacgnulib_tool=$GNULIB_SRCDIR/gnulib-tool<$gnulib_tool || exitsymlink_to_gnulib(){  src=$GNULIB_SRCDIR/$1  dst=${2-$1}  test -f "$src" && {    if $copy; then      {	test ! -h "$dst" || {	  echo "$0: rm -f $dst" &&	  rm -f "$dst"	}      } &&      test -f "$dst" &&      cmp -s "$src" "$dst" || {	echo "$0: cp -fp $src $dst" &&	cp -fp "$src" "$dst"      }    else      test -h "$dst" &&      src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&      dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&      test "$src_i" = "$dst_i" || {	dot_dots=	case $src in	/*) ;;	*)	  case /$dst/ in	  *//* | */../* | */./* | /*/*/*/*/*/)	     echo >&2 "$0: invalid symlink calculation: $src -> $dst"	     exit 1;;	  /*/*/*/*/)	dot_dots=../../../;;	  /*/*/*/)	dot_dots=../../;;	  /*/*/)	dot_dots=../;;	  esac;;	esac	echo "$0: ln -fs $dot_dots$src $dst" &&	ln -fs "$dot_dots$src" "$dst"      }    fi  }}cp_mark_as_generated(){  cp_src=$1  cp_dst=$2  if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then    symlink_to_gnulib "$cp_dst"  else    case $cp_dst in      *.[ch])             c1='/* '; c2=' */';;      *.texi)             c1='@c '; c2=     ;;      *.m4|*/Make*|Make*) c1='# ' ; c2=     ;;      *)                  c1=     ; c2=     ;;    esac    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"      }    else      # Copy the file first to get proper permissions if it      # doesn't already exist.  Then overwrite the copy.      cp "$cp_src" "$cp_dst-t" &&      (	echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&	echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&	cat "$cp_src"      ) > $cp_dst-t &&      if cmp -s "$cp_dst-t" "$cp_dst"; then	rm -f "$cp_dst-t"      else	echo "$0: cp $cp_src $cp_dst # with edits" &&	mv -f "$cp_dst-t" "$cp_dst"      fi    fi  fi}version_controlled_file() {  dir=$1  file=$2  found=no  if test -d CVS; then    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  else    echo "$0: no version control for $dir/$file?" >&2  fi  test $found = yes}slurp() {  for dir in . `(cd $1 && find * -type d -print)`; do    copied=    sep=    for file in `ls $1/$dir`; do      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	}      elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||	   version_controlled_file $dir $file; then	echo "$0: $dir/$file overrides $1/$dir/$file"      else	copied=$copied$sep$file; sep=$nl	if test $file = gettext.m4; then	  echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."	  rm -f $dir/$file	  sed '	    /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\	      AC_DEFUN([AM_INTL_SUBDIR], [	    /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\	      AC_DEFUN([gt_INTL_SUBDIR_CORE], [])	    $a\	      AC_DEFUN([gl_LOCK_EARLY], [])	  ' $1/$dir/$file >$dir/$file	else	  cp_mark_as_generated $1/$dir/$file $dir/$file	fi      fi || exit    done    if test -n "$copied"; then      copied="MakefileMakefile.in$copied"      if test -d CVS; then	dot_ig=.cvsignore      else        dor_ig=.gitignore      fi      ig=$dir/$dot_ig      if [ -f $dir/.ignore.$$ ]; then         tfile=$dir/.ignore.$$      else         tfile=      fi      if test -f $ig; then	  echo "$copied" | sort -u - $ig | cmp -s - $ig ||	  echo "$copied" | sort -u - $ig $tfile -o $ig      else          copied="$dot_ig$copied"	  	  if [ "$dir" = "po" ]; then	    copied="LINGUASMakevarsPOTFILES*.mo*.gmo*.poremove-potcdate.sedstamp-po$package.pot$copied"          fi            echo "$copied" | sort -u - $tfile -o $ig      fi || exit    fi  done}# Create boot temporary directories to import from gnulib and gettext.bt='.#bootmp'bt2=${bt}2rm -fr $bt $bt2 &&mkdir $bt $bt2 || exit# Import from gnulib.test -d build-aux || {  echo "$0: mkdir build-aux ..." &&  mkdir build-aux} || exitgnulib_tool_options="\ --import\ --no-changelog\ --aux-dir $bt/build-aux\ --doc-base $bt/doc\ --lib lib$package\ --m4-base $bt/m4/\ --source-base $bt/lib/\ --tests-base $bt/tests\ --local-dir gl\"echo "$0: $gnulib_tool $gnulib_tool_options --import ..."$gnulib_tool $gnulib_tool_options --import $gnulib_modules &&slurp $bt || exitfor file in $gnulib_files; do  symlink_to_gnulib $file || exitdone# Import from gettext.echo "$0: (cd $bt2; autopoint) ..."cp configure.ac $bt2 &&(cd $bt2 && autopoint && rm configure.ac) &&slurp $bt2 $bt || exitrm -fr $bt $bt2 || exit# Reconfigure, getting other files.for command in \  'aclocal --force -I m4' \  'autoconf --force' \  'autoheader --force' \  'automake --add-missing --copy --force-missing';do  echo "$0: $command ..."  $command || exitdone# Get some extra files from gnulib, overriding existing files.for file in $gnulib_extra_files; do  case $file in  */INSTALL) dst=INSTALL;;  *) dst=$file;;  esac  symlink_to_gnulib $file $dst || exitdone# Create gettext configuration.echo "$0: Creating po/Makevars from po/Makevars.template ..."rm -f po/Makevarssed '  /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/  /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/  /^XGETTEXT_OPTIONS *=/{    s/$/ \\/    a\	'"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}  }' po/Makevars.template >po/Makevarsif test -d runtime-po; then  # Similarly for runtime-po/Makevars, but not quite the same.  rm -f runtime-po/Makevars  sed '    /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/    /^subdir *=.*/s/=.*/= runtime-po/    /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/    /^XGETTEXT_OPTIONS *=/{      s/$/ \\/      a\	  '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}    }  ' <po/Makevars.template >runtime-po/Makevars  # Copy identical files from po to runtime-po.  (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)ficleanup_iflecho "$0: done.  Now you can run './configure'."
 |