Hmm.. good point. My next best suggestion for a workaround would be to install a post-commit hook that writes the hash to a header file.
HTH, -Pat On May 14, 2014 at 9:45:37, Gábor Márton ([email protected]) wrote: Hi, Thanks for your reply. I've tried you suggestion and it resulted a valid Tupfile. BUT, when I commit something into git and rerun tup upd than tup does not updates the target. Simply the dependency is not tracked. So we are again at the beginning, I think the only way to indicate the dependency from the actual git version is via .git/... hidden files. Is there any particular reason why tup forbids hidden files as input dependencies? Thanks again, Gábor On Tue, May 13, 2014 at 11:45 PM, Pat Pannuto <[email protected]> wrote: You can come pretty close without pointing at the actual git objects: $ cat Tupfile : foo.c |> gcc -DREV=\"`git rev-parse HEAD`\" %f -o foo |> %B $ cat foo.c #include <stdio.h> #ifndef REV #define REV "No Rev!" #endif int main() { printf("Rev: %s\n", REV); return 0; } $ tup && ./foo [ tup ] [0.000s] Scanning filesystem... [ tup ] [0.000s] Reading in new environment variables... [ tup ] [0.000s] No Tupfiles to parse. [ tup ] [0.000s] No files to delete. [ tup ] [0.000s] No commands to execute. [ tup ] [0.000s] Updated. Rev: 2acfd44823c503c2fde71acb5ef0a16abc5cb26f Now, with this approach, if something in git changes that isn’t in the dependency graph, the built output won’t get updated. At the same time, I’m not convinced that really matters. Using either commit would (by definition) create the same resulting executable. If the executable really in some way depends on something then it should be listed as an order-only input to tup, which will cause tup to rebuild whenever it changes. HTH, -Pat On May 13, 2014 at 17:33:19, Gábor Márton ([email protected]) wrote: Hi, I am trying to make a header which depends on the actual git hash. It would be also nice to indicate whether the repo is dirty or not. (This would be handy because we could generate a log entry which contains our deployed process' version. We might have more prcocesses with different versions deployed.) So far I've got the following: strace -e trace=open git rev-parse HEAD ... open(".git/HEAD", O_RDONLY) = 3 open(".git/refs/heads/gitHash", O_RDONLY) = 3 open(".git/packed-refs", O_RDONLY) = 3 ... Therefore I tried with this Tupfile: include_rules : $(PROJECT_ROOT)/.git/HEAD $(PROJECT_ROOT)/.git/refs/heads/* $(PROJECT_ROOT)/.git/packed-refs |> ./gitstuff.sh > %o |> gitHash.h PROJECT_ROOT is defined in the upper most Tupfile. gitstuff is the script which wraps git rev-parse. But tup upd is not willing to handle any hidden files. :( So my next idea was to create a symlink of .git (ln -s .git git) and replace '.git' with 'git' in the Tupfile. However I've got the following error: tup error: Expected node 'refs' to be in directory 'git', but it is not there. tup error: Failed to find directory ID for dir '../git/refs/heads/*' relative to 518 Any idea how to move on? Is it possible at all to do such thing with tup? Many Thanks, Gábor -- -- tup-users mailing list email: [email protected] unsubscribe: [email protected] 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 [email protected]. For more options, visit https://groups.google.com/d/optout. -- -- tup-users mailing list email: [email protected] unsubscribe: [email protected] options: http://groups.google.com/group/tup-users?hl=en --- You received this message because you are subscribed to a topic in the Google Groups "tup-users" group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/tup-users/e_1ynmm1GA8/unsubscribe. To unsubscribe from this group and all its topics, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout. -- -- tup-users mailing list email: [email protected] unsubscribe: [email protected] 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 [email protected]. For more options, visit https://groups.google.com/d/optout. -- -- tup-users mailing list email: [email protected] unsubscribe: [email protected] 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
