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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to