aboutsummaryrefslogtreecommitdiff
blob: 38dd3ae1ad7d39f0a2e57c732c18e55ba0105aa4 (plain)
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/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
-)
  if [ ! -d .gnulib ]; then
    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

modules='
c-ctype
close
connect
getaddrinfo
gethostname
getpass
gettext
inet_pton
ioctl
mkstemp
mktempd
perror
physmem
poll
posix-shell
recv
send
setsockopt
socket
strndup
strerror
strsep
sys_stat
time_r
useless-if-before-free
vasprintf
verify
vc-list-files
'

# Tell gnulib to:
#   require LGPLv2+
#   put *.m4 files in new gnulib/m4/ dir
#   put *.[ch] files in new gnulib/lib/ dir.

$gnulib_tool			\
  --no-vc-files			\
  --lgpl=2			\
  --with-tests			\
  --m4-base=gnulib/m4		\
  --source-base=gnulib/lib	\
  --tests-base=gnulib/tests	\
  --import $modules

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)