Blame bootstrap

Packit Service fdd496
#! /bin/sh
Packit Service fdd496
# Print a version string.
Packit Service fdd496
scriptversion=2017-01-09.19; # UTC
Packit Service fdd496
Packit Service fdd496
# Bootstrap this package from checked-out sources.
Packit Service fdd496
Packit Service fdd496
# Copyright (C) 2003-2017 Free Software Foundation, Inc.
Packit Service fdd496
Packit Service fdd496
# This program is free software: you can redistribute it and/or modify
Packit Service fdd496
# it under the terms of the GNU General Public License as published by
Packit Service fdd496
# the Free Software Foundation, either version 3 of the License, or
Packit Service fdd496
# (at your option) any later version.
Packit Service fdd496
Packit Service fdd496
# This program is distributed in the hope that it will be useful,
Packit Service fdd496
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service fdd496
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service fdd496
# GNU General Public License for more details.
Packit Service fdd496
Packit Service fdd496
# You should have received a copy of the GNU General Public License
Packit Service fdd496
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit Service fdd496
Packit Service fdd496
# Originally written by Paul Eggert.  The canonical version of this
Packit Service fdd496
# script is maintained as build-aux/bootstrap in gnulib, however, to
Packit Service fdd496
# be useful to your project, you should place a copy of it under
Packit Service fdd496
# version control in the top-level directory of your project.  The
Packit Service fdd496
# intent is that all customization can be done with a bootstrap.conf
Packit Service fdd496
# file also maintained in your version control; gnulib comes with a
Packit Service fdd496
# template build-aux/bootstrap.conf to get you started.
Packit Service fdd496
Packit Service fdd496
# Please report bugs or propose patches to bug-gnulib@gnu.org.
Packit Service fdd496
Packit Service fdd496
nl='
Packit Service fdd496
'
Packit Service fdd496
Packit Service fdd496
# Ensure file names are sorted consistently across platforms.
Packit Service fdd496
LC_ALL=C
Packit Service fdd496
export LC_ALL
Packit Service fdd496
Packit Service fdd496
# Ensure that CDPATH is not set.  Otherwise, the output from cd
Packit Service fdd496
# would cause trouble in at least one use below.
Packit Service fdd496
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
Packit Service fdd496
Packit Service fdd496
local_gl_dir=gl
Packit Service fdd496
Packit Service fdd496
# Honor $PERL, but work even if there is none.
Packit Service fdd496
PERL="${PERL-perl}"
Packit Service fdd496
Packit Service fdd496
me=$0
Packit Service fdd496
Packit Service fdd496
usage() {
Packit Service fdd496
  cat <
Packit Service fdd496
Usage: $me [OPTION]...
Packit Service fdd496
Bootstrap this package from the checked-out sources.
Packit Service fdd496
Packit Service fdd496
Options:
Packit Service fdd496
 --gnulib-srcdir=DIRNAME  specify the local directory where gnulib
Packit Service fdd496
                          sources reside.  Use this if you already
Packit Service fdd496
                          have gnulib sources on your machine, and
Packit Service fdd496
                          do not want to waste your bandwidth downloading
Packit Service fdd496
                          them again.  Defaults to \$GNULIB_SRCDIR
Packit Service fdd496
 --bootstrap-sync         if this bootstrap script is not identical to
Packit Service fdd496
                          the version in the local gnulib sources,
Packit Service fdd496
                          update this script, and then restart it with
Packit Service fdd496
                          /bin/sh or the shell \$CONFIG_SHELL
Packit Service fdd496
 --no-bootstrap-sync      do not check whether bootstrap is out of sync
Packit Service fdd496
 --copy                   copy files instead of creating symbolic links
Packit Service fdd496
 --force                  attempt to bootstrap even if the sources seem
Packit Service fdd496
                          not to have been checked out
Packit Service fdd496
 --no-git                 do not use git to update gnulib.  Requires that
Packit Service fdd496
                          --gnulib-srcdir point to a correct gnulib snapshot
Packit Service fdd496
 --skip-po                do not download po files
Packit Service fdd496
Packit Service fdd496
If the file $me.conf exists in the same directory as this script, its
Packit Service fdd496
contents are read as shell variables to configure the bootstrap.
Packit Service fdd496
Packit Service fdd496
For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR
Packit Service fdd496
are honored.
Packit Service fdd496
Packit Service fdd496
Running without arguments will suffice in most cases.
Packit Service fdd496
EOF
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# warnf_ FORMAT-STRING ARG1...
Packit Service fdd496
warnf_ ()
Packit Service fdd496
{
Packit Service fdd496
  warnf_format_=$1
Packit Service fdd496
  shift
Packit Service fdd496
  nl='
Packit Service fdd496
'
Packit Service fdd496
  case $* in
Packit Service fdd496
    *$nl*) me_=$(printf "$me"|tr "$nl|" '??')
Packit Service fdd496
       printf "$warnf_format_" "$@" | sed "s|^|$me_: |" ;;
Packit Service fdd496
    *) printf "$me: $warnf_format_" "$@" ;;
Packit Service fdd496
  esac >&2
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# warn_ WORD1...
Packit Service fdd496
warn_ ()
Packit Service fdd496
{
Packit Service fdd496
  # If IFS does not start with ' ', set it and emit the warning in a subshell.
Packit Service fdd496
  case $IFS in
Packit Service fdd496
    ' '*) warnf_ '%s\n' "$*";;
Packit Service fdd496
    *)    (IFS=' '; warn_ "$@");;
Packit Service fdd496
  esac
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# die WORD1...
Packit Service fdd496
die() { warn_ "$@"; exit 1; }
Packit Service fdd496
Packit Service fdd496
# Configuration.
Packit Service fdd496
Packit Service fdd496
# Name of the Makefile.am
Packit Service fdd496
gnulib_mk=gnulib.mk
Packit Service fdd496
Packit Service fdd496
# List of gnulib modules needed.
Packit Service fdd496
gnulib_modules=
Packit Service fdd496
Packit Service fdd496
# Any gnulib files needed that are not in modules.
Packit Service fdd496
gnulib_files=
Packit Service fdd496
Packit Service fdd496
: ${AUTOPOINT=autopoint}
Packit Service fdd496
: ${AUTORECONF=autoreconf}
Packit Service fdd496
Packit Service fdd496
# A function to be called right after gnulib-tool is run.
Packit Service fdd496
# Override it via your own definition in bootstrap.conf.
Packit Service fdd496
bootstrap_post_import_hook() { :; }
Packit Service fdd496
Packit Service fdd496
# A function to be called after everything else in this script.
Packit Service fdd496
# Override it via your own definition in bootstrap.conf.
Packit Service fdd496
bootstrap_epilogue() { :; }
Packit Service fdd496
Packit Service fdd496
# The command to download all .po files for a specified domain into
Packit Service fdd496
# a specified directory.  Fill in the first %s is the domain name, and
Packit Service fdd496
# the second with the destination directory.  Use rsync's -L and -r
Packit Service fdd496
# options because the latest/%s directory and the .po files within are
Packit Service fdd496
# all symlinks.
Packit Service fdd496
po_download_command_format=\
Packit Service fdd496
"rsync --delete --exclude '*.s1' -Lrtvz \
Packit Service fdd496
 'translationproject.org::tp/latest/%s/' '%s'"
Packit Service fdd496
Packit Service fdd496
# Fallback for downloading .po files (if rsync fails).
Packit Service fdd496
po_download_command_format2=\
Packit Service fdd496
"wget --mirror -nd -q -np -A.po -P '%s' \
Packit Service fdd496
 http://translationproject.org/latest/%s/"
Packit Service fdd496
Packit Service fdd496
# Prefer a non-empty tarname (4th argument of AC_INIT if given), else
Packit Service fdd496
# fall back to the package name (1st argument with munging)
Packit Service fdd496
extract_package_name='
Packit Service fdd496
  /^AC_INIT(\[*/{
Packit Service fdd496
     s///
Packit Service fdd496
     /^[^,]*,[^,]*,[^,]*,[ []*\([^][ ,)]\)/{
Packit Service fdd496
       s//\1/
Packit Service fdd496
       s/[],)].*//
Packit Service fdd496
       p
Packit Service fdd496
       q
Packit Service fdd496
     }
Packit Service fdd496
     s/[],)].*//
Packit Service fdd496
     s/^GNU //
Packit Service fdd496
     y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
Packit Service fdd496
     s/[^abcdefghijklmnopqrstuvwxyz0123456789_]/-/g
Packit Service fdd496
     p
Packit Service fdd496
  }
Packit Service fdd496
'
Packit Service fdd496
package=$(sed -n "$extract_package_name" configure.ac) \
Packit Service fdd496
  || die 'cannot find package name in configure.ac'
Packit Service fdd496
gnulib_name=lib$package
Packit Service fdd496
Packit Service fdd496
build_aux=build-aux
Packit Service fdd496
source_base=lib
Packit Service fdd496
m4_base=m4
Packit Service fdd496
doc_base=doc
Packit Service fdd496
tests_base=tests
Packit Service fdd496
gnulib_extra_files=''
Packit Service fdd496
Packit Service fdd496
# Additional gnulib-tool options to use.  Use "\newline" to break lines.
Packit Service fdd496
gnulib_tool_option_extras=
Packit Service fdd496
Packit Service fdd496
# Other locale categories that need message catalogs.
Packit Service fdd496
EXTRA_LOCALE_CATEGORIES=
Packit Service fdd496
Packit Service fdd496
# Additional xgettext options to use.  Use "\\\newline" to break lines.
Packit Service fdd496
XGETTEXT_OPTIONS='\\\
Packit Service fdd496
 --flag=_:1:pass-c-format\\\
Packit Service fdd496
 --flag=N_:1:pass-c-format\\\
Packit Service fdd496
 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
Packit Service fdd496
'
Packit Service fdd496
Packit Service fdd496
# Package bug report address and copyright holder for gettext files
Packit Service fdd496
COPYRIGHT_HOLDER='Free Software Foundation, Inc.'
Packit Service fdd496
MSGID_BUGS_ADDRESS=bug-$package@gnu.org
Packit Service fdd496
Packit Service fdd496
# Files we don't want to import.
Packit Service fdd496
excluded_files=
Packit Service fdd496
Packit Service fdd496
# File that should exist in the top directory of a checked out hierarchy,
Packit Service fdd496
# but not in a distribution tarball.
Packit Service fdd496
checkout_only_file=README-hacking
Packit Service fdd496
Packit Service fdd496
# Whether to use copies instead of symlinks.
Packit Service fdd496
copy=false
Packit Service fdd496
Packit Service fdd496
# Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
Packit Service fdd496
# those files to be generated in directories like lib/, m4/, and po/.
Packit Service fdd496
# Or set it to 'auto' to make this script select which to use based
Packit Service fdd496
# on which version control system (if any) is used in the source directory.
Packit Service fdd496
vc_ignore=auto
Packit Service fdd496
Packit Service fdd496
# Set this to true in bootstrap.conf to enable --bootstrap-sync by
Packit Service fdd496
# default.
Packit Service fdd496
bootstrap_sync=false
Packit Service fdd496
Packit Service fdd496
# Use git to update gnulib sources
Packit Service fdd496
use_git=true
Packit Service fdd496
Packit Service fdd496
check_exists() {
Packit Service fdd496
  if test "$1" = "--verbose"; then
Packit Service fdd496
    ($2 --version </dev/null) >/dev/null 2>&1
Packit Service fdd496
    if test $? -ge 126; then
Packit Service fdd496
      # If not found, run with diagnostics as one may be
Packit Service fdd496
      # presented with env variables to set to find the right version
Packit Service fdd496
      ($2 --version 
Packit Service fdd496
    fi
Packit Service fdd496
  else
Packit Service fdd496
    ($1 --version </dev/null) >/dev/null 2>&1
Packit Service fdd496
  fi
Packit Service fdd496
Packit Service fdd496
  test $? -lt 126
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# find_tool ENVVAR NAMES...
Packit Service fdd496
# -------------------------
Packit Service fdd496
# Search for a required program.  Use the value of ENVVAR, if set,
Packit Service fdd496
# otherwise find the first of the NAMES that can be run.
Packit Service fdd496
# If found, set ENVVAR to the program name, die otherwise.
Packit Service fdd496
#
Packit Service fdd496
# FIXME: code duplication, see also gnu-web-doc-update.
Packit Service fdd496
find_tool ()
Packit Service fdd496
{
Packit Service fdd496
  find_tool_envvar=$1
Packit Service fdd496
  shift
Packit Service fdd496
  find_tool_names=$@
Packit Service fdd496
  eval "find_tool_res=\$$find_tool_envvar"
Packit Service fdd496
  if test x"$find_tool_res" = x; then
Packit Service fdd496
    for i; do
Packit Service fdd496
      if check_exists $i; then
Packit Service fdd496
        find_tool_res=$i
Packit Service fdd496
        break
Packit Service fdd496
      fi
Packit Service fdd496
    done
Packit Service fdd496
  fi
Packit Service fdd496
  if test x"$find_tool_res" = x; then
Packit Service fdd496
    warn_ "one of these is required: $find_tool_names;"
Packit Service fdd496
    die   "alternatively set $find_tool_envvar to a compatible tool"
Packit Service fdd496
  fi
Packit Service fdd496
  eval "$find_tool_envvar=\$find_tool_res"
Packit Service fdd496
  eval "export $find_tool_envvar"
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# Override the default configuration, if necessary.
Packit Service fdd496
# Make sure that bootstrap.conf is sourced from the current directory
Packit Service fdd496
# if we were invoked as "sh bootstrap".
Packit Service fdd496
case "$0" in
Packit Service fdd496
  */*) test -r "$0.conf" && . "$0.conf" ;;
Packit Service fdd496
  *) test -r "$0.conf" && . ./"$0.conf" ;;
Packit Service fdd496
esac
Packit Service fdd496
Packit Service fdd496
# Extra files from gnulib, which override files from other sources.
Packit Service fdd496
test -z "${gnulib_extra_files}" && \
Packit Service fdd496
  gnulib_extra_files="
Packit Service fdd496
        build-aux/install-sh
Packit Service fdd496
        build-aux/mdate-sh
Packit Service fdd496
        build-aux/texinfo.tex
Packit Service fdd496
        build-aux/depcomp
Packit Service fdd496
        build-aux/config.guess
Packit Service fdd496
        build-aux/config.sub
Packit Service fdd496
        doc/INSTALL
Packit Service fdd496
"
Packit Service fdd496
Packit Service fdd496
if test "$vc_ignore" = auto; then
Packit Service fdd496
  vc_ignore=
Packit Service fdd496
  test -d .git && vc_ignore=.gitignore
Packit Service fdd496
  test -d CVS && vc_ignore="$vc_ignore .cvsignore"
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# Translate configuration into internal form.
Packit Service fdd496
Packit Service fdd496
# Parse options.
Packit Service fdd496
Packit Service fdd496
for option
Packit Service fdd496
do
Packit Service fdd496
  case $option in
Packit Service fdd496
  --help)
Packit Service fdd496
    usage
Packit Service fdd496
    exit;;
Packit Service fdd496
  --gnulib-srcdir=*)
Packit Service fdd496
    GNULIB_SRCDIR=${option#--gnulib-srcdir=};;
Packit Service fdd496
  --skip-po)
Packit Service fdd496
    SKIP_PO=t;;
Packit Service fdd496
  --force)
Packit Service fdd496
    checkout_only_file=;;
Packit Service fdd496
  --copy)
Packit Service fdd496
    copy=true;;
Packit Service fdd496
  --bootstrap-sync)
Packit Service fdd496
    bootstrap_sync=true;;
Packit Service fdd496
  --no-bootstrap-sync)
Packit Service fdd496
    bootstrap_sync=false;;
Packit Service fdd496
  --no-git)
Packit Service fdd496
    use_git=false;;
Packit Service fdd496
  *)
Packit Service fdd496
    die "$option: unknown option";;
Packit Service fdd496
  esac
Packit Service fdd496
done
Packit Service fdd496
Packit Service fdd496
$use_git || test -d "$GNULIB_SRCDIR" \
Packit Service fdd496
  || die "Error: --no-git requires --gnulib-srcdir"
Packit Service fdd496
Packit Service fdd496
if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
Packit Service fdd496
  die "Bootstrapping from a non-checked-out distribution is risky."
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# Strip blank and comment lines to leave significant entries.
Packit Service fdd496
gitignore_entries() {
Packit Service fdd496
  sed '/^#/d; /^$/d' "$@"
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# If $STR is not already on a line by itself in $FILE, insert it at the start.
Packit Service fdd496
# Entries are inserted at the start of the ignore list to ensure existing
Packit Service fdd496
# entries starting with ! are not overridden.  Such entries support
Packit Service fdd496
# whitelisting exceptions after a more generic blacklist pattern.
Packit Service fdd496
insert_if_absent() {
Packit Service fdd496
  file=$1
Packit Service fdd496
  str=$2
Packit Service fdd496
  test -f $file || touch $file
Packit Service fdd496
  test -r $file || die "Error: failed to read ignore file: $file"
Packit Service fdd496
  duplicate_entries=$(gitignore_entries $file | sort | uniq -d)
Packit Service fdd496
  if [ "$duplicate_entries" ] ; then
Packit Service fdd496
    die "Error: Duplicate entries in $file: " $duplicate_entries
Packit Service fdd496
  fi
Packit Service fdd496
  linesold=$(gitignore_entries $file | wc -l)
Packit Service fdd496
  linesnew=$( { echo "$str"; cat $file; } | gitignore_entries | sort -u | wc -l)
Packit Service fdd496
  if [ $linesold != $linesnew ] ; then
Packit Service fdd496
    { echo "$str" | cat - $file > $file.bak && mv $file.bak $file; } \
Packit Service fdd496
      || die "insert_if_absent $file $str: failed"
Packit Service fdd496
  fi
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# Adjust $PATTERN for $VC_IGNORE_FILE and insert it with
Packit Service fdd496
# insert_if_absent.
Packit Service fdd496
insert_vc_ignore() {
Packit Service fdd496
  vc_ignore_file="$1"
Packit Service fdd496
  pattern="$2"
Packit Service fdd496
  case $vc_ignore_file in
Packit Service fdd496
  *.gitignore)
Packit Service fdd496
    # A .gitignore entry that does not start with '/' applies
Packit Service fdd496
    # recursively to subdirectories, so prepend '/' to every
Packit Service fdd496
    # .gitignore entry.
Packit Service fdd496
    pattern=$(echo "$pattern" | sed s,^,/,);;
Packit Service fdd496
  esac
Packit Service fdd496
  insert_if_absent "$vc_ignore_file" "$pattern"
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
Packit Service fdd496
found_aux_dir=no
Packit Service fdd496
grep '^[	 ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
Packit Service fdd496
    >/dev/null && found_aux_dir=yes
Packit Service fdd496
grep '^[	 ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
Packit Service fdd496
    >/dev/null && found_aux_dir=yes
Packit Service fdd496
test $found_aux_dir = yes \
Packit Service fdd496
  || die "configure.ac lacks 'AC_CONFIG_AUX_DIR([$build_aux])'; add it"
Packit Service fdd496
Packit Service fdd496
# If $build_aux doesn't exist, create it now, otherwise some bits
Packit Service fdd496
# below will malfunction.  If creating it, also mark it as ignored.
Packit Service fdd496
if test ! -d $build_aux; then
Packit Service fdd496
  mkdir $build_aux
Packit Service fdd496
  for dot_ig in x $vc_ignore; do
Packit Service fdd496
    test $dot_ig = x && continue
Packit Service fdd496
    insert_vc_ignore $dot_ig $build_aux
Packit Service fdd496
  done
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# Note this deviates from the version comparison in automake
Packit Service fdd496
# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
Packit Service fdd496
# but this should suffice as we won't be specifying old
Packit Service fdd496
# version formats or redundant trailing .0 in bootstrap.conf.
Packit Service fdd496
# If we did want full compatibility then we should probably
Packit Service fdd496
# use m4_version_compare from autoconf.
Packit Service fdd496
sort_ver() { # sort -V is not generally available
Packit Service fdd496
  ver1="$1"
Packit Service fdd496
  ver2="$2"
Packit Service fdd496
Packit Service fdd496
  # split on '.' and compare each component
Packit Service fdd496
  i=1
Packit Service fdd496
  while : ; do
Packit Service fdd496
    p1=$(echo "$ver1" | cut -d. -f$i)
Packit Service fdd496
    p2=$(echo "$ver2" | cut -d. -f$i)
Packit Service fdd496
    if [ ! "$p1" ]; then
Packit Service fdd496
      echo "$1 $2"
Packit Service fdd496
      break
Packit Service fdd496
    elif [ ! "$p2" ]; then
Packit Service fdd496
      echo "$2 $1"
Packit Service fdd496
      break
Packit Service fdd496
    elif [ ! "$p1" = "$p2" ]; then
Packit Service fdd496
      if [ "$p1" -gt "$p2" ] 2>/dev/null; then # numeric comparison
Packit Service fdd496
        echo "$2 $1"
Packit Service fdd496
      elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison
Packit Service fdd496
        echo "$1 $2"
Packit Service fdd496
      else # numeric, then lexicographic comparison
Packit Service fdd496
        lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1)
Packit Service fdd496
        if [ "$lp" = "$p2" ]; then
Packit Service fdd496
          echo "$1 $2"
Packit Service fdd496
        else
Packit Service fdd496
          echo "$2 $1"
Packit Service fdd496
        fi
Packit Service fdd496
      fi
Packit Service fdd496
      break
Packit Service fdd496
    fi
Packit Service fdd496
    i=$(($i+1))
Packit Service fdd496
  done
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
get_version_sed='
Packit Service fdd496
# Move version to start of line.
Packit Service fdd496
s/.*[v ]\([0-9]\)/\1/
Packit Service fdd496
Packit Service fdd496
# Skip lines that do not start with version.
Packit Service fdd496
/^[0-9]/!d
Packit Service fdd496
Packit Service fdd496
# Remove characters after the version.
Packit Service fdd496
s/[^.a-z0-9-].*//
Packit Service fdd496
Packit Service fdd496
# The first component must be digits only.
Packit Service fdd496
s/^\([0-9]*\)[a-z-].*/\1/
Packit Service fdd496
Packit Service fdd496
#the following essentially does s/5.005/5.5/
Packit Service fdd496
s/\.0*\([1-9]\)/.\1/g
Packit Service fdd496
p
Packit Service fdd496
q'
Packit Service fdd496
Packit Service fdd496
get_version() {
Packit Service fdd496
  app=$1
Packit Service fdd496
Packit Service fdd496
  $app --version >/dev/null 2>&1 || { $app --version; return 1; }
Packit Service fdd496
Packit Service fdd496
  $app --version 2>&1 | sed -n "$get_version_sed"
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
check_versions() {
Packit Service fdd496
  ret=0
Packit Service fdd496
Packit Service fdd496
  while read app req_ver; do
Packit Service fdd496
    # We only need libtoolize from the libtool package.
Packit Service fdd496
    if test "$app" = libtool; then
Packit Service fdd496
      app=libtoolize
Packit Service fdd496
    fi
Packit Service fdd496
    # Exempt git if --no-git is in effect.
Packit Service fdd496
    if test "$app" = git; then
Packit Service fdd496
      $use_git || continue
Packit Service fdd496
    fi
Packit Service fdd496
    # Honor $APP variables ($TAR, $AUTOCONF, etc.)
Packit Service fdd496
    appvar=$(echo $app | LC_ALL=C tr '[a-z]-' '[A-Z]_')
Packit Service fdd496
    test "$appvar" = TAR && appvar=AMTAR
Packit Service fdd496
    case $appvar in
Packit Service fdd496
        GZIP) ;; # Do not use $GZIP:  it contains gzip options.
Packit Service fdd496
        PERL::*) ;; # Keep perl modules as-is
Packit Service fdd496
        *) eval "app=\${$appvar-$app}" ;;
Packit Service fdd496
    esac
Packit Service fdd496
Packit Service fdd496
    # Handle the still-experimental Automake-NG programs specially.
Packit Service fdd496
    # They remain named as the mainstream Automake programs ("automake",
Packit Service fdd496
    # and "aclocal") to avoid gratuitous incompatibilities with
Packit Service fdd496
    # pre-existing usages (by, say, autoreconf, or custom autogen.sh
Packit Service fdd496
    # scripts), but correctly identify themselves (as being part of
Packit Service fdd496
    # "GNU automake-ng") when asked their version.
Packit Service fdd496
    case $app in
Packit Service fdd496
      automake-ng|aclocal-ng)
Packit Service fdd496
        app=${app%-ng}
Packit Service fdd496
        ($app --version | grep '(GNU automake-ng)') >/dev/null 2>&1 || {
Packit Service fdd496
          warn_ "Error: '$app' not found or not from Automake-NG"
Packit Service fdd496
          ret=1
Packit Service fdd496
          continue
Packit Service fdd496
        } ;;
Packit Service fdd496
      # Another check is for perl modules.  These can be written as
Packit Service fdd496
      # e.g. perl::XML::XPath in case of XML::XPath module, etc.
Packit Service fdd496
      perl::*)
Packit Service fdd496
        # Extract module name
Packit Service fdd496
        app="${app#perl::}"
Packit Service fdd496
        if ! $PERL -m"$app" -e 'exit 0' >/dev/null 2>&1; then
Packit Service fdd496
          warn_ "Error: perl module '$app' not found"
Packit Service fdd496
          ret=1
Packit Service fdd496
        fi
Packit Service fdd496
        continue
Packit Service fdd496
        ;;
Packit Service fdd496
    esac
Packit Service fdd496
    if [ "$req_ver" = "-" ]; then
Packit Service fdd496
      # Merely require app to exist; not all prereq apps are well-behaved
Packit Service fdd496
      # so we have to rely on $? rather than get_version.
Packit Service fdd496
      if ! check_exists --verbose $app; then
Packit Service fdd496
        warn_ "Error: '$app' not found"
Packit Service fdd496
        ret=1
Packit Service fdd496
      fi
Packit Service fdd496
    else
Packit Service fdd496
      # Require app to produce a new enough version string.
Packit Service fdd496
      inst_ver=$(get_version $app)
Packit Service fdd496
      if [ ! "$inst_ver" ]; then
Packit Service fdd496
        warn_ "Error: '$app' not found"
Packit Service fdd496
        ret=1
Packit Service fdd496
      else
Packit Service fdd496
        latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
Packit Service fdd496
        if [ ! "$latest_ver" = "$inst_ver" ]; then
Packit Service fdd496
          warnf_ '%s\n'                                        \
Packit Service fdd496
              "Error: '$app' version == $inst_ver is too old"  \
Packit Service fdd496
              "       '$app' version >= $req_ver is required"
Packit Service fdd496
          ret=1
Packit Service fdd496
        fi
Packit Service fdd496
      fi
Packit Service fdd496
    fi
Packit Service fdd496
  done
Packit Service fdd496
Packit Service fdd496
  return $ret
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
print_versions() {
Packit Service fdd496
  echo "Program    Min_version"
Packit Service fdd496
  echo "----------------------"
Packit Service fdd496
  printf %s "$buildreq"
Packit Service fdd496
  echo "----------------------"
Packit Service fdd496
  # can't depend on column -t
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# Find sha1sum, named gsha1sum on MacPorts, shasum on Mac OS X 10.6.
Packit Service fdd496
# Also find the compatible sha1 utility on the BSDs
Packit Service fdd496
if test x"$SKIP_PO" = x; then
Packit Service fdd496
  find_tool SHA1SUM sha1sum gsha1sum shasum sha1
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
use_libtool=0
Packit Service fdd496
# We'd like to use grep -E, to see if any of LT_INIT,
Packit Service fdd496
# AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
Packit Service fdd496
# but that's not portable enough (e.g., for Solaris).
Packit Service fdd496
grep '^[	 ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
Packit Service fdd496
  && use_libtool=1
Packit Service fdd496
grep '^[	 ]*LT_INIT' configure.ac >/dev/null \
Packit Service fdd496
  && use_libtool=1
Packit Service fdd496
if test $use_libtool = 1; then
Packit Service fdd496
  find_tool LIBTOOLIZE glibtoolize libtoolize
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# gnulib-tool requires at least automake and autoconf.
Packit Service fdd496
# If either is not listed, add it (with minimum version) as a prerequisite.
Packit Service fdd496
case $buildreq in
Packit Service fdd496
  *automake*) ;;
Packit Service fdd496
  *) buildreq="automake 1.9
Packit Service fdd496
$buildreq" ;;
Packit Service fdd496
esac
Packit Service fdd496
case $buildreq in
Packit Service fdd496
  *autoconf*) ;;
Packit Service fdd496
  *) buildreq="autoconf 2.59
Packit Service fdd496
$buildreq" ;;
Packit Service fdd496
esac
Packit Service fdd496
Packit Service fdd496
# When we can deduce that gnulib-tool will require patch,
Packit Service fdd496
# and when patch is not already listed as a prerequisite, add it, too.
Packit Service fdd496
if test -d "$local_gl_dir" \
Packit Service fdd496
    && ! find "$local_gl_dir" -name '*.diff' -exec false {} +; then
Packit Service fdd496
  case $buildreq in
Packit Service fdd496
    *patch*) ;;
Packit Service fdd496
    *) buildreq="patch -
Packit Service fdd496
$buildreq" ;;
Packit Service fdd496
  esac
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
if ! printf "$buildreq" | check_versions; then
Packit Service fdd496
  echo >&2
Packit Service fdd496
  if test -f README-prereq; then
Packit Service fdd496
    die "See README-prereq for how to get the prerequisite programs"
Packit Service fdd496
  else
Packit Service fdd496
    die "Please install the prerequisite programs"
Packit Service fdd496
  fi
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# Warn the user if autom4te appears to be broken; this causes known
Packit Service fdd496
# issues with at least gettext 0.18.3.
Packit Service fdd496
probe=$(echo 'm4_quote([hi])' | autom4te -l M4sugar -t 'm4_quote:$%' -)
Packit Service fdd496
if test "x$probe" != xhi; then
Packit Service fdd496
  warn_ "WARNING: your autom4te wrapper eats stdin;"
Packit Service fdd496
  warn_ "if bootstrap fails, consider upgrading your autotools"
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
echo "$0: Bootstrapping from checked-out $package sources..."
Packit Service fdd496
Packit Service fdd496
# See if we can use gnulib's git-merge-changelog merge driver.
Packit Service fdd496
if $use_git && test -d .git && check_exists git; then
Packit Service fdd496
  if git config merge.merge-changelog.driver >/dev/null ; then
Packit Service fdd496
    :
Packit Service fdd496
  elif check_exists git-merge-changelog; then
Packit Service fdd496
    echo "$0: initializing git-merge-changelog driver"
Packit Service fdd496
    git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
Packit Service fdd496
    git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
Packit Service fdd496
  else
Packit Service fdd496
    echo "$0: consider installing git-merge-changelog from gnulib"
Packit Service fdd496
  fi
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
Packit Service fdd496
cleanup_gnulib() {
Packit Service fdd496
  status=$?
Packit Service fdd496
  rm -fr "$gnulib_path"
Packit Service fdd496
  exit $status
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
git_modules_config () {
Packit Service fdd496
  test -f .gitmodules && git config --file .gitmodules "$@"
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
if $use_git; then
Packit Service fdd496
  gnulib_path=$(git_modules_config submodule.gnulib.path)
Packit Service fdd496
  test -z "$gnulib_path" && gnulib_path=gnulib
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# Get gnulib files.  Populate $GNULIB_SRCDIR, possibly updating a
Packit Service fdd496
# submodule, for use in the rest of the script.
Packit Service fdd496
Packit Service fdd496
case ${GNULIB_SRCDIR--} in
Packit Service fdd496
-)
Packit Service fdd496
  # Note that $use_git is necessarily true in this case.
Packit Service fdd496
  if git_modules_config submodule.gnulib.url >/dev/null; then
Packit Service fdd496
    echo "$0: getting gnulib files..."
Packit Service fdd496
    git submodule init -- "$gnulib_path" || exit $?
Packit Service fdd496
    git submodule update -- "$gnulib_path" || exit $?
Packit Service fdd496
Packit Service fdd496
  elif [ ! -d "$gnulib_path" ]; then
Packit Service fdd496
    echo "$0: getting gnulib files..."
Packit Service fdd496
Packit Service fdd496
    trap cleanup_gnulib 1 2 13 15
Packit Service fdd496
Packit Service fdd496
    shallow=
Packit Service fdd496
    git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2'
Packit Service fdd496
    git clone $shallow git://git.sv.gnu.org/gnulib "$gnulib_path" ||
Packit Service fdd496
      cleanup_gnulib
Packit Service fdd496
Packit Service fdd496
    trap - 1 2 13 15
Packit Service fdd496
  fi
Packit Service fdd496
  GNULIB_SRCDIR=$gnulib_path
Packit Service fdd496
  ;;
Packit Service fdd496
*)
Packit Service fdd496
  # Use GNULIB_SRCDIR directly or as a reference.
Packit Service fdd496
  if $use_git && test -d "$GNULIB_SRCDIR"/.git && \
Packit Service fdd496
        git_modules_config submodule.gnulib.url >/dev/null; then
Packit Service fdd496
    echo "$0: getting gnulib files..."
Packit Service fdd496
    if git submodule -h|grep -- --reference > /dev/null; then
Packit Service fdd496
      # Prefer the one-liner available in git 1.6.4 or newer.
Packit Service fdd496
      git submodule update --init --reference "$GNULIB_SRCDIR" \
Packit Service fdd496
        "$gnulib_path" || exit $?
Packit Service fdd496
    else
Packit Service fdd496
      # This fallback allows at least git 1.5.5.
Packit Service fdd496
      if test -f "$gnulib_path"/gnulib-tool; then
Packit Service fdd496
        # Since file already exists, assume submodule init already complete.
Packit Service fdd496
        git submodule update -- "$gnulib_path" || exit $?
Packit Service fdd496
      else
Packit Service fdd496
        # Older git can't clone into an empty directory.
Packit Service fdd496
        rmdir "$gnulib_path" 2>/dev/null
Packit Service fdd496
        git clone --reference "$GNULIB_SRCDIR" \
Packit Service fdd496
          "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \
Packit Service fdd496
          && git submodule init -- "$gnulib_path" \
Packit Service fdd496
          && git submodule update -- "$gnulib_path" \
Packit Service fdd496
          || exit $?
Packit Service fdd496
      fi
Packit Service fdd496
    fi
Packit Service fdd496
    GNULIB_SRCDIR=$gnulib_path
Packit Service fdd496
  fi
Packit Service fdd496
  ;;
Packit Service fdd496
esac
Packit Service fdd496
Packit Service fdd496
# $GNULIB_SRCDIR now points to the version of gnulib to use, and
Packit Service fdd496
# we no longer need to use git or $gnulib_path below here.
Packit Service fdd496
Packit Service fdd496
if $bootstrap_sync; then
Packit Service fdd496
  cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || {
Packit Service fdd496
    echo "$0: updating bootstrap and restarting..."
Packit Service fdd496
    case $(sh -c 'echo "$1"' -- a) in
Packit Service fdd496
      a) ignored=--;;
Packit Service fdd496
      *) ignored=ignored;;
Packit Service fdd496
    esac
Packit Service fdd496
    exec sh -c \
Packit Service fdd496
      'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \
Packit Service fdd496
      $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \
Packit Service fdd496
      "$0" "$@" --no-bootstrap-sync
Packit Service fdd496
  }
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
Packit Service fdd496
<$gnulib_tool || exit $?
Packit Service fdd496
Packit Service fdd496
# Get translations.
Packit Service fdd496
Packit Service fdd496
download_po_files() {
Packit Service fdd496
  subdir=$1
Packit Service fdd496
  domain=$2
Packit Service fdd496
  echo "$me: getting translations into $subdir for $domain..."
Packit Service fdd496
  cmd=$(printf "$po_download_command_format" "$domain" "$subdir")
Packit Service fdd496
  eval "$cmd" && return
Packit Service fdd496
  # Fallback to HTTP.
Packit Service fdd496
  cmd=$(printf "$po_download_command_format2" "$subdir" "$domain")
Packit Service fdd496
  eval "$cmd"
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# Mirror .po files to $po_dir/.reference and copy only the new
Packit Service fdd496
# or modified ones into $po_dir.  Also update $po_dir/LINGUAS.
Packit Service fdd496
# Note po files that exist locally only are left in $po_dir but will
Packit Service fdd496
# not be included in LINGUAS and hence will not be distributed.
Packit Service fdd496
update_po_files() {
Packit Service fdd496
  # Directory containing primary .po files.
Packit Service fdd496
  # Overwrite them only when we're sure a .po file is new.
Packit Service fdd496
  po_dir=$1
Packit Service fdd496
  domain=$2
Packit Service fdd496
Packit Service fdd496
  # Mirror *.po files into this dir.
Packit Service fdd496
  # Usually contains *.s1 checksum files.
Packit Service fdd496
  ref_po_dir="$po_dir/.reference"
Packit Service fdd496
Packit Service fdd496
  test -d $ref_po_dir || mkdir $ref_po_dir || return
Packit Service fdd496
  download_po_files $ref_po_dir $domain \
Packit Service fdd496
    && ls "$ref_po_dir"/*.po 2>/dev/null |
Packit Service fdd496
      sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return
Packit Service fdd496
Packit Service fdd496
  langs=$(cd $ref_po_dir && echo *.po | sed 's/\.po//g')
Packit Service fdd496
  test "$langs" = '*' && langs=x
Packit Service fdd496
  for po in $langs; do
Packit Service fdd496
    case $po in x) continue;; esac
Packit Service fdd496
    new_po="$ref_po_dir/$po.po"
Packit Service fdd496
    cksum_file="$ref_po_dir/$po.s1"
Packit Service fdd496
    if ! test -f "$cksum_file" ||
Packit Service fdd496
        ! test -f "$po_dir/$po.po" ||
Packit Service fdd496
        ! $SHA1SUM -c "$cksum_file" < "$new_po" > /dev/null 2>&1; then
Packit Service fdd496
      echo "$me: updated $po_dir/$po.po..."
Packit Service fdd496
      cp "$new_po" "$po_dir/$po.po" \
Packit Service fdd496
          && $SHA1SUM < "$new_po" > "$cksum_file" || return
Packit Service fdd496
    fi
Packit Service fdd496
  done
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
case $SKIP_PO in
Packit Service fdd496
'')
Packit Service fdd496
  if test -d po; then
Packit Service fdd496
    update_po_files po $package || exit
Packit Service fdd496
  fi
Packit Service fdd496
Packit Service fdd496
  if test -d runtime-po; then
Packit Service fdd496
    update_po_files runtime-po $package-runtime || exit
Packit Service fdd496
  fi;;
Packit Service fdd496
esac
Packit Service fdd496
Packit Service fdd496
symlink_to_dir()
Packit Service fdd496
{
Packit Service fdd496
  src=$1/$2
Packit Service fdd496
  dst=${3-$2}
Packit Service fdd496
Packit Service fdd496
  test -f "$src" && {
Packit Service fdd496
Packit Service fdd496
    # If the destination directory doesn't exist, create it.
Packit Service fdd496
    # This is required at least for "lib/uniwidth/cjk.h".
Packit Service fdd496
    dst_dir=$(dirname "$dst")
Packit Service fdd496
    if ! test -d "$dst_dir"; then
Packit Service fdd496
      mkdir -p "$dst_dir"
Packit Service fdd496
Packit Service fdd496
      # If we've just created a directory like lib/uniwidth,
Packit Service fdd496
      # tell version control system(s) it's ignorable.
Packit Service fdd496
      # FIXME: for now, this does only one level
Packit Service fdd496
      parent=$(dirname "$dst_dir")
Packit Service fdd496
      for dot_ig in x $vc_ignore; do
Packit Service fdd496
        test $dot_ig = x && continue
Packit Service fdd496
        ig=$parent/$dot_ig
Packit Service fdd496
        insert_vc_ignore $ig "${dst_dir##*/}"
Packit Service fdd496
      done
Packit Service fdd496
    fi
Packit Service fdd496
Packit Service fdd496
    if $copy; then
Packit Service fdd496
      {
Packit Service fdd496
        test ! -h "$dst" || {
Packit Service fdd496
          echo "$me: rm -f $dst" &&
Packit Service fdd496
          rm -f "$dst"
Packit Service fdd496
        }
Packit Service fdd496
      } &&
Packit Service fdd496
      test -f "$dst" &&
Packit Service fdd496
      cmp -s "$src" "$dst" || {
Packit Service fdd496
        echo "$me: cp -fp $src $dst" &&
Packit Service fdd496
        cp -fp "$src" "$dst"
Packit Service fdd496
      }
Packit Service fdd496
    else
Packit Service fdd496
      # Leave any existing symlink alone, if it already points to the source,
Packit Service fdd496
      # so that broken build tools that care about symlink times
Packit Service fdd496
      # aren't confused into doing unnecessary builds.  Conversely, if the
Packit Service fdd496
      # existing symlink's timestamp is older than the source, make it afresh,
Packit Service fdd496
      # so that broken tools aren't confused into skipping needed builds.  See
Packit Service fdd496
      # <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00326.html>.
Packit Service fdd496
      test -h "$dst" &&
Packit Service fdd496
      src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 &&
Packit Service fdd496
      dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 &&
Packit Service fdd496
      test "$src_i" = "$dst_i" &&
Packit Service fdd496
      both_ls=$(ls -dt "$src" "$dst") &&
Packit Service fdd496
      test "X$both_ls" = "X$dst$nl$src" || {
Packit Service fdd496
        dot_dots=
Packit Service fdd496
        case $src in
Packit Service fdd496
        /*) ;;
Packit Service fdd496
        *)
Packit Service fdd496
          case /$dst/ in
Packit Service fdd496
          *//* | */../* | */./* | /*/*/*/*/*/)
Packit Service fdd496
             die "invalid symlink calculation: $src -> $dst";;
Packit Service fdd496
          /*/*/*/*/)    dot_dots=../../../;;
Packit Service fdd496
          /*/*/*/)      dot_dots=../../;;
Packit Service fdd496
          /*/*/)        dot_dots=../;;
Packit Service fdd496
          esac;;
Packit Service fdd496
        esac
Packit Service fdd496
Packit Service fdd496
        echo "$me: ln -fs $dot_dots$src $dst" &&
Packit Service fdd496
        ln -fs "$dot_dots$src" "$dst"
Packit Service fdd496
      }
Packit Service fdd496
    fi
Packit Service fdd496
  }
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
version_controlled_file() {
Packit Service fdd496
  parent=$1
Packit Service fdd496
  file=$2
Packit Service fdd496
  if test -d .git; then
Packit Service fdd496
    git rm -n "$file" > /dev/null 2>&1
Packit Service fdd496
  elif test -d .svn; then
Packit Service fdd496
    svn log -r HEAD "$file" > /dev/null 2>&1
Packit Service fdd496
  elif test -d CVS; then
Packit Service fdd496
    grep -F "/${file##*/}/" "$parent/CVS/Entries" 2>/dev/null |
Packit Service fdd496
             grep '^/[^/]*/[0-9]' > /dev/null
Packit Service fdd496
  else
Packit Service fdd496
    warn_ "no version control for $file?"
Packit Service fdd496
    false
Packit Service fdd496
  fi
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
# NOTE: we have to be careful to run both autopoint and libtoolize
Packit Service fdd496
# before gnulib-tool, since gnulib-tool is likely to provide newer
Packit Service fdd496
# versions of files "installed" by these two programs.
Packit Service fdd496
# Then, *after* gnulib-tool (see below), we have to be careful to
Packit Service fdd496
# run autoreconf in such a way that it does not run either of these
Packit Service fdd496
# two just-pre-run programs.
Packit Service fdd496
Packit Service fdd496
# Import from gettext.
Packit Service fdd496
with_gettext=yes
Packit Service fdd496
grep '^[	 ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
Packit Service fdd496
    with_gettext=no
Packit Service fdd496
Packit Service fdd496
if test $with_gettext = yes || test $use_libtool = 1; then
Packit Service fdd496
Packit Service fdd496
  tempbase=.bootstrap$$
Packit Service fdd496
  trap "rm -f $tempbase.0 $tempbase.1" 1 2 13 15
Packit Service fdd496
Packit Service fdd496
  > $tempbase.0 > $tempbase.1 &&
Packit Service fdd496
  find . ! -type d -print | sort > $tempbase.0 || exit
Packit Service fdd496
Packit Service fdd496
  if test $with_gettext = yes; then
Packit Service fdd496
    # Released autopoint has the tendency to install macros that have been
Packit Service fdd496
    # obsoleted in current gnulib, so run this before gnulib-tool.
Packit Service fdd496
    echo "$0: $AUTOPOINT --force"
Packit Service fdd496
    $AUTOPOINT --force || exit
Packit Service fdd496
  fi
Packit Service fdd496
Packit Service fdd496
  # Autoreconf runs aclocal before libtoolize, which causes spurious
Packit Service fdd496
  # warnings if the initial aclocal is confused by the libtoolized
Packit Service fdd496
  # (or worse out-of-date) macro directory.
Packit Service fdd496
  # libtoolize 1.9b added the --install option; but we support back
Packit Service fdd496
  # to libtoolize 1.5.22, where the install action was default.
Packit Service fdd496
  if test $use_libtool = 1; then
Packit Service fdd496
    install=
Packit Service fdd496
    case $($LIBTOOLIZE --help) in
Packit Service fdd496
      *--install*) install=--install ;;
Packit Service fdd496
    esac
Packit Service fdd496
    echo "running: $LIBTOOLIZE $install --copy"
Packit Service fdd496
    $LIBTOOLIZE $install --copy
Packit Service fdd496
  fi
Packit Service fdd496
Packit Service fdd496
  find . ! -type d -print | sort >$tempbase.1
Packit Service fdd496
  old_IFS=$IFS
Packit Service fdd496
  IFS=$nl
Packit Service fdd496
  for file in $(comm -13 $tempbase.0 $tempbase.1); do
Packit Service fdd496
    IFS=$old_IFS
Packit Service fdd496
    parent=${file%/*}
Packit Service fdd496
    version_controlled_file "$parent" "$file" || {
Packit Service fdd496
      for dot_ig in x $vc_ignore; do
Packit Service fdd496
        test $dot_ig = x && continue
Packit Service fdd496
        ig=$parent/$dot_ig
Packit Service fdd496
        insert_vc_ignore "$ig" "${file##*/}"
Packit Service fdd496
      done
Packit Service fdd496
    }
Packit Service fdd496
  done
Packit Service fdd496
  IFS=$old_IFS
Packit Service fdd496
Packit Service fdd496
  rm -f $tempbase.0 $tempbase.1
Packit Service fdd496
  trap - 1 2 13 15
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
# Import from gnulib.
Packit Service fdd496
Packit Service fdd496
gnulib_tool_options="\
Packit Service fdd496
 --import\
Packit Service fdd496
 --no-changelog\
Packit Service fdd496
 --aux-dir $build_aux\
Packit Service fdd496
 --doc-base $doc_base\
Packit Service fdd496
 --lib $gnulib_name\
Packit Service fdd496
 --m4-base $m4_base/\
Packit Service fdd496
 --source-base $source_base/\
Packit Service fdd496
 --tests-base $tests_base\
Packit Service fdd496
 --local-dir $local_gl_dir\
Packit Service fdd496
 $gnulib_tool_option_extras\
Packit Service fdd496
"
Packit Service fdd496
if test $use_libtool = 1; then
Packit Service fdd496
  case "$gnulib_tool_options " in
Packit Service fdd496
    *' --libtool '*) ;;
Packit Service fdd496
    *) gnulib_tool_options="$gnulib_tool_options --libtool" ;;
Packit Service fdd496
  esac
Packit Service fdd496
fi
Packit Service fdd496
echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
Packit Service fdd496
$gnulib_tool $gnulib_tool_options --import $gnulib_modules \
Packit Service fdd496
  || die "gnulib-tool failed"
Packit Service fdd496
Packit Service fdd496
for file in $gnulib_files; do
Packit Service fdd496
  symlink_to_dir "$GNULIB_SRCDIR" $file \
Packit Service fdd496
    || die "failed to symlink $file"
Packit Service fdd496
done
Packit Service fdd496
Packit Service fdd496
bootstrap_post_import_hook \
Packit Service fdd496
  || die "bootstrap_post_import_hook failed"
Packit Service fdd496
Packit Service fdd496
# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
Packit Service fdd496
# gnulib-populated directories.  Such .m4 files would cause aclocal to fail.
Packit Service fdd496
# The following requires GNU find 4.2.3 or newer.  Considering the usual
Packit Service fdd496
# portability constraints of this script, that may seem a very demanding
Packit Service fdd496
# requirement, but it should be ok.  Ignore any failure, which is fine,
Packit Service fdd496
# since this is only a convenience to help developers avoid the relatively
Packit Service fdd496
# unusual case in which a symlinked-to .m4 file is git-removed from gnulib
Packit Service fdd496
# between successive runs of this script.
Packit Service fdd496
find "$m4_base" "$source_base" \
Packit Service fdd496
  -depth \( -name '*.m4' -o -name '*.[ch]' \) \
Packit Service fdd496
  -type l -xtype l -delete > /dev/null 2>&1
Packit Service fdd496
Packit Service fdd496
# Invoke autoreconf with --force --install to ensure upgrades of tools
Packit Service fdd496
# such as ylwrap.
Packit Service fdd496
AUTORECONFFLAGS="--verbose --install --force -I $m4_base $ACLOCAL_FLAGS"
Packit Service fdd496
Packit Service fdd496
# Some systems (RHEL 5) are using ancient autotools, for which the
Packit Service fdd496
# --no-recursive option had not been invented.  Detect that lack and
Packit Service fdd496
# omit the option when it's not supported.  FIXME in 2017: remove this
Packit Service fdd496
# hack when RHEL 5 autotools are updated, or when they become irrelevant.
Packit Service fdd496
case $($AUTORECONF --help) in
Packit Service fdd496
  *--no-recursive*) AUTORECONFFLAGS="$AUTORECONFFLAGS --no-recursive";;
Packit Service fdd496
esac
Packit Service fdd496
Packit Service fdd496
# Tell autoreconf not to invoke autopoint or libtoolize; they were run above.
Packit Service fdd496
echo "running: AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS"
Packit Service fdd496
AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS \
Packit Service fdd496
  || die "autoreconf failed"
Packit Service fdd496
Packit Service fdd496
# Get some extra files from gnulib, overriding existing files.
Packit Service fdd496
for file in $gnulib_extra_files; do
Packit Service fdd496
  case $file in
Packit Service fdd496
  */INSTALL) dst=INSTALL;;
Packit Service fdd496
  build-aux/*) dst=$build_aux/${file#build-aux/};;
Packit Service fdd496
  *) dst=$file;;
Packit Service fdd496
  esac
Packit Service fdd496
  symlink_to_dir "$GNULIB_SRCDIR" $file $dst \
Packit Service fdd496
    || die "failed to symlink $file"
Packit Service fdd496
done
Packit Service fdd496
Packit Service fdd496
if test $with_gettext = yes; then
Packit Service fdd496
  # Create gettext configuration.
Packit Service fdd496
  echo "$0: Creating po/Makevars from po/Makevars.template ..."
Packit Service fdd496
  rm -f po/Makevars
Packit Service fdd496
  sed '
Packit Service fdd496
    /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
Packit Service fdd496
    /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/
Packit Service fdd496
    /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'|
Packit Service fdd496
    /^XGETTEXT_OPTIONS *=/{
Packit Service fdd496
      s/$/ \\/
Packit Service fdd496
      a\
Packit Service fdd496
          '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
Packit Service fdd496
    }
Packit Service fdd496
  ' po/Makevars.template >po/Makevars \
Packit Service fdd496
    || die 'cannot generate po/Makevars'
Packit Service fdd496
Packit Service fdd496
  # If the 'gettext' module is in use, grab the latest Makefile.in.in.
Packit Service fdd496
  # If only the 'gettext-h' module is in use, assume autopoint already
Packit Service fdd496
  # put the correct version of this file into place.
Packit Service fdd496
  case $gnulib_modules in
Packit Service fdd496
  *gettext-h*) ;;
Packit Service fdd496
  *gettext*)
Packit Service fdd496
    cp $GNULIB_SRCDIR/build-aux/po/Makefile.in.in po/Makefile.in.in \
Packit Service fdd496
      || die "cannot create po/Makefile.in.in"
Packit Service fdd496
    ;;
Packit Service fdd496
  esac
Packit Service fdd496
Packit Service fdd496
  if test -d runtime-po; then
Packit Service fdd496
    # Similarly for runtime-po/Makevars, but not quite the same.
Packit Service fdd496
    rm -f runtime-po/Makevars
Packit Service fdd496
    sed '
Packit Service fdd496
      /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
Packit Service fdd496
      /^subdir *=.*/s/=.*/= runtime-po/
Packit Service fdd496
      /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
Packit Service fdd496
      /^XGETTEXT_OPTIONS *=/{
Packit Service fdd496
        s/$/ \\/
Packit Service fdd496
        a\
Packit Service fdd496
            '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
Packit Service fdd496
      }
Packit Service fdd496
    ' po/Makevars.template >runtime-po/Makevars \
Packit Service fdd496
    || die 'cannot generate runtime-po/Makevars'
Packit Service fdd496
Packit Service fdd496
    # Copy identical files from po to runtime-po.
Packit Service fdd496
    (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
Packit Service fdd496
  fi
Packit Service fdd496
fi
Packit Service fdd496
Packit Service fdd496
bootstrap_epilogue
Packit Service fdd496
Packit Service fdd496
echo "$0: done.  Now you can run './configure'."
Packit Service fdd496
Packit Service fdd496
# Local variables:
Packit Service fdd496
# eval: (add-hook 'write-file-hooks 'time-stamp)
Packit Service fdd496
# time-stamp-start: "scriptversion="
Packit Service fdd496
# time-stamp-format: "%:y-%02m-%02d.%02H"
Packit Service fdd496
# time-stamp-time-zone: "UTC0"
Packit Service fdd496
# time-stamp-end: "; # UTC"
Packit Service fdd496
# End: