mirror of
ssh://git.janware.com/janware/proj/jw-pkg
synced 2026-04-29 06:04:34 +02:00
jw.build.cmds: Move build.cmds -> cmds.projects
Reorganize the Python module structure. Placing the command classes under jw.cmds.projects instead of jw.build.cmds will allow to add a nested command structure, with the current commands, being mostly related to building software, found below a "projects" toplevel command. Other conceivable commands could be "package" for packaging, or "distro" for commands wrapping the distribution's package manager. Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
c8c5788aeb
commit
0b83c863a2
43 changed files with 49 additions and 13 deletions
45
src/python/jw/pkg/cmds/projects/CmdRequiredOsPkg.py
Normal file
45
src/python/jw/pkg/cmds/projects/CmdRequiredOsPkg.py
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from argparse import Namespace, ArgumentParser
|
||||
|
||||
from ..Cmd import Cmd
|
||||
|
||||
# TODO: seems at least partly redundant to CmdPkgRequires / print_pkg_relations
|
||||
class CmdRequiredOsPkg(Cmd): # export
|
||||
|
||||
def __init__(self) -> None:
|
||||
super().__init__('required-os-pkg', help='List distribution packages required for a package')
|
||||
|
||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||
super().add_arguments(parser)
|
||||
parser.add_argument('module', nargs='*', help='Modules')
|
||||
parser.add_argument('--flavours', help='Dependency flavours', default='build')
|
||||
parser.add_argument('--skip-excluded', action='store_true', default=False,
|
||||
help='Output empty prerequisite list if module is excluded')
|
||||
|
||||
def _run(self, args: Namespace) -> None:
|
||||
modules = args.module
|
||||
flavours = args.flavours.split()
|
||||
if 'build' in flavours and not 'run' in flavours:
|
||||
# TODO: This adds too much. Only the run dependencies of the build dependencies would be needed.
|
||||
flavours.append('run')
|
||||
self.app.debug("flavours = " + args.flavours)
|
||||
deps = self.app.get_modules_from_project_txt(modules, ['pkg.requires.jw'], flavours,
|
||||
scope = 2, add_self=True, names_only=True)
|
||||
if args.skip_excluded:
|
||||
for d in deps:
|
||||
if self.app.is_excluded_from_build(d) is not None:
|
||||
deps.remove(d)
|
||||
subsecs = self.app.os_cascade()
|
||||
self.app.debug("subsecs = ", subsecs)
|
||||
requires = []
|
||||
for s in subsecs:
|
||||
for f in flavours:
|
||||
vals = self.app.collect_values(deps, 'pkg.requires.' + s, f)
|
||||
if vals:
|
||||
requires = requires + vals
|
||||
# TODO: add all not in build tree as -devel
|
||||
r = ''
|
||||
for m in requires:
|
||||
r = r + ' ' + m
|
||||
print(r[1:])
|
||||
Loading…
Add table
Add a link
Reference in a new issue