bootstrap 2.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
#!/bin/sh
# Run this after autogen.sh, to pull in all of the gnulib-related bits.
# It's important to run *after* autogen.sh, since it updates some of
# the same files autogen.sh does, yet those from gnulib are newer,
# and match the tests.  So if a gnulib bug has been fixed since the
# snapshot taken for whatever gettext release you're using, yet you
# run "make check" against the wrong version, the corresponding unit
# test in gl-tests/ may well fail.

usage() {
  echo >&2 "\
Usage: $0 [OPTION]...
Bootstrap this package from the checked-out sources.

Options:
 --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.

If the file bootstrap.conf exists in the current working directory, its
contents are read as shell variables to configure the bootstrap.

Running without arguments will suffice in most cases.
"
}

for option
do
  case $option in
  --help)
    usage
    exit;;
  --gnulib-srcdir=*)
    GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
  *)
    echo >&2 "$0: $option: unknown option"
    exit 1;;
  esac
done

cleanup_gnulib() {
  st=$?
  rm -fr .gnulib
  exit $st
}

case ${GNULIB_SRCDIR--} in
-)
J
Jim Meyering 已提交
51
  if [ ! -d .gnulib ]; then
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
    echo "$0: getting gnulib files..."

    trap cleanup_gnulib 1 2 13 15

    git clone --depth 1 git://git.sv.gnu.org/gnulib .gnulib ||
      cleanup_gnulib

    trap - 1 2 13 15
  fi
  GNULIB_SRCDIR=.gnulib
esac

gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
<$gnulib_tool || exit

67 68
modules='
c-ctype
J
Jim Meyering 已提交
69 70
close
connect
71
getaddrinfo
J
Jim Meyering 已提交
72
gethostname
73 74
getpass
gettext
75
inet_pton
76
ioctl
77
mkstemp
78
mktempd
J
Jim Meyering 已提交
79
perror
80 81 82
physmem
poll
posix-shell
J
Jim Meyering 已提交
83
recv
84
random_r
J
Jim Meyering 已提交
85 86 87
send
setsockopt
socket
J
Jim Meyering 已提交
88
stpcpy
89
strndup
J
Jim Meyering 已提交
90
strerror
91 92
strsep
sys_stat
93
time_r
94 95
useless-if-before-free
vasprintf
96
verify
97 98 99
vc-list-files
'

100
# Tell gnulib to:
101
#   require LGPLv2+
102 103 104 105
#   put *.m4 files in new gnulib/m4/ dir
#   put *.[ch] files in new gnulib/lib/ dir.

$gnulib_tool			\
106
  --no-vc-files			\
107
  --lgpl=2			\
J
Jim Meyering 已提交
108
  --with-tests			\
109 110 111
  --m4-base=gnulib/m4		\
  --source-base=gnulib/lib	\
  --tests-base=gnulib/tests	\
112
  --import $modules
113 114 115 116 117 118 119 120 121 122

rm -f				\
    .gitignore			\
    gnulib/lib/.gitignore	\
    gnulib/m4/.gitignore	\
    gnulib/tests/.gitignore

(cd gnulib/lib &&
 (cat .cvsignore; \
  ls -1 *.in.h|sed 's/\.in\.h/.h/') | sort -u > .t; mv .t .cvsignore)