Skip to content
  • Ian Lynagh's avatar
    Use touchy rather than touch when building on Windows · 2694bb74
    Ian Lynagh authored
    With Windows 7 in a vitrual box VM on OS X, some very odd things happen
    with dates and time stamps when SSHing into cygwin. e.g. here the
    "Change" time is in the past:
    
    $ date; touch foo; stat foo
    Fri Dec  2 16:58:07 GMTST 2011
      File: `foo'
      Size: 0               Blocks: 0          IO Block: 65536  regular
    empty file
    Device: 540aba0bh/1409989131d   Inode: 562949953592977  Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/     ian)   Gid: (  513/    None)
    Access: 2011-12-02 16:58:07.414457900 +0000
    Modify: 2011-12-02 16:58:07.414457900 +0000
    Change: 2011-12-02 16:58:03.495141800 +0000
     Birth: 2011-12-02 16:57:57.731469900 +0000
    
    And if we copy such a file, then the copy is older (as determined by the
    "Modify" time) than the original:
    
    $ date; touch foo; stat foo; cp foo bar; stat bar
    Fri Dec  2 16:59:10 GMTST 2011
      File: `foo'
      Size: 0               Blocks: 0          IO Block: 65536  regular
    empty file
    Device: 540aba0bh/1409989131d   Inode: 1407374883725128  Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/     ian)   Gid: (  513/    None)
    Access: 2011-12-02 16:59:10.118457900 +0000
    Modify: 2011-12-02 16:59:10.118457900 +0000
    Change: 2011-12-02 16:59:06.189477700 +0000
     Birth: 2011-12-02 16:57:57.731469900 +0000
      File: `bar'
      Size: 0               Blocks: 0          IO Block: 65536  regular
    empty file
    Device: 540aba0bh/1409989131d   Inode: 281474976882512  Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/     ian)   Gid: (  513/    None)
    Access: 2011-12-02 16:59:06.394555800 +0000
    Modify: 2011-12-02 16:59:06.394555800 +0000
    Change: 2011-12-02 16:59:06.395532400 +0000
     Birth: 2011-12-02 16:58:40.921899600 +0000
    
    This means that make thinks that things are out of date when it
    shouldn't, so reinvokes itself repeatedly until the MAKE_RESTARTS
    infinite-recursion test triggers.
    
    The touchy program, like most other programs, creates files with both
    Modify and Change in the past, which is still a little odd, but is
    consistent, so doesn't break make.
    2694bb74