[ET Trac] [Einstein Toolkit] #1864: Cactus build fails on file systems that do not update timestamps all the time

Einstein Toolkit trac-noreply at einsteintoolkit.org
Sun Mar 20 14:52:31 CDT 2016


#1864: Cactus build fails on file systems that do not update timestamps all the
time
--------------------+-------------------------------------------------------
 Reporter:  rhaas   |       Owner:                     
     Type:  defect  |      Status:  new                
 Priority:  major   |   Milestone:                     
Component:  Cactus  |     Version:  development version
 Keywords:          |  
--------------------+-------------------------------------------------------
 Ian and I recently ran into an issue caused by a particular file system
 (NFS v4 and also BeeGFS) not updating the file modification time when
 doing this:
 {{{
 : >make.checked
 }}}
 which is what the build system uses (since
 [https://bitbucket.org/cactuscode/cactus/commits/0779c17697d3b4a254065c10836770e355071f41
 0779c17697d3b4a254065c10836770e355071f41] "Cactus: Replace "echo" by ":"
 in makefile" Thu Nov 27 16:35:13 2014 -0500) to update the marker files
 once a directory is finished building. While such a behaviour is not POSIX
 compliant (https://bugzilla.kernel.org/show_bug.cgi?id=6127), we'd still
 want to work around it.

 The simplest solution seems to me to revert
 [https://bitbucket.org/cactuscode/cactus/commits/0779c17697d3b4a254065c10836770e355071f41
 0779c17697d3b4a254065c10836770e355071f41] and use
 {{{
 echo "" >make.checked
 }}}
 again. Erik: since you made the change, would you see any downside to
 reverting it?

 While investigating this Ian also found that some file systems only offer
 1 second granularity in their timestamps (eg ext3 but also possibly XFS
 and NFS) which can negatively affect make if a rule takes less than a
 second to complete. See https://savannah.gnu.org/bugs/?40056#comment0 and
 https://www.gnu.org/software/autoconf/manual/autoconf-2.61/html_node
 /Timestamps-and-Make.html . The most conservative approach would be to
 (arrange for) {{{sleep 1}}} to execute after each make recipe.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1864>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list