News for hackers. Stuff that matters.
Re:Redo: A recursive, general-purpose build system by w4rh4wk5 on Thursday December 30, 2021 @07:43AM (#29736252)
Thanks, the `!macro` thing seems to be what I was looking for. Having intermediary temporary files is of course fine.

The use-case at that time was to convert a LaTeX file containing a TIKZ image (therefore having a .tikz file extension) to an SVG which required compiling the LaTeX code to PDF, cropping the PDF and converting it to SVG. Since there were multiple occurrences of this across the project, I wanted to have that as a reusable "function" in the build system. I did not want to write a dedicated script for this because of portability issues (Shell vs. Batch).

Re:Redo: A recursive, general-purpose build system by robryk on Thursday December 30, 2021 @10:23AM (#29737427)
How does !macro rid you of that portability issue? One way or another, you'd need to have a command that does that whole sequence of operations. If it's inline, I'd expect same portability problem (`&&` in Bash corresponds to something else in `.bat`).
Re:Redo: A recursive, general-purpose build system by w4rh4wk5 on Thursday December 30, 2021 @02:20PM (#29740326)
You are right, glancing over the Man page I thought you could just specify multiple commands. But it doesn't seem like it. So, my problem persists.
Re:Redo: A recursive, general-purpose build system by robryk on Thursday December 30, 2021 @02:36PM (#29740497)
What you could do is use Tup's LUA support (you can write tupfiles and tuprules in LUA, and you can define and use LUA functions in them): have each rule handle just one step of your process, generate the whole necessary DAG of rules, encapsulate all of that in a LUA function defined in tuprules.lua and call that function in tupfile.lua for every diagram you want to generate. One thing that you lose is the ability to use `foreach` with your construction (other than by creating a variant of your constructions that embeds foreachness, or by using tup.glob and iterating).
Re:Redo: A recursive, general-purpose build system by w4rh4wk5 on Sunday January 02, 2022 @09:46AM (#29769085)
I specifically wanted to avoid the LUA support. As soon as we get there I'd rather go with Ruby and Rakefiles.