Subject: Long lines, short awk
From: "Daniel Richard G." <[email-masked]>
To: [email-masked]
Date: Tue, 13 Jan 2015 01:01:44 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello list,

I am building a source package, prepared with Automake 1.15, on HP-UX.
While running the configure script, I get

    [...]
    config.status: creating include/Makefile
    config.status: creating scripts/Makefile
    config.status: creating src/Makefile
    config.status: creating src/lib/Makefile
    awk: Input line         -rm -rf ../../src/l cannot be longer than 3,000 bytes.
     The input line number is 21137.
     The source line number is 235.
    config.status: error: could not create src/lib/Makefile

It so happens that src/lib/Makefile covers a large number of source
files, spread out across many directories. Line 21137 of Makefile.in is
the "-rm -rf" line shown below:

    distclean: distclean-am
            -rm -rf ../../src/lib/libobj/$(DEPDIR) foo/bar/$(DEPDIR) foo/baz/$(DEPDIR) ...

The line includes every single subdir-objects subdirectory known to the
makefile, and is well over 15kB long. The maintainer-clean target also
has an identical line.

I recognize that the usual thing to do here is specify e.g. AWK=gawk,
but other sections of the makefile (e.g. clean-libtool target) avoid
this issue altogether by specifying a series of short "rm" commands
instead of a single giant invocation. (Moreover, even if $AWK didn't
have a line-length limitation, the shell could still balk with an
"Argument list too long" error.) IMO, it is better to have the distclean
and maintainer-clean targets follow this same approach.

--Daniel

-- 
Daniel Richard G. || [email-masked]
My ASCII-art .sig got a bad case of Times New Roman.