Indeed, this is the first line of the Tupfiles section in the manual.
Not sure there is a good place for this really, but maybe under rules
would help.
TUPFILES
You must create a file called "Tupfile" anywhere in the tup
hierarchy that you want to create an output file based on the input
files. The input files can be anywhere else in the tup hierarchy,
*but the output file(s) must be written in the same directory as the
Tupfile*.
On 13/11/24 23:42, Sean Russell wrote:
Thanks! I'd looked at macros earlier, but ran into a different issue I
don't understand. Per the manual, both inputs and outputs should be
able to be specified in a macro:
*!macro = [inputs] | [order-only inputs] |> command |> [outputs]*
*
*
So, I'm thinking, at the top level in my Tuprules.tup:
!mmac = input.suf | ../../ooinp.suf |> compilecommand --style %d %i |>
../../tmp/%d-%B
and in my project/styles/style1/Tupfile:
include_rules
: |> !mmac |>
(because without the pipes bracketing the rule, tup complains about
missing pipes) at which point tup tells me that "/!-macros can't have
normal inputs, only order-only inputs./"
I also tried putting the input in the rule, and the order-only input
in the macro, but even with various combinations of pipe placement in
both the macro and the rule I never got anything other than the error
message about normal inputs.
Then I tried putting /all/ of the inputs in the rule, and only the
outfile in the Tuprules.tup, which is explicitly allowed in the manual:
*You will only want to specify the output parameter in either the
!-macro or the :-rule that uses it*
!mmac = |> compilecommand --style %d %i |> ../../tmp/%d-%B
and in the deep Tupfile:
include_rules
: input.suf | ../../ooinp.suf |> !mmac |>
which gives me a "Missing second '|>' marker" error; adding one to the
end of the macro, so that everything (except the start of the rule) is
now bracketed, still generates the missing second marker error.
However, if I put both *all* inputs and outputs in the rule, it runs
-- sort of. But now in complains that the top-level Tupfile rule that
uses the output of the deep Tupfile is "/Unable to use inputs from a
generated directory that isn't written by this Tupfile./" Here's
where I got stuck (I've trimmed it down to a bare minimum needed to
generate the error):
./Tupfile:
: foreach tmp/* |> cmd1 %f %o |> out/%B-%t.pdf
./Tuprules.tup:
!mmac = |> cmd2 %f %o |>
./styles/style/Tupfile:
include_rules
: input.ext | ../../ooinput.ext |> !mmac |> ../../tmp/%d-%B
I get the impression that macros can /only/ be used in the commands.
If that's not correct, could you provide a minimal example of
providing order-only inputs or outputs in a macro that demonstrates my
error? And is there a way of getting around this directory error?
Another rule in the top-level Tupfile to explicitly create temporary
directories?
Thank you.
--
--
tup-users mailing list
email: tup-users@googlegroups.com
unsubscribe: tup-users+unsubscr...@googlegroups.com
options: http://groups.google.com/group/tup-users?hl=en
---
You received this message because you are subscribed to the Google
Groups "tup-users" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to tup-users+unsubscr...@googlegroups.com.
To view this discussion visit
https://groups.google.com/d/msgid/tup-users/ba8db968-f957-40b0-bf38-c79f464e3a3fn%40googlegroups.com
<https://groups.google.com/d/msgid/tup-users/ba8db968-f957-40b0-bf38-c79f464e3a3fn%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
--
tup-users mailing list
email: tup-users@googlegroups.com
unsubscribe: tup-users+unsubscr...@googlegroups.com
options: http://groups.google.com/group/tup-users?hl=en
---
You received this message because you are subscribed to the Google Groups "tup-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to tup-users+unsubscr...@googlegroups.com.
To view this discussion visit
https://groups.google.com/d/msgid/tup-users/2db7afa7-5a19-4a70-aa52-e7db68be53e6%40gmail.com.