#! /bin/sh # Copyright (C) 2008, 2010 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 . # Ensure `make dist' fails when help2man replacement man pages are created. # # The assumption here is the following: if the developer uses help2man to # generate man pages from --help output, then these man pages may not be # stored in VCS. However, they should be distributed, so that the end user # that receives the tarball doesn't have to install help2man. If they are # not distributed, then the developer should make help2man a prerequisite # to building the package from a tarball, e.g., with a configure check for # help2man that errors out if it is unavailable. In both cases it is # sufficient to check only distributed man pages. # # Idea of this whole shenanigan is to allow somebody to check out sources from # a VCS and build and install them without needing help2man installed. The # installed man pages will be bogus in this case. Typically, this happens # when developers ask users to try out a fix from VCS; the developers themselves # will usually have help2man installed (or should install it). . ./defs || Exit 1 set -e cat > Makefile.am << 'END' dist_man_MANS = $(srcdir)/foo.1 bar.1 dist_bin_SCRIPTS = foo bar $(srcdir)/foo.1: $(HELP2MAN) --output=$@ $(srcdir)/foo bar.1: $(HELP2MAN) --output=$(srcdir)/bar.1 $(srcdir)/bar ## It is a bug that we need to list $(srcdir)/bar.1 explicitly here. MAINTAINERCLEANFILES = $(dist_man_MANS) $(srcdir)/bar.1 END cat >>configure.in <<'END' AM_MISSING_PROG([HELP2MAN], [help2man]) AC_OUTPUT END cat > foo <<'END' #! /bin/sh while test $# -gt 0; do case $1 in -h | --help) echo "usage: $0 [OPTIONS]..."; exit 0;; -v | --version) echo "$0 1.0"; exit 0;; esac shift done END cp foo bar cat > help2man <<'END' #! /bin/sh # fake help2man script that lets `missing' think it is not installed exit 127 END chmod +x foo bar help2man save_PATH=$PATH PATH=`pwd`$PATH_SEPARATOR$PATH $ACLOCAL $AUTOMAKE $AUTOCONF ./configure $MAKE $MAKE dist && Exit 1 $MAKE distcheck && Exit 1 $MAKE distclean mkdir build cd build ../configure $MAKE $MAKE dist 2>stderr && { cat stderr >&2; Exit 1; } cat stderr >&2 grep 'install help2man' stderr $MAKE distcheck 2>stderr && { cat stderr >&2; Exit 1; } cat stderr >&2 grep 'install help2man' stderr rm -f ../help2man PATH=$save_PATH export PATH # If help2man is installed, then ensure that the recommendation works. if (help2man --version) >/dev/null 2>&1; then $MAKE maintainer-clean ../configure $MAKE $MAKE distcheck fi :