On 05/27/2014 05:56 PM, PenguinDude24 wrote:
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.
Just did some invistigation.
Does not appear to be length related, seems to be data filename related.
My filenames have semi-colons in them and yes I did escape them (as-is
text):
admin_files = some-file.dat
admin_templates_files = Admin/templates/adminLoginForm;admin;default
Admin/templates/blockEdit\;admin\;default
Admin/templates/colorEdit\;admin\;default
Admin/templates/data\;admin\;default
Admin/templates/editbuttons\;admin\;default
Admin/templates/editFilter\;admin\;default
Admin/templates/editStory\;admin\;default
Admin/templates/ispellok\;admin\;default
Admin/templates/keywordEdit\;admin\;default
Admin/templates/listFilters\;admin\;default
Admin/templates/listStories\;admin\;default
Admin/templates/messages\;admin\;default
Admin/templates/otherLinks\;admin\;default
Admin/templates/relatedlinks\;admin\;default
Admin/templates/siteInfo\;admin\;default
Admin/templates/templateEdit\;admin\;default
Admin/templates/titles\;admin\;default
Admin/templates/topicEdit\;admin\;default
Admin/templates/varEdit\;admin\;default
dist_admin_DATA = $(admin_files)
# make dies here
dist_adminTemplates_DATA = $(admin_templates_files)