annotate autopull.sh @ 32058:e242124f1240

Overhaul input validation of sparse() function. * sparse.cc (Fsparse): Decode input type and identify floating point inputs. If input is of single type, emit new warning "Octave:sparse:double-conversion". If input is neither floating point or logical, then call err_wrong_type_arg() for pretty error message. Rename temporary variable 'k' to "argidx" for clarity. New temporary variable "arg" to increase readability of code. Add FIXME note about unreachable code due to behavior of get_dimensions(). * sparse.cc (Fissparse): Turn off warning about double-conversion temporarily for test which has single input. * warning_ids.m: Add description for new warning ID "Octave:sparse:double-conversion". * mk-sparse-tst.sh: Redo BIST tests for sparse() construction.
author Rik <rik@octave.org>
date Wed, 26 Apr 2023 10:09:09 -0700
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: