123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #! /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/>.
- # Check that automake really automatically distributes all the files
- # it advertises to do, even when in subdirectories.
- #
- # This behavior might be suboptimal, but it has been in place for quite
- # a long time, and it would be risky to change it now. See also the
- # discussion of automake bug#7819:
- # <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7819>
- #
- # Keep this test in sync with sister test 'autodist.sh'.
- . test-init.sh
- cat >> configure.ac <<'END'
- AC_CONFIG_FILES([sub/Makefile])
- AC_OUTPUT
- END
- $ACLOCAL
- $AUTOCONF
- # The automake manual states that the list of automatically-distributed
- # files should be given by 'automake --help'.
- list=$($AUTOMAKE --help \
- | sed -n '/^Files.*automatically distributed.*if found.*always/,/^ *$/p' \
- | sed 1d)
- # Normalize whitespace, just in case.
- list=$(echo $list)
- test -n "$list"
- cat > Makefile.am <<'END'
- SUBDIRS = sub
- check-local:
- ## For debugging.
- @echo DIST_COMMON:
- @for f in $(DIST_COMMON); do echo " $$f"; done
- @echo DISTDIR:
- @ls -l $(distdir) | sed 's/^/ /'
- ## Now the checks.
- @for f in $(autodist_list); do \
- echo "file: sub/$$f"; \
- test -f $(distdir)/sub/$$f \
- || { echo $$f: distdir fail >&2; exit 1; }; \
- done
- END
- mkdir sub
- cat > sub/Makefile.am <<'END'
- include distfiles.am
- check-local:
- ## For debugging.
- @echo DIST_COMMON:
- @for f in $(DIST_COMMON); do echo " $$f"; done
- @echo DISTDIR:
- @ls -l $(distdir) | sed 's/^/ /'
- ## Now the checks.
- @for f in $(autodist_list); do \
- echo "file: $$f"; \
- ## Some filenames might contain dots, but this won't cause spurious
- ## failures, and "spurious successes" are so unlikely that they're
- ## not worth worrying about.
- echo ' ' $(DIST_COMMON) ' ' | grep "[ /]$$f " >/dev/null \
- || { echo $$f: distcom fail >&2; exit 1; }; \
- done
- END
- : First try listing the automatically-distributed files in proper
- : targets in Makefile.am
- echo "MAINTAINERCLEANFILES = $list" > sub/distfiles.am
- for f in $list; do echo "$f :; touch $f"; done >> sub/distfiles.am
- cat sub/distfiles.am # For debugging.
- $AUTOMAKE -a
- ./configure
- $MAKE distdir
- autodist_list="$list" $MAKE check
- $MAKE maintainer-clean
- test ! -e sub/README # Sanity check.
- rm -rf $me-1.0 # Remove $(distdir).
- : Now try creating the automatically-distributed files before
- : running automake.
- : > sub/distfiles.am
- for f in $list; do
- echo dummy > sub/$f
- done
- ls -l # For debugging.
- $AUTOMAKE
- ./configure
- $MAKE distdir
- autodist_list="$list" $MAKE check
- :
|