| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | #! /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 <http://www.gnu.org/licenses/>.# "make uninstall" complains and errors out on failures.# FIXME: this test only deal with DATA primary; maybe we need sister# tests for other primaries too?  E.g., SCRIPTS, PROGRAMS, LISP, PYTHON,# etc.... test-init.shmkdir d: > d/fchmod a-w d || skip "cannot make directories unwritable"# On Solaris 10, if '/bin/rm' is run with the '-f' option, it doesn't# print any error message when failing to remove a file (due to e.g.,# "Permission denied").  And it gets weirder.  On OpenIndiana 11, the# /bin/sh shell (in many respects a decent POSIX shell) seems to somehow# "eat" the error message from 'rm' in some situation, although the 'rm'# utility itself correctly prints it when invoked from (say) 'env' or# 'bash'.  Yikes.# We'll cater to these incompatibilities by relaxing a test below if# a faulty shell or 'rm' program is detected.st=0; $SHELL -c 'rm -f d/f' 2>stderr || st=$?cat stderr >&2test $st -gt 0 || skip_ "can delete files from unwritable directories"if grep 'rm:' stderr; then  rm_f_is_silent_on_error=noelse  rm_f_is_silent_on_error=yesficat >> configure.ac << 'END'AC_OUTPUTENDcat > Makefile.am << 'END'data_DATA = foobar.txtEND: > foobar.txt$ACLOCAL$AUTOMAKE$AUTOCONF# Weird name, to make it harder to experience false positives when# grepping error messages.inst=__inst-dir__./configure --prefix="$(pwd)/$inst"mkdir $inst $inst/share: > $inst/share/foobar.txtchmod a-w $inst/sharerun_make -M -e FAIL uninstallif test $rm_f_is_silent_on_error = yes; then  : "rm -f" is silent on errors, skip the grepping of make outputelse  grep "rm: .*foobar\.txt" outputfichmod a-rwx $inst/share(cd $inst/share) && skip_ "cannot make directories fully unreadable"run_make -M -e FAIL uninstall# Some shells, like Solaris 10 /bin/ksh and /usr/xpg4/bin/sh, do not# report the name of the 'cd' builtin upon a chdir error:##   $ /bin/ksh -c 'cd /none'#   /bin/ksh: /none: not found## and also print a line number in the error message *if the command# contains newlines*:##   $ /bin/ksh -c 'cd unreadable'#   /bin/ksh: unreadable: permission denied#   $ /bin/ksh -c '\#   > \#   > cd unreadable'#   /bin/ksh[3]: unreadable: permission denied$EGREP "(cd|sh)(\[[0-9]*[0-9]\])?: .*$inst/share" output:
 |