automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Missing separator error can be caused by too many files in alternate


From: PenguinDude24
Subject: Re: Missing separator error can be caused by too many files in alternate recipe format
Date: Tue, 27 May 2014 17:56:11 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130116 Icedove/10.0.12

On 05/27/2014 07:21 AM, Paul Smith wrote:
On Mon, 2014-05-26 at 20:46 -0400, PenguinDude24 wrote:
What I think happened is that obviously there was some internal error
with heuristics that GNU Make (and most likely others), and the
heuristics engine could not figure out how to parse that long line
(maybe was not expecting data to be so long, or programmer so stupid
to do that) and threw the error.

GNU make supports an arbitrary number of targets and prerequisites, up
to the size of your computer's memory.  There are no (known) hardcoded
limits.

And, an error like "missing separator" is not what I would expect to see
if the problem were related to some out of bounds error.

Instead, I expect that either there's some issue with the way automake
generated the makefile, or else some issue with the filenames in the
target list, or a bug in GNU make related to heap management.

The only way to know is if you give us the details necessary to
understand the problem.  What version of automake are you using?  What
version of GNU make?  And, what is the (exact) contents of the line
which is causing make to throw an error (and a few lines before/after
it, for context)?


It could be the way Automake generated the Makefile.

Although I had an issue with this, I resolved it by omitting a recipe to make the data file (both Make and Automake). No data files are "built," but just needed them to be moved into pkgdatadir by Autotools.

I cannot put raw sources in here because of confidentiality reasons, but here is a "foo example" of what I have with real raw text changed.

Makefile.am:
# ----------

pluginsdir = $(pkgdatadir)/plugins

dist_plugins_DATA = plugin-1 plugin-2

messagesPlugindir = $(pluginsdir)/messages

messagesPluginTemplatesdir = $(messagesPlugindir)/templates

# Here is the supposed text that causes issues. This project I'm on has hundreds of template files (not my idea) messages_actual_data_files = data-file-1 data-file-2 ... data-file-300 .. data-file-nnn

dist_messagesPluginTemplates_DATA = $(messages_actual_data_files)

# FORM1 -- recipe that caused GNU Make crash, i.e "missing separator line nnn'
# The target here is over two hundred or so data files (templates). The
# generated line is pretty printed by automake it seems, because it has
# formatting I did not put in there.
$(dist_messagesPluginTemplates_DATA): Makefile
        @echo 'no-op for data file' $@

#   FORM2 -- no crash with this one, but rule is not run because Makefile
# exists and is newer than dependencies.
Makefile: $(dist_messagesPluginTemplates_DATA)
        @echo 'no-op for data file' $@

I must add that in the generated Makefile, the output seems to be pretty printed like so:

#   line 345_example
$(dist_directory_DATA) = \
        target_foo-1 \
        target_foo-2 \
        target_foo-3 \
        ... \
        target_foo-n

And Make complains of error on line 345_example. Also, in the Makefile.am that I made the variable declaration for that target, I added some minor pretty printing, and automake error checking (nor GNU Emacs)did not complain about it, and it ran until that line. Then the make(1) crash.

Hit me up if you have any Q's.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]