job annotation tag

3 minute readReference

Synopsis

Represents a single job in the build, including the commands invoked by that job, timing information, etc.

Attributes

end

State of the versioned file system when this job completed; used to determine which other jobs may access file versions created by this job.

file

Makefile in which the rule used for the job is defined.

id

An identifier for the job, guaranteed to be unique across the entire build. This is used to relate jobs to one another as well as to make it possible to unambiguously reference a job.

inval

State of the versioned file system when this job was reverted; used to determine which other jobs may access file versions created by this job. If the job was not reverted or in conflict itself, this attribute will not be present.

line

Line number on which the rule used for the job begins.

name

Name of the target built by the job; only has meaning for rule jobs and external jobs.

neededby

Job identifier of the job that caused emake to schedule this job.

partof

For continuation jobs, the rule job that they continue.

stale

Number of untriggered input events when this job started running; a value greater than zero indicates that the job was over-serialized.

start

State of the versioned file system when this job started running; used to determine which file versions are accessible to this job.

status

Indicates the final disposition of the job; one of the following:

  • conflict: based on filesystem access, the job was determined to have run too early, and so its output and filesystem modifications were discarded. The job will be rerun with the correct filesystem state.

  • rerun: the job is the second attempt at running a job that was previously found to be in conflict.

  • reverted: the job was run but its output and filesystem modifications were discarded, either due to a conflict in an earlier job, or due to a user interrupt or an error in a previous job which terminated the build such that the job would not have run had the build been run serially.

  • skipped: the job was scheduled but never run, either due to a conflict in an earlier job, or due to a user interrupt or an error in a previous job which terminated the build before the job could be run.

  • normal: none of the above; this is the default value.

thread

A hexidecimal string identifying the thread within emake or electrify that executed the job.

type

Indicates the type of the job. Internally emake uses several different types of jobs to represent the build:

  • parse: work done by emake to process makefiles to determine what work needs to be done to complete a single make instance. This is always the first job in any make instance.

  • exist: simple existence check, used for makefiles and command-line goals for which no rule was found.

  • remake: in gmake and ninja emulation modes, remake jobs are used to check if any makefiles were updated after parsing, and if so, to restart the make instance with the new makefiles.

  • mkdir: in ninja emulation mode, mkdir jobs are used to create the directory for output targets prior to running the rule jobs for those targets.

  • rule: the real work of the build: compiles, links, etc. Typically a rule job corresponds to one rule in a makefile.

  • follow: a bookkeeping job used to ensure proper sequencing of jobs in a parent make instance with jobs in a submake instance.

  • continuation: continuation of a previous rule job. These jobs are similar to rule jobs in that they also represent real work in the build. The difference is internal only.

  • end: the last job in a make instance, used to do final cleanup such as removing intermediate files.

In addition, there are some job types used exclusively by electrify:

  • alpha: a placeholder marker the start of list of jobs in the build.

  • external: commands invoked by the electrified build tool which are distributed to the cluster for execution. These are similar to emake’s rule jobs.

  • update: container for filesystem modifications made by commands invoked by the electrified build tool, but not distributed to the cluster.

  • omega: a placeholder marker the end of the list of jobs in the build.

    weight

    Weight of the job, used by the schedule optimization feature to determine job runtime ordering. Jobs with greater weight are run earlier than jobs with lesser weight. If the attribute is not present, then emake did not have schedule optimization data for the job, and the job is treated as if it has the maximum possible weight.

Contents