On Fri, Oct 02, 2015 at 21:23:14 -0400, Mike Shal wrote:
> The way variants were implemented has been a pain, because of the way it
> relied on the dependency checker to overlay the output directory with the
> source directory. This worked well with FUSE, but it's a pain to do in
> Windows and is preventing us from switching to LD_PRELOAD for OSX to avoid
> FUSE there.
An aside, but how is LD_PRELOAD going to work on 10.11? System binaries
(e.g., Python and likely the compiler) will no longer load unsigned
Mach-O files if SIP is enabled[1] (the default).
Dammit, I think this was just my fault, my PATH was not set correctly. As soon as I add the folder with *.exe and *.dll of tup to PATH, it works like a charm - at least for my small test ;)
--
--
tup-users mailing list
email: tup-...@googlegroups.com
unsubscribe: tup-users+...@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+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I had a little less success with this.I'm trying to build https://github.com/lab11/M-ulator/tree/master/simulatorWhen I used the explicit-variant branch, the first complaint tup had came from this Tupfile: https://github.com/lab11/M-ulator/blob/master/simulator/cpu/common/private_peripheral_bus/Tupfile#L3It said that the ppb.c and ppb.h files were unspecified output files, which I fixed by changing the output of that rule to:: gen_registers.py | exceptions *.conf |> python %f *.conf |> $(TUP_VARIANTDIR)/ppb.c $(TUP_VARIANTDIR)/ppb.hNext it identified that the explicitly name file ppb.h was scheduled to be deleted, easy fix, change the next line to:: ppb.c | $(TUP_VARIANTDIR)/ppb.h |> !cc |> %B.o ../../../<objs>Next, it had the same complaint about this Tupfile: https://github.com/lab11/M-ulator/blob/master/simulator/cpu/Tupfile#L3That is, that common/private_peripheral_bus/ppb.h was scheduled to be deleted. So I changed that rule to: foreach *.c | $(TUP_VARIANTDIR)/common/private_peripheral_bus/ppb.h |> !cc |> %B.o ../<objs>Unfortunately, that gave:tup error: Unable to use inputs from a generated directory (1899) that isn't written to by this Tupfile.I'm not really sure how to reconcile this?I thought it was a little bit weird that I had to specify TUP_VARIANTDIR on the outputs at all, felt like something that tup should've been able to figure out.
--
Ah, now I understand.While in most cases I think that specifying the output is fine, I'm sure there are naive tools out there that someone will want to use that won't let you specify an output path. Naive tools notwithstanding, it would also be very surprising / confusing for users when something basic-looking like : |> touch foo.txt |> foo.txt suddenly doesn't work with variants.I think having the non-parallel build/move path as a fallback is a good solution. Tup could emit a warning, something to the effect of, "WARN: <quote rule>, Rules with fixed output paths cannot build variants in parallel. To allow parallel builds, specify the output using %o in the rule, or explicitly using $(TUP_VARIANTDIR)/output_file"
--
What if you went the other direction? i.e. copy / hard-link the source files into the variant directories and execute the commands in the variant directories? This would also allow things to run in parallel still.
--