On Mon, Jan 13, 2025 at 9:18 PM Artur Kowalski <[email protected]> wrote: > > > W dniu 12.01.2025 o 16:34, Alex Kiernan pisze: > > On Sun, Jan 12, 2025 at 2:40 PM Artur Kowalski via > > lists.openembedded.org <[email protected]> > > wrote: > >> The flag is similar to --user flag as it causes systemctl to operate on > >> user units, but it performs operations globally for all users. This is > >> required to for user presets support. > > "to for"? Drop the "to"? > > > >> Signed-off-by: Artur Kowalski <[email protected]> > >> --- > >> .../systemd/systemd-systemctl/systemctl | 42 ++++++++++--------- > >> 1 file changed, 23 insertions(+), 19 deletions(-) > >> > >> diff --git a/meta/recipes-core/systemd/systemd-systemctl/systemctl > >> b/meta/recipes-core/systemd/systemd-systemctl/systemctl > >> index 2229bc7b6d..9b8fe81459 100755 > >> --- a/meta/recipes-core/systemd/systemd-systemctl/systemctl > >> +++ b/meta/recipes-core/systemd/systemd-systemctl/systemctl > >> @@ -29,15 +29,15 @@ class SystemdFile(): > >> > >> _clearable_keys = ['WantedBy'] > >> > >> - def __init__(self, root, path, instance_unit_name): > >> + def __init__(self, root, path, instance_unit_name, unit_type): > >> self.sections = dict() > >> self._parse(root, path) > >> dirname = os.path.basename(path.name) + ".d" > >> for location in locations: > >> - files = (root / location / "system" / dirname).glob("*.conf") > >> + files = (root / location / unit_type / dirname).glob("*.conf") > >> if instance_unit_name: > >> inst_dirname = instance_unit_name + ".d" > >> - files = chain(files, (root / location / "system" / > >> inst_dirname).glob("*.conf")) > >> + files = chain(files, (root / location / unit_type / > >> inst_dirname).glob("*.conf")) > >> for path2 in sorted(files): > >> self._parse(root, path2) > >> > >> @@ -182,21 +182,22 @@ class SystemdUnitNotFoundError(Exception): > >> > >> > >> class SystemdUnit(): > >> - def __init__(self, root, unit): > >> + def __init__(self, root, unit, unit_type): > >> self.root = root > >> self.unit = unit > >> + self.unit_type = unit_type > >> self.config = None > >> > >> def _path_for_unit(self, unit): > >> for location in locations: > >> - path = self.root / location / "system" / unit > >> + path = self.root / location / self.unit_type / unit > >> if path.exists() or path.is_symlink(): > >> return path > >> > >> raise SystemdUnitNotFoundError(self.root, unit) > >> > >> def _process_deps(self, config, service, location, prop, dirstem, > >> instance): > >> - systemdir = self.root / SYSCONFDIR / "systemd" / "system" > >> + systemdir = self.root / SYSCONFDIR / "systemd" / self.unit_type > >> > >> target = ROOT / location.relative_to(self.root) > >> try: > >> @@ -229,7 +230,7 @@ class SystemdUnit(): > >> # ignore aliases > >> return > >> > >> - config = SystemdFile(self.root, path, instance_unit_name) > >> + config = SystemdFile(self.root, path, instance_unit_name, > >> self.unit_type) > >> if instance == "": > >> try: > >> default_instance = config.get('Install', > >> 'DefaultInstance')[0] > >> @@ -250,14 +251,14 @@ class SystemdUnit(): > >> try: > >> units_enabled.append(unit) > >> if also not in units_enabled: > >> - SystemdUnit(self.root, also).enable(units_enabled) > >> + SystemdUnit(self.root, also, > >> self.unit_type).enable(units_enabled) > >> except SystemdUnitNotFoundError as e: > >> sys.exit("Error: Systemctl also enable issue with > >> %s (%s)" % (service, e.unit)) > >> > >> except KeyError: > >> pass > >> > >> - systemdir = self.root / SYSCONFDIR / "systemd" / "system" > >> + systemdir = self.root / SYSCONFDIR / "systemd" / self.unit_type > >> target = ROOT / path.relative_to(self.root) > >> try: > >> for dest in config.get('Install', 'Alias'): > >> @@ -268,15 +269,15 @@ class SystemdUnit(): > >> pass > >> > >> def mask(self): > >> - systemdir = self.root / SYSCONFDIR / "systemd" / "system" > >> + systemdir = self.root / SYSCONFDIR / "systemd" / self.unit_type > >> add_link(systemdir / self.unit, "/dev/null") > >> > >> > >> -def collect_services(root): > >> +def collect_services(root, unit_type): > >> """Collect list of service files""" > >> services = set() > >> for location in locations: > >> - paths = (root / location / "system").glob("*") > >> + paths = (root / location / unit_type).glob("*") > >> for path in paths: > >> if path.is_dir(): > >> continue > >> @@ -285,16 +286,16 @@ def collect_services(root): > >> return services > >> > >> > >> -def preset_all(root): > >> - presets = Presets('system-preset', root) > >> - services = collect_services(root) > >> +def preset_all(root, unit_type): > >> + presets = Presets('{}-preset'.format(unit_type), root) > >> + services = collect_services(root, unit_type) > >> > >> for service in services: > >> state = presets.state(service) > >> > >> if state == "enable" or state is None: > >> try: > >> - SystemdUnit(root, service).enable() > >> + SystemdUnit(root, service, unit_type).enable() > >> except SystemdUnitNotFoundError: > >> sys.exit("Error: Systemctl preset_all issue in %s" % > >> service) > >> > >> @@ -320,6 +321,7 @@ def main(): > >> parser.add_argument('--preset-mode', > >> choices=['full', 'enable-only', 'disable-only'], > >> default='full') > >> + parser.add_argument('--global', dest="glob", action="store_true", > >> default=False) > >> > > I guess `glob` because `global` is a keyword? But yuck... makes me > > think of https://docs.python.org/3/library/glob.html > > Yes, that's the reason. Would using `global_` be okay? I choose > suffixing instead of prefixing as underscore prefix has special meaning > for private fields in Python so I guess that also wouldn't be best fit. >
How about `opt_global` - makes it obvious it's an option we're talking about? I think the option name is pretty unclear, but clearly it's part of the upstream systemctl ABI so is fixed. -- Alex Kiernan
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#209902): https://lists.openembedded.org/g/openembedded-core/message/209902 Mute This Topic: https://lists.openembedded.org/mt/110569454/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
