Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
REDO-IFCHANGE(1)		  redo package			REDO-IFCHANGE(1)

NAME
     redo-ifchange -- record and rebuild dependencies

SYNOPSIS
     redo-ifchange {filenames...}

DESCRIPTION
     redo-ifchange is a dependency redcording and rebuilding utility that is run
     by a "do" script that is in turn invoked by redo.

     redo-ifchange records that the current target (whose "do" script is being
     run) depends from the dependencies named filenames.  The dependency
     recorded is that the current target should be built if filenames have
     changed.

     It also determines, using previously saved dependency information if avail-
     able, which of the dependencies is itself out of date, and recursively at-
     tempts to re-build them, as if by invoking redo.  It delays processing of
     every dependency that is locked by a concurrent invocation of redo or
     redo-ifchange.

   OPTIONS
     redo-ifchange of necessity recognizes a few of the command-line options
     supported by redo, that apply to all redo processes in the tree.  However,
     they are not part of its command-line usage and they are not intended to be
     used on its command line.

     Instead, they are passed to it via the "REDOFLAGS" environment variable
     which is set up by the ultimate redo parent process.  This is also how
     redo-ifchange is informed about where to record dependency information and
     where the open file descriptors for the jobserver pipe are.  Do not, there-
     fore, clear the environment or close arbitrary file descriptors when invok-
     ing redo-ifchange.

     For compatibility, redo-ifchange also understands the "MAKEFLAGS",
     "MFLAGS", "MAKELEVEL", and "__MKLVL__" environment variables.  The latter
     two are used to track recursion depth, by redo and by the GNU and BSD make
     programs.	The former two contain command-line options passed down from an
     ultimake make process, similar to "REDOFLAGS".

     Only a few of the options passed via "MAKEFLAGS" and "MFLAGS" are acted
     upon, namely -s, -k, -d, -p, and the undocumented options used to pass
     along jobserver pipe file descriptor information.	All other options used
     in these environment variables are ignored.

   CHANGES
     If a filename denotes a (character or block) device file, a socket, a FIFO,
     or a directory, it is considered "changed" based solely upon its last modi-
     fication timestamp.  redo-ifchange does not attempt to open or to read the
     contents of such files.

     If filename denotes an ordinary file, it is considered "changed" based upon
     a combination of its last modification timestamp and the CubeHash hash of
     its contents.  To prevent re-calculating the hash value of a file repeat-
     edly, redo-ifchange assumes that if a file's last modification timestamp
     has not changed, it has not been written to, and therefore the hash of its
     contents cannot have changed.

     In both cases, redo-ifchange records the timestamp and hash information in
     the .redo database.

AUTHOR
     Jonathan de Boyne Pollard

v1.0				   2019-04-16			REDO-IFCHANGE(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=redo-ifchange&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help