Fabricate does not avoid rebuilding

41 views
Skip to first unread message

Neil Mitchell

unread,
Nov 24, 2013, 2:57:11 PM11/24/13
to fabrica...@googlegroups.com
Hi,

I am trying a little Fabricate sample, using Windows 7, python 2.7.5 and Fabricate from the repo. I wrote:

from fabricate import *
def build:
    run('sh','basic-run','input','--','output')
main ()

The shell script basic-run just copies input to output. Every time I run the fabricate program, it reruns the shell script. The first time that is the behaviour I expect. Subsequent times, that seems like a bug, as no files other than output have changed. Adding --debug says:

DEBUG: rebuilding 'sh basic-run input -- output', no dependency data

If I look at the .deps file, I see

{
    "'.deps_version": 2
}

I would have expected some data to end up in that file. I guess the fact there is nothing recorded there is the reason it rebuilds? Any suggestions why it is going wrong?

Thanks, Neil

Ben Hoyt

unread,
Nov 24, 2013, 3:45:48 PM11/24/13
to fabrica...@googlegroups.com
Hi Neil,

Not entirely sure, but I'm guessing this is because Windows Vista and higher don't have atimes enable by default inside the OS. See "Windows Issues" on the HowItWorks wiki page:


And also:


So you need to run the command:

    fsutil behavior set disablelastaccess 0

I forget whether you need a reboot after this or not.

-Ben


--
You received this message because you are subscribed to the Google Groups "fabricate users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fabricate-use...@googlegroups.com.
To post to this group, send email to fabrica...@googlegroups.com.
Visit this group at http://groups.google.com/group/fabricate-users.
For more options, visit https://groups.google.com/groups/opt_out.

Neil Mitchell

unread,
Nov 24, 2013, 4:35:08 PM11/24/13
to fabrica...@googlegroups.com
Hi Ben,

Thanks for the information. Unfortunately that command requires admin access, which I don't have on my laptop, and can't get. I couldn't see any workarounds, so I guess Fabricate is not currently suitable for my use case.

Thanks, Neil

Ben Hoyt

unread,
Nov 24, 2013, 4:55:33 PM11/24/13
to fabrica...@googlegroups.com
You can't do a Command Prompt -> Right click, Run as Administrator?

In that case, yes, you won't be able to turn on atimes, and fabricate
won't work for you. Sorry!

fabricate is definitely touch and go on Windows with AtimesRunner.
It'd be great to have strace-like support in Windows, but so far, it
doesn't have that.

-Ben

pjz

unread,
Nov 25, 2013, 6:39:17 AM11/25/13
to fabrica...@googlegroups.com
There's tracker.exe support in one of the patches on issue #3. If you have tracker.exe (comes with one of Microsofts SDKs I think) you might try that.

Neil Mitchell

unread,
Nov 25, 2013, 2:54:10 PM11/25/13
to fabrica...@googlegroups.com
> You can't do a Command Prompt -> Right click, Run as Administrator? 

Ben, I'm afraid not. I will try and persuade an admin to run the fs command for me though, which would work.

On Monday, 25 November 2013 11:39:17 UTC, pjz wrote:
There's tracker.exe support in one of the patches on issue #3. If you have tracker.exe (comes with one of Microsofts SDKs I think) you might try that.

Not sure that is an option either, but I'll give getting tracker.exe on the machine a try. Thanks for the information.

Neil Mitchell

unread,
Nov 27, 2013, 6:57:34 AM11/27/13
to fabrica...@googlegroups.com
>> You can't do a Command Prompt -> Right click, Run as Administrator?
>
> Ben, I'm afraid not. I will try and persuade an admin to run the fs command
> for me though, which would work.

I did that on one machine, but it didn't fix the problem. As far as I
am aware, by default Windows Vista and above turn off modification
time. But even after running the fsutils command, my understanding is
that Windows only actually writes the access time to disk once an
hour. That is certainly consistent with what I am seeing.

>> There's tracker.exe support in one of the patches on issue #3. If you have
>> tracker.exe (comes with one of Microsofts SDKs I think) you might try that.
>
> Not sure that is an option either, but I'll give getting tracker.exe on the
> machine a try. Thanks for the information.

I've had zero success installing tracker anywhere. As far as I can
tell, the only free place to get it is the Windows 7.1 SDK. That fails
to install on my machine with a cryptic error message.

Thanks, Neil

Ben Hoyt

unread,
Nov 28, 2013, 1:48:24 PM11/28/13
to fabrica...@googlegroups.com
Hi Neil,

That's really weird that you can't get Atimes working on Vista. I'm using Windows 7 and it's working fine (with the fsutils "fix").

As you can't seem to find the tracker executables, I'll send you a private email with those attached.

-Ben

Neil Mitchell

unread,
Nov 28, 2013, 1:50:36 PM11/28/13
to fabrica...@googlegroups.com
Hi Ben,

I managed to get tracker from someone else, but thanks for the offer. I haven't yet had a chance to play with fabricate, but hopefully soon

Thanks, Neil 
--
You received this message because you are subscribed to a topic in the Google Groups "fabricate users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/fabricate-users/Oka21zvZ1Uw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to fabricate-use...@googlegroups.com.

Neil Mitchell

unread,
Nov 29, 2013, 11:00:36 AM11/29/13
to fabrica...@googlegroups.com
I tried fabricate with the 'tracker' branch, and I can confirm it
works perfectly. I needed to update _tracker_exe_ to point at my copy
of Tracker (I guess it should look on the $PATH?), but once I'd done
that, it all worked nicely.

Thanks, Neil
Reply all
Reply to author
Forward
0 new messages