## Problem description
Fetching the Pinentry source code from Git repository, and then executing:
```
./configure --enable-maintainer-mode --disable-doc
```
produces following warning:
```
configure: WARNING: unrecognized options: --disable-doc
```
Configure script succeeds, however subsequent execution of:
```
make
```
fails with:
```
/usr/local/src/gpg-build-scripts/build/pinentry/build-aux/missing: line 81: makeinfo: command not found
WARNING: 'makeinfo' is missing on your system.
You should only need it if you modified a '.texi' file, or
any other file indirectly affecting the aspect of the manual.
You might want to install the Texinfo package:
<https://www.gnu.org/software/texinfo/>
The spurious makeinfo call might also be the consequence of
using a buggy 'make' (AIX, DU, IRIX), in which case you might
want to install GNU make:
<https://www.gnu.org/software/make/>
Makefile:404: recipe for target 'pinentry.info' failed
make[2]: *** [pinentry.info] Error 127
make[2]: Leaving directory '/usr/local/src/gpg-build-scripts/build/pinentry/doc'
```
Taking into account that most of other components do support `--disable-doc` option, and that this option removes plenty of dependencies (including Makeinfo), I believe that current behavior is a bug.
## Steps to reproduce the issue
In a fresh instance of Ubuntu Xenial (booted with `docker run -it ubuntu:xenial /bin/bash`):
```
apt-get update
apt-get install -y automake bison gettext git
# < Install Pinentry prerequisites from Git with `--disable-doc` configure option
# (I am not 100% sure which ones, I had libgpg-error, libgcrypt, libassuan, libksba,
# and npth all installed). >
git clone git://git.gnupg.org/pinentry
cd pinentry
./autogen.sh
./configure --enable-maintainer-mode --disable-doc
make
```
## Expected behaviour
Pinentry should does not build documentation if `--disable-doc` has been passed to a `./configure` script.
## My Bash session
Here goes full record of my Bash session in fresh instance of Ubuntu Xenial from Docker image. Prerequisite GnuPG components (libgpg-error, libassuan, etc.) have been installed from Git head as well, but this is not shown here.
```
root@7194e484ac61:/usr/local/src/gpg-build-scripts/build# git clone git://git.gnupg.org/pinentry
Cloning into 'pinentry'...
remote: Counting objects: 3206, done.
remote: Compressing objects: 100% (3193/3193), done.
remote: Total 3206 (delta 2245), reused 0 (delta 0)
Receiving objects: 100% (3206/3206), 1.20 MiB | 764.00 KiB/s, done.
Resolving deltas: 100% (2245/2245), done.
Checking connectivity... done.
root@7194e484ac61:/usr/local/src/gpg-build-scripts/build# cd pinentry/
root@7194e484ac61:/usr/local/src/gpg-build-scripts/build/pinentry# ./autogen.sh
*** Activating trailing whitespace git pre-commit hook. ***
For more information see this thread:
https://mail.gnome.org/archives/desktop-devel-list/2009-May/msg00084.html
To deactivate this pre-commit hook again move .git/hooks/pre-commit
and .git/hooks/pre-commit.sample out of the way.
'.git/hooks/pre-commit.sample' -> '.git/hooks/pre-commit'
autogen.sh: Running aclocal -I m4 ...
autogen.sh: Running autoheader...
autogen.sh: Running automake --gnu ...
autogen.sh: Running autoconf ...
autogen.sh: You may now run:
./configure --enable-maintainer-mode && make
root@7194e484ac61:/usr/local/src/gpg-build-scripts/build/pinentry# ./configure --enable-maintainer-mode --disable-doc
configure: WARNING: unrecognized options: --disable-doc
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking whether make sets $(MAKE)... (cached) yes
checking whether build environment is sane... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking how to run the C preprocessor... gcc -E
checking for ranlib... ranlib
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking whether ln -s works... yes
checking for pkg-config... no
checking for windres... no
checking for gitlog-to-changelog... no
checking if gcc ignores unknown -Wno-* options... yes
checking if gcc supports -Wdeclaration-after-statement... yes
checking if gcc supports -Wpointer-arith... yes
checking for ANSI C header files... (cached) yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking termio.h usability... yes
checking termio.h presence... yes
checking for termio.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking wchar.h usability... yes
checking wchar.h presence... yes
checking for wchar.h... yes
checking for seteuid... yes
checking for stpcpy... yes
checking for mmap... yes
checking for stat... yes
checking for mlock... yes
checking whether mlock is broken... no
checking for uint32_t... yes
checking for gpg-error-config... /usr/local/bin/gpg-error-config
checking for GPG Error - version >= 1.16... yes (1.33-beta55)
checking for libassuan-config... /usr/local/bin/libassuan-config
checking for LIBASSUAN - version >= 2.1.0... yes (2.5.2-beta26)
checking LIBASSUAN API version... okay
checking for byte typedef... no
checking for ulong typedef... yes
checking for setcap... /sbin/setcap
checking for cap_set_proc in -lcap... no
checking for ncursesw... checking for ncurses... checking for initscr in -lncursesw... no
checking for initscr in -lncurses... yes
checking for ncurses include dir... none
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for shared library run path origin... done
checking for iconv... yes
checking for iconv declaration...
extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking if Unix domain socket is supported... yes
checking for pkg-config... no
checking for gtk+-2.0 >= 2.4.0... ./configure: line 9647: no: command not found
./configure: line 9655: no: command not found
no
configure: WARNING: pkg-config could not find the module gtk+-2.0
checking for gcr-3,gcr-base-3... ./configure: line 9742: no: command not found
./configure: line 9750: no: command not found
no
configure: WARNING: pkg-config could not find the module gcr-3,gcr-base-3
checking for libsecret-1... ./configure: line 9848: no: command not found
./configure: line 9856: no: command not found
no
configure: WARNING: pkg-config could not find the module libsecret-1
checking for Qt5Core >= 5.0.0 Qt5Gui >= 5.0.0 Qt5Widgets >= 5.0.0... ./configure: line 9970: no: command not found
./configure: line 9978: no: command not found
no
./configure: line 9996: no: command not found
checking for QtCore >= 4.6.0 QtGui >= 4.6.0... ./configure: line 10425: no: command not found
./configure: line 10433: no: command not found
no
checking for fltk-config... no
configure: WARNING: fltk-config is not found
checking that generated files are newer than configure... done
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating m4/Makefile
config.status: creating secmem/Makefile
config.status: creating pinentry/Makefile
config.status: creating curses/Makefile
config.status: creating tty/Makefile
config.status: creating efl/Makefile
config.status: creating emacs/Makefile
config.status: creating gtk+-2/Makefile
config.status: creating gnome3/Makefile
config.status: creating qt/Makefile
config.status: creating tqt/Makefile
config.status: creating w32/Makefile
config.status: creating fltk/Makefile
config.status: creating doc/Makefile
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure: WARNING: unrecognized options: --disable-doc
configure:
Pinentry v1.1.1-beta12 has been configured as follows:
Revision: d0eaec8 (53482)
Platform: x86_64-pc-linux-gnu
Curses Pinentry ..: yes
TTY Pinentry .....: maybe
Emacs Pinentry ...: no
EFL Pinentry .....: no
GTK+-2 Pinentry ..: no
GNOME 3 Pinentry .: no
Qt Pinentry ......: no
TQt Pinentry .....: no
W32 Pinentry .....: no
FLTK Pinentry ....: no
Fallback to Curses: yes
Emacs integration : yes
libsecret ........: no
Default Pinentry .: pinentry-curses
root@7194e484ac61:/usr/local/src/gpg-build-scripts/build/pinentry# make
make all-recursive
make[1]: Entering directory '/usr/local/src/gpg-build-scripts/build/pinentry'
Making all in m4
make[2]: Entering directory '/usr/local/src/gpg-build-scripts/build/pinentry/m4'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/usr/local/src/gpg-build-scripts/build/pinentry/m4'
Making all in secmem
make[2]: Entering directory '/usr/local/src/gpg-build-scripts/build/pinentry/secmem'
gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wno-format-y2k -Wformat-security -W -Wno-sign-compare -Wno-missing-field-initializers -Wdeclaration-after-statement -Wno-pointer-sign -Wpointer-arith -MT secmem.o -MD -MP -MF .deps/secmem.Tpo -c -o secmem.o secmem.c
mv -f .deps/secmem.Tpo .deps/secmem.Po
gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wno-format-y2k -Wformat-security -W -Wno-sign-compare -Wno-missing-field-initializers -Wdeclaration-after-statement -Wno-pointer-sign -Wpointer-arith -MT util.o -MD -MP -MF .deps/util.Tpo -c -o util.o util.c
mv -f .deps/util.Tpo .deps/util.Po
rm -f libsecmem.a
ar cru libsecmem.a secmem.o util.o
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libsecmem.a
make[2]: Leaving directory '/usr/local/src/gpg-build-scripts/build/pinentry/secmem'
Making all in pinentry
make[2]: Entering directory '/usr/local/src/gpg-build-scripts/build/pinentry/pinentry'
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include -I/usr/local/include -I../secmem -Wall -g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wno-format-y2k -Wformat-security -W -Wno-sign-compare -Wno-missing-field-initializers -Wdeclaration-after-statement -Wno-pointer-sign -Wpointer-arith -MT pinentry.o -MD -MP -MF .deps/pinentry.Tpo -c -o pinentry.o pinentry.c
mv -f .deps/pinentry.Tpo .deps/pinentry.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include -I/usr/local/include -I../secmem -Wall -g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wno-format-y2k -Wformat-security -W -Wno-sign-compare -Wno-missing-field-initializers -Wdeclaration-after-statement -Wno-pointer-sign -Wpointer-arith -MT argparse.o -MD -MP -MF .deps/argparse.Tpo -c -o argparse.o argparse.c
mv -f .deps/argparse.Tpo .deps/argparse.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include -I/usr/local/include -I../secmem -Wall -g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wno-format-y2k -Wformat-security -W -Wno-sign-compare -Wno-missing-field-initializers -Wdeclaration-after-statement -Wno-pointer-sign -Wpointer-arith -MT password-cache.o -MD -MP -MF .deps/password-cache.Tpo -c -o password-cache.o password-cache.c
mv -f .deps/password-cache.Tpo .deps/password-cache.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include -I/usr/local/include -I../secmem -Wall -g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wno-format-y2k -Wformat-security -W -Wno-sign-compare -Wno-missing-field-initializers -Wdeclaration-after-statement -Wno-pointer-sign -Wpointer-arith -MT pinentry-emacs.o -MD -MP -MF .deps/pinentry-emacs.Tpo -c -o pinentry-emacs.o pinentry-emacs.c
mv -f .deps/pinentry-emacs.Tpo .deps/pinentry-emacs.Po
rm -f libpinentry.a
ar cru libpinentry.a pinentry.o argparse.o password-cache.o pinentry-emacs.o
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libpinentry.a
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include -I/usr/local/include -I../secmem -Wall -g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wno-format-y2k -Wformat-security -W -Wno-sign-compare -Wno-missing-field-initializers -Wdeclaration-after-statement -Wno-pointer-sign -Wpointer-arith -MT libpinentry_curses_a-pinentry-curses.o -MD -MP -MF .deps/libpinentry_curses_a-pinentry-curses.Tpo -c -o libpinentry_curses_a-pinentry-curses.o `test -f 'pinentry-curses.c' || echo './'`pinentry-curses.c
mv -f .deps/libpinentry_curses_a-pinentry-curses.Tpo .deps/libpinentry_curses_a-pinentry-curses.Po
rm -f libpinentry-curses.a
ar cru libpinentry-curses.a libpinentry_curses_a-pinentry-curses.o
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libpinentry-curses.a
make[2]: Leaving directory '/usr/local/src/gpg-build-scripts/build/pinentry/pinentry'
Making all in curses
make[2]: Entering directory '/usr/local/src/gpg-build-scripts/build/pinentry/curses'
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include -I/usr/local/include -I../pinentry -Wall -g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wno-format-y2k -Wformat-security -W -Wno-sign-compare -Wno-missing-field-initializers -Wdeclaration-after-statement -Wno-pointer-sign -Wpointer-arith -MT pinentry-curses.o -MD -MP -MF .deps/pinentry-curses.Tpo -c -o pinentry-curses.o pinentry-curses.c
mv -f .deps/pinentry-curses.Tpo .deps/pinentry-curses.Po
gcc -g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wno-format-y2k -Wformat-security -W -Wno-sign-compare -Wno-missing-field-initializers -Wdeclaration-after-statement -Wno-pointer-sign -Wpointer-arith -o pinentry-curses pinentry-curses.o ../pinentry/libpinentry.a ../pinentry/libpinentry-curses.a ../secmem/libsecmem.a -lassuan -L/usr/local/lib -lgpg-error -L/usr/local/lib -lgpg-error -lncurses
make[2]: Leaving directory '/usr/local/src/gpg-build-scripts/build/pinentry/curses'
Making all in doc
make[2]: Entering directory '/usr/local/src/gpg-build-scripts/build/pinentry/doc'
Updating ./version.texi
restore=: && backupdir=".am$$" && \
am__cwd=`pwd` && CDPATH="${ZSH_VERSION+.}:" && cd . && \
rm -rf $backupdir && mkdir $backupdir && \
if (/bin/bash /usr/local/src/gpg-build-scripts/build/pinentry/build-aux/missing makeinfo --version) >/dev/null 2>&1; then \
for f in pinentry.info pinentry.info-[0-9] pinentry.info-[0-9][0-9] pinentry.i[0-9] pinentry.i[0-9][0-9]; do \
if test -f $f; then mv $f $backupdir; restore=mv; else :; fi; \
done; \
else :; fi && \
cd "$am__cwd"; \
if /bin/bash /usr/local/src/gpg-build-scripts/build/pinentry/build-aux/missing makeinfo -I . \
-o pinentry.info pinentry.texi; \
then \
rc=0; \
CDPATH="${ZSH_VERSION+.}:" && cd .; \
else \
rc=$?; \
CDPATH="${ZSH_VERSION+.}:" && cd . && \
$restore $backupdir/* `echo "./pinentry.info" | sed 's|[^/]*$||'`; \
fi; \
rm -rf $backupdir; exit $rc
/usr/local/src/gpg-build-scripts/build/pinentry/build-aux/missing: line 81: makeinfo: command not found
WARNING: 'makeinfo' is missing on your system.
You should only need it if you modified a '.texi' file, or
any other file indirectly affecting the aspect of the manual.
You might want to install the Texinfo package:
<https://www.gnu.org/software/texinfo/>
The spurious makeinfo call might also be the consequence of
using a buggy 'make' (AIX, DU, IRIX), in which case you might
want to install GNU make:
<https://www.gnu.org/software/make/>
Makefile:404: recipe for target 'pinentry.info' failed
make[2]: *** [pinentry.info] Error 127
make[2]: Leaving directory '/usr/local/src/gpg-build-scripts/build/pinentry/doc'
Makefile:479: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/usr/local/src/gpg-build-scripts/build/pinentry'
Makefile:420: recipe for target 'all' failed
make: *** [all] Error 2
```