cmds.projects.CmdBuild: Support --dep-flavours

CmdBuild caters for the needs of the targets all, clean and pkg-*. It
uses builtin dependency flavours matching those targets to resolve
build order. To make it more flexible in general and support more
targets, e.g. check and test, add a --dep-flavours option.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-07-11 12:18:58 +02:00
commit 68cda8197e
Signed by: Jan Lindemann
GPG key ID: 3750640C9E25DD61
2 changed files with 36 additions and 21 deletions

View file

@ -53,6 +53,14 @@ class CmdBuild(Cmd): # export
'on the command line'
),
)
parser.add_argument(
'--dep-flavours',
default = 'auto',
help = (
'Dependency flavours to take into consideration for build, '
'comma or space separated'
)
)
parser.add_argument(
'--env-reinit',
action = 'store_true',
@ -247,9 +255,12 @@ class CmdBuild(Cmd): # export
# -- build
order: list[str] = []
dep_flavours = ['build']
if re.match('pkg-.*', target) is not None:
dep_flavours = ['build', 'run', 'release', 'devel']
if args.dep_flavours != 'auto':
dep_flavours = re.split(r'[\s,]', args.dep_flavours)
else:
dep_flavours = ['build']
if re.match('pkg-.*', target) is not None:
dep_flavours.extend(['run', 'release', 'devel'])
if target != 'order' and not args.build_order:
log(NOTICE, 'Using prerequisite flavours ' + ' '.join(dep_flavours))

View file

@ -254,31 +254,35 @@ Available subcommands of projects:
tmpl-dir Print directory containing templates of a given module
============= Running: jw-pkg.py --log-level info projects build --help
usage: jw-pkg.py projects build [-h] [--exclude EXCLUDE] [-n] [-O] [-I]
[--env-reinit] [--env-keep ENV_KEEP]
[--dep-flavours DEP_FLAVOURS] [--env-reinit]
[--env-keep ENV_KEEP]
target modules [modules ...]
janware software project build tool
positional arguments:
target Build target
modules Modules to be built
target Build target
modules Modules to be built
options:
-h, --help show this help message and exit
--exclude EXCLUDE Space seperated ist of modules to be excluded from
build (default: )
-n, --dry-run Don't build anything, just print what would be done.
(default: False)
-O, --build-order Don't build anything, just print the build order.
(default: False)
-I, --ignore-deps Don't build dependencies, i.e. build only modules
specified on the command line (default: False)
--env-reinit Source /etc/profile before each build step. Discard
environment unless --env-keep is specified (default:
False)
--env-keep ENV_KEEP Comma seperated list of environment variables to keep,
"all" or "none", only meaningful if --env-reinit is
specified (default: none)
-h, --help show this help message and exit
--exclude EXCLUDE Space seperated ist of modules to be excluded from
build (default: )
-n, --dry-run Don't build anything, just print what would be done.
(default: False)
-O, --build-order Don't build anything, just print the build order.
(default: False)
-I, --ignore-deps Don't build dependencies, i.e. build only modules
specified on the command line (default: False)
--dep-flavours DEP_FLAVOURS
Dependency flavours to take into consideration for
build, comma or space separated (default: auto)
--env-reinit Source /etc/profile before each build step. Discard
environment unless --env-keep is specified (default:
False)
--env-keep ENV_KEEP Comma seperated list of environment variables to keep,
"all" or "none", only meaningful if --env-reinit is
specified (default: none)
============= Running: jw-pkg.py --log-level info projects canonicalize-remotes --help
usage: jw-pkg.py projects canonicalize-remotes [-h] [-n]