Bug 18113

Summary: GDB 7.9 fails to build when makeinfo is not installed
Product: gdb Reporter: wpoely86
Component: buildAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED DUPLICATE    
Severity: normal CC: bugmenot, david.abdurachmanov, keiths, mephi42, tromey, wpoely86
Priority: P2    
Version: 7.9   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:

Description wpoely86 2015-03-11 13:21:22 UTC
This bug is more or less the same as https://sourceware.org/bugzilla/show_bug.cgi?id=14678 , only this one is for GDB 7.9.

If you don't have makeinfo installed, the make will fail:

make[5]: Entering directory `/home/ward/tmp/eb_sandbox_20150311_13-46-46_buOYR/GDB/7.9/GCC-4.9.2/gdb-7.9/gdb/doc'
(test "ln -s" = "ln -s" && \
	  ln -s ./all-cfg.texi gdb-cfg.texi) || \
	ln ./all-cfg.texi gdb-cfg.texi || \
	cp ./all-cfg.texi gdb-cfg.texi
date=`sed -n -e 's/^.* BFD_VERSION_DATE \(.*\)$/\1/p' ./../../bfd/version.h`; \
	sed -e "s/DATE/$date/" < ./../version.in > version.subst
echo "@set GDBVN `sed q version.subst`" > ./GDBvn.new
if [ -n "(GDB) " ]; then \
	  echo "@set VERSION_PACKAGE (GDB) " >> ./GDBvn.new; \
	fi
echo "@set BUGURL @uref{http://www.gnu.org/software/gdb/bugs/}" >> ./GDBvn.new
if [ "@uref{http://www.gnu.org/software/gdb/bugs/}" = "@uref{http://www.gnu.org/software/gdb/bugs/}" ]; then \
	  echo "@set BUGURL_DEFAULT" >> ./GDBvn.new; \
	fi
if test -z "-I ./../../readline/doc"; then \
	  echo "@set SYSTEM_READLINE" >> ./GDBvn.new; \
	fi
if [ -n "" ]; then \
	  echo "@set SYSTEM_GDBINIT " >> ./GDBvn.new; \
	fi
mv GDBvn.new GDBvn.texi
/home/ward/tmp/eb_sandbox_20150311_13-46-46_buOYR/GDB/7.9/GCC-4.9.2/gdb-7.9/missing makeinfo --split-size=5000000 --split-size=5000000   -I ./../../readline/doc -I ./../mi -I . \
		-o gdb.info ./gdb.texinfo
/home/ward/tmp/eb_sandbox_20150311_13-46-46_buOYR/GDB/7.9/GCC-4.9.2/gdb-7.9/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:
         <http://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:
         <http://www.gnu.org/software/make/>
make[5]: *** [gdb.info] Error 127
make[5]: Leaving directory `/home/ward/tmp/eb_sandbox_20150311_13-46-46_buOYR/GDB/7.9/GCC-4.9.2/gdb-7.9/gdb/doc'
make[4]: *** [subdir_do] Error 1
make[4]: Leaving directory `/home/ward/tmp/eb_sandbox_20150311_13-46-46_buOYR/GDB/7.9/GCC-4.9.2/gdb-7.9/gdb'
make[3]: *** [install-only] Error 2
make[3]: Leaving directory `/home/ward/tmp/eb_sandbox_20150311_13-46-46_buOYR/GDB/7.9/GCC-4.9.2/gdb-7.9/gdb'
make[2]: *** [install] Error 2
make[2]: Leaving directory `/home/ward/tmp/eb_sandbox_20150311_13-46-46_buOYR/GDB/7.9/GCC-4.9.2/gdb-7.9/gdb'
make[1]: *** [install-gdb] Error 2
make[1]: Leaving directory `/home/ward/tmp/eb_sandbox_20150311_13-46-46_buOYR/GDB/7.9/GCC-4.9.2/gdb-7.9'
make: *** [install] Error 2


This is because the missing script passes the return code (127) from the failed call to makeinfo to make. Setting MAKEINFO=true (or false) will not help because the configure script does a version check on makeinfo.
Comment 1 mephi42 2015-09-03 14:05:03 UTC
This also affects GDB 7.10. Here is the one-liner that reproduces the issue:

docker run -i -t centos:centos6 sh -c "yum -y install gcc make tar xz && curl http://ftp.gnu.org/gnu/gdb/gdb-7.10.tar.xz | tar -xJ && cd gdb-7.10 && ./configure && make && make install"

My workaround:

    echo '#!/bin/sh'                          >makeinfo && \
    echo 'echo "makeinfo (GNU texinfo) 5.2"' >>makeinfo && \
    chmod a+x makeinfo && \
    ./configure MAKEINFO=`realpath ./makeinfo` && \
    make && \
    make install
Comment 2 David Abdurachmanov 2015-09-03 14:11:13 UTC
Here is mine: https://github.com/cms-sw/cmsdist/blob/IB/CMSSW_7_6_X/next/gdb-disable-makeinfo.patch (probably not good for upstream)

Basically if MAKEINFO is true, keep it as-is and ignore resetting MAKEINFO to something else.
Comment 3 Keith Seitz 2016-05-17 17:29:44 UTC
Reclassifying to build/.
Comment 4 Tom Tromey 2022-02-22 15:19:03 UTC
Dup.

*** This bug has been marked as a duplicate of bug 14678 ***
Comment 5 John Doe 2023-08-25 17:48:12 UTC
Rechecked with GDB 13.1, texinfo seems to be still necessary. :-/

using https://ftp.gnu.org/gnu/gdb/gdb-13.1.tar.xz 

$ cd /tmp
$ tar xf gdb-13.1.tar.gz
$ mkdir gdb-13.1/build
$ cd gdb-13.1/build
$ ../configure --prefix=/opt/gdb-13.1 --with-python --with-lzma
$ gmake -k  # output ignored
$ gmake 
gmake[1]: Entering directory `/tmp/gdb-13.1/build'
gmake[2]: Entering directory `/tmp/gdb-13.1/build/libiberty'
gmake[3]: Entering directory `/tmp/gdb-13.1/build/libiberty/testsuite'
gmake[3]: Nothing to be done for `all'.
gmake[3]: Leaving directory `/tmp/gdb-13.1/build/libiberty/testsuite'
gmake[2]: Leaving directory `/tmp/gdb-13.1/build/libiberty'
gmake[2]: Entering directory `/tmp/gdb-13.1/build/intl'
gmake[2]: Nothing to be done for `all'.
gmake[2]: Leaving directory `/tmp/gdb-13.1/build/intl'
gmake[2]: Entering directory `/tmp/gdb-13.1/build/zlib'
gmake[2]: Nothing to be done for `all'.
true "AR_FLAGS=rc" "CC_FOR_BUILD=gcc -std=gnu99" "CFLAGS=-g -O2    " "CXXFLAGS=-g -O2    " "CFLAGS_FOR_BUILD=-g -O2" "CFLAGS_FOR_TARGET=-g -O2" "INSTALL=/bin/install -c" "INSTALL_DATA=/bin/install -c -m 644" "INSTALL_PROGRAM=/bin/install -c" "INSTALL_SCRIPT=/bin/install -c" "LDFLAGS=" "LIBCFLAGS=-g -O2  " "LIBCFLAGS_FOR_TARGET=-g -O2" "MAKE=gmake" "MAKEINFO=/tmp/gdb-13.1/missing makeinfo --split-size=5000000 --split-size=5000000 " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "EXPECT=expect" "RUNTEST=runtest" "RUNTESTFLAGS=" "exec_prefix=/opt/gdb-13.1" "infodir=/opt/gdb-13.1/share/info" "libdir=/opt/gdb-13.1/lib" "prefix=/opt/gdb-13.1" "tooldir=/opt/gdb-13.1/x86_64-pc-linux-gnu" "AR=ar " "AS=as" "CC=gcc -std=gnu99" "CXX=g++" "LD=ld" "LIBCFLAGS=-g -O2  " "NM=nm" "PICFLAG=" "RANLIB=ranlib " "DESTDIR=" DO=all multi-do # gmake
gmake[2]: Leaving directory `/tmp/gdb-13.1/build/zlib'
gmake[2]: Entering directory `/tmp/gdb-13.1/build/libsframe'
gmake  all-am
gmake[3]: Entering directory `/tmp/gdb-13.1/build/libsframe'
gmake[3]: Leaving directory `/tmp/gdb-13.1/build/libsframe'
gmake[2]: Leaving directory `/tmp/gdb-13.1/build/libsframe'
gmake[2]: Entering directory `/tmp/gdb-13.1/build/bfd'
Making info in po
gmake[3]: Entering directory `/tmp/gdb-13.1/build/bfd/po'
gmake[3]: Nothing to be done for `info'.
gmake[3]: Leaving directory `/tmp/gdb-13.1/build/bfd/po'
gmake[3]: Entering directory `/tmp/gdb-13.1/build/bfd'
  MAKEINFO doc/bfd.info
/tmp/gdb-13.1/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:
         <http://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:
         <http://www.gnu.org/software/make/>
gmake[3]: *** [doc/bfd.info] Error 127
gmake[3]: Leaving directory `/tmp/gdb-13.1/build/bfd'
gmake[2]: *** [info-recursive] Error 1
gmake[2]: Leaving directory `/tmp/gdb-13.1/build/bfd'
gmake[1]: *** [all-bfd] Error 2
gmake[1]: Leaving directory `/tmp/gdb-13.1/build'
gmake: *** [all] Error 2


So I think the bug should be reopened.