after Linux upgrade: option for touching filestamps when writing no changes? generated file names with caps

3 views
Skip to first unread message

Gáspár Erdélyi

unread,
Jun 15, 2020, 4:05:49 PM6/15/20
to BNFC Developers and Users
Hello,

  After a long while I have moved from one pretty old linux release to a newer one...
  And I have had some troubles migrating my bnfc + alex + happy + uuagc compiler.

  First and foremost I would suggest at least an option that when bnfc does no change to a file then update the access and change timestamp of the file -- or it could be better the default behavior and have an option not to touch the timestamps?
  It is a nice feature not to write change when not necessary but it screws up the order of timestamps in my -- own, manual -- Makefile, causing always recompiling lots of stuff.
workaround is touch --reference-file=<name.cf> Par<Name>.y
  Simply a make after previous make will start recompiling the file that was not changed, and then the whole story begins from scratch. Better touch the timestamp!

plus, the change in the file naming, template.cf -> LexTemplate.x and LexTemplate.y instead of Lextemplate.x and Lextemplate.y has finally reached meI have used the $(prog) in many places in my makefiles and that got simply not working any more... it was so easy to have a base makefile and use it as an include makefile just changing $(prog) here and there...
Thinking about starting everything in caps and then copy the final binary to small caps for linux convention... The fun is in maintain my imports in the Haskell sources, too...
Conclusion -- I think it is a very bad idea -- maybe not bad enough bad to worth changing it back -- but never do something like that again, please!

Best regards,
Gaspar

Andreas Abel

unread,
Jun 16, 2020, 8:31:28 AM6/16/20
to bnfc...@googlegroups.com, Gáspár Erdélyi
Hello Gáspár,

thanks for using BNFC and providing feedback!

> Better touch the timestamp!

I observed the same trouble as you and thus changed BNFC to always
update the time stamps:

https://github.com/BNFC/bnfc/issues/219

This was released with BNFC 2.8.2, maybe you need to update your version
of BNFC? If this does not work, please report an issue or reopen the
issue above.

> plus, the change in the file naming, template.cf ->
> LexTemplate.x and LexTemplate.y instead of Lextemplate.x and
> Lextemplate.y has finally reached me

For case issues in Makefiles, maybe some of the techniques here


https://stackoverflow.com/questions/664601/in-gnu-make-how-do-i-convert-a-variable-to-lower-case

can remedy your problem.

In general, if you are using the Haskell backend of BNFC, I recommend
using the -d option which places the generated files in a subdirectory
(Template in your case) rather than placing them in the same directory.

Cheers,
Andreas



On 2020-06-15 22:05, Gáspár Erdélyi wrote:
> Hello,
>
>   After a long while I have moved from one pretty old linux release to
> a newer one...
>   And I have had some troubles migrating my bnfc + alex + happy + uuagc
> compiler.
>
>   First and foremost I would suggest at least an option that when bnfc
> does no change to a file then update the access and change timestamp of
> the file -- or it could be better the default behavior and have an
> option not to touch the timestamps?
>   It is a nice feature not to write change when not necessary but it
> screws up the order of timestamps in my -- own, manual -- Makefile,
> causing always recompiling lots of stuff.
> workaround is touch --reference-file=<name.cf <http://name.cf>> Par<Name>.y
>   Simply a make after previous make will start recompiling the file
> that was not changed, and then the whole story begins from scratch.
> Better touch the timestamp!
>
> plus, the change in the file naming, template.cf <http://template.cf> ->
> LexTemplate.x and LexTemplate.y instead of Lextemplate.x and
> Lextemplate.y has finally reached meI have used the $(prog) in many
> places in my makefiles and that got simply not working any more... it
> was so easy to have a base makefile and use it as an include makefile
> just changing $(prog) here and there...
> Thinking about starting everything in caps and then copy the final
> binary to small caps for linux convention... The fun is in maintain my
> imports in the Haskell sources, too...
> Conclusion -- I think it is a very bad idea -- maybe not bad enough bad
> to worth changing it back -- but never do something like that again, please!
>
> Best regards,
> Gaspar
>
> --
> You received this message because you are subscribed to the Google
> Groups "BNFC Developers and Users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to bnfc-dev+u...@googlegroups.com
> <mailto:bnfc-dev+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/bnfc-dev/CAOrh209kKXf5oW2QJFhmZ%3DDDjb%3Dtn9fn4OyAaHaTLj1HHPC%3Dyw%40mail.gmail.com
> <https://groups.google.com/d/msgid/bnfc-dev/CAOrh209kKXf5oW2QJFhmZ%3DDDjb%3Dtn9fn4OyAaHaTLj1HHPC%3Dyw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
Reply all
Reply to author
Forward
0 new messages