LMARK

NAME
SYNOPSIS
DESCRIPTION
COMMON OPTIONS
SUB-COMMANDS
SPECIFIC OPTIONS
FILES
NOTES
SEE ALSO
COPYRIGHT

NAME

lmark - mark jobs and files with specific attributes

SYNOPSIS

lmark [OPTION]... [FILE]...

DESCRIPTION

There are 2 possible marks :

freeze

This mark prevents jobs from being run. Instead its targets (as built during the last run) behave as sources. If no job generated a file provided in arguments, this file behaves as a source.

no-trigger

This mark prevents open-lmake to trigger builds of dependent jobs after modifications of mentioned files. However, this applies only if job was last run with success.

Jobs and files so marked and that have been used are repeated in the summary. This precaution is taken because such presence goes against repeatability and should be suppressed before commiting the repo.

Frozen jobs are useful to run a flow from A to B. To do that you type lmark -af A followed by lmake B.

No trigger files are useful when working on a foundation file (called utils.h hereinafter). It is common to work on utils.h to add new features. During such developments, it is practical to run a test suite that checks the new feature. But to run this test suite, you probably need a lot a derived files that depend on utils.h without using the new feature (e.g. a.o, b.o, c.o which are not the focus of your development). It is then a waste of time and resources to rebuild these derived files for each tiny modification. An easy way is :

Mark utils.h with no-trigger.

Write the new test that uses this new feature.

Modify utils.h to implement the new feature.

Run your test. Files not using the new feature will likely be successfully built and will not be uselessly rebuilt. File using the new feature will likely fail and will be usefully rebuilt. If no error is generated, it is easy to run rm(1) or lforget(1) to force rebuild.

Loop on edit/test until feature is ok.

When you are satisfied with the new feature, suppress the no-trigger mark and rerun your test suite to ensure repeatability.

lmark manages a fully coherent dir called a repo. When it starts, it first determines the root of the repo (cf. FILES below).

Arguments and reports are systematically localized to the current working dir. For example, if you launch lmark b from dir a in your repo, the argument is file a/b from the root of the repo and reports containing file names (initially seen from the root of the repo) will be shown relative the the current working dir.

COMMON OPTIONS

These options are common to all tools of the open-lmake set of utilities :
--version

Print version and exit. Version is in the form "year.month.tag (key)" where "year.month" forms the major version, "tag" the minor version and "key" is indicates the format of the persistent information.

-h, --help

Print a short help and exit. It is composed of:

The command line synoptic.

Version as described above.

A line for each supported option with its short name, long name, whether it has an argument and a short explanation.

-J, --job

Passed arguments are interpreted as job names rather than as file names. Job names are the names that appear, for example, on start and done lines when lmake executes a job.

-R rule, --rule=rule

When the --job option is used, this options allows the specification of a rule, given by its name. This is necessary when the job name is ambiguous as several rules may lead to the same job name.

-q, --quiet

Do not generate user oriented messages. Strictly generate what is asked. This is practical if output is meant for automatic processing.

-S, --sync

Ensure server is launched (i.e. do not connect to an existing server) and wait for its termination. This is exceptionally useful in scripts that modify Lmakefile.py.

-v, --verbose

Generate more prolix output.

SUB-COMMANDS

A single sub-command must be provided :
-a
, --add

mark mentioned jobs or files.

-d, --delete

remove mark from mentioned jobs or files.

-l, --list

list marked files. This is a global sub-command and not file/job must be provided.

-c, --clear

delete all marks. This is a global sub-command and not file/job must be provided.

SPECIFIC OPTIONS

These options are specific to lmark :
-f
, --freeze

mark is freeze.

-t, --no-trigger

mark is no-trigger.

FILES

The files Lmakefile.py or Lmakefile/__init__.py are searched in the current dir and in parent dirs. If a single one is found, this determines the root of the repo. If several are found, the existence of an LMAKE dir is checked. If a single one is found, this determines the root of the repo. In other cases, lmark will not start.

NOTES

Where lforget(1) is used to instruct open-lmake to run jobs that it considers up-to-date, lmark is used the opposite way, to instruct open-lmake not to run jobs it considers out-of-date.

SEE ALSO

lautodep(1), lcheck_deps(1), ldebug(1), ldecode(1), ldepend(1), lencode(1), lforget(1), lmake(1), lrepair(1), lrun_cc(1), lshow(1), ltarget(1), xxhsum(1)

The python module lmake.

The full open-lmake documentation in <open-lmake-installation-dir>/docs/index.html.

COPYRIGHT

Copyright © 2023-2025, Doliam. This file is part of open-lmake.

open-lmake is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.

open-lmake is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.