[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
trans-coord/gnun/server/gnun AUTHORS ChangeLog ...
From: |
Pavel Kharitonov |
Subject: |
trans-coord/gnun/server/gnun AUTHORS ChangeLog ... |
Date: |
Fri, 20 Jan 2017 13:34:46 -0500 (EST) |
CVSROOT: /sources/trans-coord
Module name: trans-coord
Changes by: Pavel Kharitonov <ineiev> 17/01/20 13:34:46
Modified files:
gnun/server/gnun: AUTHORS ChangeLog Makefile.am NEWS THANKS
configure.ac
Added files:
gnun/server/gnun/m4: ax_arg_prog.m4 ax_arg_progs.m4
Log message:
Detect a bug of GNU Sed 4.3 and emit a warning;
actually use variables defined in AC_ARG_VAR; other rearrangements.
* m4/ax_arg_prog.m4:
* m4/ax_arg_progs.m4: New files.
* configure.ac: Actually use variables previously
defined in AC_ARG_VAR; redefine some constructs in m4sh.
Check for sed-4.3-specific bug reported by Rafael Fontenelle
on bug-gnu@ and issue a warning. Print warnings after results.
* AUTHORS:
* NEWS:
* THANKS: Update.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/AUTHORS?cvsroot=trans-coord&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/ChangeLog?cvsroot=trans-coord&r1=1.455&r2=1.456
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/Makefile.am?cvsroot=trans-coord&r1=1.46&r2=1.47
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/NEWS?cvsroot=trans-coord&r1=1.126&r2=1.127
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/THANKS?cvsroot=trans-coord&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/configure.ac?cvsroot=trans-coord&r1=1.55&r2=1.56
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/m4/ax_arg_prog.m4?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/m4/ax_arg_progs.m4?cvsroot=trans-coord&rev=1.1
Patches:
Index: AUTHORS
===================================================================
RCS file: /sources/trans-coord/trans-coord/gnun/server/gnun/AUTHORS,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- AUTHORS 7 Jul 2016 06:33:48 -0000 1.22
+++ AUTHORS 20 Jan 2017 18:34:44 -0000 1.23
@@ -1,6 +1,6 @@
Authors of GNUnited Nations.
-Copyright (C) 2016 Free Software Foundation, Inc.
+Copyright (C) 2017 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -20,6 +20,7 @@
gnun-add-fuzzy-diff, gnun-diff-po.in,
gnun-init-po.in, gnun-report.in, make-prototype.awk,
priorities.mk, update-localized-urls.in, sort.awk.in, sort-linguas,
+ m4/ax_arg_prog.m4, m4/ax_arg_progs.m4,
all files in test/.
Some changes in configure.ac, GNUmakefile, GNUmakefile.team,
Index: ChangeLog
===================================================================
RCS file: /sources/trans-coord/trans-coord/gnun/server/gnun/ChangeLog,v
retrieving revision 1.455
retrieving revision 1.456
diff -u -b -r1.455 -r1.456
--- ChangeLog 8 Oct 2016 13:44:46 -0000 1.455
+++ ChangeLog 20 Jan 2017 18:34:45 -0000 1.456
@@ -1,3 +1,19 @@
+2017-01-20 Pavel Kharitonov <address@hidden>
+
+ Detect a bug of GNU Sed 4.3 and emit a warning;
+ actually use variables defined in AC_ARG_VAR;
+ other rearrangements.
+
+ * m4/ax_arg_prog.m4:
+ * m4/ax_arg_progs.m4: New files.
+ * configure.ac: Actually use variables previously
+ defined in AC_ARG_VAR; redefine some constructs in m4sh.
+ Check for sed-4.3-specific bug reported by Rafael Fontenelle
+ on bug-gnu@ and issue a warning. Print warnings after results.
+ * AUTHORS:
+ * NEWS:
+ * THANKS: Update.
+
2016-10-08 Pavel Kharitonov <address@hidden>
Release 0.11.
@@ -4569,7 +4585,7 @@
бÑлгаÑÑки.
Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
- 2016 Free Software Foundation, Inc.
+ 2016, 2017 Free Software Foundation, Inc.
This file is part of GNUnited Nations.
Index: Makefile.am
===================================================================
RCS file: /sources/trans-coord/trans-coord/gnun/server/gnun/Makefile.am,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- Makefile.am 5 Oct 2016 18:37:39 -0000 1.46
+++ Makefile.am 20 Jan 2017 18:34:45 -0000 1.47
@@ -138,6 +138,7 @@
-e 's|@address@hidden|$(MSGFMT)|g' \
-e 's|@address@hidden|$(MSGMERGE)|g' \
-e 's|@address@hidden|$(SED)|g' \
+ -e 's|@address@hidden|$(SED_BINARY)|g' \
-e 's|@address@hidden|$(SORT)|g' \
-e 's|@address@hidden|$(XMLLINT)|g' \
-e 's|@address@hidden|$(WDIFF)|g'
Index: NEWS
===================================================================
RCS file: /sources/trans-coord/trans-coord/gnun/server/gnun/NEWS,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -b -r1.126 -r1.127
--- NEWS 8 Oct 2016 13:46:41 -0000 1.126
+++ NEWS 20 Jan 2017 18:34:45 -0000 1.127
@@ -1,5 +1,16 @@
GNUnited Nations NEWS - User visible changes.
+* Changes in GNUnited Nations 0.12 (????-??-??)
+
+** configure script detects GNU sed-4.3-specific bug and issues
+ a warning; all configuration warnings are printed
+ after outputting results.
+
+** Bugs fixed in 0.12.
+
+*** Many configure variables like WDIFF and UUENCODE weren't
+ actually taken into account.
+
* Changes in GNUnited Nations 0.11 (2016-10-08)
** Optional templates are reported as lower priority even when located
Index: THANKS
===================================================================
RCS file: /sources/trans-coord/trans-coord/gnun/server/gnun/THANKS,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- THANKS 19 Aug 2013 05:23:34 -0000 1.18
+++ THANKS 20 Jan 2017 18:34:45 -0000 1.19
@@ -34,9 +34,11 @@
+----------------------+---------------------------+
|Rafael Beraldo | address@hidden|
+----------------------+---------------------------+
+|Rafael Fontenelle | address@hidden|
++----------------------+---------------------------+
|Richard Stallman | address@hidden|
+----------------------+---------------------------+
-|Thérèse Godefroy | address@hidden|
+|Thérèse Godefroy | address@hidden|
+----------------------+---------------------------+
|Tiberiu C. Turbureanu | address@hidden|
+----------------------+---------------------------+
@@ -44,7 +46,7 @@
+----------------------+---------------------------+
-Copyright (C) 2013 Free Software Foundation, Inc.
+Copyright (C) 2017 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
Index: configure.ac
===================================================================
RCS file: /sources/trans-coord/trans-coord/gnun/server/gnun/configure.ac,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- configure.ac 8 Oct 2016 13:44:46 -0000 1.55
+++ configure.ac 20 Jan 2017 18:34:45 -0000 1.56
@@ -1,7 +1,7 @@
# Process this file with autoconf to produce a configure script.
# Copyright (C) 2008, 2009, 2010, 2011, 2012,
-# 2013, 2014, 2015, 2016 Free Software Foundation, Inc.
+# 2013, 2014, 2015, 2016, 2017 Free Software Foundation, Inc.
# This file is part of GNUnited Nations.
@@ -17,7 +17,6 @@
# You should have received a copy of the GNU General Public License
# along with GNUnited Nations. If not, see <https://www.gnu.org/licenses/>.
-
AC_INIT([GNUnited Nations],
[0.11],
address@hidden,
@@ -67,15 +66,6 @@
])
AC_MSG_RESULT([$decent_date])
-AS_CASE([$decent_date], [no],
-[AC_MSG_WARN([
-
-The `date' program seems to support no `-d' option.
-
-We rely on it when delaying pages regeneration; this feature may not
-work for you.
-])])
-
AC_ARG_VAR([AWK], [the `awk' program])
AX_CHECK_AWK_GSUB([decent_awk=yes], [decent_awk=no])
AX_TRY_AWK_EXPOUT([match(a,b,c)],[],
@@ -90,6 +80,19 @@
AC_SUBST([MATCH3], [$match3])
AM_CONDITIONAL([HAVE_MATCH3], [test $match3 = match])
+AX_ARG_PROG([BASH], [the `bash' program], [bash])
+AS_CASE(["x$BASH"], [x],
+[AC_MSG_ERROR([
+
+No `bash' program found. Try configure BASH=/path/to/bash
+if you have it.
+])
+])
+
+AC_ARG_VAR([GREP], [the `grep' program])
+AC_ARG_VAR([EGREP], [the `egrep' program])
+AC_PROG_EGREP
+
AC_ARG_VAR([SED], [the `sed' program])
AC_PROG_SED
@@ -109,7 +112,6 @@
Unlike GNU sed, the `sed' program doesn't support --in-place option.
])
])
-rm -f conftest0.sed confest.sed
AC_MSG_CHECKING([whether sed supports the `e' option of the `s' command])
test="$(echo false | ${SED} 's/.*/true/e')"
@@ -135,22 +137,30 @@
])
])
-AC_ARG_VAR([BASH], [the `bash' program])
-AC_PATH_PROG([BASH], [bash])
-AS_CASE(["x$BASH"], [x],
-[AC_MSG_ERROR([
+AC_MSG_CHECKING([for sed-4.3 bug])
-No `bash' program found. Try configure BASH=/path/to/bash
-if you have it.
-])
-])
+AS_IF([locale -a >/dev/null 2>/dev/null], [have_locale=yes], [have_locale=no])
+utf8_locale=
+AS_CASE([$have_locale], [yes], [
+utf8_locale=`locale -a | $SED '/\(UTF-8\|utf8\)$/q;d'`])
+AS_CASE([x"$utf8_locale"], [x], [
+utf8_locale=en_US.utf8])
+
+cat > conftest0 <<EOF
+echo 'abcdefgh "014"' \
+ | LC_ALL=$utf8_locale ${SED} \
+ 's%.*%&\na%;s/^abcdefgh "\([[^\n]]*\)"[[^\n]]*\n//' 2>&1 > /dev/null
+EOF
+buggy_sed=no
+AS_IF([bash conftest0 2> /dev/null],
+[AC_MSG_RESULT([no])],
+[AC_MSG_RESULT([yes])
+ buggy_sed=yes])
# Detect the program to do base64 encoding.
base64_encode=""
-AC_ARG_VAR([BASE64], [the `base64' program])
-AC_PATH_PROG([BASE64], [base64])
-AC_ARG_VAR([UUENCODE], [the `uuencode' program])
-AC_PATH_PROG([UUENCODE], [uuencode])
+AX_ARG_PROG([BASE64], [the `base64' program], [base64])
+AX_ARG_PROG([UUENCODE], [the `uuencode' program], [uuencode])
AS_CASE(["x$BASE64"], [x],
[AS_CASE(["x$UUENCODE"], [x], ,
[base64_encode=\
@@ -170,12 +180,7 @@
])
AC_SUBST([BASE64_ENCODE], [$base64_encode])
-AC_ARG_VAR([GREP], [the `grep' program])
-AC_ARG_VAR([EGREP], [the `egrep' program])
-AC_PROG_EGREP
-
-AC_ARG_VAR([MKTEMP], [the `mktemp' program])
-AC_PATH_PROG([MKTEMP], [mktemp])
+AX_ARG_PROG([MKTEMP], [the `mktemp' program], [mktemp])
AS_CASE(["x$MKTEMP"], [x],
[AC_MSG_ERROR([
@@ -197,16 +202,15 @@
AC_MSG_RESULT([$have_mktemp_t])
AC_SUBST([MKTEMP_T], [$mktemp_t])
-AC_ARG_VAR([MSGCAT], [the `msgcat' program])
-AC_PATH_PROGS([MSGCAT], [msgcat gmsgcat])
-AC_ARG_VAR([MSGFMT], [the `msgfmt' program])
-AC_PATH_PROGS([MSGFMT], [msgfmt gmsgfmt])
-AC_ARG_VAR([MSGEXEC], [the `msgexec' program])
-AC_PATH_PROGS([MSGEXEC], [msgexec gmsgexec])
+AX_ARG_PROGS([MSGCAT], [the `msgcat' program], [msgcat gmsgcat])
+AX_ARG_PROGS([MSGFMT], [the `msgfmt' program], [msgfmt gmsgfmt])
+AX_ARG_PROGS([MSGEXEC], [the `msgexec' program], [msgexec gmsgexec])
AC_ARG_VAR([MSGMERGE], [the `msgmerge' program])
+AS_CASE(["x$MSGMERGE"], [x], [msgmerges="msgmerge gmsgmerge"],
+ [msgmerges="$MSGMERGE"])
AC_CACHE_CHECK([for msgmerge that supports --previous],
[ac_cv_path_MSGMERGE],
- [AC_PATH_PROGS_FEATURE_CHECK([MSGMERGE], [msgmerge gmsgmerge],
+ [AC_PATH_PROGS_FEATURE_CHECK([MSGMERGE], [$msgmerges],
[[$ac_path_MSGMERGE --previous /dev/null /dev/null 2>/dev/null \
&& ac_cv_path_MSGMERGE=$ac_path_MSGMERGE]],
[AC_MSG_RESULT([none found])
@@ -238,35 +242,29 @@
AC_SUBST([MSGATTRIB_PREV], [$msgattrib_previous])
AC_MSG_RESULT([$msgattrib_previous])
-AC_ARG_VAR([WDIFF], [the `wdiff' program])
-AC_PATH_PROG([WDIFF], [wdiff])
-AS_IF([test -n "$WDIFF"], [have_wdiff=yes], [have_wdiff=no])
+AX_ARG_PROG([WDIFF], [the `wdiff' program], [wdiff])
+AS_CASE(["x$WDIFF"], [x], [have_wdiff=no], [have_wdiff=yes])
AM_CONDITIONAL([HAVE_WDIFF], [test -n "$WDIFF"])
-# Po4a is useless for our purpose if awk is missing.
-if test "$decent_awk" = yes; then
- AC_ARG_VAR([PO4A_GETTEXTIZE], [the `po4a-gettextize' program])
- AC_PATH_PROGS([PO4A_GETTEXTIZE], [po4a-gettextize])
- AC_ARG_VAR([PO4A_TRANSLATE], [the `po4a-translate' program])
- AC_PATH_PROGS([PO4A_TRANSLATE], [po4a-translate])
+AX_ARG_PROG([PO4A_GETTEXTIZE], [the `po4a-gettextize' program],
+ [po4a-gettextize])
+
+AX_ARG_PROG([PO4A_TRANSLATE], [the `po4a-translate' program], [po4a-translate])
- # This is a weak test; should be replaced with a feature check.
- if test -n "$PO4A_TRANSLATE"; then
+# This is a weak test; should be replaced with a feature check.
+AS_CASE(["x$PO4A_TRANSLATE"], [x], [], [
AC_CACHE_CHECK([if po4a version is at least 0.37], [gnun_cv_recent_po4a],
[gnun_cv_recent_po4a=no
po4a_version=`$PO4A_TRANSLATE --version 2> /dev/null \
| $GREP po4a | $AWK '{print $3}' | $SED 's/.$//'`
AX_COMPARE_VERSION([$po4a_version], [ge], [0.37],
- [gnun_cv_recent_po4a=yes])
- ])
- else
- gnun_cv_recent_po4a=no
- fi
-else
- gnun_cv_recent_po4a=no
-fi
+ [gnun_cv_recent_po4a=yes])])
+])
+# Po4a is useless for our purpose if awk is missing.
+recent_po4a=$gnun_cv_recent_po4a
+AS_CASE([$decent_awk], [no], [recent_po4a=no])
-AC_PATH_PROG([MAIL], [mail])
+AX_ARG_PROG([MAIL], [the `mail' program], [mail])
# This test is currently unnecessary, but might be useful if we rely
# on GNU Mailutils features in the future.
@@ -342,17 +340,12 @@
AC_MSG_RESULT([$have_dtds])
fi
])])
-rm -f conftest.html
-AC_ARG_VAR([SORT], [the `sort' program])
-AC_PATH_PROG([SORT], [sort], [no])
-have_sort=yes
-AS_CASE([$SORT], [no], [have_sort=no])
-
-AC_ARG_VAR([LOCALEDEF], [the `localedef' program])
-AC_PATH_PROG([LOCALEDEF], [localedef], [no])
-have_localedef=yes
-AS_CASE([$LOCALEDEF], [no], [have_localedef=no])
+AX_ARG_PROG([SORT], [the `sort' program], [sort])
+AS_CASE(["x$SORT"], [x], [have_sort=no], [have_sort=yes])
+
+AX_ARG_PROG([LOCALEDEF], [the `localedef' program], [localedef])
+AS_CASE(["x$LOCALEDEF"], [x], [have_localedef=no], [have_localedef=yes])
AC_SUBST([LOCALEDEF], [$LOCALEDEF])
have_sorted_lists=no
@@ -367,10 +360,10 @@
AM_CONDITIONAL([HAVE_VALIDATION], [test "$have_validation" = yes])
AM_CONDITIONAL([NO_DTD], [test "$have_dtds" = no])
-AM_CONDITIONAL([HAVE_PO4A], [test "$gnun_cv_recent_po4a" = yes])
+AM_CONDITIONAL([HAVE_PO4A], [test "$recent_po4a" = yes])
AC_CONFIG_FILES([Makefile doc/Makefile dtd/Makefile config.mk])
-AS_CASE(["$decent_gettext-$gnun_cv_recent_po4a"], [yes-yes],
+AS_CASE(["$decent_gettext-$recent_po4a"], [yes-yes],
[AC_CONFIG_FILES([gnun-preconvert])])
AS_CASE([$have_validation], [yes],
[AC_CONFIG_FILES([expand-ssi.awk])])
@@ -379,17 +372,38 @@
cat <<EOF
m4_text_box([Results])
+Basic make operations... $decent_make
+PO files manipulation, make report... $decent_gettext
+gnun-add-fuzzy-diff... $have_wdiff
+POT/HTML generation... $recent_po4a
+HTML validation... $have_validation
+NOTIFY/ANNOUNCE support... $have_mail
+VCS support... $have_vcs $cvs $svn $bzr
+Use Multiviews naming conventions... $enable_multiviews
+Sorting support $have_sorted_lists
+
+Type "make" to build the scripts, "make install" to install them
+along with the manuals, and "make installcheck" to run tests.
+
EOF
-echo "Basic make operations... $decent_make"
-echo "PO files manipulation, make report... $decent_gettext"
-echo "gnun-add-fuzzy-diff... $have_wdiff"
-echo "POT/HTML generation... $gnun_cv_recent_po4a"
-echo "HTML validation... $have_validation"
-echo "NOTIFY/ANNOUNCE support... $have_mail"
-echo "VCS support... $have_vcs $cvs $svn $bzr"
-echo "Use Multiviews naming conventions... $enable_multiviews"
-echo "Sorting support $have_sorted_lists"
-echo
-echo \
-"Type \"make\" to build the scripts, \"make install\" to install them
-along with the manuals, and \"make installcheck\" to run tests."
+
+AS_CASE([$decent_date], [no],
+[AC_MSG_WARN([
+
+The `date' program seems to support no `-d' option.
+
+We rely on it when delaying pages regeneration; this feature may not
+work for you.
+
+])])
+
+AS_CASE([$buggy_sed], [yes], [
+AC_MSG_WARN([
+
+The `sed' program seems be affected by the bug discussed in
+https://lists.gnu.org/archive/html/bug-sed/2017-01/msg00018.html
+(known in GNU Sed 4.3 when used with UTF-8 locales).
+
+Replace sed or use the C locale.
+
+])])
Index: m4/ax_arg_prog.m4
===================================================================
RCS file: m4/ax_arg_prog.m4
diff -N m4/ax_arg_prog.m4
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ m4/ax_arg_prog.m4 20 Jan 2017 18:34:46 -0000 1.1
@@ -0,0 +1,32 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+
+# This file is part of GNUnited Nations.
+
+# GNUnited Nations is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# GNUnited Nations is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GNUnited Nations. If not, see <http://www.gnu.org/licenses/>.
+
+# SYNOPSIS
+#
+# AX_ARG_PROG(VAR, DESCRIPTION, PROG)
+#
+# DESCRIPTION
+#
+# Set variable VAR as a precious variable with DESCRIPTION,
+# when it's set, use its value in AC_PATH_PROG; otherwise
+# use PROG.
+
+AC_DEFUN([AX_ARG_PROG], [
+ AC_ARG_VAR([$1], [$2])
+ AS_CASE(["x$$1"], [x], [ax_arg_progs=$3], [ax_arg_progs=$$1])
+ AC_PATH_PROG([$1], [$ax_arg_progs])
+]) dnl AX_ARG_PROG
Index: m4/ax_arg_progs.m4
===================================================================
RCS file: m4/ax_arg_progs.m4
diff -N m4/ax_arg_progs.m4
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ m4/ax_arg_progs.m4 20 Jan 2017 18:34:46 -0000 1.1
@@ -0,0 +1,32 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+
+# This file is part of GNUnited Nations.
+
+# GNUnited Nations is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# GNUnited Nations is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GNUnited Nations. If not, see <http://www.gnu.org/licenses/>.
+
+# SYNOPSIS
+#
+# AX_ARG_PROGS(VAR, DESCRIPTION, PROGS)
+#
+# DESCRIPTION
+#
+# Set variable VAR as a precious variable with DESCRIPTION,
+# when it's set, use its value in AC_PATH_PROGS; otherwise
+# use PROGS.
+
+AC_DEFUN([AX_ARG_PROGS], [
+ AC_ARG_VAR([$1], [$2])
+ AS_CASE(["x$$1"], [x], [ax_arg_progs="$3"], [ax_arg_progs=$$1])
+ AC_PATH_PROGS([$1], [$ax_arg_progs])
+]) dnl AX_ARG_PROG
- trans-coord/gnun/server/gnun AUTHORS ChangeLog ...,
Pavel Kharitonov <=