Re: Missing separator error can be caused by too many files in alternate recipe format
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)?
Re: Missing separator error can be caused by too many files in alternate recipe format
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.
Re: Missing separator error can be caused by too many files in alternate recipe format
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)
Re: Missing separator error can be caused by too many files in alternate recipe format
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) CORRECTION # causes problems dist_adminTemplates_DATA = $(admin_templates_files) $(dist_adminTemplates_DATA): Makefile @echo 'no-op for datafile' $@
Re: Missing separator error can be caused by too many files in alternate recipe format
It turns out it is not a bug--just general error/quirk. Okay, I found the error, and the reason why I been going insane over this over the past few hours. My filenames have semi-colons in them. That is what triggered the missing separator error. Makefile.am: # filename with semi-colons template_file = data;sectionfoo;foo-1 dist_pkgdata_DATA = $(template_file) # generated Makefile rule here would cause make crash $(dist_pkgdata_DATA): Makefile @echo 'no-op for datafile' $@ My solution is to use the transformation program option of Autotools (via configure.ac). Sorry for the inconvenience. -- penguindude24