Hash :
3562e384
Author :
Date :
2017-09-16T13:03:36
Prefer https: URLs In Gnulib, Emacs, etc. we are changing ftp: and http: URLs to use https:, to discourage man-in-the-middle attacks when downloading software. The attached patch propagates these changes upstream to Automake. This patch does not affect files that Automake is downstream of, which I'll patch separately. Althouth the resources are not secret, plain HTTP is vulnerable to malicious routers that tamper with responses from GNU servers, and this sort of thing is all too common when people in some other countries browse US-based websites. See, for example: Aceto G, Botta A, Pescapé A, Awan MF, Ahmad T, Qaisar S. Analyzing internet censorship in Pakistan. RTSI 2016. https://dx.doi.org/10.1109/RTSI.2016.7740626 HTTPS is not a complete solution here, but it can be a significant help. The GNU project regularly serves up code to users, so we should take some care here.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
#! /bin/sh
# Copyright (C) 2013-2017 Free Software Foundation, Inc.
#
# This program 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 2, or (at your option)
# any later version.
#
# This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
# Check that uses of the obsolescent AM_PROG_CC_C_O macro doesn't
# cause spurious warnings or errors. Suggested by Eric Blake.
# We need gcc for for two reasons:
# 1. to ensure our C compiler grasps "-c -o" together.
# 2. to be able to later fake a dumb compiler not grasping that
# (done with 'cc-no-c-o' script below, which required gcc).
required=gcc
. test-init.sh
echo bin_PROGRAMS = foo > Makefile.am
echo 'int main (void) { return 0; }' > foo.c
cp configure.ac configure.bak
cat > acinclude.m4 <<'END'
AC_DEFUN([AM_TWEAKED_OUTPUT], [
# For debugging.
printf "CC = '%s'\\n" "$CC"
# Make sure that $CC can be used after AM_PROG_CC_C_O.
$CC --version || exit 1
$CC -v || exit 1
# $CC rewrite should only take place on time.
case " $CC " in
*" compile"*" compile"*) AC_MSG_ERROR([CC rewritten twice]);;
esac
AC_OUTPUT
])
END
# ---
cat configure.bak - > configure.ac << 'END'
dnl It's OK to call AM_PROG_CC_C_O after AC_PROG_CC.
AC_PROG_CC
AM_PROG_CC_C_O
AM_TWEAKED_OUTPUT
END
$ACLOCAL
$AUTOCONF
$AUTOMAKE --add-missing
./configure >stdout || { cat stdout; exit 1; }
cat stdout
if test "$AM_TESTSUITE_SIMULATING_NO_CC_C_O" != no; then
$EGREP 'understands? -c and -o together.* no$' stdout
else
$EGREP 'understands? -c and -o together.* yes$' stdout
fi
# No repeated checks please.
test $(grep -c ".*-c['\" ].*-o['\" ]" stdout) -eq 1
$MAKE
$MAKE maintainer-clean
rm -rf autom4te*.cache
# ---
cat configure.bak - > configure.ac << 'END'
dnl It's also OK to call AM_PROG_CC_C_O *before* AC_PROG_CC.
AM_PROG_CC_C_O
AC_PROG_CC
AM_TWEAKED_OUTPUT
END
$ACLOCAL
$AUTOCONF
$AUTOMAKE --add-missing
./configure >stdout || { cat stdout; exit 1; }
cat stdout
if test "$AM_TESTSUITE_SIMULATING_NO_CC_C_O" != no; then
$EGREP 'understands? -c and -o together.* no$' stdout
else
$EGREP 'understands? -c and -o together.* yes$' stdout
fi
# Repeated checks are OK in this case, but should be cached.
test $(grep ".*-c['\" ].*-o['\" ]" stdout \
| $FGREP -v ' (cached) ' | wc -l) -eq 1
$MAKE
$MAKE maintainer-clean
rm -rf autom4te*.cache
# ---
cat configure.bak - > configure.ac << 'END'
dnl It's also OK to call AM_PROG_CC_C_O *without* AC_PROG_CC.
AM_PROG_CC_C_O
AM_TWEAKED_OUTPUT
END
$ACLOCAL
$AUTOCONF
$AUTOMAKE --add-missing
# Make sure the compiler doesn't understand '-c -o'
CC=$am_testaux_builddir/cc-no-c-o; export CC
./configure >stdout || { cat stdout; exit 1; }
cat stdout
$EGREP 'understands? -c and -o together.* no$' stdout
# No repeated checks please.
test $(grep -c ".*-c['\" ].*-o['\" ]" stdout) -eq 1
$MAKE
: