annotate autopull.sh @ 31610:3b7852a822e8

maint: Merge stable to default.
author John W. Eaton <jwe@octave.org>
date Fri, 02 Dec 2022 10:12:40 -0500
parents e98fb9b4be86
children e6d339b9309d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31420
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
1 #!/bin/sh
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
2 # Convenience script for fetching auxiliary files that are omitted from
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
3 # the version control repository of this package.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
4
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
5 # Copyright (C) 2003-2022 Free Software Foundation, Inc.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
6 #
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
8 # it under the terms of the GNU General Public License as published by
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
10 # (at your option) any later version.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
11 #
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
15 # GNU General Public License for more details.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
16 #
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
17 # You should have received a copy of the GNU General Public License
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
18 # along with this program. If not, see <https://www.gnu.org/licenses/>.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
19
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
20 # Originally written by Paul Eggert. The canonical version of this
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
21 # script is maintained as top/autopull.sh in gnulib. However, to be
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
22 # useful to your package, you should place a copy of it under version
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
23 # control in the top-level directory of your package. The intent is
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
24 # that all customization can be done with a bootstrap.conf file also
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
25 # maintained in your version control; gnulib comes with a template
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
26 # build-aux/bootstrap.conf to get you started.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
27 #
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
28 # Alternatively, you can use an autopull.sh script that is specific
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
29 # to your package.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
30
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
31 scriptversion=2022-07-24.15; # UTC
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
32
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
33 me="$0"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
34 medir=`dirname "$me"`
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
35
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
36 # Read the function library and the configuration.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
37 . "$medir"/bootstrap-funclib.sh
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
38
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
39 # Ensure that CDPATH is not set. Otherwise, the output from cd
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
40 # would cause trouble in at least one use below.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
41 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
42
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
43 usage() {
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
44 cat <<EOF
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
45 Usage: $me [OPTION]...
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
46 Bootstrap this package from the checked-out sources.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
47
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
48 Optional environment variables:
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
49 GNULIB_SRCDIR Specifies the local directory where gnulib
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
50 sources reside. Use this if you already
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
51 have gnulib sources on your machine, and
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
52 you want to use these sources.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
53 GNULIB_REFDIR Specifies the local directory where a gnulib
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
54 repository (with a .git subdirectory) resides.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
55 Use this if you already have gnulib sources
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
56 and history on your machine, and do not want
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
57 to waste your bandwidth downloading them again.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
58 GNULIB_URL Cloneable URL of the gnulib repository.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
59
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
60 Options:
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
61 --bootstrap-sync if this bootstrap script is not identical to
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
62 the version in the local gnulib sources,
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
63 update this script, and then restart it with
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
64 /bin/sh or the shell \$CONFIG_SHELL
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
65 --no-bootstrap-sync do not check whether bootstrap is out of sync
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
66 --force attempt to bootstrap even if the sources seem
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
67 not to have been checked out
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
68 --no-git do not use git to update gnulib. Requires that
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
69 \$GNULIB_SRCDIR or the --gnulib-srcdir option
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
70 points to a gnulib repository with the correct
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
71 revision
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
72 --skip-po do not download po files
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
73 EOF
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
74 bootstrap_print_option_usage_hook
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
75 cat <<EOF
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
76 If the file bootstrap.conf exists in the same directory as this script, its
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
77 contents are read as shell variables to configure the bootstrap.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
78
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
79 For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
80 are honored.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
81
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
82 Gnulib sources can be fetched in various ways:
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
83
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
84 * If the environment variable GNULIB_SRCDIR is set (either as an
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
85 environment variable or via the --gnulib-srcdir option), then sources
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
86 are fetched from that local directory. If it is a git repository and
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
87 the configuration variable GNULIB_REVISION is set in bootstrap.conf,
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
88 then that revision is checked out.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
89
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
90 * Otherwise, if this package is in a git repository with a 'gnulib'
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
91 submodule configured, then that submodule is initialized and updated
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
92 and sources are fetched from there. If GNULIB_REFDIR is set (either
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
93 as an environment variable or via the --gnulib-refdir option) and is
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
94 a git repository, then it is used as a reference.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
95
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
96 * Otherwise, if the 'gnulib' directory does not exist, Gnulib sources
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
97 are cloned into that directory using git from \$GNULIB_URL, defaulting
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
98 to $default_gnulib_url.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
99 If the configuration variable GNULIB_REVISION is set in bootstrap.conf,
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
100 then that revision is checked out.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
101
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
102 * Otherwise, the existing Gnulib sources in the 'gnulib' directory are
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
103 used. If it is a git repository and the configuration variable
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
104 GNULIB_REVISION is set in bootstrap.conf, then that revision is
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
105 checked out.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
106
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
107 If you maintain a package and want to pin a particular revision of the
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
108 Gnulib sources that has been tested with your package, then there are
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
109 two possible approaches: either configure a 'gnulib' submodule with the
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
110 appropriate revision, or set GNULIB_REVISION (and if necessary
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
111 GNULIB_URL) in bootstrap.conf.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
112
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
113 Running without arguments will suffice in most cases.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
114 EOF
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
115 }
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
116
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
117 # Parse options.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
118
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
119 # Use git to update gnulib sources
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
120 use_git=true
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
121
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
122 for option
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
123 do
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
124 case $option in
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
125 --help)
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
126 usage
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
127 exit;;
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
128 --version)
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
129 set -e
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
130 echo "autopull.sh $scriptversion"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
131 echo "$copyright"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
132 exit 0
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
133 ;;
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
134 --skip-po)
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
135 SKIP_PO=t;;
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
136 --force)
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
137 checkout_only_file=;;
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
138 --bootstrap-sync)
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
139 bootstrap_sync=true;;
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
140 --no-bootstrap-sync)
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
141 bootstrap_sync=false;;
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
142 --no-git)
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
143 use_git=false;;
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
144 *)
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
145 bootstrap_option_hook $option || die "$option: unknown option";;
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
146 esac
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
147 done
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
148
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
149 $use_git || test -n "$GNULIB_SRCDIR" \
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
150 || die "Error: --no-git requires \$GNULIB_SRCDIR environment variable or --gnulib-srcdir option"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
151 test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
152 || die "Error: \$GNULIB_SRCDIR environment variable or --gnulib-srcdir option is specified, but does not denote a directory"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
153
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
154 if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
155 die "Running this script from a non-checked-out distribution is risky."
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
156 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
157
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
158 check_build_prerequisites $use_git
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
159
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
160 if $use_gnulib || $bootstrap_sync; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
161 prepare_GNULIB_SRCDIR
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
162 if $bootstrap_sync; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
163 upgrade_bootstrap
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
164 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
165 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
166
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
167 # Find sha1sum, named gsha1sum on MacPorts, shasum on Mac OS X 10.6.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
168 # Also find the compatible sha1 utility on the BSDs
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
169 if test x"$SKIP_PO" = x; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
170 find_tool SHA1SUM sha1sum gsha1sum shasum sha1
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
171 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
172
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
173 # See if we can use gnulib's git-merge-changelog merge driver.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
174 if $use_git && test -d .git && check_exists git; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
175 if git config merge.merge-changelog.driver >/dev/null ; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
176 :
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
177 elif check_exists git-merge-changelog; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
178 echo "$0: initializing git-merge-changelog driver"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
179 git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
180 git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
181 else
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
182 echo "$0: consider installing git-merge-changelog from gnulib"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
183 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
184 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
185
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
186 # ----------------------------- Get translations. -----------------------------
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
187
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
188 download_po_files() {
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
189 subdir=$1
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
190 domain=$2
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
191 echo "$me: getting translations into $subdir for $domain..."
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
192 cmd=$(printf "$po_download_command_format" "$subdir" "$domain")
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
193 eval "$cmd"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
194 }
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
195
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
196 # Mirror .po files to $po_dir/.reference and copy only the new
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
197 # or modified ones into $po_dir. Also update $po_dir/LINGUAS.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
198 # Note po files that exist locally only are left in $po_dir but will
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
199 # not be included in LINGUAS and hence will not be distributed.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
200 update_po_files() {
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
201 # Directory containing primary .po files.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
202 # Overwrite them only when we're sure a .po file is new.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
203 po_dir=$1
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
204 domain=$2
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
205
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
206 # Mirror *.po files into this dir.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
207 # Usually contains *.s1 checksum files.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
208 ref_po_dir="$po_dir/.reference"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
209
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
210 test -d $ref_po_dir || mkdir $ref_po_dir || return
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
211 download_po_files $ref_po_dir $domain \
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
212 && ls "$ref_po_dir"/*.po 2>/dev/null |
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
213 sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
214
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
215 langs=$(cd $ref_po_dir && echo *.po | sed 's/\.po//g')
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
216 test "$langs" = '*' && langs=x
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
217 for po in $langs; do
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
218 case $po in x) continue;; esac
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
219 new_po="$ref_po_dir/$po.po"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
220 cksum_file="$ref_po_dir/$po.s1"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
221 if ! test -f "$cksum_file" ||
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
222 ! test -f "$po_dir/$po.po" ||
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
223 ! $SHA1SUM -c "$cksum_file" < "$new_po" > /dev/null 2>&1; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
224 echo "$me: updated $po_dir/$po.po..."
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
225 cp "$new_po" "$po_dir/$po.po" \
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
226 && $SHA1SUM < "$new_po" > "$cksum_file" || return
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
227 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
228 done
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
229 }
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
230
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
231 case $SKIP_PO in
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
232 '')
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
233 if test -d po; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
234 update_po_files po $package || exit
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
235 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
236
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
237 if test -d runtime-po; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
238 update_po_files runtime-po $package-runtime || exit
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
239 fi;;
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
240 esac
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
241
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
242 # -----------------------------------------------------------------------------
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
243
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
244 bootstrap_post_pull_hook \
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
245 || die "bootstrap_post_pull_hook failed"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
246
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
247 # Don't proceed if there are uninitialized submodules. In particular,
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
248 # autogen.sh will remove dangling links, which might be links into
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
249 # uninitialized submodules.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
250 # But it's OK if the 'gnulib' submodule is uninitialized, as long as
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
251 # GNULIB_SRCDIR is set.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
252 if $use_git; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
253 # Uninitialized submodules are listed with an initial dash.
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
254 uninitialized=`git submodule | grep '^-' | awk '{ print $2 }'`
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
255 if test -n "$GNULIB_SRCDIR"; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
256 uninitialized=`echo "$uninitialized" | grep -v '^gnulib$'`
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
257 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
258 if test -n "$uninitialized"; then
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
259 die "Some git submodules are not initialized: "`echo "$uninitialized" | tr '\n' ',' | sed -e 's|,$|.|'`" Either use option '--no-git', or run 'git submodule update --init' and bootstrap again."
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
260 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
261 fi
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
262
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
263 echo "$0: done. Now you can run './autogen.sh'."
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
264
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
265 # ----------------------------------------------------------------------------
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
266
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
267 # Local Variables:
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
268 # eval: (add-hook 'before-save-hook 'time-stamp)
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
269 # time-stamp-start: "scriptversion="
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
270 # time-stamp-format: "%:y-%02m-%02d.%02H"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
271 # time-stamp-time-zone: "UTC0"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
272 # time-stamp-end: "; # UTC"
e98fb9b4be86 maint: Update gnulib.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff changeset
273 # End: