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
#! /bin/sh
# Copyright (C) 2011-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 the parallel testsuite harness removes incomplete log files
# when interrupt upon some signal. This test is definitely too hacky,
# but we couldn't find a better way to deal with inter-processes
# signals and the whole process-synchronization mess.
. test-init.sh
plan_ 16
cat >> configure.ac << 'END'
AC_OUTPUT
END
cat > Makefile.am << 'END'
TESTS = foo.test
## Provide more debugging info.
TEST_LOG_COMPILER = $(SHELL) -ex
## Required by foo.test; see below.
AM_TESTS_FD_REDIRECT = 9>&1
END
# This is hacky and ugly, but has the great advantage of avoiding us a lot
# of pain with background processes and related synchronization issues.
cat - "$am_scriptdir"/test-driver > test-driver <<'END'
#!/bin/sh
echo $$ > pid
END
cat > foo.test << 'END'
#!/bin/sh -e
# We expect the test driver to be terminated by a signal, and so
# to exit with non-zero status, thus causing "make check" to fail.
# Exiting with status 0 from this test script is thus a good way to
# make unexpected behaviours more evident, since this will likely
# cause and unexpected success in "make check".
trap 'exit 0' 0;
stop_test () { exit 0; }
# We need the "foo is starting to run" string flushed to standard output
# ASAP, because we are soon going to grep for that string in the log file
# where the test driver is redirecting this script's stdout. The safest
# way force this flushing portably is to rely on perl I/O capabilities.
$PERL -e 'BEGIN { $| = 1 }; print "foo is starting to run\n"' || stop_test
ls -l >&9 || stop_test
bailout ()
{
# Print this to the original stdout (saved in the fd 9), so that the
# emitted "Bail out!" directive will be interpreted by the test driver
# running the Automake testsuite.
echo "Bail out! $*" >&9
stop_test
}
test $sig -gt 0 || bailout "\$sig not exported to test script"
res=ok; cat foo.log >&9 || res="not ok"
echo "$res - logfile created and readable [SIG $sig]" >&9
res=ok; grep '^foo is starting to run$' foo.log >&9 || res='not ok'
echo "$res - logfile contains output from test script [SIG $sig]" >&9
cat pid >&9 || bailout "cannot get PID of test driver"
kill -$sig `cat pid` || bailout "cannot send signal $sig to test driver"
stop_test
END
chmod a+x foo.test
$ACLOCAL || fatal_ "aclocal failed"
$AUTOCONF || fatal_ "autoconf failed"
$AUTOMAKE || fatal_ "automake failed"
./configure || fatal_ "./configure failed"
# The only signals that can be trapped portable are 1 "SIGHUP",
# 2 "SIGINT", 13 "SIGPIPE" and 15 "SIGTERM".
trapped_signals='1 2 13 15'
for sig in $trapped_signals; do
if is_blocked_signal $sig; then
for i in 1 2 3 4; do echo "ok # SKIP signal $sig is blocked"; done
continue
fi
rm -f pid fail *.log
r=ok; env PERL="$PERL" sig="$sig" $MAKE check && r='not ok'
echo "$r - signal $sig to test driver causes \"make check\" to fail"
ls -l
# These files shouldn't exist, but in case they do, their content might
# provide helpful information about the causes of the failure(s).
cat foo.log || :
cat test-suite.log || :
r=ok; ls | $EGREP 'foo.*\.(log|tmp)' && r='not ok'
echo "$r - test driver clean up log and tmp files after signal $sig"
done
: